git-svn-id: https://svn.code.sf.net/p/rathena/svn/athena@331 54d463be-8e91-2dee-dedb-b68131a5f0ec

This commit is contained in:
mc_cameri 2004-11-22 21:25:28 +00:00
parent c39f85d63b
commit 974c37433b
11 changed files with 656 additions and 317 deletions

View File

@ -1,5 +1,9 @@
Date Added
11/22
* (TXT)Stripped some code off read_gm_accounts() and made with it addGM() [MC Cameri]
-Usage: addGM(account_id,level);
* (TXT)Changed GM_accounts.txt to meet new standards. [MC Cameri]
* (TXT)Enabled the use of id ranges in GM_accounts.txt [MC Cameri]
* Added a few free()'s so that I am sure it freed the allocated memory (char & login) [Codemaster]
* Changed monsters_ignore_gm option to a level value. [Valaris]
(accounts greater than or equal to this setting won't be attacked by aggressives.)

View File

@ -1,35 +1,12 @@
// GMとして認識するアカウントIDを設定
// <account ID> <level>
// <GMのアカウントID> <GMのレベル>
// GMのレベルは0以下は無視で最大は99
704554 99
704555 1
704556 1
704557 1
704558 1
704559 1
704560 1
704561 1
704562 1
704563 1
704564 1
704565 1
704566 1
704567 1
704568 1
704569 1
704570 1
704571 1
704572 1
704573 1
704574 1
704575 1
704576 1
704577 1
704578 1
704579 1
704580 1
704581 1
704582 1
704583 1
794584 1
// eAthena's GM Accounts File
// Edited by MC Cameri to enable account id ranges
// Changing this file while login server is running
// Usage #1(Standard): <account id> <level>
// Usage #2(Range): <beginning of range[-:~]end of range> <level>
// Examples:
// 2000002 99
// 2000003-2000005 99
// 2000003~2000005 99
// 704585 30
704554-704584 99

View File

@ -1,10 +1,10 @@
// Athena charcommand Configuration file.
// Translated by Peter Kieser <pfak@telus.net>
// Created by MC Cameri for eAthena
// Set here the symbol that you want to use for your commands
// Only 1 character is get (default is '#'). You can set any character,
// except control-character (0x00-0x1f), '%' (party chat speaking) and '/' (standard ragnarok GM commands)
// With default character, all commands begin by a '#': <example> #revive
// With default character, all commands begin by a '#', example: #revive
command_symbol: #
job: 60

View File

@ -11,487 +11,246 @@
// Messages of GM commands
// -----------------------
//0: Warped.
0: Warped.
//1: Map not found.
1: Map not found.
//2: Coordinates out of range.
2: Coordinates out of range.
//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 data 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.
//10: Invisible: Off
10: Invisible: Off
//11: Invisible: On
11: Invisible: On
//12: Your job has been changed.
12: Your job has been changed.
//13: A pity! You've died.
13: A pity! You've died.
//14: Character killed.
14: Character killed.
//15: Player warped (message sends to player too).
15: Player warped (message sends to player too).
//16: You've been revived! It's a miracle!
16: You've been revived! It's a miracle!
//17: HP, SP recovered.
17: HP, SP recovered.
//18: Item created.
18: Item created.
//19: Invalid item ID or name.
19: Invalid item ID or name.
//20: All of your items have been removed.
20: All of your items have been removed.
//21: Base level raised.
21: Base level raised.
//22: Base level lowered.
22: Base level lowered.
//23: Job level can't go any higher.
23: Job level can't go any higher.
//24: Job level raised.
24: Job level raised.
//25: Job level lowered.
25: Job level lowered.
//26: Help commands:
26: Help commands:
//27: File help.txt not found.
27: File help.txt not found.
//28: No player found.
28: No player found.
//29: 1 player found.
29: 1 player found.
//30: %d players found.
30: %d players found.
//31: PvP: Off.
31: PvP: Off.
//32: PvP: On.
32: PvP: On.
//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: Appearence 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 monster 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.
//43: You're not in a guild.
43: You're not in a guild.
//44: You're not the master of your guild.
44: You're not the master of your guild.
//45: Guild level change failed.
45: Guild level change failed.
//46: %s recalled!
46: %s recalled!
//47: Base level can't go any higher.
47: Base level can't go any higher.
//48: Character's job changed.
48: Character's job changed.
//49: Invalid job ID.
49: Invalid job ID.
//50: You already have some GM powers.
50: You already have some GM powers.
//51: Character revived.
51: Character revived.
//52: This option cannot be used in PK Mode.
52: This option cannot be used in PK Mode.
//53: '%s' stats:
53: '%s' stats:
//54: No player found in map '%s'.
54: No player found in map '%s'.
//55: 1 player found in map '%s'.
55: 1 player found in map '%s'.
//56: %d players found in map '%s'.
56: %d players found in map '%s'.
//57: Character's respawn point changed.
57: Character's respawn point changed.
//58: Character's options changed.
58: Character's options changed.
//59: Night has fallen.
59: Night has fallen.
//60: Day has arrived.
60: Day has arrived.
//61: The holy messenger has given judgement.
61: The holy messenger has given judgement.
//62: Judgement was made.
62: Judgement was made.
//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.
//66: Character's base level lowered.
66: Character's base level lowered.
//67: Character's job level can't go any higher.
67: Character's job level can't go any higher.
//68: character's job level raised.
68: character's job level raised.
//69: Character's job level lowered.
69: Character's job level lowered.
//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: Already it has started siege warfare.
//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.
//77: The reference result of '%s' (name: id):
77: The reference result of '%s' (name: id):
//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 authorise you to do this action on this player.
81: Your GM level don't authorise 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 have 23 characters maximum.
//88: Character name sends to char-server to ask it.
88: Character name sends 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.
//92: All characters recalled!
92: All characters recalled!
//93: All online characters of the %s guild are near you.
93: All online characters of the %s guild are near you.
//94: Incorrect name/ID, or no one from the guild is online.
94: Incorrect name/ID, or no one from the guild is online.
//95: All online characters of the %s party are near you.
95: All online characters of the %s party are near you.
//96: Incorrect name or ID, or no one from the party is online.
96: Incorrect name or ID, or no one from the party is online.
//97: Item database reloaded.
97: Item database reloaded.
//98: Monster database reloaded.
98: Monster database reloaded.
//99: Skill database reloaded.
99: Skill database reloaded.
//100: Scripts reloaded.
100: Scripts reloaded.
//101: Login-server asked to reload GM accounts and their level.
101: Login-server asked to reload GM accounts and their level.
//102: Mounted Peco.
102: Mounted Peco.
//103: No longer spying on the %s guild.
103: No longer spying on the %s guild.
//104: Spying on the %s guild.
104: Spying on the %s guild.
//105: No longer spying on the %s party.
105: No longer spying on the %s party.
//106: Spying on the %s party.
106: Spying on the %s party.
//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 send you in jails.
117: GM has send you in jails.
//118: Player warped in jails.
118: Player warped in jails.
//119: This player is not in jails.
119: This player is not in jails.
//120: GM has discharge you.
120: GM has discharge you.
//121: Player warped to Prontera.
121: Player warped to Prontera.
//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.
//126: You accept any wisp (no wisper is refused).
126: You accept any wisp (no wisper is refused).
//127: You accept any wisp, except thoses from %d player(s):
127: You accept any wisp, except thoses from %d player(s):
//128: You refuse all wisps (no specifical wisper is refused).
128: You refuse all wisps (no specifical wisper is refused).
//129: You refuse all wisps, AND refuse wisps from %d player(s):
129: You refuse all wisps, AND refuse wisps from %d player(s):
//130: '%s' accept any wisp (no wisper is refused).
130: '%s' accept any wisp (no wisper is refused).
//131: '%s' accept any wisp, except thoses from %d player(s):
131: '%s' accept any wisp, except thoses from %d player(s):
//132: '%s' refuse all wisps (no specifical wisper is refused).
132: '%s' refuse all wisps (no specifical wisper is refused).
//133: '%s' refuse all wisps, AND refuse wisps from %d player(s):
133: '%s' refuse all wisps, AND refuse wisps from %d player(s):
//134: '%s' already accepts all wispers.
134: '%s' already accepts all wispers.
//135: '%s' now accepts all wispers.
135: '%s' now accepts all wispers.
//136: A GM has authorised all wispers for you.
136: A GM has authorised all wispers for you.
//137: '%s' already blocks all wispers.
137: '%s' already blocks all wispers.
//138: '%s' blocks now all wispers.
138: '%s' blocks now all wispers.
//139: A GM has blocked all wispers for you.
139: A GM has blocked all wispers for you.
//140: Character's disguise applied.
140: Character's disguise applied.
//141: Character's undisguise applied.
141: Character's undisguise applied.
//142: Character is not disguised.
142: Character is not disguised.
//143: Give a monster name/id please.
143: Give a monster name/id please.
//144: Invalid actual email. If you have default e-mail, type a@a.com.
144: Invalid actual email. If you have default e-mail, type a@a.com.
//145: Invalid new email. Please enter a real e-mail.
145: Invalid new email. Please enter a real e-mail.
//146: New email must be a real e-mail.
146: New email must be a real e-mail.
//147: New email must be different of the actual e-mail.
147: New email must be different of the actual e-mail.
//148: Information sended to login-server via char-server.
148: Information sended 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.
//152: %d GMs found.
152: %d GMs found.
//153: %s is Unknown Command.
153: %s is Unknown Command.
//154: %s failed.
154: %s failed.
//155: Impossible to change your job.
155: Impossible to change your job.
//156: HP or/and SP modified.
156: HP or/and SP modified.
//157: HP and SP are already with the good value.
157: HP and SP are already with the good value.
//158: Base level can't go any lower.
158: Base level can't go any lower.
//159: Job level can't go any lower.
159: Job level can't go any lower.
//160: PvP is already Off.
160: PvP is already Off.
//161: PvP is already On.
161: PvP is already On.
//162: GvG is already Off.
162: GvG is already Off.
//163: GvG is already On.
163: GvG is already On.
//164: Your memo point #%d doesn't exist.
164: Your memo point #%d doesn't exist.
//165: All monsters killed!
165: All monsters killed!
//166: No item has been refined!
166: No item has been refined!
//167: 1 item has been refined!
167: 1 item has been refined!
//168: %d items have been refined!
168: %d items have been refined!
//169: This item (%d: '%s') is not an equipment.
169: This item (%d: '%s') is not an equipment.
//170: This item is not an equipment.
170: This item is not an equipment.
//171: %d - void
171: %d - void
//172: You replace previous memo position %d - %s (%d,%d).
172: You replace previous memo position %d - %s (%d,%d).
//173: Note: you don't have the 'Warp' skill level to use it.
173: Note: you don't have the 'Warp' skill level to use it.
//174: Number of status points changed!
174: Number of status points changed!
//175: Number of skill points changed!
175: Number of skill points changed!
//176: Number of zenys changed!
176: Number of zenys changed!
//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 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 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.
//190: This player can already rename his/her pet.
190: This player can already rename his/her pet.
//191: Sorry, but this player has no pet.
191: Sorry, but this player has no pet.
//192: Impossible to change the character's job.
192: Impossible to change the character's job.
//193: Character's base level can't go any lower.
193: Character's base level can't go any lower.
//194: Character's job level can't go any lower.
194: Character's job level can't go any lower.
//195: All players have been kicked!
195: All players have been kicked!
//196: You already have this quest skill.
196: You already have this quest skill.
//197: This skill number doesn't exist or isn't a quest skill.
197: This skill number doesn't exist or isn't a quest skill.
//198: This skill number doesn't exist.
198: This skill number doesn't exist.
//199: This player has learned the skill.
199: This player has learned the skill.
//200: This player already has this quest skill.
200: This player already has this quest skill.
//201: You don't have this quest skill.
201: You don't have this quest skill.
//202: This player has forgotten the skill.
202: This player has forgotten the skill.
//203: This player doesn't have this quest skill.
203: This player doesn't have this quest skill.
//204: WARNING: more than 1000 spiritballs can CRASH your server and/or client!
204: WARNING: more than 1000 spiritballs can CRASH your server and/or client!
//205: You already have this number of spiritballs.
205: You already have this number of spiritballs.
//206: '%s' skill points reseted!
206: '%s' skill points reseted!
//207: '%s' stats points reseted!
207: '%s' stats points reseted!
//208: '%s' skill and stats points reseted!
208: '%s' skill and stats points reseted!
//209: Character's number of skill points changed!
209: Character's number of skill points changed!
//210: Character's number of status points changed!
210: Character's number of status points changed!
//211: Character's number of zenys changed!
211: Character's number of zenys changed!
//212: Cannot mount a Peco while in disguise.
212: Cannot mount a Peco while in disguise.
//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: Now, this player mounts a peco.
//217: This player can not mount a peco with his/her job.
217: This player can not mount a peco with his/her job.
//218: Now, this player has not more peco.
218: Now, this player has not more peco.
//219: %d day
219: %d day
//220: %d days
220: %d days
//221: %s %d hour
221: %s %d hour
//222: %s %d hours
222: %s %d hours
//223: %s %d minute
223: %s %d minute
//224: %s %d minutes
224: %s %d minutes
//225: %s and %d second
225: %s and %d second
//226: %s and %d seconds
226: %s and %d seconds
//227: Cannot wear disguise while riding a Peco.
227: Cannot wear disguise while riding a Peco.
//228: Character cannot wear disguise while riding a Peco.
228: Character cannot wear disguise while riding a Peco.
//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 actualy 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 actualy 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.
//239: Game time: After, the game will be in daylight for %s.
239: Game time: After, the game will be in daylight for %s.
//240: %d monster(s) summoned!
240: %d monster(s) summoned!
241: you be a killa..
242: you gonna be own3d..
@ -502,11 +261,7 @@
// Messages of others (not for GM commands)
// ----------------------------------------
//500: Actually, it's the night...
500: Actually, it's the night...
//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: The day has arrived!
502: The day has arrived!
//503: The night has fallen...
503: The night has fallen...

552
doc/miscnotes.txt Normal file
View File

@ -0,0 +1,552 @@
// ****************************************************
// * Miscellaneous Notes (Added by MC Cameri) *
// ****************************************************
// *****************************************************************
// * Emotions that will be shown if 'int type' is one of the case. *
// *****************************************************************
void clif_emotion(struct block_list *bl,int type);
case for 'int type':
0 = ! 10 = KO (Scissor) 20 = Hmmm 30 = Kiss 1 (R) 40 = Tsk tsk tsk (No)
1 = ? 11 = Fist (Stone) 21 = Number 1! 31 = Kiss 2 (L) 41 = Petting
2 = Music 12 = Hand (Paper) 22 = No (??) 32 = Smoking 42 = SP! (Timer)
3 = Heart 1 13 = Korean Flag 23 = OMG!! 33 = Okay 43 = Obsessed 2 (Dumb face, eyes popping)
4 = Sweat 14 = Heart 2 24 = O 34 = ... (Bugged) 44 = Come (Moving finger)
5 = Light bulb 15 = Thanks 25 = X 35 = ??? Flag 45 = Yawn (Sleepy)
6 = Annoyed 16 = Wah (Crying) 26 = Help! 36 = Evil 2 46 = Congratulations
7 = Smoke cloud 17 = Sorry 27 = Go! 37 = Obsessed 1 47 = HP! (Timer)
8 = $ 18 = Heh (Laughing) 28 = Sobbing 38 = Two Hearts
9 = ... 19 = Sweating 29 = Evil 1 39 = Tongue
// ********************************
// * Elemental Defense Resistance *
// ********************************
sd->subele[0] - Neutral Property
sd->subele[1] - Water Property
sd->subele[2] - Earth Property
sd->subele[3] - Fire Property
sd->subele[4] - Wind Property
sd->subele[5] - Poison Property
sd->subele[6] - Holy Property
sd->subele[7] - Shadow Property
sd->subele[8] - Ghost Property
sd->subele[9] - Undead Property
// ***************************************
// * Elemental Monster Attack Resistance *
// ***************************************
sd->subrace[0] - Neutral Type
sd->subrace[1] - Undead Type
sd->subrace[2] - Brute Type
sd->subrace[3] - Plant Type
sd->subrace[4] - Insect Type
sd->subrace[5] - Fish Type
sd->subrace[6] - Demon Type
sd->subrace[7] - Demi-Human Type
sd->subrace[8] - Angel Type
sd->subrace[9] - Dragon Type
sd->subrace[10] - Boss Type #1?
sd->subrace[11] - Boss Type #2?
// **************
// * Misc stuff *
// **************
WFIFOL(fd,2)=1; - Sever Closed
// *******************
// * Skills List *
// *******************
// * ID = Skill Name *
// *******************
ID Skill Name
1 = NV_BASIC
2 = SM_SWORD
3 = SM_TWOHAND
4 = SM_RECOVERY
5 = SM_BASH
6 = SM_PROVOKE
7 = SM_MAGNUM
8 = SM_ENDURE
9 = MG_SRECOVERY
10 = MG_SIGHT
11 = MG_NAPALMBEAT
12 = MG_SAFETYWALL
13 = MG_SOULSTRIKE
14 = MG_COLDBOLT
15 = MG_FROSTDIVER
16 = MG_STONECURSE
17 = MG_FIREBALL
18 = MG_FIREWALL
19 = MG_FIREBOLT
20 = MG_LIGHTNINGBOLT
21 = MG_THUNDERSTORM
22 = AL_DP
23 = AL_DEMONBANE
24 = AL_RUWACH
25 = AL_PNEUMA
26 = AL_TELEPORT
27 = AL_WARP
28 = AL_HEAL
29 = AL_INCAGI
30 = AL_DECAGI
31 = AL_HOLYWATER
32 = AL_CRUCIS
33 = AL_ANGELUS
34 = AL_BLESSING
35 = AL_CURE
36 = MC_INCCARRY
37 = MC_DISCOUNT
38 = MC_OVERCHARGE
39 = MC_PUSHCART
40 = MC_IDENTIFY
41 = MC_VENDING
42 = MC_MAMMONITE
43 = AC_OWL
44 = AC_VULTURE
45 = AC_CONCENTRATION
46 = AC_DOUBLE
47 = AC_SHOWER
48 = TF_DOUBLE
49 = TF_MISS
50 = TF_STEAL
51 = TF_HIDING
52 = TF_POISON
53 = TF_DETOXIFY
54 = ALL_RESURRECTION
55 = KN_SPEARMASTERY
56 = KN_PIERCE
57 = KN_BRANDISHSPEAR
58 = KN_SPEARSTAB
59 = KN_SPEARBOOMERANG
60 = KN_TWOHANDQUICKEN
61 = KN_AUTOCOUNTER
62 = KN_BOWLINGBASH
63 = KN_RIDING
64 = KN_CAVALIERMASTERY
65 = PR_MACEMASTERY
66 = PR_IMPOSITIO
67 = PR_SUFFRAGIUM
68 = PR_ASPERSIO
69 = PR_BENEDICTIO
70 = PR_SANCTUARY
71 = PR_SLOWPOISON
72 = PR_STRECOVERY
73 = PR_KYRIE
74 = PR_MAGNIFICAT
75 = PR_GLORIA
76 = PR_LEXDIVINA
77 = PR_TURNUNDEAD
78 = PR_LEXAETERNA
79 = PR_MAGNUS
80 = WZ_FIREPILLAR
81 = WZ_SIGHTRASHER
83 = WZ_METEOR
84 = WZ_JUPITEL
85 = WZ_VERMILION
86 = WZ_WATERBALL
87 = WZ_ICEWALL
88 = WZ_FROSTNOVA
89 = WZ_STORMGUST
90 = WZ_EARTHSPIKE
91 = WZ_HEAVENDRIVE
92 = WZ_QUAGMIRE
93 = WZ_ESTIMATION
94 = BS_IRON
95 = BS_STEEL
96 = BS_ENCHANTEDSTONE
97 = BS_ORIDEOCON
98 = BS_DAGGER
99 = BS_SWORD
100 = BS_TWOHANDSWORD
101 = BS_AXE
102 = BS_MACE
103 = BS_KNUCKLE
104 = BS_SPEAR
105 = BS_HILTBINDING
106 = BS_FINDINGORE
107 = BS_WEAPONRESEARCH
108 = BS_REPAIRWEAPON
109 = BS_SKINTEMPER
110 = BS_HAMMERFALL
111 = BS_ADRENALINE
112 = BS_WEAPONPERFECT
113 = BS_OVERTHRUST
114 = BS_MAXIMIZE
115 = HT_SKIDTRAP
116 = HT_LANDMINE
117 = HT_ANKLESNARE
118 = HT_SHOCKWAVE
119 = HT_SANDMAN
120 = HT_FLASHER
121 = HT_FREEZINGTRAP
122 = HT_BLASTMINE
123 = HT_CLAYMORETRAP
124 = HT_REMOVETRAP
125 = HT_TALKIEBOX
126 = HT_BEASTBANE
127 = HT_FALCON
128 = HT_STEELCROW
129 = HT_BLITZBEAT
130 = HT_DETECTING
131 = HT_SPRINGTRAP
132 = AS_RIGHT
133 = AS_LEFT
134 = AS_KATAR
135 = AS_CLOAKING
136 = AS_SONICBLOW
137 = AS_GRIMTOOTH
138 = AS_ENCHANTPOISON
139 = AS_POISONREACT
140 = AS_VENOMDUST
141 = AS_SPLASHER
142 = NV_FIRSTAID
143 = NV_TRICKDEAD
144 = SM_MOVINGRECOVERY
145 = SM_FATALBLOW
146 = SM_AUTOBERSERK
147 = AC_MAKINGARROW
148 = AC_CHARGEARROW
149 = TF_SPRINKLESAND
150 = TF_BACKSLIDING
151 = TF_PICKSTONE
152 = TF_THROWSTONE
153 = MC_CARTREVOLUTION
154 = MC_CHANGECART
155 = MC_LOUD
156 = AL_HOLYLIGHT
157 = MG_ENERGYCOAT
158 = NPC_PIERCINGATT
159 = NPC_MENTALBREAKER
160 = NPC_RANGEATTACK
161 = NPC_ATTRICHANGE
162 = NPC_CHANGEWATER
163 = NPC_CHANGEGROUND
164 = NPC_CHANGEFIRE
165 = NPC_CHANGEWIND
166 = NPC_CHANGEPOISON
167 = NPC_CHANGEHOLY
168 = NPC_CHANGEDARLNESS
169 = NPC_CHANGETELEKINESIS
170 = NPC_CRITICALSLASH
171 = NPC_COMBOATTACK
172 = NPC_GUIDEATTACK
173 = NPC_SELFDESTRUCTION
174 = NPC_SPLASHATTACK
175 = NPC_SUICIDE
176 = NPC_POISON
177 = NPC_BLINDATTACK
178 = NPC_SILENCEATTACK
179 = NPC_STUNATTACK
180 = NPC_PETRIFYATTACK
181 = NPC_CURSEATTACK
182 = NPC_SLEEPATTACK
183 = NPC_RANDOMATTACK
184 = NPC_WATERATTACK
185 = NPC_GROUNDATTACK
186 = NPC_FIREATTACK
187 = NPC_WINDATTACK
188 = NPC_POISONATTACK
189 = NPC_HOLYATTACK
190 = NPC_DARKNESSATTACK
191 = NPC_TELEKINESISATTACK
192 = NPC_MAGICALATTACK
193 = NPC_METAMORPHOSIS
194 = NPC_PROVOCATION
195 = NPC_SMOKING
196 = NPC_SUMMONSLAVE
197 = NPC_EMOTION
198 = NPC_TRANSFORMATION
199 = NPC_BLOODDRAIN
200 = NPC_ENERGYDRAIN
201 = NPC_KEEPING
202 = NPC_DARKBREATH
203 = NPC_DARKBLESSING
204 = NPC_BARRIER
205 = NPC_DEFENDER
206 = NPC_LICK
207 = NPC_HALLUCINATION
208 = NPC_REBIRTH
209 = NPC_SUMMONMONSTER
210 = RG_SNATCHER
211 = RG_STEALCOIN
212 = RG_BACKSTAP
213 = RG_TUNNELDRIVE
214 = RG_RAID
215 = RG_STRIPWEAPON
216 = RG_STRIPSHIELD
217 = RG_STRIPARMOR
218 = RG_STRIPHELM
219 = RG_INTIMIDATE
220 = RG_GRAFFITI
221 = RG_FLAGGRAFFITI
222 = RG_CLEANER
223 = RG_GANGSTER
224 = RG_COMPULSION
225 = RG_PLAGIARISM
226 = AM_AXEMASTERY
227 = AM_LEARNINGPOTION
228 = AM_PHARMACY
229 = AM_DEMONSTRATION
230 = AM_ACIDTERROR
231 = AM_POTIONPITCHER
232 = AM_CANNIBALIZE
233 = AM_SPHEREMINE
234 = AM_CP_WEAPON
235 = AM_CP_SHIELD
236 = AM_CP_ARMOR
237 = AM_CP_HELM
248 = CR_TRUST
249 = CR_AUTOGUARD
250 = CR_SHIELDCHARGE
251 = CR_SHIELDBOOMERANG
252 = CR_REFLECTSHIELD
253 = CR_HOLYCROSS
254 = CR_GRANDCROSS
255 = CR_DEVOTION
256 = CR_PROVIDENCE
257 = CR_DEFENDER
258 = CR_SPEARQUICKEN
259 = MO_IRONHAND
260 = MO_SPIRITSRECOVERY
261 = MO_CALLSPIRITS
262 = MO_ABSORBSPIRITS
263 = MO_TRIPLEATTACK
264 = MO_BODYRELOCATION
265 = MO_DODGE
266 = MO_INVESTIGATE
267 = MO_FINGEROFFENSIVE
268 = MO_STEELBODY
269 = MO_BLADESTOP
270 = MO_EXPLOSIONSPIRITS
271 = MO_EXTREMITYFIST
272 = MO_CHAINCOMBO
273 = MO_COMBOFINISH
274 = SA_ADVANCEDBOOK
275 = SA_CASTCANCEL
276 = SA_MAGICROD
277 = SA_SPELLBREAKER
278 = SA_FREECAST
279 = SA_AUTOSPELL
280 = SA_FLAMELAUNCHER
281 = SA_FROSTWEAPON
282 = SA_LIGHTNINGLOADER
283 = SA_SEISMICWEAPON
284 = SA_DRAGONOLOGY
285 = SA_VOLCANO
286 = SA_DELUGE
287 = SA_VIOLENTGALE
288 = SA_LANDPROTECTOR
289 = SA_DISPELL
290 = SA_ABRACADABRA
291 = SA_MONOCELL
292 = SA_CLASSCHANGE
293 = SA_SUMMONMONSTER
294 = SA_REVERSEORCISH
295 = SA_DEATH
296 = SA_FORTUNE
297 = SA_TAMINGMONSTER
298 = SA_QUESTION
299 = SA_GRAVITY
300 = SA_LEVELUP
301 = SA_INSTANTDEATH
302 = SA_FULLRECOVERY
303 = SA_COMA
304 = BD_ADAPTATION
305 = BD_ENCORE
306 = BD_LULLABY
307 = BD_RICHMANKIM
308 = BD_ETERNALCHAOS
309 = BD_DRUMBATTLEFIELD
310 = BD_RINGNIBELUNGEN
311 = BD_ROKISWEIL
312 = BD_INTOABYSS
313 = BD_SIEGFRIED
315 = BA_MUSICALLESSON
316 = BA_MUSICALSTRIKE
317 = BA_DISSONANCE
318 = BA_FROSTJOKE
319 = BA_WHISTLE
320 = BA_ASSASSINCROSS
321 = BA_POEMBRAGI
322 = BA_APPLEIDUN
323 = DC_DANCINGLESSON
324 = DC_THROWARROW
325 = DC_UGLYDANCE
326 = DC_SCREAM
327 = DC_HUMMING
328 = DC_DONTFORGETME
329 = DC_FORTUNEKISS
330 = DC_SERVICEFORYOU
334 = WE_MALE
335 = WE_FEMALE
336 = WE_CALLPARTNER
355 = LK_AURABLADE
356 = LK_PARRYING
357 = LK_CONCENTRATION
358 = LK_TENSIONRELAX
359 = LK_BERSERK
361 = HP_ASSUMPTIO
362 = HP_BASILICA
363 = HP_MEDITATIO
364 = HW_SOULDRAIN
365 = HW_MAGICCRASHER
366 = HW_MAGICPOWER
367 = PA_PRESSURE
368 = PA_SACRIFICE
369 = PA_GOSPEL
370 = CH_PALMSTRIKE
371 = CH_TIGERFIST
372 = CH_CHAINCRUSH
373 = PF_HPCONVERSION
374 = PF_SOULCHANGE
375 = PF_SOULBURN
376 = ASC_KATAR
377 = ASC_HALLUCINATION
378 = ASC_EDP
379 = ASC_BREAKER
380 = SN_SIGHT
381 = SN_FALCONASSAULT
382 = SN_SHARPSHOOTING
383 = SN_WINDWALK
384 = WS_MELTDOWN
385 = WS_CREATECOIN
386 = WS_CREATENUGGET
387 = WS_CARTBOOST
388 = WS_SYSTEMCREATE
389 = ST_CHASEWALK
390 = ST_REJECTSWORD
392 = CR_ALCHEMY
393 = CR_SYNTHESISPOTION
394 = CG_ARROWVULCAN
395 = CG_MOONLIT
396 = CG_MARIONETTE
397 = LK_SPIRALPIERCE
398 = LK_HEADCRUSH
399 = LK_JOINTBEAT
400 = HW_NAPALMVULCAN
401 = CH_SOULCOLLECT
402 = PF_MINDBREAKER
403 = PF_MEMORIZE
404 = PF_FOGWALL
405 = PF_SPIDERWEB
406 = ASC_METEORASSAULT
407 = ASC_CDP
408 = WE_BABY
409 = WE_CALLPARENT
410 = WE_CALLBABY
411 = TK_RUN
412 = TK_READYSTORM
413 = TK_STORMKICK
414 = TK_READYDOWN
415 = TK_DOWNKICK
416 = TK_READYTURN
417 = TK_TURNKICK
418 = TK_READYCOUNTER
419 = TK_COUNTER
420 = TK_DODGE
421 = TK_JUMPKICK
422 = TK_HPTIME
423 = TK_SPTIME
424 = TK_POWER
425 = TK_SEVENWIND
426 = TK_HIGHJUMP
427 = SG_FEEL
428 = SG_SUN_WARM
429 = SG_MOON_WARM
430 = SG_STAR_WARM
431 = SG_SUN_COMFORT
432 = SG_MOON_COMFORT
433 = SG_STAR_COMFORT
434 = SG_HATE
435 = SG_SUN_ANGER
436 = SG_MOON_ANGER
437 = SG_STAR_ANGER
438 = SG_SUN_BLESS
439 = SG_MOON_BLESS
440 = SG_STAR_BLESS
441 = SG_DEVIL
442 = SG_FRIEND
443 = SG_KNOWLEDGE
444 = SG_FUSION
445 = SL_ALCHEMIST
446 = AM_BERSERKPITCHER
447 = SL_MONK
448 = SL_STAR
449 = SL_SAGE
450 = SL_CRUSADER
451 = SL_SUPERNOVICE
452 = SL_KNIGHT
453 = SL_WIZARD
454 = SL_PRIEST
455 = SL_BARDDANCER
456 = SL_ROGUE
457 = SL_ASSASIN
458 = SL_BLACKSMITH
459 = BS_ADRENALINE2
460 = SL_HUNTER
461 = SL_SOULLINKER
462 = SL_KAIZEL
463 = SL_KAAHI
464 = SL_KAUPE
465 = SL_KAITE
466 = SL_KAINA
467 = SL_STIN
468 = SL_STUN
469 = SL_SMA
470 = SL_SWOO
471 = SL_SKE
472 = SL_SKA
10000 = GD_APPROVAL
10001 = GD_KAFRACONTRACT
10002 = GD_GUARDRESEARCH
10003 = GD_CHARISMA
10004 = GD_EXTENSION
// ************************
// * Item DB - Use Script *
// ************************
itemskill:
-Format: itemskill skill_id,skill_lvl,"name";
-Example: itemskill 28,3,"Heal"; //Healing skill
itemheal:
-Format: itemheal hp,sp;
-Example: itemheal 30,0; //+30 HP, +0 SP.
sc_start:
-Format: sc_start SC_CONSTANT,duration,value;
-Example: sc_start SC_POISON,1800,; //Starts Poison Status for 30 seconds
sc_end:
-Format: sc_end SC_CONSTANT;
-Example: sc_end SC_BLIND; //Ends Blind Status
warp:
-Format: warp "map",x,y;
-Example: warp "Random",0,0; //Fly wing
-Example: warp "SavePoint",0,0; //Butterfly wing
getitem:
-Format: getitem item_id,count;
-Example: getitem 512,2; //Gives you two Apples
produce:
-Format: produce produce_type;
-Example: produce 16; //Mini-furnace
pet:
-Format: pet pet_id;
-Example: pet 1002; //Taming item for Poring
monster:
-Example: monster "this",0,0,"--ja--",-1,1,""; //Dead branch
percentheal:
-Format: percentheal percent_hp,percent_sp;
-Example: percentheal 100,100; //Heals you 100% of both HP and SP
// **************************
// * Item DB - Equip Script *
// **************************

View File

@ -14,6 +14,8 @@
#define RETCODE "\n" // (LFUnix系
#endif
#define RET RETCODE
#define FIFOSIZE_SERVERLINK 128*1024
// set to 0 to not check IP of player between each server.

View File

@ -191,6 +191,46 @@ int isGM(int account_id) {
return 0;
}
//----------------------------------------------------------------------
// Adds a new GM using acc id and level
//----------------------------------------------------------------------
void addGM(int account_id, int level) {
int i;
int do_add = 0;
for(i = 0; i < auth_num; i++) {
if (auth_dat[i].account_id==account_id) {
do_add = 1;
break;
}
}
for(i = 0; i < GM_num; i++)
if (gm_account_db[i].account_id == account_id) {
if (gm_account_db[i].level == level)
printf("addGM: GM account %d defined twice (same level: %d).\n", account_id, level);
else {
printf("addGM: GM account %d defined twice (levels: %d and %d).\n", account_id, gm_account_db[i].level, level);
gm_account_db[i].level = level;
}
return;
}
// if new account
if (i == GM_num && do_add) {
if (GM_num >= GM_max) {
GM_max += 256;
gm_account_db = realloc(gm_account_db, sizeof(struct gm_account) * GM_max);
memset(gm_account_db + (GM_max - 256), 0, sizeof(struct gm_account) * 256);
}
gm_account_db[GM_num].account_id = account_id;
gm_account_db[GM_num].level = level;
GM_num++;
if (GM_num >= 4000) {
printf("***WARNING: 4000 GM accounts found. Next GM accounts are not read.\n");
login_log("***WARNING: 4000 GM accounts found. Next GM accounts are not read." RETCODE);
}
}
}
//-------------------------------------------------------
// Reading function of GM accounts file (and their level)
//-------------------------------------------------------
@ -198,8 +238,9 @@ int read_gm_account() {
char line[512];
FILE *fp;
int account_id, level;
int i, line_counter;
int line_counter;
struct stat file_stat;
int start_range = 0, end_range = 0, is_range = 0, current_id = 0;
if(gm_account_db) free(gm_account_db);
GM_num = 0;
@ -227,8 +268,9 @@ int read_gm_account() {
line_counter++;
if ((line[0] == '/' && line[1] == '/') || line[0] == '\0' || line[0] == '\n' || line[0] == '\r')
continue;
if (sscanf(line, "%d %d", &account_id, &level) != 2 && sscanf(line, "%d: %d", &account_id, &level) != 2)
printf("read_gm_account: file [%s], invalid 'id_acount level' format (line #%d).\n", GM_account_filename, line_counter);
is_range = (sscanf(line, "%d%*[-~]%d %d",&start_range,&end_range,&level)==3); // ID Range [MC Cameri]
if (!is_range && sscanf(line, "%d %d", &account_id, &level) != 2 && sscanf(line, "%d: %d", &account_id, &level) != 2)
printf("read_gm_account: file [%s], invalid 'acount_id|range level' format (line #%d).\n", GM_account_filename, line_counter);
else if (level <= 0)
printf("read_gm_account: file [%s] %dth account (line #%d) (invalid level [0 or negative]: %d).\n", GM_account_filename, GM_num+1, line_counter, level);
else {
@ -236,37 +278,23 @@ int read_gm_account() {
printf("read_gm_account: file [%s] %dth account (invalid level, but corrected: %d->99).\n", GM_account_filename, GM_num+1, level);
level = 99;
}
for(i = 0; i < GM_num; i++)
if (gm_account_db[i].account_id == account_id) {
if (gm_account_db[i].level == level)
printf("read_gm_account: GM account %d defined twice (same level: %d).\n", account_id, level);
else {
printf("read_gm_account: GM account %d defined twice (levels: %d and %d).\n", account_id, gm_account_db[i].level, level);
gm_account_db[i].level = level;
}
break;
}
// if new account
if (i == GM_num) {
if (GM_num >= GM_max) {
GM_max += 256;
gm_account_db = realloc(gm_account_db, sizeof(struct gm_account) * GM_max);
memset(gm_account_db + (GM_max - 256), 0, sizeof(struct gm_account) * 256);
}
gm_account_db[GM_num].account_id = account_id;
gm_account_db[GM_num].level = level;
GM_num++;
if (GM_num >= 4000) {
printf("***WARNING: 4000 GM accounts found. Next GM accounts are not readed.\n");
login_log("***WARNING: 4000 GM accounts found. Next GM accounts are not readed." RETCODE);
}
if (is_range) {
if (start_range==end_range)
printf("read_gm_account: file [%s] invalid range, beginning of range is equal to end of range (line #%d).\n", GM_account_filename, line_counter);
else if (start_range>end_range)
printf("read_gm_account: file [%s] invalid range, beginning of range must be lower than end of range (line #%d).\n", GM_account_filename, line_counter);
else
for (current_id = start_range;current_id<=end_range;current_id++)
addGM(current_id,level);
} else {
addGM(account_id,level);
}
}
}
fclose(fp);
printf("read_gm_account: file '%s' readed (%d GM accounts found).\n", GM_account_filename, GM_num);
login_log("read_gm_account: file '%s' readed (%d GM accounts found)." RETCODE, GM_account_filename, GM_num);
printf("read_gm_account: file '%s' read (%d GM accounts found).\n", GM_account_filename, GM_num);
login_log("read_gm_account: file '%s' read (%d GM accounts found)." RETCODE, GM_account_filename, GM_num);
return 0;
}
@ -447,6 +475,7 @@ int search_account_index(char* account_name) {
quantity = 0;
index = -1;
for(i = 0; i < auth_num; i++) {
// Without case sensitive check (increase the number of similar account names found)
if (stricmp(auth_dat[i].userid, account_name) == 0) {
@ -3872,8 +3901,8 @@ int do_init(int argc, char **argv) {
gm_account_db = NULL;
GM_num = 0;
GM_max = 0;
read_gm_account();
mmo_auth_init();
read_gm_account();
// set_termfunc(mmo_auth_sync);
set_defaultparse(parse_login);
login_fd = make_listen_port(login_port);

View File

@ -220,6 +220,7 @@ ATCOMMAND_FUNC(refresh); // by MC Cameri
ATCOMMAND_FUNC(petid); // by MC Cameri
ATCOMMAND_FUNC(identify); // by MC Cameri
ATCOMMAND_FUNC(gmotd); // Added by MC Cameri, created by davidsiaw
ATCOMMAND_FUNC(misceffect); // by MC Cameri
#ifndef TXT_ONLY
ATCOMMAND_FUNC(checkmail); // [Valaris]
@ -475,6 +476,7 @@ static AtCommandInfo atcommand_info[] = {
{ AtCommand_PetId, "@petid", 40, atcommand_petid }, // by MC Cameri
{ AtCommand_Identify, "@identify", 40, atcommand_identify }, // by MC Cameri
{ AtCommand_Gmotd, "@gmotd", 0, atcommand_gmotd }, // Added by MC Cameri, created by davidsiaw
{ AtCommand_MiscEffect, "@misceffect", 50, atcommand_misceffect }, // by MC Cameri
#ifndef TXT_ONLY // sql-only commands
{ AtCommand_CheckMail, "@checkmail", 1, atcommand_listmail }, // [Valaris]
@ -7914,6 +7916,21 @@ atcommand_gmotd(
return 0;
}
int atcommand_misceffect(
const int fd, struct map_session_data* sd,
const char* command, const char* message)
{
int effect = 0;
nullpo_retr(-1, sd);
if (!message || !*message)
return -1;
if (sscanf(message, "%d", &effect) < 1)
return -1;
clif_misceffect(&sd->bl,effect);
return 0;
}
#ifndef TXT_ONLY /* Begin SQL-Only commands */
/*==========================================

View File

@ -200,6 +200,7 @@ enum AtCommandType {
AtCommand_PetId, // by MC Cameri
AtCommand_Identify, // by MC Cameri
AtCommand_Gmotd, // Added by MC Cameri, created by davidsiaw
AtCommand_MiscEffect, // by MC Cameri
// SQL-only commands start
#ifndef TXT_ONLY

View File

@ -408,6 +408,7 @@ int charcommand_petfriendly(
t = pl_sd->pet.intimate;
pl_sd->pet.intimate = friendly;
clif_send_petstatus(pl_sd);
clif_pet_emotion(pl_sd->pd,0);
if (battle_config.pet_status_support) {
if ((pl_sd->pet.intimate > 0 && t <= 0) ||
(pl_sd->pet.intimate <= 0 && t > 0)) {

View File

@ -2916,12 +2916,13 @@ int buildin_getequipisenableref(struct script_state *st)
num=conv_num(st,& (st->stack->stack_data[st->start+2]));
sd=script_rid2sd(st);
i=pc_checkequip(sd,equip[num-1]);
if(i >= 0 && num<7 && sd->inventory_data[i] && (num!=1 || sd->inventory_data[i]->def > 1
if(i >= 0 && num<7 && sd->inventory_data[i] && (num!=1
|| sd->inventory_data[i]->def > 1
|| (sd->inventory_data[i]->def==1 && sd->inventory_data[i]->equip_script==NULL)
|| (sd->inventory_data[i]->def<=0 && sd->inventory_data[i]->equip_script!=NULL))
){
|| (sd->inventory_data[i]->def<=0 && sd->inventory_data[i]->equip_script!=NULL)))
{
push_val(st->stack,C_INT,1);
}else{
} else {
push_val(st->stack,C_INT,0);
}