Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * 1) /mob create DOL.GS.Teleporter
- * 2) set the guild of the teleporter to what u want
- * 3) /mob create, name this mob the category u want, and set the guildname to T_Cat_<TeleporterGuildName>
- * 4) /mob create, name this mob what u want the port to be, set the guild name to the category.
- * ***Now you have your first category, and port.
- *
- * /mob str 1-4 will change the quest indicator of the teleporter, 5+ will shut it off.
- * ***You may need to /mob reload for the quest indicator to update once you've changed it.
- */
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using DOL.GS.PacketHandler;
- using DOL.GS.Quests;
- namespace DOL.GS
- {
- public class Teleporter : GameNPC
- {
- string msg;
- string local_blacksmith_items = "champion_weapon_voucher | epic_armor_token";
- public override eQuestIndicator GetQuestIndicator(GamePlayer player)
- {
- switch (Strength)
- {
- case 1: return eQuestIndicator.Available;
- case 2: return eQuestIndicator.Finish;
- case 3: return eQuestIndicator.Lesson;
- case 4: return eQuestIndicator.Lore;
- default: return base.GetQuestIndicator(player);
- }
- }
- public override bool Interact(GamePlayer player)
- {
- if (base.Interact(player))
- {
- ClearChat(player);
- if (player.CharacterClass.ID == (int)eCharacterClass.MaulerAlb ||
- player.CharacterClass.ID == (int)eCharacterClass.MaulerHib ||
- player.CharacterClass.ID == (int)eCharacterClass.MaulerMid ||
- player.CharacterClass.ID == (int)eCharacterClass.Warlock ||
- player.CharacterClass.ID == (int)eCharacterClass.Valkyrie ||
- player.CharacterClass.ID == (int)eCharacterClass.Vampiir ||
- player.CharacterClass.ID == (int)eCharacterClass.Heretic ||
- player.CharacterClass.ID == (int)eCharacterClass.Bainshee)
- {
- SendReply(player, "I'm sorry, that class is disabled from Fringe currently.");
- return false;
- }
- List<GameNPC> npcs = WorldMgr.GetNPCsByGuild("T_Cat_" + GuildName, eRealm.None);
- msg = "Where would you like to go?\n";
- msg += "[Setup]\n";
- msg += "[PvP Zone]\n";
- foreach (GameNPC cat in npcs)
- {
- msg += "[" + cat.Name + "]\n";
- }
- #region Quest Support
- if (player.QuestList.Count >= 1)
- {
- msg += "-----Quest Locations-----\n";
- List<GameNPC> qNpcs = WorldMgr.GetNPCsByGuild("QUEST", eRealm.None);
- //QUEST SUPPORT.
- foreach (GameNPC npc in qNpcs)
- {
- foreach (AbstractQuest quest in player.QuestList)
- {
- if (quest.Name == npc.Name)
- msg += string.Format("*[{0}]", npc.Name);
- }
- }
- }
- #endregion
- string people = "";
- int peopleCount = 0;
- foreach (GameInventoryItem item in player.Inventory.AllItems)
- {
- if (local_blacksmith_items.Contains(item.Id_nb))
- {
- if (people.Contains("[Local Blacksmith]"))
- continue;
- peopleCount++;
- people += "^[Local Blacksmith]\n";
- }
- }
- if (peopleCount > 0)
- {
- msg += "\n---People of Interest---\n";
- msg += people;
- }
- SayTo(player, msg);
- }
- return true;
- }
- public override bool WhisperReceive(GameLiving source, string str)
- {
- if (!base.WhisperReceive(source, str)) return false;
- if (!(source is GamePlayer)) return false;
- //we don't allow them to port in pvp combat.
- if (source.InCombatPvP) return false;
- GamePlayer player = (GamePlayer)source;
- if (player.CharacterClass.ID == (int)eCharacterClass.MaulerAlb ||
- player.CharacterClass.ID == (int)eCharacterClass.MaulerHib ||
- player.CharacterClass.ID == (int)eCharacterClass.MaulerMid ||
- player.CharacterClass.ID == (int)eCharacterClass.Warlock ||
- player.CharacterClass.ID == (int)eCharacterClass.Valkyrie ||
- player.CharacterClass.ID == (int)eCharacterClass.Vampiir ||
- player.CharacterClass.ID == (int)eCharacterClass.Heretic ||
- player.CharacterClass.ID == (int)eCharacterClass.Bainshee)
- {
- SendReply(player, "I'm sorry, that class is disabled from Fringe currently.");
- return false;
- }
- if (str.ToLower() == "setup")
- {
- GameNPC npc = WorldMgr.GetNPCsByName("setup", eRealm.None)[0];
- player.MoveTo(npc.CurrentRegionID, npc.X, npc.Y, npc.Z, npc.Heading);
- return true;
- }
- if (str.ToLower() == "pvp zone")
- {
- player.MoveTo(MapchangeManager.CurrentMap.BuffzoneLocation);
- return true;
- }
- #region Quest Support
- //Get Quest NPCs
- List<GameNPC> qNpcs = WorldMgr.GetNPCsByGuild("QUEST", eRealm.None);
- //QUEST SUPPORT.
- foreach (GameNPC npc in qNpcs)
- {
- foreach (AbstractQuest quest in player.QuestList)
- {
- if (quest.Name == str && npc.Name == str)
- {
- player.MoveTo(npc.CurrentRegionID, npc.X, npc.Y, npc.Z, npc.Heading);
- return true;
- }
- }
- }
- #endregion
- TurnTo(player.X, player.Y);
- ClearChat(player);
- foreach (GameNPC cat in WorldMgr.GetNPCsByName(str, eRealm.None))
- {
- if (cat.Name == str && cat.GuildName == "T_Cat_" + GuildName)
- {
- foreach (GameNPC port in WorldMgr.GetNPCsByGuild(cat.Name, eRealm.None))
- {
- msg += string.Format("\n [{0}]", port.Name);
- }
- SendReply(player, msg);
- return true;
- }
- else
- {
- if (cat.Name == str)
- {
- player.MoveTo(cat.CurrentRegionID, cat.X, cat.Y, cat.Z, cat.Heading);
- return true;
- }
- }
- }
- return true;
- }
- public void SendReply(GamePlayer player, string msg)
- {
- player.Out.SendMessage(msg, eChatType.CT_System, eChatLoc.CL_PopupWindow);
- }
- public void ClearChat(GamePlayer player)
- {
- GameObject obj = player.TargetObject;
- player.Out.SendChangeTarget(player);
- player.Out.SendMessage("", eChatType.CT_System, eChatLoc.CL_PopupWindow);
- player.Out.SendChangeTarget(obj);
- }
- }
- }
Add Comment
Please, Sign In to add comment