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,