Open-Wow / le-codex

Open-Wow est un projet communautaire visant à centraliser des tutoriels et des ressources en français pour les développeurs.
3 stars 1 forks source link

[Tutoriel - SQL]PNJ Duel #10

Open Open-Wow opened 4 years ago

Open-Wow commented 4 years ago

SmartAI : PNJ Duel

Tutoriel par @Stitch11

image

Etant tombé sur une zone ou je devais provoquer en duel une quinzaine de pnj , j'ai ressorti mon vieux script SmartAI que je partage avec vous.

Le principe est simple , a l'origine le pnj est de faction neutre et passe en faction agressive après un gossip_menu. Arrivé a un minimun de vie il repasse faction neutre et vous crédite la quête .

UPDATE creature_template SET npcflag = 1, unit_class = 1, unit_flags2 = 2048, gossip_menu_id = @GOSSIP, type_flags = 0 WHERE (entry = @ENTRY);


- Le gossip_menu pour lancer le duel , a vous de changer le message et l'id du gossip
```SQL
SET NAMES utf8;
REPLACE INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`, `option_text`, `OptionBroadcastTextID`, `option_id`, `npc_option_npcflag`, `action_menu_id`, `action_poi_id`, `box_coded`, `box_money`, `box_text`, `BoxBroadcastTextID`) VALUES
(65576, 0, 0, "Voulez-vous vous mesurer à moi ?", 0, 1, 1, 0, 0, 0, 0, '', 0);
UPDATE `creature_template` SET `HealthModifier` = 3.5, `ArmorModifier` = 2.5, `DamageModifier` = 2.5,`resistance1` = 25, `resistance2` = 25, `resistance3` = 25, `resistance4` = 25, `resistance5` = 25, `resistance6` = 25 WHERE (entry = @ENTRY);
UPDATE `creature_template` SET `npcflag` = 1, `unit_class` = 1, `unit_flags2` = 2048, `gossip_menu_id` = @GOSSIP, `type_flags` = 0 WHERE (entry = @ENTRY);
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,10,15,62,0,100,0,@GOSSIP,0,0,0,72,0,0,0,0,0,0,7,0,0,0,0,0,0,0,"GOSSIP_MENU : fermer gossip"),
(@ENTRY,0,15,20,61,0,100,0,0,0,0,0,80,5494400,2,0,0,0,0,1,0,0,0,0,0,0,0," - ACTIONLIST"),
(@ENTRY,0,20,0,61,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0," - blabla 0"),
(@ENTRY,0,25,30,2,0,100,0,0,20,3000,3000,2,35,0,0,0,0,0,1,0,0,0,0,0,0,0,"DUEL GAGNANT : 1-20% pv : faction neutre"),
(@ENTRY,0,30,35,61,0,100,0,0,0,0,0,33,@ENTRY,0,0,0,0,0,7,0,0,0,0,0,0,0," - credit"),
(@ENTRY,0,35,0,61,0,100,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0," - blabla 1"),
(@ENTRY,0,40,45,5,0,100,0,3000,3000,0,0,1,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"DUEL PERDU : blabla 2"),
(@ENTRY,0,45,0,61,0,100,0,0,0,0,0,2,35,0,0,0,0,0,1,0,0,0,0,0,0,0," - faction neutre"),
(@ENTRY,0,55,0,9,0,100,0,0,5,2500,3000,11,119526,0,0,0,0,0,2,0,0,0,0,0,0,0,"Poings roulants");

Voila ce n'est qu'un modeste script mais qui peut vous rendre service , notez quand même que pour le test des 20% de pv du mob ne doit pas être inférieur aux dégâts que vous pourriez lui infliger , ne descendez donc pas trop cette valeur , préférez ses résistances ou ces pv .

A noter que ce script peut être amélioré par exemple en créditant la quete si je pnj est tué , tout dépend de ce que vous désirez . Ici pour ces quetes les pnj étaient amicaux et ne devaient donc pas mourir .

Bon jeu a vous