summaryrefslogtreecommitdiff
path: root/src/map/atcommand.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/map/atcommand.c')
-rw-r--r--src/map/atcommand.c31
1 files changed, 15 insertions, 16 deletions
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index a6c92a593..cd4ed4dbd 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -3013,6 +3013,16 @@ int atcommand_gm(
return 0;
}
+static int atcommand_pvpoff_sub(struct block_list *bl,va_list ap) {
+ TBL_PC* sd = (TBL_PC*)bl;
+ clif_pvpset(sd, 0, 0, 2);
+ if (sd->pvp_timer != UINT_MAX) {
+ delete_timer(sd->pvp_timer, pc_calc_pvprank_timer);
+ sd->pvp_timer = UINT_MAX;
+ }
+ return 0;
+}
+
/*==========================================
*
*------------------------------------------
@@ -3030,26 +3040,15 @@ int atcommand_pvpoff(
return -1;
}
- if (map[sd->bl.m].flag.pvp) {
- map[sd->bl.m].flag.pvp = 0;
- clif_send0199(sd->bl.m, 0);
-
- pl_allsd = map_getallusers(&users);
- for (i = 0; i < users; i++) { //人数分ループ
- if ((pl_sd = pl_allsd[i]) && sd->bl.m == pl_sd->bl.m) {
- clif_pvpset(pl_sd, 0, 0, 2);
- if (pl_sd->pvp_timer != -1) {
- delete_timer(pl_sd->pvp_timer, pc_calc_pvprank_timer);
- pl_sd->pvp_timer = -1;
- }
- }
- }
- clif_displaymessage(fd, msg_txt(31)); // PvP: Off.
- } else {
+ if (!map[sd->bl.m].flag.pvp) {
clif_displaymessage(fd, msg_txt(160)); // PvP is already Off.
return -1;
}
+ map[sd->bl.m].flag.pvp = 0;
+ clif_send0199(sd->bl.m, 0);
+ map_foreachinmap(atcommand_pvpoff_sub,sd->bl.m, BL_PC);
+ clif_displaymessage(fd, msg_txt(31)); // PvP: Off.
return 0;
}