Code:
--*****************************************
--*TeleNPC script by Neccta v1.0 *
--* Nightmare *
--* PIE*
--* For mmowned*
--* Please geif credits *
--*****************************************
local menunum = 33310
local menuicon = 4
local teleicon = 2
local menu =
{
{"Mall Locations",
{
{"Weapons, Rings, Etc", 0, -10492.3, -3254.72, 21.0304},
{"Traniers", 0, -10481.7, -3212.13, 20.2697},
{"BattleMasters", 0, -10458.9, -3316.27, 20.9647},
{"Arena Vendors", 0, -10413.1, -3261.81, 20.1783},
}
},
}
function TeleNPC_MainMenu(Unit, Player)
local i = 0
Unit:GossipCreateMenu(menunum, Player, 0)
for k,v in pairs(menu) do
i = i + 1
if type(v[2]) == "table" then
Unit:GossipMenuAddItem(menuicon, v[1], i, 0)
i = i + #(v[2])
else
Unit:GossipMenuAddItem(teleicon, v[1], i, 0)
end
end
Unit:GossipSendMenu(Player)
end
function TeleNPC_OnGossipTalk(Unit, Event, Player)
TeleNPC_MainMenu(Unit, Player)
end
function TeleNPC_OnGossipSelect(Unit, Event, Player, MenuId, Id, Code)
local i = 0
if(Id == 0) then
TeleNPC_MainMenu(Unit,Player)
else
for k,v in pairs(menu) do
i = i + 1
if (Id == i) then
if type(v[2]) == "table" then
TeleNPC_SubMenu(Unit, Player, i, v[2])
else
if Player:IsInCombat() then
Unit:SendChatMessage(12, 0, "You can't teleport while in combat!")
else
Player:Teleport(v[2], v[3], v[4], v[5])
end
Unit:GossipComplete(Player)
end
return
elseif (type(v[2]) == "table") then
for j,w in pairs(v[2]) do
i = i + 1
if (Id == i) then
if Player:IsInCombat() then
Unit:SendChatMessage(12, 0, "You can't teleport while in combat!")
else
Player:Teleport(w[2], w[3], w[4], w[5])
end
Unit:GossipComplete(Player)
return
end
end
end
end
end
end
RegisterUnitGossipEvent(63320, 1, "TeleNPC_OnGossipTalk")
RegisterUnitGossipEvent(63320, 2, "TeleNPC_OnGossipSelect")
Not tested. Just something I would think would work. I duno though, try it I guess 
or maybe this
Code:
--*****************************************
--*TeleNPC script by Neccta v1.0 *
--* Nightmare *
--* PIE*
--* For mmowned*
--* Please geif credits *
--*****************************************
local menunum = 33310
local menuicon = 4
local teleicon = 2
local menu =
{
{"Mall Locations",
{
{"Weapons, Rings, Etc", 0, -5384.63, -2962.41, 322.058},
{"Traniers", 0, -5390.7, -3015.27, 327.581},
{"BattleMasters", 0, -5320.54, -2938.69, 334.091},
{"Arena Vendors", 0, -5297.42, -2985.02, 340.631},
}
},
}
function TeleNPC_MainMenu(Unit, Player)
local i = 0
Unit:GossipCreateMenu(menunum, Player, 0)
for k,v in pairs(menu) do
i = i + 1
if type(v[2]) == "table" then
Unit:GossipMenuAddItem(menuicon, v[1], i, 0)
i = i + #(v[2])
else
Unit:GossipMenuAddItem(teleicon, v[1], i, 0)
end
end
Unit:GossipSendMenu(Player)
end
function TeleNPC_SubMenu(Unit, Player, i, Submenu)
Unit:GossipCreateMenu(menunum-i, Player, 0)
for k,v in pairs(Submenu) do
i = i + 1
Unit:GossipMenuAddItem(teleicon, v[1], i, 0)
end
Unit:GossipSendMenu(Player)
end
function TeleNPC_OnGossipTalk(Unit, Event, Player)
TeleNPC_MainMenu(Unit, Player)
end
function TeleNPC_OnGossipSelect(Unit, Event, Player, MenuId, Id, Code)
local i = 0
if(Id == 0) then
TeleNPC_MainMenu(Unit,Player)
else
for k,v in pairs(menu) do
i = i + 1
if (Id == i) then
if type(v[2]) == "table" then
TeleNPC_SubMenu(Unit, Player, i, v[2])
else
if Player:IsInCombat() then
Unit:SendChatMessage(12, 0, "You can't teleport while in combat!")
else
Player:Teleport(v[2], v[3], v[4], v[5])
end
Unit:GossipComplete(Player)
end
return
elseif (type(v[2]) == "table") then
for j,w in pairs(v[2]) do
i = i + 1
if (Id == i) then
if Player:IsInCombat() then
Unit:SendChatMessage(12, 0, "You can't teleport while in combat!")
else
Player:Teleport(w[2], w[3], w[4], w[5])
end
Unit:GossipComplete(Player)
return
end
end
end
end
end
end
RegisterUnitGossipEvent(633200, 1, "TeleNPC_OnGossipTalk")
RegisterUnitGossipEvent(633200, 2, "TeleNPC_OnGossipSelect")
Idk, just off of the top of my head. Test em out :P