- Added define MAX_CHARS so you can easily mod the server to support a different amount of characters per account (however, there is still the issue of hexing the client to support this change)
- Updated msg_athena.conf so it no longer uses broken english on several entries. Thanks to Scerez for the updated file. git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@10044 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
b67cf18abd
commit
cc6a222a11
@ -3,6 +3,12 @@ Date Added
|
|||||||
AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK.
|
AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK.
|
||||||
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.
|
||||||
|
|
||||||
|
2007/03/22
|
||||||
|
* Added define MAX_CHARS so you can easily mod the server to support a
|
||||||
|
different amount of characters per account (however, there is still the
|
||||||
|
issue of hexing the client to support this change)
|
||||||
|
* Updated msg_athena.conf so it no longer uses broken english on several
|
||||||
|
entries. Thanks to Scerez for the updated file.
|
||||||
2007/03/21
|
2007/03/21
|
||||||
* getpetinfo 5 will now return the pet's rename flag.
|
* getpetinfo 5 will now return the pet's rename flag.
|
||||||
* Autoloot will now only work on items dropped a certain distance from the
|
* Autoloot will now only work on items dropped a certain distance from the
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
3: Character not found.
|
3: Character not found.
|
||||||
4: Jump to %s
|
4: Jump to %s
|
||||||
5: Jump to %d %d
|
5: Jump to %d %d
|
||||||
6: Character data respawn point saved.
|
6: Character respawn point saved.
|
||||||
7: Warping to respawn point.
|
7: Warping to respawn point.
|
||||||
8: Speed changed.
|
8: Speed changed.
|
||||||
9: Options changed.
|
9: Options changed.
|
||||||
@ -32,7 +32,7 @@
|
|||||||
12: Your job has been changed.
|
12: Your job has been changed.
|
||||||
13: You've died.
|
13: You've died.
|
||||||
14: Character killed.
|
14: Character killed.
|
||||||
15: Player warped (message sends to player too).
|
15: Player warped (message sent to player too).
|
||||||
16: You've been revived!
|
16: You've been revived!
|
||||||
17: HP, SP recovered.
|
17: HP, SP recovered.
|
||||||
18: Item created.
|
18: Item created.
|
||||||
@ -53,10 +53,10 @@
|
|||||||
33: GvG: Off.
|
33: GvG: Off.
|
||||||
34: GvG: On.
|
34: GvG: On.
|
||||||
35: You can't use this command with this class.
|
35: You can't use this command with this class.
|
||||||
36: Appearence changed.
|
36: Appearance changed.
|
||||||
37: An invalid number was specified.
|
37: An invalid number was specified.
|
||||||
38: Invalid location number or name.
|
38: Invalid location number or name.
|
||||||
39: All monster summoned!
|
39: All monsters summoned!
|
||||||
40: Invalid monster ID or name.
|
40: Invalid monster ID or name.
|
||||||
41: Impossible to decrease the number/value.
|
41: Impossible to decrease the number/value.
|
||||||
42: Stat changed.
|
42: Stat changed.
|
||||||
@ -79,7 +79,7 @@
|
|||||||
59: Night Mode Activated.
|
59: Night Mode Activated.
|
||||||
60: Day Mode Activated.
|
60: Day Mode Activated.
|
||||||
61: The holy messenger has given judgement.
|
61: The holy messenger has given judgement.
|
||||||
62: Judgement was made.
|
62: Judgement has passed.
|
||||||
63: Mercy has been shown.
|
63: Mercy has been shown.
|
||||||
64: Mercy has been granted.
|
64: Mercy has been granted.
|
||||||
65: Character's base level raised.
|
65: Character's base level raised.
|
||||||
@ -90,7 +90,7 @@
|
|||||||
70: You have learned the skill.
|
70: You have learned the skill.
|
||||||
71: You have forgotten the skill.
|
71: You have forgotten the skill.
|
||||||
72: Guild siege warfare start!
|
72: Guild siege warfare start!
|
||||||
73: Already it has started siege warfare.
|
73: Guild siege warfare has already started.
|
||||||
74: Guild siege warfare end!
|
74: Guild siege warfare end!
|
||||||
75: Siege warfare hasn't started yet.
|
75: Siege warfare hasn't started yet.
|
||||||
76: You have received all skills.
|
76: You have received all skills.
|
||||||
@ -98,14 +98,14 @@
|
|||||||
78: %s: %d
|
78: %s: %d
|
||||||
79: It is %d affair above.
|
79: It is %d affair above.
|
||||||
80: Give a display name and monster name/id please.
|
80: Give a display name and monster name/id please.
|
||||||
81: Your GM level don't authorize you to do this action on this player.
|
81: Your GM level doesn't authorize you to do this action on this player.
|
||||||
82: Please, use one of this number/name:
|
82: Please, use one of this number/name:
|
||||||
83: Cannot spawn emperium.
|
83: Cannot spawn emperium.
|
||||||
84: All stats changed!
|
84: All stats changed!
|
||||||
85: Invalid time for ban command.
|
85: Invalid time for ban command.
|
||||||
86: Sorry, but a player name have at least 4 characters.
|
86: Sorry, but a player name have at least 4 characters.
|
||||||
87: Sorry, but a player name have 23 characters maximum.
|
87: Sorry, but a player name has 23 characters maximum.
|
||||||
88: Character name sends to char-server to ask it.
|
88: Character name sent to char-server to ask it.
|
||||||
89: Sorry, it's already the night. Impossible to execute the command.
|
89: Sorry, it's already the night. Impossible to execute the command.
|
||||||
90: Sorry, it's already the day. Impossible to execute the command.
|
90: Sorry, it's already the day. Impossible to execute the command.
|
||||||
91: Character's base level can't go any higher.
|
91: Character's base level can't go any higher.
|
||||||
@ -127,26 +127,26 @@
|
|||||||
107: All items have been repaired.
|
107: All items have been repaired.
|
||||||
108: No item need to be repaired.
|
108: No item need to be repaired.
|
||||||
109: Player has been nuked!
|
109: Player has been nuked!
|
||||||
110: Npc Enabled.
|
110: NPC Enabled.
|
||||||
111: This NPC doesn't exist.
|
111: This NPC doesn't exist.
|
||||||
112: Npc Disabled.
|
112: NPC Disabled.
|
||||||
113: %d item(s) removed by a GM.
|
113: %d item(s) removed by a GM.
|
||||||
114: %d item(s) removed from the player.
|
114: %d item(s) removed from the player.
|
||||||
115: %d item(s) removed. Player had only %d on %d items.
|
115: %d item(s) removed. Player had only %d on %d items.
|
||||||
116: Character does not have the item.
|
116: Character does not have the item.
|
||||||
117: GM has jailed you.
|
117: GM has sent you to jail.
|
||||||
118: Player jailed.
|
118: Player warped to jail.
|
||||||
119: This player is not jailed.
|
119: This player is not in jail.
|
||||||
120: GM has discharge you.
|
120: A GM has discharged you.
|
||||||
121: Player unjailed.
|
121: Player unjailed.
|
||||||
122: Disguise applied.
|
122: Disguise applied.
|
||||||
123: Monster/NPC name/id hasn't been found.
|
123: Monster/NPC name/ID hasn't been found.
|
||||||
124: Undisguise applied.
|
124: Undisguise applied.
|
||||||
125: You're not disguised.
|
125: You're not disguised.
|
||||||
//Clone Messages
|
//Clone Messages
|
||||||
126: Cannot clone a player of higher GM level than yourself.
|
126: Cannot clone a player of higher GM level than yourself.
|
||||||
127: You've reached your slave clones limit.
|
127: You've reached your slave clones limit.
|
||||||
128: Evil Clone spawned.
|
128: Evil clone spawned.
|
||||||
129: Unable to spawn evil clone.
|
129: Unable to spawn evil clone.
|
||||||
130: Clone spawned.
|
130: Clone spawned.
|
||||||
131: Unable to spawn clone.
|
131: Unable to spawn clone.
|
||||||
@ -157,11 +157,11 @@
|
|||||||
141: Character's undisguise applied.
|
141: Character's undisguise applied.
|
||||||
142: Character is not disguised.
|
142: Character is not disguised.
|
||||||
143: Commands are disabled on this map.
|
143: Commands are disabled on this map.
|
||||||
144: Invalid actual E-mail. If you have default E-mail, type a@a.com.
|
144: Invalid e-mail. If you have default e-mail, type a@a.com.
|
||||||
145: Invalid new E-mail. Please enter a real E-mail.
|
145: Invalid new e-mail. Please enter a real e-mail.
|
||||||
146: New E-mail must be a real E-mail.
|
146: New e-mail must be a real e-mail.
|
||||||
147: New E-mail must be different of the actual E-mail.
|
147: New e-mail must be different from the current e-mail.
|
||||||
148: Information sended to login-server via char-server.
|
148: Information sent to login-server via char-server.
|
||||||
149: Impossible to increase the number/value.
|
149: Impossible to increase the number/value.
|
||||||
150: No GM found.
|
150: No GM found.
|
||||||
151: 1 GM found.
|
151: 1 GM found.
|
||||||
@ -193,13 +193,13 @@
|
|||||||
177: Impossible to decrease a stat.
|
177: Impossible to decrease a stat.
|
||||||
178: Impossible to increase a stat.
|
178: Impossible to increase a stat.
|
||||||
179: Guild level changed.
|
179: Guild level changed.
|
||||||
180: The monter/egg name/id doesn't exist.
|
180: The monter/egg name/ID doesn't exist.
|
||||||
181: You already have a pet.
|
181: You already have a pet.
|
||||||
182: Pet friendly value changed!
|
182: Pet friendly value changed!
|
||||||
183: Pet friendly is already the good value.
|
183: Pet friendly is already in the good value.
|
||||||
184: Sorry, but you have no pet.
|
184: Sorry, but you have no pet.
|
||||||
185: Pet hungry value changed!
|
185: Pet hungry value changed!
|
||||||
186: Pet hungry is already the good value.
|
186: Pet hungry is already in the good value.
|
||||||
187: You can now rename your pet.
|
187: You can now rename your pet.
|
||||||
188: You can already rename your pet.
|
188: You can already rename your pet.
|
||||||
189: This player can now rename his/her pet.
|
189: This player can now rename his/her pet.
|
||||||
@ -229,9 +229,9 @@
|
|||||||
213: You can not mount a peco with your job.
|
213: You can not mount a peco with your job.
|
||||||
214: Unmounted Peco.
|
214: Unmounted Peco.
|
||||||
215: This player cannot mount a Peco while in disguise.
|
215: This player cannot mount a Peco while in disguise.
|
||||||
216: Now, this player mounts a peco.
|
216: This player mounted a peco.
|
||||||
217: This player can not mount a peco with his/her job.
|
217: This player cannot mount a peco with his/her job.
|
||||||
218: Now, this player has not more peco.
|
218: Now, this player no longer has a peco.
|
||||||
219: %d day
|
219: %d day
|
||||||
220: %d days
|
220: %d days
|
||||||
221: %s %d hour
|
221: %s %d hour
|
||||||
@ -242,13 +242,13 @@
|
|||||||
226: %s and %d seconds
|
226: %s and %d seconds
|
||||||
227: Party modification is disabled on this map.
|
227: Party modification is disabled on this map.
|
||||||
228: Guild modification is disabled on this map.
|
228: Guild modification is disabled on this map.
|
||||||
229: Your Effect Has Changed.
|
229: Your effect has changed.
|
||||||
230: Server time (normal time): %A, %B %d %Y %X.
|
230: Server time (normal time): %A, %B %d %Y %X.
|
||||||
231: Game time: The game is in permanent daylight.
|
231: Game time: The game is in permanent daylight.
|
||||||
232: Game time: The game is in permanent night.
|
232: Game time: The game is in permanent night.
|
||||||
233: Game time: The game is actualy in night for %s.
|
233: Game time: The game is in night for %s.
|
||||||
234: Game time: After, the game will be in permanent daylight.
|
234: Game time: After, the game will be in permanent daylight.
|
||||||
235: Game time: The game is actualy in daylight for %s.
|
235: Game time: The game is in daylight for %s.
|
||||||
236: Game time: After, the game will be in permanent night.
|
236: Game time: After, the game will be in permanent night.
|
||||||
237: Game time: After, the game will be in night for %s.
|
237: Game time: After, the game will be in night for %s.
|
||||||
238: Game time: A day cycle has a normal duration of %s.
|
238: Game time: A day cycle has a normal duration of %s.
|
||||||
@ -259,7 +259,7 @@
|
|||||||
243: Map skills are off
|
243: Map skills are off
|
||||||
244: Map skills are on
|
244: Map skills are on
|
||||||
245: Server Uptime: %ld days, %ld hours, %ld minutes, %ld seconds.
|
245: Server Uptime: %ld days, %ld hours, %ld minutes, %ld seconds.
|
||||||
246: Your GM level don't authorize you to do this action.
|
246: Your GM level doesn't authorize you to do this action.
|
||||||
247: You are not authorized to warp to this map.
|
247: You are not authorized to warp to this map.
|
||||||
248: You are not authorized to warp from your current map.
|
248: You are not authorized to warp from your current map.
|
||||||
249: You are not authorized to warp to your save map.
|
249: You are not authorized to warp to your save map.
|
||||||
@ -267,7 +267,7 @@
|
|||||||
251: You have already opened your guild storage. Close it first.
|
251: You have already opened your guild storage. Close it first.
|
||||||
252: You are not in a guild.
|
252: You are not in a guild.
|
||||||
253: You are not authorized to memo this map.
|
253: You are not authorized to memo this map.
|
||||||
254: GM commands configuration reloaded.
|
254: GM command configuration reloaded.
|
||||||
255: Battle configuration reloaded.
|
255: Battle configuration reloaded.
|
||||||
256: Status database reloaded.
|
256: Status database reloaded.
|
||||||
257: Player database reloaded.
|
257: Player database reloaded.
|
||||||
@ -360,21 +360,21 @@
|
|||||||
338: | Location: %s %d %d
|
338: | Location: %s %d %d
|
||||||
|
|
||||||
// @duel (part 1)
|
// @duel (part 1)
|
||||||
350: Duel: You can't use @invite. You aren't a duellist.
|
350: Duel: You can't use @invite. You aren't a duelist.
|
||||||
351: Duel: The limit of players is reached.
|
351: Duel: The limit of players has been reached.
|
||||||
352: Duel: Player name not found.
|
352: Duel: Player name not found.
|
||||||
353: Duel: The Player is in the duel already.
|
353: Duel: The Player is in the duel already.
|
||||||
354: Duel: Duel invitation has been sent.
|
354: Invitation has been sent.
|
||||||
355: Duel: You can't use @duel without @reject.
|
355: Duel: You can't use @duel without @reject.
|
||||||
356: Duel: You can take part in duel once per %d minutes.
|
356: Duel: You can take part in duel once per %d minutes.
|
||||||
357: Duel: Invalid value.
|
357: Duel: Invalid value.
|
||||||
358: Duel: You can't use @leave. You aren't a duellist.
|
358: Duel: You can't use @leave. You aren't a duelist.
|
||||||
359: Duel: You've left the duel.
|
359: Duel: You've left the duel.
|
||||||
360: Duel: You can't use @accept without a duel invitation.
|
360: Duel: You can't use @accept without a duel invitation.
|
||||||
361: Duel: The duel invitation has been accepted.
|
361: Duel: The duel invitation has been accepted.
|
||||||
362: Duel: You can't use @reject without a duel invitation.
|
362: Duel: You can't use @reject without a duel invitation.
|
||||||
363: Duel: The duel invitation has been rejected.
|
363: Duel: The duel invitation has been rejected.
|
||||||
364: Duel: You can't invite %s because he isn't on the same map.
|
364: Duel: You can't invite %s because he/she isn't on the same map.
|
||||||
// @duel (part 2)
|
// @duel (part 2)
|
||||||
370: -- Duels: %d/%d, Members: %d/%d, Max players: %d --
|
370: -- Duels: %d/%d, Members: %d/%d, Max players: %d --
|
||||||
371: -- Duels: %d/%d, Members: %d/%d --
|
371: -- Duels: %d/%d, Members: %d/%d --
|
||||||
@ -409,15 +409,15 @@
|
|||||||
402: %s in jail for %d years, %d months, %d days, %d hours and %d minutes
|
402: %s in jail for %d years, %d months, %d days, %d hours and %d minutes
|
||||||
|
|
||||||
// Homunculus messages
|
// Homunculus messages
|
||||||
450: You already have an homunculus
|
450: You already have a homunculus
|
||||||
|
|
||||||
// Messages of others (not for GM commands)
|
// Messages of others (not for GM commands)
|
||||||
// ----------------------------------------
|
// ----------------------------------------
|
||||||
|
|
||||||
500: Night Mode is already active
|
500: Night Mode is already active
|
||||||
501: Your account time limit is: %d-%m-%Y %H:%M:%S.
|
501: Your account time limit is: %d-%m-%Y %H:%M:%S.
|
||||||
502: Day Mode is Activated
|
502: Day Mode is activated
|
||||||
503: Night Mode is Activated
|
503: Night Mode is activated
|
||||||
|
|
||||||
//Supernovice's Guardian Angel
|
//Supernovice's Guardian Angel
|
||||||
//actually.. new client msgtxt file contains these 3 lines... [Lupus]
|
//actually.. new client msgtxt file contains these 3 lines... [Lupus]
|
||||||
@ -454,11 +454,11 @@
|
|||||||
// Bot detect messages (currently unused)
|
// Bot detect messages (currently unused)
|
||||||
535: Possible use of BOT (99%% of chance) or modified client by '%s' (account: %d, char_id: %d). This player ask your name when you are hidden.
|
535: Possible use of BOT (99%% of chance) or modified client by '%s' (account: %d, char_id: %d). This player ask your name when you are hidden.
|
||||||
|
|
||||||
536: Character '%s' (account: %d) try to use a bot (it tries to detect a fake player).
|
536: Character '%s' (account: %d) is trying to use a bot (it tries to detect a fake player).
|
||||||
537: Character '%s' (account: %d) try to use a bot (it tries to detect a fake mob).
|
537: Character '%s' (account: %d) is trying to use a bot (it tries to detect a fake mob).
|
||||||
// Trade Spoof Messages
|
// Trade Spoof Messages
|
||||||
538: Hack on trade: character '%s' (account: %d) try to trade more items that he has.
|
538: Hack on trade: character '%s' (account: %d) try to trade more items that he has.
|
||||||
539: This player has %d of a kind of item (id: %d), and try to trade %d of them.
|
539: This player has %d of a kind of item (id: %d), and tried to trade %d of them.
|
||||||
540: This player has been definitivly blocked.
|
540: This player has been definitivly blocked.
|
||||||
// Rare Items Drop/Steal announce
|
// Rare Items Drop/Steal announce
|
||||||
541: '%s' won %s's %s (chance: %0.02f%%)
|
541: '%s' won %s's %s (chance: %0.02f%%)
|
||||||
@ -473,7 +473,7 @@
|
|||||||
547: Away automessage has been disabled.
|
547: Away automessage has been disabled.
|
||||||
548: Usage: @away,@aw <message>. Enter empty message for disable it.
|
548: Usage: @away,@aw <message>. Enter empty message for disable it.
|
||||||
// @Autotrade
|
// @Autotrade
|
||||||
549: You should be vending to use @Autotrade.
|
549: You should be vending to use @autotrade.
|
||||||
|
|
||||||
//550 -> 650: Job Names
|
//550 -> 650: Job Names
|
||||||
550: Novice
|
550: Novice
|
||||||
|
@ -99,7 +99,7 @@ int log_inter = 1; // loggin inter or not [devil]
|
|||||||
|
|
||||||
struct char_session_data{
|
struct char_session_data{
|
||||||
int account_id, login_id1, login_id2, sex;
|
int account_id, login_id1, login_id2, sex;
|
||||||
int found_char[9];
|
int found_char[MAX_CHARS];
|
||||||
char email[40]; // e-mail (default: a@a.com) by [Yor]
|
char email[40]; // e-mail (default: a@a.com) by [Yor]
|
||||||
time_t connect_until_time; // # of seconds 1/1/1970 (timestamp): Validity limit of the account (0 = unlimited)
|
time_t connect_until_time; // # of seconds 1/1/1970 (timestamp): Validity limit of the account (0 = unlimited)
|
||||||
};
|
};
|
||||||
@ -1145,7 +1145,7 @@ int make_new_char(int fd, unsigned char *dat) {
|
|||||||
} // else, all letters/symbols are authorised (except control char removed before)
|
} // else, all letters/symbols are authorised (except control char removed before)
|
||||||
|
|
||||||
if (dat[24] + dat[25] + dat[26] + dat[27] + dat[28] + dat[29] != 5*6 || // stats
|
if (dat[24] + dat[25] + dat[26] + dat[27] + dat[28] + dat[29] != 5*6 || // stats
|
||||||
dat[30] >= 9 || // slots (dat[30] can not be negativ)
|
dat[30] >= MAX_CHARS || // slots (dat[30] can not be negativ)
|
||||||
dat[33] <= 0 || dat[33] >= 24 || // hair style
|
dat[33] <= 0 || dat[33] >= 24 || // hair style
|
||||||
dat[31] >= 9) { // hair color (dat[31] can not be negativ)
|
dat[31] >= 9) { // hair color (dat[31] can not be negativ)
|
||||||
char_log("Make new char error (invalid values): (connection #%d, account: %d) slot %d, name: %s, stats: %d+%d+%d+%d+%d+%d=%d, hair: %d, hair color: %d" RETCODE,
|
char_log("Make new char error (invalid values): (connection #%d, account: %d) slot %d, name: %s, stats: %d+%d+%d+%d+%d+%d=%d, hair: %d, hair color: %d" RETCODE,
|
||||||
@ -1731,11 +1731,11 @@ int mmo_char_send006b(int fd, struct char_session_data *sd) {
|
|||||||
for(i = 0; i < char_num; i++) {
|
for(i = 0; i < char_num; i++) {
|
||||||
if (char_dat[i].status.account_id == sd->account_id) {
|
if (char_dat[i].status.account_id == sd->account_id) {
|
||||||
sd->found_char[found_num] = i;
|
sd->found_char[found_num] = i;
|
||||||
if( ++found_num == 9 )
|
if( ++found_num == MAX_CHARS )
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for(i = found_num; i < 9; i++)
|
for(i = found_num; i < MAX_CHARS; i++)
|
||||||
sd->found_char[i] = -1;
|
sd->found_char[i] = -1;
|
||||||
|
|
||||||
|
|
||||||
@ -2295,7 +2295,7 @@ int parse_tologin(int fd) {
|
|||||||
for (j = 0; j < fd_max; j++) {
|
for (j = 0; j < fd_max; j++) {
|
||||||
if (session[j] && (sd2 = (struct char_session_data*)session[j]->session_data) &&
|
if (session[j] && (sd2 = (struct char_session_data*)session[j]->session_data) &&
|
||||||
sd2->account_id == char_dat[char_num-1].status.account_id) {
|
sd2->account_id == char_dat[char_num-1].status.account_id) {
|
||||||
for (k = 0; k < 9; k++) {
|
for (k = 0; k < MAX_CHARS; k++) {
|
||||||
if (sd2->found_char[k] == char_num-1) {
|
if (sd2->found_char[k] == char_num-1) {
|
||||||
sd2->found_char[k] = i;
|
sd2->found_char[k] = i;
|
||||||
break;
|
break;
|
||||||
@ -3477,10 +3477,10 @@ int parse_char(int fd) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// otherwise, load the character
|
// otherwise, load the character
|
||||||
for (ch = 0; ch < 9; ch++)
|
for (ch = 0; ch < MAX_CHARS; ch++)
|
||||||
if (sd->found_char[ch] >= 0 && char_dat[sd->found_char[ch]].status.char_num == char_num)
|
if (sd->found_char[ch] >= 0 && char_dat[sd->found_char[ch]].status.char_num == char_num)
|
||||||
break;
|
break;
|
||||||
if (ch == 9)
|
if (ch == MAX_CHARS)
|
||||||
{ //Not found?? May be forged packet.
|
{ //Not found?? May be forged packet.
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -3628,7 +3628,7 @@ int parse_char(int fd) {
|
|||||||
WFIFOSET(fd,len);
|
WFIFOSET(fd,len);
|
||||||
RFIFOSKIP(fd,37);
|
RFIFOSKIP(fd,37);
|
||||||
}
|
}
|
||||||
for(ch = 0; ch < 9; ch++) {
|
for(ch = 0; ch < MAX_CHARS; ch++) {
|
||||||
if (sd->found_char[ch] == -1) {
|
if (sd->found_char[ch] == -1) {
|
||||||
sd->found_char[ch] = i;
|
sd->found_char[ch] = i;
|
||||||
break;
|
break;
|
||||||
@ -3657,7 +3657,7 @@ int parse_char(int fd) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// we change the packet to set it like selection.
|
// we change the packet to set it like selection.
|
||||||
for (i = 0; i < 9; i++)
|
for (i = 0; i < MAX_CHARS; i++)
|
||||||
if (sd->found_char[i] != -1 && char_dat[sd->found_char[i]].status.char_id == cid) {
|
if (sd->found_char[i] != -1 && char_dat[sd->found_char[i]].status.char_id == cid) {
|
||||||
// we save new e-mail
|
// we save new e-mail
|
||||||
memcpy(sd->email, email, 40);
|
memcpy(sd->email, email, 40);
|
||||||
@ -3673,7 +3673,7 @@ int parse_char(int fd) {
|
|||||||
// not send packet, it's modify of actual packet
|
// not send packet, it's modify of actual packet
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (i == 9) {
|
if (i == MAX_CHARS) {
|
||||||
WFIFOW(fd, 0) = 0x70;
|
WFIFOW(fd, 0) = 0x70;
|
||||||
WFIFOB(fd, 2) = 0; // 00 = Incorrect Email address
|
WFIFOB(fd, 2) = 0; // 00 = Incorrect Email address
|
||||||
WFIFOSET(fd, 3);
|
WFIFOSET(fd, 3);
|
||||||
@ -3687,11 +3687,11 @@ int parse_char(int fd) {
|
|||||||
WFIFOSET(fd, 3);
|
WFIFOSET(fd, 3);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
for (i = 0; i < 9; i++) {
|
for (i = 0; i < MAX_CHARS; i++) {
|
||||||
if (sd->found_char[i] == -1) continue;
|
if (sd->found_char[i] == -1) continue;
|
||||||
if (char_dat[sd->found_char[i]].status.char_id == cid) break;
|
if (char_dat[sd->found_char[i]].status.char_id == cid) break;
|
||||||
}
|
}
|
||||||
if (i == 9) {
|
if (i == MAX_CHARS) {
|
||||||
WFIFOW(fd,0) = 0x70;
|
WFIFOW(fd,0) = 0x70;
|
||||||
WFIFOB(fd,2) = 0;
|
WFIFOB(fd,2) = 0;
|
||||||
WFIFOSET(fd,3);
|
WFIFOSET(fd,3);
|
||||||
@ -3708,7 +3708,7 @@ int parse_char(int fd) {
|
|||||||
for (j = 0; j < fd_max; j++) {
|
for (j = 0; j < fd_max; j++) {
|
||||||
if (session[j] && (sd2 = (struct char_session_data*)session[j]->session_data) &&
|
if (session[j] && (sd2 = (struct char_session_data*)session[j]->session_data) &&
|
||||||
sd2->account_id == char_dat[char_num-1].status.account_id) {
|
sd2->account_id == char_dat[char_num-1].status.account_id) {
|
||||||
for (k = 0; k < 9; k++) {
|
for (k = 0; k < MAX_CHARS; k++) {
|
||||||
if (sd2->found_char[k] == char_num-1) {
|
if (sd2->found_char[k] == char_num-1) {
|
||||||
sd2->found_char[k] = sd->found_char[i];
|
sd2->found_char[k] = sd->found_char[i];
|
||||||
break;
|
break;
|
||||||
@ -3719,9 +3719,9 @@ int parse_char(int fd) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
char_num--;
|
char_num--;
|
||||||
for(ch = i; ch < 9-1; ch++)
|
for(ch = i; ch < MAX_CHARS-1; ch++)
|
||||||
sd->found_char[ch] = sd->found_char[ch+1];
|
sd->found_char[ch] = sd->found_char[ch+1];
|
||||||
sd->found_char[8] = -1;
|
sd->found_char[MAX_CHARS-1] = -1;
|
||||||
WFIFOW(fd,0) = 0x6f;
|
WFIFOW(fd,0) = 0x6f;
|
||||||
WFIFOSET(fd,2);
|
WFIFOSET(fd,2);
|
||||||
break;
|
break;
|
||||||
|
@ -128,7 +128,7 @@ static int online_check = 1; //If one, it won't let players connect when their a
|
|||||||
|
|
||||||
struct char_session_data{
|
struct char_session_data{
|
||||||
int account_id, login_id1, login_id2,sex;
|
int account_id, login_id1, login_id2,sex;
|
||||||
int found_char[9];
|
int found_char[MAX_CHARS];
|
||||||
char email[40]; // e-mail (default: a@a.com) by [Yor]
|
char email[40]; // e-mail (default: a@a.com) by [Yor]
|
||||||
time_t connect_until_time; // # of seconds 1/1/1970 (timestamp): Validity limit of the account (0 = unlimited)
|
time_t connect_until_time; // # of seconds 1/1/1970 (timestamp): Validity limit of the account (0 = unlimited)
|
||||||
};
|
};
|
||||||
@ -1298,7 +1298,7 @@ int make_new_char_sql(int fd, unsigned char *dat) {
|
|||||||
|
|
||||||
//check stat error
|
//check stat error
|
||||||
if ((dat[24]+dat[25]+dat[26]+dat[27]+dat[28]+dat[29]!=6*5 ) || // stats
|
if ((dat[24]+dat[25]+dat[26]+dat[27]+dat[28]+dat[29]!=6*5 ) || // stats
|
||||||
(dat[30] >= 9) || // slots (dat[30] can not be negativ)
|
(dat[30] >= MAX_CHARS) || // slots (dat[30] can not be negativ)
|
||||||
(dat[33] <= 0) || (dat[33] >= 24) || // hair style
|
(dat[33] <= 0) || (dat[33] >= 24) || // hair style
|
||||||
(dat[31] >= 9)) { // hair color (dat[31] can not be negativ)
|
(dat[31] >= 9)) { // hair color (dat[31] can not be negativ)
|
||||||
if (log_char) {
|
if (log_char) {
|
||||||
@ -1746,7 +1746,7 @@ int mmo_char_send006b(int fd, struct char_session_data *sd) {
|
|||||||
set_char_online(-1, 99,sd->account_id);
|
set_char_online(-1, 99,sd->account_id);
|
||||||
|
|
||||||
//search char.
|
//search char.
|
||||||
sprintf(tmp_sql, "SELECT `char_id` FROM `%s` WHERE `account_id` = '%d' AND `char_num` < '9'",char_db, sd->account_id);
|
sprintf(tmp_sql, "SELECT `char_id` FROM `%s` WHERE `account_id` = '%d' AND `char_num` < '%d'",char_db, sd->account_id, MAX_CHARS);
|
||||||
if (mysql_query(&mysql_handle, tmp_sql)) {
|
if (mysql_query(&mysql_handle, tmp_sql)) {
|
||||||
ShowSQL("DB error - %s\n",mysql_error(&mysql_handle));
|
ShowSQL("DB error - %s\n",mysql_error(&mysql_handle));
|
||||||
ShowDebug("at %s:%d - %s\n", __FILE__,__LINE__,tmp_sql);
|
ShowDebug("at %s:%d - %s\n", __FILE__,__LINE__,tmp_sql);
|
||||||
@ -1763,7 +1763,7 @@ int mmo_char_send006b(int fd, struct char_session_data *sd) {
|
|||||||
mysql_free_result(sql_res);
|
mysql_free_result(sql_res);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(i = found_num; i < 9; i++)
|
for(i = found_num; i < MAX_CHARS; i++)
|
||||||
sd->found_char[i] = -1;
|
sd->found_char[i] = -1;
|
||||||
|
|
||||||
if (save_log)
|
if (save_log)
|
||||||
@ -3442,7 +3442,7 @@ int parse_char(int fd) {
|
|||||||
RFIFOSKIP(fd, 37);
|
RFIFOSKIP(fd, 37);
|
||||||
}
|
}
|
||||||
//to do
|
//to do
|
||||||
for(ch = 0; ch < 9; ch++) {
|
for(ch = 0; ch < MAX_CHARS; ch++) {
|
||||||
if (sd->found_char[ch] == -1) {
|
if (sd->found_char[ch] == -1) {
|
||||||
sd->found_char[ch] = char_dat.char_id;
|
sd->found_char[ch] = char_dat.char_id;
|
||||||
break;
|
break;
|
||||||
@ -3470,17 +3470,17 @@ int parse_char(int fd) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(i = 0; i < 9; i++) {
|
for(i = 0; i < MAX_CHARS; i++) {
|
||||||
if (sd->found_char[i] == cid) {
|
if (sd->found_char[i] == cid) {
|
||||||
for(ch = i; ch < 9-1; ch++)
|
for(ch = i; ch < MAX_CHARS-1; ch++)
|
||||||
sd->found_char[ch] = sd->found_char[ch+1];
|
sd->found_char[ch] = sd->found_char[ch+1];
|
||||||
sd->found_char[8] = -1;
|
sd->found_char[MAX_CHARS-1] = -1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* Such a character does not exist in the account */
|
/* Such a character does not exist in the account */
|
||||||
/* If so, you are so screwed. */
|
/* If so, you are so screwed. */
|
||||||
if (i == 9) {
|
if (i == MAX_CHARS) {
|
||||||
WFIFOW(fd, 0) = 0x70;
|
WFIFOW(fd, 0) = 0x70;
|
||||||
WFIFOB(fd, 2) = 0;
|
WFIFOB(fd, 2) = 0;
|
||||||
WFIFOSET(fd, 3);
|
WFIFOSET(fd, 3);
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
#define GUILD_ALLIANCE_TYPE_MASK 0x01
|
#define GUILD_ALLIANCE_TYPE_MASK 0x01
|
||||||
#define GUILD_ALLIANCE_REMOVE 0x08
|
#define GUILD_ALLIANCE_REMOVE 0x08
|
||||||
|
|
||||||
static char dataToHex[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
|
static const char dataToHex[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
|
||||||
|
|
||||||
#ifndef TXT_SQL_CONVERT
|
#ifndef TXT_SQL_CONVERT
|
||||||
//Guild cache
|
//Guild cache
|
||||||
|
@ -20,6 +20,8 @@
|
|||||||
|
|
||||||
#define MAX_MAP_PER_SERVER 1024
|
#define MAX_MAP_PER_SERVER 1024
|
||||||
#define MAX_INVENTORY 100
|
#define MAX_INVENTORY 100
|
||||||
|
//Max number of characters per account. Note that changing this setting alone is not enough if the client is not hexed to support more chafacters as well.
|
||||||
|
#define MAX_CHARS 9
|
||||||
//Number of slots carded equipment can have. Never set to less than 4 as they are also used to keep the data of forged items/equipment. [Skotlex]
|
//Number of slots carded equipment can have. Never set to less than 4 as they are also used to keep the data of forged items/equipment. [Skotlex]
|
||||||
//Note: The client seems unable to receive data for more than 4 slots due to all related packets having a fixed size.
|
//Note: The client seems unable to receive data for more than 4 slots due to all related packets having a fixed size.
|
||||||
#define MAX_SLOTS 4
|
#define MAX_SLOTS 4
|
||||||
|
Loading…
x
Reference in New Issue
Block a user