Les Voltigeurs d'URU LIVE
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le Deal du moment :
Funko POP! Jumbo One Piece Kaido Dragon Form : ...
Voir le deal

Récupérer la liste des potes (buddies)

Aller en bas

Récupérer la liste des potes (buddies) Empty Récupérer la liste des potes (buddies)

Message  V@-Michel Sam 20 Oct - 13:46

Voici deux petits scripts fort utiles aux développeurs de robots.
Ils permettent de récupérer la liste des copains (buddies en anglais) afin, par exemple, de leur envoyer à eux et eux seuls un message ou une note.

La première (BudList()) retourne une liste de type "NodeReflist" et la seconde (PtBudList()) une liste de "PtPlayers".
Je vais ensuite vous expliquer pourquoi ces deux types différents.

Code:
 
def BudList():
"""Retourne la liste des buddies"""
buddies = ptVault().getBuddyListFolder()
budlist = buddies.getChildNodeRefList()
return budlist

def PtBudList():
"""Retourne la liste des buddies sous forme de ptplayers"""
ListeBuds = BudList()
PtBudsListe=[]
for bud in ListeBuds:
buddy = bud.getChild().upcastToPlayerInfoNode()
ptbuddy = ptPlayer(buddy.playerGetName(),buddy.playerGetID())
PtBudsListe.append (ptbuddy)
return PtBudsListe

Avec la première, il nous est possible de récupérer quelques informations utiles concernant un joueur : son nom, son #KI, l'âge dans lequel il est actuellement et le GUID de cet âge.
Voici une fonction qui l'expoite :

Code:
def Refonebud(nombud):
budliste = BudList()
"""Donne les infos sur un buddy et retourne le playerinfonode de ce buddy"""
agebud = 'pas present'
GUIDagebud = ''
for bud in budliste:
buddy = bud.getChild().upcastToPlayerInfoNode()
if buddy.playerGetName() == nombud:
idbud = buddy.playerGetID()
present = buddy.playerIsOnline()
if present == 1:
agebud = buddy.playerGetAgeInstanceName()
GUIDagebud = buddy.playerGetAgeGuid()
print "%d %s %s %s" %(idbud,nombud,agebud,GUIDagebud)
return buddy
print "%s n'est pas un buddy"%(nombud)
return None

Pour le robot, c'est surtout PtBudList() qui sera intéressante car il répond aux avatars avec la fonction Plasma :
PtSendRTChat(PtGetLocalPlayer(),Plist, message,Flag)

PtGetLocalPlayer() retourne le PtPlayer du robot
Plist est une liste de PtPlayers à qui est destiné le message
message est le message à envoyer sous forme de texte (string)
Flag est le drapeau qui indique comment sera formaté le message, comme je vous l'ai déjà expliqué dans un autre sujet.

Donc, si mon robot utilise :

PtSendRTChat(PtGetLocalPlayer(),PtBudList(),"Ceci est mon message",10)

Tous ses buddies recevront le message "Ceci est mon message" dont la couleur du texte sera blanche et l'en-tête ("From Magicbot:") de couleur cyan .

Dernière chose.
Si vous remplacez dans la fonction BudList(): ptVault().getBuddyListFolder() par ptVault().getPeopleIKnowAboutFolder() ,vous récupèrerez la liste des contacts récents à la place des copains.
V@-Michel
V@-Michel
Admin
Admin

Messages : 1172
Date d'inscription : 13/05/2010
Age : 69
Localisation : Belgique

Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum