Best Studio 1
Best Studio
TuZaKK 1
TuZaKK
Mt2Hizmet 1
Mt2Hizmet
Agora Metin2 1
Agora Metin2
Bvural41 1
Bvural41
kaptanmikro1 1
kaptanmikro1
R 1
Roksam
[DEV]AB 1
[DEV]AB
Sevdamsın 1
Sevdamsın
farkmt2official 1
farkmt2official
emirhanHCL 1
emirhanHCL
Scarlet 1
Scarlet
Hikaye Ekle

Cevaplandı sistem eklerken hata

  • Konuyu başlatan Konuyu başlatan zalo25252
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 14
  • Görüntüleme Görüntüleme 1K

Türkiye'de ilk Mobil & PC Aynı Anda Metin2 Oyna. Triarchonline kalıcı ve uzun ömürlü yapısı ile 24 Temmuz'da açılıyor. | 1-99 Mobil Metin2 Triarch HEMEN TIKLA!

elimde boss takip sistemi mevcut fakat game build ederken hata veriyor hatanın neyden kaynaklı oldugunu çözemedim yardımcı olurmusunuz rica etsem.
#ifndef __METIN2_SERVER_QUEST_MANAGER__
#define __METIN2_SERVER_QUEST_MANAGER__

#include <boost/unordered_map.hpp>

#include "questnpc.h"

class ITEM;
class CHARACTER;
class CDungeon;

namespace quest
{
using namespace std;

bool IsScriptTrue(const char* code, int size);
string ScriptToString(const string& str);

class CQuestManager : public singleton<CQuestManager>
{
public:
enum
{
QUEST_SKIN_NOWINDOW,
QUEST_SKIN_NORMAL,
//QUEST_SKIN_CINEMATIC,
QUEST_SKIN_SCROLL=4,
QUEST_SKIN_CINEMATIC=5,
QUEST_SKIN_COUNT
};

typedef map<string, int> TEventNameMap;
typedef map<unsigned int, PC> PCMap;

public:
CQuestManager();
virtual ~CQuestManager();

bool Initialize();
void Destroy();

bool InitializeLua();
lua_State * GetLuaState() { return L; }
void AddLuaFunctionTable(const char * c_pszName, luaL_reg * preg);

TEventNameMap m_mapEventName;

QuestState OpenState(const string& quest_name, int state_index);
void CloseState(QuestState& qs);
bool RunState(QuestState& qs);

PC * GetPC(unsigned int pc);
PC * GetPCForce(unsigned int pc); // ÇöÀç PC¸¦ ¹Ù²ÙÁö ¾Ê°í PC Æ÷ÀÎÅ͸¦ °¡Á®¿Â´Ù.

unsigned int GetCurrentNPCRace();
const string & GetCurrentQuestName();
unsigned int FindNPCIDByName(const string& name);

//void SetCurrentNPCCharacterPtr(LPCHARACTER ch) { m_pkCurrentNPC = ch; }
LPCHARACTER GetCurrentNPCCharacterPtr();

void SetCurrentEventIndex(int index) { m_iRunningEventIndex = index; }

bool UseItem(unsigned int pc, LPITEM item, bool bReceiveAll);
bool PickupItem(unsigned int pc, LPITEM item);
bool SIGUse(unsigned int pc, DWORD sig_vnum, LPITEM item, bool bReceiveAll);
bool TakeItem(unsigned int pc, unsigned int npc, LPITEM item);
LPITEM GetCurrentItem();
void ClearCurrentItem();
void SetCurrentItem(LPITEM item);
void AddServerTimer(const string& name, DWORD arg, LPEVENT event);
void ClearServerTimer(const string& name, DWORD arg);
void ClearServerTimerNotCancel(const string& name, DWORD arg);
void CancelServerTimers(DWORD arg);

void SetServerTimerArg(DWORD dwArg);
DWORD GetServerTimerArg();

// event over state and stae
bool ServerTimer(unsigned int npc, unsigned int arg);

void Login(unsigned int pc, const char * c_pszQuestName = NULL);
void Logout(unsigned int pc);
bool Timer(unsigned int pc, unsigned int npc);
bool Click(unsigned int pc, LPCHARACTER pkNPC);
void Kill(unsigned int pc, unsigned int npc);
void LevelUp(unsigned int pc);
void AttrIn(unsigned int pc, LPCHARACTER ch, int attr);
void AttrOut(unsigned int pc, LPCHARACTER ch, int attr);
bool Target(unsigned int pc, DWORD dwQuestIndex, const char * c_pszTargetName, const char * c_pszVerb);
bool GiveItemToPC(unsigned int pc, LPCHARACTER pkChr);
void Unmount(unsigned int pc);

void QuestButton(unsigned int pc, unsigned int quest_index);
void QuestInfo(unsigned int pc, unsigned int quest_index);

void EnterState(DWORD pc, DWORD quest_index, int state);
void LeaveState(DWORD pc, DWORD quest_index, int state);

void Letter(DWORD pc);
void Letter(DWORD pc, DWORD quest_index, int state);

void ItemInformer(unsigned int pc, unsigned int vnum); //µ¶Àϼ±¹°±â´É

//

bool CheckQuestLoaded(PC* pc) { return pc && pc->IsLoaded(); }

// event occurs in one state
void Select(unsigned int pc, unsigned int selection);
void Resume(unsigned int pc);
void Input(unsigned int pc, const char* msg);
void Confirm(unsigned int pc, EQuestConfirmType confirm, unsigned int pc2 = 0);
void SelectItem(unsigned int pc, unsigned int selection);

void LogoutPC(LPCHARACTER ch);
void DisconnectPC(LPCHARACTER ch);

QuestState * GetCurrentState() { return m_CurrentRunningState; }

void LoadStartQuest(const string& quest_name, unsigned int idx);
//bool CanStartQuest(const string& quest_name, const PC& pc);
bool CanStartQuest(unsigned int quest_index, const PC& pc);
bool CanStartQuest(unsigned int quest_index);
bool CanEndQuestAtState(const string& quest_name, const string& state_name);

LPCHARACTER GetCurrentCharacterPtr() { return m_pCurrentCharacter; }
LPCHARACTER GetCurrentPartyMember() { return m_pCurrentPartyMember; }
PC * GetCurrentPC() { return m_pCurrentPC; }

LPDUNGEON GetCurrentDungeon();
void SelectDungeon(LPDUNGEON pDungeon);

void ClearScript();
void SendScript();
void AddScript(const string& str);

void BuildStateIndexToName(const char* questName);

int GetQuestStateIndex(const string& quest_name, const string& state_name);
const char* GetQuestStateName(const string& quest_name, const int state_index);

void SetSkinStyle(int iStyle);

void SetNoSend() { m_bNoSend = true; }

unsigned int LoadTimerScript(const string& name);

//unsigned int RegisterQuestName(const string& name);

void RegisterQuest(const string & name, unsigned int idx);
unsigned int GetQuestIndexByName(const string& name);
const string& GetQuestNameByIndex(unsigned int idx);

void RequestSetEventFlag(const string& name, int value);
#ifdef ENABLE_BOSS_TRACKING
void RequestSetEventFlagBR(const string& name1, const string& name2, int value);
int GetEventFlagBR(const string& name1, const string& name2);
#endif
void SetEventFlag(const string& name, int value);
int GetEventFlag(const string& name);
int GetEventFlagBR(const string& name1, const string& name2);
void RequestSetEventFlagBR(const string& name1, const string& name2, int value);
void BroadcastEventFlagOnLogin(LPCHARACTER ch);

void SendEventFlagList(LPCHARACTER ch);

void Reload();

//void CreateAllButton(const string& quest_name, const string& button_name);
void SetError() { m_bError = true; }
void ClearError() { m_bError = false; }
bool IsError() { return m_bError; }
void WriteRunningStateToSyserr();
#ifndef __WIN32__
void QuestError(const char* func, int line, const char* fmt, ...);
#else
//void QuestError(const char* fmt, ...);
void QuestError(const char* func, int line, const char* fmt, ...);
#endif

void RegisterNPCVnum(DWORD dwVnum);

private:
LPDUNGEON m_pSelectedDungeon;
DWORD m_dwServerTimerArg;

map<pair<string, DWORD>, LPEVENT> m_mapServerTimer;

int m_iRunningEventIndex;

map<string, int> m_mapEventFlag;

void GotoSelectState(QuestState& qs);
void GotoPauseState(QuestState& qs);
void GotoEndState(QuestState& qs);
void GotoInputState(QuestState& qs);
void GotoConfirmState(QuestState& qs);
void GotoSelectItemState(QuestState& qs);

lua_State * L;

bool m_bNoSend;

set<unsigned int> m_registeredNPCVnum;
map<unsigned int, NPC> m_mapNPC;
map<string, unsigned int> m_mapNPCNameID;
map<string, unsigned int> m_mapTimerID;

QuestState * m_CurrentRunningState;

PCMap m_mapPC;

LPCHARACTER m_pCurrentCharacter;
LPCHARACTER m_pCurrentNPCCharacter;
LPCHARACTER m_pCurrentPartyMember;
PC* m_pCurrentPC;

string m_strScript;

int m_iCurrentSkin;

struct stringhash
{
size_t operator () (const string& str) const
{
const unsigned char * s = (const unsigned char*) str.c_str();
const unsigned char * end = s + str.size();
size_t h = 0;

while (s < end)
{
h *= 16777619;
h ^= (unsigned char) *(unsigned char *) (s++);
}

return h;

}
};

typedef boost::unordered_map<string, int, stringhash> THashMapQuestName;
typedef boost::unordered_map<unsigned int, vector<char> > THashMapQuestStartScript;

THashMapQuestName m_hmQuestName;
THashMapQuestStartScript m_hmQuestStartScript;
map<unsigned int, string> m_mapQuestNameByIndex;

bool m_bError;

public:
static bool ExecuteQuestScript(PC& pc, const string& quest_name, const int state, const char* code, const int code_size, vector<AArgScript*>* pChatScripts = NULL, bool bUseCache = true);
static bool ExecuteQuestScript(PC& pc, DWORD quest_index, const int state, const char* code, const int code_size, vector<AArgScript*>* pChatScripts = NULL, bool bUseCache = true);


// begin_other_pc_blcok, end_other_pc_blockÀ» À§ÇÑ °´Ã¼µé.
public:
void BeginOtherPCBlock(DWORD pid);
void EndOtherPCBlock();
bool IsInOtherPCBlock();
PC* GetOtherPCBlockRootPC();
private:
PC* m_pOtherPCBlockRootPC;
std::vector <DWORD> m_vecPCStack;
};
};

#endif


Ekran Alıntısı.PNG
 
elimde boss takip sistemi mevcut fakat game build ederken hata veriyor hatanın neyden kaynaklı oldugunu çözemedim yardımcı olurmusunuz rica etsem.
#ifndef __METIN2_SERVER_QUEST_MANAGER__
#define __METIN2_SERVER_QUEST_MANAGER__

#include <boost/unordered_map.hpp>

#include "questnpc.h"

class ITEM;
class CHARACTER;
class CDungeon;

namespace quest
{
using namespace std;

bool IsScriptTrue(const char* code, int size);
string ScriptToString(const string& str);

class CQuestManager : public singleton<CQuestManager>
{
public:
enum
{
QUEST_SKIN_NOWINDOW,
QUEST_SKIN_NORMAL,
//QUEST_SKIN_CINEMATIC,
QUEST_SKIN_SCROLL=4,
QUEST_SKIN_CINEMATIC=5,
QUEST_SKIN_COUNT
};

typedef map<string, int> TEventNameMap;
typedef map<unsigned int, PC> PCMap;

public:
CQuestManager();
virtual ~CQuestManager();

bool Initialize();
void Destroy();

bool InitializeLua();
lua_State * GetLuaState() { return L; }
void AddLuaFunctionTable(const char * c_pszName, luaL_reg * preg);

TEventNameMap m_mapEventName;

QuestState OpenState(const string& quest_name, int state_index);
void CloseState(QuestState& qs);
bool RunState(QuestState& qs);

PC * GetPC(unsigned int pc);
PC * GetPCForce(unsigned int pc); // ÇöÀç PC¸¦ ¹Ù²ÙÁö ¾Ê°í PC Æ÷ÀÎÅ͸¦ °¡Á®¿Â´Ù.

unsigned int GetCurrentNPCRace();
const string & GetCurrentQuestName();
unsigned int FindNPCIDByName(const string& name);

//void SetCurrentNPCCharacterPtr(LPCHARACTER ch) { m_pkCurrentNPC = ch; }
LPCHARACTER GetCurrentNPCCharacterPtr();

void SetCurrentEventIndex(int index) { m_iRunningEventIndex = index; }

bool UseItem(unsigned int pc, LPITEM item, bool bReceiveAll);
bool PickupItem(unsigned int pc, LPITEM item);
bool SIGUse(unsigned int pc, DWORD sig_vnum, LPITEM item, bool bReceiveAll);
bool TakeItem(unsigned int pc, unsigned int npc, LPITEM item);
LPITEM GetCurrentItem();
void ClearCurrentItem();
void SetCurrentItem(LPITEM item);
void AddServerTimer(const string& name, DWORD arg, LPEVENT event);
void ClearServerTimer(const string& name, DWORD arg);
void ClearServerTimerNotCancel(const string& name, DWORD arg);
void CancelServerTimers(DWORD arg);

void SetServerTimerArg(DWORD dwArg);
DWORD GetServerTimerArg();

// event over state and stae
bool ServerTimer(unsigned int npc, unsigned int arg);

void Login(unsigned int pc, const char * c_pszQuestName = NULL);
void Logout(unsigned int pc);
bool Timer(unsigned int pc, unsigned int npc);
bool Click(unsigned int pc, LPCHARACTER pkNPC);
void Kill(unsigned int pc, unsigned int npc);
void LevelUp(unsigned int pc);
void AttrIn(unsigned int pc, LPCHARACTER ch, int attr);
void AttrOut(unsigned int pc, LPCHARACTER ch, int attr);
bool Target(unsigned int pc, DWORD dwQuestIndex, const char * c_pszTargetName, const char * c_pszVerb);
bool GiveItemToPC(unsigned int pc, LPCHARACTER pkChr);
void Unmount(unsigned int pc);

void QuestButton(unsigned int pc, unsigned int quest_index);
void QuestInfo(unsigned int pc, unsigned int quest_index);

void EnterState(DWORD pc, DWORD quest_index, int state);
void LeaveState(DWORD pc, DWORD quest_index, int state);

void Letter(DWORD pc);
void Letter(DWORD pc, DWORD quest_index, int state);

void ItemInformer(unsigned int pc, unsigned int vnum); //µ¶Àϼ±¹°±â´É

//

bool CheckQuestLoaded(PC* pc) { return pc && pc->IsLoaded(); }

// event occurs in one state
void Select(unsigned int pc, unsigned int selection);
void Resume(unsigned int pc);
void Input(unsigned int pc, const char* msg);
void Confirm(unsigned int pc, EQuestConfirmType confirm, unsigned int pc2 = 0);
void SelectItem(unsigned int pc, unsigned int selection);

void LogoutPC(LPCHARACTER ch);
void DisconnectPC(LPCHARACTER ch);

QuestState * GetCurrentState() { return m_CurrentRunningState; }

void LoadStartQuest(const string& quest_name, unsigned int idx);
//bool CanStartQuest(const string& quest_name, const PC& pc);
bool CanStartQuest(unsigned int quest_index, const PC& pc);
bool CanStartQuest(unsigned int quest_index);
bool CanEndQuestAtState(const string& quest_name, const string& state_name);

LPCHARACTER GetCurrentCharacterPtr() { return m_pCurrentCharacter; }
LPCHARACTER GetCurrentPartyMember() { return m_pCurrentPartyMember; }
PC * GetCurrentPC() { return m_pCurrentPC; }

LPDUNGEON GetCurrentDungeon();
void SelectDungeon(LPDUNGEON pDungeon);

void ClearScript();
void SendScript();
void AddScript(const string& str);

void BuildStateIndexToName(const char* questName);

int GetQuestStateIndex(const string& quest_name, const string& state_name);
const char* GetQuestStateName(const string& quest_name, const int state_index);

void SetSkinStyle(int iStyle);

void SetNoSend() { m_bNoSend = true; }

unsigned int LoadTimerScript(const string& name);

//unsigned int RegisterQuestName(const string& name);

void RegisterQuest(const string & name, unsigned int idx);
unsigned int GetQuestIndexByName(const string& name);
const string& GetQuestNameByIndex(unsigned int idx);

void RequestSetEventFlag(const string& name, int value);
#ifdef ENABLE_BOSS_TRACKING
void RequestSetEventFlagBR(const string& name1, const string& name2, int value);
int GetEventFlagBR(const string& name1, const string& name2);
#endif
void SetEventFlag(const string& name, int value);
int GetEventFlag(const string& name);
int GetEventFlagBR(const string& name1, const string& name2);
void RequestSetEventFlagBR(const string& name1, const string& name2, int value);
void BroadcastEventFlagOnLogin(LPCHARACTER ch);

void SendEventFlagList(LPCHARACTER ch);

void Reload();

//void CreateAllButton(const string& quest_name, const string& button_name);
void SetError() { m_bError = true; }
void ClearError() { m_bError = false; }
bool IsError() { return m_bError; }
void WriteRunningStateToSyserr();
#ifndef __WIN32__
void QuestError(const char* func, int line, const char* fmt, ...);
#else
//void QuestError(const char* fmt, ...);
void QuestError(const char* func, int line, const char* fmt, ...);
#endif

void RegisterNPCVnum(DWORD dwVnum);

private:
LPDUNGEON m_pSelectedDungeon;
DWORD m_dwServerTimerArg;

map<pair<string, DWORD>, LPEVENT> m_mapServerTimer;

int m_iRunningEventIndex;

map<string, int> m_mapEventFlag;

void GotoSelectState(QuestState& qs);
void GotoPauseState(QuestState& qs);
void GotoEndState(QuestState& qs);
void GotoInputState(QuestState& qs);
void GotoConfirmState(QuestState& qs);
void GotoSelectItemState(QuestState& qs);

lua_State * L;

bool m_bNoSend;

set<unsigned int> m_registeredNPCVnum;
map<unsigned int, NPC> m_mapNPC;
map<string, unsigned int> m_mapNPCNameID;
map<string, unsigned int> m_mapTimerID;

QuestState * m_CurrentRunningState;

PCMap m_mapPC;

LPCHARACTER m_pCurrentCharacter;
LPCHARACTER m_pCurrentNPCCharacter;
LPCHARACTER m_pCurrentPartyMember;
PC* m_pCurrentPC;

string m_strScript;

int m_iCurrentSkin;

struct stringhash
{
size_t operator () (const string& str) const
{
const unsigned char * s = (const unsigned char*) str.c_str();
const unsigned char * end = s + str.size();
size_t h = 0;

while (s < end)
{
h *= 16777619;
h ^= (unsigned char) *(unsigned char *) (s++);
}

return h;

}
};

typedef boost::unordered_map<string, int, stringhash> THashMapQuestName;
typedef boost::unordered_map<unsigned int, vector<char> > THashMapQuestStartScript;

THashMapQuestName m_hmQuestName;
THashMapQuestStartScript m_hmQuestStartScript;
map<unsigned int, string> m_mapQuestNameByIndex;

bool m_bError;

public:
static bool ExecuteQuestScript(PC& pc, const string& quest_name, const int state, const char* code, const int code_size, vector<AArgScript*>* pChatScripts = NULL, bool bUseCache = true);
static bool ExecuteQuestScript(PC& pc, DWORD quest_index, const int state, const char* code, const int code_size, vector<AArgScript*>* pChatScripts = NULL, bool bUseCache = true);


// begin_other_pc_blcok, end_other_pc_blockÀ» À§ÇÑ °´Ã¼µé.
public:
void BeginOtherPCBlock(DWORD pid);
void EndOtherPCBlock();
bool IsInOtherPCBlock();
PC* GetOtherPCBlockRootPC();
private:
PC* m_pOtherPCBlockRootPC;
std::vector <DWORD> m_vecPCStack;
};
};

#endif
Ekli dosyayı görüntüle 24147

Quest Manager 162.kod blogunda 158. kod blogunda, 163 ve 157.kod bloklarında hata yapmıssınız sistem eklerken, tekrar kontrol ediniz.
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst