maks110 Posted July 9, 2014 Share Posted July 9, 2014 (edited) Создаю эту тему специально для тех нытиков, которые постоянно пишут сообщения типо: "когда будет 548?" или "где 12 обнова?" Тут я предоставлю рабочий скрипт для инста - Яма Сарона, что бы наглядно показать все то, что нужно проделать гм'ам скорее всего с нуля, да бы с этого вышел хоть какой-то толк ТЫК- 1. diff --git a/src/server/scripts/Northrend/ FrozenHalls/PitOfSaron/ instance_pit_of_saron.cpp b/src/server/ scripts/Northrend/FrozenHalls/PitOfSaron/ instance_pit_of_saron.cpp 2. --- a/src/server/scripts/Northrend/ FrozenHalls/PitOfSaron/ instance_pit_of_saron.cpp 3. +++ b/src/server/scripts/Northrend/ FrozenHalls/PitOfSaron/ instance_pit_of_saron.cpp 4. @@ -41,12 +41,15 @@ 5. _jainaOrSylvanas1GUID = 0; 6. _jainaOrSylvanas2GUID = 0; 7. _teamInInstance = 0; 8. + _tyrannusEventStart = NOT_STARTED; 9. } 10. 11. void OnPlayerEnter(Player* player) 12. { 13. if (!_teamInInstance) 14. _teamInInstance = player->GetTeam(); 15. + if(GetData (DATA_TYRANNUS_START) != DONE) 16. + SetData (DATA_TYRANNUS_START, IN_PROGRESS); 17. } 18. 19. void OnCreatureCreate(Creature* creature) 20. @@ -198,6 +201,8 @@ 21. { 22. case DATA_TEAM_IN_INSTANCE: 23. return _teamInInstance; 24. + case DATA_TYRANNUS_START: 25. + return _tyrannusEventStart; 26. default: 27. break; 28. } 29. @@ -231,7 +236,12 @@ 30. 31. return 0; 32. } 33. - 34. + 35. + void SetData(uint32 type, uint32 data) 36. + { 37. + if(type == DATA_TYRANNUS_START) 38. + _tyrannusEventStart = data; 39. + } 40. std::string GetSaveData() 41. { 42. OUT_SAVE_INST_DATA; 43. @@ -288,6 +298,7 @@ 44. uint64 _jainaOrSylvanas2GUID; 45. 46. uint32 _teamInInstance; 47. + uint8 _tyrannusEventStart; 48. }; 49. 50. InstanceScript* GetInstanceScript (InstanceMap* map) const 51. 52. 53. 54. 55. diff --git a/src/server/scripts/Northrend/ FrozenHalls/PitOfSaron/pit_of_saron.cpp b/ src/server/scripts/Northrend/FrozenHalls/ PitOfSaron/pit_of_saron.cpp 56. --- a/src/server/scripts/Northrend/ FrozenHalls/PitOfSaron/pit_of_saron.cpp 57. +++ b/src/server/scripts/Northrend/ FrozenHalls/PitOfSaron/pit_of_saron.cpp 58. @@ -306,6 +306,700 @@ 59. } 60. }; 61. 62. +/* 63. +Script Complete: 100% 64. +Name: Start Pit Of Saron 65. +Author: Cemak 66. +*/ 67. +enum SAYTyrranusEvent 68. +{ 69. + SAY_TYRRANUS_1 = -1658074, 70. + SAY_TYRRANUS_2 = -1658075, 71. + SAY_TYRRANUS_3 = -1658078, 72. + SAY_TYRRANUS_4 = -1658082, 73. + 74. + SAY_SYLVANAS_1 = -1658076, 75. + SAY_SYLVANAS_2 = -1658080, 76. + SAY_SYLVANAS_3 = -1658085, 77. + SAY_SYLVANAS_4 = -1658087, 78. + 79. + SAY_JAINA_1 = -1658077, 80. + SAY_JAINA_2 = -1658081, 81. + SAY_JAINA_3 = -1658084, 82. + SAY_JAINA_4 = -1658086, 83. + 84. + SAY_SOUND = 16750, 85. +}; 86. + 87. +enum SPELLSTyrranusEvent 88. +{ 89. + SPELL_NECROMANTIC_POWER = 69347, 90. + SPELL_DEATH_ARMY_VISUAL = 67693, 91. + SPELL_BLIZZARD_JAINA = 70132, 92. + SPELL_ICE_LANCE_JAINA = 70464, 93. + SPELL_SHADOW_BOLT_SYLVANAS = 70512, 94. + SPELL_MULTI_SHOT_SYLVANAS = 70513, 95. +}; 96. + 97. +struct startPosition 98. +{ 99. + uint32 entry[2]; 100. + Position movePosition; 101. +} startPositions[] = 102. +{ 103. + { { NPC_CHAMPION_1_ALLIANCE, NPC_CHAMPION_1_HORDE }, { 445.286f, 214.251f, 528.71f, 0.375996f } }, 104. + { { NPC_CHAMPION_1_ALLIANCE, NPC_CHAMPION_1_HORDE }, { 447.246f, 208.189f, 528.71f, 0.0264938f } }, 105. + { { NPC_CHAMPION_1_ALLIANCE, NPC_CHAMPION_1_HORDE }, { 437.81f, 231.115f, 528.708f, 0.525224f } }, 106. + { { NPC_CHAMPION_1_ALLIANCE, NPC_CHAMPION_1_HORDE }, { 437.444f, 225.798f, 528.712f, 0.36029f } }, 107. + { { NPC_CHAMPION_1_ALLIANCE, NPC_CHAMPION_1_HORDE }, { 438.941f, 221.784f, 528.708f, 0.30924f } }, 108. + { { NPC_CHAMPION_1_ALLIANCE, NPC_CHAMPION_1_HORDE }, { 440.384f, 216.785f, 528.71f, 0.203211f } }, 109. + { { NPC_CHAMPION_1_ALLIANCE, NPC_CHAMPION_1_HORDE }, { 441.479f, 211.472f, 528.709f,0.203211f } }, 110. + { { NPC_CHAMPION_1_ALLIANCE, NPC_CHAMPION_1_HORDE }, { 443.986f, 222.103f, 528.709f,6.27373f } }, 111. + { { NPC_CHAMPION_1_ALLIANCE, NPC_CHAMPION_1_HORDE }, { 448.944f, 204.945f, 528.709f,0.0258984f } }, 112. + { { NPC_CHAMPION_2_ALLIANCE, NPC_CHAMPION_2_HORDE }, { 446.613f, 211.37f, 528.709f,0.360472f } }, 113. + { { NPC_CHAMPION_2_ALLIANCE, NPC_CHAMPION_2_HORDE }, { 442.647f, 204.635f, 528.707f,0.0887308f } }, 114. + { { NPC_CHAMPION_2_ALLIANCE, NPC_CHAMPION_2_HORDE }, { 435.054f, 207.61f, 528.707f,0.173361f } }, 115. + { { NPC_CHAMPION_2_ALLIANCE, NPC_CHAMPION_2_HORDE }, { 434.568f, 210.389f, 528.707f,0.173361f } }, 116. + { { NPC_CHAMPION_2_ALLIANCE, NPC_CHAMPION_2_HORDE }, { 443.458f, 226.623f, 528.709f,0.232266f } }, 117. + { { NPC_CHAMPION_2_ALLIANCE, NPC_CHAMPION_2_HORDE }, { 435.593f, 204.535f, 528.728f,0.173361f } }, 118. + { { NPC_CHAMPION_2_ALLIANCE, NPC_CHAMPION_3_HORDE }, { 442.47f, 208.153f, 528.706f,0.259756f } }, 119. + { { NPC_CHAMPION_2_ALLIANCE, NPC_CHAMPION_3_HORDE }, { 441.333f, 233.866f, 528.709f,0.255828f } }, 120. + { { NPC_CHAMPION_2_ALLIANCE, NPC_CHAMPION_3_HORDE }, { 442.124f, 230.78f, 528.709f,0.244047f } }, 121. + 122. + { { NPC_KORLAEN, NPC_KORALEN }, { 432.386f, 212.979f, 528.709f, 0.237168f } }, 123. + { { NPC_ELANDRA, NPC_KILARA }, { 431.65f, 216.976f, 528.709f, 0.20104f } }, 124. + { { NPC_JAINA_PART1, NPC_SYLVANAS_PART1 }, { 438.84f, 213.502f, 528.709f, 0.1900f } }, 125. + 126. + { { 0, 0 }, { 0.0f, 0.0f, 0.0f, 0.0f } } 127. +}; 128. + 129. +class pitofsaron_start : public CreatureScript 130. +{ 131. +public: 132. + pitofsaron_start() : CreatureScript ("pitofsaron_start") { } 133. + 134. + CreatureAI* GetAI(Creature* pCreature) const 135. + { 136. + return new pitofsaron_startAI (pCreature); 137. + } 138. + 139. + struct pitofsaron_startAI : public ScriptedAI 140. + { 141. + pitofsaron_startAI(Creature *c) : ScriptedAI© 142. + { 143. + instance = c->GetInstanceScript (); 144. + Reset(); 145. + } 146. + 147. + void Reset() 148. + { 149. + StartPhase = 0; 150. + StartTimer = 5000; 151. + me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); 152. + me->SetReactState (REACT_PASSIVE); 153. + event = true; 154. + } 155. + 156. + void UpdateAI(const uint32 diff) 157. + { 158. + if(instance->GetData (DATA_TYRANNUS_START) == IN_PROGRESS && event) 159. + { 160. + if (StartTimer 161. + { 162. + switch (StartPhase) 163. + { 164. + case 0: 165. + if (Creature* sTyrannus = me->FindNearestCreature (NPC_TYRANNUS_EVENTS, 50.0f, true)) 166. + { 167. + sTyrannus- >SetFlying(true); 168. + DoScriptText(SAY_TYRRANUS_1, sTyrannus); 169. + 170. + int32 entryIndex; 171. + if (instance->GetData(DATA_TEAM_IN_INSTANCE) == ALLIANCE) 172. + entryIndex = 0; 173. + else 174. + entryIndex = 1; 175. + 176. + Position spawnPoint = {427.36f, 212.636f, 529.47f, 6.2564f}; 177. + 178. + for (int8 i = 0; startPositions.entry[entryIndex] != 0; ++i) 179. + { 180. + if (Creature* summon = me->SummonCreature (startPositions.entry[entryIndex], spawnPoint, TEMPSUMMON_DEAD_DESPAWN)) 181. + summon- >GetMotionMaster()->MovePoint(0, startPositions.movePosition); 182. + } 183. + } 184. + ++StartPhase; 185. + StartTimer = 5000; 186. + break; 187. + case 1: 188. + if (Creature* sTyrannus = me->FindNearestCreature (NPC_TYRANNUS_EVENTS, 50.0f, true)) 189. + DoScriptText(SAY_TYRRANUS_2, sTyrannus); 190. + ++StartPhase; 191. + StartTimer = 15000; 192. + break; 193. + case 2: 194. + if(me->GetEntry () == NPC_SYLVANAS_PART1) 195. + DoScriptText(SAY_SYLVANAS_1, me); 196. + else if(me- >GetEntry() == NPC_JAINA_PART1) 197. + DoScriptText(SAY_JAINA_1, me); 198. + 199. + if (instance- >GetData(DATA_TEAM_IN_INSTANCE) == ALLIANCE) 200. + { 201. + GetCreatureListWithEntryInGrid(Champion1, me, NPC_CHAMPION_1_ALLIANCE, 150.0f); 202. + for (std::list::iterator itr = Champion1.begin(); itr != Champion1.end(); + +itr) 203. + { 204. + Creature *sChampions = *itr; 205. + if (! sChampions) 206. + continue; 207. + 208. + if (sChampions->isAlive()) 209. + if (Creature* sNecrolyte = me- >FindNearestCreature(367880, 150.0f, true)) 210. + { 211. + sChampions->Attack(sNecrolyte, true); 212. + sChampions->GetMotionMaster()->MoveChase (sNecrolyte); 213. + } 214. + } 215. + 216. + GetCreatureListWithEntryInGrid(Champion2, me, NPC_CHAMPION_2_ALLIANCE, 150.0f); 217. + for (std::list::iterator itr = Champion2.begin(); itr != Champion2.end(); + +itr) 218. + { 219. + Creature *sChampions = *itr; 220. + if (! sChampions) 221. + continue; 222. + 223. + if (sChampions->isAlive()) 224. + if (Creature* sNecrolyte = me- >FindNearestCreature(36788, 150.0f, true)) 225. + { 226. + sChampions->Attack(sNecrolyte, true); 227. + sChampions->GetMotionMaster()->MoveChase (sNecrolyte); 228. + } 229. + } 230. + } 231. + else 232. + { 233. + GetCreatureListWithEntryInGrid(Champion1, me, NPC_CHAMPION_1_HORDE, 150.0f); 234. + for (std::list::iterator itr = Champion1.begin(); itr != Champion1.end(); + +itr) 235. + { 236. + Creature *sChampions = *itr; 237. + if (! sChampions) 238. + continue; 239. + 240. + if (sChampions->isAlive()) 241. + if (Creature* sNecrolyte = me- >FindNearestCreature(367880, 150.0f, true)) 242. + { 243. + sChampions->Attack(sNecrolyte, true); 244. + sChampions->GetMotionMaster()->MoveChase (sNecrolyte); 245. + } 246. + } 247. + 248. + GetCreatureListWithEntryInGrid(Champion2, me, NPC_CHAMPION_2_HORDE, 150.0f); 249. + for (std::list::iterator itr = Champion2.begin(); itr != Champion2.end(); + +itr) 250. + { 251. + Creature *sChampions = *itr; 252. + if (! sChampions) 253. + continue; 254. + 255. + if (sChampions->isAlive()) 256. + if (Creature* sNecrolyte = me- >FindNearestCreature(36788, 150.0f, true)) 257. + { 258. + sChampions->Attack(sNecrolyte, true); 259. + sChampions->GetMotionMaster()->MoveChase (sNecrolyte); 260. + } 261. + } 262. + 263. + GetCreatureListWithEntryInGrid(Champion3, me, NPC_CHAMPION_3_HORDE, 150.0f); 264. + for (std::list::iterator itr = Champion3.begin(); itr != Champion3.end(); + +itr) 265. + { 266. + Creature *sChampions = *itr; 267. + if (! sChampions) 268. + con - - - Добавлено - - - жаль, половина только прогрузилась Edited July 9, 2014 by maks110 2 Link to comment Share on other sites More sharing options...
Ярило Posted July 9, 2014 Share Posted July 9, 2014 Спасибо, только это работа разработчиков а не гмов. p.s. Думал скрипт куда больше, учитывая кол-во символов на строчку... Link to comment Share on other sites More sharing options...
maks110 Posted July 9, 2014 Author Share Posted July 9, 2014 На этот инст 370 строчек Link to comment Share on other sites More sharing options...
Волчер Posted July 9, 2014 Share Posted July 9, 2014 Создаю эту тему специально для тех нытиков, которые постоянно пишут сообщения типо: "когда будет 548?" или "где 12 обнова?" Тут я предоставлю рабочий скрипт для инста - Яма Сарона, что бы наглядно показать все то, что нужно проделать гм'ам скорее всего с нуля, да бы с этого вышел хоть какой-то толк ТЫК- - - - Добавлено - - - жаль, половина только прогрузилась Тi думаєш після цього скiглії прiпiнять пiсати колi 5.4.8? )) Наївнiй)) Link to comment Share on other sites More sharing options...
maserati Posted July 9, 2014 Share Posted July 9, 2014 Под спойлер, было бы неплохо, загнать это всё. Link to comment Share on other sites More sharing options...
Сэра Posted July 9, 2014 Share Posted July 9, 2014 Учитывая, что ГМы не занимаются ядром игры... В общем, надо бы убрать код под спойлер. Link to comment Share on other sites More sharing options...
maks110 Posted July 9, 2014 Author Share Posted July 9, 2014 (edited) А чем вам разработчик не гейм мастер? Ну я же не говорю: "ТИТАН пачени инст!!!" Edited July 9, 2014 by maks110 Link to comment Share on other sites More sharing options...
Royal Posted July 9, 2014 Share Posted July 9, 2014 А чем вам разработчик не гейм мастер? Мб тем, что их вообще вы в игре не увидите никогда?) Да и на форуме некоторых тоже.) Link to comment Share on other sites More sharing options...
Волчер Posted July 9, 2014 Share Posted July 9, 2014 Мб тем, что их вообще вы в игре не увидите никогда?) Да и на форуме некоторых тоже.) Я в игре титана с зилиусом вижу то не часто ... а из Администраторов только куклу в игре пару раз видел и всё... Link to comment Share on other sites More sharing options...
maks110 Posted July 10, 2014 Author Share Posted July 10, 2014 а из Администраторов только куклу в игре пару раз видел и всё... А кукла жe не администратор :crazy: Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now