?? 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 + -