- Mesaj
- 1.209
- Çözümler
- 34
- Beğeni
- 896
- Puan
- 1.139
- Ticaret Puanı
- 0
Merhaba arkadaşlar başka forumda gördüğüm bir boss sistemini eklemey açlışıyorumda client derlendi ama giriş bölümü bozuldu birde server taraflı gameyi derlerken aşağıdaki hatayı veriyo kodda sorun yok aslında dediği gibi ekledim sizce nerde sorun var
Not : benim eklemeye çalıştıuğım dosya bu kadar değil daha fazla ama buraya sığmadığı için böyle eklediğim yeri sadece koydum altta dosya mevcut
cmd_general.cpp
ekletmek istediği kod bloğu:
# Add
#ifdef ENABLE_TRACK_WINDOW
#include "new_mob_timer.h"
ACMD(do_track_window)
{
std::vector<std::string> vecArgs;
split_argument(argument, vecArgs);
if (vecArgs.size() < 2) { return; }
else if (vecArgs[1] == "load")
{
if (ch->GetProtectTime("track_dungeon")==1)
return;
ch->GetDungeonCooldown(WORD_MAX);
for (BYTE i = 2; i < vecArgs.size(); ++i)
{
WORD globalBossID;
if (!str_to_number(globalBossID, vecArgs[i].c_str()))
continue;
CNewMobTimer::Instance().GetTrackData(ch, globalBossID);
}
ch->SetProtectTime("track_dungeon", 1);
}
else if (vecArgs[1] == "reenter")
{
if (!ch->IsGM())
return;
if (vecArgs.size() < 4) { return; }
WORD testVnum;
if (!str_to_number(testVnum, vecArgs[2].c_str()))
return;
int testTime;
if (!str_to_number(testTime, vecArgs[3].c_str()))
return;
ch->GetDungeonCooldownTest(testVnum, testTime, false);
}
else if (vecArgs[1] == "cooldown")
{
if (!ch->IsGM())
return;
if (vecArgs.size() < 4) { return; }
WORD testVnum;
if (!str_to_number(testVnum, vecArgs[2].c_str()))
return;
int testTime;
if (!str_to_number(testTime, vecArgs[3].c_str()))
return;
ch->GetDungeonCooldownTest(testVnum, testTime, true);
}
else if (vecArgs[1] == "teleport")
{
if (vecArgs.size() < 3) { return; }
WORD mobIndex;
if (!str_to_number(mobIndex, vecArgs[2].c_str()))
return;
std::map<WORD, std::pair<std::pair<long, long>,std::pair<WORD, BYTE>>> m_TeleportData = {
//{mobindex - {{X, Y}, {PORT, MINLVL}}},
{6091, { {5984, 7073}, {0, 0} }},
};
const auto it = m_TeleportData.find(mobIndex);
if (it != m_TeleportData.end())
{
if (ch->GetLevel() < it->second.second.second)
{
ch->ChatPacket(CHAT_TYPE_INFO, "You don't has enought level for teleport!");
return;
}
ch->WarpSet(it->second.first.first * 100, it->second.first.second * 100, it->second.second.first);
}
}
}
#endif
benim eklediğim dosya:
#include "unique_item.h"
#include "threeway_war.h"
#include "log.h"
#include "../../common/VnumHelper.h"
extern int g_server_id;
extern int g_nPortalLimitTime;
#ifdef ENABLE_TRACK_WINDOW
#include "new_mob_timer.h"
ACMD(do_track_window)
{
std::vector<std::string> vecArgs;
split_argument(argument, vecArgs);
if (vecArgs.size() < 2) { return; }
else if (vecArgs[1] == "load")
{
if (ch->GetProtectTime("track_dungeon")==1)
return;
ch->GetDungeonCooldown(WORD_MAX);
for (BYTE i = 2; i < vecArgs.size(); ++i)
{
WORD globalBossID;
if (!str_to_number(globalBossID, vecArgs[i].c_str()))
continue;
CNewMobTimer::Instance().GetTrackData(ch, globalBossID);
}
ch->SetProtectTime("track_dungeon", 1);
}
else if (vecArgs[1] == "reenter")
{
if (!ch->IsGM())
return;
if (vecArgs.size() < 4) { return; }
WORD testVnum;
if (!str_to_number(testVnum, vecArgs[2].c_str()))
return;
int testTime;
if (!str_to_number(testTime, vecArgs[3].c_str()))
return;
ch->GetDungeonCooldownTest(testVnum, testTime, false);
}
else if (vecArgs[1] == "cooldown")
{
if (!ch->IsGM())
return;
if (vecArgs.size() < 4) { return; }
WORD testVnum;
if (!str_to_number(testVnum, vecArgs[2].c_str()))
return;
int testTime;
if (!str_to_number(testTime, vecArgs[3].c_str()))
return;
ch->GetDungeonCooldownTest(testVnum, testTime, true);
}
else if (vecArgs[1] == "teleport")
{
if (vecArgs.size() < 3) { return; }
WORD mobIndex;
if (!str_to_number(mobIndex, vecArgs[2].c_str()))
return;
std::map<WORD, std::pair<std::pair<long, long>,std::pair<WORD, BYTE>>> m_TeleportData = {
//{mobindex - {{X, Y}, {PORT, MINLVL}}},
{6091, { {5984, 7073}, {0, 0} }},
};
const auto it = m_TeleportData.find(mobIndex);
if (it != m_TeleportData.end())
{
if (ch->GetLevel() < it->second.second.second)
{
ch->ChatPacket(CHAT_TYPE_INFO, "You don't has enought level for teleport!");
return;
}
ch->WarpSet(it->second.first.first * 100, it->second.first.second * 100, it->second.second.first);
}
}
}
#endif
ACMD(do_user_horse_ride)
{
if (ch->IsObserverMode())
return;
if (ch->IsDead() || ch->IsStun())
return;
if (ch->IsHorseRiding() == false)
{
// 말이 아닌 다른탈것을 타고있다.
if (ch->GetMountVnum())
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("이미 탈것을 이용중입니다."));
return;
}
if (ch->GetQuestFlag("HORSE.CHECKER") && get_global_time() < ch->GetQuestFlag("HORSE.CHECKER"))
{
ch->ChatPacket(CHAT_TYPE_INFO, "Bunu yapabilmek i?n %d saniye bekleyin.", (ch->GetQuestFlag("HORSE.CHECKER") - get_global_time()) % 180);
return;
}
if (ch->GetHorse() == NULL)
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("말을 먼저 소환해주세요."));
return;
}
ch->SetQuestFlag("HORSE.CHECKER", get_global_time() + 3);
ch->StartRiding();
}
else
{
ch->StopRiding();
}
}
Not : benim eklemeye çalıştıuğım dosya bu kadar değil daha fazla ama buraya sığmadığı için böyle eklediğim yeri sadece koydum altta dosya mevcut