Rewrote Quest Log system.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13959 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
105
src/map/script.c
105
src/map/script.c
@@ -13426,81 +13426,53 @@ BUILDIN_FUNC(readbook)
|
||||
Questlog script commands
|
||||
*******************/
|
||||
|
||||
BUILDIN_FUNC(getquest)
|
||||
BUILDIN_FUNC(setquest)
|
||||
{
|
||||
|
||||
TBL_PC * sd = script_rid2sd(st);
|
||||
struct quest qd;
|
||||
int i, count = 0;
|
||||
char * temp;
|
||||
|
||||
memset(&qd, 0, sizeof(struct quest));
|
||||
quest_add(sd, script_getnum(st, 2));
|
||||
return 0;
|
||||
}
|
||||
|
||||
qd.quest_id = script_getnum(st, 2);
|
||||
qd.time = script_getnum(st, 3);
|
||||
qd.state = Q_ACTIVE;
|
||||
|
||||
for(i=0; i<(script_lastdata(st)-3) && (i/2) < MAX_QUEST_OBJECTIVES; i+=2)
|
||||
BUILDIN_FUNC(erasequest)
|
||||
{
|
||||
TBL_PC * sd = script_rid2sd(st);
|
||||
|
||||
quest_delete(sd, script_getnum(st, 2));
|
||||
return 0;
|
||||
}
|
||||
|
||||
BUILDIN_FUNC(completequest)
|
||||
{
|
||||
TBL_PC * sd = script_rid2sd(st);
|
||||
|
||||
quest_update_status(sd, script_getnum(st, 2), Q_COMPLETE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
BUILDIN_FUNC(changequest)
|
||||
{
|
||||
TBL_PC * sd = script_rid2sd(st);
|
||||
int q1 = script_getnum(st, 2), q2 = script_getnum(st, 3);
|
||||
|
||||
if( quest_check_quest(sd, q1, HAVEQUEST) == Q_ACTIVE && quest_add(sd, q2) >= 0 )
|
||||
{
|
||||
temp = (char*)script_getstr(st, i+4);
|
||||
memcpy(&qd.objectives[i/2].name, temp, NAME_LENGTH);
|
||||
temp = NULL;
|
||||
qd.objectives[i/2].count = script_getnum(st, i+5);
|
||||
count++;
|
||||
quest_update_status(sd, q1, Q_COMPLETE);
|
||||
intif_quest_save(sd->status.char_id, &sd->quest_log[sd->avail_quests]);
|
||||
}
|
||||
|
||||
qd.num_objectives = count;
|
||||
|
||||
quest_add(sd, &qd);
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
BUILDIN_FUNC(deletequest)
|
||||
{
|
||||
|
||||
TBL_PC * sd = script_rid2sd(st);
|
||||
int qid = script_getnum(st, 2);
|
||||
|
||||
quest_delete(sd, qid);
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
BUILDIN_FUNC(setquestobjective)
|
||||
{
|
||||
|
||||
TBL_PC * sd = script_rid2sd(st);
|
||||
int qid = script_getnum(st, 2);
|
||||
int num = script_getnum(st, 3);
|
||||
const char * str = script_getstr(st, 4);
|
||||
int count = script_getnum(st, 5);
|
||||
|
||||
quest_update_objective(sd, qid, num, str, count);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
BUILDIN_FUNC(hasquest)
|
||||
BUILDIN_FUNC(checkquest)
|
||||
{
|
||||
|
||||
TBL_PC * sd = script_rid2sd(st);
|
||||
int qid = script_getnum(st, 2);
|
||||
quest_check_type type = HAVEQUEST;
|
||||
|
||||
script_pushint(st, quest_has_quest(sd, qid)?1:0);
|
||||
if( script_hasdata(st, 3) )
|
||||
type = (quest_check_type)script_getnum(st, 3);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
BUILDIN_FUNC(setqueststatus)
|
||||
{
|
||||
|
||||
TBL_PC * sd = script_rid2sd(st);
|
||||
int qid = script_getnum(st, 2);
|
||||
bool active = script_getnum(st, 3)?true:false;
|
||||
|
||||
quest_update_status(sd, qid, active);
|
||||
script_pushint(st, quest_check_quest(sd, script_getnum(st, 2), type));
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -14472,11 +14444,6 @@ struct script_function buildin_func[] = {
|
||||
BUILDIN_DEF(openauction,""),
|
||||
BUILDIN_DEF(checkcell,"siii"),
|
||||
BUILDIN_DEF(setcell,"siiiiii"),
|
||||
BUILDIN_DEF(getquest, "ii*"),
|
||||
BUILDIN_DEF(deletequest, "i"),
|
||||
BUILDIN_DEF(setquestobjective, "iisi"),
|
||||
BUILDIN_DEF(setqueststatus, "ii"),
|
||||
BUILDIN_DEF(hasquest, "i"),
|
||||
BUILDIN_DEF(setwall,"siiiiis"),
|
||||
BUILDIN_DEF(delwall,"s"),
|
||||
BUILDIN_DEF(mercenary_create,"ii"),
|
||||
@@ -14519,5 +14486,11 @@ struct script_function buildin_func[] = {
|
||||
BUILDIN_DEF(instance_id,"?"),
|
||||
BUILDIN_DEF(instance_warpall,"sii"),
|
||||
BUILDIN_DEF(instance_set_timeout,"ii?"),
|
||||
//Quest Log System [Inkfish]
|
||||
BUILDIN_DEF(setquest, "i"),
|
||||
BUILDIN_DEF(erasequest, "i"),
|
||||
BUILDIN_DEF(completequest, "i"),
|
||||
BUILDIN_DEF(checkquest, "i*"),
|
||||
BUILDIN_DEF(changequest, "ii"),
|
||||
{NULL,NULL,NULL},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user