(Solved) help with quest progress and Trigger Server/System
im having trouble with the quest progress, i can send the confirm step packet but it always completes the quests, there is no progress, no monsters kill count or trigger objects count,
im having trouble understanding the trigger system
for example:
so what are those fields in this struct, and where do i get their values? i dont see them in any table or packet structure :dontknow:
comments are much appreciated.
note: as you can see, im working in the c++ source , hopefully more people can help now.
Update:
i solved the problem, my solution was to check for packet->tcNextId == 3, then send a packet called GU_QUEST_SVREVT_START_NFY with the following fields:
taId: this would be packet->tcNextId (i think that this field stands for TriggerActionID, which im not totally sure of what its function is just yet)
tcId = packet->tcCurId
tid = packet->tId
the way i built the packet was as follows:
i beleive that the next step is to get the quest item/object and update the client by sending a GU_QUEST_SVREVT_UPDATE_NFY packet.
i know that this thread is mostly dead i would say, but i refuse to keep knowledge to myself.
im not the best, and so is my code, but i hope this would be helpful in any shape or form to someone in need of it.
please feel free to correct me if im wrong, or ask questions.
im having trouble with the quest progress, i can send the confirm step packet but it always completes the quests, there is no progress, no monsters kill count or trigger objects count,
im having trouble understanding the trigger system
for example:
Code:
struct sPROGRESS_QUEST_INFO
{
enum { ePROGRESS_QUEST_INFO_MAX_SIZE = 256 };
enum { eCUR_VERSION = 0 };
sPROGRESS_QUEST_INFO( void )
{
byVer = eCUR_VERSION;
tId = NTL_TS_T_ID_INVALID;
memset( &uData.sQInfoV0, 0xff, sizeof( uData.sQInfoV0 ) );
uData.sQInfoV0.wQState = 0;
uData.sQInfoV0.tcQuestInfo = NTL_TS_TC_ID_INVALID;
uData.sQInfoV0.taQuestInfo = NTL_TS_TA_ID_INVALID;
}
unsigned char byVer; // 버전
NTL_TS_T_ID tId; // 퀘스트 아이디
union uDATA
{
struct sEXTENDED_POSSIBLE_V0
{
unsigned short wQState; // 퀘스트 상태
sMAIN_TSP sMainTSP; // 퀘스트 진행 포인터
sEXCEPT_TIMER_SLOT sETSlot; // 예외 타이머의 저장 슬롯
sSTORAGE_SLOT_MEMORY sSSM; // 저장 슬롯 메모리
sSTOC_EVT_DB_DATA sSToCEvtData; // 서버 이벤트 데이터
NTL_TS_TG_ID tgExcCGroup; // 실행할 클라이언트 그룹
NTL_TS_TC_ID tcQuestInfo; // 퀘스트 정보 컨테이너 아이디
NTL_TS_TA_ID taQuestInfo; // 퀘스트 정보 액션 아이디
};
sEXTENDED_POSSIBLE_V0 sQInfoV0;
};
uDATA uData;
};
comments are much appreciated.
note: as you can see, im working in the c++ source , hopefully more people can help now.
Update:
i solved the problem, my solution was to check for packet->tcNextId == 3, then send a packet called GU_QUEST_SVREVT_START_NFY with the following fields:
taId: this would be packet->tcNextId (i think that this field stands for TriggerActionID, which im not totally sure of what its function is just yet)
tcId = packet->tcCurId
tid = packet->tId
the way i built the packet was as follows:
Code:
//in the GU_TS_CONFIRM_STEP_RES function, build the GU_TS_CONFIRM_STEP_RES packet normally but dont send it yet
//then we do this
if(packet->tcNext == 3) //if the quest has an event, or whatever
{
//build the GU_QUEST_SVREVT_START_NFY packet normally, get all fields from the received packet
//send the GU_QUEST_SVREVT_START_NFY packet
}
//send the GU_TS_CONFIRM_STEP_RES packet here
i beleive that the next step is to get the quest item/object and update the client by sending a GU_QUEST_SVREVT_UPDATE_NFY packet.
i know that this thread is mostly dead i would say, but i refuse to keep knowledge to myself.
im not the best, and so is my code, but i hope this would be helpful in any shape or form to someone in need of it.
please feel free to correct me if im wrong, or ask questions.
Last edited: