📄 gossip_teleportnpc.cpp
字号:
{
//Plr->EventTeleport(553, 40.000000, -28.600000, -1.100000);
Teleport(Plr,553, 40.000000, -28.600000, -1.100000,0);
}break;
case 1054://外域副本传送2[团] 亚克崔兹
{
//Plr->EventTeleport(552, -1.200000, 0.000000, -0.200000);
Teleport(Plr,552, -1.200000, 0.000000, -0.200000,0);
}break;
case 1055://外域副本传送2[团] 麦克那尔
{
//Plr->EventTeleport(554, -28.900000, 0.700000, -1.800000);
Teleport(Plr,554, -28.900000, 0.700000, -1.800000,0);
}break;
case 1056://外域副本传送2[团] 凤凰大厅
{
//Plr->EventTeleport(550, -6.800000, -0.900000, -2.400000);
Teleport(Plr,550, -6.800000, -0.900000, -2.400000,0);
}break;
case 1057://外域副本传送2[团] 奴隶监狱
{
//Plr->EventTeleport(547, 123.146225, -122.687210, -0.446336);
Teleport(Plr,547, 123.146225, -122.687210, -0.446336,0);
}break;
case 1058://外域副本传送2[团] 蒸汽洞窟
{
//Plr->EventTeleport(545, -7.500000, 5.900000, -4.300000);
Teleport(Plr,545, -7.500000, 5.900000, -4.300000,0);
}break;
case 1059://外域副本传送2[团] 毒牙沼泽
{
//Plr->EventTeleport(546, 14.913731, -19.914341, -2.755679);
Teleport(Plr,546, 14.913731, -19.914341, -2.755679,0);
}break;
case 106://个人银行
{
objmgr.CreateGossipMenuForPlayer(&Menu, pCreature->GetGUID(), 1, Plr);
Menu->AddItem( 0, " 暂时不提供!有什么问题联系QQ:55580780 ", 1061 );
Menu->AddItem(0, "[返回]", 99);
Menu->SendTo(Plr);
}break;
case 107://开通飞行点
{
for (uint8 i=0; i<8; i++)
{ Plr->SetTaximask(i, 0xFFFFFFFF);}
objmgr.CreateGossipMenuForPlayer(&Menu, pCreature->GetGUID(), 1, Plr);
Menu->AddItem( 0, " 飞行点已开,请返回! ", 1071 );
Menu->AddItem(0, "[返回]", 99);
Menu->SendTo(Plr);
}break;
case 108://领取工资10G/小时
{
if((int)Plr->GetPlayedtime() > 3600) // 条件检查你在线时间大于60秒.这可以自己改
{
objmgr.CreateGossipMenuForPlayer(&Menu, pCreature->GetGUID(), 1, Plr);
Menu->AddItem( 0, " 您已经上线超过一小时,但是本服务器暂时不提供此项功能! ", 1081 );
Menu->AddItem(0, "[返回]", 99);
Menu->SendTo(Plr);
}
else
{
objmgr.CreateGossipMenuForPlayer(&Menu, pCreature->GetGUID(), 1, Plr);
Menu->AddItem( 0, " 您上线不足一小时,请返回! ", 1081 );
Menu->AddItem(0, "[返回]", 99);
Menu->SendTo(Plr);
}
}break;
case 109://外域传送(5G)
{
objmgr.CreateGossipMenuForPlayer(&Menu, pCreature->GetGUID(), 1, Plr);
Menu->AddItem(5, " 黑暗之门 ", 1091);
Menu->AddItem(5, " 永歌森林 ", 1092);
Menu->AddItem(5, " 艾克索达 ", 1093);
Menu->AddItem(5, " 海加尔山 ", 1094);
Menu->AddItem(5, " 青草平原 ", 1095);
Menu->AddItem(5, " 翠叶森林 ", 1096);
Menu->AddItem(5, " 沙塔斯城 ", 1097);
Menu->AddItem(5, " 哈兰 ", 1098);
Menu->AddItem(5, " 风暴尖塔 ", 1099);
Menu->AddItem(0, "[返回]", 99);
Menu->SendTo(Plr);
}break;
case 1091://外域传送?黑暗之门
{
Plr->EventTeleport(530,-246.600006,946.000000,84.400002);
}break;
case 1092://外域传送?永歌森林
{
Plr->EventTeleport(530,9336.900391,-7278.399902,13.600000);
}break;
case 1093://外域传送?艾克索达
{
Plr->EventTeleport(530,-4043.632813,-11933.284180,-0.057945);
}break;
case 1094://外域传送?海加尔山
{
Plr->EventTeleport(534,5070.084473,-1791.984497,1320.995483);
}break;
case 1095://外域传送?青草平原
{
Plr->EventTeleport(169,-2674.500000,-2275.800049,148.092743);
}break;
case 1096://外域传送?翠叶森林
{
Plr->EventTeleport(169,2737.508057,-3318.579590,101.882820);
}break;
case 1097://外域传送?沙塔斯城
{
Plr->EventTeleport(530,-1889,5433,-11);
}break;
case 1098://外域传送?哈兰
{
Plr->EventTeleport(530,-1567,7959,-21);
}break;
case 1099://外域传送?风暴尖塔
{
Plr->EventTeleport(530,4151,3041,339);
}break;
case 110://野外BOSS传送(10G)
{
objmgr.CreateGossipMenuForPlayer(&Menu, pCreature->GetGUID(), 1, Plr);
Menu->AddItem(5, " 暮色森林 ", 1101);
Menu->AddItem(5, " 辛特兰 ", 1102);
Menu->AddItem(5, " 灰谷 ", 1103);
Menu->AddItem(5, " 艾萨拉 ", 1104);
Menu->AddItem(5, " 菲拉斯 ", 1105);
Menu->AddItem(5, " 诅咒之地 ", 1106);
Menu->AddItem(5, " 水晶谷 ", 1107);
Menu->AddItem(0, "[返回]", 99);
Menu->SendTo(Plr);
}break;
case 1101://野外BOSS传送暮色森林
{
Plr->EventTeleport(0,-10526.168945,-434.996796,50.894821);
}break;
case 1102://野外BOSS传送辛特兰
{
Plr->EventTeleport(0,759.605713,-3893.341309,116.475304);
}break;
case 1103://野外BOSS传送灰谷
{
Plr->EventTeleport(1,3120.289307,-3439.444336,139.566345);
}break;
case 1104://野外BOSS传送艾萨拉
{
Plr->EventTeleport(1,2622.219971,-5977.930176,100.562897);
}break;
case 1105://野外BOSS传送菲拉斯
{
Plr->EventTeleport(1,-2741.290039,2009.481323,31.877323);
}break;
case 1106://野外BOSS传送诅咒之地
{
Plr->EventTeleport(0,-12234.000000,-2474.000000,-3.000000);
}break;
case 1107://野外BOSS传送水晶谷
{
Plr->EventTeleport(1,-6292.463379,1578.029053,0.155348);
}break;
}
}
public:
struct instancelist
{
uint32 InstanceId ;
uint32 MapId;
uint32 Creation;
uint32 GroupSignature;
uint32 Creator;
uint32 ExpireTime;
uint32 difficulty;
};
instancelist activeinstance[1000];
int i,j;
static const int k = 1;
private:
void Teleport(Player* plr,uint32 mapid, float x, float y, float z,int flag) //flag 判断(根据权限)是否需要单独加入副本 预留
{
uint32 instanceid = 0;
if (j<k)
{
for(i=0;i<1000;i++)
{
activeinstance[i].InstanceId=0;
activeinstance[i].MapId=0;
activeinstance[i].Creation=0;
activeinstance[i].GroupSignature=0;
activeinstance[i].Creator=0;
activeinstance[i].ExpireTime=0;
activeinstance[i].difficulty=0;
}
j=10;
sLog.outString(" 初始化副本存储结构 ");
}
MapMgr * mapMgr = NULL;
for(i=0;i<1000;i++)
{
sLog.outString(" #副本[%u] 地图[%u]# ",activeinstance[i].InstanceId, activeinstance[i].MapId);
mapMgr = sWorldCreator.GetMap(activeinstance[i].MapId)->GetRawInstance(activeinstance[i].InstanceId);
if(mapMgr)
{
if(!mapMgr->HasPlayers())
{
//sWorldCreator.GetMap(mapid)->DestroyMapMgrInstance(instanceid);
//sLog.outDebug("Instance %i on map %i deleted with success\n", instanceid, mapid);
sLog.outString(" #副本[%u] 地图[%u]# 没有玩家 删除副本数据 ",activeinstance[i].InstanceId, activeinstance[i].MapId);
activeinstance[i].InstanceId =0;
activeinstance[i].MapId =0;
}
}
//else
//{
//sLog.outDebug("Instance %i failed to be deleted, reason: Doesnt Exist\n", instanceid);
// sLog.outString(" #副本[%u] 地图[%u]# 副本不存在 ",activeinstance[i].InstanceId, activeinstance[i].MapId);
//}
if (activeinstance[i].MapId == 0)
{
sLog.outString(" 提示:没有找到该地图的副本 ");
break;
}
else if (activeinstance[i].MapId == mapid)
{
instanceid = activeinstance[i].InstanceId;
break;
}
if(i == 999) //一直找不到 执行一次清零
{
j = 0;
}
}
if (flag == 0)
{
//MapMgr *instance = sWorldCreator.GetInstance(instanceid);
if(instanceid == 0)
{
Map *pMap = sWorldCreator.GetMap(mapid);
MapMgr *pMapMgr = pMap->CreateMapMgrInstance();
sLog.outString(" 玩家:[%s] 创建副本 #ID[%u] 地图[%u]# ",plr->GetName(), pMapMgr->GetInstanceID(), pMapMgr->GetMapId());
activeinstance[i].MapId =mapid;
activeinstance[i].InstanceId =pMapMgr->GetInstanceID();
//sLog.outString("activeinstance %d :Instance %u - MapId %u .", i,activeinstance[i-1].InstanceId, activeinstance[i-1].MapId);
plr->SafeTeleport(mapid,pMapMgr->GetInstanceID(),LocationVector(x,y,z));
return;
}
MapMgr *instance = sWorldCreator.GetInstance(mapid,instanceid);
mapid = instance->GetMapId();
plr->SaveEntryPoint(mapid);
plr->RemoveFromWorld();
plr->SetInstanceID(instanceid);
plr->SetMapId(mapid);
plr->SetPosition(x,y,z,0,true);
WorldPacket data(SMSG_TRANSFER_PENDING, 4);
uint32 pid = mapid;
data << pid;
plr->GetSession()->SendPacket(&data);
WorldPacket data2(SMSG_NEW_WORLD, 20);
data2 << mapid << x << y << z << (float)3.14;
plr->GetSession()->SendPacket(&data2);
sLog.outString(" 玩家:[%s] 进入副本 #ID[%u] 地图[%u]# ",plr->GetName(), instance->GetInstanceID(), instance->GetMapId());
}
else
{
Map *pMap = sWorldCreator.GetMap(389);
MapMgr *pMapMgr = pMap->CreateMapMgrInstance();
sLog.outString(" 超级玩家:[%s] 创建副本 %u #ID[%u] 地图[%u]# ",plr->GetName(), pMapMgr->GetInstanceID(), pMapMgr->GetMapId());
plr->SafeTeleport(389,pMapMgr->GetInstanceID(),LocationVector(2.024650,-10.021000,-16.187500));
//activeinstance[i].MapId =mapid; //不做记录
//activeinstance[i].InstanceId =pMapMgr->GetInstanceID();
}
}
};
void SetupCustom_Teleporters(ScriptMgr * mgr)
{
/* Teleporter List */
mgr->register_gossip_script(999999, &TeleportNPC::Create); // Osciron
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -