diff options
-rw-r--r-- | Changelog-Trunk.txt | 8 | ||||
-rw-r--r-- | db/const.txt | 1 | ||||
-rw-r--r-- | src/map/clif.c | 2 | ||||
-rw-r--r-- | src/map/map.c | 6 | ||||
-rw-r--r-- | src/map/party.c | 16 |
5 files changed, 31 insertions, 2 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 9b57bba16..c586594d9 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -4,6 +4,14 @@ 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. 2007/09/10 + * Corrected /invite letting you invite people even if you are not the party + leader. + * Added some reply messages when you try /invite and a. the character is + not found or b. you are not the party leader. + * Added a check so that the 'save on crash' routine won't get stuck if it + happens to crash while attempting to save characters. + * People in chat-rooms no longer receive @main messages. [Skotlex] +2007/09/10 * Added a safeguard to skill_get_unit_layout() against incorrectly defined layout ids (will give weird results but won't crash at least) * Fixed Firewall/Icewall being oriented backwards (no real difference..) diff --git a/db/const.txt b/db/const.txt index 223966ed5..756595db8 100644 --- a/db/const.txt +++ b/db/const.txt @@ -383,6 +383,7 @@ bAddEffWhenHit 2016 bAutoSpellWhenHit 2017 bSkillAtk 2018 bUnstripable 2019 + bSPGainValue 2021 bHPRegenRate 2022 bHPLossRate 2023 diff --git a/src/map/clif.c b/src/map/clif.c index d95495c1a..557e80041 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -362,7 +362,7 @@ int clif_send(const uint8* buf, int len, struct block_list* bl, enum send_target for(i=1; i<fd_max; i++) { if (session[i] && session[i]->func_parse == clif_parse && (sd = (struct map_session_data*)session[i]->session_data) != NULL && - sd->state.mainchat && (fd=sd->fd)) + sd->state.mainchat && !sd->chatID && (fd=sd->fd)) { WFIFOHEAD(fd,len); memcpy(WFIFOP(fd,0), buf, len); diff --git a/src/map/map.c b/src/map/map.c index fcb1a58ac..7c1ba6c4c 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -3227,7 +3227,13 @@ static int map_abort_sub(DBKey key,void * data,va_list ap) //------------------------------ void do_abort(void) { + static int run = 0; //Save all characters and then flush the inter-connection. + if (run) { + ShowFatalError("Server has crashed while trying to save characters. Character data can't be saved!\n"); + return; + } + run = 1; if (!chrif_isconnected()) { if (pc_db->size(pc_db)) diff --git a/src/map/party.c b/src/map/party.c index 6ae42a9f1..763b553e1 100644 --- a/src/map/party.c +++ b/src/map/party.c @@ -9,6 +9,7 @@ #include "../common/showmsg.h" #include "party.h" +#include "atcommand.h" //msg_txt() #include "pc.h" #include "map.h" #include "battle.h" @@ -259,15 +260,28 @@ int party_invite(struct map_session_data *sd,struct map_session_data *tsd) int i,flag=0; nullpo_retr(0, sd); + if (p==NULL) + return 0; - if(tsd==NULL || p==NULL) + if(tsd==NULL) { //TODO: Find the correct reply packet. + clif_displaymessage(sd->fd, msg_txt(3)); + return 0; + } + //Only leader can invite. + ARR_FIND(0, MAX_PARTY, i, i < MAX_PARTY && p->data[i].sd != sd); + if (i == MAX_PARTY || !p->party.member[i].leader) + { //TODO: Find the correct reply packet. + clif_displaymessage(sd->fd, msg_txt(282)); return 0; + } + if(!battle_config.invite_request_check) { if (tsd->guild_invite>0 || tsd->trade_partner) { clif_party_inviteack(sd,tsd->status.name,0); return 0; } } + if (!tsd->fd) { //You can't invite someone who has already disconnected. clif_party_inviteack(sd,tsd->status.name,1); return 0; |