Récupération de l'id d'un joueur et utilisation en SmartAI
Il peut arriver pour une quête , qu'un pnj doive garder en mémoire l'id du joueur afin d'agir sur lui plus tard , par exemple lui donner un crédit.
Dans cet exemple le joueur doit escorter un kodo jusqu'à une ferme.
A l'acceptation de la quête un pnj invoque un pet kodo pour le joueur qui a son invocation va suivre un waypoints.
Bien que cette quête utilise un spell pour invoquer un pet et que j'aurais pu faire plus simple avec TARGET_OWNER_OR_SUMMONER, j'ai préféré utiliser une autre méthode afin d'illustrer ce tuto. En effet il aurait pu utiliser un simple mob plutot qu'un pet.
Ci dessous le listing que j'ai utilisé pour ma quête. Seules les lignes 20 & 25 sont utiles a ce tuto.
Code PHP :
<?php
-- Kodo de la caravane de Guet-Lointain SAI
SET @ENTRY := 34432;
UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
(@ENTRY,0,5,0,54,0,100,0,0,0,0,0,53,0,110000854,0,0,0,0,1,0,0,0,0,0,0,0,"Rétablir la caravane pour la Croisée 13949 : start wp"),
(@ENTRY,0,12,0,6,0,100,0,0,0,0,0,6,13949,0,0,0,0,0,23,0,0,0,0,0,0,0,"Rétablir la caravane pour la Croisée 13949 : Echec quete"),
(@ENTRY,0,15,0,75,0,100,0,0,3267,40,3000,11,138937,66,0,0,0,0,7,0,0,0,0,0,0,0,"Rétablir la caravane pour la Croisée 13949 :Provocation Pilleur tranchecrin"),
(@ENTRY,0,20,0,54,0,100,0,0,0,0,0,64,34432,0,0,0,0,0,23,0,0,0,0,0,0,0,"Rétablir la caravane pour la Croisée 13949 : Stoque l'id du joueur"),
(@ENTRY,0,25,0,75,0,100,0,0,5907,10,2000,33,53613,0,0,0,0,0,12,34432,0,0,0,0,0,0,"Rétablir la caravane pour la Croisée 13949 : credit"),
(@ENTRY,0,30,0,75,0,100,0,0,5907,10,2000,37,3000,0,0,0,0,0,1,0,0,0,0,0,0,0,"Rétablir la caravane pour la Croisée 13949 : despawn"),
(@ENTRY,0,31,0,54,0,100,0,0,0,0,0,41,300000,0,0,0,0,0,1,34432,0,0,0,0,0,0,"Rétablir la caravane pour la Croisée 13949 :Auto despawn");
La ligne 20 stocke avec Action dans une valeur unique grâce a la commande "ACTION_STORE_TARGET_LIST" le target qui peut être un joueur ou un pnj ou autre.
La ligne 25 effectue une action sur le Target mémorisé avec la précédente valeur mémorisé en ligne 20 "TARGET_STORED" -> Store id