Guest User

Untitled

a guest
Jun 22nd, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.69 KB | None | 0 0
  1. /*
  2. * 1) /mob create DOL.GS.Teleporter
  3. * 2) set the guild of the teleporter to what u want
  4. * 3) /mob create, name this mob the category u want, and set the guildname to T_Cat_<TeleporterGuildName>
  5. * 4) /mob create, name this mob what u want the port to be, set the guild name to the category.
  6. * ***Now you have your first category, and port.
  7. *
  8. * /mob str 1-4 will change the quest indicator of the teleporter, 5+ will shut it off.
  9. * ***You may need to /mob reload for the quest indicator to update once you've changed it.
  10. */
  11. using System;
  12. using System.Collections.Generic;
  13. using System.Linq;
  14. using System.Text;
  15. using DOL.GS.PacketHandler;
  16. using DOL.GS.Quests;
  17.  
  18. namespace DOL.GS
  19. {
  20. public class Teleporter : GameNPC
  21. {
  22. string msg;
  23. string local_blacksmith_items = "champion_weapon_voucher | epic_armor_token";
  24.  
  25. public override eQuestIndicator GetQuestIndicator(GamePlayer player)
  26. {
  27. switch (Strength)
  28. {
  29. case 1: return eQuestIndicator.Available;
  30. case 2: return eQuestIndicator.Finish;
  31. case 3: return eQuestIndicator.Lesson;
  32. case 4: return eQuestIndicator.Lore;
  33. default: return base.GetQuestIndicator(player);
  34. }
  35. }
  36. public override bool Interact(GamePlayer player)
  37. {
  38.  
  39. if (base.Interact(player))
  40. {
  41. ClearChat(player);
  42.  
  43. if (player.CharacterClass.ID == (int)eCharacterClass.MaulerAlb ||
  44. player.CharacterClass.ID == (int)eCharacterClass.MaulerHib ||
  45. player.CharacterClass.ID == (int)eCharacterClass.MaulerMid ||
  46. player.CharacterClass.ID == (int)eCharacterClass.Warlock ||
  47. player.CharacterClass.ID == (int)eCharacterClass.Valkyrie ||
  48. player.CharacterClass.ID == (int)eCharacterClass.Vampiir ||
  49. player.CharacterClass.ID == (int)eCharacterClass.Heretic ||
  50. player.CharacterClass.ID == (int)eCharacterClass.Bainshee)
  51. {
  52. SendReply(player, "I'm sorry, that class is disabled from Fringe currently.");
  53. return false;
  54. }
  55.  
  56. List<GameNPC> npcs = WorldMgr.GetNPCsByGuild("T_Cat_" + GuildName, eRealm.None);
  57.  
  58. msg = "Where would you like to go?\n";
  59. msg += "[Setup]\n";
  60. msg += "[PvP Zone]\n";
  61.  
  62.  
  63. foreach (GameNPC cat in npcs)
  64. {
  65. msg += "[" + cat.Name + "]\n";
  66. }
  67.  
  68.  
  69. #region Quest Support
  70. if (player.QuestList.Count >= 1)
  71. {
  72. msg += "-----Quest Locations-----\n";
  73.  
  74. List<GameNPC> qNpcs = WorldMgr.GetNPCsByGuild("QUEST", eRealm.None);
  75.  
  76. //QUEST SUPPORT.
  77. foreach (GameNPC npc in qNpcs)
  78. {
  79. foreach (AbstractQuest quest in player.QuestList)
  80. {
  81. if (quest.Name == npc.Name)
  82. msg += string.Format("*[{0}]", npc.Name);
  83. }
  84. }
  85. }
  86. #endregion
  87.  
  88. string people = "";
  89. int peopleCount = 0;
  90. foreach (GameInventoryItem item in player.Inventory.AllItems)
  91. {
  92. if (local_blacksmith_items.Contains(item.Id_nb))
  93. {
  94. if (people.Contains("[Local Blacksmith]"))
  95. continue;
  96.  
  97. peopleCount++;
  98. people += "^[Local Blacksmith]\n";
  99. }
  100. }
  101.  
  102. if (peopleCount > 0)
  103. {
  104. msg += "\n---People of Interest---\n";
  105. msg += people;
  106. }
  107.  
  108.  
  109. SayTo(player, msg);
  110. }
  111. return true;
  112. }
  113. public override bool WhisperReceive(GameLiving source, string str)
  114. {
  115. if (!base.WhisperReceive(source, str)) return false;
  116. if (!(source is GamePlayer)) return false;
  117.  
  118. //we don't allow them to port in pvp combat.
  119. if (source.InCombatPvP) return false;
  120.  
  121. GamePlayer player = (GamePlayer)source;
  122.  
  123. if (player.CharacterClass.ID == (int)eCharacterClass.MaulerAlb ||
  124. player.CharacterClass.ID == (int)eCharacterClass.MaulerHib ||
  125. player.CharacterClass.ID == (int)eCharacterClass.MaulerMid ||
  126. player.CharacterClass.ID == (int)eCharacterClass.Warlock ||
  127. player.CharacterClass.ID == (int)eCharacterClass.Valkyrie ||
  128. player.CharacterClass.ID == (int)eCharacterClass.Vampiir ||
  129. player.CharacterClass.ID == (int)eCharacterClass.Heretic ||
  130. player.CharacterClass.ID == (int)eCharacterClass.Bainshee)
  131. {
  132. SendReply(player, "I'm sorry, that class is disabled from Fringe currently.");
  133. return false;
  134. }
  135.  
  136.  
  137. if (str.ToLower() == "setup")
  138. {
  139. GameNPC npc = WorldMgr.GetNPCsByName("setup", eRealm.None)[0];
  140. player.MoveTo(npc.CurrentRegionID, npc.X, npc.Y, npc.Z, npc.Heading);
  141. return true;
  142. }
  143. if (str.ToLower() == "pvp zone")
  144. {
  145. player.MoveTo(MapchangeManager.CurrentMap.BuffzoneLocation);
  146. return true;
  147. }
  148.  
  149.  
  150.  
  151. #region Quest Support
  152. //Get Quest NPCs
  153. List<GameNPC> qNpcs = WorldMgr.GetNPCsByGuild("QUEST", eRealm.None);
  154.  
  155. //QUEST SUPPORT.
  156. foreach (GameNPC npc in qNpcs)
  157. {
  158. foreach (AbstractQuest quest in player.QuestList)
  159. {
  160. if (quest.Name == str && npc.Name == str)
  161. {
  162. player.MoveTo(npc.CurrentRegionID, npc.X, npc.Y, npc.Z, npc.Heading);
  163. return true;
  164. }
  165.  
  166. }
  167. }
  168. #endregion
  169.  
  170. TurnTo(player.X, player.Y);
  171. ClearChat(player);
  172.  
  173. foreach (GameNPC cat in WorldMgr.GetNPCsByName(str, eRealm.None))
  174. {
  175. if (cat.Name == str && cat.GuildName == "T_Cat_" + GuildName)
  176. {
  177. foreach (GameNPC port in WorldMgr.GetNPCsByGuild(cat.Name, eRealm.None))
  178. {
  179. msg += string.Format("\n [{0}]", port.Name);
  180. }
  181.  
  182. SendReply(player, msg);
  183. return true;
  184. }
  185. else
  186. {
  187. if (cat.Name == str)
  188. {
  189. player.MoveTo(cat.CurrentRegionID, cat.X, cat.Y, cat.Z, cat.Heading);
  190. return true;
  191. }
  192. }
  193. }
  194.  
  195. return true;
  196. }
  197.  
  198.  
  199.  
  200. public void SendReply(GamePlayer player, string msg)
  201. {
  202. player.Out.SendMessage(msg, eChatType.CT_System, eChatLoc.CL_PopupWindow);
  203. }
  204. public void ClearChat(GamePlayer player)
  205. {
  206. GameObject obj = player.TargetObject;
  207. player.Out.SendChangeTarget(player);
  208. player.Out.SendMessage("", eChatType.CT_System, eChatLoc.CL_PopupWindow);
  209. player.Out.SendChangeTarget(obj);
  210. }
  211. }
  212. }
Add Comment
Please, Sign In to add comment