src/map/pc.c | 2 +- src/map/script.c | 15 ++++++++++----- src/map/script.h | 2 +- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/map/pc.c b/src/map/pc.c index 4d4f415..8750568 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -5452,7 +5452,7 @@ int pc_setpos(struct map_session_data* sd, unsigned short map_index, int x, int for( i = 0; i < sd->queues_count; i++ ) { struct hQueue *queue; if( (queue = script->queue(sd->queues[i])) && queue->onMapChange[0] != '\0' ) { - pc->setregstr(sd, script->add_str("QMapChangeTo"), map->list[m].name); + pc->setregstr(sd, script->add_str("@QMapChangeTo$"), map->list[m].name); npc->event(sd, queue->onMapChange, 0); } } diff --git a/src/map/script.c b/src/map/script.c index 54d8d33..b913702 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -18923,6 +18923,9 @@ bool script_hqueue_remove(int idx, int var) { } } + else + return true; + } return false; } @@ -18959,7 +18962,7 @@ BUILDIN(queueopt) { else script->hq[idx].onDeath[0] = '\0'; break; - case HQO_onLogOut: + case HQO_OnLogOut: if( script_hasdata(st, 4) ) safestrncpy(script->hq[idx].onLogOut, script_getstr(st, 4), EVENT_NAME_LENGTH); else @@ -18992,7 +18995,7 @@ bool script_hqueue_del(int idx) if (script->hq[idx].item[i] >= START_ACCOUNT_NUM && (sd = map->id2sd(script->hq[idx].item[i])) != NULL) { int j; for(j = 0; j < sd->queues_count; j++) { - if( sd->queues[j] == script->hq[idx].item[i] ) { + if (sd->queues[j] == idx) { break; } } @@ -19051,7 +19054,7 @@ BUILDIN(queueiterator) { int qid = script_getnum(st, 2); struct hQueue *queue = NULL; int idx = script->hqis; - int i; + int i, count = 0; if( qid < 0 || qid >= script->hqs || script->hq[qid].size == -1 || !(queue = script->queue(qid)) ) { ShowWarning("queueiterator: invalid queue id %d\n",qid); @@ -19078,9 +19081,11 @@ BUILDIN(queueiterator) { RECREATE(script->hqi[ idx ].item, int, queue->size); - memcpy(script->hqi[idx].item, queue->item, sizeof(int)*queue->size); + for (i = 0; i < queue->size; i++) + if (queue->item[i] != -1) + script->hqi[idx].item[count++] = queue->item[i]; - script->hqi[ idx ].items = queue->size; + script->hqi[ idx ].items = count; script->hqi[ idx ].pos = 0; script_pushint(st,idx); diff --git a/src/map/script.h b/src/map/script.h index ff660de..cd02f72 100644 --- a/src/map/script.h +++ b/src/map/script.h @@ -225,7 +225,7 @@ typedef enum c_op { enum hQueueOpt { HQO_NONE, - HQO_onLogOut, + HQO_OnLogOut, HQO_OnDeath, HQO_OnMapChange, HQO_MAX,