Il peut être utile pour un serveur fun ou pour rejoindre une zone custom de créer ces propres portails de téléportations .
Généralement l'on utilise des GameObject . Perso je préfère passer par des PNJ pour la simple raison que l'on peut faire plus de chose avec comme par exemple :
- Les endommager
- Les faire ce déplacer ou voler facilement
- Plus de possibilitées avec smartai qu'avec un gob
L'on pourrait faire un PNJ a choix multiple en lui affectant un gossip_menu mais dans le cas d'une téléportation unique le gossip_select est plutôt pénible avec son ouverture de fenêtre . Reste aussi la solution du gossip_hello ou comme choisi ici du npc_spellclick_spells qui lui permet d’agir sur le joueur sans avoir a répéter des test smart_ai dans le cas de création multiple de portail .
Un exemple valant mieux qu'un discours je vous livre mon petit script générique .
Citation :/* Les principales variables utilisées pour définir le PNJ portail comme son apparence ou sa passivité */
SET @ENTRY := 1100000;
SET @REGEN := 1 ;
SET @SPELL := 60178; ### Pour visuel et non TP - sphere 56075 - sphere 1s 32459###
SET @CIBLE := 0; ### Cible du spell : portail sur portail 0 - portail sur joueur 2 ###
SET @NAME := 'Baie du Butin';
SET @DISPLAY := 26502; ### H2 32698 - A2 27653 - Noir 29074 - DK 27346 - Rouge 9510
### Jaune 26502 - Grand cercle noir fumee 15882 - Gros bleu 23719
### Enorme bleu 27393 - herbe/fumee 169 - explo bleu/violet 32052
### feu folet 1825 - enorme anomalie lumineuse 32052
SET @FACTION := 35; ### Alliance 11 - Horde 85 - Neutre 35
SET @PV := 10; ### PV du portail ###
SET @TAILLE := 1;
SET @LVL := 85 ;
SET @spell1 := 104340 ; ### Spell de défense ou visuel du portail , exemple : le visuel sur le joueur au tp a Dalaran
SET @MAP := 0;
SET @X := -14286.193359;
SET @Y := 556.543823;
SET @Z := 8.688972;
SET @O := 4.366381;
/* ICI l'on défini Le PNJ portail de la meme facon qu'un autre PNJ classique . */
REPLACE INTO `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `modelid1`, `modelid2`, `modelid3`, `modelid4`, `name`, `femaleName`, `subname`, `IconName`, `gossip_menu_id`, `minlevel`, `maxlevel`, `exp`, `exp_unk`, `faction`, `npcflag`, `speed_walk`, `speed_run`, `scale`, `rank`, `dmgschool`, `BaseAttackTime`, `RangeAttackTime`, `BaseVariance`, `RangeVariance`, `unit_class`, `unit_flags`, `unit_flags2`, `dynamicflags`, `family`, `trainer_type`, `trainer_class`, `trainer_race`, `type`, `type_flags`, `type_flags2`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `spell5`, `spell6`, `spell7`, `spell8`, `VehicleId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `HoverHeight`, `HealthModifier`, `HealthModifierExtra`, `ManaModifier`, `ManaModifierExtra`, `ArmorModifier`, `DamageModifier`, `ExperienceModifier`, `RacialLeader`, `movementId`, `RegenHealth`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`, `VerifiedBuild`) VALUES
(@ENTRY, 0, 0, 0, 0, 0, @DISPLAY, 0, 0, 0, @NAME, '', '', '', 0, @LVL, @LVL, 0, 0, @FACTION, 16777220, 1, 0.14286, @TAILLE, 0, 0, 2000, 2000, 1, 1, 1, 131586, 2048, 0, 0, 0, 0, 0, 9, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @spell1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'SmartAI', 0, 3, 1, @PV, 1, 1, 1, 1, 1, 1, 0, 0, @REGEN, 2296625, 2, '', 15595);
DELETE FROM `npc_spellclick_spells` WHERE `npc_entry`=@ENTRY ;
INSERT INTO `npc_spellclick_spells` (`npc_entry`, `spell_id`, `cast_flags`, `user_type`) VALUES (@ENTRY, @SPELL, @CIBLE, 0);
/* Ici @cible peut prendre plusieurs valeurs en fonction du lanceur et de la cible ( le portail ou le joueur ) :
Creature -> Creature 0
Player -> Creature 1
Creature ->Player 2
Player -> Player 3
*/
/* Son AI a proprement parler , ici juste une téléportation mais l'on aurais pu aussi le faire réagir a un ennemie comme en le repoussant s'il est trop prés */
/* A noter que sous Sai-Editor les coordonnées de TP X Y Z O ce trouve dans Target mais la map elle ce renseigne dans action . */
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,0,0,73,0,100,0,0,0,2000,2000,62,@MAP,0,0,0,0,0,7,0,0,0,@X,@Y,@Z,@O,@NAME);