2. Lire un message

Voici la valeur que nous souhaitons récupérer dans notre exemple :

[16:17:39] {
"_messageType":"GameRolePlayShowActorMessage",
"informations":
{"_type":"GameRolePlayCharacterInformations","contextualId":4285194,
"look":{"_type":"EntityLook","bonesId":1,"skins":[101,2165,284,1176],"indexedColors":[18483039,42299369,63737517,70051748,97144118],"scales":[145],"subentities":[]},
"disposition":{"_type":"EntityDispositionInformations","cellId":42,"direction":6},"name":"Agnea-Kushh",
"humanoidInfo":{"_type":"HumanInformations",
"restrictions":{"_type":"ActorRestrictionsInformations",
"cantBeAggressed":false,
"cantBeChallenged":false,
"cantTrade":false,
"cantBeAttackedByMutant":false,
"cantRun":false,
"forceSlowWalk":false,
"cantMinimize":false,
"cantMove":false, -- nous souhaitons récupérer cette valeur
"cantAggress":false,
"cantChallenge":false,
"cantExchange":false,
"cantAttack":true,
"cantChat":false,
"cantBeMerchant":false,
"cantUseObject":false,
"cantUseTaxCollector":false,
"cantUseInteractive":false,
"cantSpeakToNPC":false,
"cantChangeZone":false,
"cantAttackMonster":false,
"cantWalk8Directions":false},
"sex":true,
"options":[]},
"accountId":146491073,
"alignmentInfos":{"_type":"ActorAlignmentInformations","alignmentSide":0,"alignmentValue":0,"alignmentGrade":0,"characterPower":4285217}},
"_isInitialized":true}

Dans notre exemple nous souhaitons savoir si le joueur qui arrive sur la map peux se déplacer ou non. Pour se faire nous remarquons que le message avec le nom GameRolePlayShowActorMessage est envoyé quand quelque chose apparait sur la map et contient une variable cantMove qui renvoie True si le personnage ne peut pas se déplacer. Pour vous aider a bien comprendre l'arbre du message, rentrez le message sur ce site : https://jsoneditoronline.org/ et vous devriez obtenir ceci :

Vous allez voir avec ce site ce sera vraiment plus simple pour vous de lire le contenu. Voici comment je récupère cette valeur dans mon script :

function move()
    
end

function messagesRegistering()
    developer:registerMessage("GameRolePlayShowActorMessage", receive_GameRolePlayShowActorMessage)
end

function receive_GameRolePlayShowActorMessage(message)
    global:printMessage(developer:deserializeObject(message, "informations,humanoidInfo,restrictions,cantMove"))
end

Nouvelle méthode de lecture depuis la version 3.0.0 :

pagetoObject

Pour commencer, vous remarquez qu'une nouvelle fonction fait son apparition, la fonction messagesRegistering(). Cette fonction comme son nom l'indique est un "Enregistrement des messages" et permet de s'abonner a des messages. Dans notre exemple, on s'abonne au message GameRolePlayShowActorMessage et on souhaite appeler la fonction receive_GameRolePlayShowActorMessage quand on reçoit ce message. Ensuite pour récupérer la donnée que l'on souhaite, il nous suffit de remonter jusqu’à la variable cantMove.

Dernière mise à jour