rendered paste body<script>function zmenDiv(element){if(document.getElementById(element).style.display == "none")document.getElementById(element).style.display = "block";else document.getElementById(element).style.display = "none";}</script><form method="post" action="#"> <table> <tr> <td> NPC Entry:</td> <td> <input type="text" name="npcEntry"></td> <td> Jméno NPC:</td> <td> <input type="text" name="npcName"></td> </tr> <tr> <td> <br></td> </tr> <tr> <td> Fáze?:</td> <td> <input type="checkbox" name="faze" OnClick="zmenDiv('fazeShow'); zmenDiv('fazeSpelly');"></td> </tr> </table> <table> <tr> <td> <table id="fazeShow" style="display: none;"> <tr> <td> počet fází: <select name="fazePocet"> <option value="2"> 2 </option> <option value="3"> 3 </option> </select></td> </tr> <tr> <td> typ změny fáze: <select name="fazeZmena" OnChange="zmenDiv('fazeHp'); zmenDiv('fazeTimer');"> <option value="1"> %HP </option> <option value="2"> Timer </option> </select></td> </tr> <tr id="fazeHp" style="display: block;"> <td> Po počtu % HP</td><td><input type="text" name="fazeHPProcent">(např 10 = že po 10% HP bosse se změní fáze [fáze se změní maximálně 3x {podle počtu fází}])</td> </td> </tr> <tr id="fazeTimer" style="display: none;"> <td> Po čase :(v milisekundách)<input type="text" name="fazeTimerTime">(pokaždý když uplyne čas timeru, tak se změní fáze, pokud je fáze 3 a uplyne čas znovu, následuje fáze 1) </td> </tr> </table></td> </tr> </table> <table> <tr> <td> SpellId1</td> <td> <input type="text" name="SpellId1"></td> <td> SpellId2</td> <td> <input type="text" name="SpellId2"></td> <td> SpellId3</td> <td> <input type="text" name="SpellId3"></td> </tr> <tr> <td> SpellId4</td> <td> <input type="text" name="SpellId4"></td> <td> SpellId5</td> <td> <input type="text" name="SpellId5"></td> <td> SpellId6</td> <td> <input type="text" name="SpellId6"></td> </tr> <tr> <td> <br></td> </tr> <tr> <td> Timer1</td> <td> <input type="text" name="Timer1"></td> <td> Timer2</td> <td> <input type="text" name="Timer2"></td> <td> Timer3</td> <td> <input type="text" name="Timer3"></td> </tr> <tr> <td> Timer4</td> <td> <input type="text" name="Timer4"></td> <td> Timer5</td> <td> <input type="text" name="Timer5"></td> <td> Timer6</td> <td> <input type="text" name="Timer6"></td> </tr> <tr> <td> <br></td> </tr> <tr> <td> Say po Spellu1</td> <td> <input type="text" name="SPS1"></td> <td> Say po Spellu2</td> <td> <input type="text" name="SPS2"></td> <td> Say po Spellu3</td> <td> <input type="text" name="SPS3"></td> </tr> <tr> <td> Say po Spellu4</td> <td> <input type="text" name="SPS4"></td> <td> Say po Spellu5</td> <td> <input type="text" name="SPS5"></td> <td> Say po Spellu6</td> <td> <input type="text" name="SPS6"></td> </tr> <tr><td>Pokud je Fáze spellu 0</td><td> spell platí pro všechny fáze</td></tr> <tr><td>Fáze Spellu1</td><td><input type="text" name="PhaseSpellId1"></td> <td>Fáze Spellu2</td><td><input type="text" name="PhaseSpellId2"></td> <td>Fáze Spellu3</td><td><input type="text" name="PhaseSpellId3"></td></tr> <tr><td>Fáze Spellu4</td><td><input type="text" name="PhaseSpellId4"></td> <td>Fáze Spellu5</td><td><input type="text" name="PhaseSpellId5"></td> <td>Fáze Spellu6</td><td><input type="text" name="PhaseSpellId6"></td></tr> <tr><td><br /></td></tr> <tr> <td> Target1</td> <td> <select name="Target1"> <option value="1"> target </option> <option value="2"> self </option> <option value="0"> random </option> </select></td> <td> Target2</td> <td> <select name="Target2"> <option value="1"> target </option> <option value="2"> self </option> <option value="0"> random </option> </select></td> <td> Target3</td> <td> <select name="Target3"> <option value="1"> target </option> <option value="2"> self </option> <option value="0"> random </option> </select></td> </tr> <tr> <td> Target4</td> <td> <select name="Target4"> <option value="1"> target </option> <option value="2"> self </option> <option value="0"> random </option> </select></td> <td> Target5</td> <td> <select name="Target5"> <option value="1"> target </option> <option value="2"> self </option> <option value="0"> random </option> </select></td> <td> Target6</td> <td> <select name="Target6"> <option value="1"> target </option> <option value="2"> self </option> <option value="0"> random </option> </select></td> </tr> <tr> <td> <br></td> </tr> <tr> <td> Aggro say</td> <td> <input type="text" name="aggroSay"></td> <td> Kill say</td> <td> <input type="text" name="killSay"></td> <td> Death say</td> <td> <input type="text" name="deathSay"></td> </tr> <tr> <td> <br></td> </tr> </table> <tr> <td> Summon npc?</td> <td> <input type="checkbox" name="summon" OnClick="zmenDiv('summon');"></td> </tr> </table> <div id="summon" style="display: none;"> <table> <tr> <td> entry1</td> <td> <input tyoe="text" name="summEntry1"></td> <td> entry2</td> <td> <input tyoe="text" name="summEntry2"></td> <td> entry3</td> <td> <input tyoe="text" name="summEntry3"></td> </tr> <tr> <td> Summon event</td> <td> <select name="eventId" OnChange="zmenDiv('hpEvent'); zmenDiv('timerEvent');"> <option value="1"> %HP </option> <option value="2"> Timer </option> </select></td> </tr> </table> <table> <tr id="timerEvent" style="display: none;"> <td> <table> <tr> (v milisekundách)</tr> <tr> <td> event timer 1</td> <td> <input tyoe="text" name="summEventVal1"></td> </tr> <tr> <td> event timer 2</td> <td> <input tyoe="text" name="summEventVal2"></td> </tr> <tr> <td> event timer 3</td> <td> <input tyoe="text" name="summEventVal3"></td> </tr> </table></td> </tr> <tr id="hpEvent" style="display: block;"> <td> <table> <tr> <td> event % hp 1</td> <td> <input tyoe="text" name="summHpProc1"></td> <td> čí % hp?</td> <td> <select name="eventTargetHp1"> <option value="2"> self </option> <option value="1"> target </option> </select></td> </tr> <tr> <td> event % hp 2</td> <td> <input tyoe="text" name="summHpProc2"></td> <td> čí % hp?</td> <td> <select name="eventTargetHp2"> <option value="2"> self </option> <option value="1"> target </option> </select></td> </tr> <tr> <td> event % hp 3</td> <td> <input tyoe="text" name="summHpProc3"></td> <td> čí % hp?</td> <td> <select name="eventTargetHp3"> <option value="2"> self </option> <option value="1"> target </option> </select></td> </tr> </table></td> </tr> </table> </div> <table> <tr> <td> <input type="submit" name="gen" value="generuj"></td> </tr> </table></form><?phpif (isset($_POST['gen'])){$summon = false;$faze = false;$jmenoScriptu = $_POST['npcName'];$npcEntry = $_POST['npcEntry'];$scrName = str_replace(" ","_",$jmenoScriptu);$getTarget = array("SelectTarget(SELECT_TARGET_RANDOM, 1, 100, true)","m_creature->getVictim()","m_creature");if ($_POST['summon']){ $summon = true; $summ[1] = $_POST['summEntry1']; $summ[2] = $_POST['summEntry2']; $summ[3] = $_POST['summEntry3']; if($_POST['eventId'] == 1) $event = "procHP"; else if ($_POST['eventId'] == 2) $event = "timer"; if($event == "procHP"){ for($i=1;$i<4;$i++){ $summHpProc[$i] = $_POST['summHpProc'.$i]; $hpProcOf[$i] = $_POST['eventTargetHp'.$i]; if ($summ[$i] && $summ[$i] != "") $Event[$i] = array($summ[$i],$summHpProc[$i],$hpProcOf[$i]); } }else if($event == "timer"){ for($i=1;$i<4;$i++){ $summTimer[$i] = $_POST['summEventVal'.$i]; if ($summ[$i] && $summ[$i] != "") $Event[$i] = array($summ[$i],$summTimer[$i],0); } }}if($_POST['faze']){ $faze = true; $pocetFazi = $_POST['fazePocet']; $zmenaFaze = ($_POST['fazeZmena'] == 1) ? $_POST['fazeHPProcent'] : $_POST['fazeTimerTime']; $typZmeny = ($_POST['fazeZmena'] == 1) ? "hp" : "timer";}$generated .= '/* Script generován Spichyho Sctipt generátorem pro Trinitycore2 Spichy si nenárokuje žádný © a proto může každý používat tento script volně ho šířit a upravovat jak se mu zlíbí, ale nebylo by od věci nemazat tento header, jakožto vzdání díku vůči jeho dílu :)*/#include "ScriptedPch.h"';if($faze){ $generated .= "#define POCET_FAZI ".$pocetFazi;}if($summon){ for($i=1;$i<4;$i++){ if ($Event[$i]) $generated .= "#define SUMM_NPC".$i." ".$Event[$i][0]; }}//say after spell proměnnýfor($i=1;$i<7;$i++){ if (isset($_POST['SPS'.$i]) && $_POST['SPS'.$i] != ""){ $SPS[$i] = $_POST['SPS'.$i]; $sps[$i] = true; }}if (isset($_POST['aggroSay']) && $_POST['aggroSay'] != ""){ $aggroSay = $_POST['aggroSay']; $aggrosay = true;}if (isset($_POST['killSay']) && $_POST['killSay'] != ""){ $killSay = $_POST['killSay']; $killsay = true;}if (isset($_POST['deathSay']) && $_POST['deathSay'] != ""){ $deathSay = $_POST['deathSay']; $deathsay = true;}//target definesfor($i=1;$i<7;$i++){ if (isset($_POST['Target'.$i])){ $Target[$i] = $_POST['Target'.$i]; $target[$i] = true; }}//spell definesfor($i=1;$i<7;$i++){ if (isset($_POST['SpellId'.$i]) && $_POST['SpellId'.$i] != ""){ $Spell[$i] = $_POST['SpellId'.$i]; if($_POST['PhaseSpellId'.$i] != "" && is_numeric($_POST['PhaseSpellId'.$i])){ if($_POST['PhaseSpellId'.$i] >= $pocetFazi) $Spell[$i][1] = $pocetFazi; else $Spell[$i][1] = $_POST['PhaseSpellId'.$i]; }else $Spell[$i][1] = 0; $generated .= " #define SPELL_".$i." ".$Spell[$i]; $spell[$i] = true; }}if ($aggrosay){ $generated .= ' #define SAY_AGGRO "'.$aggroSay.'"';}if ($killsay){ $generated .= '#define SAY_KILL "'.$killSay.'"';}if ($deathsay){ $generated .= '#define SAY_DEATH "'.$deathSay.'"';}//say after cast spellfor($i=1;$i<7;$i++){ if ($sps[$i]){ $generated .= '#define SAY_SPS'.$i.' "'.$SPS[$i].'"'; }}$generated .= "struct TRINITY_DLL_DECL ".$scrName."AI : public ScriptedAI{ ".$scrName."AI(Creature* pCreature) : ScriptedAI(pCreature) { pInstance = pCreature->GetInstanceData(); } ScriptedInstance* pInstance;";if($faze && $typZmeny == "timer"){ $generated .= " uint32 timerZmeny;";}if($faze){ $generated .= " uint32 Faze;"; }//timer declare uint32for($i=1;$i<7;$i++){ if (isset($_POST['Timer'.$i]) && $_POST['Timer'.$i] != ""){ $Timer[$i] = $_POST['Timer'.$i]; $generated .= " uint32 Timer".$i.";"; $timer[$i] = true; }}for($i=1;$i<7;$i++){ if($summ[$i]){ $generated .= " bool spawned".$i.";"; }}//summTimer declare uint32for($i=1;$i<7;$i++){ if($summTimer){ if($Event[$i]){ $generated .= " uint32 summTimer".$i.";"; } }}$generated .= " void Reset() {"; //timer reset modify for($i=1;$i<7;$i++){ if($timer[$i]){ $generated .= " Timer".$i." = ".$Timer[$i].";"; } } for($i=1;$i<7;$i++){ if($summ[$i]){ $generated .= " spawned".$i." = false;"; } } //summTimer reset modify for($i=1;$i<4;$i++){ if($summTimer){ if($Event[$i]){ $generated .= " summTimer".$i." = ".$Event[$i][1].";"; } } }if($faze && $typZmeny == "timer"){ $generated .= " timerZmeny = ".$zmenaFaze.";";}if($faze){ $generated .= " Faze = 1;";}$generated .= " } ";if($summon){$generated .= " void RespawnAdd(uint32 addId){ Unit* victim = SelectUnit(SELECT_TARGET_RANDOM, 0); if (victim){ Position pos; m_creature->GetPosition(&pos);";//add respawn contentfor($i=1;$i<4;$i++){ if($Event[$i]){$generated .= " if(addId == ".$i."){ m_creature->GetRandomNearPosition(pos, float(urand(5,80))); m_creature->SummonCreature(SUMM_NPC".$i.", pos, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000); spawned".$i." = true; }"; }}$generated .= " } } ";}$generated .= " void EnterCombat(Unit* who) {";if ($aggrosay) $generated .= " m_creature->MonsterSay(SAY_AGGRO, LANG_UNIVERSAL, 0);";$generated .= " } "; $generated .= " void UpdateAI(const uint32 diff) { if (!UpdateVictim()) return; ";if ($faze && $typZmeny == "hp"){$generated .= " if(m_creature->GetHealth() == m_creature->GetMaxHealth() * ".$zmenaFaze." / 100 * ((POCET_FAZI+1) - Faze)){ if(Faze != POCET_FAZI){ Faze += 1; }else Faze = 1; }";} else if($faze && $typZmeny == "timer"){$generated .= " if(timerZmeny < diff){ if(Faze != POCET_FAZI){ Faze += 1; }else Faze = 1; }else timerZmeny -= diff";}//event callfor($i=1;$i<4;$i++){ if($summTimer){ if($Event[$i]){ $generated .= " if(summTimer".$i." < diff){ RespawnAdd(".$i."); summTimer".$i." = ".$Event[$i][1]."; }else summTimer".$i." -= diff;"; } }else if($summHpProc){ if($Event[$i]){ $generated .= " if(".$getTarget[$Event[$i][2]]."->GetHealth() <= ".$getTarget[$Event[$i][2]]."->GetMaxHealth() / 100 * ".$Event[$i][1]."){ if(!spawned".$i.") RespawnAdd(".$i."); }"; } }}//timer modify spell casts etc.for($i=1;$i<7;$i++){ if ($spell[$i] && $timer[$i]){ $fazeIf = ($faze && $Spell[$i][1] != 0) ? "if(Faze == ".$Spell[$i][1].")" : ""; $say[$i] = $sps[$i] ? "m_creature->MonsterSay(SAY_SPS".$i.", LANG_UNIVERSAL, 0);" : ""; $generated .= " ".$fazeIf." if(Timer".$i." <= diff){ ".$say[$i]." DoCast(".$getTarget[$Target[$i]].",SPELL_".$i."); Timer".$i." = ".$Timer[$i]."; }else Timer".$i." -= diff;"; }}$generated .= " DoMeleeAttackIfReady(); } ";$generated .= " void KilledUnit(Unit *victim) { if (victim == m_creature) return;";if($killsay)$generated .= " m_creature->MonsterSay(SAY_KILL, LANG_UNIVERSAL, 0);";$generated .= " }";$generated .= " void JustDied(Unit* killer) {";if ($deathsay) $generated .= " m_creature->MonsterSay(SAY_DEATH, LANG_UNIVERSAL, 0);";$generated .= " }};";$generated .= 'CreatureAI* GetAI_'.$scrName.'(Creature* pCreature){ return new '.$scrName.'AI (pCreature);}void AddSC_'.$scrName.'(){ Script* newscript; newscript = new Script; newscript->Name = "'.$scrName.'"; newscript->GetAI = &GetAI_'.$scrName.'; newscript->RegisterSelf();}/*-- SQLUPDATE creature_template SET ScriptName="'.$scrName.'" WHERE entry='.$npcEntry.';*/';}?><textarea style ="width: 100%; height:90%;"><?php echo $generated; ?></textarea>