Added support for using 'town', 'autotrade', 'allowks', 'monster_noteleport', 'pvp_nocalcrank' and 'battleground' mapflags in scripts (bugreport:4226).

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@14322 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
Paradox924X 2010-06-01 03:08:13 +00:00
parent 486e534d5d
commit 00a2a3283e
4 changed files with 175 additions and 136 deletions

View File

@ -4,6 +4,7 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
2010/05/31 2010/05/31
* Added support for using 'town', 'autotrade', 'allowks', 'monster_noteleport', 'pvp_nocalcrank' and 'battleground' mapflags in scripts (bugreport:4226). [Paradox924X]
* Replaced all occurrences of 'leaved' with 'withdraw'. [Paradox924X] * Replaced all occurrences of 'leaved' with 'withdraw'. [Paradox924X]
* Rewrote and optimized clif_hpmeter to employ map_foreachinarea() rather than an iteration over every session (bugreport:3956). [Paradox924X] * Rewrote and optimized clif_hpmeter to employ map_foreachinarea() rather than an iteration over every session (bugreport:3956). [Paradox924X]
* Rewrote and reorganized checks in @autotrade to check and display most useful information first (bugreport:4253). [Paradox924X] * Rewrote and reorganized checks in @autotrade to check and display most useful information first (bugreport:4253). [Paradox924X]

View File

@ -224,6 +224,12 @@ mf_loadevent 42
mf_nochat 43 mf_nochat 43
mf_noexppenalty 44 mf_noexppenalty 44
mf_guildlock 45 mf_guildlock 45
mf_town 46
mf_autotrade 47
mf_allowks 48
mf_monster_noteleport 49
mf_pvpnocalcrank 50
mf_battleground 51
cell_walkable 0 cell_walkable 0
cell_shootable 1 cell_shootable 1

View File

@ -4279,6 +4279,14 @@ int atcommand_mapinfo(const int fd, struct map_session_data* sd, const char* com
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); 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, atcmd_output);
clif_displaymessage(fd, "------ Map Flags ------"); clif_displaymessage(fd, "------ Map Flags ------");
if (map[m_id].flag.town)
clif_displaymessage(fd, "Town Map");
clif_displaymessage(fd, "Autotrade %s", (battle_config.autotrade_mapflag == map[m_id].flag.autotrade) ? "Enabled" : "Disabled");
if (map[m_id].flag.battleground)
clif_displaymessage(fd, "Battlegrounds ON");
strcpy(atcmd_output,"PvP Flags: "); strcpy(atcmd_output,"PvP Flags: ");
if (map[m_id].flag.pvp) if (map[m_id].flag.pvp)
strcat(atcmd_output, "Pvp ON | "); strcat(atcmd_output, "Pvp ON | ");
@ -4370,7 +4378,8 @@ int atcommand_mapinfo(const int fd, struct map_session_data* sd, const char* com
strcat(atcmd_output, "NoSkill | "); strcat(atcmd_output, "NoSkill | ");
if (map[m_id].flag.noicewall) if (map[m_id].flag.noicewall)
strcat(atcmd_output, "NoIcewall | "); strcat(atcmd_output, "NoIcewall | ");
if (map[m_id].allowks)
strcat(atcmd_output, "AllowKS | ");
clif_displaymessage(fd, atcmd_output); clif_displaymessage(fd, atcmd_output);
strcpy(atcmd_output,"Other Flags: "); strcpy(atcmd_output,"Other Flags: ");
@ -4390,7 +4399,6 @@ int atcommand_mapinfo(const int fd, struct map_session_data* sd, const char* com
strcat(atcmd_output, "GuildLock | "); strcat(atcmd_output, "GuildLock | ");
clif_displaymessage(fd, atcmd_output); clif_displaymessage(fd, atcmd_output);
switch (list) { switch (list) {
case 0: case 0:
// Do nothing. It's list 0, no additional display. // Do nothing. It's list 0, no additional display.

View File

@ -336,7 +336,13 @@ enum {
MF_LOADEVENT, MF_LOADEVENT,
MF_NOCHAT, MF_NOCHAT,
MF_NOEXPPENALTY, MF_NOEXPPENALTY,
MF_GUILDLOCK MF_GUILDLOCK,
MF_TOWN,
MF_AUTOTRADE,
MF_ALLOWKS,
MF_MONSTER_NOTELEPORT,
MF_PVPNOCALCRANK, //50
MF_BATTLEGROUND
}; };
const char* script_op2name(int op) const char* script_op2name(int op)
@ -9167,6 +9173,12 @@ BUILDIN_FUNC(getmapflag)
case MF_NOCHAT: script_pushint(st,map[m].flag.nochat); break; case MF_NOCHAT: script_pushint(st,map[m].flag.nochat); break;
case MF_PARTYLOCK: script_pushint(st,map[m].flag.partylock); break; case MF_PARTYLOCK: script_pushint(st,map[m].flag.partylock); break;
case MF_GUILDLOCK: script_pushint(st,map[m].flag.guildlock); break; case MF_GUILDLOCK: script_pushint(st,map[m].flag.guildlock); break;
case MF_TOWN: script_pushint(st,map[m].flag.town); break;
case MF_AUTOTRADE: script_pushint(st,map[m].flag.autotrade); break;
case MF_ALLOWKS: script_pushint(st,map[m].flag.allowks); break;
case MF_MONSTER_NOTELEPORT: script_pushint(st,map[m].flag.monster_noteleport); break;
case MF_PVPNOCALCRANK: script_pushint(st,map[m].flag.pvpnocalcrank); break;
case MF_BATTLEGROUND: script_pushint(st,map[m].flag.battleground); break;
} }
} }
@ -9231,6 +9243,12 @@ BUILDIN_FUNC(setmapflag)
case MF_NOCHAT: map[m].flag.nochat=1; break; case MF_NOCHAT: map[m].flag.nochat=1; break;
case MF_PARTYLOCK: map[m].flag.partylock=1; break; case MF_PARTYLOCK: map[m].flag.partylock=1; break;
case MF_GUILDLOCK: map[m].flag.guildlock=1; break; case MF_GUILDLOCK: map[m].flag.guildlock=1; break;
case MF_TOWN: map[m].flag.town=1; break;
case MF_AUTOTRADE: map[m].flag.autotrade=1; break;
case MF_ALLOWKS: map[m].flag.allowks=1; break;
case MF_MONSTER_NOTELEPORT: map[m].flag.monster_noteleport=1; break;
case MF_PVPNOCALCRANK: map[m].flag.pvpnocalcrank=1; break;
case MF_BATTLEGROUND: map[m].flag.battleground = (!val || atoi(val) < - || atoi(val) > 2) ? 1 : atoi(val); break;
} }
} }
@ -9292,6 +9310,12 @@ BUILDIN_FUNC(removemapflag)
case MF_NOCHAT: map[m].flag.nochat=0; break; case MF_NOCHAT: map[m].flag.nochat=0; break;
case MF_PARTYLOCK: map[m].flag.partylock=0; break; case MF_PARTYLOCK: map[m].flag.partylock=0; break;
case MF_GUILDLOCK: map[m].flag.guildlock=0; break; case MF_GUILDLOCK: map[m].flag.guildlock=0; break;
case MF_TOWN: map[m].flag.town=0; break;
case MF_AUTOTRADE: map[m].flag.autotrade=0; break;
case MF_ALLOWKS: map[m].flag.allowks=0; break;
case MF_MONSTER_NOTELEPORT: map[m].flag.monster_noteleport=0; break;
case MF_PVPNOCALCRANK: map[m].flag.pvpnocalcrank=0; break;
case MF_BATTLEGROUND: map[m].flag.battleground=0; break;
} }
} }