|
@@ -789,8 +789,9 @@ int atcommand_who(const int fd, struct map_session_data* sd, const char* command
|
|
|
*------------------------------------------*/
|
|
|
int atcommand_whomap3(const int fd, struct map_session_data* sd, const char* command, const char* message)
|
|
|
{
|
|
|
- struct map_session_data *pl_sd, **pl_allsd;
|
|
|
- int i, count, users;
|
|
|
+ struct map_session_data *pl_sd;
|
|
|
+ struct s_mapiterator* iter;
|
|
|
+ int count;
|
|
|
int pl_GM_level, GM_level;
|
|
|
int map_id;
|
|
|
char map_name[MAP_NAME_LENGTH_EXT];
|
|
@@ -808,22 +809,24 @@ int atcommand_whomap3(const int fd, struct map_session_data* sd, const char* com
|
|
|
|
|
|
count = 0;
|
|
|
GM_level = pc_isGM(sd);
|
|
|
- pl_allsd = map_getallusers(&users);
|
|
|
- for (i = 0; i < users; i++) {
|
|
|
- if ((pl_sd = pl_allsd[i])) {
|
|
|
- pl_GM_level = pc_isGM(pl_sd);
|
|
|
- if (!((battle_config.hide_GM_session || (pl_sd->sc.option & OPTION_INVISIBLE)) && (pl_GM_level > GM_level))) { // you can look only lower or same level
|
|
|
- if (pl_sd->bl.m == map_id) {
|
|
|
- if (pl_GM_level > 0)
|
|
|
- sprintf(atcmd_output, "Name: %s (GM:%d) | Location: %s %d %d", pl_sd->status.name, pl_GM_level, mapindex_id2name(pl_sd->mapindex), pl_sd->bl.x, pl_sd->bl.y);
|
|
|
- else
|
|
|
- sprintf(atcmd_output, "Name: %s | Location: %s %d %d", pl_sd->status.name, mapindex_id2name(pl_sd->mapindex), pl_sd->bl.x, pl_sd->bl.y);
|
|
|
- clif_displaymessage(fd, atcmd_output);
|
|
|
- count++;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+
|
|
|
+ iter = mapit_getallusers();
|
|
|
+ for( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter) )
|
|
|
+ {
|
|
|
+ pl_GM_level = pc_isGM(pl_sd);
|
|
|
+ if( pl_sd->bl.m != map_id )
|
|
|
+ continue;
|
|
|
+ if( (battle_config.hide_GM_session || (pl_sd->sc.option & OPTION_INVISIBLE)) && (pl_GM_level > GM_level) )
|
|
|
+ continue;
|
|
|
+
|
|
|
+ if (pl_GM_level > 0)
|
|
|
+ sprintf(atcmd_output, "Name: %s (GM:%d) | Location: %s %d %d", pl_sd->status.name, pl_GM_level, mapindex_id2name(pl_sd->mapindex), pl_sd->bl.x, pl_sd->bl.y);
|
|
|
+ else
|
|
|
+ sprintf(atcmd_output, "Name: %s | Location: %s %d %d", pl_sd->status.name, mapindex_id2name(pl_sd->mapindex), pl_sd->bl.x, pl_sd->bl.y);
|
|
|
+ clif_displaymessage(fd, atcmd_output);
|
|
|
+ count++;
|
|
|
}
|
|
|
+ mapit_free(iter);
|
|
|
|
|
|
if (count == 0)
|
|
|
sprintf(atcmd_output, msg_txt(54), map[map_id].name); // No player found in map '%s'.
|
|
@@ -842,8 +845,9 @@ int atcommand_whomap3(const int fd, struct map_session_data* sd, const char* com
|
|
|
*------------------------------------------*/
|
|
|
int atcommand_whomap2(const int fd, struct map_session_data* sd, const char* command, const char* message)
|
|
|
{
|
|
|
- struct map_session_data *pl_sd, **pl_allsd;
|
|
|
- int i, count, users;
|
|
|
+ struct map_session_data *pl_sd;
|
|
|
+ struct s_mapiterator* iter;
|
|
|
+ int count;
|
|
|
int pl_GM_level, GM_level;
|
|
|
int map_id = 0;
|
|
|
char map_name[MAP_NAME_LENGTH_EXT];
|
|
@@ -863,22 +867,24 @@ int atcommand_whomap2(const int fd, struct map_session_data* sd, const char* com
|
|
|
|
|
|
count = 0;
|
|
|
GM_level = pc_isGM(sd);
|
|
|
- pl_allsd = map_getallusers(&users);
|
|
|
- for (i = 0; i < users; i++) {
|
|
|
- if ((pl_sd = pl_allsd[i])) {
|
|
|
- pl_GM_level = pc_isGM(pl_sd);
|
|
|
- if (!((battle_config.hide_GM_session || (pl_sd->sc.option & OPTION_INVISIBLE)) && (pl_GM_level > GM_level))) { // you can look only lower or same level
|
|
|
- if (pl_sd->bl.m == map_id) {
|
|
|
- if (pl_GM_level > 0)
|
|
|
- sprintf(atcmd_output, "Name: %s (GM:%d) | BLvl: %d | Job: %s (Lvl: %d)", pl_sd->status.name, pl_GM_level, pl_sd->status.base_level, job_name(pl_sd->status.class_), pl_sd->status.job_level);
|
|
|
- else
|
|
|
- sprintf(atcmd_output, "Name: %s | BLvl: %d | Job: %s (Lvl: %d)", pl_sd->status.name, pl_sd->status.base_level, job_name(pl_sd->status.class_), pl_sd->status.job_level);
|
|
|
- clif_displaymessage(fd, atcmd_output);
|
|
|
- count++;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+
|
|
|
+ iter = mapit_getallusers();
|
|
|
+ for( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter) )
|
|
|
+ {
|
|
|
+ pl_GM_level = pc_isGM(pl_sd);
|
|
|
+ if( pl_sd->bl.m != map_id )
|
|
|
+ continue;
|
|
|
+ if( (battle_config.hide_GM_session || (pl_sd->sc.option & OPTION_INVISIBLE)) && (pl_GM_level > GM_level) )
|
|
|
+ continue;
|
|
|
+
|
|
|
+ if (pl_GM_level > 0)
|
|
|
+ sprintf(atcmd_output, "Name: %s (GM:%d) | BLvl: %d | Job: %s (Lvl: %d)", pl_sd->status.name, pl_GM_level, pl_sd->status.base_level, job_name(pl_sd->status.class_), pl_sd->status.job_level);
|
|
|
+ else
|
|
|
+ sprintf(atcmd_output, "Name: %s | BLvl: %d | Job: %s (Lvl: %d)", pl_sd->status.name, pl_sd->status.base_level, job_name(pl_sd->status.class_), pl_sd->status.job_level);
|
|
|
+ clif_displaymessage(fd, atcmd_output);
|
|
|
+ count++;
|
|
|
}
|
|
|
+ mapit_free(iter);
|
|
|
|
|
|
if (count == 0)
|
|
|
sprintf(atcmd_output, msg_txt(54), map[map_id].name); // No player found in map '%s'.
|
|
@@ -899,8 +905,9 @@ int atcommand_whomap(const int fd, struct map_session_data* sd, const char* comm
|
|
|
{
|
|
|
char temp0[100];
|
|
|
char temp1[100];
|
|
|
- struct map_session_data *pl_sd, **pl_allsd;
|
|
|
- int i, count, users;
|
|
|
+ struct map_session_data *pl_sd;
|
|
|
+ struct s_mapiterator* iter;
|
|
|
+ int count;
|
|
|
int pl_GM_level, GM_level;
|
|
|
int map_id = 0;
|
|
|
char map_name[MAP_NAME_LENGTH_EXT];
|
|
@@ -925,31 +932,31 @@ int atcommand_whomap(const int fd, struct map_session_data* sd, const char* comm
|
|
|
count = 0;
|
|
|
GM_level = pc_isGM(sd);
|
|
|
|
|
|
- pl_allsd = map_getallusers(&users);
|
|
|
- for (i = 0; i < users; i++) {
|
|
|
- if ((pl_sd = pl_allsd[i])) {
|
|
|
- pl_GM_level = pc_isGM(pl_sd);
|
|
|
- if (!((battle_config.hide_GM_session || (pl_sd->sc.option & OPTION_INVISIBLE)) && (pl_GM_level > GM_level))) { // you can look only lower or same level
|
|
|
- if (pl_sd->bl.m == map_id) {
|
|
|
- g = guild_search(pl_sd->status.guild_id);
|
|
|
- if (g == NULL)
|
|
|
- sprintf(temp1, "None");
|
|
|
- else
|
|
|
- sprintf(temp1, "%s", g->name);
|
|
|
- p = party_search(pl_sd->status.party_id);
|
|
|
- if (p == NULL)
|
|
|
- sprintf(temp0, "None");
|
|
|
- else
|
|
|
- sprintf(temp0, "%s", p->party.name);
|
|
|
- if (pl_GM_level > 0)
|
|
|
- sprintf(atcmd_output, "Name: %s (GM:%d) | Party: '%s' | Guild: '%s'", pl_sd->status.name, pl_GM_level, temp0, temp1);
|
|
|
- else
|
|
|
- sprintf(atcmd_output, "Name: %s | Party: '%s' | Guild: '%s'", pl_sd->status.name, temp0, temp1);
|
|
|
- clif_displaymessage(fd, atcmd_output);
|
|
|
- count++;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ iter = mapit_getallusers();
|
|
|
+ for( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter) )
|
|
|
+ {
|
|
|
+ pl_GM_level = pc_isGM(pl_sd);
|
|
|
+ if( pl_sd->bl.m != map_id )
|
|
|
+ continue;
|
|
|
+ if( (battle_config.hide_GM_session || (pl_sd->sc.option & OPTION_INVISIBLE)) && (pl_GM_level > GM_level) )
|
|
|
+ continue;
|
|
|
+
|
|
|
+ g = guild_search(pl_sd->status.guild_id);
|
|
|
+ if (g == NULL)
|
|
|
+ sprintf(temp1, "None");
|
|
|
+ else
|
|
|
+ sprintf(temp1, "%s", g->name);
|
|
|
+ p = party_search(pl_sd->status.party_id);
|
|
|
+ if (p == NULL)
|
|
|
+ sprintf(temp0, "None");
|
|
|
+ else
|
|
|
+ sprintf(temp0, "%s", p->party.name);
|
|
|
+ if (pl_GM_level > 0)
|
|
|
+ sprintf(atcmd_output, "Name: %s (GM:%d) | Party: '%s' | Guild: '%s'", pl_sd->status.name, pl_GM_level, temp0, temp1);
|
|
|
+ else
|
|
|
+ sprintf(atcmd_output, "Name: %s | Party: '%s' | Guild: '%s'", pl_sd->status.name, temp0, temp1);
|
|
|
+ clif_displaymessage(fd, atcmd_output);
|
|
|
+ count++;
|
|
|
}
|
|
|
|
|
|
if (count == 0)
|
|
@@ -969,8 +976,9 @@ int atcommand_whomap(const int fd, struct map_session_data* sd, const char* comm
|
|
|
*------------------------------------------*/
|
|
|
int atcommand_whogm(const int fd, struct map_session_data* sd, const char* command, const char* message)
|
|
|
{
|
|
|
- struct map_session_data *pl_sd, **pl_allsd;
|
|
|
- int i, j, count, users;
|
|
|
+ struct map_session_data* pl_sd;
|
|
|
+ struct s_mapiterator* iter;
|
|
|
+ int j, count;
|
|
|
int pl_GM_level, GM_level;
|
|
|
char match_text[200];
|
|
|
char player_name[NAME_LENGTH];
|
|
@@ -990,9 +998,10 @@ int atcommand_whogm(const int fd, struct map_session_data* sd, const char* comma
|
|
|
|
|
|
count = 0;
|
|
|
GM_level = pc_isGM(sd);
|
|
|
- pl_allsd = map_getallusers(&users);
|
|
|
- for (i = 0; i < users; i++) {
|
|
|
- pl_sd = pl_allsd[i];
|
|
|
+
|
|
|
+ iter = mapit_getallusers();
|
|
|
+ for( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter) )
|
|
|
+ {
|
|
|
pl_GM_level = pc_isGM(pl_sd);
|
|
|
if (!pl_GM_level)
|
|
|
continue;
|
|
@@ -1034,6 +1043,7 @@ int atcommand_whogm(const int fd, struct map_session_data* sd, const char* comma
|
|
|
clif_displaymessage(fd, atcmd_output);
|
|
|
count++;
|
|
|
}
|
|
|
+ mapit_free(iter);
|
|
|
|
|
|
if (count == 0)
|
|
|
clif_displaymessage(fd, msg_txt(150)); // No GM found.
|
|
@@ -1047,81 +1057,6 @@ int atcommand_whogm(const int fd, struct map_session_data* sd, const char* comma
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-int atcommand_whozeny(const int fd, struct map_session_data* sd, const char* command, const char* message)
|
|
|
-{
|
|
|
- struct map_session_data *pl_sd, **pl_allsd;
|
|
|
- int i, j, count,c, users;
|
|
|
- char match_text[100];
|
|
|
- char player_name[NAME_LENGTH];
|
|
|
- int *zeny;
|
|
|
- int *counted;
|
|
|
-
|
|
|
- nullpo_retr(-1, sd);
|
|
|
-
|
|
|
- memset(atcmd_output, '\0', sizeof(atcmd_output));
|
|
|
- memset(match_text, '\0', sizeof(match_text));
|
|
|
- memset(player_name, '\0', sizeof(player_name));
|
|
|
-
|
|
|
- if (sscanf(message, "%99[^\n]", match_text) < 1)
|
|
|
- strcpy(match_text, "");
|
|
|
- for (j = 0; match_text[j]; j++)
|
|
|
- match_text[j] = TOLOWER(match_text[j]);
|
|
|
-
|
|
|
- count = 0;
|
|
|
- pl_allsd = map_getallusers(&users);
|
|
|
- if (users < 1)
|
|
|
- {
|
|
|
- clif_displaymessage(fd, msg_txt(28)); // No player found.
|
|
|
- return 0;
|
|
|
- }
|
|
|
- zeny = (int *)aMallocA(users*sizeof(int));
|
|
|
- counted = (int *)aMallocA(users*sizeof(int));
|
|
|
- for (i = 0; i < users; i++) {
|
|
|
- if ((pl_sd = pl_allsd[i])) {
|
|
|
- memcpy(player_name, pl_sd->status.name, NAME_LENGTH);
|
|
|
- for (j = 0; player_name[j]; j++)
|
|
|
- player_name[j] = TOLOWER(player_name[j]);
|
|
|
- if (strstr(player_name, match_text) != NULL) { // search with no case sensitive
|
|
|
- zeny[count]=pl_sd->status.zeny;
|
|
|
- counted[i]=0;
|
|
|
- count++;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- qsort(zeny, count, sizeof(int), hightolow_compare);
|
|
|
- for (c = 0; c < count && c < 50; c++) {
|
|
|
- if(!zeny[c])
|
|
|
- continue;
|
|
|
- for (i = 0; i < users; i++) {
|
|
|
- if(!zeny[c])
|
|
|
- continue;
|
|
|
- if ((pl_sd = pl_allsd[i]) && counted[i]==0) {
|
|
|
- if(pl_sd->status.zeny==zeny[c]) {
|
|
|
- sprintf(atcmd_output, "Name: %s | Zeny: %d", pl_sd->status.name, pl_sd->status.zeny);
|
|
|
- clif_displaymessage(fd, atcmd_output);
|
|
|
- zeny[c]=0;
|
|
|
- counted[i]=1;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (count == 0)
|
|
|
- clif_displaymessage(fd, msg_txt(28)); // No player found.
|
|
|
- else if (count == 1)
|
|
|
- clif_displaymessage(fd, msg_txt(29)); // 1 player found.
|
|
|
- else {
|
|
|
- sprintf(atcmd_output, msg_txt(30), count); // %d players found.
|
|
|
- clif_displaymessage(fd, atcmd_output);
|
|
|
- }
|
|
|
-
|
|
|
- aFree(zeny);
|
|
|
- aFree(counted);
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
/*==========================================
|
|
|
*
|
|
|
*------------------------------------------*/
|
|
@@ -2017,11 +1952,6 @@ int atcommand_pvpoff(const int fd, struct map_session_data* sd, const char* comm
|
|
|
{
|
|
|
nullpo_retr(-1, sd);
|
|
|
|
|
|
- //if (battle_config.pk_mode) { //disable command if server is in PK mode [Valaris]
|
|
|
- // clif_displaymessage(fd, msg_txt(52)); // This option cannot be used in PK Mode.
|
|
|
- // return -1;
|
|
|
- //}
|
|
|
-
|
|
|
if (!map[sd->bl.m].flag.pvp) {
|
|
|
clif_displaymessage(fd, msg_txt(160)); // PvP is already Off.
|
|
|
return -1;
|
|
@@ -2040,40 +1970,39 @@ int atcommand_pvpoff(const int fd, struct map_session_data* sd, const char* comm
|
|
|
/*==========================================
|
|
|
*
|
|
|
*------------------------------------------*/
|
|
|
+static int atcommand_pvpon_sub(struct block_list *bl,va_list ap)
|
|
|
+{
|
|
|
+ TBL_PC* sd = (TBL_PC*)bl;
|
|
|
+ if (sd->pvp_timer == -1) {
|
|
|
+ sd->pvp_timer = add_timer(gettick() + 200, pc_calc_pvprank_timer, sd->bl.id, 0);
|
|
|
+ sd->pvp_rank = 0;
|
|
|
+ sd->pvp_lastusers = 0;
|
|
|
+ sd->pvp_point = 5;
|
|
|
+ sd->pvp_won = 0;
|
|
|
+ sd->pvp_lost = 0;
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
int atcommand_pvpon(const int fd, struct map_session_data* sd, const char* command, const char* message)
|
|
|
{
|
|
|
- struct map_session_data *pl_sd, **pl_allsd;
|
|
|
- int i, users;
|
|
|
nullpo_retr(-1, sd);
|
|
|
|
|
|
- //if (battle_config.pk_mode) { //disable command if server is in PK mode [Valaris]
|
|
|
- // clif_displaymessage(fd, msg_txt(52)); // This option cannot be used in PK Mode.
|
|
|
- // return -1;
|
|
|
- //}
|
|
|
-
|
|
|
- if (!map[sd->bl.m].flag.pvp) {
|
|
|
- map[sd->bl.m].flag.pvp = 1;
|
|
|
- if (!battle_config.pk_mode)
|
|
|
- {
|
|
|
- clif_send0199(sd->bl.m, 1);
|
|
|
- pl_allsd = map_getallusers(&users);
|
|
|
- for (i = 0; i < users; i++) {
|
|
|
- if ((pl_sd = pl_allsd[i]) && sd->bl.m == pl_sd->bl.m && pl_sd->pvp_timer == -1) {
|
|
|
- pl_sd->pvp_timer = add_timer(gettick() + 200, pc_calc_pvprank_timer, pl_sd->bl.id, 0);
|
|
|
- pl_sd->pvp_rank = 0;
|
|
|
- pl_sd->pvp_lastusers = 0;
|
|
|
- pl_sd->pvp_point = 5;
|
|
|
- pl_sd->pvp_won = 0;
|
|
|
- pl_sd->pvp_lost = 0;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- clif_displaymessage(fd, msg_txt(32)); // PvP: On.
|
|
|
- } else {
|
|
|
+ if (map[sd->bl.m].flag.pvp) {
|
|
|
clif_displaymessage(fd, msg_txt(161)); // PvP is already On.
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
+ map[sd->bl.m].flag.pvp = 1;
|
|
|
+
|
|
|
+ if (!battle_config.pk_mode)
|
|
|
+ {// display pvp circle and rank
|
|
|
+ clif_send0199(sd->bl.m, 1);
|
|
|
+ map_foreachinmap(atcommand_pvpon_sub,sd->bl.m, BL_PC);
|
|
|
+ }
|
|
|
+
|
|
|
+ clif_displaymessage(fd, msg_txt(32)); // PvP: On.
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -2083,15 +2012,16 @@ int atcommand_pvpon(const int fd, struct map_session_data* sd, const char* comma
|
|
|
int atcommand_gvgoff(const int fd, struct map_session_data* sd, const char* command, const char* message)
|
|
|
{
|
|
|
nullpo_retr(-1, sd);
|
|
|
- if (map[sd->bl.m].flag.gvg) {
|
|
|
- map[sd->bl.m].flag.gvg = 0;
|
|
|
- clif_send0199(sd->bl.m, 0);
|
|
|
- map_foreachinmap(atcommand_stopattack,sd->bl.m, BL_CHAR, 0);
|
|
|
- clif_displaymessage(fd, msg_txt(33)); // GvG: Off.
|
|
|
- } else {
|
|
|
+
|
|
|
+ if (!map[sd->bl.m].flag.gvg) {
|
|
|
clif_displaymessage(fd, msg_txt(162)); // GvG is already Off.
|
|
|
return -1;
|
|
|
}
|
|
|
+
|
|
|
+ map[sd->bl.m].flag.gvg = 0;
|
|
|
+ clif_send0199(sd->bl.m, 0);
|
|
|
+ map_foreachinmap(atcommand_stopattack,sd->bl.m, BL_CHAR, 0);
|
|
|
+ clif_displaymessage(fd, msg_txt(33)); // GvG: Off.
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
@@ -2102,14 +2032,15 @@ int atcommand_gvgoff(const int fd, struct map_session_data* sd, const char* comm
|
|
|
int atcommand_gvgon(const int fd, struct map_session_data* sd, const char* command, const char* message)
|
|
|
{
|
|
|
nullpo_retr(-1, sd);
|
|
|
- if (!map[sd->bl.m].flag.gvg) {
|
|
|
- map[sd->bl.m].flag.gvg = 1;
|
|
|
- clif_send0199(sd->bl.m, 3);
|
|
|
- clif_displaymessage(fd, msg_txt(34)); // GvG: On.
|
|
|
- } else {
|
|
|
+
|
|
|
+ if (map[sd->bl.m].flag.gvg) {
|
|
|
clif_displaymessage(fd, msg_txt(163)); // GvG is already On.
|
|
|
return -1;
|
|
|
}
|
|
|
+
|
|
|
+ map[sd->bl.m].flag.gvg = 1;
|
|
|
+ clif_send0199(sd->bl.m, 3);
|
|
|
+ clif_displaymessage(fd, msg_txt(34)); // GvG: On.
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
@@ -3548,17 +3479,23 @@ int atcommand_day(const int fd, struct map_session_data* sd, const char* command
|
|
|
*------------------------------------------*/
|
|
|
int atcommand_doom(const int fd, struct map_session_data* sd, const char* command, const char* message)
|
|
|
{
|
|
|
- struct map_session_data *pl_sd, **pl_allsd;
|
|
|
- int i, users;
|
|
|
+ struct map_session_data* pl_sd;
|
|
|
+ struct s_mapiterator* iter;
|
|
|
+
|
|
|
nullpo_retr(-1, sd);
|
|
|
clif_specialeffect(&sd->bl,450,ALL_SAMEMAP);
|
|
|
- pl_allsd = map_getallusers(&users);
|
|
|
- for(i = 0; i < users; i++) {
|
|
|
- if ((pl_sd = pl_allsd[i]) && pl_sd->fd != fd && pc_isGM(sd) >= pc_isGM(pl_sd)) { // you can doom only lower or same gm level
|
|
|
+
|
|
|
+ iter = mapit_getallusers();
|
|
|
+ for( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter) )
|
|
|
+ {
|
|
|
+ if (pl_sd->fd != fd && pc_isGM(sd) >= pc_isGM(pl_sd))
|
|
|
+ {
|
|
|
status_kill(&pl_sd->bl);
|
|
|
clif_displaymessage(pl_sd->fd, msg_txt(61)); // The holy messenger has given judgement.
|
|
|
}
|
|
|
}
|
|
|
+ mapit_free(iter);
|
|
|
+
|
|
|
clif_displaymessage(fd, msg_txt(62)); // Judgement was made.
|
|
|
|
|
|
return 0;
|
|
@@ -3569,20 +3506,23 @@ int atcommand_doom(const int fd, struct map_session_data* sd, const char* comman
|
|
|
*------------------------------------------*/
|
|
|
int atcommand_doommap(const int fd, struct map_session_data* sd, const char* command, const char* message)
|
|
|
{
|
|
|
- struct map_session_data *pl_sd, **pl_allsd;
|
|
|
- int i, users;
|
|
|
+ struct map_session_data* pl_sd;
|
|
|
+ struct s_mapiterator* iter;
|
|
|
+
|
|
|
nullpo_retr(-1, sd);
|
|
|
clif_specialeffect(&sd->bl,450,ALL_CLIENT);
|
|
|
- pl_allsd = map_getallusers(&users);
|
|
|
- for (i = 0; i < users; i++) {
|
|
|
- if ((pl_sd = pl_allsd[i]) && pl_sd->fd != fd && sd->bl.m == pl_sd->bl.m &&
|
|
|
- pc_isGM(sd) >= pc_isGM(pl_sd)) // you can doom only lower or same gm level
|
|
|
+
|
|
|
+ iter = mapit_getallusers();
|
|
|
+ for( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter) )
|
|
|
+ {
|
|
|
+ if (pl_sd->fd != fd && sd->bl.m == pl_sd->bl.m && pc_isGM(sd) >= pc_isGM(pl_sd))
|
|
|
{
|
|
|
status_kill(&pl_sd->bl);
|
|
|
-// clif_specialeffect(&pl_sd->bl,450,1);
|
|
|
clif_displaymessage(pl_sd->fd, msg_txt(61)); // The holy messenger has given judgement.
|
|
|
}
|
|
|
}
|
|
|
+ mapit_free(iter);
|
|
|
+
|
|
|
clif_displaymessage(fd, msg_txt(62)); // Judgement was made.
|
|
|
|
|
|
return 0;
|
|
@@ -3607,16 +3547,16 @@ static void atcommand_raise_sub(struct map_session_data* sd)
|
|
|
*------------------------------------------*/
|
|
|
int atcommand_raise(const int fd, struct map_session_data* sd, const char* command, const char* message)
|
|
|
{
|
|
|
- int i, users;
|
|
|
- struct map_session_data **all_sd;
|
|
|
+ struct map_session_data* pl_sd;
|
|
|
+ struct s_mapiterator* iter;
|
|
|
|
|
|
nullpo_retr(-1, sd);
|
|
|
|
|
|
- all_sd = map_getallusers(&users);
|
|
|
+ iter = mapit_getallusers();
|
|
|
+ for( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter) )
|
|
|
+ atcommand_raise_sub(pl_sd);
|
|
|
+ mapit_free(iter);
|
|
|
|
|
|
- for (i = 0; i < users; i++) {
|
|
|
- atcommand_raise_sub(all_sd[i]);
|
|
|
- }
|
|
|
clif_displaymessage(fd, msg_txt(64)); // Mercy has been granted.
|
|
|
|
|
|
return 0;
|
|
@@ -3627,17 +3567,17 @@ int atcommand_raise(const int fd, struct map_session_data* sd, const char* comma
|
|
|
*------------------------------------------*/
|
|
|
int atcommand_raisemap(const int fd, struct map_session_data* sd, const char* command, const char* message)
|
|
|
{
|
|
|
- struct map_session_data **pl_allsd;
|
|
|
- int i, users;
|
|
|
+ struct map_session_data* pl_sd;
|
|
|
+ struct s_mapiterator* iter;
|
|
|
|
|
|
nullpo_retr(-1, sd);
|
|
|
|
|
|
- pl_allsd = map_getallusers(&users);
|
|
|
+ iter = mapit_getallusers();
|
|
|
+ for( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter) )
|
|
|
+ if (sd->bl.m == pl_sd->bl.m)
|
|
|
+ atcommand_raise_sub(pl_sd);
|
|
|
+ mapit_free(iter);
|
|
|
|
|
|
- for (i = 0; i < users; i++) {
|
|
|
- if (sd->bl.m == pl_allsd[i]->bl.m)
|
|
|
- atcommand_raise_sub(pl_allsd[i]);
|
|
|
- }
|
|
|
clif_displaymessage(fd, msg_txt(64)); // Mercy has been granted.
|
|
|
|
|
|
return 0;
|
|
@@ -3680,18 +3620,19 @@ int atcommand_kick(const int fd, struct map_session_data* sd, const char* comman
|
|
|
*------------------------------------------*/
|
|
|
int atcommand_kickall(const int fd, struct map_session_data* sd, const char* command, const char* message)
|
|
|
{
|
|
|
- struct map_session_data *pl_sd, **pl_allsd;
|
|
|
- int i, users;
|
|
|
+ struct map_session_data* pl_sd;
|
|
|
+ struct s_mapiterator* iter;
|
|
|
nullpo_retr(-1, sd);
|
|
|
|
|
|
- pl_allsd = map_getallusers(&users);
|
|
|
-
|
|
|
- for (i = 0; i < users; i++) {
|
|
|
- if ((pl_sd = pl_allsd[i]) && pc_isGM(sd) >= pc_isGM(pl_sd)) { // you can kick only lower or same gm level
|
|
|
+ iter = mapit_getallusers();
|
|
|
+ for( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter) )
|
|
|
+ {
|
|
|
+ if (pc_isGM(sd) >= pc_isGM(pl_sd)) { // you can kick only lower or same gm level
|
|
|
if (sd->status.account_id != pl_sd->status.account_id)
|
|
|
clif_GM_kick(NULL, pl_sd);
|
|
|
}
|
|
|
}
|
|
|
+ mapit_free(iter);
|
|
|
|
|
|
clif_displaymessage(fd, msg_txt(195)); // All players have been kicked!
|
|
|
|
|
@@ -3899,15 +3840,17 @@ int atcommand_agitend(const int fd, struct map_session_data* sd, const char* com
|
|
|
*------------------------------------------*/
|
|
|
int atcommand_mapexit(const int fd, struct map_session_data* sd, const char* command, const char* message)
|
|
|
{
|
|
|
- struct map_session_data *pl_sd, **pl_allsd;
|
|
|
- int i, users;
|
|
|
+ struct map_session_data* pl_sd;
|
|
|
+ struct s_mapiterator* iter;
|
|
|
+
|
|
|
nullpo_retr(-1, sd);
|
|
|
|
|
|
- pl_allsd = map_getallusers(&users);
|
|
|
- for (i = 0; i < users; i++) {
|
|
|
- if ((pl_sd = pl_allsd[i]) && sd->status.account_id != pl_sd->status.account_id)
|
|
|
+ iter = mapit_getallusers();
|
|
|
+ for( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter) )
|
|
|
+ if (sd->status.account_id != pl_sd->status.account_id)
|
|
|
clif_GM_kick(NULL, pl_sd);
|
|
|
- }
|
|
|
+ mapit_free(iter);
|
|
|
+
|
|
|
clif_GM_kick(NULL, sd);
|
|
|
|
|
|
flush_fifos();
|
|
@@ -3958,9 +3901,9 @@ int atcommand_idsearch(const int fd, struct map_session_data* sd, const char* co
|
|
|
*------------------------------------------*/
|
|
|
int atcommand_recallall(const int fd, struct map_session_data* sd, const char* command, const char* message)
|
|
|
{
|
|
|
- struct map_session_data *pl_sd, **pl_allsd;
|
|
|
- int i;
|
|
|
- int count, users;
|
|
|
+ struct map_session_data* pl_sd;
|
|
|
+ struct s_mapiterator* iter;
|
|
|
+ int count;
|
|
|
nullpo_retr(-1, sd);
|
|
|
|
|
|
memset(atcmd_output, '\0', sizeof(atcmd_output));
|
|
@@ -3971,10 +3914,11 @@ int atcommand_recallall(const int fd, struct map_session_data* sd, const char* c
|
|
|
}
|
|
|
|
|
|
count = 0;
|
|
|
- pl_allsd = map_getallusers(&users);
|
|
|
- for (i = 0; i < users; i++) {
|
|
|
- if ((pl_sd = pl_allsd[i]) && sd->status.account_id != pl_sd->status.account_id &&
|
|
|
- pc_isGM(sd) >= pc_isGM(pl_sd)) { // you can recall only lower or same level
|
|
|
+ iter = mapit_getallusers();
|
|
|
+ for( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter) )
|
|
|
+ {
|
|
|
+ if (sd->status.account_id != pl_sd->status.account_id && pc_isGM(sd) >= pc_isGM(pl_sd))
|
|
|
+ {
|
|
|
if (pl_sd->bl.m >= 0 && map[pl_sd->bl.m].flag.nowarp && battle_config.any_warp_GM_min_level > pc_isGM(sd))
|
|
|
count++;
|
|
|
else {
|
|
@@ -3986,6 +3930,7 @@ int atcommand_recallall(const int fd, struct map_session_data* sd, const char* c
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ mapit_free(iter);
|
|
|
|
|
|
clif_displaymessage(fd, msg_txt(92)); // All characters recalled!
|
|
|
if (count) {
|
|
@@ -4001,8 +3946,9 @@ int atcommand_recallall(const int fd, struct map_session_data* sd, const char* c
|
|
|
*------------------------------------------*/
|
|
|
int atcommand_guildrecall(const int fd, struct map_session_data* sd, const char* command, const char* message)
|
|
|
{
|
|
|
- struct map_session_data *pl_sd, **pl_allsd;
|
|
|
- int i, users, count;
|
|
|
+ struct map_session_data* pl_sd;
|
|
|
+ struct s_mapiterator* iter;
|
|
|
+ int count;
|
|
|
char guild_name[NAME_LENGTH];
|
|
|
struct guild *g;
|
|
|
nullpo_retr(-1, sd);
|
|
@@ -4020,32 +3966,37 @@ int atcommand_guildrecall(const int fd, struct map_session_data* sd, const char*
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
- if ((g = guild_searchname(guild_name)) != NULL || // name first to avoid error when name begin with a number
|
|
|
- (g = guild_search(atoi(message))) != NULL) {
|
|
|
- count = 0;
|
|
|
- pl_allsd = map_getallusers(&users);
|
|
|
- for (i = 0; i < users; i++) {
|
|
|
- if ((pl_sd = pl_allsd[i]) && sd->status.account_id != pl_sd->status.account_id &&
|
|
|
- pl_sd->status.guild_id == g->guild_id) {
|
|
|
- if (pc_isGM(pl_sd) > pc_isGM(sd))
|
|
|
- continue; //Skip GMs greater than you.
|
|
|
- if (pl_sd->bl.m >= 0 && map[pl_sd->bl.m].flag.nowarp && battle_config.any_warp_GM_min_level > pc_isGM(sd))
|
|
|
- count++;
|
|
|
- else
|
|
|
- pc_setpos(pl_sd, sd->mapindex, sd->bl.x, sd->bl.y, 2);
|
|
|
- }
|
|
|
- }
|
|
|
- sprintf(atcmd_output, msg_txt(93), g->name); // All online characters of the %s guild are near you.
|
|
|
- clif_displaymessage(fd, atcmd_output);
|
|
|
- if (count) {
|
|
|
- sprintf(atcmd_output, "Because you are not authorised to warp from some maps, %d player(s) have not been recalled.", count);
|
|
|
- clif_displaymessage(fd, atcmd_output);
|
|
|
- }
|
|
|
- } else {
|
|
|
+ if ((g = guild_searchname(guild_name)) == NULL && // name first to avoid error when name begin with a number
|
|
|
+ (g = guild_search(atoi(message))) == NULL)
|
|
|
+ {
|
|
|
clif_displaymessage(fd, msg_txt(94)); // Incorrect name/ID, or no one from the guild is online.
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
+ count = 0;
|
|
|
+
|
|
|
+ iter = mapit_getallusers();
|
|
|
+ for( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter) )
|
|
|
+ {
|
|
|
+ if (sd->status.account_id != pl_sd->status.account_id && pl_sd->status.guild_id == g->guild_id)
|
|
|
+ {
|
|
|
+ if (pc_isGM(pl_sd) > pc_isGM(sd))
|
|
|
+ continue; //Skip GMs greater than you.
|
|
|
+ if (pl_sd->bl.m >= 0 && map[pl_sd->bl.m].flag.nowarp && battle_config.any_warp_GM_min_level > pc_isGM(sd))
|
|
|
+ count++;
|
|
|
+ else
|
|
|
+ pc_setpos(pl_sd, sd->mapindex, sd->bl.x, sd->bl.y, 2);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ mapit_free(iter);
|
|
|
+
|
|
|
+ sprintf(atcmd_output, msg_txt(93), g->name); // All online characters of the %s guild are near you.
|
|
|
+ clif_displaymessage(fd, atcmd_output);
|
|
|
+ if (count) {
|
|
|
+ sprintf(atcmd_output, "Because you are not authorised to warp from some maps, %d player(s) have not been recalled.", count);
|
|
|
+ clif_displaymessage(fd, atcmd_output);
|
|
|
+ }
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -4054,11 +4005,11 @@ int atcommand_guildrecall(const int fd, struct map_session_data* sd, const char*
|
|
|
*------------------------------------------*/
|
|
|
int atcommand_partyrecall(const int fd, struct map_session_data* sd, const char* command, const char* message)
|
|
|
{
|
|
|
- int i;
|
|
|
- struct map_session_data *pl_sd, **pl_allsd;
|
|
|
+ struct map_session_data* pl_sd;
|
|
|
+ struct s_mapiterator* iter;
|
|
|
char party_name[NAME_LENGTH];
|
|
|
struct party_data *p;
|
|
|
- int count, users;
|
|
|
+ int count;
|
|
|
nullpo_retr(-1, sd);
|
|
|
|
|
|
memset(party_name, '\0', sizeof(party_name));
|
|
@@ -4074,33 +4025,37 @@ int atcommand_partyrecall(const int fd, struct map_session_data* sd, const char*
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
- if ((p = party_searchname(party_name)) != NULL || // name first to avoid error when name begin with a number
|
|
|
- (p = party_search(atoi(message))) != NULL) {
|
|
|
- count = 0;
|
|
|
-
|
|
|
- pl_allsd = map_getallusers(&users);
|
|
|
- for (i = 0; i < users; i++) {
|
|
|
- if ((pl_sd = pl_allsd[i]) && sd->status.account_id != pl_sd->status.account_id &&
|
|
|
- pl_sd->status.party_id == p->party.party_id) {
|
|
|
- if (pc_isGM(pl_sd) > pc_isGM(sd))
|
|
|
- continue; //Skip GMs greater than you.
|
|
|
- if (pl_sd->bl.m >= 0 && map[pl_sd->bl.m].flag.nowarp && battle_config.any_warp_GM_min_level > pc_isGM(sd))
|
|
|
- count++;
|
|
|
- else
|
|
|
- pc_setpos(pl_sd, sd->mapindex, sd->bl.x, sd->bl.y, 2);
|
|
|
- }
|
|
|
- }
|
|
|
- sprintf(atcmd_output, msg_txt(95), p->party.name); // All online characters of the %s party are near you.
|
|
|
- clif_displaymessage(fd, atcmd_output);
|
|
|
- if (count) {
|
|
|
- sprintf(atcmd_output, "Because you are not authorised to warp from some maps, %d player(s) have not been recalled.", count);
|
|
|
- clif_displaymessage(fd, atcmd_output);
|
|
|
- }
|
|
|
- } else {
|
|
|
+ if ((p = party_searchname(party_name)) == NULL && // name first to avoid error when name begin with a number
|
|
|
+ (p = party_search(atoi(message))) == NULL)
|
|
|
+ {
|
|
|
clif_displaymessage(fd, msg_txt(96)); // Incorrect name or ID, or no one from the party is online.
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
+ count = 0;
|
|
|
+
|
|
|
+ iter = mapit_getallusers();
|
|
|
+ for( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter) )
|
|
|
+ {
|
|
|
+ if (sd->status.account_id != pl_sd->status.account_id && pl_sd->status.party_id == p->party.party_id)
|
|
|
+ {
|
|
|
+ if (pc_isGM(pl_sd) > pc_isGM(sd))
|
|
|
+ continue; //Skip GMs greater than you.
|
|
|
+ if (pl_sd->bl.m >= 0 && map[pl_sd->bl.m].flag.nowarp && battle_config.any_warp_GM_min_level > pc_isGM(sd))
|
|
|
+ count++;
|
|
|
+ else
|
|
|
+ pc_setpos(pl_sd, sd->mapindex, sd->bl.x, sd->bl.y, 2);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ mapit_free(iter);
|
|
|
+
|
|
|
+ sprintf(atcmd_output, msg_txt(95), p->party.name); // All online characters of the %s party are near you.
|
|
|
+ clif_displaymessage(fd, atcmd_output);
|
|
|
+ if (count) {
|
|
|
+ sprintf(atcmd_output, "Because you are not authorised to warp from some maps, %d player(s) have not been recalled.", count);
|
|
|
+ clif_displaymessage(fd, atcmd_output);
|
|
|
+ }
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -4271,46 +4226,52 @@ int atcommand_reloadgmdb(const int fd, struct map_session_data* sd, const char*
|
|
|
*------------------------------------------*/
|
|
|
int atcommand_mapinfo(const int fd, struct map_session_data* sd, const char* command, const char* message)
|
|
|
{
|
|
|
- struct map_session_data *pl_sd, **pl_allsd;
|
|
|
+ struct map_session_data* pl_sd;
|
|
|
+ struct s_mapiterator* iter;
|
|
|
struct npc_data *nd = NULL;
|
|
|
struct chat_data *cd = NULL;
|
|
|
char direction[12];
|
|
|
- int m_id, i, chat_num, users, list = 0;
|
|
|
+ int i, m_id, chat_num, list = 0;
|
|
|
unsigned short m_index;
|
|
|
+ char mapname[24];
|
|
|
+
|
|
|
nullpo_retr(-1, sd);
|
|
|
|
|
|
memset(atcmd_output, '\0', sizeof(atcmd_output));
|
|
|
- memset(atcmd_player_name, '\0', sizeof(atcmd_player_name));
|
|
|
+ memset(mapname, '\0', sizeof(mapname));
|
|
|
memset(direction, '\0', sizeof(direction));
|
|
|
|
|
|
- sscanf(message, "%d %23[^\n]", &list, atcmd_player_name);
|
|
|
+ sscanf(message, "%d %23[^\n]", &list, mapname);
|
|
|
|
|
|
if (list < 0 || list > 3) {
|
|
|
clif_displaymessage(fd, "Please, enter at least a valid list number (usage: @mapinfo <0-3> [map]).");
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
- if (atcmd_player_name[0] == '\0') {
|
|
|
- safestrncpy(atcmd_player_name, mapindex_id2name(sd->mapindex), MAP_NAME_LENGTH);
|
|
|
+ if (mapname[0] == '\0') {
|
|
|
+ safestrncpy(mapname, mapindex_id2name(sd->mapindex), MAP_NAME_LENGTH);
|
|
|
m_id = map_mapindex2mapid(sd->mapindex);
|
|
|
} else {
|
|
|
- m_id = map_mapname2mapid(atcmd_player_name);
|
|
|
+ m_id = map_mapname2mapid(mapname);
|
|
|
}
|
|
|
+
|
|
|
if (m_id < 0) {
|
|
|
clif_displaymessage(fd, msg_txt(1)); // Map not found.
|
|
|
return -1;
|
|
|
}
|
|
|
- m_index = mapindex_name2id(atcmd_player_name); //This one shouldn't fail since the previous seek did not.
|
|
|
+ m_index = mapindex_name2id(mapname); //This one shouldn't fail since the previous seek did not.
|
|
|
|
|
|
clif_displaymessage(fd, "------ Map Info ------");
|
|
|
+
|
|
|
+ // count chats (for initial message)
|
|
|
chat_num = 0;
|
|
|
- pl_allsd = map_getallusers(&users);
|
|
|
- for (i = 0; i < users; i++) {
|
|
|
- if ((pl_sd = pl_allsd[i]) && (cd = (struct chat_data*)map_id2bl(pl_sd->chatID))) {
|
|
|
+ iter = mapit_getallusers();
|
|
|
+ for( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter) )
|
|
|
+ if( (cd = (struct chat_data*)map_id2bl(pl_sd->chatID)) != NULL && pl_sd->mapindex == m_index && cd->usersd[0] == pl_sd )
|
|
|
chat_num++;
|
|
|
- }
|
|
|
- }
|
|
|
- sprintf(atcmd_output, "Map Name: %s | Players In Map: %d | NPCs In Map: %d | Chats In Map: %d", atcmd_player_name, map[m_id].users, map[m_id].npc_num, chat_num);
|
|
|
+ mapit_free(iter);
|
|
|
+
|
|
|
+ sprintf(atcmd_output, "Map Name: %s | Players In Map: %d | NPCs In Map: %d | Chats In Map: %d", mapname, map[m_id].users, map[m_id].npc_num, chat_num);
|
|
|
clif_displaymessage(fd, atcmd_output);
|
|
|
clif_displaymessage(fd, "------ Map Flags ------");
|
|
|
strcpy(atcmd_output,"PvP Flags: ");
|
|
@@ -4431,17 +4392,21 @@ int atcommand_mapinfo(const int fd, struct map_session_data* sd, const char* com
|
|
|
break;
|
|
|
case 1:
|
|
|
clif_displaymessage(fd, "----- Players in Map -----");
|
|
|
- for (i = 0; i < users; i++) {
|
|
|
- if ((pl_sd = pl_allsd[i]) && pl_sd->mapindex == m_index) {
|
|
|
+ iter = mapit_getallusers();
|
|
|
+ for( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter) )
|
|
|
+ {
|
|
|
+ if (pl_sd->mapindex == m_index) {
|
|
|
sprintf(atcmd_output, "Player '%s' (session #%d) | Location: %d,%d",
|
|
|
pl_sd->status.name, pl_sd->fd, pl_sd->bl.x, pl_sd->bl.y);
|
|
|
clif_displaymessage(fd, atcmd_output);
|
|
|
}
|
|
|
}
|
|
|
+ mapit_free(iter);
|
|
|
break;
|
|
|
case 2:
|
|
|
clif_displaymessage(fd, "----- NPCs in Map -----");
|
|
|
- for (i = 0; i < map[m_id].npc_num;) {
|
|
|
+ for (i = 0; i < map[m_id].npc_num;)
|
|
|
+ {
|
|
|
nd = map[m_id].npc[i];
|
|
|
switch(nd->ud.dir) {
|
|
|
case 0: strcpy(direction, "North"); break;
|
|
@@ -4462,18 +4427,22 @@ int atcommand_mapinfo(const int fd, struct map_session_data* sd, const char* com
|
|
|
break;
|
|
|
case 3:
|
|
|
clif_displaymessage(fd, "----- Chats in Map -----");
|
|
|
- for (i = 0; i < users; i++) {
|
|
|
- if ((pl_sd = pl_allsd[i]) && (cd = (struct chat_data*)map_id2bl(pl_sd->chatID)) &&
|
|
|
+ iter = mapit_getallusers();
|
|
|
+ for( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter) )
|
|
|
+ {
|
|
|
+ if ((cd = (struct chat_data*)map_id2bl(pl_sd->chatID)) != NULL &&
|
|
|
pl_sd->mapindex == m_index &&
|
|
|
- cd->usersd[0] == pl_sd) {
|
|
|
- sprintf(atcmd_output, "Chat %d: %s | Player: %s | Location: %d %d",
|
|
|
- i, cd->title, pl_sd->status.name, cd->bl.x, cd->bl.y);
|
|
|
+ cd->usersd[0] == pl_sd)
|
|
|
+ {
|
|
|
+ sprintf(atcmd_output, "Chat: %s | Player: %s | Location: %d %d",
|
|
|
+ cd->title, pl_sd->status.name, cd->bl.x, cd->bl.y);
|
|
|
clif_displaymessage(fd, atcmd_output);
|
|
|
sprintf(atcmd_output, " Users: %d/%d | Password: %s | Public: %s",
|
|
|
cd->users, cd->limit, cd->pass, (cd->pub) ? "Yes" : "No");
|
|
|
clif_displaymessage(fd, atcmd_output);
|
|
|
}
|
|
|
}
|
|
|
+ mapit_free(iter);
|
|
|
break;
|
|
|
default: // normally impossible to arrive here
|
|
|
clif_displaymessage(fd, "Please, enter at least a valid list number (usage: @mapinfo <0-3> [map]).");
|
|
@@ -5213,8 +5182,9 @@ int atcommand_disguise(const int fd, struct map_session_data* sd, const char* co
|
|
|
*------------------------------------------*/
|
|
|
int atcommand_disguiseall(const int fd, struct map_session_data* sd, const char* command, const char* message)
|
|
|
{
|
|
|
- int mob_id=0, i=0, users;
|
|
|
- struct map_session_data *pl_sd, **pl_allsd;
|
|
|
+ int mob_id=0, i=0;
|
|
|
+ struct map_session_data *pl_sd;
|
|
|
+ struct s_mapiterator* iter;
|
|
|
nullpo_retr(-1, sd);
|
|
|
|
|
|
if (!message || !*message) {
|
|
@@ -5230,12 +5200,11 @@ int atcommand_disguiseall(const int fd, struct map_session_data* sd, const char*
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
- pl_allsd = map_getallusers(&users);
|
|
|
- for(i=0; i < users; i++)
|
|
|
- {
|
|
|
- if((pl_sd = pl_allsd[i]))
|
|
|
- pc_disguise(pl_sd, mob_id);
|
|
|
- }
|
|
|
+ iter = mapit_getallusers();
|
|
|
+ for( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter) )
|
|
|
+ pc_disguise(pl_sd, mob_id);
|
|
|
+ mapit_free(iter);
|
|
|
+
|
|
|
clif_displaymessage(fd, msg_txt(122)); // Disguise applied.
|
|
|
return 0;
|
|
|
}
|
|
@@ -5262,16 +5231,16 @@ int atcommand_undisguise(const int fd, struct map_session_data* sd, const char*
|
|
|
*------------------------------------------*/
|
|
|
int atcommand_undisguiseall(const int fd, struct map_session_data* sd, const char* command, const char* message)
|
|
|
{
|
|
|
- struct map_session_data *pl_sd, **pl_allsd;
|
|
|
- int i, users;
|
|
|
+ struct map_session_data *pl_sd;
|
|
|
+ struct s_mapiterator* iter;
|
|
|
nullpo_retr(-1, sd);
|
|
|
|
|
|
- pl_allsd = map_getallusers(&users);
|
|
|
-
|
|
|
- for(i=0; i < users; i++) {
|
|
|
- if((pl_sd = pl_allsd[i]) && pl_sd->disguise)
|
|
|
+ iter = mapit_getallusers();
|
|
|
+ for( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter) )
|
|
|
+ if( pl_sd->disguise )
|
|
|
pc_disguise(pl_sd, 0);
|
|
|
- }
|
|
|
+ mapit_free(iter);
|
|
|
+
|
|
|
clif_displaymessage(fd, msg_txt(124)); // Undisguise applied.
|
|
|
|
|
|
return 0;
|
|
@@ -8409,7 +8378,6 @@ AtCommandInfo atcommand_info[] = {
|
|
|
{ "uptime", 1, atcommand_uptime },
|
|
|
{ "changesex", 60, atcommand_changesex },
|
|
|
{ "mute", 80, atcommand_mute },
|
|
|
- { "whozeny", 20, atcommand_whozeny },
|
|
|
{ "refresh", 1, atcommand_refresh },
|
|
|
{ "identify", 40, atcommand_identify },
|
|
|
{ "gmotd", 20, atcommand_gmotd },
|