summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/LICENCE_JA698
-rw-r--r--doc/client_packet.txt1356
-rw-r--r--doc/command.txt14
-rw-r--r--doc/conf_ref.txt1028
-rw-r--r--doc/db_ref.txt202
-rw-r--r--doc/help.txt4
-rw-r--r--doc/inter_server_packet.txt218
-rw-r--r--doc/packet_table_en.txt1066
-rw-r--r--doc/readme.txt2
-rw-r--r--src/char/int_guild.c200
-rw-r--r--src/char/int_party.c82
-rw-r--r--src/char/int_storage.c42
-rw-r--r--src/char/inter.c58
-rw-r--r--src/char_sql/char.c14
-rw-r--r--src/char_sql/int_guild.c102
-rw-r--r--src/char_sql/int_party.c52
-rw-r--r--src/char_sql/int_storage.c2
-rw-r--r--src/char_sql/inter.c8
-rw-r--r--src/char_sql/itemdb.c6
-rw-r--r--src/char_sql/itemdb.h4
-rw-r--r--src/common/db.c12
-rw-r--r--src/common/lock.c12
-rw-r--r--src/common/mmo.h16
-rw-r--r--src/common/nullpo.c14
-rw-r--r--src/common/nullpo.h136
-rw-r--r--src/common/timer.c10
-rw-r--r--src/common/version.h16
-rw-r--r--src/login_sql/login.c2
-rw-r--r--src/map/battle.c1258
-rw-r--r--src/map/battle.h26
-rw-r--r--src/map/chat.c62
-rw-r--r--src/map/chrif.c36
-rw-r--r--src/map/guild.c236
-rw-r--r--src/map/intif.c136
-rw-r--r--src/map/itemdb.c38
-rw-r--r--src/map/map.c258
-rw-r--r--src/map/map.h32
-rw-r--r--src/map/mob.c296
-rw-r--r--src/map/mob.h12
-rw-r--r--src/map/party.c110
-rw-r--r--src/map/path.c28
-rw-r--r--src/map/pc.h8
-rw-r--r--src/map/skill.h22
-rw-r--r--src/map/storage.c8
-rw-r--r--src/map/trade.c14
-rw-r--r--src/tool/backup54
-rw-r--r--src/tool/cgi/addaccount.cgi88
-rw-r--r--src/tool/convert.c4
-rw-r--r--src/txt-converter/common/mmo.h18
-rw-r--r--src/txt-converter/login/login-converter.c2
50 files changed, 4061 insertions, 4061 deletions
diff --git a/doc/LICENCE_JA b/doc/LICENCE_JA
index d630607..fcf6801 100644
--- a/doc/LICENCE_JA
+++ b/doc/LICENCE_JA
@@ -1,11 +1,11 @@
- GNU ˆę”ĘŒöO—˜—p‹–‘řŒ_–ń‘
- ƒo[ƒWƒ‡ƒ“2A1991”N6ŒŽ
- “ú–{Œę–óA2002”N5ŒŽ20“ú
+ GNU 一般公衆利用許諾契約書
+ バージョン2、1991年6月
+ 日本語訳、2002年5月20日
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- ‚ą‚Ě—˜—p‹–‘řŒ_–ń‘‚đAˆęŽšˆę‹ĺ‚ť‚Ě‚Ü‚Ü‚É•Ąť‚ľ”Đ•z‚ˇ‚é‚ą‚Ć‚Í‹–‰Â‚ˇ‚éB
- ‚ľ‚Š‚ľ•ĎX‚Í”F‚ß‚Č‚˘B
+ この利用許諾契約書を、一字一句そのままに複製し頒布することは許可する。
+ しかし変更は認めない。
This is an unofficial translation of the GNU General Public License
into Japanese. It was not published by the Free Software Foundation,
@@ -14,311 +14,311 @@
that. However, we hope that this translation will help Japanese
speakers understand the GNU GPL better.
- (–ó: ˆČ‰ş‚ÍGNU General Public License‚Ě”ńŒöŽŽ‚Č“ú–{Œę–ó‚Ĺ‚ˇB‚ą‚ę‚̓t
- ƒŠ[ƒ\ƒtƒgƒEƒFƒAŕ’c(the Free Software Foundataion)‚É‚ć‚Á‚Ä”­•\‚ł‚ę‚˝
- ‚ŕ‚Ě‚Ĺ‚Í‚Č‚­AGNU GPL‚đ“K—p‚ľ‚˝ƒ\ƒtƒgƒEƒFƒA‚̔ЕzđŒ‚đ–@“I‚É—LŒř‚ČŒ`
- ‚ŏq‚ׂ˝‚ŕ‚Ě‚Ĺ‚Í‚ ‚č‚Ü‚š‚ńB”Đ•zđŒ‚Ć‚ľ‚Ä‚ÍGNU GPL‚̉pŒę”ĹƒeƒLƒXƒg‚Ĺ
- Žw’č‚ł‚ę‚Ä‚˘‚é‚ŕ‚Ě‚Ě‚Ý‚Ş—LŒř‚Ĺ‚ˇB‚ľ‚Š‚ľ‚Č‚Ş‚çAŽ„‚˝‚ż‚Í‚ą‚Ě–|–󂪁A
- “ú–{Œę‚đŽg—p‚ˇ‚élX‚É‚Ć‚Á‚ÄGNU GPL‚đ‚ć‚č—Ç‚­—‰đ‚ˇ‚鏕‚Ż‚Ć‚Č‚é‚ą‚Ć‚đ
- –]‚ń‚Ĺ‚˘‚Ü‚ˇB)
-
- –|–ó‚Í ”Ş“c^s<mhatta@gnu.org>‚ލs‚Á‚˝BŒ´•ś‚Í
- http://www.gnu.org/licenses/gpl.txt‚Ĺ‚ ‚éBŒë–ó‚ĚŽw“E‚â‰ü‘PˆÄ‚đŠ˝Œ}‚ˇ
- ‚éB
- ‚Í‚ś‚ß‚É
-
-ƒ\ƒtƒgƒEƒFƒAŒü‚Żƒ‰ƒCƒZƒ“ƒX‚̑唟‚́A‚ ‚Č‚˝‚Ş‚ť‚Ěƒ\ƒtƒgƒEƒFƒA‚đ‹¤—L‚ľ‚˝
-‚č•ĎX‚ľ‚˝‚股‚鎊—R‚đ’D‚¤‚悤‚ɐ݌v‚ł‚ę‚Ä‚˘‚Ü‚ˇB‘ÎĆ“I‚ɁAGNU ˆę”ĘŒö
-O—˜—p‹–‘řŒ_–ń‘‚́A‚ ‚Č‚˝‚ރtƒŠ[ƒ\ƒtƒgƒEƒFƒA‚đ‹¤—L‚ľ‚˝‚č•ĎX‚ľ‚˝‚股
-‚鎊—R‚đ•ŰŘ‚ˇ‚é--‚ˇ‚Č‚í‚żAƒ\ƒtƒgƒEƒFƒA‚Ş‚ť‚Ěƒ†[ƒU‚ˇ‚ׂĂɂƂÁ‚ătƒŠ[
-‚Ĺ‚ ‚é‚ą‚Ć‚đ•ŰŘ‚ˇ‚é‚ą‚Ć‚đ–Ú“I‚Ć‚ľ‚Ä‚˘‚Ü‚ˇB‚ą‚Ěˆę”ĘŒöO—˜—p‹–‘řŒ_–ń‘
-‚̓tƒŠ[ƒ\ƒtƒgƒEƒFƒAŕ’c‚Ěƒ\ƒtƒgƒEƒFƒA‚Ě‚Ů‚Ć‚ń‚Ç‚É“K—p‚ł‚ę‚Ä‚¨‚čA‚Ü‚˝
-GNU GPL‚đ“K—p‚ˇ‚é‚ĆŒˆ‚ß‚˝ƒtƒŠ[ƒ\ƒtƒgƒEƒFƒAŕ’cˆČŠO‚̍ěŽŇ‚É‚ć‚éƒvƒƒO
-ƒ‰ƒ€‚É‚ŕ“K—p‚ł‚ę‚Ä‚˘‚Ü‚ˇ(‚˘‚­‚‚Š‚ĚƒtƒŠ[ƒ\ƒtƒgƒEƒFƒAŕ’c‚Ěƒ\ƒtƒgƒEƒF
-ƒA‚ɂ́AGNU GPL‚Ĺ‚Í‚Č‚­GNU ƒ‰ƒCƒuƒ‰ƒŠˆę”ĘŒöO—˜—p‹–‘řŒ_–ń‘‚Ş“K—p‚ł‚ę
-‚Ä‚˘‚é‚ą‚Ć‚ŕ‚ ‚č‚Ü‚ˇ)B‚ ‚Č‚˝‚ŕ‚Ü‚˝A‚˛ŽŠ•Ş‚ĚƒvƒƒOƒ‰ƒ€‚ÉGNU GPL‚đ“K—p
-‚ˇ‚é‚ą‚Ć‚Ş‰Â”\‚Ĺ‚ˇB
-
-Ž„‚˝‚ż‚ރtƒŠ[ƒ\ƒtƒgƒEƒFƒA‚ĆŒž‚¤‚Ć‚ŤA‚ť‚ę‚Í—˜—p‚ĚŽŠ—R‚ɂ‚˘‚ÄŒž‹y‚ľ‚Ä
-‚˘‚é‚Ě‚Ĺ‚ ‚Á‚āA‰żŠi‚Í–â‘č‚É‚ľ‚Ä‚˘‚Ü‚š‚ńBŽ„‚˝‚ż‚Ěˆę”ĘŒöO—˜—p‹–‘řŒ_–ń
-‘‚́A‚ ‚Č‚˝‚ރtƒŠ[ƒ\ƒtƒgƒEƒFƒA‚Ě•Ąť•¨‚đ”Đ•z‚ˇ‚鎊—R‚đ•ŰŘ‚ˇ‚é‚悤Ý
-Œv‚ł‚ę‚Ä‚˘‚Ü‚ˇ(Šó–]‚ɉž‚ś‚Ä‚ť‚ĚŽí‚ĚƒT[ƒrƒX‚Ɏ萔—ż‚đ‰Ű‚ˇŽŠ—R‚ŕ•ŰŘ‚ł
-‚ę‚Ü‚ˇ)B‚Ü‚˝A‚ ‚Č‚˝‚ރ\[ƒXƒR[ƒh‚đŽó‚ŻŽć‚é‚ŠA‚ ‚邢‚Í–]‚߂΂ť‚ę‚đ
-“üŽč‚ˇ‚é‚ą‚Ć‚Ş‰Â”\‚Ĺ‚ ‚é‚Ć‚˘‚¤‚ą‚ƁA‚ ‚Č‚˝‚ރ\ƒtƒgƒEƒFƒA‚đ•ĎX‚ľA‚ť‚Ě
-ˆę•”‚đV‚˝‚ČƒtƒŠ[‚ĚƒvƒƒOƒ‰ƒ€‚Ĺ—˜—p‚Ĺ‚Ť‚é‚Ć‚˘‚¤‚ą‚ƁA‚ť‚ľ‚āAˆČă‚ŏq
-‚ׂ˝‚悤‚Č‚ą‚Ć‚Ş‚Ĺ‚Ť‚é‚Ć‚˘‚¤‚ą‚Ć‚Ş‚ ‚Č‚˝‚É’m‚ç‚ł‚ę‚é‚Ć‚˘‚¤‚ą‚Ć‚ŕ•ŰŘ‚ł
-‚ę‚Ü‚ˇB
-
-‚ ‚Č‚˝‚ĚŒ —˜‚đŽç‚é‚˝‚߁AŽ„‚˝‚ż‚Í’N‚Š‚Ş‚ ‚Č‚˝‚Ě—L‚ˇ‚é‚ą‚ę‚ç‚ĚŒ —˜‚đ”Ű’č
-‚ˇ‚é‚ą‚Ć‚âA‚ą‚ę‚ç‚ĚŒ —˜‚đ•úŠü‚ˇ‚é‚悤—v‹‚ˇ‚é‚ą‚Ć‚đ‹ÖŽ~‚ˇ‚é‚Ć‚˘‚¤§ŒŔ
-‚đ‰Á‚Ś‚é•K—v‚Ş‚ ‚č‚Ü‚ˇB‚ć‚Á‚āA‚ ‚Č‚˝‚ރ\ƒtƒgƒEƒFƒA‚Ě•Ąť•¨‚đ”Đ•z‚ľ‚˝
-‚č‚ť‚ę‚đ•ĎX‚ľ‚˝‚股‚éę‡‚ɂ́A‚ą‚ę‚ç‚̐§ŒŔ‚Ě‚˝‚ß‚É‚ ‚Č‚˝‚É‚ ‚éŽí‚̐Ó
-”C‚Ş”­ś‚ˇ‚é‚ą‚Ć‚É‚Č‚č‚Ü‚ˇB
-
-—á‚Ś‚΁A‚ ‚Č‚˝‚ރtƒŠ[‚ČƒvƒƒOƒ‰ƒ€‚Ě•Ąť•¨‚đ”Đ•z‚ˇ‚éę‡A—L—ż‚Š–ł—ż‚É
-ŠÖ‚í‚炸A‚ ‚Č‚˝‚ÍŽŠ•Ş‚Ş—L‚ˇ‚錠—˜‚đ‘S‚ÄŽó—ĚŽŇ‚É—^‚Ś‚Č‚Ż‚ę‚΂Ȃč‚Ü‚š‚ńB
-‚Ü‚˝A‚ ‚Č‚˝‚͔ނç‚ŕƒ\[ƒXƒR[ƒh‚đŽó‚ŻŽć‚é‚ŠŽč‚É“ü‚ę‚é‚ą‚Ć‚Ş‚Ĺ‚Ť‚é‚悤
-•ŰŘ‚ľ‚Č‚Ż‚ę‚΂Ȃč‚Ü‚š‚ńB‚ť‚ľ‚āA‚ ‚Č‚˝‚͔ނç‚ɑ΂ľ‚ÄˆČ‰ş‚ŏq‚ׂéđŒ
-‚đŽŚ‚ľA”Ţ‚ç‚ÉŽŠ‚ç‚ĚŽ‚ÂŒ —˜‚ɂ‚˘‚Ä’m‚ç‚ľ‚ß‚é‚悤‚É‚ľ‚Č‚Ż‚ę‚΂Ȃč‚Ü‚š
-‚ńB
-
-Ž„‚˝‚ż‚Í‚ ‚Č‚˝‚ĚŒ —˜‚đ“ń’iŠK‚ĚŽč‡‚đ“Ľ‚ń‚Ĺ•ŰŒě‚ľ‚Ü‚ˇB(1) ‚Ü‚¸ƒ\ƒtƒgƒEƒF
-ƒA‚ɑ΂ľ‚Ä’˜ěŒ ‚đŽĺ’Ł‚ľA‚ť‚ľ‚Ä (2) ‚ ‚Č‚˝‚ɑ΂ľ‚āAƒ\ƒtƒgƒEƒFƒA‚Ě•Ą
-ť‚â”Đ•z‚Ü‚˝‚͉ü•Ď‚ɂ‚˘‚Ä‚Ě–@“I‚Č‹–‰Â‚đ—^‚Ś‚é‚ą‚ĚŒ_–ń‘‚đ’ńŽŚ‚ľ‚Ü‚ˇB
-
-‚Ü‚˝AŠeěŽŇ‚⎄‚˝‚ż‚đ•ŰŒě‚ˇ‚é‚˝‚߁AŽ„‚˝‚ż‚Í‚ą‚ĚƒtƒŠ[ƒ\ƒtƒgƒEƒFƒA‚É‚Í
-‰˝‚Ě•ŰŘ‚ŕ–ł‚˘‚Ć‚˘‚¤‚ą‚Ć‚đ’N‚ŕ‚ŞŠmŽŔ‚É—‰đ‚ˇ‚é‚悤‚É‚ľA‚Ü‚˝ƒ\ƒtƒgƒEƒF
-ƒA‚Ş’N‚Š‘źl‚É‚ć‚Á‚ĉü•Ď‚ł‚ęA‚ť‚ę‚ŞŽŸX‚ƔЕz‚ł‚ę‚Ä‚˘‚Á‚˝‚Ć‚ľ‚Ä‚ŕA‚ť
-‚ĚŽó—̎҂͔ނ炪Žč‚É“ü‚ę‚˝ƒ\ƒtƒgƒEƒFƒA‚ރIƒŠƒWƒiƒ‹‚Ěƒo[ƒWƒ‡ƒ“‚Ĺ‚Í–ł‚˘
-‚ą‚ƁA‚ť‚ľ‚ÄŒ´ěŽŇ‚Ě–źş‚Í‘źl‚É‚ć‚Á‚ÄŽ‚żž‚Ü‚ę‚˝‰Â”\Ť‚Ě‚ ‚é–â‘č‚É‚ć‚Á
-‚ĉe‹ż‚ł‚ę‚é‚ą‚Ć‚Ş‚Č‚˘‚Ć‚˘‚¤‚ą‚Ć‚đŽü’m‚ł‚š‚˝‚˘‚ĆŽv‚˘‚Ü‚ˇB
-
-ĹŒă‚ɁAƒ\ƒtƒgƒEƒFƒA“Á‹–‚Ş‚˘‚Š‚Č‚éƒtƒŠ[‚ĚƒvƒƒOƒ‰ƒ€‚Ě‘śÝ‚É‚ŕ•s’f‚Ě‹ş
-ˆĐ‚đ“Š‚°‚Š‚Ż‚Ä‚˘‚Ü‚ˇ‚ށAŽ„‚˝‚ż‚́AƒtƒŠ[‚ČƒvƒƒOƒ‰ƒ€‚ĚÄ”Đ•zŽŇ‚ތX‚É
-“Á‹–ƒ‰ƒCƒZƒ“ƒX‚đŽć“ž‚ˇ‚é‚ą‚Ć‚É‚ć‚Á‚āAŽ–ŽŔăƒvƒƒOƒ‰ƒ€‚đ“Ɛč“I‚É‚ľ‚Ä‚ľ
-‚Ü‚¤‚Ć‚˘‚¤ŠëŒŻ‚đ”đ‚Ż‚˝‚˘‚ĆŽv‚˘‚Ü‚ˇB‚ą‚¤‚˘‚Á‚˝Ž–‘Ô‚đ—\–h‚ˇ‚é‚˝‚߁AŽ„‚˝
-‚ż‚Í‚˘‚Š‚Č‚é“Á‹–‚ŕ’N‚ŕ‚ŞŽŠ—R‚É—˜—p‚Ĺ‚Ť‚é‚悤ƒ‰ƒCƒZƒ“ƒX‚ł‚ę‚é‚ŠA‘S‚­ƒ‰
-ƒCƒZƒ“ƒX‚ł‚ę‚Č‚˘‚Š‚Ě‚Ç‚ż‚ç‚Š‚Ĺ‚Č‚Ż‚ę‚΂Ȃç‚Č‚˘‚ą‚Ƃ𖞊m‚É‚ľ‚Ü‚ľ‚˝B
-
-(–ó’: –{Œ_–ń‘‚Łu“Ɛč“I(proprietary)v‚Ƃ́Aƒ\ƒtƒgƒEƒFƒA‚Ě—˜—p‚âÄ”Đ
-•zA‰ü•Ď‚Ş‹ÖŽ~‚ł‚ę‚Ä‚˘‚é‚ŠA‹–‰Â‚đ“ž‚é‚ą‚Ć‚Ş•K—v‚Ć‚ł‚ę‚Ä‚˘‚é‚ŠA‚ ‚邢
-‚ÍŒľ‚ľ‚˘§ŒŔ‚Ş‰Ű‚š‚ç‚ę‚Ä‚˘‚ÄŽŠ—R‚É‚ť‚¤‚ˇ‚é‚ą‚Ć‚ŞŽ–ŽŔă‚Ĺ‚Ť‚Č‚­‚Č‚Á‚Ä‚˘
-‚éó‘Ô‚Ě‚ą‚Ć‚đŽw‚ˇBÚ‚ľ‚­‚Í
-http://www.gnu.org/philosophy/categories.ja.html#ProprietarySoftware‚đ
-ŽQĆ‚š‚ćB)
-
-•Ąť‚â”Đ•zA‰ü•Ď‚ɂ‚˘‚Ă̐łŠm‚ČđŒ‚Ć§–ń‚đˆČ‰ş‚ŏq‚ׂâ‚Ť‚Ü‚ˇB
+ (訳: 以下はGNU General Public Licenseの非公式な日本語訳です。これはフ
+ リーソフトウェア財団(the Free Software Foundataion)によって発表された
+ ものではなく、GNU GPLを適用したソフトウェアの頒布条件を法的に有効な形
+ で述べたものではありません。頒布条件としてはGNU GPLの英語版テキストで
+ 指定されているもののみが有効です。しかしながら、私たちはこの翻訳が、
+ 日本語を使用する人々にとってGNU GPLをより良く理解する助けとなることを
+ 望んでいます。)
+
+ 翻訳は 八田真行<mhatta@gnu.org>が行った。原文は
+ http://www.gnu.org/licenses/gpl.txtである。誤訳の指摘や改善案を歓迎す
+ る。
+ はじめに
+
+ソフトウェア向けライセンスの大半は、あなたがそのソフトウェアを共有した
+り変更したりする自由を奪うように設計されています。対照的に、GNU 一般公
+衆利用許諾契約書は、あなたがフリーソフトウェアを共有したり変更したりす
+る自由を保証する--すなわち、ソフトウェアがそのユーザすべてにとってフリー
+であることを保証することを目的としています。この一般公衆利用許諾契約書
+はフリーソフトウェア財団のソフトウェアのほとんどに適用されており、また
+GNU GPLを適用すると決めたフリーソフトウェア財団以外の作者によるプログ
+ラムにも適用されています(いくつかのフリーソフトウェア財団のソフトウェ
+アには、GNU GPLではなくGNU ライブラリ一般公衆利用許諾契約書が適用され
+ていることもあります)。あなたもまた、ご自分のプログラムにGNU GPLを適用
+することが可能です。
+
+私たちがフリーソフトウェアと言うとき、それは利用の自由について言及して
+いるのであって、価格は問題にしていません。私たちの一般公衆利用許諾契約
+書は、あなたがフリーソフトウェアの複製物を頒布する自由を保証するよう設
+計されています(希望に応じてその種のサービスに手数料を課す自由も保証さ
+れます)。また、あなたがソースコードを受け取るか、あるいは望めばそれを
+入手することが可能であるということ、あなたがソフトウェアを変更し、その
+一部を新たなフリーのプログラムで利用できるということ、そして、以上で述
+べたようなことができるということがあなたに知らされるということも保証さ
+れます。
+
+あなたの権利を守るため、私たちは誰かがあなたの有するこれらの権利を否定
+することや、これらの権利を放棄するよう要求することを禁止するという制限
+を加える必要があります。よって、あなたがソフトウェアの複製物を頒布した
+りそれを変更したりする場合には、これらの制限のためにあなたにある種の責
+任が発生することになります。
+
+例えば、あなたがフリーなプログラムの複製物を頒布する場合、有料か無料に
+関わらず、あなたは自分が有する権利を全て受領者に与えなければなりません。
+また、あなたは彼らもソースコードを受け取るか手に入れることができるよう
+保証しなければなりません。そして、あなたは彼らに対して以下で述べる条件
+を示し、彼らに自らの持つ権利について知らしめるようにしなければなりませ
+ん。
+
+私たちはあなたの権利を二段階の手順を踏んで保護します。(1) まずソフトウェ
+アに対して著作権を主張し、そして (2) あなたに対して、ソフトウェアの複
+製や頒布または改変についての法的な許可を与えるこの契約書を提示します。
+
+また、各作者や私たちを保護するため、私たちはこのフリーソフトウェアには
+何の保証も無いということを誰もが確実に理解するようにし、またソフトウェ
+アが誰か他人によって改変され、それが次々と頒布されていったとしても、そ
+の受領者は彼らが手に入れたソフトウェアがオリジナルのバージョンでは無い
+こと、そして原作者の名声は他人によって持ち込まれた可能性のある問題によっ
+て影響されることがないということを周知させたいと思います。
+
+最後に、ソフトウェア特許がいかなるフリーのプログラムの存在にも不断の脅
+威を投げかけていますが、私たちは、フリーなプログラムの再頒布者が個々に
+特許ライセンスを取得することによって、事実上プログラムを独占的にしてし
+まうという危険を避けたいと思います。こういった事態を予防するため、私た
+ちはいかなる特許も誰もが自由に利用できるようライセンスされるか、全くラ
+イセンスされないかのどちらかでなければならないことを明確にしました。
+
+(訳注: 本契約書で「独占的(proprietary)」とは、ソフトウェアの利用や再頒
+布、改変が禁止されているか、許可を得ることが必要とされているか、あるい
+は厳しい制限が課せられていて自由にそうすることが事実上できなくなってい
+る状態のことを指す。詳しくは
+http://www.gnu.org/philosophy/categories.ja.html#ProprietarySoftwareを
+参照せよ。)
+
+複製や頒布、改変についての正確な条件と制約を以下で述べていきます。
- GNU ˆę”ĘŒöO—˜—p‹–‘řŒ_–ń‘
- •ĄťA”Đ•zA‰ü•Ď‚ÉŠÖ‚ˇ‚éđŒ‚Ɛ§–ń
-
-0. ‚ą‚Ě—˜—p‹–‘řŒ_–ń‘‚́A‚ť‚ĚƒvƒƒOƒ‰ƒ€(‚Ü‚˝‚Í‚ť‚Ě‘ź‚Ě’˜ě•¨)‚đ‚ą‚Ěˆę
-”ĘŒöO—˜—p‹–‘řŒ_–ń‘‚Ě’č‚ß‚éđŒ‚̉ş‚ŔЕz‚Ĺ‚Ť‚é‚Ć‚˘‚¤’m‚Ş’˜ěŒ ŽŇ‚É
-‚ć‚Á‚Ä‹LÚ‚ł‚ę‚˝ƒvƒƒOƒ‰ƒ€‚Ü‚˝‚Í‚ť‚Ě‘ź‚Ě’˜ě•¨‘S”Ę‚É“K—p‚ł‚ę‚éBˆČ‰ş‚Ĺ
-‚́AuwƒvƒƒOƒ‰ƒ€xv‚Ć‚Í‚ť‚̂悤‚É‚ľ‚Ä‚ą‚ĚŒ_–ń‘‚Ş“K—p‚ł‚ę‚˝ƒvƒƒOƒ‰
-ƒ€‚â’˜ě•¨‘S”Ę‚đˆÓ–Ą‚ľA‚Ü‚˝uwƒvƒƒOƒ‰ƒ€x‚đŠî‚É‚ľ‚˝’˜ě•¨v‚Ƃ́wƒv
-ƒƒOƒ‰ƒ€x‚â‚ť‚Ě‘ź’˜ěŒ –@‚̉ş‚Ĺ”hś•¨‚ĆŒŠ‚Č‚ł‚ę‚é‚ŕ‚Ě‘S”Ę‚đŽw‚ˇB‚ˇ‚Č
-‚í‚żAwƒvƒƒOƒ‰ƒ€x‚Š‚ť‚Ěˆę•”‚đA‘S‚­“Żˆę‚Ě‚Ü‚Ü‚ŠA‰ü•Ď‚đ‰Á‚Ś‚˝‚ŠA‚ 
-‚邢‚Í‘ź‚ĚŒžŒę‚É–|–ó‚ł‚ę‚˝Œ`‚ĹŠÜ‚Ţ’˜ě•¨‚Ě‚ą‚Ć‚Ĺ‚ ‚é(u‰ü•Ďv‚Ć‚˘‚¤Œę
-‚Ě–{—ˆ‚ĚˆÓ–Ą‚Š‚ç‚Í‚¸‚ę‚é‚ŞAˆČ‰ş‚Ĺ‚Í–|–ó‚ŕ‰ü•Ď‚ĚˆęŽí‚ĆŒŠ‚Č‚ˇ)B‚ť‚ę‚ź
-‚ę‚ĚŒ_–ńŽŇ‚́u‚ ‚Č‚˝v‚Ć•\Œť‚ł‚ę‚éB
-
-•Ąť‚â”Đ•zA‰ü•ĎˆČŠO‚ĚŠˆ“Ž‚Í‚ą‚ĚŒ_–ń‘‚Ĺ‚ÍƒJƒo[‚ł‚ę‚Č‚˘B‚ť‚ę‚ç‚Í‚ą‚Ě
-Œ_–ń‘‚Ě‘ÎŰŠO‚Ĺ‚ ‚éBwƒvƒƒOƒ‰ƒ€x‚đŽŔs‚ˇ‚ésˆ×ŽŠ‘̂ɐ§ŒŔ‚Í‚Č‚˘B‚Ü
-‚˝A‚ť‚̂悤‚ȁwƒvƒƒOƒ‰ƒ€x‚̏o—ÍŒ‹‰Ę‚́A‚ť‚Ě“ŕ—e‚ށwƒvƒƒOƒ‰ƒ€x‚đŠî
-‚É‚ľ‚˝’˜ě•¨‚đ\Ź‚ˇ‚éę‡‚Ě‚Ý‚ą‚ĚŒ_–ń‘‚É‚ć‚Á‚Ä•ŰŒě‚ł‚ę‚é(wƒvƒƒOƒ‰
-ƒ€x‚đŽŔs‚ľ‚˝‚ą‚Ć‚É‚ć‚Á‚č쐬‚ł‚ę‚˝‚Ć‚˘‚¤‚ą‚Ć‚Ć‚Í–łŠÖŒW‚Ĺ‚ ‚é)B‚ą‚Ě
-‚悤‚Ȑüˆř‚Ť‚Ě‘Ă“–Ť‚́AwƒvƒƒOƒ‰ƒ€x‚މ˝‚đ‚ˇ‚é‚Ě‚Š‚Ɉˑś‚ˇ‚éB
-
-1. ‚ť‚ę‚ź‚ę‚Ě•Ąť•¨‚É‚¨‚˘‚Ä“KŘ‚Č’˜ěŒ •\ŽŚ‚Ć•ŰŘ‚Ě”Ű”Fş–ž(disclaimer
-of warranty)‚đ–Ú—§‚‚悤“KŘ‚ÉŒfÚ‚ľA‚Ü‚˝‚ą‚ĚŒ_–ń‘‚¨‚ć‚ŃˆęŘ‚Ě•ŰŘ‚Ě
-•sÝ‚ɐG‚ę‚˝’m‚ˇ‚×‚Ä‚đ‚ť‚Ě‚Ü‚ÜŽc‚ľA‚ť‚ľ‚Ä‚ą‚ĚŒ_–ń‘‚Ě•Ąť•¨‚đwƒvƒ
-ƒOƒ‰ƒ€x‚Ě‚˘‚Š‚Č‚éŽó—ĚŽŇ‚É‚ŕwƒvƒƒOƒ‰ƒ€x‚Ć‹¤‚ɔЕz‚ˇ‚éŒŔ‚čA‚ ‚Č‚˝‚Í
-wƒvƒƒOƒ‰ƒ€x‚Ěƒ\[ƒXƒR[ƒh‚Ě•Ąť•¨‚đA‚ ‚Č‚˝‚ŞŽó‚ŻŽć‚Á‚˝’Ę‚č‚ĚŒ`‚Ĺ•Ą
-ť‚Ü‚˝‚͔Еz‚ˇ‚é‚ą‚Ć‚Ş‚Ĺ‚Ť‚éB”}‘Ě‚Í–â‚í‚Č‚˘B
-
-‚ ‚Č‚˝‚́A•¨—“I‚É•Ąť•¨‚đ÷“n‚ˇ‚é‚Ć‚˘‚¤sˆ×‚ÉŠÖ‚ľ‚Ď萔—ż‚đ‰Ű‚ľ‚Ä‚ŕ—Ç
-‚˘‚ľAŠó–]‚É‚ć‚Á‚Ă͎萔—ż‚đŽć‚Á‚ÄŒđŠˇ‚É‚¨‚Ż‚é•ŰŒě‚Ě•ŰŘ‚đ’ń‹Ÿ‚ľ‚Ä‚ŕ—Ç
-‚˘B
-
-2. ‚ ‚Č‚˝‚ÍŽŠ•Ş‚́wƒvƒƒOƒ‰ƒ€x‚Ě•Ąť•¨‚Š‚ť‚Ěˆę•”‚đ‰ü•Ď‚ľ‚āwƒvƒƒOƒ‰
-ƒ€x‚đŠî‚É‚ľ‚˝’˜ě•¨‚đŒ`Ź‚ľA‚ť‚̂悤‚ȉü•Ď“_‚â’˜ě•¨‚đă‹L‘ć1ß‚Ě’č
-‚ß‚éđŒ‚̉ş‚Ĺ•Ąť‚Ü‚˝‚͔Еz‚ˇ‚é‚ą‚Ć‚Ş‚Ĺ‚Ť‚éB‚˝‚ž‚ľA‚ť‚Ě‚˝‚ß‚É‚ÍˆČ‰ş
-‚ĚđŒ‚ˇ‚ׂĂ𖞂˝‚ľ‚Ä‚˘‚Č‚Ż‚ę‚΂Ȃç‚Č‚˘:
-
- a) ‚ ‚Č‚˝‚Ş‚ť‚ę‚ç‚Ěƒtƒ@ƒCƒ‹‚đ•ĎX‚ľ‚˝‚Ć‚˘‚¤‚ą‚Ć‚Ć•ĎX‚ľ‚˝“úŽž‚Ş—Ç
- ‚­•Ş‚Š‚é‚悤A‰ü•Ď‚ł‚ę‚˝ƒtƒ@ƒCƒ‹‚ɍŽŚ‚ľ‚Č‚Ż‚ę‚΂Ȃç‚Č‚˘B
-
- b) wƒvƒƒOƒ‰ƒ€x‚Ü‚˝‚Í‚ť‚Ěˆę•”‚đŠÜ‚Ţ’˜ě•¨A‚ ‚邢‚́wƒvƒƒOƒ‰ƒ€x
- ‚Š‚ť‚Ěˆę•”‚Š‚ç”hś‚ľ‚˝’˜ě•¨‚đ”Đ•z‚ ‚邢‚Í”­•\‚ˇ‚éę‡‚ɂ́A‚ť‚Ě‘S
- ‘Ě‚đ‚ą‚ĚŒ_–ń‘‚ĚđŒ‚É]‚Á‚Ä‘ćŽOŽŇ‚Ö–łž‚Ĺ—˜—p‹–‘ř‚ľ‚Č‚Ż‚ę‚΂Ȃç‚Č
- ‚˘B
-
- c) ‰ü•Ď‚ł‚ę‚˝ƒvƒƒOƒ‰ƒ€‚ށA’ʏíŽŔs‚ˇ‚éŰ‚ɑΘb“I‚ɃRƒ}ƒ“ƒh‚đ“Ç‚Ţ
- ‚悤‚É‚Č‚Á‚Ä‚˘‚é‚Č‚ç‚΁A‚ť‚ĚƒvƒƒOƒ‰ƒ€‚đĹ‚ŕˆę”Ę“I‚Č•ű–@‚Ĺ‘Î˜b“I‚É
- ŽŔs‚ˇ‚éŰA“KŘ‚Č’˜ěŒ •\ŽŚA–ł•ŰŘ‚Ĺ‚ ‚é‚ą‚Ć(‚ ‚邢‚Í‚ ‚Č‚˝‚Ş•Ű
- Ř‚đ’ń‹Ÿ‚ˇ‚é‚Ć‚˘‚¤‚ą‚Ć)Aƒ†[ƒU‚ރvƒƒOƒ‰ƒ€‚đ‚ą‚ĚŒ_–ń‘‚ŏq‚ׂ˝đ
- Œ‚̉ş‚ŔЕz‚ˇ‚é‚ą‚Ć‚Ş‚Ĺ‚Ť‚é‚Ć‚˘‚¤‚ą‚ƁA‚ť‚ľ‚Ä‚ą‚ĚŒ_–ń‘‚Ě•Ąť•¨‚đ
- ‰{——‚ˇ‚é‚É‚Í‚Ç‚¤‚ľ‚˝‚ç‚悢‚Š‚Ć‚˘‚¤ƒ†[ƒU‚Ö‚Ěŕ–ž‚đŠÜ‚ލ’m‚ވóü‚ł
- ‚ę‚é‚ŠA‚ ‚邢‚͉ć–Ę‚É•\ŽŚ‚ł‚ę‚é‚悤‚É‚ľ‚Č‚Ż‚ę‚΂Ȃç‚Č‚˘(—áŠO‚Ć‚ľ
- ‚āAwƒvƒƒOƒ‰ƒ€x‚ť‚Ě‚ŕ‚Ě‚Í‘Î˜b“I‚Ĺ‚ ‚Á‚Ä‚ŕ’Ęí‚ť‚̂悤‚ȍ’m‚đˆó
- ü‚ľ‚Č‚˘ę‡‚ɂ́AwƒvƒƒOƒ‰ƒ€x‚đŠî‚É‚ľ‚˝‚ ‚Č‚˝‚Ě’˜ě•¨‚É‚ť‚̂悤
- ‚ȍ’m‚đˆóü‚ł‚š‚é•K—v‚Í‚Č‚˘)B
+ GNU 一般公衆利用許諾契約書
+ 複製、頒布、改変に関する条件と制約
+
+0. この利用許諾契約書は、そのプログラム(またはその他の著作物)をこの一
+般公衆利用許諾契約書の定める条件の下で頒布できるという告知が著作権者に
+よって記載されたプログラムまたはその他の著作物全般に適用される。以下で
+は、「『プログラム』」とはそのようにしてこの契約書が適用されたプログラ
+ムや著作物全般を意味し、また「『プログラム』を基にした著作物」とは『プ
+ログラム』やその他著作権法の下で派生物と見なされるもの全般を指す。すな
+わち、『プログラム』かその一部を、全く同一のままか、改変を加えたか、あ
+るいは他の言語に翻訳された形で含む著作物のことである(「改変」という語
+の本来の意味からはずれるが、以下では翻訳も改変の一種と見なす)。それぞ
+れの契約者は「あなた」と表現される。
+
+複製や頒布、改変以外の活動はこの契約書ではカバーされない。それらはこの
+契約書の対象外である。『プログラム』を実行する行為自体に制限はない。ま
+た、そのような『プログラム』の出力結果は、その内容が『プログラム』を基
+にした著作物を構成する場合のみこの契約書によって保護される(『プログラ
+ム』を実行したことによって作成されたということとは無関係である)。この
+ような線引きの妥当性は、『プログラム』が何をするのかに依存する。
+
+1. それぞれの複製物において適切な著作権表示と保証の否認声明(disclaimer
+of warranty)を目立つよう適切に掲載し、またこの契約書および一切の保証の
+不在に触れた告知すべてをそのまま残し、そしてこの契約書の複製物を『プロ
+グラム』のいかなる受領者にも『プログラム』と共に頒布する限り、あなたは
+『プログラム』のソースコードの複製物を、あなたが受け取った通りの形で複
+製または頒布することができる。媒体は問わない。
+
+あなたは、物理的に複製物を譲渡するという行為に関して手数料を課しても良
+いし、希望によっては手数料を取って交換における保護の保証を提供しても良
+い。
+
+2. あなたは自分の『プログラム』の複製物かその一部を改変して『プログラ
+ム』を基にした著作物を形成し、そのような改変点や著作物を上記第1節の定
+める条件の下で複製または頒布することができる。ただし、そのためには以下
+の条件すべてを満たしていなければならない:
+
+ a) あなたがそれらのファイルを変更したということと変更した日時が良
+ く分かるよう、改変されたファイルに告示しなければならない。
+
+ b) 『プログラム』またはその一部を含む著作物、あるいは『プログラム』
+ かその一部から派生した著作物を頒布あるいは発表する場合には、その全
+ 体をこの契約書の条件に従って第三者へ無償で利用許諾しなければならな
+ い。
+
+ c) 改変されたプログラムが、通常実行する際に対話的にコマンドを読む
+ ようになっているならば、そのプログラムを最も一般的な方法で対話的に
+ 実行する際、適切な著作権表示、無保証であること(あるいはあなたが保
+ 証を提供するということ)、ユーザがプログラムをこの契約書で述べた条
+ 件の下で頒布することができるということ、そしてこの契約書の複製物を
+ 閲覧するにはどうしたらよいかというユーザへの説明を含む告知が印刷さ
+ れるか、あるいは画面に表示されるようにしなければならない(例外とし
+ て、『プログラム』そのものは対話的であっても通常そのような告知を印
+ 刷しない場合には、『プログラム』を基にしたあなたの著作物にそのよう
+ な告知を印刷させる必要はない)。
-ˆČă‚Ě•K—vđŒ‚Í‘S‘Ě‚Ć‚ľ‚Ẳü•Ď‚ł‚ę‚˝’˜ě•¨‚É“K—p‚ł‚ę‚éB’˜ě•¨‚Ěˆę•”
-‚ށwƒvƒƒOƒ‰ƒ€x‚Š‚ç”hś‚ľ‚˝‚ŕ‚Ě‚Ĺ‚Í‚Č‚˘‚ĆŠm”F‚Ĺ‚ŤA‚ť‚ę‚玊g•Ę‚Ě“Ć—§
-‚ľ‚˝’˜ě•¨‚Ĺ‚ ‚é‚ƍ‡—“I‚ɍl‚Ś‚ç‚ę‚é‚Č‚ç‚΁A‚ ‚Č‚˝‚Ş‚ť‚ę‚ç‚đ•Ę‚Ě’˜ě•¨
-‚Ć‚ľ‚Ä•Ş‚Ż‚ĔЕz‚ˇ‚éę‡A‚ť‚¤‚˘‚Á‚˝•”•Ş‚É‚Í‚ą‚ĚŒ_–ń‘‚Ć‚ť‚ĚđŒ‚Í
-“K—p‚ł‚ę‚Č‚˘B‚ľ‚Š‚ľA‚ ‚Č‚˝‚Ş“Ż‚ś•”•Ş‚đwƒvƒƒOƒ‰ƒ€x‚đŠî‚É‚ľ‚˝’˜ě•¨
-‘S‘Ě‚Ěˆę•”‚Ć‚ľ‚ĔЕz‚ˇ‚é‚Č‚ç‚΁A‘S‘Ě‚Ć‚ľ‚Ă̔Еz•¨‚́A‚ą‚ĚŒ_–ń‘‚Ş
-‰Ű‚ˇđŒ‚ɏ]‚í‚Č‚Ż‚ę‚΂Ȃç‚Č‚˘B‚Ć‚˘‚¤‚̂́A‚ą‚ĚŒ_–ń‘‚Ş‘ź‚ĚŒ_–ńŽŇ
-‚É—^‚Ś‚é‹–‰Â‚́wƒvƒƒOƒ‰ƒ€xŠŰ‚˛‚Ć‘S‘Ě‚É‹y‚сA’N‚ޏ‘‚˘‚˝‚Š‚ÍŠÖŒW‚Č‚­Še
-•”•Ş‚Ě‚ˇ‚ׂĂđ•ŰŒě‚ˇ‚é‚Š‚ç‚Ĺ‚ ‚éB
-
-‚ć‚Á‚āA‚ˇ‚ׂĂ ‚Č‚˝‚É‚ć‚Á‚ď‘‚Š‚ę‚˝’˜ě•¨‚ɑ΂ľAŒ —˜‚đŽĺ’Ł‚ľ‚˝‚č‚ ‚Č
-‚˝‚ĚŒ —˜‚ÉˆŮ‹c‚đ\‚ľ—§‚Ä‚é‚ą‚Ć‚Í‚ą‚Ěß‚ĚˆÓ}‚ˇ‚é‚Ć‚ą‚ë‚Ĺ‚Í‚Č‚˘B‚Ţ‚ľ‚ëA
-‚ť‚ĚŽďŽ|‚́wƒvƒƒOƒ‰ƒ€x‚đŠî‚É‚ľ‚˝”hś•¨‚Č‚˘‚ľW‡’˜ě•¨‚̔Еz‚đŠÇ—‚ˇ
-‚錠—˜‚đsŽg‚ˇ‚é‚Ć‚˘‚¤‚ą‚Ć‚É‚ ‚éB
-
-‚Ü‚˝AwƒvƒƒOƒ‰ƒ€x‚đŠî‚É‚ľ‚Ä‚˘‚Č‚˘‚ť‚Ě‘ź‚Ě’˜ě•¨‚đwƒvƒƒOƒ‰ƒ€x(‚ 
-‚邢‚́wƒvƒƒOƒ‰ƒ€x‚đŠî‚É‚ľ‚˝’˜ě•¨)‚Ćˆę‚ɏW‚ß‚˝‚ž‚Ż‚Ě‚ŕ‚Ě‚đˆęŠŞ‚Ě
-•ŰŠÇ‘•’u‚Č‚˘‚ľ”Đ•z”}‘Ě‚ÉŽű‚ß‚Ä‚ŕA‚ť‚Ě‘ź‚Ě’˜ě•¨‚Ü‚Ĺ‚ą‚ĚŒ_–ń‘‚Ş•Ű
-Œě‚ˇ‚é‘ÎŰ‚É‚Č‚é‚Ć‚˘‚¤‚ą‚Ć‚É‚Í‚Č‚ç‚Č‚˘B
-
-3. ‚ ‚Č‚˝‚͏ă‹L‘ć1ß‚¨‚ć‚Ń2ß‚ĚđŒ‚É]‚˘AwƒvƒƒOƒ‰ƒ€x(‚ ‚邢‚Í‘ć2
-ß‚É‚¨‚Ż‚é”hś•¨)‚đƒIƒuƒWƒFƒNƒgƒR[ƒh‚Č‚˘‚ľŽŔsŒ`ŽŽ‚Ĺ•Ąť‚Ü‚˝‚͔Еz‚ˇ
-‚é‚ą‚Ć‚Ş‚Ĺ‚Ť‚éB‚˝‚ž‚ľA‚ť‚Ěę‡‚ ‚Č‚˝‚ÍˆČ‰ş‚Ě‚¤‚ż‚Ç‚ę‚Šˆę‚‚đŽŔŽ{‚ľ‚Č
-‚Ż‚ę‚΂Ȃç‚Č‚˘:
-
- a) ’˜ě•¨‚ɁAwƒvƒƒOƒ‰ƒ€x‚ɑΉž‚ľ‚˝ŠŽ‘S‚Š‚‹@ŠB‚Ĺ“Ç‚ÝŽć‚č‰Â”\‚Č
- ƒ\[ƒXƒR[ƒh‚đ“Y•t‚ˇ‚éB‚˝‚ž‚ľAƒ\[ƒXƒR[ƒh‚͏ă‹L‘ć1ß‚¨‚ć‚Ń2ß‚Ě
- đŒ‚ɏ]‚˘ƒ\ƒtƒgƒEƒFƒA‚ĚŒđŠˇ‚ĹKŠľ“I‚ÉŽg‚í‚ę‚é”}‘̂ŔЕz‚ľ‚Č‚Ż‚ę‚Î
- ‚Č‚ç‚Č‚˘B‚ ‚邢‚́A
-
- b) ’˜ě•¨‚ɁA‚˘‚Š‚Č‚é‘ćŽOŽŇ‚ɑ΂ľ‚Ä‚ŕAwƒvƒƒOƒ‰ƒ€x‚ɑΉž‚ľ‚˝ŠŽ
- ‘S‚Š‚‹@ŠB‚Ĺ“Ç‚ÝŽć‚č‰Â”\‚Čƒ\[ƒXƒR[ƒh‚đA”Đ•z‚É—v‚ˇ‚镨—“IƒRƒXƒg
- ‚đă‰ń‚ç‚Č‚˘’ö“x‚̎萔—ż‚Ćˆř‚ŤŠˇ‚Ś‚É’ń‹Ÿ‚ˇ‚éŽ|q‚ׂ˝­‚Č‚­‚Ć‚ŕ3”N
- ŠÔ‚Í—LŒř‚ȏ‘–Ę‚É‚Č‚Á‚˝\‚ľo‚đ“Y‚Ś‚éB‚˝‚ž‚ľAƒ\[ƒXƒR[ƒh‚͏ă‹L‘ć
- 1ß‚¨‚ć‚Ń2ß‚ĚđŒ‚É]‚˘ƒ\ƒtƒgƒEƒFƒA‚ĚŒđŠˇ‚ĹKŠľ“I‚ÉŽg‚í‚ę‚é”}‘Ě‚Ĺ
- ”Đ•z‚ľ‚Č‚Ż‚ę‚΂Ȃç‚Č‚˘B‚ ‚邢‚́A
-
- c) ‘Ήž‚ˇ‚éƒ\[ƒXƒR[ƒh”Đ•z‚̐\‚ľo‚ÉŰ‚ľ‚āA‚ ‚Č‚˝‚Ş“ž‚˝î•ń‚đˆę
- ‚Ɉř‚Ť“n‚ˇ(‚ą‚Ě‘I‘đŽˆ‚ÍA‰c—˜‚đ–Ú“I‚Ć‚ľ‚Č‚˘”Đ•z‚Ĺ‚ ‚Á‚āA‚Š‚‚ 
- ‚Č‚˝‚ޏă‹LŹßb‚ĹŽw’č‚ł‚ę‚Ä‚˘‚é‚悤‚Ȑ\‚ľo‚Ć‹¤‚ɃIƒuƒWƒFƒNƒgƒR[
- ƒh‚ ‚邢‚ÍŽŔsŒ`ŽŽ‚ĚƒvƒƒOƒ‰ƒ€‚ľ‚Š“üŽč‚ľ‚Ä‚˘‚Č‚˘ę‡‚ÉŒŔ‚č‹–‰Â‚ł‚ę
- ‚é)B
-
-’˜ě•¨‚Ěƒ\[ƒXƒR[ƒh‚Ƃ́A‚ť‚ę‚ɑ΂ľ‚ĉü•Ď‚đ‰Á‚Ś‚éă‚ōD‚Ü‚ľ‚˘‚Ć‚ł‚ę‚é
-’˜ě•¨‚ĚŒ`ŽŽ‚đˆÓ–Ą‚ˇ‚éB‚ ‚éŽŔsŒ`ŽŽ‚Ě’˜ě•¨‚É‚Ć‚Á‚ÄŠŽ‘S‚Čƒ\[ƒXƒR[ƒh
-‚Ƃ́A‚ť‚ę‚ŞŠÜ‚Ţƒ‚ƒWƒ…[ƒ‹‚ˇ‚×‚Ä‚Ěƒ\[ƒXƒR[ƒh‘S•”‚ɉÁ‚ŚAŠÖ˜A‚ˇ‚éƒCƒ“
-ƒ^[ƒtƒF[ƒX’č‹`ƒtƒ@ƒCƒ‹‚Ě‚ˇ‚×‚Ä‚Ćƒ‰ƒCƒuƒ‰ƒŠ‚ĚƒRƒ“ƒpƒCƒ‹‚âƒCƒ“ƒXƒg[ƒ‹
-‚đ§Œä‚ˇ‚é‚˝‚ß‚ÉŽg‚í‚ę‚éƒXƒNƒŠƒvƒg‚đ‚ŕ‰Á‚Ś‚˝‚ŕ‚Ě‚đˆÓ–Ą‚ˇ‚éB‚ľ‚Š‚ľ“Á•Ę
-‚Č—áŠO‚Ć‚ľ‚āA‚ť‚ĚƒRƒ“ƒ|[ƒlƒ“ƒgŽŠ‘Ě‚ŞŽŔsŒ`ŽŽ‚É•t‚ˇ‚é‚Ě‚Ĺ‚Í–ł‚˘ŒŔ‚čA
-”Đ•z‚ł‚ę‚é‚ŕ‚Ě‚Ě’†‚ɁAŽŔsŒ`ŽŽ‚ŞŽŔs‚ł‚ę‚éƒIƒyƒŒ[ƒeƒBƒ“ƒOƒVƒXƒeƒ€‚ĚŽĺ
-—v‚ČƒRƒ“ƒ|[ƒlƒ“ƒg(ƒRƒ“ƒpƒCƒ‰‚âƒJ[ƒlƒ‹“™)‚Ć’Ęíˆę‚É(ƒ\[ƒX‚ŠƒoƒCƒi
-ƒŠŒ`ŽŽ‚Ě‚Ç‚ż‚ç‚Š‚Ĺ)”Đ•z‚ł‚ę‚é‚ŕ‚Ě‚đŠÜ‚ń‚Ĺ‚˘‚é•K—v‚Í‚Č‚˘‚Ć‚ˇ‚éB
-
-ŽŔsŒ`ŽŽ‚Ü‚˝‚̓IƒuƒWƒFƒNƒgƒR[ƒh‚̔Еz‚ށAŽw’č‚ł‚ę‚˝ęŠ‚Š‚çƒRƒs[‚ˇ‚é
-‚˝‚ß‚ĚƒAƒNƒZƒXŽč’i‚đ’ń‹Ÿ‚ˇ‚é‚ą‚Ć‚Ĺˆ×‚ł‚ę‚é‚Ć‚ľ‚āA‚ť‚̏ă‚Ĺƒ\[ƒXƒR[ƒh
-‚ŕ“Ż“™‚ĚƒAƒNƒZƒXŽč’i‚É‚ć‚Á‚Ä“Ż‚śęŠ‚Š‚çƒRƒs[‚Ĺ‚Ť‚é‚悤‚É‚Č‚Á‚Ä‚˘‚é‚Č
-‚ç‚΁A‘ćŽOŽŇ‚ރIƒuƒWƒFƒNƒgƒR[ƒh‚Ćˆę‚Ƀ\[ƒX‚ŕ‹­§“I‚ɃRƒs[‚ł‚š‚ç‚ę
-‚é‚悤‚É‚Č‚Á‚Ä‚˘‚Č‚­‚Ä‚ŕƒ\[ƒXƒR[ƒh”Đ•z‚ĚđŒ‚đ–ž‚˝‚ľ‚Ä‚˘‚é‚ŕ‚Ě‚Ć‚ˇ‚éB
+以上の必要条件は全体としての改変された著作物に適用される。著作物の一部
+が『プログラム』から派生したものではないと確認でき、それら自身別の独立
+した著作物であると合理的に考えられるならば、あなたがそれらを別の著作物
+として分けて頒布する場合、そういった部分にはこの契約書とその条件は
+適用されない。しかし、あなたが同じ部分を『プログラム』を基にした著作物
+全体の一部として頒布するならば、全体としての頒布物は、この契約書が
+課す条件に従わなければならない。というのは、この契約書が他の契約者
+に与える許可は『プログラム』丸ごと全体に及び、誰が書いたかは関係なく各
+部分のすべてを保護するからである。
+
+よって、すべてあなたによって書かれた著作物に対し、権利を主張したりあな
+たの権利に異議を申し立てることはこの節の意図するところではない。むしろ、
+その趣旨は『プログラム』を基にした派生物ないし集合著作物の頒布を管理す
+る権利を行使するということにある。
+
+また、『プログラム』を基にしていないその他の著作物を『プログラム』(あ
+るいは『プログラム』を基にした著作物)と一緒に集めただけのものを一巻の
+保管装置ないし頒布媒体に収めても、その他の著作物までこの契約書が保
+護する対象になるということにはならない。
+
+3. あなたは上記第1節および2節の条件に従い、『プログラム』(あるいは第2
+節における派生物)をオブジェクトコードないし実行形式で複製または頒布す
+ることができる。ただし、その場合あなたは以下のうちどれか一つを実施しな
+ければならない:
+
+ a) 著作物に、『プログラム』に対応した完全かつ機械で読み取り可能な
+ ソースコードを添付する。ただし、ソースコードは上記第1節および2節の
+ 条件に従いソフトウェアの交換で習慣的に使われる媒体で頒布しなければ
+ ならない。あるいは、
+
+ b) 著作物に、いかなる第三者に対しても、『プログラム』に対応した完
+ 全かつ機械で読み取り可能なソースコードを、頒布に要する物理的コスト
+ を上回らない程度の手数料と引き換えに提供する旨述べた少なくとも3年
+ 間は有効な書面になった申し出を添える。ただし、ソースコードは上記第
+ 1節および2節の条件に従いソフトウェアの交換で習慣的に使われる媒体で
+ 頒布しなければならない。あるいは、
+
+ c) 対応するソースコード頒布の申し出に際して、あなたが得た情報を一
+ 緒に引き渡す(この選択肢は、営利を目的としない頒布であって、かつあ
+ なたが上記小節bで指定されているような申し出と共にオブジェクトコー
+ ドあるいは実行形式のプログラムしか入手していない場合に限り許可され
+ る)。
+
+著作物のソースコードとは、それに対して改変を加える上で好ましいとされる
+著作物の形式を意味する。ある実行形式の著作物にとって完全なソースコード
+とは、それが含むモジュールすべてのソースコード全部に加え、関連するイン
+ターフェース定義ファイルのすべてとライブラリのコンパイルやインストール
+を制御するために使われるスクリプトをも加えたものを意味する。しかし特別
+な例外として、そのコンポーネント自体が実行形式に付随するのでは無い限り、
+頒布されるものの中に、実行形式が実行されるオペレーティングシステムの主
+要なコンポーネント(コンパイラやカーネル等)と通常一緒に(ソースかバイナ
+リ形式のどちらかで)頒布されるものを含んでいる必要はないとする。
+
+実行形式またはオブジェクトコードの頒布が、指定された場所からコピーする
+ためのアクセス手段を提供することで為されるとして、その上でソースコード
+も同等のアクセス手段によって同じ場所からコピーできるようになっているな
+らば、第三者がオブジェクトコードと一緒にソースも強制的にコピーさせられ
+るようになっていなくてもソースコード頒布の条件を満たしているものとする。
-4. ‚ ‚Č‚˝‚́wƒvƒƒOƒ‰ƒ€x‚đA‚ą‚ĚŒ_–ń‘‚É‚¨‚˘‚Ä–žŠm‚É’ńŽŚ‚ł‚ę‚˝s
-ˆ×‚đœ‚Ť•Ąť‚â‰ü•ĎAƒTƒuƒ‰ƒCƒZƒ“ƒXA‚ ‚邢‚͔Еz‚ľ‚Ä‚Í‚Č‚ç‚Č‚˘B‘ź‚É
-wƒvƒƒOƒ‰ƒ€x‚𕥐ť‚â‰ü•ĎAƒTƒuƒ‰ƒCƒZƒ“ƒXA‚ ‚邢‚͔Еz‚ˇ‚éŠé‚Ä‚Í‚ˇ‚×
-‚Ä–łŒř‚Ĺ‚ ‚čA‚ą‚ĚŒ_–ń‘‚̉ş‚Ĺ‚Ě‚ ‚Č‚˝‚ĚŒ —˜‚đŽŠ“Ž“I‚ɏIŒ‹‚ł‚š‚é‚ą
-‚ƂɂȂ낤B‚ľ‚Š‚ľA•Ąť•¨‚⌠—˜‚đ‚ą‚ĚŒ_–ń‘‚ɏ]‚Á‚Ä‚ ‚Č‚˝‚Š‚ç“ž‚˝
-lX‚ÉŠÖ‚ľ‚ẮA‚ť‚̂悤‚ȐlX‚Ş‚ą‚ĚŒ_–ń‘‚ÉŠŽ‘S‚ɏ]‚Á‚Ä‚˘‚éŒŔ‚č”Ţ
-‚ç‚Ěƒ‰ƒCƒZƒ“ƒX‚Ü‚ĹIŒ‹‚ˇ‚é‚ą‚Ć‚Í‚Č‚˘B
-
-5. ‚ ‚Č‚˝‚Í‚ą‚ĚŒ_–ń‘‚đŽó‘ř‚ˇ‚é•K—v‚Í–ł‚˘B‚Ć‚˘‚¤‚̂́A‚ ‚Č‚˝‚Í‚ą
-‚ę‚ɏ–ź‚ľ‚Ä‚˘‚Č‚˘‚Š‚ç‚Ĺ‚ ‚éB‚ľ‚Š‚ľA‚ą‚ĚŒ_–ń‘ˆČŠO‚É‚ ‚Č‚˝‚ɑ΂ľ
-‚āwƒvƒƒOƒ‰ƒ€x‚â‚ť‚Ě”hś•¨‚đ•ĎXA”Đ•z‚ˇ‚é‹–‰Â‚đ—^‚Ś‚é‚ŕ‚Ě‚Í‘śÝ‚ľ‚Č
-‚˘B‚ą‚ę‚ç‚̍sˆ×‚́A‚ ‚Č‚˝‚Ş‚ą‚ĚŒ_–ń‘‚đŽó‚Ż“ü‚ę‚Č‚˘ŒŔ‚č–@‚É‚ć‚Á‚Ä
-‹Ö‚ś‚ç‚ę‚Ä‚˘‚éB‚ť‚ą‚ŁAwƒvƒƒOƒ‰ƒ€x(‚ ‚邢‚́wƒvƒƒOƒ‰ƒ€x‚đŠî‚É‚ľ
-‚˝’˜ě•¨‚Ě‚ˇ‚ׂÄ)‚đ‰ü•Ď‚Č‚˘‚ľ”Đ•z‚ˇ‚é‚ą‚Ć‚É‚ć‚čA‚ ‚Č‚˝‚ÍŽŠ•Ş‚Ş‚ť‚Ě‚ć
-‚¤‚ȍsˆ×‚đs‚¤‚˝‚ß‚É‚ą‚ĚŒ_–ń‘‚đŽó‘ř‚ľ‚˝‚Ć‚˘‚¤‚ą‚ƁA‚ť‚ľ‚āwƒvƒƒO
-ƒ‰ƒ€x‚Ć‚ť‚ę‚ÉŠî‚Ă‚­’˜ě•¨‚Ě•Ąť‚â”Đ•zA‰ü•Ď‚ɂ‚˘‚Ä‚ą‚ĚŒ_–ń‘‚މŰ
-‚ˇ§–ń‚ĆđŒ‚đ‚ˇ‚×‚ÄŽó‚Ż“ü‚ę‚˝‚Ć‚˘‚¤‚ą‚Ć‚đŽŚ‚ľ‚˝‚ŕ‚Ě‚ĆŒŠ‚Č‚ˇB
-
-6. ‚ ‚Č‚˝‚ށwƒvƒƒOƒ‰ƒ€x(‚Ü‚˝‚́wƒvƒƒOƒ‰ƒ€x‚đŠî‚É‚ľ‚˝’˜ě•¨‘S”Ę)‚đ
-Ä”Đ•z‚ˇ‚é‚˝‚тɁA‚ť‚ĚŽó—ĚŽŇ‚ÍŒłX‚Ěƒ‰ƒCƒZƒ“ƒX‹–‰ÂŽŇ‚Š‚çA‚ą‚ĚŒ_–ń‘‚Ĺ
-Žw’č‚ł‚ę‚˝đŒ‚Ɛ§–ń‚̉ş‚ŁwƒvƒƒOƒ‰ƒ€x‚𕥐ť‚â”Đ•zA‚ ‚邢‚͉ü•Ď‚ˇ‚é
-‹–‰Â‚đŽŠ“Ž“I‚É“ž‚é‚ŕ‚Ě‚Ć‚ˇ‚éB‚ ‚Č‚˝‚́AŽó—ĚŽŇ‚Ş‚ą‚ą‚Ĺ”F‚ß‚ç‚ę‚˝Œ —˜‚đ
-sŽg‚ˇ‚é‚ą‚Ć‚ÉŠÖ‚ľ‚Ä‚ą‚ęˆČă‘ź‚Ě‚˘‚Š‚Ȃ鐧ŒŔ‚ŕ‰Ű‚ˇ‚ą‚Ć‚Ş‚Ĺ‚Ť‚Č‚˘B‚ ‚Č
-‚˝‚ɂ́A‘ćŽOŽŇ‚Ş‚ą‚ĚŒ_–ń‘‚ɏ]‚¤‚ą‚Ć‚đ‹­§‚ˇ‚éÓ”C‚Í‚Č‚˘B
-
-7. “Á‹–NŠQ‚ ‚邢‚Í‚ť‚Ě‘ź‚Ě——R(“Á‹–ŠÖŒW‚ÉŒŔ‚ç‚Č‚˘)‚Š‚çAŮ”ťŠ‚Ě”ťŒˆ
-‚ ‚邢‚͐\‚ľ—§‚Ä‚ĚŒ‹‰Ę‚Ć‚ľ‚Ä‚ ‚Č‚˝‚É(Ů”ťŠ–˝—ß‚âŒ_–ń‚Č‚Ç‚É‚ć‚č)‚ą‚ĚŒ_
-–ń‘‚ĚđŒ‚Ć–ľ‚‚ˇ‚鐧–ń‚Ş‰Ű‚ł‚ę‚˝ę‡‚Ĺ‚ŕA‚ ‚Č‚˝‚Ş‚ą‚ĚŒ_–ń‘‚ĚđŒ‚đ
-–Əœ‚ł‚ę‚é‚í‚Ż‚Ĺ‚Í‚Č‚˘B‚ŕ‚ľ‚ą‚ĚŒ_–ń‘‚̉ş‚Ĺ‚ ‚Č‚˝‚ɉۂš‚ç‚ę‚˝Ó”C‚Ć‘ź
-‚ĚŠÖ˜A‚ˇ‚éÓ”C‚đ“ŻŽž‚É–ž‚˝‚ˇ‚悤‚ČŒ`‚ŔЕz‚Ĺ‚Ť‚Č‚˘‚Č‚ç‚΁AŒ‹‰Ę‚Ć‚ľ‚Ä‚ 
-‚Č‚˝‚́wƒvƒƒOƒ‰ƒ€x‚đ”Đ•z‚ˇ‚é‚ą‚Ć‚Ş‘S‚­‚Ĺ‚Ť‚Č‚˘‚Ć‚˘‚¤‚ą‚Ć‚Ĺ‚ ‚éB—á‚Ś
-‚ΓÁ‹–ƒ‰ƒCƒZƒ“ƒX‚ށA‚ ‚Č‚˝‚Š‚ç’źÚŠÔÚ‚đ–â‚킸ƒRƒs[‚đŽó‚ŻŽć‚Á‚˝l‚Ş’N
-‚Ĺ‚ŕwƒvƒƒOƒ‰ƒ€x‚đŽg—p—ż–ł—ż‚ĹÄ”Đ•z‚ˇ‚é‚ą‚Ć‚đ”F‚ß‚Ä‚˘‚Č‚˘ę‡A‚ ‚Č
-‚˝‚Ş‚ť‚̐§–ń‚Ć‚ą‚ĚŒ_–ń‘‚đ—ź•ű‚Ć‚ŕ–ž‚˝‚ˇ‚ɂ́wƒvƒƒOƒ‰ƒ€x‚̔Еz‚đŠŽ‘S
-‚É’†Ž~‚ˇ‚é‚ľ‚Š‚Č‚˘‚ž‚낤B
-
-‚ą‚Ěß‚Ěˆę•”•Ş‚Ş“Á’č‚Ěó‹ľ‚Ě‰ş‚Ĺ–łŒř‚Č‚˘‚ľŽŔŽ{•s‰Â”\‚Čę‡‚Ĺ‚ŕAß‚ĚŽc
-‚č‚Ě•”•Ş‚Í“K—p‚ł‚ę‚é‚悤ˆÓ}‚ł‚ę‚Ä‚˘‚éB‚ť‚Ě‘ź‚Ěó‹ľ‚Ĺ‚Íß‚Ş‘S‘Ě‚Ć‚ľ‚Ä
-“K—p‚ł‚ę‚é‚悤ˆÓ}‚ł‚ę‚Ä‚˘‚éB
-
-“Á‹–‚â‚ť‚Ě‘ź‚̍ŕŽYŒ ‚đNŠQ‚ľ‚˝‚čA‚ť‚̂悤‚ČŒ —˜‚ĚŽĺ’Ł‚ĚŒř—Í‚ÉˆŮ‹c‚đĽ
-‚Ś‚˝‚股‚é‚悤‚ ‚Č‚˝‚đ—U˜f‚ˇ‚é‚ą‚Ć‚Ş‚ą‚̐߂̖ړI‚Ĺ‚Í‚Č‚˘B‚ą‚̐߂ɂ́A
-lX‚É‚ć‚Á‚ă‰ƒCƒZƒ“ƒXŠľs‚Ć‚ľ‚ÄŽŔŒť‚ł‚ę‚Ä‚Ť‚˝AƒtƒŠ[ƒ\ƒtƒgƒEƒFƒA”Đ•z
-‚ĚƒVƒXƒeƒ€‚ĚŠŽ‘SŤ‚đŒě‚é‚Ć‚˘‚¤–Ú“I‚ľ‚Š‚Č‚˘B‘˝‚­‚̐lX‚ށAƒtƒŠ[ƒ\ƒtƒg
-ƒEƒFƒA‚̔ЕzƒVƒXƒeƒ€‚ŞŽń”öˆęŠŃ‚ľ‚Ä“K—p‚ł‚ę‚Ä‚˘‚é‚Ć‚˘‚¤M—Š‚ÉŠî‚Ă‚ŤA‚ą
-‚ĚƒVƒXƒeƒ€‚đ’Ę‚ś‚ĔЕz‚ł‚ę‚é‘˝—l‚Čƒ\ƒtƒgƒEƒFƒA‚ÉŠ°‘ĺ‚ȍvŒŁ‚đ‚ľ‚Ä‚Ť‚˝‚Ě
-‚ÍŽ–ŽŔ‚Ĺ‚ ‚é‚ŞAl‚Ş‚Ç‚Ě‚ć‚¤‚ČƒVƒXƒeƒ€‚đ’Ę‚ś‚ă\ƒtƒgƒEƒFƒA‚đ”Đ•z‚ľ‚˝‚˘
-‚ĆŽv‚¤‚Š‚Í‚ ‚­‚Ü‚Ĺ‚ŕěŽŇ/Šń—^ŽŇŽŸ‘ć‚Ĺ‚ ‚čA‚ ‚Č‚˝‚Ş‘I‘đ‚đ‰Ÿ‚ľ‚‚Ż‚é‚ą
-‚Ć‚Í‚Ĺ‚Ť‚Č‚˘B
-
-‚ą‚̐߂́A‚ą‚ĚŒ_–ń‘‚Ě‚ą‚ĚßˆČŠO‚Ě•”•Ş‚Ěˆę‹AŒ‹‚É‚Č‚é‚ƍl‚Ś‚ç‚ę‚éƒP[
-ƒX‚đ“O’ę“I‚É–ž‚ç‚Š‚É‚ˇ‚é‚ą‚Ć‚đ–Ú“I‚Ć‚ľ‚Ä‚˘‚éB
+4. あなたは『プログラム』を、この契約書において明確に提示された行
+為を除き複製や改変、サブライセンス、あるいは頒布してはならない。他に
+『プログラム』を複製や改変、サブライセンス、あるいは頒布する企てはすべ
+て無効であり、この契約書の下でのあなたの権利を自動的に終結させるこ
+とになろう。しかし、複製物や権利をこの契約書に従ってあなたから得た
+人々に関しては、そのような人々がこの契約書に完全に従っている限り彼
+らのライセンスまで終結することはない。
+
+5. あなたはこの契約書を受諾する必要は無い。というのは、あなたはこ
+れに署名していないからである。しかし、この契約書以外にあなたに対し
+て『プログラム』やその派生物を変更、頒布する許可を与えるものは存在しな
+い。これらの行為は、あなたがこの契約書を受け入れない限り法によって
+禁じられている。そこで、『プログラム』(あるいは『プログラム』を基にし
+た著作物のすべて)を改変ないし頒布することにより、あなたは自分がそのよ
+うな行為を行うためにこの契約書を受諾したということ、そして『プログ
+ラム』とそれに基づく著作物の複製や頒布、改変についてこの契約書が課
+す制約と条件をすべて受け入れたということを示したものと見なす。
+
+6. あなたが『プログラム』(または『プログラム』を基にした著作物全般)を
+再頒布するたびに、その受領者は元々のライセンス許可者から、この契約書で
+指定された条件と制約の下で『プログラム』を複製や頒布、あるいは改変する
+許可を自動的に得るものとする。あなたは、受領者がここで認められた権利を
+行使することに関してこれ以上他のいかなる制限も課すことができない。あな
+たには、第三者がこの契約書に従うことを強制する責任はない。
+
+7. 特許侵害あるいはその他の理由(特許関係に限らない)から、裁判所の判決
+あるいは申し立ての結果としてあなたに(裁判所命令や契約などにより)この契
+約書の条件と矛盾する制約が課された場合でも、あなたがこの契約書の条件を
+免除されるわけではない。もしこの契約書の下であなたに課せられた責任と他
+の関連する責任を同時に満たすような形で頒布できないならば、結果としてあ
+なたは『プログラム』を頒布することが全くできないということである。例え
+ば特許ライセンスが、あなたから直接間接を問わずコピーを受け取った人が誰
+でも『プログラム』を使用料無料で再頒布することを認めていない場合、あな
+たがその制約とこの契約書を両方とも満たすには『プログラム』の頒布を完全
+に中止するしかないだろう。
+
+この節の一部分が特定の状況の下で無効ないし実施不可能な場合でも、節の残
+りの部分は適用されるよう意図されている。その他の状況では節が全体として
+適用されるよう意図されている。
+
+特許やその他の財産権を侵害したり、そのような権利の主張の効力に異議を唱
+えたりするようあなたを誘惑することがこの節の目的ではない。この節には、
+人々によってライセンス慣行として実現されてきた、フリーソフトウェア頒布
+のシステムの完全性を護るという目的しかない。多くの人々が、フリーソフト
+ウェアの頒布システムが首尾一貫して適用されているという信頼に基づき、こ
+のシステムを通じて頒布される多様なソフトウェアに寛大な貢献をしてきたの
+は事実であるが、人がどのようなシステムを通じてソフトウェアを頒布したい
+と思うかはあくまでも作者/寄与者次第であり、あなたが選択を押しつけるこ
+とはできない。
+
+この節は、この契約書のこの節以外の部分の一帰結になると考えられるケー
+スを徹底的に明らかにすることを目的としている。
-8. wƒvƒƒOƒ‰ƒ€x‚̔Еz‚â—˜—p‚ށA‚ ‚鍑‚É‚¨‚˘‚Ä‚Í“Á‹–‚Ü‚˝‚Í’˜ěŒ ‚ŞŽĺ
-’Ł‚ł‚ę‚˝ƒCƒ“ƒ^[ƒtƒF[ƒX‚Ě‚˘‚¸‚ę‚Š‚É‚ć‚Á‚ЧŒŔ‚ł‚ę‚Ä‚˘‚éę‡AwƒvƒƒO
-ƒ‰ƒ€x‚É‚ą‚ĚŒ_–ń‘‚đ“K—p‚ľ‚˝Œł‚Ě’˜ěŒ ŽŇ‚́A‚ť‚¤‚˘‚Á‚˝‘X‚đ”rœ‚ľ
-‚˝–žŠm‚Č’n—“I”Đ•z§ŒŔ‚đ‰Á‚ŚA‚ť‚ą‚Ĺ”rœ‚ł‚ę‚Ä‚˘‚Č‚˘‘‚Ě’†‚â‚ť‚ę‚ç‚̍‘X
-‚̊Ԃł̂ݔЕz‚Ş‹–‰Â‚ł‚ę‚é‚悤‚É‚ľ‚Ä‚ŕ\‚í‚Č‚˘B‚ť‚Ěę‡A‚ť‚̂悤‚Ȑ§
-ŒŔ‚Í‚ą‚ĚŒ_–ń‘–{•ś‚ŏ‘‚Š‚ę‚Ä‚˘‚é‚Ě‚Ć“Ż—l‚ÉŒŠ‚Č‚ł‚ę‚éB
-
-9. ƒtƒŠ[ƒ\ƒtƒgƒEƒFƒAŕ’c‚́AŽž‚É‚ć‚Á‚ĉü’ů‚Ü‚˝‚͐V”Ĺ‚Ěˆę”ĘŒöO—˜—p‹–
-‘ř‘‚đ”­•\‚ˇ‚é‚ą‚Ć‚Ş‚Ĺ‚Ť‚éB‚ť‚̂悤‚ȐV”Ĺ‚ÍŒťÝ‚Ěƒo[ƒWƒ‡ƒ“‚Ć‚ť‚̐¸_
-‚É‚¨‚˘‚Ä‚ÍŽ—‚˝‚ŕ‚Ě‚É‚Č‚é‚ž‚낤‚ށAV‚˝‚Č–â‘č‚⌜”O‚đ‰đŒˆ‚ˇ‚é‚˝‚ߍו”‚Ĺ
-‚ÍˆŮ‚Č‚é‰Â”\Ť‚Ş‚ ‚éB
-
-‚ť‚ę‚ź‚ę‚Ěƒo[ƒWƒ‡ƒ“‚ɂ́AŒŠ•Ş‚Ż‚Ş•t‚­‚悤‚Ƀo[ƒWƒ‡ƒ“”ԍ†‚ސU‚ç‚ę‚Ä‚˘
-‚éBwƒvƒƒOƒ‰ƒ€x‚É‚¨‚˘‚Ä‚ť‚ę‚É“K—p‚ł‚ę‚é‚ą‚ĚŒ_–ń‘‚Ěƒo[ƒWƒ‡ƒ“”ԍ†‚Ş
-Žw’č‚ł‚ę‚Ä‚˘‚āAX‚Ɂu‚ť‚ęˆČ~‚Ě‚˘‚Š‚Č‚éƒo[ƒWƒ‡ƒ“v‚ŕ“K—p‚ľ‚Ä—Ç‚˘‚Ć‚Č‚Á
-‚Ä‚˘‚˝ę‡A‚ ‚Č‚˝‚͏]‚¤đŒ‚Ɛ§–ń‚Ć‚ľ‚āAŽw’č‚Ěƒo[ƒWƒ‡ƒ“‚ŠAƒtƒŠ[ƒ\
-ƒtƒgƒEƒFƒAŕ’c‚É‚ć‚Á‚Ä”­s‚ł‚ę‚˝Žw’č‚Ěƒo[ƒWƒ‡ƒ“ˆČ~‚̔ł̂ǂꂊˆę‚‚Ě
-‚Ç‚ż‚ç‚Š‚đ‘I‚Ô‚ą‚Ć‚Şo—ˆ‚éBwƒvƒƒOƒ‰ƒ€x‚Ĺƒ‰ƒCƒZƒ“ƒX‚Ěƒo[ƒWƒ‡ƒ“”ԍ†
-‚ŞŽw’č‚ł‚ę‚Ä‚˘‚Č‚˘‚Č‚ç‚΁A‚ ‚Č‚˝‚͍Ą‚Ü‚Ĺ‚ÉƒtƒŠ[ƒ\ƒtƒgƒEƒFƒAŕ’c‚Š‚ç”­
-s‚ł‚ę‚˝ƒo[ƒWƒ‡ƒ“‚Ě’†‚Š‚çD‚Ť‚É‘I‚ń‚ō\‚í‚Č‚˘B
-
-10. ‚ŕ‚ľ‚ ‚Č‚˝‚ށwƒvƒƒOƒ‰ƒ€x‚Ěˆę•”‚đA‚ť‚̔ЕzđŒ‚Ş‚ą‚ĚŒ_–ń‘‚Ć
-ˆŮ‚Č‚é‘ź‚ĚƒtƒŠ[‚ČƒvƒƒOƒ‰ƒ€‚Ć“‡‚ľ‚˝‚˘‚Č‚ç‚΁AěŽŇ‚ɘA—‚ľ‚Ä‹–‰Â‚đ‹
-‚ß‚ćBƒtƒŠ[ƒ\ƒtƒgƒEƒFƒAŕ’c‚Ş’˜ěŒ ‚đ•Ű—L‚ˇ‚éƒ\ƒtƒgƒEƒFƒA‚ɂ‚˘‚ẮA
-ƒtƒŠ[ƒ\ƒtƒgƒEƒFƒAŕ’c‚ɘA—‚š‚ćBŽ„‚˝‚ż‚́A‚ą‚̂悤‚Čę‡‚Ě‚˝‚ß‚É“Á•Ę
-‚Č—áŠO‚đÝ‚Ż‚é‚ą‚Ć‚ŕ‚ ‚éBŽ„‚˝‚ż‚ŞŒˆ’č‚đ‰ş‚ˇ‚É‚ ‚˝‚Á‚ẮAŽ„‚˝‚ż‚ĚƒtƒŠ[
-ƒ\ƒtƒgƒEƒFƒA‚Ě”hś•¨‚ˇ‚ׂĂރtƒŠ[‚ȏó‘Ô‚É•Ű‚˝‚ę‚é‚Ć‚˘‚¤‚ą‚ƂƁAˆę”Ę“I
-‚Ƀ\ƒtƒgƒEƒFƒA‚Ě‹¤—L‚ĆÄ—˜—p‚𑣐i‚ˇ‚é‚Ć‚˘‚¤“ń‚‚̖ڕW‚đ‹K€‚ÉŒŸ“˘‚ł‚ę
-‚é‚Ĺ‚ ‚낤B
- –ł•ŰŘ‚ɂ‚˘‚Ä
-
-11. wƒvƒƒOƒ‰ƒ€x‚͑㉿–ł‚ľ‚É—˜—p‚Ş‹–‰Â‚ł‚ę‚é‚̂ŁA“KŘ‚Č–@‚Ş”F‚ß‚éŒŔ
-‚č‚É‚¨‚˘‚āAwƒvƒƒOƒ‰ƒ€x‚ÉŠÖ‚ˇ‚邢‚Š‚Č‚é•ŰŘ‚ŕ‘śÝ‚ľ‚Č‚˘B‘–Ę‚Ĺ•Ę‚É
-q‚ׂéę‡‚đœ‚˘‚āA’˜ěŒ ŽŇA‚Ü‚˝‚Í‚ť‚Ě‘ź‚Ě’c‘̂́AwƒvƒƒOƒ‰ƒ€x‚đA
-•\–ž‚ł‚ę‚˝‚ŠŒžŠO‚É‚Š‚Í–â‚킸A¤‹Ć“I“KŤ‚đ•ŰŘ‚ˇ‚é‚Ů‚Ě‚ß‚Š‚ľ‚â‚ ‚é“Á’č
-‚Ě–Ú“I‚Ö‚Ě“K‡Ť(‚ÉŒŔ‚ç‚ę‚Č‚˘)‚đŠÜ‚ŢˆęŘ‚Ě•ŰŘ–ł‚ľ‚Ɂu‚ ‚é‚Ş‚܂܁v‚Ĺ’ń
-‹Ÿ‚ˇ‚éBwƒvƒƒOƒ‰ƒ€x‚ĚŽż‚ƐŤ”\‚ÉŠÖ‚ˇ‚郊ƒXƒN‚Ě‚ˇ‚ׂĂ͂ ‚Č‚˝‚É‹A‘Ž‚ˇ
-‚éBwƒvƒƒOƒ‰ƒ€x‚ÉŒ‡Š×‚Ş‚ ‚é‚Ć”ť–ž‚ľ‚˝ę‡A‚ ‚Č‚˝‚Í•K—v‚Č•ŰŽç“_ŒŸ‚â
-•âCACł‚É—v‚ˇ‚éƒRƒXƒg‚Ě‚ˇ‚ׂĂđˆř‚ŤŽó‚Ż‚é‚ą‚Ć‚É‚Č‚éB
-
-12. “KŘ‚Č–@‚Š‘–Ę‚Ĺ‚Ě“ŻˆÓ‚É‚ć‚Á‚Ä–˝‚ş‚ç‚ę‚Č‚˘ŒŔ‚čA’˜ěŒ ŽŇA‚Ü‚˝‚͏ă
-‹L‚Ĺ‹–‰Â‚ł‚ę‚Ä‚˘‚é’Ę‚č‚ɁwƒvƒƒOƒ‰ƒ€x‚đ‰ü•Ď‚Ü‚˝‚ÍÄ”Đ•z‚ľ‚˝‚ť‚Ě‘ź‚Ě’c
-‘̂́A‚ ‚Č‚˝‚ɑ΂ľ‚āwƒvƒƒOƒ‰ƒ€x‚Ě—˜—p‚Č‚˘‚ľ—˜—p•s”\‚Őś‚ś‚˝ˆę”Ę“IA
-“Á•Ę“IA‹ô‘R“IA•K‘R“I‚Č‘šŠQ(ƒf[ƒ^‚̏ÁŽ¸‚â•słŠm‚ȏˆ—A‚ ‚Č‚˝‚Š‘ćŽO
-ŽŇ‚Ş”í‚Á‚˝‘šŽ¸A‚ ‚邢‚́wƒvƒƒOƒ‰ƒ€x‚Ş‘ź‚Ěƒ\ƒtƒgƒEƒFƒA‚Ćˆę‚É“Žě‚ľ
-‚Č‚˘‚Ć‚˘‚¤•s‹ď‡‚Č‚Ç‚đŠÜ‚Ţ‚Ş‚ť‚ę‚ç‚ÉŒŔ‚ç‚Č‚˘)‚ɈęŘ‚̐ӔC‚𕉂í‚Č‚˘B
-‚ť‚̂悤‚Č‘šŠQ‚ސś‚¸‚é‰Â”\Ť‚ɂ‚˘‚Ĕނ炪’‰‚ł‚ę‚Ä‚˘‚˝‚Ć‚ľ‚Ä‚ŕ“Ż—l‚Ĺ
-‚ ‚éB
-
- đŒ‚Ɛ§–ńI‚í‚č
+8. 『プログラム』の頒布や利用が、ある国においては特許または著作権が主
+張されたインターフェースのいずれかによって制限されている場合、『プログ
+ラム』にこの契約書を適用した元の著作権者は、そういった国々を排除し
+た明確な地理的頒布制限を加え、そこで排除されていない国の中やそれらの国々
+の間でのみ頒布が許可されるようにしても構わない。その場合、そのような制
+限はこの契約書本文で書かれているのと同様に見なされる。
+
+9. フリーソフトウェア財団は、時によって改訂または新版の一般公衆利用許
+諾書を発表することができる。そのような新版は現在のバージョンとその精神
+においては似たものになるだろうが、新たな問題や懸念を解決するため細部で
+は異なる可能性がある。
+
+それぞれのバージョンには、見分けが付くようにバージョン番号が振られてい
+る。『プログラム』においてそれに適用されるこの契約書のバージョン番号が
+指定されていて、更に「それ以降のいかなるバージョン」も適用して良いとなっ
+ていた場合、あなたは従う条件と制約として、指定のバージョンか、フリーソ
+フトウェア財団によって発行された指定のバージョン以降の版のどれか一つの
+どちらかを選ぶことが出来る。『プログラム』でライセンスのバージョン番号
+が指定されていないならば、あなたは今までにフリーソフトウェア財団から発
+行されたバージョンの中から好きに選んで構わない。
+
+10. もしあなたが『プログラム』の一部を、その頒布条件がこの契約書と
+異なる他のフリーなプログラムと統合したいならば、作者に連絡して許可を求
+めよ。フリーソフトウェア財団が著作権を保有するソフトウェアについては、
+フリーソフトウェア財団に連絡せよ。私たちは、このような場合のために特別
+な例外を設けることもある。私たちが決定を下すにあたっては、私たちのフリー
+ソフトウェアの派生物すべてがフリーな状態に保たれるということと、一般的
+にソフトウェアの共有と再利用を促進するという二つの目標を規準に検討され
+るであろう。
+ 無保証について
+
+11. 『プログラム』は代価無しに利用が許可されるので、適切な法が認める限
+りにおいて、『プログラム』に関するいかなる保証も存在しない。書面で別に
+述べる場合を除いて、著作権者、またはその他の団体は、『プログラム』を、
+表明されたか言外にかは問わず、商業的適性を保証するほのめかしやある特定
+の目的への適合性(に限られない)を含む一切の保証無しに「あるがまま」で提
+供する。『プログラム』の質と性能に関するリスクのすべてはあなたに帰属す
+る。『プログラム』に欠陥があると判明した場合、あなたは必要な保守点検や
+補修、修正に要するコストのすべてを引き受けることになる。
+
+12. 適切な法か書面での同意によって命ぜられない限り、著作権者、または上
+記で許可されている通りに『プログラム』を改変または再頒布したその他の団
+体は、あなたに対して『プログラム』の利用ないし利用不能で生じた一般的、
+特別的、偶然的、必然的な損害(データの消失や不正確な処理、あなたか第三
+者が被った損失、あるいは『プログラム』が他のソフトウェアと一緒に動作し
+ないという不具合などを含むがそれらに限らない)に一切の責任を負わない。
+そのような損害が生ずる可能性について彼らが忠告されていたとしても同様で
+ある。
+
+ 条件と制約終わり
- ˆČă‚Ěđ€‚đ‚ ‚Č‚˝‚̐V‚ľ‚˘ƒvƒƒOƒ‰ƒ€‚É“K—p‚ˇ‚é•ű–@
+ 以上の条項をあなたの新しいプログラムに適用する方法
-‚ ‚Č‚˝‚ސV‚ľ‚˘ƒvƒƒOƒ‰ƒ€‚đŠJ”­‚ľ‚˝‚Ć‚ľ‚āAŒöO‚É‚ć‚Á‚Ä‚ť‚ę‚Ş—˜—p‚ł‚ę‚é
-‰Â”\Ť‚đĹ‘ĺ‚É‚ľ‚˝‚˘‚Č‚çA‚ť‚ĚƒvƒƒOƒ‰ƒ€‚đ‚ą‚ĚŒ_–ń‘‚Ěđ€‚É]‚Á‚Ä
-’N‚Ĺ‚ŕÄ”Đ•z‚ ‚邢‚Í•ĎX‚Ĺ‚Ť‚é‚悤ƒtƒŠ[ƒ\ƒtƒgƒEƒFƒA‚É‚ˇ‚é‚Ě‚ŞĹ‘P‚Ĺ‚ˇB
+あなたが新しいプログラムを開発したとして、公衆によってそれが利用される
+可能性を最大にしたいなら、そのプログラムをこの契約書の条項に従って
+誰でも再頒布あるいは変更できるようフリーソフトウェアにするのが最善です。
-‚ť‚Ě‚˝‚߂ɂ́AƒvƒƒOƒ‰ƒ€‚ÉˆČ‰ş‚̂悤‚Č•\ŽŚ‚đ“Y•t‚ľ‚Ä‚­‚ž‚ł‚˘B‚ť‚Ěę‡A
-•ŰŘ‚Ş”rœ‚ł‚ę‚Ä‚˘‚é‚Ć‚˘‚¤‚ą‚Ć‚đĹ‚ŕŒř‰Ę“I‚É“`‚Ś‚é‚˝‚߂ɁA‚ť‚ę‚ź‚ę‚Ěƒ\[
-ƒXƒtƒ@ƒCƒ‹‚Ě–`“Ş‚É•\ŽŚ‚đ“Y•t‚ˇ‚ę‚ÎĹ‚ŕˆŔ‘S‚Ĺ‚ˇB­‚Č‚­‚Ć‚ŕAu’˜ěŒ •\
-ŽŚv‚Ć‚˘‚¤s‚Ć‘S•ś‚Ş‚ ‚éęŠ‚Ö‚Ěƒ|ƒCƒ“ƒ^‚ž‚Ż‚ÍŠeƒtƒ@ƒCƒ‹‚ÉŠÜ‚ß‚Ä’u‚˘‚Ä
-‚­‚ž‚ł‚˘B
+そのためには、プログラムに以下のような表示を添付してください。その場合、
+保証が排除されているということを最も効果的に伝えるために、それぞれのソー
+スファイルの冒頭に表示を添付すれば最も安全です。少なくとも、「著作権表
+示」という行と全文がある場所へのポインタだけは各ファイルに含めて置いて
+ください。
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
@@ -337,59 +337,59 @@ of warranty)‚đ–Ú—§‚‚悤“KŘ‚ÉŒfÚ‚ľA‚Ü‚˝‚ą‚ĚŒ_–ń‘‚¨‚ć‚ŃˆęŘ‚Ě•ŰŘ‚Ě
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- (–ó:
+ (訳:
- <ƒvƒƒOƒ‰ƒ€‚Ě–ź‘O‚ƁA‚ť‚ę‚Ş‰˝‚đ‚ˇ‚é‚Š‚ɂ‚˘‚Ä‚ĚŠČ’P‚Čŕ–žB>
- Copyright (C) <ź—ď”N> <ěŽŇ‚Ě–ź‘O>
+ <プログラムの名前と、それが何をするかについての簡単な説明。>
+ Copyright (C) <西暦年> <作者の名前>
- ‚ą‚ĚƒvƒƒOƒ‰ƒ€‚̓tƒŠ[ƒ\ƒtƒgƒEƒFƒA‚Ĺ‚ˇB‚ ‚Č‚˝‚Í‚ą‚ę‚đAƒtƒŠ[ƒ\ƒt
- ƒgƒEƒFƒAŕ’c‚É‚ć‚Á‚Ä”­s‚ł‚ę‚˝ GNU ˆę”ĘŒöO—˜—p‹–‘řŒ_–ń‘(ƒo[ƒWƒ‡
- ƒ“2‚ŠAŠó–]‚É‚ć‚Á‚Ä‚Í‚ť‚ęˆČ~‚Ěƒo[ƒWƒ‡ƒ“‚Ě‚¤‚ż‚Ç‚ę‚Š)‚Ě’č‚ß‚éđŒ
- ‚̉ş‚ĹÄ”Đ•z‚Ü‚˝‚͉ü•Ď‚ˇ‚é‚ą‚Ć‚Ş‚Ĺ‚Ť‚Ü‚ˇB
+ このプログラムはフリーソフトウェアです。あなたはこれを、フリーソフ
+ トウェア財団によって発行された GNU 一般公衆利用許諾契約書(バージョ
+ ン2か、希望によってはそれ以降のバージョンのうちどれか)の定める条件
+ の下で再頒布または改変することができます。
- ‚ą‚ĚƒvƒƒOƒ‰ƒ€‚Í—L—p‚Ĺ‚ ‚é‚ą‚Ć‚đŠč‚Á‚ĔЕz‚ł‚ę‚Ü‚ˇ‚ށA*‘S‚­‚Ě–ł•Ű
- Ř* ‚Ĺ‚ˇB¤‹Ć‰Â”\Ť‚Ě•ŰŘ‚â“Á’č‚Ě–Ú“I‚Ö‚Ě“K‡Ť‚́AŒžŠO‚ÉŽŚ‚ł‚ę‚˝
- ‚ŕ‚Ě‚ŕŠÜ‚ß‘S‚­‘śÝ‚ľ‚Ü‚š‚ńBÚ‚ľ‚­‚ÍGNU ˆę”ĘŒöO—˜—p‹–‘řŒ_–ń‘‚đ‚˛
- ——‚­‚ž‚ł‚˘B
+ このプログラムは有用であることを願って頒布されますが、*全くの無保
+ 証* です。商業可能性の保証や特定の目的への適合性は、言外に示された
+ ものも含め全く存在しません。詳しくはGNU 一般公衆利用許諾契約書をご
+ 覧ください。
- ‚ ‚Č‚˝‚Í‚ą‚ĚƒvƒƒOƒ‰ƒ€‚Ć‹¤‚ɁAGNU ˆę”ĘŒöO—˜—p‹–‘řŒ_–ń‘‚Ě•Ąť•¨‚đ
- ˆę•”Žó‚ŻŽć‚Á‚˝‚Í‚¸‚Ĺ‚ˇB‚ŕ‚ľŽó‚ŻŽć‚Á‚Ä‚˘‚Č‚Ż‚ę‚΁AƒtƒŠ[ƒ\ƒtƒgƒEƒF
- ƒAŕ’c‚܂Őż‹‚ľ‚Ä‚­‚ž‚ł‚˘(ˆść‚Í the Free Software Foundation,
- Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA)B
+ あなたはこのプログラムと共に、GNU 一般公衆利用許諾契約書の複製物を
+ 一部受け取ったはずです。もし受け取っていなければ、フリーソフトウェ
+ ア財団まで請求してください(宛先は the Free Software Foundation,
+ Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA)。
)
-“dŽq‚Č‚˘‚ľŽ†‚Ěƒ[ƒ‹‚Ĺ‚ ‚Č‚˝‚ɖ₢‡‚í‚š‚é•ű–@‚ɂ‚˘‚Ä‚Ěî•ń‚ŕ‘‚Ť‰Á‚Ś
-‚Ü‚ľ‚傤B
+電子ないし紙のメールであなたに問い合わせる方法についての情報も書き加え
+ましょう。
-ƒvƒƒOƒ‰ƒ€‚ޑΘb“I‚Č‚ŕ‚Ě‚Č‚ç‚΁A‘Θbƒ‚[ƒh‚Ĺ‹N“Ž‚ľ‚˝Ű‚ɏo—Í‚Ć‚ľ‚ÄˆČ‰ş
-‚̂悤‚Č’Z‚˘’m‚Ş•\ŽŚ‚ł‚ę‚é‚悤‚É‚ľ‚Ä‚­‚ž‚ł‚˘:
+プログラムが対話的なものならば、対話モードで起動した際に出力として以下
+のような短い告知が表示されるようにしてください:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
- (–ó:
+ (訳:
- Gnomovision ƒo[ƒWƒ‡ƒ“ 69, Copyright (C) ”N ěŽŇ‚Ě–ź‘O
- Gnomovision ‚Í*‘S‚­‚Ě–ł•ŰŘ*‚Ĺ’ń‹Ÿ‚ł‚ę‚Ü‚ˇBÚ‚ľ‚­‚́ushow wv
- ‚Ćƒ^ƒCƒv‚ľ‚ĉş‚ł‚˘B‚ą‚ę‚̓tƒŠ[ƒ\ƒtƒgƒEƒFƒA‚Ĺ‚ ‚čA‚ ‚éđŒ‚̉ş‚Ĺ
- Ä”Đ•z‚ˇ‚é‚ą‚Ć‚Ş§—ă‚ł‚ę‚Ä‚˘‚Ü‚ˇBÚ‚ľ‚­‚́ushow cv‚Ćƒ^ƒCƒv‚ľ‚ĉş
- ‚ł‚˘B
+ Gnomovision バージョン 69, Copyright (C) 年 作者の名前
+ Gnomovision は*全くの無保証*で提供されます。詳しくは「show w」
+ とタイプして下さい。これはフリーソフトウェアであり、ある条件の下で
+ 再頒布することが奨励されています。詳しくは「show c」とタイプして下
+ さい。
)
-‚ą‚ą‚ŁA‰ź‘z“I‚ČƒRƒ}ƒ“ƒhushow wv‚Ɓushow cv‚͈ę”ĘŒöO—˜—p‹–‘řŒ_–ń‘
-‚Ě“KŘ‚Č•”•Ş‚đ•\ŽŚ‚ˇ‚é‚悤‚É‚Č‚Á‚Ä‚˘‚Č‚Ż‚ę‚΂Ȃč‚Ü‚š‚ńB‚ŕ‚ż‚ë‚ńA‚ ‚Č
-‚˝‚ŞŽg‚¤ƒRƒ}ƒ“ƒh‚đushow wv‚âushow cv‚ĆŒÄ‚Ô•K‘RŤ‚Í‚ ‚č‚Ü‚š‚ń‚̂ŁA
-‚ ‚Č‚˝‚ĚƒvƒƒOƒ‰ƒ€‚ɍ‡‚í‚š‚ă}ƒEƒX‚ĚƒNƒŠƒbƒN‚⃁ƒjƒ…[‚ĚƒAƒCƒeƒ€‚É‚ľ‚Ä
-‚ŕŒ‹\‚Ĺ‚ˇB
+ここで、仮想的なコマンド「show w」と「show c」は一般公衆利用許諾契約書
+の適切な部分を表示するようになっていなければなりません。もちろん、あな
+たが使うコマンドを「show w」や「show c」と呼ぶ必然性はありませんので、
+あなたのプログラムに合わせてマウスのクリックやメニューのアイテムにして
+も結構です。
-‚Ü‚˝‚ ‚Č‚˝‚́A•K—v‚Č‚ç‚Î(ƒvƒƒOƒ‰ƒ}[‚Ć‚ľ‚Ä“­‚˘‚Ä‚˘‚˝‚ç)‚ ‚Č‚˝‚ĚŒŮ—pŽĺA
-‚ ‚邢‚Íę‡‚É‚ć‚Á‚Ä‚ÍŠwZ‚Š‚çA‚ť‚ĚƒvƒƒOƒ‰ƒ€‚ÉŠÖ‚ˇ‚éu’˜ěŒ •úŠüş–ž
-(copyright disclaimer)v‚ɏ–ź‚ľ‚Ä‚ŕ‚炤‚ׂŤ‚Ĺ‚ˇBˆČ‰ş‚Í—á‚Ĺ‚ˇ‚̂ŁA–ź
-‘O‚đ•Ď‚Ś‚Ä‚­‚ž‚ł‚˘:
+またあなたは、必要ならば(プログラマーとして働いていたら)あなたの雇用主、
+あるいは場合によっては学校から、そのプログラムに関する「著作権放棄声明
+(copyright disclaimer)」に署名してもらうべきです。以下は例ですので、名
+前を変えてください:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
@@ -397,20 +397,20 @@ of warranty)‚đ–Ú—§‚‚悤“KŘ‚ÉŒfÚ‚ľA‚Ü‚˝‚ą‚ĚŒ_–ń‘‚¨‚ć‚ŃˆęŘ‚Ě•ŰŘ‚Ě
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
- (–ó:
+ (訳:
- YoyodyneŽĐ‚Í‚ą‚ą‚ɁAJames Hacker‚É‚ć‚Á‚ď‘‚Š‚ę‚˝ƒvƒƒOƒ‰ƒ€
- uGnomovisionv(ƒRƒ“ƒpƒCƒ‰‚Ö’Ę‚ˇƒvƒƒOƒ‰ƒ€)‚ÉŠÖ‚ˇ‚éˆęŘ‚Ě’˜ěŒ ‚Ě—˜
- ‰v‚đ•úŠü‚ľ‚Ü‚ˇB
+ Yoyodyne社はここに、James Hackerによって書かれたプログラム
+ 「Gnomovision」(コンパイラへ通すプログラム)に関する一切の著作権の利
+ 益を放棄します。
- <Ty CoonŽ‚̏–ź>A1989”N4ŒŽ1“ú
- Ty CoonA•›ŽĐ’ˇ
+ <Ty Coon氏の署名>、1989年4月1日
+ Ty Coon、副社長
)
-‚ą‚Ěˆę”ĘŒöO—˜—p‹–‘řŒ_–ń‘‚ł́A‚ ‚Č‚˝‚ĚƒvƒƒOƒ‰ƒ€‚đ“Ɛč“I‚ČƒvƒƒOƒ‰ƒ€
-‚É“‡‚ˇ‚é‚ą‚Ć‚đ”F‚ß‚Ä‚˘‚Ü‚š‚ńB‚ ‚Č‚˝‚ĚƒvƒƒOƒ‰ƒ€‚ރTƒuƒ‹[ƒ`ƒ“ƒ‰ƒCƒu
-ƒ‰ƒŠ‚Č‚ç‚΁A“Ɛč“I‚ČƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ć‚ ‚Č‚˝‚Ěƒ‰ƒCƒuƒ‰ƒŠ‚đƒŠƒ“ƒN‚ˇ‚é‚ą
-‚Ć‚đ‹–‰Â‚ľ‚˝‚Ů‚¤‚Ş‚ć‚č•Ö—˜‚Ĺ‚ ‚é‚ƍl‚Ś‚é‚Š‚ŕ‚ľ‚ę‚Ü‚š‚ńB‚ŕ‚ľ‚ą‚ę‚Ş‚ ‚Č
-‚˝‚Ě–]‚Ţ‚ą‚Ć‚Č‚ç‚΁A‚ą‚ĚŒ_–ń‘‚Ě‘ă‚í‚č‚ÉGNU ƒ‰ƒCƒuƒ‰ƒŠˆę”ĘŒöO—˜—p‹–‘ř
-Œ_–ń‘‚đ“K—p‚ľ‚Ä‚­‚ž‚ł‚˘B
+この一般公衆利用許諾契約書では、あなたのプログラムを独占的なプログラム
+に統合することを認めていません。あなたのプログラムがサブルーチンライブ
+ラリならば、独占的なアプリケーションとあなたのライブラリをリンクするこ
+とを許可したほうがより便利であると考えるかもしれません。もしこれがあな
+たの望むことならば、この契約書の代わりにGNU ライブラリ一般公衆利用許諾
+契約書を適用してください。
diff --git a/doc/client_packet.txt b/doc/client_packet.txt
index 1d1df8c..5b3ba44 100644
--- a/doc/client_packet.txt
+++ b/doc/client_packet.txt
@@ -41,1032 +41,1032 @@
#0x200
26, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 19,
-S ƒNƒ‰ƒCƒAƒ“ƒg‚Š‚猊‚Ä‘—M
-R ƒNƒ‰ƒCƒAƒ“ƒg‚Š‚猊‚ÄŽóM
+S クライアントから見て送信
+R クライアントから見て受信
-B ƒoƒCƒg
-w ƒ[ƒh=2B
-l ƒƒ“ƒOƒ[ƒh=4B
-* 0ŒÂˆČă‚­‚č‚Š‚Ś‚ľ
+B バイト
+w ワード=2B
+l ロングワード=4B
+* 0個以上くりかえし
S 0064 <version>.l <account name>.24B <password>.24B <version2>.B
- ƒAƒJƒEƒ“ƒgID&ƒpƒXƒ[ƒh‘—M
+ アカウントID&パスワード送信
S 0065 <account ID>.l <login ID1>.l <login ID2>.l ?.2B <sex>.B
- ƒLƒƒƒ‰ƒZƒŒŽIÚ‘ą—v‹
+ キャラセレ鯖接続要求
S 0066 <charactor number>.B
- ƒLƒƒƒ‰ƒNƒ^‘I‘đ—v‹
+ キャラクタ選択要求
S 0067 <charactor name>.24B <param etc>.11B
- ƒLƒƒƒ‰ƒNƒ^ěŹ—v‹
+ キャラクタ作成要求
S 0068 <charactor ID>.l <mail address>.40B
- ƒLƒƒƒ‰ƒNƒ^íœ—v‹
+ キャラクタ削除要求
R 0069 <len>.w <login ID1>.l <account ID>.l <login ID2>.l ?.32B <sex>.B {<IP>.l <port>.w <server name>.20B <login users>.w <maintenance>.w <new>.w}.32B*
- loginŹŒ÷&ŽIî•ń
+ login成功&鯖情報
R 006a <error No>.B
- loginŽ¸”s ‚ť‚Ě‚P
- err No=00 –˘“o˜^‚ĚID‚Ĺ‚ˇ
- err No=01 ƒpƒXƒ[ƒh‚Şˆá‚˘‚Ü‚ˇ
- err No=02 Žg—pŠúŠÔ‚ޏI—š‚ľ‚Ä‚˘‚Ü‚ˇ
- err No=03 ƒT[ƒo[‚Š‚çÚ‘ą‹‘”Ű‚ł‚ę‚Ü‚ľ‚˝
- err No=04 ‰đ–ń‚ł‚ę‚˝IDA‚Ü‚˝‚̓AƒJƒEƒ“ƒgƒuƒƒbƒN‚ł‚ę‚Ä‚˘‚éID‚Ĺ‚ˇ
- err No=05 ĹV‚Ěƒpƒbƒ`‚Ĺ‚Í‚ ‚č‚Ü‚š‚ń
- err No=06 ‰đ–ń‚ł‚ę‚˝IDA‚Ü‚˝‚̓AƒJƒEƒ“ƒgƒuƒƒbƒN‚ł‚ę‚Ä‚˘‚éID‚Ĺ‚ˇ
- err No=07 ƒT[ƒo[‚ލŹŽG‚ľ‚Ä‚˘‚Ü‚ˇ
+ login失敗 その1
+ err No=00 未登録のIDです
+ err No=01 パスワードが違います
+ err No=02 使用期間が終了しています
+ err No=03 サーバーから接続拒否されました
+ err No=04 解約されたID、またはアカウントブロックされているIDです
+ err No=05 最新のパッチではありません
+ err No=06 解約されたID、またはアカウントブロックされているIDです
+ err No=07 サーバーが混雑しています
R 006b <len>.w <charactor select data>.106B*
- ƒLƒƒƒ‰ƒZƒŒŽIÚ‘ąŹŒ÷&ƒLƒƒƒ‰ƒNƒ^ƒf[ƒ^
+ キャラセレ鯖接続成功&キャラクタデータ
<charactor select data> = <charactor ID>.l <base exp>.l <zeny>.l <job exp>.l <job level>.l ?.8B <option>.l <karma>.l <manner>.l ?.2B <HP>.w <MaxHP>.w <SP>.w <MaxSP>.w <speed>.w <class>.w <hair>.w <weapon>.2w <base level>.w <skill point>.w <head_bottom>.w <sheild>.w <head option top>.w <head option mid>.w <hair color>.w ?.w <name>.24B <STR>.B <AGI>.B <VIT>.B <INT>.B <DEX>.B <LUK>.B <charactor number>.B ?.B
R 006c <error No>.B
- ƒLƒƒƒ‰ƒNƒ^‘I‘đŽ¸”s
+ キャラクタ選択失敗
R 006d <charactor select data>.106B
- ƒLƒƒƒ‰ƒNƒ^ěŹŹŒ÷
+ キャラクタ作成成功
R 006e <error No>.B
- ƒLƒƒƒ‰ƒNƒ^ěŹŽ¸”s
+ キャラクタ作成失敗
R 006f
- ƒLƒƒƒ‰ƒNƒ^íœŹŒ÷
+ キャラクタ削除成功
R 0070 <error No>.B
- ƒLƒƒƒ‰ƒNƒ^íœŽ¸”s
- err No=00 ƒ[ƒ‹ƒAƒhƒŒƒX‚ވႤ
- err No=01 íœ‚Ş‹‘”Ű‚ł‚ę‚˝
+ キャラクタ削除失敗
+ err No=00 メールアドレスが違う
+ err No=01 削除が拒否された
R 0071 <charactor ID>.l <map name>.16B <ip>.l <port>.w
- ƒLƒƒƒ‰ƒNƒ^‘I‘đŹŒ÷&ƒ}ƒbƒv–ź&ƒQ[ƒ€ŽIIP/port
+ キャラクタ選択成功&マップ名&ゲーム鯖IP/port
S 0072 <account ID>.l <charactor ID>.l <login ID1>.l <login ID2>.l <sex>.b
- ƒQ[ƒ€ŽIÚ‘ą—v‹
+ ゲーム鯖接続要求
R 0073 <server tick>.l <coordidate>.3B ?.2B
- ƒQ[ƒ€ŽIÚ‘ąŹŒ÷&ƒT[ƒo‘¤1msŽžŒv&oŒťˆĘ’u
+ ゲーム鯖接続成功&サーバ側1ms時計&出現位置
R 0078 <ID>.l <speed>.w <opt1>.w <opt2>.w <option>.w <class>.w <hair>.w <weapon>.w <head option bottom>.w <sheild>.w <head option top>.w <head option mid>.w <hair color>.w ?.w <head dir>.w <guild>.l <emblem>.l <manner>.w <karma>.B <sex>.B <X_Y_dir>.3B ?.B ?.B <sit>.B <Lv>.B
- ƒ}ƒbƒvƒ[ƒhŽž&ˆÚ“ŽŽž—pAŒü‚Ť•t‚Ť—pƒLƒƒƒ‰î•ń?
+ マップロード時&移動時用、向き付き用キャラ情報?
R 0079 <ID>.l <speed>.w <opt1>.w <opt2>.w <option>.w <class>.w <hair>.w <weapon>.w <head option bottom>.w <sheild>.w <head option top>.w <head option mid>.w <hair color>.w ?.w <head dir>.w <guild>.l <emblem>.l <manner>.w <karma>.B <sex>.B <X_Y_dir>.3B ?.B ?.B <Lv>.B
- ƒeƒŒƒ|“™‚Ě•\ŽŚ”ÍˆÍ“ŕ•Ś‚ŤƒLƒƒƒ‰—pAŒü‚Ť•t‚Ť–ł‚ľƒLƒƒƒ‰î•ń?
+ テレポ等の表示範囲内沸きキャラ用、向き付き無しキャラ情報?
R 007b <ID>.l <speed>.w <opt1>.w <opt2>.w <option>.w <class>.w <hair>.w <weapon>.w <head option bottom>.w <server tick>.l <sheild>.w <head option top>.w <head option mid>.w <hair color>.w ?.w <head dir>.w <guild>.l <emblem>.l <manner>.w <karma>.B <sex>.B <X_Y_X_Y>.5B ?.B ?.B ?.B <Lv>.B
- •\ŽŚ”͈͓ŕƒLƒƒƒ‰ˆÚ“Žî•ń
+ 表示範囲内キャラ移動情報
R 007c <ID>.l <speed>.w ?.6w <class>.w ?.7w <X_Y>.3B ?.2B
- NPC—p•\ŽŚ”͈͓ŕƒLƒƒƒ‰î•ń
+ NPC用表示範囲内キャラ情報
S 007d
- mapƒ[ƒhI‚č
+ mapロード終り
S 007e <client tick>.l
- ƒNƒ‰ƒCƒAƒ“ƒg‘¤1msƒ^ƒCƒ}‘—M
+ クライアント側1msタイマ送信
R 007f <server tick>.l
- ƒT[ƒo‘¤1msƒ^ƒCƒ}‘—M
+ サーバ側1msタイマ送信
R 0080 <ID>.l <type>.B
- type=00 ƒLƒƒƒ‰Á–Ĺ (‰ć–ĘŠOˆÚ“ŽBŽ€‘̏Á–Ĺ“™?)
- type=01 ƒLƒƒƒ‰Ž€–S
- type=02 ƒLƒƒƒ‰Á–Ĺ (logout“™?)
- type=03 ƒeƒŒƒ|[ƒg (ƒeƒŒƒ|,”ˆ,’ą“™H)
+ type=00 キャラ消滅 (画面外移動。死体消滅等?)
+ type=01 キャラ死亡
+ type=02 キャラ消滅 (logout等?)
+ type=03 テレポート (テレポ,蝿,蝶等?)
R 0081 <type>.B
- loginŽ¸”s ‚ť‚Ě‚Q
- type=01 ƒT[ƒo[Ú‘ąI—š
- type=02 “Ż‚śID‚Ĺ‘ź‚ĚŽg—pŽŇ‚ރƒOƒCƒ“‚ľ‚Ü‚ľ‚˝
- type=03 ƒT[ƒo[‚Ć‚Ě“ŻŠú‚ÉŽ¸”s‚ľ‚Ü‚ľ‚˝
- type=04 ’nˆć‚ĚŽű—elˆő’´‰ß‚Őڑą‚Ĺ‚Ť‚Ü‚š‚ń
- type=05 ‚P‚WÎˆČ‰ş‚͐ڑą‚Ĺ‚Ť‚Ü‚š‚ń
- type=06 ŒˆĎ‚ł‚ę‚˝ƒAƒJƒEƒ“ƒg‚Ĺ‚Í‚ ‚č‚Ü‚š‚ń
- type=07 ƒT[ƒo[‚ލŹŽG‚ľ‚Ä‚˘‚Ü‚ˇ
- type=08 ‘O‚̐ڑąî•ń‚ŞŽc‚Á‚Ä‚˘‚Ü‚ˇ
- type=0b ƒAƒJƒEƒ“ƒg‚Ş•Ű—Ż‚ł‚ę‚Ü‚ľ‚˝
- type=0c ‰Ű‹ŕƒVƒXƒeƒ€•ĎX‚Ě‚˝‚߁AˆęŽžI—š‚ľ‚Ü‚ˇ
- type=0d IP‚ވę’v‚ľ‚Č‚˘‚˝‚߁AÚ‘ą‚đI—š‚ľ‚Ü‚ˇ
- type=10 —L—żƒT[ƒrƒX‚É‚Č‚č‚Ü‚ľ‚˝
- type=11 ƒ`ƒPƒbƒg‚Ş”ƒ‚í‚ę‚Ä‚˘‚Č‚˘‚ŠA—LŒřŠúŒŔ‚ŞŘ‚ę‚Ä‚˘‚Ü‚ˇ
+ login失敗 その2
+ type=01 サーバー接続終了
+ type=02 同じIDで他の使用者がログインしました
+ type=03 サーバーとの同期に失敗しました
+ type=04 地域の収容人員超過で接続できません
+ type=05 18歳以下は接続できません
+ type=06 決済されたアカウントではありません
+ type=07 サーバーが混雑しています
+ type=08 前の接続情報が残っています
+ type=0b アカウントが保留されました
+ type=0c 課金システム変更のため、一時終了します
+ type=0d IPが一致しないため、接続を終了します
+ type=10 有料サービスになりました
+ type=11 チケットが買われていないか、有効期限が切れています
S 0085 <X_Y>.3B
- ˆÚ“Ž—v‹
+ 移動要求
R 0087 <server tick>.l <X_Y_X_Y>.5B ?.B
- ˆÚ“Ž‰ž“š
+ 移動応答
R 0088 <ID>.l <X>.w <Y>.w
- ˆÚ“Ž“r’†’âŽ~
+ 移動途中停止
S 0089 <target ID>.l <type>.B
- type=00 target‚đ1‰ń‰Ł‚é
- type=02 Ŕ‚é
- type=03 —§‚żă‚é
- type=07 target‚đ‰Ł‚č‘ą‚Ż‚é
+ type=00 targetを1回殴る
+ type=02 座る
+ type=03 立ち上る
+ type=07 targetを殴り続ける
R 008a <src ID>.l <dst ID>.l <server tick>.l <src speed>.l <dst speed>.l <param1>.w <param2>.w <type>.B <param3>.w
type=00 param1=0 miss
- type=00 param1:ƒ_ƒ[ƒW(‚̍‡Œv?) param2:•ŞŠ„” param3:ƒAƒTƒVƒ“2“—Ź‹tŽčƒ_ƒ[ƒW
- NPC‚Š‚ç‚̍UŒ‚‚Ěę‡Aparam2,param3‚̓Sƒ~ƒf[ƒ^
- speed‚ÍPC‚Ěę‡“ŕ•”ASPD‚Ćˆę’v
- type=01 item‚đE‚¤ ID*2ˆČŠOƒSƒ~
- type=02 Ŕ‚é src IDˆČŠOƒSƒ~
- type=03 —§‚ src IDˆČŠOƒSƒ~
- type=08 •Ą”UŒ‚
- type=09 ƒ_ƒ[ƒWƒ‚[ƒVƒ‡ƒ“‚Č‚ľ‚Ƀ_ƒ[ƒW‚ž‚Ż•\ŽŚ‚ł‚ę‚镨(ƒCƒ“ƒfƒ…ƒA)
- type=0a ƒNƒŠƒeƒBƒJƒ‹
- type=0b ŠŽ‘S‰ń”đ
+ type=00 param1:ダメージ(の合計?) param2:分割数 param3:アサシン2刀流逆手ダメージ
+ NPCからの攻撃の場合、param2,param3はゴミデータ
+ speedはPCの場合内部ASPDと一致
+ type=01 itemを拾う ID*2以外ゴミ
+ type=02 座る src ID以外ゴミ
+ type=03 立つ src ID以外ゴミ
+ type=08 複数攻撃
+ type=09 ダメージモーションなしにダメージだけ表示される物(インデュア)
+ type=0a クリティカル
+ type=0b 完全回避
S 008c <len>.w <str>.?B
- ’Ęí”­Œž‘—MBƒ`ƒƒƒbƒg’†‚̓`ƒƒƒbƒg“ŕ”­Œž—p‚É‚Č‚é
- ć“Ş‚Ě"<nick> : "‚Ě•”•Ş‚̓Nƒ‰ƒCƒAƒ“ƒg‘¤‚Ĺ•t‚Ż‚鎖
+ 通常発言送信。チャット中はチャット内発言用になる
+ 先頭の"<nick> : "の部分はクライアント側で付ける事
R 008d <len>.w <ID>.l <str>.?B
- ID‚ł‚ń‚Ě”­ŒžŽóMBƒ`ƒƒƒbƒg’†‚̓`ƒƒƒbƒg“ŕ”­Œž—p‚É‚Č‚é
+ IDさんの発言受信。チャット中はチャット内発言用になる
R 008e <len>.w <str>.?B
- ŽŠ•Ş‚Ě”­ŒžŽóMBƒ`ƒƒƒbƒg’†‚̓`ƒƒƒbƒg“ŕ”­Œž—p‚É‚Č‚é
+ 自分の発言受信。チャット中はチャット内発言用になる
S 0090 <ID>.l <type?>.B
- NPC‚ɘb‚ľ‚Š‚Ż‚éBtype‚Í01‚ľ‚ŠŒŠ‚˝Ž––ł‚ľ
+ NPCに話しかける。typeは01しか見た事無し
R 0091 <map name>.16B <X>.w <Y>.w
- ŽI“ŕƒ}ƒbƒvŠÔˆÚ“ŽAƒeƒŒƒ|,”ˆ“™—p
+ 鯖内マップ間移動、テレポ,蝿等用
R 0092 <map name>.16B <X>.w <Y>.w <IP>.l <port>.w
- ŽIŠÔˆÚ“Ž
+ 鯖間移動
R 0093
- 8ŒŽ’†‚É1‰ń‚ž‚ŻŠĎ‘ށB“ä
+ 8月中に1回だけ観測。謎
S 0094 <ID>.l
- ID‚ĚƒLƒƒƒ‰–ź“™—v‹B0095‚Š0195‚Ě•Ô“š‚Ş‚ ‚é‚Í‚¸
+ IDのキャラ名等要求。0095か0195の返答があるはず
R 0095 <ID>.l <nick>.24B
- NPC,ƒMƒ‹ƒh–˘Š‘ŽPC‚Ě0094‚Ö‚Ě•Ô“š
- 0193 <charID>.l ‚Ŗ₢‡‚í‚š‚Ä
- 0194 <charID>.l <name>.24B ‚̉ž“š‚Ĺ“ž‚Ä‚Ü‚ˇB
+ NPC,ギルド未所属PCの0094への返答
+ 0193 <charID>.l で問い合わせて
+ 0194 <charID>.l <name>.24B の応答で得てます。
S 0096 <len>.w <nick>.24B <message>.?B
- wis‘—M
+ wis送信
R 0097 <len>.w <nick>.24B <message>.?B
- wisŽóM
+ wis受信
R 0098 <type>.B
- type=00 wis‘—MŹŒ÷
- type=01 wis‘ŠŽč‚Şlogin‚ľ‚Ä‚Č‚˘?
- type=02 wis‘ŠŽč‚Š‚çignore‚ł‚ę‚Ä‚é?
+ type=00 wis送信成功
+ type=01 wis相手がloginしてない?
+ type=02 wis相手からignoreされてる?
S 0099
- _‚̐ş‘—M
+ 神の声送信
R 009a <len>.w <message>.?B
- GM‚Š‚ç‚Ě“V‚̐ş
+ GMからの天の声
S 009b <head dir>.w <dir>.B
- ‘Ě&“Ş‚Ě•űŒü•ĎX—v‹BƒNƒ‰ƒCƒAƒ“ƒg‚ւ̉ž“š‚Í–ł‚˘–Í—l
- dir‚Í00`07‚Ĺ‘Ě‚ĚŒü‚ŤB00‚Ĺ–k‚Š‚ç”˝ŽžŒv‰ń‚č‚É45‹’PˆĘ‚Ĺ07‚Ü‚Ĺ
- head dir‚Í00,01,02‚Ĺ“Ş‚ĚŒü‚ŤB00‚Ĺ‘Ě‚Ć“Ż‚śA01‚މEA02‚ލś
+ 体&頭の方向変更要求。クライアントへの応答は無い模様
+ dirは00〜07で体の向き。00で北から反時計回りに45°単位で07まで
+ head dirは00,01,02で頭の向き。00で体と同じ、01が右、02が左
R 009c <ID>.l <head dir>.w <dir>.B
- ID‚Ě‘Ě&“Ş‚Ě•űŒü•ĎX
+ IDの体&頭の方向変更
R 009d <ID>.l <item ID>.w <identify flag>.B <X>.w <Y>.w <amount>.w <subX>.B <subY>.B
- ˆÚ“Ž“™‚ŏ°ƒAƒCƒeƒ€‚މć–Ę“ŕ‚É“ü‚Á‚Ä‚Ť‚˝Žž
+ 移動等で床アイテムが画面内に入ってきた時
R 009e <ID>.l <item ID>.w <identify flag>.B <X>.w <Y>.w <subX>.B <subY>.B <amount>.w
- item dropB‰˝ŒĚ‚Š009d‚Ćƒ}ƒX–Ú“ŕˆĘ’u&ŒÂ”‚Ş“ü‚ę•Ď‚Á‚Ä‚˘‚é
+ item drop。何故か009dとマス目内位置&個数が入れ変っている
S 009f <ID>.l
- ID‚̏°ƒAƒCƒeƒ€‚đE‚¤
+ IDの床アイテムを拾う
R 00a0 <index>.w <amount>.w <item ID>.w <identify flag>.B <attribute?>.B <refine>.B <card>.4w <equip type>.w <type>.B <fail>.B
- fail=02 Žć“žŽ¸”s?
- fail=06 ƒ‹[ƒgŒ –ł‚ľBŽć“žŽ¸”s
+ fail=02 取得失敗?
+ fail=06 ルート権無し。取得失敗
R 00a1 <ID>.l
- ID‚̏°ƒAƒCƒeƒ€Á‹Ž
+ IDの床アイテム消去
S 00a2 <index>.w <amount>.w
- Š—LƒAƒCƒeƒ€‚đ—Ž‚ˇ
+ 所有アイテムを落す
R 00a3 <len>.w {<index>.w <item ID>.w <type>.B <identify flag>.B <amount>.w ?.2B}.10B*
- Š—LÁ–Ő•i&ŽűW•iƒŠƒXƒg
+ 所有消耗品&収集品リスト
R 00a4 <len>.w {<index>.w <item ID>.w <type>.B <identify flag>.B <equip type>.w <equip point>.w <attribute?>.B <refine>.B <card>.4w}.20B*
- Š—L‘•”őƒŠƒXƒg
+ 所有装備リスト
R 00a5 <len>.w {<index>.w <item ID>.w <type>.B <identify flag>.B <amount>.w ?.2B}.10B*
- ƒJƒvƒ‰‚ł‚ń‚É—a‚Ż‚Ä‚ ‚éÁ–Ő•i&ŽűW•iƒŠƒXƒg
+ カプラさんに預けてある消耗品&収集品リスト
R 00a6 <len>.w {<index>.w <item ID>.w <type>.B <identify flag>.B <equip type>.w <equip point>.w <attribute?>.B <refine>.B <card>.4w}.20B*
- ƒJƒvƒ‰‚ł‚ń‚É—a‚Ż‚Ä‚ ‚é‘•”őƒŠƒXƒg
+ カプラさんに預けてある装備リスト
S 00a7 <index>.w <ID>.l
- ŠŽƒAƒCƒeƒ€index‚đŽg—p‚ˇ‚éBID‚ÍŽŠ•Ş‚Ě‚Ý?
+ 所持アイテムindexを使用する。IDは自分のみ?
R 00a8 <index>.w <amount>.w <type>.B
- ƒAƒCƒeƒ€Žg—p‰ž“šBtype=00‚Ěę‡Žg—pŽ¸”s? amount‚ŕƒSƒ~‚Ě–Í—l
- type=01‚Ěę‡ŹŒ÷‚ŁAamount‚ÍŽg—pŒă‚ĚŽc‚čŒÂ”
+ アイテム使用応答。type=00の場合使用失敗? amountもゴミの模様
+ type=01の場合成功で、amountは使用後の残り個数
S 00a9 <index>.w <equip type>.w
- ƒAƒCƒeƒ€‘•”ő
+ アイテム装備
R 00aa <index>.w <equip point>.w <type>.B
- ƒAƒCƒeƒ€‘•”ő‰ž“šBtype=00‚Ěę‡‘•”őŽ¸”s? equip point‚ŕƒSƒ~‚Ě–Í—l
+ アイテム装備応答。type=00の場合装備失敗? equip pointもゴミの模様
S 00ab <index>.w
- ‘•”ő‰đœ
+ 装備解除
R 00ac <index>.w <equip point>.w <type>.B
- ‘•”ő‰đœ‰ž“šBtype=00‚Ěę‡Ž¸”s? equip point‚ŕƒSƒ~‚Ě–Í—l
+ 装備解除応答。type=00の場合失敗? equip pointもゴミの模様
R 00af <index>.w <amount>.w
- ƒAƒCƒeƒ€”Œ¸­BamountŒÂ‚ž‚ŻŒ¸‚炡
+ アイテム数減少。amount個だけ減らす
R 00b0 <type>.w <val>.l
- FX‚Č”\—Í’l‚̍XVBˆČ‰ştype:‘Ήž‚ˇ‚鐔’l‚đ—ń‹“
- 0000:speed 0003:ˆŤs’l 0004:ƒ}ƒi[ƒ|ƒCƒ“ƒg 0005:HP 0006:MaxHP
- 0007:SP 0008:MaxSP 0009:ƒXƒe[ƒ^ƒXƒ|ƒCƒ“ƒg 000b:ƒx[ƒXƒŒƒxƒ‹
- 000c:ƒXƒLƒ‹ƒ|ƒCƒ“ƒg 0018:d—Ę(•\ŽŚ‚ł‚ę‚Ă鐔Žš‚Ě10”{)
- 0019:Ĺ‘ĺd—Ę(•\ŽŚ‚ł‚ę‚Ă鐔Žš‚Ě10”{)
- 0029:ATK‘O 002a:ATKŒă 002b:MATK‘O 002c:MATKŒă
- 002d:DEF‘O 002e:DEFŒă 002f:MDEF‘O 0030:MDEFŒă
- 0031:HIT 0032:FLEE‘O 0033:FLEEŒă 0034:ƒNƒŠƒeƒBƒJƒ‹
- 0035:ASPD(2ms’PˆĘ‚ĚŽžŠÔ?) 0037:ƒWƒ‡ƒuƒŒƒxƒ‹
- 0082:“ä ATKŒă‚Ć“Ż‚ś”Žš?
+ 色々な能力値の更新。以下type:対応する数値を列挙
+ 0000:speed 0003:悪行値 0004:マナーポイント 0005:HP 0006:MaxHP
+ 0007:SP 0008:MaxSP 0009:ステータスポイント 000b:ベースレベル
+ 000c:スキルポイント 0018:重量(表示されてる数字の10倍)
+ 0019:最大重量(表示されてる数字の10倍)
+ 0029:ATK前 002a:ATK後 002b:MATK前 002c:MATK後
+ 002d:DEF前 002e:DEF後 002f:MDEF前 0030:MDEF後
+ 0031:HIT 0032:FLEE前 0033:FLEE後 0034:クリティカル
+ 0035:ASPD(2ms単位の時間?) 0037:ジョブレベル
+ 0082:謎 ATK後と同じ数字?
R 00b1 <type>.w <val>.l
- FX‚Č”\—Í’l‚̍XVBˆČ‰ştype:‘Ήž‚ˇ‚鐔’l‚đ—ń‹“
- 0001:ƒx[ƒX‘¤ŒoŒą’l 0002:ƒWƒ‡ƒu‘¤ŒoŒą’l 0014:zeny
- 0016:ƒx[ƒX‘¤•K—vŒoŒą’l 0017:ƒWƒ‡ƒu‘¤•K—vŒoŒą’l
- ƒŔ1‚Ĺ‚Í00b0‚Íval‚ŞshortA00b1‚Íval‚Şlong‚Ć‚˘‚¤Žg‚˘•Ş‚Ż‚Ş‚ ‚Á‚˝‚ń‚ž‚Ż‚Ç
- Ą‚Ć‚Č‚Á‚Ă͍ˇ‚Ş–ł‚­‚Č‚Á‚āA–Ó’°‚Ý‚˝‚˘‚Č‚ŕ‚Ě?
+ 色々な能力値の更新。以下type:対応する数値を列挙
+ 0001:ベース側経験値 0002:ジョブ側経験値 0014:zeny
+ 0016:ベース側必要経験値 0017:ジョブ側必要経験値
+ β1では00b0はvalがshort、00b1はvalがlongという使い分けがあったんだけど
+ 今となっては差が無くなって、盲腸みたいなもの?
S 00b2 <type>.B
- type=00 Ž€–SŽžƒŠƒXƒ^[ƒg
- type=01 ƒLƒƒƒ‰ƒZƒŒ—v‹
+ type=00 死亡時リスタート
+ type=01 キャラセレ要求
R 00b3 <type>.B
- type=01 ƒLƒƒƒ‰ƒZƒŒ‰ž“š
+ type=01 キャラセレ応答
R 00b4 <len>.w <ID>.l <str>.?B
- ID‚ĚNPC‚Š‚ç‚ĚƒƒbƒZ[ƒW
+ IDのNPCからのメッセージ
R 00b5 <ID>.l
- ID‚ĚNPC‚Ć‚ĚƒƒbƒZ[ƒWƒEƒBƒ“ƒhƒE‚É"NEXT"ƒAƒCƒRƒ“‚đo‚ˇ
+ IDのNPCとのメッセージウィンドウに"NEXT"アイコンを出す
R 00b6 <ID>.l
- ID‚ĚNPC‚Ć‚ĚƒƒbƒZ[ƒWƒEƒBƒ“ƒhƒE‚É"CLOSE"ƒAƒCƒRƒ“‚đo‚ˇ
+ IDのNPCとのメッセージウィンドウに"CLOSE"アイコンを出す
R 00b7 <len>.w <ID>.l <str>.?B
- ID‚ĚNPC‚̉ď˜b‚Ĺ‘I‘đ€–Ú•\ŽŚBŠe€–Ú‚Í':'‚Ĺ‹ćŘ‚ç‚ę‚é
+ IDのNPCの会話で選択項目表示。各項目は':'で区切られる
S 00b8 <ID>.l <select>.B
- ID‚ĚNPC‚̉ď˜b‚Ě‘I‘đBŠe€–ڂɏ‡‚É1`‚ސU‚ç‚ę‚éBff‚ĹƒLƒƒƒ“ƒZƒ‹?
+ IDのNPCの会話の選択。各項目に順に1〜が振られる。ffでキャンセル?
S 00b9 <ID>.l
- ID‚ĚNPC‚Ƃ̉ď˜bBNEXTƒ{ƒ^ƒ“‚đ‰Ÿ‚ľ‚˝
+ IDのNPCとの会話。NEXTボタンを押した
S 00bb <type>.w <amount>.B
- ƒXƒe[ƒ^ƒXup—v‹Btype‚Í000d‚Š‚ç0012‚ޏ‡‚ÉSTR,AGI,VIT,INT,DEX,LUK‚ɑΉž
+ ステータスup要求。typeは000dから0012が順にSTR,AGI,VIT,INT,DEX,LUKに対応
R 00bc <type>.w <fail>.B <val>.B
- ƒXƒe[ƒ^ƒXup‰ž“šBfail=01‚Ȃ琏Œ÷Btype‚Í00bb‚Ć“Ż‚śBval‚͏ă‚Á‚˝Œă‚̐”Žš
- Ž¸”s—á‚ÍŒŠ‚˝Ž––ł‚˘‚Ě‚Ĺ“äBƒXƒe[ƒ^ƒXƒ|ƒCƒ“ƒg‚Ş‘Ť‚č‚Č‚˘ó‘Ô‚Ĺ
- 00bb‚đ”­s‚Ĺ‚Ť‚éƒNƒ‰ƒCƒAƒ“ƒg‚Ş—L‚ę‚΁Afail=00‚É‚Č‚é‚Ě‚Ĺ‚Í‚Č‚˘‚Š‚Ć—\‘z
+ ステータスup応答。fail=01なら成功。typeは00bbと同じ。valは上った後の数字
+ 失敗例は見た事無いので謎。ステータスポイントが足りない状態で
+ 00bbを発行できるクライアントが有れば、fail=00になるのではないかと予想
R 00bd <status point>.w <STR>.B <STRupP>.B <AGI>.B <AGIupP>.B <VIT>.B <VITupP>.B <INT>.B <INTupP>.B <DEX>.B <DEXupP>.B <LUK>.B <LUKupP>.B <ATK>.w <ATKbonus>.w <MATKmax>.w <MATKmin>.w <DEF>.w <DEFbonus>.w <MDEF>.w <MDEFbonus>.w <HIT>.w <FLEE>.w <FLEEbonus>.w <critical>.w ?.w
- ‚Ü‚Ć‚ß‚ÄƒXƒe[ƒ^ƒXî•ń‚đ‘—‚éƒpƒPƒbƒg
+ まとめてステータス情報を送るパケット
R 00be <type>.w <val>.B
- •K—vƒXƒe[ƒ^ƒXƒ|ƒCƒ“ƒgXVƒpƒPƒbƒgBtype‚Í0020`0025‚ޏ‡‚ÉSTR`LUK‚ɑΉž
+ 必要ステータスポイント更新パケット。typeは0020〜0025が順にSTR〜LUKに対応
S 00bf <type>.B
- ƒGƒ‚[ƒVƒ‡ƒ“‚đo‚ˇBtype‚Í00-0c(,0d)‚ŞALT+1`ALT+9,ALT+0,ƒ`ƒ‡ƒL,ƒO[,ƒp[(,ŠŘ‘Šř)‚ɑΉž
- 00=! 01=? 02=‚¤‚ę‚ľ‚˘(ô) 03=ƒn[ƒg 04=Šž 05=‚ ‚Í‚Í(“d‹…)
- 06=‚˘‚â‚ž‚Č(”) 07=“{‚č(‚ŕ‚â‚ŕ‚â)08=‚¨‹ŕ() 09=c 0a=ƒ`ƒ‡ƒL
- 0b=ƒO[ 0c=ƒp[ 0d=ŠŘ‘Šř 0e=‘ĺ‚Ť‚˘ƒn[ƒg 0f=‚ ‚č‚Ş‚Ć‚¤(thanks)
- 10=–ł”O 11=‚˛‚ß‚ń(sorry) 12=Î‚˘ 13=Šž‚Š‚Ť 14=‚ ‚Ě
- 15=Ĺ‚(GoodJob)16=ƒLƒ‡ƒƒLƒ‡ƒ 17=ƒVƒ‡ƒbƒN 18=‚Ü‚é 19=ƒoƒc
- 1a=ƒwƒ‹ƒv(help) 1b=go 1c=‚Ś[‚ń 1d=‚­‚ˇ‚­‚ˇ 1e=‚ż‚ă
- 1f=‚ż‚ă‚ż‚ă 20=‚Ó‚ń 21=‚¤‚ń‚¤‚ń
+ エモーションを出す。typeは00-0c(,0d)がALT+1〜ALT+9,ALT+0,チョキ,グー,パー(,韓国旗)に対応
+ 00=! 01=? 02=うれしい(♪) 03=ハート 04=汗 05=あはは(電球)
+ 06=いやだな(#) 07=怒り(もやもや)08=お金($) 09=… 0a=チョキ
+ 0b=グー 0c=パー 0d=韓国旗 0e=大きいハート 0f=ありがとう(thanks)
+ 10=無念 11=ごめん(sorry) 12=笑い 13=汗かき 14=あの
+ 15=最高(GoodJob)16=キョロキョロ 17=ショック 18=まる 19=バツ
+ 1a=ヘルプ(help) 1b=go 1c=えーん 1d=くすくす 1e=ちゅ
+ 1f=ちゅちゅ 20=ふん 21=うんうん
R 00c0 <ID>.l <type>.B
- ID‚̐l‚ރGƒ‚[ƒVƒ‡ƒ“‚đo‚ľ‚˝Btype‚Í00bf‚Ć“Ż‚ś
+ IDの人がエモーションを出した。typeは00bfと同じ
S 00c1
- loginl”–₢‡‚í‚š
+ login人数問い合わせ
R 00c2 <val>.l
- loginl”‰ž“š
+ login人数応答
R 00c3 <ID>.l <type>.B <val>.B
- ŒŠ‚˝–Ú•ĎXBtype‚Í00‚Ĺ–{‘Ě(“]EŽž“™)A02‚Ş•ŠíA03‚Ş“Ş(‰ş)A04‚Ş“Ş(ă)A05‚Ş“Ş(’†)A08‚ޏ‚
+ 見た目変更。typeは00で本体(転職時等)、02が武器、03が頭(下)、04が頭(上)、05が頭(中)、08が盾
R 00c4 <ID>.l
- ˜b‚Š‚Ż‚˝NPC‚ޏ¤l‚ž‚Á‚˝‚Ě‚Ĺbuy/sell‘I‘đ‘‹o
+ 話かけたNPCが商人だったのでbuy/sell選択窓出
R 00c5 <ID>.l <type>.B
- buy/sell‘I‘đBtype=00‚Č‚çbuyBtype=01‚Č‚çsell
+ buy/sell選択。type=00ならbuy。type=01ならsell
R 00c6 <len>.w {<value>.l <DCvalue>.l <type>.B <item ID>.w}.11B*
- NPC‚Ě‚¨“Xbuy‘I‘𮾁BDCvalue‚͏¤lDCŒă‚Ě’l’i
+ NPCのお店buy選択時。DCvalueは商人DC後の値段
R 00c7 <len>.w {<index>.w <value>.l <OCvalue>.l}.10B*
- NPC‚Ě‚¨“Xsell‘I‘𮾁BOCvalue‚͏¤lOCŒă‚Ě’l’i
+ NPCのお店sell選択時。OCvalueは商人OC後の値段
S 00c8 <len>.w {<amount>.w <item ID>.w}.4B*
- NPC‚Ě‚¨“X‚Š‚甃‚¤
+ NPCのお店から買う
S 00c9 <len>.w {<index>.w <amount>.w}.4B*
- NPC‚Ě‚¨“X‚É”„‚é
+ NPCのお店に売る
R 00ca <type>.B
- NPC‚Š‚çw“üI—šBtype=00ŹŒ÷
+ NPCから購入終了。type=00成功
R 00cb <type>.B
- NPC‚Ö”„‹pI—šBtype=00ŹŒ÷
+ NPCへ売却終了。type=00成功
S 00cc <ID>.l
- GM—p‰EƒNƒŠƒbƒNƒƒjƒ…[uinamejŽg—pŽŇ‹­§I—švŽg—p
-R 00cd <IDH>.l
- GM—p‰EƒNƒŠƒbƒNƒƒjƒ…[uinamejŽg—pŽŇ‹­§I—šv‚̉ž“š
- <ID>‚Ş0‚Ěę‡‚ÍŽ¸”s‚Ć•\ŽŚB(‚ą‚ĚƒpƒPƒbƒg‚Í‚˝‚ž‚̉ž“š‚Ĺ‚ˇBÚ‘ąI—š‚Ě‹@”\‚Í‚ ‚č‚Ü‚š‚ńB)
+ GM用右クリックメニュー「(name)使用者強制終了」使用
+R 00cd <ID?>.l
+ GM用右クリックメニュー「(name)使用者強制終了」の応答
+ <ID>が0の場合は失敗と表示。(このパケットはただの応答です。接続終了の機能はありません。)
S 00cf <nick>.24B <type>.B
- type=00 nick‚Š‚ç‚Ě”­ŒžŽó‚Ż•t‚Ż‹‘”Ű (/ex nick)
- type=01 nick‚Š‚ç‚Ě”­ŒžŽó‚Ż•t‚Ż‹–‰Â (/in nick)
+ type=00 nickからの発言受け付け拒否 (/ex nick)
+ type=01 nickからの発言受け付け許可 (/in nick)
S 00d0 <type>len.B
- type=00 ‘S‚Ä‚Ě”­ŒžŽó‚Ż•t‚Ż‹‘”Ű (/exall)
- type=01 ‘S‚Ä‚Ě”­ŒžŽó‚Ż•t‚Ż‹–‰Â (/inall)
+ type=00 全ての発言受け付け拒否 (/exall)
+ type=01 全ての発言受け付け許可 (/inall)
R 00d1 <type>.B <fail>.B
- fail=00 ”­ŒžŽó‚Ż•t‚Ż‹‘”ېŹŒ÷
- fail=01 ”­ŒžŽó‚Ż•t‚Ż‹‘”ŰŽ¸”s
+ fail=00 発言受け付け拒否成功
+ fail=01 発言受け付け拒否失敗
R 00d2 <type>.B <fail>.B
- fail=00 ‘S”­ŒžŽó‚Ż•t‚Ż‹‘”ېŹŒ÷
- fail=01 ‘S”­ŒžŽó‚Ż•t‚Ż‹‘”ŰŽ¸”s
+ fail=00 全発言受け付け拒否成功
+ fail=01 全発言受け付け拒否失敗
S 00d5 <len>.w <limit>.w <pub>.B <passwd>.8B <title>.?B
- ƒ`ƒƒƒbƒg—§‚āB‚ą‚ą‚Š‚çƒ`ƒƒƒbƒgŠÖŒW‚Ş‘ą‚­‚Ż‚Ç’˛‚×‚ŞŠĂ‚˘‚̂ŕ⊎‚ć‚ë
+ チャット立て。ここからチャット関係が続くけど調べが甘いので補完よろ
R 00d6 <fail>.B
- ƒ`ƒƒƒbƒg—§‚ĉž“š
+ チャット立て応答
R 00d7 <len>.w <owner ID>.l <chat ID>.l <limit>.w <users>.w <pub>.B <title>.?B
- ‰ć–Ę“ŕƒ`ƒƒƒbƒgî•ń
+ 画面内チャット情報
R 00d8 <chat ID>.l
- ƒ`ƒƒƒbƒgÁ‹Ž
+ チャット消去
S 00d9 <chat ID>.l <passwd>.8B
- ƒ`ƒƒƒbƒgŽQ‰Á—vż
+ チャット参加要請
R 00da <fail>.B
- ƒ`ƒƒƒbƒgŽQ‰ÁŽ¸”s
+ チャット参加失敗
R 00db <len>.w <chat ID>.l {<index>.l <nick>.24B}.28B*
- ƒ`ƒƒƒbƒgŽQ‰ÁŽŇƒŠƒXƒg
+ チャット参加者リスト
R 00dc <users>.w <nick>.24B
- ƒ`ƒƒƒbƒg‚Ö‚ĚŽQ‰ÁŽŇ’ljÁ(?)
+ チャットへの参加者追加(?)
R 00dd <index>.w <nick>.24B <fail>.B
- ƒ`ƒƒƒbƒg‚Š‚çŽQ‰ÁŽŇ”˛‚Ż
+ チャットから参加者抜け
S 00de <len>.w <limit>.w <pub>.B <passwd>.8B <title>.?B
- ƒ`ƒƒƒbƒgƒXƒe[ƒ^ƒX•ĎX
+ チャットステータス変更
R 00df <len>.w <owner ID>.l <chat ID>.l <limit>.w <users>.w <pub>.B <title>.?B
- ƒ`ƒƒƒbƒgƒXƒe[ƒ^ƒX•ĎXŹŒ÷
+ チャットステータス変更成功
S 00e0 ?.l <nick>.24B
- ƒ`ƒƒƒbƒgƒ‹[ƒ€Š—LŽŇ•ĎX—v‹?
+ チャットルーム所有者変更要求?
R 00e1 <index>.l <nick>.24B
- ƒ`ƒƒƒbƒgŽQ‰ÁŽŇ”ԍ†•t‚Ż’ź‚ľ?
+ チャット参加者番号付け直し?
S 00e2 <nick>.24B
- ƒ`ƒƒƒbƒgkick
+ チャットkick
S 00e3
- ƒ`ƒƒƒbƒg”˛‚Ż
+ チャット抜け
S 00e4 <ID>.l
- Žć‚čˆř‚Ť—v‹
+ 取り引き要求
R 00e5 <nick>.24B
- Žć‚čˆř‚Ť—vżŽó‚Ż
+ 取り引き要請受け
S 00e6 <type>.B
- type=03 Žć‚čˆř‚Ť—vżok
- type=04 Žć‚čˆř‚Ť—vżƒLƒƒƒ“ƒZƒ‹
+ type=03 取り引き要請ok
+ type=04 取り引き要請キャンセル
R 00e7 <fail>.B
- Žć‚čˆř‚Ť—v‹‰ž“š
- fail=00 ‹——Ł‚މ“‰ß‚Ź
- fail=03 —vżŽó‚Ż‚Ä‚­‚ę‚˝
- fail=04 ƒLƒƒƒ“ƒZƒ‹‚ł‚ę‚˝?
+ 取り引き要求応答
+ fail=00 距離が遠過ぎ
+ fail=03 要請受けてくれた
+ fail=04 キャンセルされた?
S 00e8 <index>.w <amount>.l
- ƒAƒCƒeƒ€’ljÁBindex=0‚Ĺzeny’ljÁBł‹KƒNƒ‰ƒCƒAƒ“ƒg‚Ĺ‚Ízeny‚Í00eb‚Ě’ź‘O‚Ě‚Ý
+ アイテム追加。index=0でzeny追加。正規クライアントではzenyは00ebの直前のみ
R 00e9 <amount>.l <type ID>.w <identify flag>.B <attribute?>.B <refine>.B <card>.4w
- ‘ŠŽč•ű‚Š‚ç‚ĚƒAƒCƒeƒ€’ljÁ
+ 相手方からのアイテム追加
R 00ea <index>.w <fail>.B
- fail=00 ƒAƒCƒeƒ€’ljÁŹŒ÷
- fail=01 ’ljÁŽ¸”sB‘ŠŽč‘¤d—ĘƒI[ƒo
+ fail=00 アイテム追加成功
+ fail=01 追加失敗。相手側重量オーバ
S 00eb
- ƒAƒCƒeƒ€’ljÁŠŽ—š(ok‰Ÿ‚ľ)
+ アイテム追加完了(ok押し)
R 00ec <fail>.B
- fail=00 ŽŠ•Ş‚Š‚ç‚ĚokŽó—Ě
- fail=01 ‘ŠŽč‚Š‚ç‚ĚokŽó—Ě
+ fail=00 自分からのok受領
+ fail=01 相手からのok受領
S 00ed
- Žć‚čˆř‚ŤƒLƒƒƒ“ƒZƒ‹
+ 取り引きキャンセル
R 00ee
- Žć‚čˆř‚Ť‚ރLƒƒƒ“ƒZƒ‹‚ł‚ę‚Ü‚ľ‚˝
+ 取り引きがキャンセルされました
S 00ef
- Žć‚čˆř‚Ť‹–‘ř(trade‰Ÿ‚ľ)
+ 取り引き許諾(trade押し)
R 00f0
- Žć‚čˆř‚ŤŠŽ—š
+ 取り引き完了
R 00f2 <num>.w <limit>.w
- ƒJƒvƒ‰‚ł‚ń‹–—eƒAƒCƒeƒ€ŒÂ”&Œťó
+ カプラさん許容アイテム個数&現状
S 00f3 <index>.w <amount>.l
- ƒJƒvƒ‰‚ł‚ń‘qŒÉ‚ɃAƒCƒeƒ€•ú‚荾‚Ý
+ カプラさん倉庫にアイテム放り込み
R 00f4 <index>.w <amount>.l <type ID>.w <identify flag>.B <attribute?>.B <refine>.B <card>.4w
- ƒJƒvƒ‰‚ł‚ń‘qŒÉ‚ĚƒAƒCƒeƒ€’ljÁ
+ カプラさん倉庫のアイテム追加
S 00f5 <index>.w <amount>.l
- ƒJƒvƒ‰‚ł‚ń‘qŒÉ‚Š‚çƒAƒCƒeƒ€Žć‚čo‚ľ—v‹
+ カプラさん倉庫からアイテム取り出し要求
R 00f6 <index>.w <amount>.l
- ƒJƒvƒ‰‚ł‚ń‘qŒÉ‚Š‚çƒAƒCƒeƒ€Žć‚čo‚ľ‰ž“š
+ カプラさん倉庫からアイテム取り出し応答
S 00f7
- ƒJƒvƒ‰‚ł‚ń‘qŒÉ•Â‚ś—v‹
+ カプラさん倉庫閉じ要求
R 00f8
- ƒJƒvƒ‰‚ł‚ń‘qŒÉ•Â‚ś‰ž“š
+ カプラさん倉庫閉じ応答
S 00f9 <party name>.24B
- ƒp[ƒeƒBěŹ—v‹
+ パーティ作成要求
R 00fa <fail>.B
- ƒp[ƒeƒBěŹ‰ž“š
- fail=00 uƒp[ƒeƒB[‚đŒ‹Ź‚ľ‚Ü‚ľ‚˝Bv
- fail=01 u“Ż‚ś–ź‘O‚Ěƒp[ƒeƒB[‚Ş‚ ‚č‚Ü‚ˇBv
- fail=02 u‚ˇ‚Ĺ‚Éƒp[ƒeƒB[‚ɉÁ“ü‚ľ‚Ä‚˘‚Ü‚ˇBv
+ パーティ作成応答
+ fail=00 「パーティーを結成しました。」
+ fail=01 「同じ名前のパーティーがあります。」
+ fail=02 「すでにパーティーに加入しています。」
R 00fb <len>.w <party name>.24B {<ID>.l <nick>.24B <map name>.16B <leader>.B <offline>.B}.46B*
- ƒp[ƒeƒBî•ń‚Ü‚Ć‚ß‚Ä‘—‚č
+ パーティ情報まとめて送り
S 00fc <ID>.l
- ƒp[ƒeƒBŠŠ—U‚ˇ‚é
+ パーティ勧誘する
R 00fd <nick>.24B <fail>.B
- fail=00 ‘ŠŽč‚ÍŠů‚Ƀp[ƒeƒB‚É“ü‚Á‚Ä‚˘‚˝
- fail=01 ‘ŠŽč‚É‹‘”Ű‚ł‚ę‚˝
- fail=02 ŠŠ—UŹŒ÷
+ fail=00 相手は既にパーティに入っていた
+ fail=01 相手に拒否された
+ fail=02 勧誘成功
R 00fe <ID>.l <party name>.24B
- ƒp[ƒeƒB‚É—U‚í‚ę‚˝
+ パーティに誘われた
S 00ff <ID>.l <fail>.l
- ƒp[ƒeƒB‚É—U‚í‚ę‚˝Žž‚Ě•Ô“šBfail=1 ok•Ô“š?
+ パーティに誘われた時の返答。fail=1 ok返答?
S 0100
- ƒp[ƒeƒB’E‘Ţ—v‹
+ パーティ脱退要求
R 0101 <exp>.w <item?>.w
- ƒp[ƒeƒBÝ’čŒťó? exp=2‚Ěę‡‚ÍŒö•˝”z•ŞÝ’莸”s?
+ パーティ設定現状? exp=2の場合は公平配分設定失敗?
S 0102 <exp>.w <item?>.w
- ƒp[ƒeƒBÝ’č•ĎX
+ パーティ設定変更
R 0104 <ID>.l ?.l <X>.w <Y>.w <offline>.B <party name>.24B <nick>.24B <map name>.16B
- ƒp[ƒeƒB1l•Şî•ńXV
+ パーティ1人分情報更新
R 0105 <ID>.l <nick>.24B <fail>.B
- nick‚ł‚ń‚ރp[ƒeƒB‚Š‚ç—Ł’E
+ nickさんがパーティから離脱
R 0106 <ID>,l <HP>.w <MaxHP>.w
- ƒp[ƒeƒBƒƒ“ƒoHPXV
+ パーティメンバHP更新
R 0107 <ID>.l <X>.w <Y>.w
- ƒp[ƒeƒBƒƒ“ƒoˆĘ’uXV
+ パーティメンバ位置更新
S 0108 <len>.w <message>.?B
- ƒp[ƒeƒB“ŕ”­Œž
+ パーティ内発言
R 0109 <len>.w <ID>.l <message>.?B
- ƒp[ƒeƒB“ŕ”­ŒžŽóM
+ パーティ内発言受信
R 010a <type ID>.w
- MVPƒAƒCƒeƒ€Žć“ž
+ MVPアイテム取得
R 010b <exp>.l
- MVPŒoŒą’lŽć“ž
+ MVP経験値取得
R 010c <ID>.l
- MVPƒLƒƒƒ‰•\ŽŚ
+ MVPキャラ表示
R 010e <skill ID>.w <lv>.w <sp>.w <range>.w <up>.B
- ƒXƒLƒ‹î•ńXVBsp‚Í–˘Žg—p?
+ スキル情報更新。spは未使用?
R 010f <len>.w {<skill ID>.w <target type>.w ?.w <lv>.w <sp>.w <range>.w <skill name>.24B <up>.B}.37B*
- ƒXƒLƒ‹î•ń‚̉ňBskill name‚Íˆę•”—Ź‚ę‚Ä—ˆ‚Č‚˘•¨‚Ş‚ ‚遄AL_PNEUMA,PR_SLOWPOISON“™
- target type‚Í0-ƒpƒbƒVƒuA1-“GA2-ęŠA4-‘ŚŽž”­“ŽA16-–Ą•ű
- lv=0 up=0‚Ěę‡‚̓ŠƒXƒg‚ɏo‚ľ‚Ä‚Č‚˘?
+ スキル情報の塊。skill nameは一部流れて来ない物がある>AL_PNEUMA,PR_SLOWPOISON等
+ target typeは0-パッシブ、1-敵、2-場所、4-即時発動、16-味方
+ lv=0 up=0の場合はリストに出してない?
R 0110 <skill ID>.w <basic type>.w ?.w <fail>.B <type>.B
- fail=00‚ĚŽž‚ɃXƒLƒ‹—˜—pŽ¸”s?
- type 00:basic type‚Ě•ű 01:SP•s‘Ť 02:HP•s‘Ť 03:memo–ł‚ľ 04:delay’†
- 05:‚¨‹ŕ–ł‚ľ(‚߂܁[) 06:•Ší‚Ş‚ć‚ë‚ľ‚­‚Č‚˘ 07:ÔƒWƒFƒ€–ł‚ľ 08:ÂƒWƒFƒ€–ł‚ľ 09:“ä
- basic type 00:Žć‚čˆř‚Ť 01:emotion 02:Ŕ‚č 03:ƒ`ƒƒƒbƒg 04:ƒp[ƒeƒB
- 05:shout? 06:PK 07:ƒ}ƒi[ƒ|ƒCƒ“ƒg
+ fail=00の時にスキル利用失敗?
+ type 00:basic typeの方 01:SP不足 02:HP不足 03:memo無し 04:delay中
+ 05:お金無し(めまー) 06:武器がよろしくない 07:赤ジェム無し 08:青ジェム無し 09:謎
+ basic type 00:取り引き 01:emotion 02:座り 03:チャット 04:パーティ
+ 05:shout? 06:PK 07:マナーポイント
R 0111 <skill ID>.w <target type>.w ?.w <lv>.w <sp>.w <range>.w <skill name>.24B <up>.B
- 010f‚Ě1‚•ށBƒŔ2‚ž‚Ć–˘Žg—p?
- 20040415“]EŽž‚ÉŠĎ‘Ş
+ 010fの1つ分。β2だと未使用?
+ 20040415転職時に観測
S 0112 <skill ID>.w
- ƒXƒLƒ‹lvup—v‹
+ スキルlvup要求
S 0113 <level>.w <skill ID>.w <ID>.l
- ID‚đƒ^[ƒQƒbƒg‚Éskill‚đŽg‚¤
+ IDをターゲットにskillを使う
R 0114 <skill ID>.w <src ID>.l <dst ID>.l <server tick>.l <src speed>.l <dst speed>.l <param1>.w <param2>.w <param3>.w <type>.B
- UŒ‚ŒnƒXƒLƒ‹ƒGƒtƒFƒNƒg@
- type=04 ‰Î•Ç‚ĹŠĎ‘Ş type=06‚Ć‚Ů‚Ú“Ż‚ś?
- type=05 NB/FBl‚Ě•ŞŽU‚ľ‚˝ƒ_ƒ[ƒW—pH
- type=06 ’P”­‚ŕ‚Ě? param1‚̓_ƒ[ƒW‡ŒvAparam2‚ÍlevelAparam3‚Í1ŒĹ’č‚Ć—\‘z
- type=07 ƒ_ƒ[ƒW•\ŽŚ–ł‚ľH
- type=08 ˜A‘Ĺ‚ŕ‚Ě? param1‚̓_ƒ[ƒW‡ŒvAparam2‚ÍlevelAparam3‚Í•ŞŠ„”‚Ć—\‘z
- type=09 ƒ_ƒ[ƒWƒ‚[ƒVƒ‡ƒ“‚Č‚ľ‚Ƀ_ƒ[ƒW‚ž‚Ż•\ŽŚ‚ł‚ę‚镨(ƒCƒ“ƒfƒ…ƒA)‚ĆŽv‚Á‚˝‚Ě‚ž‚ރ_ƒ[ƒWƒ‚[ƒVƒ‡ƒ“‚ޏo‚镨B(‹@”\‚Í“ä)
+ 攻撃系スキルエフェクト@
+ type=04 火壁で観測 type=06とほぼ同じ?
+ type=05 NB/FBlの分散したダメージ用?
+ type=06 単発もの? param1はダメージ合計、param2はlevel、param3は1固定と予想
+ type=07 ダメージ表示無し?
+ type=08 連打もの? param1はダメージ合計、param2はlevel、param3は分割数と予想
+ type=09 ダメージモーションなしにダメージだけ表示される物(インデュア)と思ったのだがダメージモーションが出る物。(機能は謎)
R 0115 <skill ID>.w <src ID>.l <dst ID>.l <server tick>.l <src speed>.l <dst speed>.l <X>.w <Y>.w <param1>.w <param2>.w <param3>.w <type>.B
- ’e‚Ť”ň‚΂ľ—L‚čUŒ‚ŒnƒXƒLƒ‹ƒGƒtƒFƒNƒg
- type=05 ƒ_ƒ[ƒW&’e‚Ť”ň‚΂ľBparam1‚̓_ƒ[ƒW‡ŒvAparam2‚ÍlevelAparam3‚Í•ŞŠ„”‚Ć—\‘z
- type=06 ”šS’n? ­‚Č‚­‚Ć‚ŕparam1‚̓Sƒ~‚Ě–Í—l
- type=09 ƒ_ƒ[ƒWƒ‚[ƒVƒ‡ƒ“‚Č‚ľ‚Ƀ_ƒ[ƒW‚ž‚Ż•\ŽŚ‚ł‚ę‚镨(ƒCƒ“ƒfƒ…ƒA)‚ĆŽv‚Á‚˝‚Ě‚ž‚ރ_ƒ[ƒWƒ‚[ƒVƒ‡ƒ“‚ޏo‚镨B(‹@”\‚Í“ä)
+ 弾き飛ばし有り攻撃系スキルエフェクト
+ type=05 ダメージ&弾き飛ばし。param1はダメージ合計、param2はlevel、param3は分割数と予想
+ type=06 爆心地? 少なくともparam1はゴミの模様
+ type=09 ダメージモーションなしにダメージだけ表示される物(インデュア)と思ったのだがダメージモーションが出る物。(機能は謎)
S 0116 <level>.w <skill ID>.w <X>.w <Y>.w
- (X,Y)‚đƒ^[ƒQƒbƒg‚Éskill‚đŽg‚¤
+ (X,Y)をターゲットにskillを使う
R 0117 <skill ID>.w <src ID>.l <val>.w <X>.w <Y>.w <server tick>.l
- ęŠ‘ŠŽč‚ĚƒXƒLƒ‹ƒGƒtƒFƒNƒg•\ŽŚBval‚̓Œƒxƒ‹‚ŠAˆę•”ŒĹ‚ł?(•X•Ç)
+ 場所相手のスキルエフェクト表示。valはレベルか、一部固さ?(氷壁)
S 0118
- UŒ‚ƒLƒƒƒ“ƒZƒ‹
+ 攻撃キャンセル
R 0119 <ID>.l <param1>.w <param2>.w <param3>.w ?.B
- ŒŠ‚˝–Ú•ĎX
- param1=02 ƒtƒƒXƒgƒ_ƒCƒo‚Ĺ“€‚č’Đ‚Ż?
- param2=01 “Ĺ?
- param2=20 ANGELUSó‘Ô?
- param3=01 ƒTƒCƒg‚Šƒ‹ƒƒbƒ`?
- param3=0b ƒnƒCƒfƒBƒ“ƒOó‘Ô?
- param3=0b ƒNƒ[ƒLƒ“ƒOó‘Ô?
- param3=0d ƒJ[ƒg•t‚Ť
- param3=0e ‘é•t‚Ť
- param3=0f ƒyƒRƒyƒRć‚č
+ 見た目変更
+ param1=02 フロストダイバで凍り漬け?
+ param2=01 毒?
+ param2=20 ANGELUS状態?
+ param3=01 サイトかルワッチ?
+ param3=0b ハイディング状態?
+ param3=0b クローキング状態?
+ param3=0d カート付き
+ param3=0e 鷹付き
+ param3=0f ペコペコ乗り
R 011a <skill ID>.w <val>.w <dst ID>.l <src ID>.l <fail>.B
- ”ńƒ_ƒ[ƒWŒnƒXƒLƒ‹•\ŽŚBƒq[ƒ‹‚Ěę‡val‚͉ń•œ—Ę
- fail=00‚Ěę‡Ž¸”s‚Ű‚˘‚ށAƒXƒ`[ƒ‹ˆČŠO‚Ĺ‚ÍŒŠ‚˝Ž––ł‚ľ
+ 非ダメージ系スキル表示。ヒールの場合valは回復量
+ fail=00の場合失敗ぽいが、スチール以外では見た事無し
S 011b <skill ID>.w <map name>.16B
- 011c‚ւ̉ž“šBŽg‚í‚Č‚˘ę‡"cancel"Aƒ}ƒbƒv“ŕƒ‰ƒ“ƒ_ƒ€‚Ěę‡"Random"‚đ‘—‚é
+ 011cへの応答。使わない場合"cancel"、マップ内ランダムの場合"Random"を送る
R 011c <skill ID>.w <map1>.16B <map2>.16B <map3>.16B <map4>.16B
- ƒeƒŒƒ|/ƒ|ƒ^‚̏ꏩ‘I‘đB
- ƒeƒŒƒ|‚Ěę‡ARandom/ƒZ[ƒuęŠAƒ|ƒ^‚Ěę‡AƒZ[ƒuęŠ/memo1/memo2/memo3‚Ć‚Č‚é
- ƒ}ƒbƒv–ź‚Ě‚Ý‘—‚ç‚ę‚é
+ テレポ/ポタの場所選択。
+ テレポの場合、Random/セーブ場所、ポタの場合、セーブ場所/memo1/memo2/memo3となる
+ マップ名のみ送られる
S 011d
- ŒťÝ‹‚鏊‚đƒƒ‚—v‹
+ 現在居る所をメモ要求
R 011e <fail>.B
- fail=00 ƒƒ‚ŹŒ÷
- fail=01 ƒƒ‚Ž¸”s
+ fail=00 メモ成功
+ fail=01 メモ失敗
R 011f <dst ID>.l <src ID>.l <X>.w <Y>.w <type>.B <fail>.B
- ƒXƒLƒ‹Œř”\’něŹ
- type 7e:SW 7f:‰Î•Ç 80:ƒ|ƒ^”­“Ž’† 81:ƒ|ƒ^”­“Ž‘O 83:ƒTƒ“ƒN 85:ƒtƒjƒ…[ƒ}
- 86:ƒo[ƒ~ƒŠƒIƒ“ 8c:ƒg[ƒL[ƒ{ƒbƒNƒX”­“ŽŽž 8d:•X•Ç 8e:‚­‚ ‚Ž‚Ü‚˘‚â[ 91:‚ ‚ń‚­‚邡‚Ë‚ 
- 93:‚ç‚ń‚Ç‚Ü‚˘‚ń 97:?? 99:ƒg[ƒL[ƒ{ƒbƒNƒX”­“Ž‘O
- ‘źî•ń‹‚Ţ
+ スキル効能地作成
+ type 7e:SW 7f:火壁 80:ポタ発動中 81:ポタ発動前 83:サンク 85:フニューマ
+ 86:バーミリオン 8c:トーキーボックス発動時 8d:氷壁 8e:くあぐまいやー 91:あんくるすねあ
+ 93:らんどまいん 97:?? 99:トーキーボックス発動前
+ 他情報求む
R 0120 <ID>.l
- ƒXƒLƒ‹Œř”\’nÁ‹Ž
+ スキル効能地消去
R 0121 <num>.w <num limit>.w <weight>.l <weight limit>l
- ƒJ[ƒg‚ĚŽí—Ţ&d‚ł‚ĚŒťÝ’l&ăŒŔ
+ カートの種類&重さの現在値&上限
R 0122 <len>.w {<index>.w <item ID>.w <type>.B <identify flag>.B <equip type>.w <equip point>.w <attribute?>.B <refine>.B <card>.4w}.20B*
- ƒJ[ƒg“ŕƒAƒCƒeƒ€B‘•”ő•i
+ カート内アイテム。装備品
R 0123 <len>.w {<index>.w <item ID>.w <type>.B <identify flag>.B <amount>.w ?.2B}.10B*
- ƒJ[ƒg“ŕƒAƒCƒeƒ€BÁ–Ő•i/ŽűW•i
+ カート内アイテム。消耗品/収集品
R 0124 <index>.w <amount>.l <item ID>.w <identify flag>.B <attribute?>.B <refine>.B <card>.4w
- ƒJ[ƒg‚ɃAƒCƒeƒ€’ljÁ
+ カートにアイテム追加
R 0125 <index>.w <amount>.l
- ƒJ[ƒg‚Š‚çƒAƒCƒeƒ€íœ
+ カートからアイテム削除
S 0126 <index>.w <amount>.l
- ƒJ[ƒg‚ɃAƒCƒeƒ€‚đ“ü‚ę‚é
+ カートにアイテムを入れる
S 0127 <index>.w <amount>.l
- ƒJ[ƒg‚Š‚çƒAƒCƒeƒ€‚đŽć‚čo‚ˇ
+ カートからアイテムを取り出す
S 0128 <index>.w <amount>.l
- ƒJƒvƒ‰‚ł‚ń‚Š‚çƒJ[ƒg‚ÖƒAƒCƒeƒ€‚đˆÚ‚ˇ
+ カプラさんからカートへアイテムを移す
S 0129 <index>.w <amount>.l
- ƒJ[ƒg‚Š‚çƒJƒvƒ‰‚ł‚ń‚ÖƒAƒCƒeƒ€‚đˆÚ‚ˇ
+ カートからカプラさんへアイテムを移す
R 012c <fail>.B
- fail=00 ud—ĘƒI[ƒo[‚Ĺ‚ˇBv
- fail=01 uƒAƒCƒeƒ€Ĺ‘ĺŽí—ސ”‚𒴉߂ľ‚Ü‚ľ‚˝Bv
+ fail=00 「重量オーバーです。」
+ fail=01 「アイテム最大種類数を超過しました。」
R 012d <num>.w
- ˜I“XŠJÝBƒAƒCƒeƒ€ƒŠƒXƒg—v‹Bnum‚Í’u‚Ż‚éĹ‘吔
+ 露店開設。アイテムリスト要求。numは置ける最大数
S 012e
- ˜I“X•Â˝
+ 露店閉鎖
S 012f <len>.w <message>.80B {<index>.w <amount>.w <value>.l}.8B*
- ˜I“XŠJÝA˜I“X–ź&ƒAƒCƒeƒ€,’l’iƒŠƒXƒg
+ 露店開設、露店名&アイテム,値段リスト
S 0130 <ID>.l
- ˜I“XƒAƒCƒeƒ€ƒŠƒXƒg—v‹
+ 露店アイテムリスト要求
R 0131 <ID>.l <message>.80B
- ˜I“XŠĹ”•\ŽŚ
+ 露店看板表示
R 0132 <ID>.l
- ˜I“XŠĹ”Á‹Ž
+ 露店看板消去
R 0133 <len>.w <ID>.l {<value>.l <amount>.w <index>.w <type>.B <item ID>.w <identify flag>.B <attribute?>.B <refine>.B <card>.4w}.22B
- ˜I“XƒAƒCƒeƒ€ƒŠƒXƒg
+ 露店アイテムリスト
S 0134 <len>.w <ID>.l {<amount>.w <index>.w}.4B*
- ˜I“XƒAƒCƒeƒ€w“ü
+ 露店アイテム購入
R 0135 <index>.w <amount>.w <fail>.B
- ˜I“XƒAƒCƒeƒ€w“üŽ¸”sB
- fail=1 u‚¨‹ŕ‚Ş‘Ť‚č‚Ü‚š‚ńBv
- fail=2 ud—ĘƒI[ƒo[‚Ĺ‚ˇBv
+ 露店アイテム購入失敗。
+ fail=1 「お金が足りません。」
+ fail=2 「重量オーバーです。」
R 0136 <len>.w <ID>.l {<value>.l <index>.w <amount>.w <type>.B <item ID>.w <identify flag>.B <attribute?>.B <refine>.B <card>.4w}.22B*
- ˜I“XŠJÝŹŒ÷
+ 露店開設成功
R 0137 <index>.w <amount>.w
- ˜I“XƒAƒCƒeƒ€”Ě”„•ń
+ 露店アイテム販売報告
R 0139 <ID>.l <X>.w <Y>.w <X2>.w <Y2>.w <range>.w
- ID‚Ě“G‚Í(X,Y)‚É‹‚ÄŽŠ•Ş‚Í(X2,Y2)‚É‹‚é‚Ě‚ĹUŒ‚‚Ş“Í‚Ť‚Ü‚š‚ń‚Ĺ‚ľ‚˝
- UŒ‚‰Â”\‹——Ł‚Írange‚Ȃ̂ŁA‹ßŠń‚Á‚ĉş‚ł‚˘?
+ IDの敵は(X,Y)に居て自分は(X2,Y2)に居るので攻撃が届きませんでした
+ 攻撃可能距離はrangeなので、近寄って下さい?
R 013a <val>.w
- UŒ‚ŽË’ö
+ 攻撃射程
R 013b <type>.w
- ŠeŽíƒƒbƒZ[ƒW•\ŽŚB3=–î‚Ş‘•”ő‚Ĺ‚Ť‚Ü‚ľ‚˝
+ 各種メッセージ表示。3=矢が装備できました
R 013c <ID>.w
- ‘•”ő‚ł‚ę‚˝–î‚ĚItemIDB0‚ŁA–˘‘•”őó‘ԁB
+ 装備された矢のItemID。0で、未装備状態。
R 013d <type>.w <val>.w
- HP‰ń•œƒXƒLƒ‹/SP‰ń•œƒXƒLƒ‹‚É‚ć‚é‰ń•œ
- type=5‚Č‚çHP type=7‚Č‚çSP
+ HP回復スキル/SP回復スキルによる回復
+ type=5ならHP type=7ならSP
R 013c <index>.w
- ‘•”ő‚ľ‚Ä‚˘‚é–î
+ 装備している矢
R 013e <src ID>.l <dst ID>.l <X>.w <Y>.w <lv?>.w ?.w <wait>.l
- ƒXƒLƒ‹‰rĽ’†BPC/NPC‚Ş‘ŠŽč‚Ěę‡‚Í(X,Y)‚Í0BęŠ‚ރ^[ƒQƒbƒg‚Ěę‡‚Ídst ID‚Í0‚É‚Č‚é
+ スキル詠唱中。PC/NPCが相手の場合は(X,Y)は0。場所がターゲットの場合はdst IDは0になる
- 0x013e ‚Ě offset+16(dword) ‚̓XƒLƒ‹‘ŽŤ‚Ĺ‚ˇ(’˛¸Ď)B
- 00:–ł 01:… 02:’n 03:‰Î 04:•— 05:“Ĺ 06:š 07:ˆĂ 08:”O 09:Ž€
- Ť—ˆ“I‚ɁA‰rĽ’†‚ĚƒGƒtƒFƒNƒg‚Ş‘ŽŤ‚Ĺ•Ď‚í‚é‚Ě‚Š‚ƁB
+ 0x013e の offset+16(dword) はスキル属性です(調査済)。
+ 00:無 01:水 02:地 03:火 04:風 05:毒 06:聖 07:暗 08:念 09:死
+ 将来的に、詠唱中のエフェクトが属性で変わるのかと。
- wait‚Íms’PˆĘ‚Š‚Č?
+ waitはms単位かな?
R 0141 <type>.l <base>.l <bonus>.l
- ƒXƒe[ƒ^ƒXî•ńBtype‚Í0d‚Š‚ç12‚ޏ‡‚ÉSTR,AGI,VIT,INT,DEX,LUK‚ɑΉž
- base+bonus‚Ć•\ŽŚ‚ł‚ę‚é
+ ステータス情報。typeは0dから12が順にSTR,AGI,VIT,INT,DEX,LUKに対応
+ base+bonusと表示される
R 0142 <ID>.l
- ”’l“ü—Í—p‘‹•\ŽŚ
+ 数値入力用窓表示
S 0143 <ID>.l <amount>.l
- 0142‚Ě‘‹‚É“ü—Í‚ľ‚˝”’l‚Ě‘—M
+ 0142の窓に入力した数値の送信
R 0144 <ID>.l <type>.l <X>.l <Y>.l <point ID>.B <color>.3B ?.B
- ˆÄ“ŕˆő—pAƒ}ƒbƒvăƒAƒCƒRƒ“•\ŽŚƒpƒPƒbƒg
- type=1 ƒAƒCƒRƒ“‚đ•\ŽŚ
- type=2 ƒAƒCƒRƒ“‚đÁ‹Ž
+ 案内員用、マップ上アイコン表示パケット
+ type=1 アイコンを表示
+ type=2 アイコンを消去
R 0145 <file name>.16B <type>.B
- (Ą‚̏Š)ƒJƒvƒ‰‚ł‚ńcutin•\ŽŚ
- type=02 •\ŽŚ
- type=ff Á‹Ž
+ (今の所)カプラさんcutin表示
+ type=02 襨示
+ type=ff 消去
S 0146 <ID>.l
- ID‚ĚNPC‚Ƃ̉ď˜bBCLOSEƒ{ƒ^ƒ“‚đ‰Ÿ‚ľ‚˝Back–ł‚ľ‚ÉNPCƒƒbƒZ[ƒWƒEƒBƒ“ƒh‚đ“ŻŽž‚ɕ‚ś‚é
+ IDのNPCとの会話。CLOSEボタンを押した。ack無しにNPCメッセージウィンドを同時に閉じる
R 0147 <skill ID>.w <target type>.w ?.w <lv>.w <sp>.w <range>.w <skill name>.24B <up>.B
- ƒAƒCƒeƒ€—˜—p‚ĚŒ‹‰ĘˆęŽž“I‚É“ž‚ç‚ę‚˝ƒXƒLƒ‹î•ń
+ アイテム利用の結果一時的に得られたスキル情報
R 0148 <ID>.l
- ƒŠƒUƒŒƒNƒVƒ‡ƒ“‚Ě‘ŠŽčŒˆ‚ß? @ ƒŔ1
+ リザレクションの相手決め? @ β1
S 0149 <ID>.l <type>.B <time>.w
- ID‚Ƀ`ƒƒƒbƒg‹ÖŽ~ŽžŠÔ‚đ•t‰Á type=0 ƒ}ƒCƒiƒX type=1 ƒvƒ‰ƒX
- tyme‚Í•Ş’PˆĘ
+ IDにチャット禁止時間を付加 type=0 マイナス type=1 プラス
+ tymeは分単位
R 014a <fail>.l
- ƒ}ƒi[ƒ|ƒCƒ“ƒg‚đ—^‚Ś‚˝Œ‹‰ĘBfail=0 ŹŒ÷ fail=1 Ž¸”s
+ マナーポイントを与えた結果。fail=0 成功 fail=1 失敗
R 014b <type>.B <nick>.24B
- ƒ}ƒi[ƒ|ƒCƒ“ƒg‚đ–á‚Á‚˝Btype=00 ƒvƒ‰ƒX type=01 ƒ}ƒCƒiƒX
+ マナーポイントを貰った。type=00 プラス type=01 マイナス
R 014C <len>.w (<type>.l <guildID>.l <guild name>.24B).*
- “Ż–żE“G‘΃Mƒ‹ƒh•\ŽŚ
- type=0 “Ż–ż
- type=1 “G‘Î
+ 同盟・敵対ギルド表示
+ type=0 同盟
+ type=1 敵対
S 014D
- ƒMƒ‹ƒhî•ń•\ŽŚŠJŽnH
+ ギルド情報表示開始?
R 014E <type?>.l
- type=0x57 ˆę”ĘƒMƒ‹ƒh’cˆő
- type=0xD7 ƒMƒ‹ƒhƒ}ƒXƒ^[
+ type=0x57 一般ギルド団員
+ type=0xD7 ギルドマスター
S 014F <page>.l
- ƒMƒ‹ƒh•\ŽŚƒ^ƒu‘—M
-R 0150 <guildID>.l <guildLv>.l <Ú‘ą”>.l <’čˆő>.l <Avl.lvl>.l <ŒoŒą’l>.l <next_exp>.l <ă”[ƒ|ƒCƒ“ƒg>.l <ŤŒüś‰EVW>.l <ŤŒüă‰şRF>.l <l”H>.l <guild name>.24B <guild master>.24B <–{‹’’n>.16B
- ƒMƒ‹ƒhî•ń
+ ギルド表示タブ送信
+R 0150 <guildID>.l <guildLv>.l <接続数>.l <定員>.l <Avl.lvl>.l <経験値>.l <next_exp>.l <上納ポイント>.l <性向左右VW>.l <性向上下RF>.l <人数?>.l <guild name>.24B <guild master>.24B <本拠地>.16B
+ ギルド情報
S 0151 <guild ID>.l
- ƒGƒ“ƒuƒŒƒ€—v‹
-R 0152 <len>.w <guild ID>.l <emblem ID(•ĎX‰ń”H)>.l <emblem data>.?B
- ƒGƒ“ƒuƒŒƒ€ƒCƒ[ƒW‘—•t
+ エンブレム要求
+R 0152 <len>.w <guild ID>.l <emblem ID(変更回数?)>.l <emblem data>.?B
+ エンブレムイメージ送付
S 0153 <len>.w <emblem data>.?B
- ƒGƒ“ƒuƒŒƒ€ƒCƒ[ƒW•ĎX
-R 0154 <len>.w {<accID>.l <charactorID>.l <”ŻŒ^>.w <”Ż‚̐F>.w <Ť•ĘH>.w <job>.w <lvl?>.w <ă”[ŒoŒą’l>.l <online>.l <Position>.l <ƒƒ‚H>.50B <nick>.24B}*
- ƒMƒ‹ƒhƒƒ“ƒoƒŠƒXƒg
+ エンブレムイメージ変更
+R 0154 <len>.w {<accID>.l <charactorID>.l <髪型>.w <髪の色>.w <性別?>.w <job>.w <lvl?>.w <上納経験値>.l <online>.l <Position>.l <メモ?>.50B <nick>.24B}*
+ ギルドメンバリスト
S 0155 <len>.w {<accID>.l <charaID>.l <index>.l}.12B*
- –đE•ĎX
+ 役職変更
R 0156 <len>.w {<accID>.l <charaID>.l <index>.l}.12B*
- –đE•ĎX’Ę’m
+ 役職変更通知
S 0159 <guildID>.l <accID>.l <charID>.l <mess>.40B
- ƒMƒ‹ƒh’E‘Ţ‘—M
+ ギルド脱退送信
R 015A <nic>.24B <mess>.40B
- ƒMƒ‹ƒh’E‘Ţ(‘Sˆő)ŽóM
+ ギルド脱退(全員)受信
S 015B <guildID>.l <accID>.l <charID>.l <mess>.40B
- ƒMƒ‹ƒh’Ç•ú‘—M
-R 015C <nick>.24B <mess>.40B <ƒAƒJƒEƒ“ƒg‚h‚c>.24B
- ƒMƒ‹ƒh’Ç•úi‘SˆőjŽóM
+ ギルド追放送信
+R 015C <nick>.24B <mess>.40B <アカウントID>.24B
+ ギルド追放(全員)受信
S 015D <guild name>.24B <?>.16B
- ƒMƒ‹ƒh‰đŽU
+ ギルド解散
R 015E <fail>.l
- ƒMƒ‹ƒh‰đŽUł”Ű’Ę’m
- 0x00FŹŒ÷
- 0x01FZ–Ż“o˜^”ԍ†•sˆę’v
+ ギルド解散正否通知
+ 0x00:成功
+ 0x01:住民登録番号不一致
R 0160 <len>.w {<index>.l <mode>.l <index>.l <exp_mode>.l}.16B
- EˆĘî•ń
+ 職位情報
S 0161 <len>.w {<index>.l <mode>.l <index>.l <exp_mode>.l <nickname>.24B}.40B*
- EˆĘ•ĎX
+ 職位変更
R 0162 <len>.w <skill_point>.w {<skill ID>.w <target type>.w ?.w <lv>.w <sp>.w <range>.w <skill name>.24B <up>.B}.37B*
- ƒMƒ‹ƒhƒXƒLƒ‹
-R 0163 <len>.w { <nick>.24B <ƒAƒJƒEƒ“ƒg‚h‚c>.24B <’Ç•ú——R>.40B }.88B*
- ƒMƒ‹ƒh’Ç•úƒŠƒXƒg
+ ギルドスキル
+R 0163 <len>.w { <nick>.24B <アカウントID>.24B <追放理由>.40B }.88B*
+ ギルド追放リスト
S 0165 <myaccID>.l <guild name>.24B
- ƒMƒ‹ƒhěŹ
+ ギルド作成
R 0166 <len>.w {<index>.l <name>.24B }.28B*
- EˆĘ–źƒŠƒXƒg
+ 職位名リスト
R 0167 <type>.b
- ƒMƒ‹ƒhěŹ‡”Ű
- type = 0 ƒMƒ‹ƒhěŹŹŒ÷
- type = 1 ‚ˇ‚Ĺ‚ÉƒMƒ‹ƒh‚ɏŠ‘Ž‚ľ‚Ä‚˘‚é
- type = 2 “Ż–ź‚ĚƒMƒ‹ƒh‚Ş‚ ‚é
- type = 3 ƒGƒ“ƒyƒŠƒEƒ€–ł‚ľ
+ ギルド作成合否
+ type = 0 ギルド作成成功
+ type = 1 すでにギルドに所属している
+ type = 2 同名のギルドがある
+ type = 3 エンペリウム無し
S 0168 <TargetAccID>.l <sourceAccID>.l <myCharactorID>.l
- ƒMƒ‹ƒhŠŠ—U
+ ギルド勧誘
R 0169 <type>.B
- ƒMƒ‹ƒhŠŠ—UŒ‹‰Ę
- type = 0 ‘ź‚ĚƒMƒ‹ƒh‚ɉÁ“ü‚ľ‚Ä‚˘‚é
- type = 1 ‹‘”Ű‚ł‚ę‚˝
- type = 2 ‰Á“ü‚ľ‚˝
- type = 3 ’čˆő‚đ’´‰ß
+ ギルド勧誘結果
+ type = 0 他のギルドに加入している
+ type = 1 拒否された
+ type = 2 加入した
+ type = 3 定員を超過
R 016A <guild ID>.l <guild name>.24B
- ƒMƒ‹ƒhŠŠ—U‚ł‚ę‚˝
+ ギルド勧誘された
S 016B <guild ID>.l <type>.l
- ƒMƒ‹ƒhŠŠ—U•ÔM
- type=0 ‹‘”Ű‚ˇ‚é
- type=1 ‹–‘ř‚ˇ‚é
+ ギルド勧誘返信
+ type=0 拒否する
+ type=1 許諾する
R 016c <guild ID>.l <emblem ID>.l <mode>.l ?.5B <guild name>.24B
- loginŽžƒMƒ‹ƒhî•ń
- mode=ŽŠ•Ş‚̏Š‘ŽEˆĘ‚Ěmode
+ login時ギルド情報
+ mode=自分の所属職位のmode
R 016d <ID>.l <charactor ID>.l <online>.l
- ƒMƒ‹ƒhƒƒ“ƒo‚Şlogin‚ľ‚˝”˛‚Ż‚˝“™
+ ギルドメンバがloginした抜けた等
S 016E <guildID>.l <mess1>.60B <mess2>.120B
- ƒMƒ‹ƒh’mÝ’č
+ ギルド告知設定
R 016F <mess1>.60B <mess2>.120B
- ƒMƒ‹ƒh’m
+ ギルド告知
S 0170 <TargetAccID>.l <sourceAccID>.l <myCharactorID>.l
- “Ż–ż—vżŠŠ—U
+ 同盟要請勧誘
R 0171 <SorceAccID>.l <guild name>.24B
- “Ż–ż—vżŠŠ—U‚ł‚ę‚˝
+ 同盟要請勧誘された
S 0172 <SorceAccID>.l <type>.l
- “Ż–ż—vż•ÔM
- type=0 ‹‘”Ű‚ˇ‚é
- type=1 ‹–‘ř‚ˇ‚é
+ 同盟要請返信
+ type=0 拒否する
+ type=1 許諾する
R 0173 <type>.B
- type = 0 ‚ˇ‚Ĺ‚É“Ż–żŠÖŒW
- type = 1 “Ż–ż‹‘”Ű‚ł‚ę‚˝
- type = 2 “Ż–żŹŒ÷
- type = 3 ‘ŠŽčƒMƒ‹ƒh‚Ě“Ż–żƒMƒ‹ƒh”‚Ş’´‰ß
- type = 4 ŽŠ•Ş‚ĚƒMƒ‹ƒh‚Ě“Ż–żƒMƒ‹ƒh”‚Ş’´‰ß
+ type = 0 すでに同盟関係
+ type = 1 同盟拒否された
+ type = 2 同盟成功
+ type = 3 相手ギルドの同盟ギルド数が超過
+ type = 4 自分のギルドの同盟ギルド数が超過
R 0174 <len>.w {<index>.l <mode>.l <index>.l <exp_mode>.l <nickname>.24B}.40B*
- EˆĘ•ĎX’Ę’m
+ 職位変更通知
R 0177 <len>.w <index>.w*
- ŠÓ’č‰Â”\ƒAƒCƒeƒ€ƒŠƒXƒg
+ 鑑定可能アイテムリスト
S 0178 <index>.w
- ƒAƒCƒeƒ€ŠÓ’č
+ アイテム鑑定
R 0179 <index>.w <fail>.B
- ƒAƒCƒeƒ€ŠÓ’čŒ‹‰ĘBfail=00‚ŐŹŒ÷Bfail=01‚Á‚Ä‚ ‚é‚Ě‚Š?
+ アイテム鑑定結果。fail=00で成功。fail=01ってあるのか?
S 017A <index>.w
- ƒJ[ƒh‚vƒNƒŠƒbƒN
+ カードWクリック
R 017B <len>.w {<index>.w}*
- ƒJ[ƒh‘}“ü‚Ĺ‚Ť‚éƒAƒCƒeƒ€Index”ԍ†
+ カード挿入できるアイテムIndex番号
S 017C <SrcIndex>.w <DescIndex>.w
- Src ‚đDesc‚É“Ë‚Áž‚Ţ
+ Src をDescに突っ込む
R 017D <DescIndex>.w <SrcIndex>.w <fail>.b
- Src ‚đDesc‚É“Ë‚Áž‚Ý<fail> 0=ŹŒ÷ 1=Ž¸”sH
+ Src をDescに突っ込み<fail> 0=成功 1=失敗?
S 017e <len>.w <message>.?B
- ƒMƒ‹ƒh“ŕƒƒbƒZ[ƒW”­Œž
+ ギルド内メッセージ発言
R 017f <len>.w <message>.?B
- ƒMƒ‹ƒh“ŕƒƒbƒZ[ƒWŽóM
+ ギルド内メッセージ受信
S 0180 <charactorID>.l
- ƒMƒ‹ƒh“G‘Î
+ ギルド敵対
R 0181 <flag>.b
- ƒMƒ‹ƒh“G‘Ή”Ű
- flag=0 “G‘ΐŹŒ÷
- flag=1 “G‘΃Mƒ‹ƒh”‚Ş‘˝‚ˇ‚Ź‚é
- flag=2 ‚ˇ‚Ĺ‚É“G‘Ί֌W
-R 0182 <accID>.l <charactorID>.l <”ŻŒ^>.w <”Ż‚̐F>.w <Ť•ĘH>.w <job>.w <lvl?>.w <ă”[ŒoŒą’l>.l <online>.l <Position>.l ?.50B <nick>.24B
+ ギルド敵対可否
+ flag=0 敵対成功
+ flag=1 敵対ギルド数が多すぎる
+ flag=2 すでに敵対関係
+R 0182 <accID>.l <charactorID>.l <髪型>.w <髪の色>.w <性別?>.w <job>.w <lvl?>.w <上納経験値>.l <online>.l <Position>.l ?.50B <nick>.24B
S 0183 <guild_id>.l <type>.l
- ƒMƒ‹ƒhŠÖŒW‰đÁ
+ ギルド関係解消
R 0184 <guild_id>.l <type>.l
- ƒMƒ‹ƒhŠÖŒW‰đÁ’Ę’m
+ ギルド関係解消通知
R 0185 <flag>.l <guild_id>.l <guild_name>.24B
- ƒMƒ‹ƒhŠÖŒW’ljÁ flag=0 “Ż–ż/ 1 “G‘Î
+ ギルド関係追加 flag=0 同盟/ 1 敵対
R 0187 <account ID>.l
- aliveM†?
+ alive信号?
R 0188 <fail?>.w <index>.w <val>.w
- •Ší¸˜BBŒ‹‰Ę+val•Ší‚É
+ 武器精錬。結果+val武器に
R 0189 <fail?>.w
- “äBƒeƒŒƒ|(ƒ[ƒvƒ|[ƒ^ƒ‹memo)Ž¸”s?
- 1 memo‹ÖŽ~’nˆć
+ 謎。テレポ(ワープポータルmemo)失敗?
+ 1 memo禁止地域
S 018a ?.w
- ƒQ[ƒ€I—š
+ ゲーム終了
R 018b <fail>.w
- ƒQ[ƒ€I—š/ƒLƒƒƒ‰ƒZƒŒ‰ž“šBfail=0ŹŒ÷Bfail=1Ž¸”s?
-R 018C <MonsID>.w <“™‹‰>.w <‘召>.w <ś–˝’l>.w <?>.w <–hŒä—Í>.w <Ží‘°>.w <–‚–@–hŒä—Í>.w <‘ŽŤ>.w <–‚–@‘ŠŤ‘ŽŤ>.9b
- wiz‚Ě“G‚ĚƒZƒ“ƒXŒ‹‰Ę
- 0 ŹŒ^
- 1 ’†Œ^
- 2 ‘ĺŒ^
+ ゲーム終了/キャラセレ応答。fail=0成功。fail=1失敗?
+R 018C <MonsID>.w <等級>.w <大小>.w <生命値>.w <?>.w <防御力>.w <種族>.w <魔法防御力>.w <属性>.w <魔法相性属性>.9b
+ wizの敵のセンス結果
+ 0 小型
+ 1 中型
+ 2 大型
R 018d <length>.w { <ItemID>,w ?.w <CharID?>.l }.8B*
- ť‘˘‰Â”\ƒAƒCƒeƒ€ƒŠƒXƒg•\ŽŚ(?‚Ě•”•Ş‚Í0012ŒĹ’č)
+ 製造可能アイテムリスト表示(?の部分は0012固定)
S 018e <MakeItemID>.w <slot1ItemID>.w <slot2ItemID>,w <slot3.ItemID>.w
- ť‘˘ƒAƒCƒeƒ€‚Ě‘I‘đ
+ 製造アイテムの選択
R 018f <flag>.w [00] <MakeItemID>.w
- ť‘˘Œ‹‰Ę(flag = 00‚Ȃ琏Œ÷ 01‚Ȃ玸”s)
+ 製造結果(flag = 00なら成功 01なら失敗)
S 0190 <skill lv>.w <skill code>.w <x & y>.l <message>.80b
- ƒƒbƒZ[ƒW(ƒg[ƒL[ƒ{ƒbƒNƒXj
+ メッセージ(トーキーボックス)
R 0191 <ID>.l <message>.80B
- ƒg[ƒL[ƒ{ƒbƒNƒX‚ĚƒƒbƒZ[ƒW
+ トーキーボックスのメッセージ
R 0192 <x & y>.l <type>.w <mapname>.16b
- ƒAƒCƒXƒEƒH[ƒ‹“™‚É‚ć‚é’nŒ`‘ŽŤ•Ď‰ť
+ アイスウォール等による地形属性変化
S 0193 <ID>.l
- ƒMƒ‹ƒhƒƒ“ƒo–ź‘Oˆř‚Ť?
+ ギルドメンバ名前引き?
R 0194 <ID>.l <nick>.24B
- ƒMƒ‹ƒhƒƒ“ƒo–ź‘Oˆř‚Ť‰ž“š?
+ ギルドメンバ名前引き応答?
R 0195 <ID>.l <nick>.24B <party name>.24B <guild name>.24B <class name>.24B
- ƒMƒ‹ƒhŠ‘ŽPC‚Ěę‡‚Ě0094•Ô“š
+ ギルド所属PCの場合の0094返答
R 0196 <type>.w <ID>.l
- ‘‹­ŒnƒXƒLƒ‹Žg—pŽž‚ĚƒƒbƒZ[ƒWFXBID‚Ítarget‚ĆŽv‚í‚ę‚é‚ŞŽŠ•Ş‘ŠŽč‚Ě‚Ý‚ľ‚Š—ˆ‚Č‚˘?
- type=00 2HQ•t—^uUŒ‚‘Ź“x‚Ş‘‰Á‚ľ‚Ü‚ľ‚˝Bv
- type=01 2HQ‰đœuUŒ‚‘Ź“x‚ŞŒ¸­‚ľ‚Ü‚ľ‚˝Bv
- type=02 IMPOSITIO•t—^u•Ší‚̍UŒ‚—Í‚Ş‘‰Á‚ľ‚Ü‚ľ‚˝Bv
- type=03 IMPOSITIO‰đœu•Ší‚̍UŒ‚—Í‚ŞŒ¸­‚ľ‚Ü‚ľ‚˝Bv
- type=04 uƒXƒLƒ‹Žg—pƒfƒBƒŒƒC‚ŞŒ¸­‚ľ‚Ü‚ľ‚˝Bv
- type=05 uƒXƒLƒ‹Žg—pƒfƒBƒŒƒC‚ŞŒł‚É–ß‚č‚Ü‚ľ‚˝Bv
- type=06 u•Ší‚É“Ĺ‘ŽŤ‚Ş•t—^‚ł‚ę‚Ü‚ľ‚˝Bv
- type=07 ASPERSIO•t—^u•Ší‚ɐš‘ŽŤ‚Ş•t—^‚ł‚ę‚Ü‚ľ‚˝Bv
- type=08 ASPERSIO‰đœu•Ší‚Ě‘ŽŤ‚ŞŒł‚É–ß‚č‚Ü‚ľ‚˝Bv
- type=09 u–h‹ď‚ɐš‘ŽŤ‚Ş•t—^‚ł‚ę‚Ü‚ľ‚˝Bv
- type=0a u–h‹ď‚Ě‘ŽŤ‚ŞŒł‚É–ß‚č‚Ü‚ľ‚˝Bv
- type=0b KYRIE•t—^uƒoƒŠƒAó‘Ô‚É‚Č‚č‚Ü‚ľ‚˝Bv
- type=0c KYRIE‰đœuƒoƒŠƒAó‘Ô‚Ş‰đœ‚ł‚ę‚Ü‚ľ‚˝Bv
- type=0d uƒEƒFƒ|ƒ“ƒp[ƒtƒFƒNƒVƒ‡ƒ“ƒ‚[ƒh‚É‚Č‚č‚Ü‚ľ‚˝Bv
- type=0e uƒEƒFƒ|ƒ“ƒp[ƒtƒFƒNƒVƒ‡ƒ“ƒ‚[ƒh‚Ş‰đœ‚ł‚ę‚Ü‚ľ‚˝Bv
- type=0f uƒI[ƒo[ƒgƒ‰ƒXƒgƒ‚[ƒh‚É‚Č‚č‚Ü‚ľ‚˝Bv
- type=10 uƒI[ƒo[ƒgƒ‰ƒXƒgƒ‚[ƒh‚Ş‰đœ‚ł‚ę‚Ü‚ľ‚˝Bv
- type=11 uƒ}ƒLƒVƒ}ƒCƒYƒpƒ[ƒ‚[ƒh‚É‚Č‚č‚Ü‚ľ‚˝Bv
- type=12 uƒ}ƒLƒVƒ}ƒCƒYƒpƒ[ƒ‚[ƒh‚Ş‰đœ‚ł‚ę‚Ü‚ľ‚˝Bv
-R 0196 <type>.w <ID>.l <switch>.b iƒRƒ‚ƒhˆČ~j
- switch=0‚ʼnđœ,1‚Ĺ•t‰Á
- type=00 ƒvƒƒ{ƒbƒN
- type=01 ƒCƒ“ƒfƒ…ƒA
- type=02 uUŒ‚‘Ź“x‚Ş‘‰Á‚ľ‚Ü‚ľ‚˝Bvi2HQj
- type=03 W’†—ÍŒüă
- type=04 ƒnƒCƒfƒBƒ“ƒO
- type=05 ƒNƒ[ƒLƒ“ƒO
- type=06 u•Ší‚É“Ĺ‘ŽŤ‚Ş•t—^‚ł‚ę‚Ü‚ľ‚˝BviƒGƒ“ƒ`ƒƒƒ“ƒgƒ|ƒCƒYƒ“j
- type=07 u“ł𔽎˂łŤ‚éó‘Ô‚É‚Č‚č‚Ü‚ľ‚˝Bviƒ|ƒCƒYƒ“ƒŠƒAƒNƒgj
- type=08 uƒNƒ@ƒOƒ}ƒCƒAó‘Ô‚É‚Č‚čAEEEv
- type=09 uƒGƒ“ƒWƒFƒ‰ƒXó‘Ô‚É‚Č‚čAEEEv
- type=0a ƒuƒŒƒbƒVƒ“ƒO
- type=0b ƒVƒOƒiƒ€ƒNƒ‹ƒVƒX
- type=0c u‘Ź‚ł‚Ş‘‰Á‚ľ‚Ü‚ľ‚˝vi‘Ź“x‘‰Áj
- type=0d u‘Ź‚ł‚ŞŒ¸­‚ľ‚Ü‚ľ‚˝vi‘Ź“xŒ¸­j
- type=0e uƒXƒ[ƒ|ƒCƒYƒ“ó‘Ô‚É‚Č‚č‚Ü‚ľ‚˝viƒXƒ[ƒ|ƒCƒYƒ“j
- type=0f u•Ší‚̍UŒ‚—Í‚Ş‘‰Á‚ľ‚Ü‚ľ‚˝viƒCƒ“ƒ|ƒVƒeƒBƒIƒ}ƒkƒXj
- type=10 uƒXƒLƒ‹Žg—pƒfƒBƒŒƒC‚ŞŒ¸­‚ľ‚Ü‚ľ‚˝viƒTƒtƒ‰ƒMƒEƒ€j
- type=11 u•Ší‚ɐš‘ŽŤ‚Ş•t—^‚ł‚ę‚Ü‚ľ‚˝viƒAƒXƒyƒ‹ƒVƒIj
- type=12 u–h‹ď‚ɐš‘ŽŤ‚Ş•t—^‚ł‚ę‚Ü‚ľ‚˝viš‘̍~—Ձj
- type=13 uƒoƒŠƒAó‘Ô‚É‚Č‚č‚Ü‚ľ‚˝viƒLƒŠƒGƒGƒŒƒCƒ\ƒ“j
- type=14 uƒ}ƒOƒjƒtƒBƒJ[ƒgó‘Ô‚É‚Č‚č‚Ü‚ľ‚˝v
- type=15 uƒOƒƒŠƒAó‘Ô‚É‚Č‚č‚Ü‚ľ‚˝v
- type=16 uƒŒƒbƒNƒXƒG[ƒeƒ‹ƒió‘Ô‚É‚Č‚č‚Ü‚ľ‚˝v
- type=17 uƒAƒhƒŒƒiƒŠƒ“ƒ‰ƒbƒVƒ…ó‘Ô‚É‚Č‚č‚Ü‚ľ‚˝v
- type=18 uƒEƒFƒ|ƒ“ƒp[ƒtƒFƒNƒVƒ‡ƒ“ƒ‚[ƒh‚É‚Č‚č‚Ü‚ľ‚˝v
- type=19 uƒI[ƒo[ƒgƒ‰ƒXƒgƒ‚[ƒh‚É‚Č‚č‚Ü‚ľ‚˝v
- type=1a uƒ}ƒLƒVƒ}ƒCƒYƒpƒ[ƒ‚[ƒh‚É‚Č‚č‚Ü‚ľ‚˝v
- type=1b ƒyƒRƒyƒR‹Rć
- type=1c ‘é
- type=1d Ž€‚ń‚ž‚Ó‚č
- type=1e u‹Š‚Ń‚Ü‚ľ‚˝viƒ‰ƒEƒhƒ{ƒCƒXj
- type=1f uƒGƒiƒW[ƒR[ƒgó‘Ô‚É‚Č‚č‚Ü‚ľ‚˝v
- type=20 u–h‹ď‚މó‚ę‚Ü‚ľ‚˝v
- type=21 u•Ší‚މó‚ę‚Ü‚ľ‚˝v
- type=22 “äi–Ú‚ĚƒAƒbƒv‚Ć‚˘‚¤ƒAƒCƒRƒ“F–ӖځHHj
- type=23 d—Ę50“’´‚Ś
- type=24 d—Ę90“’´‚Ś
- type=25 “äuUŒ‚‘Ź“x‚Ş‘‰Á‚ľ‚Ü‚ľ‚˝vi‚˜‚QƒAƒCƒRƒ“F‘Ź“xŒnƒ|[ƒVƒ‡ƒ“Hj
- type=26 “äuUŒ‚‘Ź“x‚Ş‘‰Á‚ľ‚Ü‚ľ‚˝vi‚˜‚QƒAƒCƒRƒ“F‘Ź“xŒnƒ|[ƒVƒ‡ƒ“Hj
- type=27 “äuUŒ‚‘Ź“x‚Ş‘‰Á‚ľ‚Ü‚ľ‚˝vi‚˜‚QƒAƒCƒRƒ“F‘Ź“xŒnƒ|[ƒVƒ‡ƒ“Hj
- type=28 (–˘Žg—p‚Á‚Ű‚˘HF•s‰Â‚Ć‰đœ‚ĹŒř‰Ę‚ވႤ)
- type=29 “äu‘Ź‚ł‚Ş‘‰Á‚ľ‚Ü‚ľ‚˝vi”’‚˘ƒAƒCƒRƒ“j
- type=32 ƒXƒgƒŠƒbƒvƒEƒGƒ|ƒ“
- type=33 ƒXƒgƒŠƒbƒvƒV[ƒ‹ƒh
- type=34 ƒXƒgƒŠƒbƒvƒA[ƒ}[
- type=35 ƒXƒgƒŠƒbƒvƒwƒ‹ƒ€
- type=36 ƒPƒ~ƒJƒ‹ƒEƒFƒ|ƒ“ƒ`ƒƒ[ƒW
- type=37 ƒPƒ~ƒJƒ‹ƒV[ƒ‹ƒhƒ`ƒƒ[ƒW
- type=38 ƒPƒ~ƒJƒ‹ƒA[ƒ}[ƒ`ƒƒ[ƒW
- type=39 ƒPƒ~ƒJƒ‹ƒwƒ‹ƒ€ƒ`ƒƒ[ƒW
- type=3a ƒI[ƒgƒK[ƒh
- type=3b ƒŠƒtƒŒƒNƒgƒV[ƒ‹ƒh
- type=3d ƒvƒƒ”ƒBƒfƒ“ƒX
- type=3e ƒfƒBƒtƒFƒ“ƒ_[
- type=41 ƒI[ƒgƒXƒyƒ‹
- type=44 ƒXƒsƒAƒNƒBƒbƒPƒ“
- type=56 ”š—ô”g“Ž(ƒAƒCƒRƒ“‚Í•\ŽŚ‚ł‚ę‚Ü‚š‚ńB)
- type=57 ‹ŕ„(•\ŽŚ‚Í‚ł‚ę‚Č‚˘‚Ş‹ŕ„‚Ě‰đœ‚Í‚ł‚ę‚é‚悤‚Ĺ‚ˇB)
- type=59 ƒRƒ“ƒ{ƒfƒBƒŒƒC
- type=5a ƒtƒŒƒCƒ€ƒ‰ƒ“ƒ`ƒƒ[
- type=5b ƒtƒƒXƒgƒEƒFƒ|ƒ“
- type=5c ƒ‰ƒCƒgƒjƒ“ƒOƒ[ƒ_[
- type=5d ƒTƒCƒYƒ~ƒbƒNƒEƒFƒ|ƒ“
+ 増強系スキル使用時のメッセージ色々。IDはtargetと思われるが自分相手のみしか来ない?
+ type=00 2HQ付与「攻撃速度が増加しました。」
+ type=01 2HQ解除「攻撃速度が減少しました。」
+ type=02 IMPOSITIO付与「武器の攻撃力が増加しました。」
+ type=03 IMPOSITIO解除「武器の攻撃力が減少しました。」
+ type=04 「スキル使用ディレイが減少しました。」
+ type=05 「スキル使用ディレイが元に戻りました。」
+ type=06 「武器に毒属性が付与されました。」
+ type=07 ASPERSIO付与「武器に聖属性が付与されました。」
+ type=08 ASPERSIO解除「武器の属性が元に戻りました。」
+ type=09 「防具に聖属性が付与されました。」
+ type=0a 「防具の属性が元に戻りました。」
+ type=0b KYRIE付与「バリア状態になりました。」
+ type=0c KYRIE解除「バリア状態が解除されました。」
+ type=0d 「ウェポンパーフェクションモードになりました。」
+ type=0e 「ウェポンパーフェクションモードが解除されました。」
+ type=0f 「オーバートラストモードになりました。」
+ type=10 「オーバートラストモードが解除されました。」
+ type=11 「マキシマイズパワーモードになりました。」
+ type=12 「マキシマイズパワーモードが解除されました。」
+R 0196 <type>.w <ID>.l <switch>.b (コモド以降)
+ switch=0で解除,1で付加
+ type=00 プロボック
+ type=01 インデュア
+ type=02 「攻撃速度が増加しました。」(2HQ)
+ type=03 集中力向上
+ type=04 ハイディング
+ type=05 クローキング
+ type=06 「武器に毒属性が付与されました。」(エンチャントポイズン)
+ type=07 「毒を反射できる状態になりました。」(ポイズンリアクト)
+ type=08 「クァグマイア状態になり、・・・」
+ type=09 「エンジェラス状態になり、・・・」
+ type=0a ブレッシング
+ type=0b シグナムクルシス
+ type=0c 「速さが増加しました」(速度増加)
+ type=0d 「速さが減少しました」(速度減少)
+ type=0e 「スローポイズン状態になりました」(スローポイズン)
+ type=0f 「武器の攻撃力が増加しました」(インポシティオマヌス)
+ type=10 「スキル使用ディレイが減少しました」(サフラギウム)
+ type=11 「武器に聖属性が付与されました」(アスペルシオ)
+ type=12 「防具に聖属性が付与されました」(聖体降臨)
+ type=13 「バリア状態になりました」(キリエエレイソン)
+ type=14 「マグニフィカート状態になりました」
+ type=15 「グロリア状態になりました」
+ type=16 「レックスエーテルナ状態になりました」
+ type=17 「アドレナリンラッシュ状態になりました」
+ type=18 「ウェポンパーフェクションモードになりました」
+ type=19 「オーバートラストモードになりました」
+ type=1a 「マキシマイズパワーモードになりました」
+ type=1b ペコペコ騎乗
+ type=1c 顚
+ type=1d 死んだふり
+ type=1e 「叫びました」(ラウドボイス)
+ type=1f 「エナジーコート状態になりました」
+ type=20 「防具が壊れました」
+ type=21 「武器が壊れました」
+ type=22 謎(目のアップというアイコン:盲目??)
+ type=23 重量50%超え
+ type=24 重量90%超え
+ type=25 謎「攻撃速度が増加しました」(x2アイコン:速度系ポーション?)
+ type=26 謎「攻撃速度が増加しました」(x2アイコン:速度系ポーション?)
+ type=27 謎「攻撃速度が増加しました」(x2アイコン:速度系ポーション?)
+ type=28 (未使用っぽい?:不可と解除で効果が違う)
+ type=29 謎「速さが増加しました」(白いアイコン)
+ type=32 ストリップウエポン
+ type=33 ストリップシールド
+ type=34 ストリップアーマー
+ type=35 ストリップヘルム
+ type=36 ケミカルウェポンチャージ
+ type=37 ケミカルシールドチャージ
+ type=38 ケミカルアーマーチャージ
+ type=39 ケミカルヘルムチャージ
+ type=3a オートガード
+ type=3b リフレクトシールド
+ type=3d プロヴィデンス
+ type=3e ディフェンダー
+ type=41 オートスペル
+ type=44 スピアクィッケン
+ type=56 爆裂波動(アイコンは表示されません。)
+ type=57 金剛(表示はされないが金剛の解除はされるようです。)
+ type=59 コンボディレイ
+ type=5a フレイムランチャー
+ type=5b フロストウェポン
+ type=5c ライトニングローダー
+ type=5d サイズミックウェポン
S 0197 <type>.w
type=0 /resetstate
type=1 /resetskill
- Œř”\‚Í–ł‚ľ?
+ 効能は無し?
R 0199 <type>.w
- type=1 pvpƒ‚[ƒhŠJŽn?
- type=3 gvgƒ‚[ƒhŠJŽn?
+ type=1 pvpモード開始?
+ type=3 gvgモード開始?
R 019a <ID>.l <rank>.l <num>.l
- pvp‡ˆĘ rank/num
+ pvp順位 rank/num
R 019b <ID>.l <type>.l
- ‘źl‚Ělvup‚═Ší¸˜B“™‚Ě•\ŽŚ?
+ 他人のlvupや武器精錬等の表示?
type=0 base lvup?
type=1 job lvup?
- type=2 •Ší¸˜BŽ¸”s
- type=3 •Ší¸˜BŹŒ÷
+ type=2 武器精錬失敗
+ type=3 武器精錬成功
R 019d <?>.4B
- GMƒRƒ}ƒ“ƒh/hide
+ GMコマンド/hide
S 0149 <ID>.l <type>.B <time>.w
- GM—p‰EƒNƒŠƒbƒNƒƒjƒ…[uƒ`ƒƒƒbƒg‹ÖŽ~ŽžŠÔ‚đ‰ş‚°‚éi‰đ‚Ż‚éjvŽg—p ¨ type=00
- GM—p‰EƒNƒŠƒbƒNƒƒjƒ…[uƒ`ƒƒƒbƒg‹ÖŽ~ŽžŠÔ‚đă‚°‚éiŠ|‚Ż‚éjvŽg—p ¨ type=01
- time‚Í•Ş’PˆĘ‚Ĺ‚ˇiŠm‚Š
+ GM用右クリックメニュー「チャット禁止時間を下げる(解ける)」使用 → type=00
+ GM用右クリックメニュー「チャット禁止時間を上げる(掛ける)」使用 → type=01
+ timeは分単位です(確か
R 019e
- •ßŠlƒ‚ƒ“ƒXƒ^[Œˆ‚ß
+ 捕獲モンスター決め
S 019f <ID>.l
- •ßŠlƒ‚ƒ“ƒXƒ^[Žw’č
+ 捕獲モンスター指定
R 01a0 <fail>.B
- •ßŠl”ť’č
- fail=01‚ŐŹŒ÷A00‚ĹŽ¸”s
+ 捕獲判定
+ fail=01で成功、00で失敗
S 01a1 <param>.1B
<param>
- 0x00Fƒyƒbƒgó‘Ô•\ŽŚ
- 0x01F‰a‚đ—^‚Ś‚é
- 0x02FƒpƒtƒH[ƒ}ƒ“ƒX
- 0x03F—‘‚É–ß‚ˇ
- 0x04FƒAƒNƒZƒTƒŠ‰đœ
+ 0x00:ペット状態表示
+ 0x01:餌を与える
+ 0x02:パフォーマンス
+ 0x03:卵に戻す
+ 0x04:アクセサリ解除
R 01a2 <pet name>.24B <name flag>.B <lv>.w <hungry>.w <friendly>.w <accessory>.w
- ƒyƒbƒg‚̏ó‘Ô
- name flag:00=–ź‘O–˘Ý’č 01=–ź‘OÝ’čĎ‚Ý(•ĎX•s‰Â)
- lv=ƒyƒbƒg‚ĚƒŒƒxƒ‹Ahungry=–ž• “x(0~100)Afriendly=e–§“x(‰Šú’l250?)Aaccessory=ƒAƒNƒZƒTƒŠ‚ĚItemID
+ ペットの状態
+ name flag:00=名前未設定 01=名前設定済み(変更不可)
+ lv=ペットのレベル、hungry=満腹度(0~100)、friendly=親密度(初期値250?)、accessory=アクセサリのItemID
R 01a3 <fail>.B <itemID>.w
<fail>
- 0x00F‰a‚â‚莸”s
- 0x01F‰a‚â‚萏Œ÷
+ 0x00:餌やり失敗
+ 0x01:餌やり成功
R 01a4 <type>.B <ID>.l <val>.l
- ƒyƒbƒgŠÖ˜A’Ę’m
- type=00,val=00 ƒyƒbƒg›z‰ťŽž‚É‘—‚ç‚ę‚Ä‚­‚éBƒyƒbƒg”FŽŻ—pH
- type=01 e–§“x•Ď‰ť
- type=02 –ž• “x•Ď‰ť
- type=03 ƒAƒNƒZƒTƒŠ•Ď‰ť(0‚Ĺ–˘‘•”ő)
- type=04 ƒpƒtƒH[ƒ}ƒ“ƒX Šm”F‚ł‚ę‚˝val=1~3
- (4‚̓XƒyƒVƒƒƒ‹ƒpƒtƒH[ƒ}ƒ“ƒXH)
- type=05 HŠm”F‚ł‚ę‚˝val=0x14
+ ペット関連通知
+ type=00,val=00 ペット孵化時に送られてくる。ペット認識用?
+ type=01 親密度変化
+ type=02 満腹度変化
+ type=03 アクセサリ変化(0で未装備)
+ type=04 パフォーマンス 確認されたval=1~3
+ (4はスペシャルパフォーマンス?)
+ type=05 ?確認されたval=0x14
S 01a5 <pet name>.24B
- ƒyƒbƒg‚Ě–ź‘OŒˆ‚ß
+ ペットの名前決め
R 01a6 <len>.w <index>.w*
- ƒyƒbƒg‚Ě—‘ƒŠƒXƒg
+ ペットの卵リスト
S 01a7 <index>.w
- ƒyƒbƒg‚Ě—‘ƒŠƒXƒg‚Ş‘I‘đ‚ł‚ę‚˝
+ ペットの卵リストが選択された
S 01a9 <emotion>.l
- ƒyƒbƒgƒGƒ‚[ƒVƒ‡ƒ“‘—M
+ ペットエモーション送信
R 01aa <ID>.l <emotion>.l
- ƒyƒbƒgƒGƒ‚[ƒVƒ‡ƒ“ŽóM
+ ペットエモーション受信
<emotion>
- 33ˆČ‰ş‚Ě‚Ć‚ŤFƒGƒ‚[ƒVƒ‡ƒ“
- 34ˆČă‚Ě‚Ć‚ŤF”­Œžƒe[ƒuƒ‹H
+ 33以下のとき:エモーション
+ 34以上のとき:発言テーブル?
R 01ac <object id>.l
- ƒAƒ“ƒNƒ‹‚Ě”­“Ž(‚Ý’u)Žž‚Ě‚Ý–ˆ‰ńoŒť(‹@”\‚Í“ä)
+ アンクルの発動(≠設置)時のみ毎回出現(機能は謎)
R 01ad <len>.l <item>.w
- –îě‚č‚̍쐬‰Â”\ITEM•\ŽóM
+ 矢作りの作成可能ITEM表受信
S 01ae <itemID>.w
- –îě‚č‚ĹŽg‚¤Ţ—ż‘—M
+ 矢作りで使う材料送信
S 01af <type>.w
- ƒ`ƒFƒ“ƒWƒJ[ƒgiƒJ[ƒg‘I‘đj
- type=1 ƒm[ƒ}ƒ‹ƒJ[ƒg
+ チェンジカート(カート選択)
+ type=1 ノーマルカート
R 01b0 <monster id>.l <?>.b <new monster code>.l
- –ű‚ĚƒNƒ‰ƒXƒ`ƒFƒ“ƒW
- <new monster code>‚̓`ƒFƒ“ƒWŒă‚ĚƒR[ƒh(1001`)‚đdword‚Ĺ
+ 油のクラスチェンジ
+ <new monster code>はチェンジ後のコード(1001〜)をdwordで
S 01b2 <len>.w <message>.80B <flag>.B {<index>.w <amount>.w <value>.l}.8B*
- ˜I“XŠJÝ
- flag F 0=ƒLƒƒƒ“ƒZƒ‹ , 1=ƒI[ƒvƒ“
+ 露店開設
+ flag : 0=キャンセル , 1=オープン
R 01b3 <filename>.64B <type>.B
- R 0145‚̏ăˆĘŒÝŠˇ
-R 01B6 <guildID>.l <guildLv>.l <connum>.l <’čˆő>.l <Avl.lvl>.l <now_exp>.l <next_exp>.l <ă”[ƒ|ƒCƒ“ƒg>.l <ŤŒüF-V>.l <ŤŒüR-W>.l <members>.l <guild name>.24B <guild master>.24B <agit?>.20B
- ƒMƒ‹ƒhî•ń
+ R 0145の上位互換
+R 01B6 <guildID>.l <guildLv>.l <connum>.l <定員>.l <Avl.lvl>.l <now_exp>.l <next_exp>.l <上納ポイント>.l <性向F-V>.l <性向R-W>.l <members>.l <guild name>.24B <guild master>.24B <agit?>.20B
+ ギルド情報
R 01b9 <ID>.I
- ”íƒ_ƒ“™‚É‚ć‚éID‚̉rĽ’†’f
+ 被ダメ等によるIDの詠唱中断
R 01c4 <index>.w <amount>.l <itemID>.w <item data>.12B
- ƒJƒvƒ‰‘qŒÉƒAƒCƒeƒ€
+ カプラ倉庫アイテム
R 01c8 <index>.w <item ID>.w <ID>.l <amount left>.w <type>.B
- ƒAƒCƒeƒ€Žg—p‰ž“šB(00a8‚̏ăˆĘƒo[ƒVƒ‡ƒ“H)
- type=00‚Ěę‡Žg—pŽ¸”s? amount‚ŕƒSƒ~‚Ě–Í—l
- type=01‚Ěę‡ŹŒ÷‚ŁAamount‚ÍŽg—pŒă‚ĚŽc‚čŒÂ”
+ アイテム使用応答。(00a8の上位バーション?)
+ type=00の場合使用失敗? amountもゴミの模様
+ type=01の場合成功で、amountは使用後の残り個数
R 01c9 <dst ID>.l <src ID>.l <X>.w <Y>.w <type>.B <fail>.B ?.81b
- ƒXƒLƒ‹Œř”\’něŹ(011f‚̏ăˆĘƒo[ƒVƒ‡ƒ“H)
- type 0x7e:SWA0x7f:‰Î•ÇA0x80 ƒ|ƒ^ŠJ‚Ť’†A0x81 ƒ|ƒ^ŠJ‚Ť’ź‘O
- 0x82 š‘́A0x83 ƒTƒ“ƒNA0x84 ƒ}ƒOƒkƒXA0x85 ƒjƒ…[ƒ}
- 0x86 0x86 ‘ĺ–‚–@(SG/MS/LoV/GX)A0x87 ƒtƒ@ƒCƒ„[ƒsƒ‰‘Ň‹@
- 0x88 ƒtƒ@ƒCƒ„[ƒsƒ‰”š”­A0x87`0x8B •\ŽŚ–ł‚ľA
- 0x8c ƒg[ƒL[ƒ{ƒbƒNƒX(”­“Ž’†)A0x8D ƒAƒCƒXƒEƒH[ƒ‹
- 0x8E ƒNƒƒOƒ}ƒCƒAA0x8f ƒuƒ‰ƒXƒgƒ}ƒCƒ“A0x90 ƒXƒLƒbƒh
- 0x91 ƒAƒ“ƒNƒ‹A0x92 ƒxƒmƒ€ƒ_ƒXƒgA0x93 ƒ‰ƒ“ƒhƒ}ƒCƒ“
- 0x94 ƒVƒ‡ƒbƒNƒEƒF[ƒuƒgƒ‰ƒbƒvA0x95 ƒTƒ“ƒhƒ}ƒ“
- 0x96 ƒtƒ‰ƒbƒVƒƒ[A0x97 ƒtƒŠ[ƒWƒ“ƒOƒgƒ‰ƒbƒv
- 0x98 ƒNƒŒƒCƒ‚ƒA[ƒgƒ‰ƒbƒvA0x99 ƒg[ƒL[ƒ{ƒbƒNƒX
- 0x9A ƒ{ƒ‹ƒP[ƒmA0x9B ƒfƒŠƒ…[ƒWA0x9C ƒoƒCƒIƒŒƒ“ƒgƒQƒCƒ‹
- 0x9D ƒ‰ƒ“ƒhƒvƒƒeƒNƒ^[A0x9E Zenyƒ}[ƒNA0x9F Zeny‘Ü
- 0xA0 ‰ń‚é—΂̗ցA0xA1 ƒsƒ“ƒN‚̉š•„ (“ń˜A•„—L‚č
- 0xA2 ^‚ń’†‚É“_‚Ě‚ ‚éŒő‚̋ʁA0xA3 ƒsƒ“ƒN‚ĚƒXƒvƒŠƒ“ƒO
- 0xA4 [•Ł‚Ě’†‚ɁA0xA5 ‰ń‚éÂ‚˘—ցA0xA6 •s‹Ś˜a‰š
- 0xA7 Œű“JA0xA8 —[—z‚ĚƒAƒTƒVƒ“ƒNƒƒXA0xA9 ƒuƒ‰ƒM‚ĚŽ
- 0xAA ƒCƒhƒDƒ“‚Ě—ŃŒçA0xAB ŽŠ•ŞŸŽč‚Čƒ_ƒ“ƒXA0xAC ƒnƒ~ƒ“ƒO
- 0xAD Ž„‚đ–Y‚ę‚Č‚˘‚ŁcA0xAE ƒT[ƒrƒXƒtƒH[ƒ†[
- 0xAF ƒsƒ“ƒN‚ĚƒXƒvƒŠƒ“ƒOA0xB0 •\ŽŚ–ł‚ľ
- 0xB0 ƒOƒ‰ƒtƒBƒeƒB,
- 0xB1 ƒfƒ‚ƒ“ƒXƒgƒŒ[ƒVƒ‡ƒ“A0xB2`0xBF •\ŽŚ–ł‚ľ
- 0xB2 ƒsƒ“ƒN‚Ěƒ[ƒvƒ|[ƒ^ƒ‹•—
- 0xB3 Ź‚ł‚ȏ\Žš‰Ë‚Ş‚Ó‚ć‚Ó‚ć
- 0xB4 ƒoƒWƒŠƒJA0xB5 ƒGƒtƒFƒNƒg‚Č‚ľH
- 0xB6 •‚˘~‚Ş—§‘Ě“I‚É•‚‚Š‚Ńă‚Ş‚é
- 0xB7 ƒNƒ‚‚Ě‘ƒA0xB8` ƒGƒtƒFƒNƒg‚Č‚ľH
+ スキル効能地作成(011fの上位バーション?)
+ type 0x7e:SW、0x7f:火壁、0x80 ポタ開き中、0x81 ポタ開き直前
+ 0x82 聖体、0x83 サンク、0x84 マグヌス、0x85 ニューマ
+ 0x86 0x86 大魔法(SG/MS/LoV/GX)、0x87 ファイヤーピラ待機
+ 0x88 ファイヤーピラ爆発、0x87〜0x8B 表示無し、
+ 0x8c トーキーボックス(発動中)、0x8D アイスウォール
+ 0x8E クワグマイア、0x8f ブラストマイン、0x90 スキッド
+ 0x91 アンクル、0x92 ベノムダスト、0x93 ランドマイン
+ 0x94 ショックウェーブトラップ、0x95 サンドマン
+ 0x96 フラッシャー、0x97 フリージングトラップ
+ 0x98 クレイモアートラップ、0x99 トーキーボックス
+ 0x9A ボルケーノ、0x9B デリュージ、0x9C バイオレントゲイル
+ 0x9D ランドプロテクター、0x9E Zenyマーク、0x9F Zeny袋
+ 0xA0 回る緑の輪、0xA1 ピンクの音符 (二連符有り
+ 0xA2 真ん中に点のある光の玉、0xA3 ピンクのスプリング
+ 0xA4 深淵の中に、0xA5 回る青い輪、0xA6 不協和音
+ 0xA7 口笛、0xA8 夕陽のアサシンクロス、0xA9 ブラギの詩
+ 0xAA イドゥンの林檎、0xAB 自分勝手なダンス、0xAC ハミング
+ 0xAD 私を忘れないで…、0xAE サービスフォーユー
+ 0xAF ピンクのスプリング、0xB0 表示無し
+ 0xB0 グラフィティ,
+ 0xB1 デモンストレーション、0xB2〜0xBF 表示無し
+ 0xB2 ピンクのワープポータル風
+ 0xB3 小さな十字架がふよふよ
+ 0xB4 バジリカ、0xB5 エフェクトなし?
+ 0xB6 黒い×が立体的に浮かび上がる
+ 0xB7 クモの巣、0xB8〜 エフェクトなし?
- ‘źî•ń‹‚Ţ
- ?.81b‚Í“äB
+ 他情報求む
+ ?.81bは謎。
R 01cd (<sid>.l)x7
- ƒI[ƒgƒXƒyƒ‹‘I‘đŽˆŽóM
- <sid>x7 ‚É‚Í NB,CB,FB,LB,SS,FBL,FD ‚̏‡‚ĹƒXƒLƒ‹ƒR[ƒh‚Şdword‚Ĺ“ü‚é
- ‚Ü‚ž‘I‘đ‚Ĺ‚Ť‚Č‚˘ƒXƒLƒ‹‚Ě•”•Ş‚Í <sid> = 0x00000000 ‚Ş“ü‚é
+ オートスペル選択肢受信
+ <sid>x7 には NB,CB,FB,LB,SS,FBL,FD の順でスキルコードがdwordで入る
+ まだ選択できないスキルの部分は <sid> = 0x00000000 が入る
S 01ce <sid>.l
- ƒI[ƒgƒXƒyƒ‹‘I‘đŽˆ‘—M
+ オートスペル選択肢送信
R 01cf <crusader id>.l <target id>.l <?>.18b
- ŒŁgó‘Ôƒ^[ƒQƒbƒgON/OFFBŒŁg‚ŞŘ‚ę‚é‚Ć <target id> ‚Ş 0x00000000 ‚É‚Č‚é
+ 献身状態ターゲットON/OFF。献身が切れると <target id> が 0x00000000 になる
R 01d0 <ID>.l <num>.w
- <num> : ‹CŒ÷‚̐”(”ńLv)
+ <num> : 気功の数(非Lv)
R 01d1 <monk id>.l <target monster id>.l <bool>.l
- ”’‰HŽć‚čó‘ÔON/OFFB<bool> ‚Í”’nŽć‚萏—§Žž‚É 0x00000001 ‰đœŽž‚É 0x00000000 ‚Ş—ˆ‚é
+ 白羽取り状態ON/OFF。<bool> は白刃取り成立時に 0x00000001 解除時に 0x00000000 が来る
R 01d2 <id>.l <delay>.l
- ƒ‚ƒ“ƒN‚ĚƒRƒ“ƒ{ƒfƒBƒŒƒC(msec)
- ŽO’iE˜A‘Ĺ‚ÍŠî–{ƒfƒBƒŒƒC1000(+300)A–Ň—´‚ÍŠî–{ƒfƒBƒŒƒC700(+300)
+ モンクのコンボディレイ(msec)
+ 三段・連打は基本ディレイ1000(+300)、猛龍は基本ディレイ700(+300)
R 01d4 <ID>.l
- •śŽš—ń“ü—Í‘‹•\ŽŚ(ID‚ÍNPC‚ĚID‚Ş“ü‚é)
+ 文字列入力窓表示(IDはNPCのIDが入る)
S 01d5 <len>.w <ID>.l <input>.?B 00
- •śŽš—ń“ü—Í“ŕ—e‘—M(ID‚ÍNPC‚ĚID‚Ş“ü‚é)
+ 文字列入力内容送信(IDはNPCのIDが入る)
R 01d7 <ID>.l <equip point>.b <item id1>.w <item id2>.w
- ‘•”őƒOƒ‰ƒtƒBƒbƒN <equip point> ‚Í 02Žč‚Ć09‘Ť‚Ě‚ÝŠm”FBid2‚͍śŽč
+ 装備グラフィック <equip point> は 02手と09足のみ確認。id2は左手
R 01d8 <ID>.l <speed>.w <opt1>.w <opt2>.w <option>.w <class>.w <hair>.w <item id1>.w <item id2>.w <head option bottom>.w <head option top>.w <head option mid>.w <hair color>.w ?.w <head dir>.w <guild>.l <emblem>.l <manner>.w <karma>.B <sex>.B <X_Y_dir>.3B ?.B ?.B <sit>.B <Lv>.B ?.B
- ƒ}ƒbƒvƒ[ƒhŽž&ˆÚ“ŽŽž—pAŒü‚Ť•t‚Ť—pƒLƒƒƒ‰î•ń?(0078‚̏ăˆĘƒo[ƒWƒ‡ƒ“)
+ マップロード時&移動時用、向き付き用キャラ情報?(0078の上位バージョン)
R 01d9 <ID>.l <speed>.w <opt1>.w <opt2>.w <option>.w <class>.w <hair>.w <item id1>.w <item id2>.w.<head option bottom>.w <head option top>.w <head option mid>.w <hair color>.w ?.w <head dir>.w <guild>.l <emblem>.l <manner>.w <karma>.B <sex>.B <X_Y_dir>.3B ?.B ?.B <Lv>.B ?.B
- ƒeƒŒƒ|“™‚Ě•\ŽŚ”ÍˆÍ“ŕ•Ś‚ŤƒLƒƒƒ‰—pAŒü‚Ť•t‚Ť–ł‚ľƒLƒƒƒ‰î•ń?(0079‚̏ăˆĘƒo[ƒWƒ‡ƒ“)
+ テレポ等の表示範囲内沸きキャラ用、向き付き無しキャラ情報?(0079の上位バージョン)
R 01da <ID>.l <speed>.w <opt1>.w <opt2>.w <option>.w <class>.w <hair>.<item id1>.w <item id2>.w <head option bottom>.w <server tick>.l <head option top>.w <head option mid>.w <hair color>.w ?.w <head dir>.w <guild>.l <emblem>.l <manner>.w <karma>.B <sex>.B <X_Y_X_Y>.5B ?.B ?.B ?.B <Lv>.B ?.B
- •\ŽŚ”͈͓ŕƒLƒƒƒ‰ˆÚ“Žî•ń(007b‚̏ăˆĘƒo[ƒWƒ‡ƒ“)
+ 表示範囲内キャラ移動情報(007bの上位バージョン)
S 01db
- ˆĂ†‰ťkey—v‹
+ 暗号化key要求
R 01dc <len>.w <key>.?B
- ˆĂ†‰ťkey‘—•t
+ 暗号化key送付
S 01dd <version>.l <account name>.24B <md5 binary>.16B <version2>.1B
- id&ˆĂ†‰ťĎ‚Ýpass‘—M
- ‡‚ɃNƒ‰ƒCƒAƒ“ƒg‚Ş01db‚đ‘—‚éA
- ŽI‚Ş01dc‚Ĺkey‚đ•Ô‚ˇA
- ƒNƒ‰ƒCƒAƒ“ƒg‚Ş"<key><password>"‚ɂ‚˘‚Ämd5ŒvŽZ‚ľ
- <md5 binary>‚̏Š‚đ–„‚ß‚Ä01dd‚đ‘—‚éB
- <passwordencrypt2>‚ĚŽž‚Í
- "<key><password>"‚ɑ΂ľ‚Ämd5ŒvŽZ‚Ć‚ľ‚Ä‚˘‚鏊‚đ
- "<password><key>"‚Ć•ĎX‚ˇ‚é
+ id&暗号化済みpass送信
+ 順にクライアントが01dbを送る、
+ 鯖が01dcでkeyを返す、
+ クライアントが"<key><password>"についてmd5計算し
+ <md5 binary>の所を埋めて01ddを送る。
+ <passwordencrypt2>の時は
+ "<key><password>"に対してmd5計算としている所を
+ "<password><key>"と変更する
R 01de <skill ID>.w <src ID>.l <dst ID>.l <server tick>.l <src speed>.l <dst speed>.l <param1>.l <param2>.w <param3>.w <type>.B
- UŒ‚ŒnƒXƒLƒ‹ƒGƒtƒFƒNƒg@(0114‚̏ăˆĘƒo[ƒVƒ‡ƒ“H)
- type=04 ‰Î•Ç‚ĹŠĎ‘Ş type=06‚Ć‚Ů‚Ú“Ż‚ś?
- type=05 NB/FBl‚Ě•ŞŽU‚ľ‚˝ƒ_ƒ[ƒW—pH
- type=06 ’P”­‚ŕ‚Ě? param1‚̓_ƒ[ƒW‡ŒvAparam2‚ÍlevelAparam3‚Í1ŒĹ’č‚Ć—\‘z
- type=07 ƒ_ƒ[ƒW•\ŽŚ–ł‚ľH
- type=08 ˜A‘Ĺ‚ŕ‚Ě? param1‚̓_ƒ[ƒW‡ŒvAparam2‚ÍlevelAparam3‚Í•ŞŠ„”‚Ć—\‘z
- type=09 ƒ_ƒ[ƒWƒ‚[ƒVƒ‡ƒ“‚Č‚ľ‚Ƀ_ƒ[ƒW‚ž‚Ż•\ŽŚ‚ł‚ę‚镨(ƒCƒ“ƒfƒ…ƒA)‚ĆŽv‚Á‚˝‚Ě‚ž‚ރ_ƒ[ƒWƒ‚[ƒVƒ‡ƒ“‚ޏo‚镨B(‹@”\‚Í“ä)
+ 攻撃系スキルエフェクト@(0114の上位バーション?)
+ type=04 火壁で観測 type=06とほぼ同じ?
+ type=05 NB/FBlの分散したダメージ用?
+ type=06 単発もの? param1はダメージ合計、param2はlevel、param3は1固定と予想
+ type=07 ダメージ表示無し?
+ type=08 連打もの? param1はダメージ合計、param2はlevel、param3は分割数と予想
+ type=09 ダメージモーションなしにダメージだけ表示される物(インデュア)と思ったのだがダメージモーションが出る物。(機能は謎)
S 01df <ID>.|
- GM‰EƒNƒŠƒbƒN‚É‚ć‚éID‚Ěƒ`ƒƒƒbƒg‹ÖŽ~‰ń”ŽQĆH
+ GM右クリックによるIDのチャット禁止回数参照?
R 01e1 <ID>.l <num>.w
- <num> : ‹CŒ÷‚̐”(”ńLv) ˆę“x•\ŽŚ‚ľ‚˝‚çŒă‚Ç‚ń‚Čnum‚Ş—ˆ‚Ä‚ŕ–łŽ‹‚ł‚ę‚éB
+ <num> : 気功の数(非Lv) 一度表示したら後どんなnumが来ても無視される。
R 01e6 <partner name>.24B
- Œ‹ĽƒXƒLƒ‹‚ ‚Č‚˝‚Ɉ§‚˘‚˝‚˘Žg—pŽž‚Ě‹Š‚ѐş
+ 結婚スキルあなたに逢いたい使用時の叫び声
S 01e7
- ƒXƒpƒmƒr‚Ĺ/doridori‚ľ‚˝‚ç”ň‚ń‚Ĺ‚­‚éBSPR‰ń•œ—Ę2”{ƒtƒ‰ƒO‚𗧂ĂéƒpƒPƒbƒg
+ スパノビで/doridoriしたら飛んでくる。SPR回復量2倍フラグを立てるパケット
S 01e8 <party name>.24B <item1>B <item2>B
- <item1>ƒAƒCƒeƒ€ŽűW•ű–@B0‚ĹŒÂl•ĘA1‚Ĺƒp[ƒeƒBŒö—L
- <item2>ƒAƒCƒeƒ€•Ş”z•ű–@B0‚ĹŒÂl•ĘA1‚Ĺƒp[ƒeƒB‚É‹Ď“™•Ş”z
- (00f9‚̏ăˆĘƒo[ƒVƒ‡ƒ“)
+ <item1>アイテム収集方法。0で個人別、1でパーティ公有
+ <item2>アイテム分配方法。0で個人別、1でパーティに均等分配
+ (00f9の上位バーション)
R 01ea <ID>.l
- Œ‹ĽƒGƒtƒFƒNƒg(‰šŠyAŽ†á)
- ID‚͐V•w‚Ě‚ŕ‚Ě‚Ş“ü‚éH
+ 結婚エフェクト(音楽、紙吹雪)
+ IDは新婦のものが入る?
S 01ed
- ƒXƒpƒmƒr‚Ş”š—ô”g“Ž‚É‚Č‚éƒtƒ‰ƒO‚𗧂ĂéƒpƒPƒbƒg
+ スパノビが爆裂波動になるフラグを立てるパケット
R 01ee <len>.w {<index>.w <item ID>.w <type>.B <identify flag>.B <amount>.w ?.2B <card>.4w}.18B*
- Š—LÁ–Ő•i&ŽűW•iƒŠƒXƒg
- –î‚Ěę‡‚Í?.2B‚Ş0x8000‚É‚Č‚é
- 00a3‚Š‚ç•ĎX
+ 所有消耗品&収集品リスト
+ 矢の場合は?.2Bが0x8000になる
+ 00a3から変更
R 01ef <len>.w {<index>.w <item ID>.w <type>.B <identify flag>.B <amount>.w ?.2B <card>.4w}.18B*
- ƒJ[ƒg“ŕƒAƒCƒeƒ€BÁ–Ő•i/ŽűW•i
- 0123‚Š‚ç•ĎX
+ カート内アイテム。消耗品/収集品
+ 0123から変更
R 01f0 <len>.w {<index>.w <item ID>.w <type>.B <identify flag>.B <amount>.w ?.2B <card>.4w}.18B*
- ƒJƒvƒ‰‚ł‚ń‚É—a‚Ż‚Ä‚ ‚éÁ–Ő•i&ŽűW•iƒŠƒXƒg
- 00a5‚Š‚ç•ĎX
+ カプラさんに預けてある消耗品&収集品リスト
+ 00a5から変更
R 01f4 <name>.24B <trade id?>.L <LV>.w
- ć•ű‚Š‚çŽćˆř—vż
- 00e5‚Š‚ç•ĎX
+ 先方から取引要請
+ 00e5から変更
R 01f5 <result>.B <trade id?>.L <LV>.w
- ‚ą‚ż‚ç‚Š‚ç‚ĚŽćˆř—vż‚ɑ΂ˇ‚é”˝‰ž
- 00e7‚Š‚ç•ĎX
+ こちらからの取引要請に対する反応
+ 00e7から変更
S 0200 <login name>.24B
- ragexe‚É/accountƒIƒvƒVƒ‡ƒ“‚đ‚‚Ż‚Ä‹N“Ž‚ˇ‚é‚ĆƒƒOƒCƒ“—v‹‚É•t‰Á‚ł‚ę‚éƒpƒPƒbƒg
+ ragexeに/accountオプションをつけて起動するとログイン要求に付加されるパケット
S 0204 <?>.16B
- ƒƒOƒCƒ“—v‹‚É•t‰Á‚ł‚ę‚éƒpƒPƒbƒgB16ƒoƒCƒg‚ÍŒĹ’čH
+ ログイン要求に付加されるパケット。16バイトは固定?
S 020B <?>.17B
- ƒLƒƒƒ‰ƒNƒ^ƒT[ƒoÚ‘ą—v‹0065‚É•t‰Á‚ł‚ę‚éƒpƒPƒbƒgB1+0204‚Ě16ƒoƒCƒg‚Ĺ17ƒoƒCƒgH
+ キャラクタサーバ接続要求0065に付加されるパケット。1+0204の16バイトで17バイト?
diff --git a/doc/command.txt b/doc/command.txt
index c53035c..49258b7 100644
--- a/doc/command.txt
+++ b/doc/command.txt
@@ -24,17 +24,17 @@ Index
/mapmove prontera.gat 167 158
2. Broadcast
- BroadcastƒRƒ}ƒ“ƒh‚Ć‚ÍŽŔŰ‚ĚƒT[ƒo‚ĹGM‚ŞŽg‚Ś‚éGMƒƒbƒZ[ƒW‚Ć“Ż—l‚Ě“­‚Ť‚đ‚ľ‚Ü‚ˇB
- /b‚ŕ‚ľ‚­‚Í/nb‚Ć‚ľ‚ÄŽg‚¤‚ą‚Ć‚Ş‚Ĺ‚Ť‚Ü‚ˇŽg—p•ű–@‚ÍˆČ‰ş‚Ě’Ę‚č‚Ĺ‚ˇB
+ Broadcastコマンドとは実際のサーバでGMが使えるGMメッセージと同様の働きをします。
+ /bもしくは/nbとして使うことができます使用方法は以下の通りです。
/b <message>
/nb <message>
/b
- ŽŔs‚ľ‚˝ƒ†[ƒU–ź•t‚Ť‚ĹƒƒbƒZ[ƒW‚đ•\ŽŚ‚ľ‚Ü‚ˇB
+ 実行したユーザ名付きでメッセージを表示します。
/nb
- ŽŔs‚ľ‚˝ƒ†[ƒU–ź‚đ•\ŽŚ‚š‚¸ƒƒbƒZ[ƒW‚đ•\ŽŚ‚ľ‚Ü‚ˇB
+ 実行したユーザ名を表示せずメッセージを表示します。
- —á:
- /b ƒeƒXƒg
- /nb ƒeƒXƒg
+ 例:
+ /b テスト
+ /nb テスト
$Id: command.txt,v 1.1 2004/05/28 03:55:43 wizputer Exp $
diff --git a/doc/conf_ref.txt b/doc/conf_ref.txt
index 7f3fbcd..bd1e35c 100644
--- a/doc/conf_ref.txt
+++ b/doc/conf_ref.txt
@@ -156,7 +156,7 @@ login_log_unknown_packets_filename
01-06-2004 21:25:21.579: receiving of an unknown packet -> disconnection
parse_login: connection #5 (ip: 82.64.111.96), packet: 0x4e92 (with being read: 28).
Detail (in hex):
- 92 4e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ’N..............
+ 92 4e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 誰..............
00 00 00 00 00 00 00 00 00 00 00 00 ............
Default value: log/login_unknown_packets.log
@@ -594,76 +594,76 @@ passwd
It is a password corresponding to ID which this world uses.
char_ip
- map-server‚Š‚ç‚Ý‚˝A‚ą‚ĚƒT[ƒo[‚Ş’S“–‚ˇ‚éƒ}ƒbƒv‚Ěƒ[ƒ‹ƒh‚đŠÇ—‚ˇ‚é
- char-server‚ĚIP‚Ĺ‚ˇB
+ map-serverからみた、このサーバーが担当するマップのワールドを管理する
+ char-serverのIPです。
char_port
- ƒ}ƒbƒv‚đ“o˜^‚ˇ‚échar-server‚Ěƒ|[ƒg‚Ĺ‚ˇBČ—މ”\‚ĹƒfƒtƒHƒ‹ƒg‚Í6121‚Ĺ‚ˇB
+ マップを登録するchar-serverのポートです。省略可能でデフォルトは6121です。
map_ip
- ƒNƒ‰ƒCƒAƒ“ƒg‚Š‚猊‚˝‚ą‚Ěmap-server‚ĚIP‚Ĺ‚ˇB
+ クライアントから見たこのmap-serverのIPです。
map_port
- map-server‚ĹŽg—p‚ˇ‚éƒ|[ƒg‚Ĺ‚ˇBČ—މ”\‚ĹƒfƒtƒHƒ‹ƒg‚Í5121‚Ĺ‚ˇB
+ map-serverで使用するポートです。省略可能でデフォルトは5121です。
autosave_time
- ƒf[ƒ^‚đŽŠ“Ž“I‚ɃLƒƒƒ‰ŽI‚É‘—‚鎞ŠÔ‚Ĺ‚ˇB’PˆĘ‚Í•b‚Ĺ‚ˇB
- Č—މ”\‚ĹƒfƒtƒHƒ‹ƒg‚Í60(1•Ş)‚Ĺ‚ˇB
+ データを自動的にキャラ鯖に送る時間です。単位は秒です。
+ 省略可能でデフォルトは60(1分)です。
water_height
- …ę‚̍‚‚ł‚đŽw’股‚éƒtƒ@ƒCƒ‹‚đŒˆ‚ß‚Ü‚ˇB
- Č—މ”\‚ŁAƒfƒtƒHƒ‹ƒg‚Íconf/water_height.txt‚Ĺ‚ˇB
+ 水場の高さを指定するファイルを決めます。
+ 省略可能で、デフォルトはconf/water_height.txtです。
motd_txt
- Message of the Dayƒtƒ@ƒCƒ‹‚đŽw’č‚ľ‚Ü‚ˇB
- Č—މ”\‚ŁAƒfƒtƒHƒ‹ƒg‚Íconf/motd.txt‚Ĺ‚ˇB
+ Message of the Dayファイルを指定します。
+ 省略可能で、デフォルトはconf/motd.txtです。
help_txt
- @help‚Ĺ•\ŽŚ‚ˇ‚éƒtƒ@ƒCƒ‹‚đŽw’č‚ľ‚Ü‚ˇB
- Č—މ”\‚ŁAƒfƒtƒHƒ‹ƒg‚Íconf/help.txt‚Ĺ‚ˇB
+ @helpで表示するファイルを指定します。
+ 省略可能で、デフォルトはconf/help.txtです。
mapreg_txt
- MAPƒT[ƒo[“ŕƒLƒƒƒ‰ƒNƒ^[‹¤—L•Ď”‚đ•Ű‘ś‚ˇ‚éƒtƒ@ƒCƒ‹‚đŽw’č‚ľ‚Ü‚ˇB
- Č—މ”\‚ŁAƒfƒtƒHƒ‹ƒg‚Ísave/mapreg_txt‚Ĺ‚ˇB
+ MAPサーバー内キャラクター共有変数を保存するファイルを指定します。
+ 省略可能で、デフォルトはsave/mapreg_txtです。
data_grf
- ROƒf[ƒ^ƒtƒ@ƒCƒ‹ data.grf ‚Ö‚ĚƒpƒX‚Ĺ‚ˇB
- Č—މ”\‚ŁAƒfƒtƒHƒ‹ƒg‚Í ./data.grf ‚Ĺ‚ˇB
- grf-files.txt‚Ş‚ ‚éę‡‚ť‚ż‚ç‚̐ݒ肪—Dć‚ł‚ę‚Ü‚ˇB
+ ROデータファイル data.grf へのパスです。
+ 省略可能で、デフォルトは ./data.grf です。
+ grf-files.txtがある場合そちらの設定が優先されます。
sdata_grf
- ƒTƒNƒ‰ƒCƒf[ƒ^ƒtƒ@ƒCƒ‹ sdata.grf ‚Ö‚ĚƒpƒX‚Ĺ‚ˇB
- Č—މ”\‚ŁAƒfƒtƒHƒ‹ƒg‚Í ./sdata.grf ‚Ĺ‚ˇB
- grf-files.txt‚Ş‚ ‚éę‡‚ť‚ż‚ç‚̐ݒ肪—Dć‚ł‚ę‚Ü‚ˇB
+ サクライデータファイル sdata.grf へのパスです。
+ 省略可能で、デフォルトは ./sdata.grf です。
+ grf-files.txtがある場合そちらの設定が優先されます。
adata_grf
- ƒżƒf[ƒ^ƒtƒ@ƒCƒ‹ adata.grf ‚Ö‚ĚƒpƒX‚Ĺ‚ˇB
- Č—މ”\‚ŁAƒfƒtƒHƒ‹ƒg‚Í ./adata.grf ‚Ĺ‚ˇB
- grf-files.txt‚Ş‚ ‚éę‡‚ť‚ż‚ç‚̐ݒ肪—Dć‚ł‚ę‚Ü‚ˇB
+ αデータファイル adata.grf へのパスです。
+ 省略可能で、デフォルトは ./adata.grf です。
+ grf-files.txtがある場合そちらの設定が優先されます。
npc
- “ǂݍž‚Ţnpcƒf[ƒ^ƒtƒ@ƒCƒ‹‚Ö‚ĚƒpƒX‚Ĺ‚ˇB
- •Ą”Žw’č‰Â”\‚ŁAŽw’č‚ľ‚˝‡‚Ƀ[ƒh‚ľ‚Ü‚ˇB
- clear ‚đŽw’股‚é‚Ć‚ť‚ę‚Ü‚Ĺ‚É“o˜^‚ľ‚˝ƒpƒX‚đ‘S‚č폜‚ľ‚Ü‚ˇB
+ 読み込むnpcデータファイルへのパスです。
+ 複数指定可能で、指定した順にロードします。
+ clear を指定するとそれまでに登録したパスを全て削除します。
delnpc
- “ǂݍž‚Ü‚Č‚˘npcƒtƒ@ƒCƒ‹‚Ö‚ĚƒpƒX‚Ĺ‚ˇB
- Žw’č‚ľ‚˝ƒpƒX‚Ínpc‚ĹŽw’č‚ł‚ę‚˝ƒf[ƒ^ƒtƒ@ƒCƒ‹ƒŠƒXƒg‚Š‚çíœ‚ł‚ę‚Ü‚ˇB
- all ‚đŽw’股‚é‚Ć‘S‚č폜‚ľ‚Ü‚ˇ( npc: clear ‚Ć“Ż‹`)B
+ 読み込まないnpcファイルへのパスです。
+ 指定したパスはnpcで指定されたデータファイルリストから削除されます。
+ all を指定すると全て削除します( npc: clear と同義)。
map
- ‚ą‚Ěƒ}ƒbƒv‚Ş’S“–‚ˇ‚éƒ}ƒbƒvƒtƒ@ƒCƒ‹–ź‚Ĺ‚ˇB
- •Ą”Žw’č‰Â”\‚ŁAŽw’č‚ľ‚˝‡‚Ƀ[ƒh‚ľ‚Ü‚ˇB
- ‘śÝ‚ľ‚Č‚˘ƒ}ƒbƒv‚đŽw’č‚ľ‚˝ę‡ƒGƒ‰[‚É‚Č‚č‚Ü‚ˇB
- clear ‚đŽw’股‚é‚Ć‚ť‚ę‚Ü‚Ĺ‚É“o˜^‚ľ‚˝ƒtƒ@ƒCƒ‹–ź‚đ‘S‚č폜‚ľ‚Ü‚ˇB
+ このマップが担当するマップファイル名です。
+ 複数指定可能で、指定した順にロードします。
+ 存在しないマップを指定した場合エラーになります。
+ clear を指定するとそれまでに登録したファイル名を全て削除します。
delmap
- “ǂݍž‚Ü‚Č‚˘ƒ}ƒbƒvƒtƒ@ƒCƒ‹‚Ö‚ĚƒpƒX‚Ĺ‚ˇB
- Žw’č‚ľ‚˝ƒtƒ@ƒCƒ‹‚Ímap‚ĹŽw’č‚ł‚ę‚˝ƒŠƒXƒg‚Š‚çíœ‚ł‚ę‚Ü‚ˇB
- all ‚đŽw’股‚é‚Ć‘S‚č폜‚ľ‚Ü‚ˇ( map: clear ‚Ć“Ż‹`)B
+ 読み込まないマップファイルへのパスです。
+ 指定したファイルはmapで指定されたリストから削除されます。
+ all を指定すると全て削除します( map: clear と同義)。
import
- ‚ť‚̍s‚đ•Ęƒtƒ@ƒCƒ‹‚Ě’†g‚Ć’u‚ŤŠˇ‚Ś‚Ü‚ˇB
+ その行を別ファイルの中身と置き換えます。
< Example >
@@ -684,7 +684,7 @@ npc: conf/warp/npc_warp3.txt
npc: conf/mob/npc_monster3J.txt
map: prontera.gat
map: prt_castle.gat
-inpcAmap‚Í‘˝‚˘‚Ě‚ĹČ—Şj
+(npc、mapは多いので省略)
delnpc: conf/sample/npc_test.txt
npc: clear
delmap: prontera.gat
@@ -709,689 +709,689 @@ delmap: all
< Explanation of a key >
warp_point_debug
- ƒ[ƒvƒ|ƒCƒ“ƒg‚𕁒ʂɕ\ŽŚ‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB‚ą‚ę‚đyes‚É‚ˇ‚é‚Ć
- ƒ[ƒvƒ|ƒCƒ“ƒg‚Ě‚Š‚í‚č‚ɃMƒ‹ƒhƒtƒ‰ƒO‚Ş‚ť‚̏ꏩ‚ɏo‚㏁[ƒv
- ƒ|ƒCƒ“ƒg‚Ě–ź‘O‚đŠm”F‚ˇ‚é‚ą‚Ć‚Ş‚Ĺ‚Ť‚Ü‚ˇBƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ ワープポイントを普通に表示するかどうかです。これをyesにすると
+ ワープポイントのかわりにギルドフラグがその場所に出てワープ
+ ポイントの名前を確認することができます。デフォルトはnoです。
enemy_critical
- ƒvƒŒƒCƒ„[‚Ć“Ż‚śLUK‚É‚ć‚éƒNƒŠƒeƒBƒJƒ‹”ť’č‚đMOB‚Ćƒyƒbƒg‚É—LŒř‚É‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- ‚ą‚ĚƒNƒŠƒeƒBƒJƒ‹‚Í‚ŕ‚ż‚ë‚ń•K’†‚Ȃ̂ŁAon‚É‚ˇ‚é‚ƍ‚Flee‚Ĺ‚ŕA
- LUK‚̍‚‚˘“G‚̍UŒ‚‚Ş”đ‚Ż‚Ă‚ç‚­‚Č‚č‚Ü‚ˇBƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ プレイヤーと同じLUKによるクリティカル判定をMOBとペットに有効にするかどうかです。
+ このクリティカルはもちろん必中なので、onにすると高Fleeでも、
+ LUKの高い敵の攻撃が避けづらくなります。デフォルトはnoです。
enemy_critical_rate
- ƒ‚ƒ“ƒXƒ^[‚Ćƒyƒbƒg‚ĚƒNƒŠƒeƒBƒJƒ‹•p“x‚Ě•S•Ş—Ś‚Ĺ‚ˇBenemy_critical‚Şyes‚ś‚á‚Č‚˘‚Ɛݒ肾‚Ä‚ŕ‰˝‚ĚˆÓ–Ą‚ŕ‚ ‚č‚Ü‚š‚ńBƒfƒtƒHƒ‹ƒg‚Í100‚Ĺ‚ˇB
+ モンスターとペットのクリティカル頻度の百分率です。enemy_criticalがyesじゃないと設定しても何の意味もありません。デフォルトは100です。
enemy_str
- ƒ‚ƒ“ƒXƒ^[‚Ě‚ŞUŒ‚‚ˇ‚é‚Ć‚Ť‚ĚATKŒvŽZ‚ÉSTR‚đŽg—p‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íyes‚Ĺ‚ˇB
+ モンスターのが攻撃するときのATK計算にSTRを使用するかどうかです。
+ デフォルトはyesです。
enemy_perfect_flee
- “G‚ŞŠŽ‘S‰ń”đ‚đ‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB‚ą‚ę‚đyes‚É‚ˇ‚é‚Ć“G‚੮‘S‰ń”đ‚đ
- ‚ˇ‚é‚悤‚É‚Č‚č‚Ü‚ˇBƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ 敵が完全回避をするかどうかです。これをyesにすると敵も完全回避を
+ するようになります。デフォルトはnoです。
casting_rate
- ƒXƒLƒ‹‚̉rĽŽžŠÔ‚đ•S•Ş—Ś‚Ĺ’˛Ž‚ľ‚Ü‚ˇB
- 200‚É‚ˇ‚é‚ƉrĽŽžŠÔ‚Ş”{‚É‚Č‚čA0‚É‚ˇ‚é‚ƉrĽ‚Ş‚Č‚­‚Č‚č‚Ü‚ˇB
- 0-1000’ö“x‚̐”’l‚đŽw’č‚ľ‚Ä‚­‚ž‚ł‚˘BƒfƒtƒHƒ‹ƒg‚Í100‚Ĺ‚ˇB
+ スキルの詠唱時間を百分率で調整します。
+ 200にすると詠唱時間が倍になり、0にすると詠唱がなくなります。
+ 0-1000程度の数値を指定してください。デフォルトは100です。
delay_rate
- ƒXƒLƒ‹Žg—pŒăƒfƒBƒŒƒC‚đ•S•Ş—Ś‚Ĺ’˛Ž‚ľ‚Ü‚ˇB
- 200‚É‚ˇ‚é‚ĆƒfƒBƒŒƒC‚Ş”{‚É‚Č‚čA0‚É‚ˇ‚é‚ĆƒfƒBƒŒƒC‚Ş‚Č‚­‚Č‚č‚Ü‚ˇB
- 0-1000’ö“x‚̐”’l‚đŽw’č‚ľ‚Ä‚­‚ž‚ł‚˘BƒfƒtƒHƒ‹ƒg‚Í100‚Ĺ‚ˇB
+ スキル使用後ディレイを百分率で調整します。
+ 200にするとディレイが倍になり、0にするとディレイがなくなります。
+ 0-1000程度の数値を指定してください。デフォルトは100です。
delay_dependon_dex
- ƒXƒLƒ‹Žg—pŒăƒfƒBƒŒƒC‚މrĽŽžŠÔ‚Ć“Ż‚ś‚悤‚ÉDEX‚ʼne‹ż‚đŽó‚Ż‚é‚Š‚Ç‚¤‚Š‚đ
- Žw’č‚ľ‚Ü‚ˇBƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ スキル使用後ディレイが詠唱時間と同じようにDEXで影響を受けるかどうかを
+ 指定します。デフォルトはnoです。
skill_delay_attack_enable
- ƒXƒLƒ‹ƒfƒBƒŒƒC‚̩ԍUŒ‚‚Ĺ‚Ť‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇByes‚É‚ˇ‚ę‚΃XƒLƒ‹ƒfƒBƒŒƒC‚ĚŠÔƒXƒLƒ‹‚ÍŽg‚Ś‚Č‚˘‚Ż‚ǍUŒ‚‚Í‚Ĺ‚Ť‚Ü‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ スキルディレイの間攻撃できるかどうかです。yesにすればスキルディレイの間スキルは使えないけど攻撃はできます。
+ デフォルトはnoです。
left_cardfix_to_right
- “ń“—Ź‚̍śŽč•Ší‚ĚŽí‘°A‘ŽŤASize‚Ěƒ_ƒ[ƒW•âł‚đ‰EŽč•Ší‚É“K—p‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB‚ą‚ę‚đyes‚É‚ˇ‚é‚ƍśŽč•Ší‚É‚ÍŽí‘°A‘ŽŤASize‚Ěƒ_ƒ[ƒW•âł‚ŞŠ|‚Š‚ç‚Č‚­‚Č‚č‚Ü‚ˇBƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ 二刀流の左手武器の種族、属性、Sizeのダメージ補正を右手武器に適用するかどうかです。これをyesにすると左手武器には種族、属性、Sizeのダメージ補正が掛からなくなります。デフォルトはnoです。
player_skill_add_range
- ƒvƒŒƒCƒ„[‚ĚƒXƒLƒ‹ŽË’ö‚Š‚ç“G‚Ş—Ł‚ę‚˝Žž‚Ç‚ę‚Ž‚炢‚Ě‹——Ł‚Ü‚ĹƒXƒLƒ‹‚đŽg—p‰Â”\‚É‚ˇ‚é‚Š‚đŒˆ‚ß‚Ü‚ˇBƒXƒLƒ‹‚ĚŽË’ö+player_skill_add_range‚Ü‚ĹƒXƒLƒ‹‚Ş“Í‚Ť‚Ü‚ˇBƒfƒtƒHƒ‹ƒg‚Í0‚Ĺ‚ˇ‚ޏ­‚ľ‚Í“ü‚ę‚˝•ű‚Ş‚˘‚˘‚Ĺ‚ˇB
+ プレイヤーのスキル射程から敵が離れた時どれぐらいの距離までスキルを使用可能にするかを決めます。スキルの射程+player_skill_add_rangeまでスキルが届きます。デフォルトは0ですが少しは入れた方がいいです。
skill_out_range_consume
- ƒXƒLƒ‹‚ĚŽË’ö‚Š‚ç“G‚Ş—Ł‚ę‚ăXƒLƒ‹‚ŞŽ¸”s‚ľ‚˝ŽžSP‚âƒAƒCƒeƒ€‚đÁ–Ő‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇBƒfƒtƒHƒ‹ƒg‚Íyes‚Ĺ‚ˇB
+ スキルの射程から敵が離れてスキルが失敗した時SPやアイテムを消耗するかどうかです。デフォルトはyesです。
monster_skill_add_range
- ƒ‚ƒ“ƒXƒ^[‚ĚƒXƒLƒ‹ŽË’ö‚Š‚ç“G‚Ş—Ł‚ę‚˝Žž‚Ç‚ę‚Ž‚炢‚Ě‹——Ł‚Ü‚ĹƒXƒLƒ‹‚đŽg—p‰Â”\‚É‚ˇ‚é‚Š‚đŒˆ‚ß‚Ü‚ˇBƒXƒLƒ‹‚ĚŽË’ö+monster_skill_add_range‚Ü‚ĹƒXƒLƒ‹‚Ş“Í‚Ť‚Ü‚ˇBƒfƒtƒHƒ‹ƒg‚Í0‚Ĺ‚ˇB
+ モンスターのスキル射程から敵が離れた時どれぐらいの距離までスキルを使用可能にするかを決めます。スキルの射程+monster_skill_add_rangeまでスキルが届きます。デフォルトは0です。
player_damage_delay
- ƒvƒŒƒCƒ„[ƒLƒƒƒ‰‚ރ_ƒ[ƒW‚đŽó‚Ż‚˝ŽžˆÚ“Ž‚Ĺ‚Ť‚Č‚˘ƒfƒBƒŒƒC‚đ“ü‚ę‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- yes‚É‚ˇ‚é‚ĆƒCƒ“ƒfƒ…ƒA‚Ĺ‚ŕŽg‚í‚Č‚˘ŒŔ‚čƒ_ƒ[ƒW‚đŽó‚Ż‚˝Žž
- ‚ľ‚΂炭‚Í“Ž‚Ť‚Ü‚š‚ńBƒfƒtƒHƒ‹ƒg‚Íyes‚Ĺ‚ˇB
+ プレイヤーキャラがダメージを受けた時移動できないディレイを入れるかどうかです。
+ yesにするとインデュアでも使わない限りダメージを受けた時
+ しばらくは動きません。デフォルトはyesです。
player_damage_delay_rate
- ƒvƒŒƒCƒ„[ƒLƒƒƒ‰‚ރ_ƒ[ƒW‚đŽó‚Ż‚˝ŽžˆÚ“Ž‚Ĺ‚Ť‚Č‚˘ƒfƒBƒŒƒC‚đ•S•Ş—Ś‚Ĺ’˛Ž‚ľ‚Ü‚ˇB
- 200‚É‚ˇ‚é‚ĆƒfƒBƒŒƒC‚Ş”{‚É‚Č‚čA0‚É‚ˇ‚é‚ĆƒfƒBƒŒƒC‚Ş‚Č‚­‚Č‚č‚Ü‚ˇB
- player_damage_delay‚Şyes‚É‚ľ‚Ä‚Č‚˘‚ĆˆÓ–Ą‚Ş‚ ‚č‚Ü‚š‚ńB
- ƒfƒtƒHƒ‹ƒg‚Í100‚Ĺ‚ˇB
+ プレイヤーキャラがダメージを受けた時移動できないディレイを百分率で調整します。
+ 200にするとディレイが倍になり、0にするとディレイがなくなります。
+ player_damage_delayがyesにしてないと意味がありません。
+ デフォルトは100です。
defunit_not_enemy
- –hŒäƒ†ƒjƒbƒgiƒZƒCƒtƒeƒBƒEƒH[ƒ‹/ƒjƒ…[ƒ}‚Ȃǁj‚ŞMOB‚ÉŒř‰Ę‚đ
- ‹y‚Ú‚ł‚Č‚˘‚悤‚É‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇBƒfƒtƒHƒ‹ƒg‚Íyes‚Ĺ‚ˇB
+ 防御ユニット(セイフティウォール/ニューマなど)がMOBに効果を
+ 及ぼさないようにするかどうかです。デフォルトはyesです。
random_monster_checklv
- ƒ‚ƒ“ƒXƒ^[˘ŠŇƒAƒCƒeƒ€‚đŽg‚Á‚˝‚Ć‚Ť‚ÉŽŠ•Ş‚ć‚čLV‚̍‚‚˘ƒ‚ƒ“ƒXƒ^[‚đ˘ŠŇ‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- yes‚É‚ˇ‚é‚ƁAŽŠ•Ş‚ć‚čLV‚̍‚‚˘ƒ‚ƒ“ƒXƒ^[‚đ˘ŠŇ‚ľ‚Č‚˘‚悤‚É‚Č‚č‚Ü‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íyes‚Ĺ‚ˇB
+ モンスター召還アイテムを使ったときに自分よりLVの高いモンスターを召還するかどうかです。
+ yesにすると、自分よりLVの高いモンスターを召還しないようになります。
+ デフォルトはyesです。
attribute_recover
- ‘ŽŤ‚É‚ć‚Á‚čUŒ‚‚ł‚ę‚Ä‚ŕ‰ń•œ‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇBno‚Ěę‡‚Í-‘ŽŤ‚đ
- 0‚É‚ľ‚Ü‚ˇBƒfƒtƒHƒ‹ƒg‚Íyes‚Ĺ‚ˇB
+ 属性によって攻撃されても回復するかどうかです。noの場合は-属性を
+ 0にします。デフォルトはyesです。
item_auto_get
- ƒAƒCƒeƒ€ŽŠ“ŽŽć“ž‹@”\‚đŽg—p‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- yes‚É‚ˇ‚é‚ĆƒAƒCƒeƒ€ƒhƒƒbƒv‚đƒ‚ƒ“ƒXƒ^[‚Ɉę”Ô‘˝‚­ƒ_ƒ[ƒW‚đ—^‚Ś‚˝ƒLƒƒƒ‰‚Ş
- ŽŠ“Ž‚ĹƒAƒCƒeƒ€‚đŽć“ž‚ˇ‚é‚悤‚É‚Č‚č‚Ü‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ アイテム自動取得機能を使用するかどうかです。
+ yesにするとアイテムドロップをモンスターに一番多くダメージを与えたキャラが
+ 自動でアイテムを取得するようになります。
+ デフォルトはnoです。
flooritem_lifetime
- °‚É—Ž‚ż‚˝ƒAƒCƒeƒ€‚ޏÁ‚Ś‚é‚Ü‚Ĺ‚Š‚Š‚鎞ŠÔ‚Ĺ‚ˇB’PˆĘ‚Íms(ƒ~ƒŠ•b)‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í60000(60•b)‚ōŏŹ‚Í1000(1•b)‚Ĺ‚ˇB1000–˘–ž‚Č‚çƒfƒtƒHƒ‹ƒg‚ɃZƒbƒg‚ł‚ę‚Ü‚ˇB
+ 床に落ちたアイテムが消えるまでかかる時間です。単位はms(ミリ秒)です。
+ デフォルトは60000(60秒)で最小は1000(1秒)です。1000未満ならデフォルトにセットされます。
item_first_get_time
- ƒ‚ƒ“ƒXƒ^[‚Ɉę”Ôƒ_ƒ[ƒW‚đ‘˝‚­—^‚Ś‚˝ƒLƒƒƒ‰ˆČŠO‚Ş‚ť‚Ěƒ‚ƒ“ƒXƒ^[‚Ě
- ƒhƒƒbƒvƒAƒCƒeƒ€‚đŽć‚ę‚é‚悤‚É‚Č‚é‚Ü‚Ĺ‚ĚŽžŠÔ‚Ĺ‚ˇB
- ’PˆĘ‚Íms(ƒ~ƒŠ•b)‚Ĺ‚ˇBƒfƒtƒHƒ‹ƒg‚Í10000(10•b)‚Ĺ‚ˇB
+ モンスターに一番ダメージを多く与えたキャラ以外がそのモンスターの
+ ドロップアイテムを取れるようになるまでの時間です。
+ 単位はms(ミリ秒)です。デフォルトは10000(10秒)です。
item_second_get_time
- item_first_get_time‚ĚŒăƒ‚ƒ“ƒXƒ^[‚É“ń”ԖڂɃ_ƒ[ƒW‚đ‘˝‚­—^‚Ś‚˝
- ƒLƒƒƒ‰ˆČŠO‚Ş‚ť‚Ěƒ‚ƒ“ƒXƒ^[‚ĚƒhƒƒbƒvƒAƒCƒeƒ€‚đŽć‚ę‚é‚悤‚É‚Č‚é‚Ü‚Ĺ‚Ě
- ŽžŠÔ‚Ĺ‚ˇB’PˆĘ‚Íms(ƒ~ƒŠ•b)‚Ĺ‚ˇBƒfƒtƒHƒ‹ƒg‚Í7000(7•b)‚Ĺ‚ˇB
+ item_first_get_timeの後モンスターに二番目にダメージを多く与えた
+ キャラ以外がそのモンスターのドロップアイテムを取れるようになるまでの
+ 時間です。単位はms(ミリ秒)です。デフォルトは7000(7秒)です。
item_third_get_time
- item_second_get_time‚ĚŒăƒ‚ƒ“ƒXƒ^[‚ÉŽO”ԖڂɃ_ƒ[ƒW‚đ‘˝‚­—^‚Ś‚˝
- ƒƒƒ‰ˆČŠO‚Ş‚ť‚Ěƒ‚ƒ“ƒXƒ^[‚ĚƒhƒƒbƒvƒAƒCƒeƒ€‚đŽć‚ę‚é‚悤‚É‚Č‚é‚Ü‚Ĺ‚Ě
- ŽžŠÔ‚Ĺ‚ˇB’PˆĘ‚Íms(ƒ~ƒŠ•b)‚Ĺ‚ˇBƒfƒtƒHƒ‹ƒg‚Í5000(5•b)‚Ĺ‚ˇB
+ item_second_get_timeの後モンスターに三番目にダメージを多く与えた
+ ャラ以外がそのモンスターのドロップアイテムを取れるようになるまでの
+ 時間です。単位はms(ミリ秒)です。デフォルトは5000(5秒)です。
mvp_item_first_get_time
- ƒ‚ƒ“ƒXƒ^[‚Ɉę”Ôƒ_ƒ[ƒW‚đ‘˝‚­—^‚Ś‚˝ƒLƒƒƒ‰ˆČŠO‚Ş‚ť‚Ěƒ‚ƒ“ƒXƒ^[‚Ě
- MVPƒAƒCƒeƒ€‚đŽć‚ę‚é‚悤‚É‚Č‚é‚Ü‚Ĺ‚ĚŽžŠÔ‚Ĺ‚ˇB
- ’PˆĘ‚Íms(ƒ~ƒŠ•b)‚Ĺ‚ˇBƒfƒtƒHƒ‹ƒg‚Í10000(10•b)‚Ĺ‚ˇB
+ モンスターに一番ダメージを多く与えたキャラ以外がそのモンスターの
+ MVPアイテムを取れるようになるまでの時間です。
+ 単位はms(ミリ秒)です。デフォルトは10000(10秒)です。
mvp_item_second_get_time
- mvp_item_first_get_time‚ĚŒăƒ‚ƒ“ƒXƒ^[‚É“ń”ԖڂɃ_ƒ[ƒW‚đ‘˝‚­—^‚Ś‚˝
- ƒLƒƒƒ‰ˆČŠO‚Ş‚ť‚Ěƒ‚ƒ“ƒXƒ^[‚ĚMVPƒAƒCƒeƒ€‚đŽć‚ę‚é‚悤‚É‚Č‚é‚Ü‚Ĺ‚Ě
- ŽžŠÔ‚Ĺ‚ˇB’PˆĘ‚Íms(ƒ~ƒŠ•b)‚Ĺ‚ˇBƒfƒtƒHƒ‹ƒg‚Í10000(10•b)‚Ĺ‚ˇB
+ mvp_item_first_get_timeの後モンスターに二番目にダメージを多く与えた
+ キャラ以外がそのモンスターのMVPアイテムを取れるようになるまでの
+ 時間です。単位はms(ミリ秒)です。デフォルトは10000(10秒)です。
mvp_item_third_get_time
- mvp_item_second_get_time‚ĚŒăƒ‚ƒ“ƒXƒ^[‚ÉŽO”ԖڂɃ_ƒ[ƒW‚đ‘˝‚­—^‚Ś‚˝
- ƒLƒƒƒ‰ˆČŠO‚Ş‚ť‚Ěƒ‚ƒ“ƒXƒ^[‚ĚMVPƒAƒCƒeƒ€‚đŽć‚ę‚é‚悤‚É‚Č‚é‚Ü‚Ĺ‚Ě
- ŽžŠÔ‚Ĺ‚ˇB’PˆĘ‚Íms(ƒ~ƒŠ•b)‚Ĺ‚ˇBƒfƒtƒHƒ‹ƒg‚Í2000(2•b)‚Ĺ‚ˇB
+ mvp_item_second_get_timeの後モンスターに三番目にダメージを多く与えた
+ キャラ以外がそのモンスターのMVPアイテムを取れるようになるまでの
+ 時間です。単位はms(ミリ秒)です。デフォルトは2000(2秒)です。
item_rate
- ƒAƒCƒeƒ€ƒhƒƒbƒv—Ś‚đ•S•Ş—Ś‚Ĺ’˛Ž‚ľ‚Ü‚ˇB
- 0-1000’ö“x‚̐”’l‚đŽw’č‚ľ‚Ä‚­‚ž‚ł‚˘BƒfƒtƒHƒ‹ƒg‚Í100‚Ĺ‚ˇB
+ アイテムドロップ率を百分率で調整します。
+ 0-1000程度の数値を指定してください。デフォルトは100です。
drop_rate0item
- —Ž‰şŠm—Ś0‚ĚƒAƒCƒeƒ€(ˆę•”ƒ‚ƒ“ƒXƒ^[‚É‚¨‚Ż‚郊ƒ“ƒS)‚𗎉ş‚ˇ‚é‚Š‚Ç‚¤‚Š‚̐ݒč‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ 落下確率0のアイテム(一部モンスターにおけるリンゴ)を落下するかどうかの設定です。
+ デフォルトはnoです。
base_exp_rate
- BaseEXP‚̏Š“ž”{—Ś‚đ•S•Ş—Ś‚Ĺ’˛Ž‚ľ‚Ü‚ˇB
- 0-1000’ö“x‚̐”’l‚đŽw’č‚ľ‚Ä‚­‚ž‚ł‚˘BƒfƒtƒHƒ‹ƒg‚Í100‚Ĺ‚ˇB
+ BaseEXPの所得倍率を百分率で調整します。
+ 0-1000程度の数値を指定してください。デフォルトは100です。
job_exp_rate
- JobEXP‚̏Š“ž”{—Ś‚đ•S•Ş—Ś‚Ĺ’˛Ž‚ľ‚Ü‚ˇB
- 0-1000’ö“x‚̐”’l‚đŽw’č‚ľ‚Ä‚­‚ž‚ł‚˘BƒfƒtƒHƒ‹ƒg‚Í100‚Ĺ‚ˇB
+ JobEXPの所得倍率を百分率で調整します。
+ 0-1000程度の数値を指定してください。デフォルトは100です。
death_penalty_type
- ƒfƒXƒyƒiƒ‹ƒeƒB‚Ěƒ^ƒCƒv‚đŒˆ’č‚ľ‚Ü‚ˇB
- 0‚ĹŽ€‚ń‚žŒăƒŠƒXƒ^[ƒg‚ˇ‚鎞‚É“K—p‚ĹŽ‚Á‚Ä‚˘‚éEXP‚Ě—Ę‚Š‚ç”ä—Ś‚Ě•Ş‚đŒ¸‚ç‚ˇŽd—lA1‚ĹŽ€‚ń‚ž’źŒă‚É“K—p‚ĹŽ‚Á‚Ä‚˘‚éEXP‚Ě—Ę‚Š‚ç”ä—Ś‚Ě•Ş‚đŒ¸‚ç‚ˇŽd—l‚Ĺ‚ˇB
- 2‚ĹŽ€‚ń‚žŒăƒŠƒXƒ^[ƒg‚ˇ‚鎞‚É“K—p‚ĹŽŸ‚ĚƒŒƒxƒ‹ƒAƒbƒv‚Ü‚Ĺ‚ĚEXP‚Š‚ç”ä—Ś‚Ě•Ş‚đŒ¸‚ç‚ˇŽd—lA3‚ĹŽ€‚ń‚ž’źŒă‚É“K—p‚ĹŽŸ‚ĚƒŒƒxƒ‹ƒAƒbƒv‚Ü‚Ĺ‚ĚEXP‚Š‚ç”ä—Ś‚Ě•Ş‚đŒ¸‚ç‚ˇŽd—l‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í0‚Ĺ‚ˇB
+ デスペナルティのタイプを決定します。
+ 0で死んだ後リスタートする時に適用で持っているEXPの量から比率の分を減らす仕様、1で死んだ直後に適用で持っているEXPの量から比率の分を減らす仕様です。
+ 2で死んだ後リスタートする時に適用で次のレベルアップまでのEXPから比率の分を減らす仕様、3で死んだ直後に適用で次のレベルアップまでのEXPから比率の分を減らす仕様です。
+ デフォルトは0です。
death_penalty_base
- ƒfƒXƒyƒiƒ‹ƒeƒB‚É‚ć‚éBASEŒoŒą’lŒ¸­—Ś‚đ•S•Ş—Ś‚Ĺ’˛Ž‚ľ‚Ü‚ˇB
- ‚ ‚Ü‚č’Ⴁ‚Ź‚é’l‚đŽg‚¤‚ĆŒ¸‚č‚Ü‚š‚ńB’PˆĘ‚Í0.01%‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í0‚Ĺ‚ˇB
+ デスペナルティによるBASE経験値減少率を百分率で調整します。
+ あまり低すぎる値を使うと減りません。単位は0.01%です。
+ デフォルトは0です。
death_penalty_job
- ƒfƒXƒyƒiƒ‹ƒeƒB‚É‚ć‚éJOBŒoŒą’lŒ¸­—Ś‚đ•S•Ş—Ś‚Ĺ’˛Ž‚ľ‚Ü‚ˇB
- ‚ ‚Ü‚č’Ⴁ‚Ź‚é’l‚đŽg‚¤‚ĆŒ¸‚č‚Ü‚š‚ńB’PˆĘ‚Í0.01%‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í0‚Ĺ‚ˇB
+ デスペナルティによるJOB経験値減少率を百分率で調整します。
+ あまり低すぎる値を使うと減りません。単位は0.01%です。
+ デフォルトは0です。
zeny_penalty
- Ž€‚ń‚žŽž–ł‚­‚Č‚éƒ[ƒj—ʂ̔䗌‚Ĺ‚ˇB’PˆĘ‚Í0.01%‚Ĺ‚ˇBŽ€‚ń‚žŽž
- Œ¸‚é‚í‚Ż‚Ĺ‚Í‚Č‚­Ž€‚ń‚žŒăƒZ[ƒ”ƒ|ƒCƒ“ƒg‚ɖ߂鎞“K—p‚ł‚ę‚Ü‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í0‚Ĺ‚ˇB
+ 死んだ時無くなるゼニ量の比率です。単位は0.01%です。死んだ時
+ 減るわけではなく死んだ後セーヴポイントに戻る時適用されます。
+ デフォルトは0です。
restart_hp_rate
- ƒŠƒXƒ^[ƒg‚ˇ‚鎞‚ɉń•œ‚ˇ‚éHP”ä—Ś‚đ•S•Ş—Ś‚Ĺ’˛Ž‚ľ‚Ü‚ˇB’PˆĘ‚Í%‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í0‚Ĺ‚ˇB0‚Ěę‡1‰ń•œ‚É‚Č‚č‚Ü‚ˇB
+ リスタートする時に回復するHP比率を百分率で調整します。単位は%です。
+ デフォルトは0です。0の場合1回復になります。
restart_sp_rate
- ƒŠƒXƒ^[ƒg‚ˇ‚鎞‚ɉń•œ‚ˇ‚éSP”ä—Ś‚đ•S•Ş—Ś‚Ĺ’˛Ž‚ľ‚Ü‚ˇB’PˆĘ‚Í%‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í0‚Ĺ‚ˇB0‚Ěę‡‚͉ń•œ‚ľ‚Ü‚š‚ńB
- ‚ť‚ľ‚ÄSP‚Ş”ä—Ś‚ć‚č‚‚˘ę‡‚ŕ‰ń•œ‚ľ‚Ü‚š‚ńB
+ リスタートする時に回復するSP比率を百分率で調整します。単位は%です。
+ デフォルトは0です。0の場合は回復しません。
+ そしてSPが比率より高い場合も回復しません。
mvp_hp_rate
- MVP ƒ‚ƒ“ƒXƒ^[‚ĚHP‚đ•S•Ş—Ś‚Ĺ’˛Ž‚ľ‚Ü‚ˇB
- 0-1000’ö“x‚̐”’l‚đŽw’č‚ľ‚Ä‚­‚ž‚ł‚˘BƒfƒtƒHƒ‹ƒg‚Í100‚Ĺ‚ˇB
+ MVP モンスターのHPを百分率で調整します。
+ 0-1000程度の数値を指定してください。デフォルトは100です。
mvp_item_rate
- MVPƒAƒCƒeƒ€‚̏Š“ž”{—Ś‚đ•S•Ş—Ś‚Ĺ’˛Ž‚ľ‚Ü‚ˇB
- 0-1000’ö“x‚̐”’l‚đŽw’č‚ľ‚Ä‚­‚ž‚ł‚˘BƒfƒtƒHƒ‹ƒg‚Í100‚Ĺ‚ˇB
+ MVPアイテムの所得倍率を百分率で調整します。
+ 0-1000程度の数値を指定してください。デフォルトは100です。
mvp_exp_rate
- MVP EXP‚̏Š“ž”{—Ś‚đ•S•Ş—Ś‚Ĺ’˛Ž‚ľ‚Ü‚ˇB
- 0-1000’ö“x‚̐”’l‚đŽw’č‚ľ‚Ä‚­‚ž‚ł‚˘BƒfƒtƒHƒ‹ƒg‚Í100‚Ĺ‚ˇB
+ MVP EXPの所得倍率を百分率で調整します。
+ 0-1000程度の数値を指定してください。デフォルトは100です。
monster_hp_rate
- MVP ˆČŠO‚Ěƒ‚ƒ“ƒXƒ^[‚ĚHP‚đ•S•Ş—Ś‚Ĺ’˛Ž‚ľ‚Ü‚ˇB
- 0-1000’ö“x‚̐”’l‚đŽw’č‚ľ‚Ä‚­‚ž‚ł‚˘BƒfƒtƒHƒ‹ƒg‚Í100‚Ĺ‚ˇB
+ MVP 以外のモンスターのHPを百分率で調整します。
+ 0-1000程度の数値を指定してください。デフォルトは100です。
monster_max_aspd
- ƒ‚ƒ“ƒXƒ^[‚ĚĹ‘ĺUŒ‚‘Ź“x‚đÝ’č‚ľ‚Ü‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í199‚Ĺ‚ˇBĹ‘ĺ‚Í199‚ōŏŹ‚Í100‚Ĺ‚ˇB
+ モンスターの最大攻撃速度を設定します。
+ デフォルトは199です。最大は199で最小は100です。
atcommand_gm_only
- —ƒRƒ}ƒ“ƒh‚đGMę—p‚É‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇBƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ @コマンドをGM専用にするかどうかです。デフォルトはnoです。
gm_all_skill
- ‘S‚Ä‚ĚƒXƒLƒ‹‚đŠo‚Ś‚ç‚ę‚é‚悤‚É‚ˇ‚éGM‚ĚƒŒƒxƒ‹‚đÝ’č‚ľ‚Ü‚ˇB
- ‚ą‚ę‚đ0ˆČŠO‚É‚ˇ‚é‚ƁA‚ť‚ĚGMƒŒƒxƒ‹ˆČă‚ĚGM‚ÍJOB‚âƒXƒLƒ‹Š“žđŒ‚ÉŠÖŒW‚Č‚­‘SƒXƒLƒ‹‚ŞŠo‚Ś‚ç‚ę‚Ü‚ˇB(ƒNƒFƒXƒgƒXƒLƒ‹‚ŕŠÜ‚ß‚Ä)
- ƒfƒtƒHƒ‹ƒg‚Í 0 ‚Ĺ‚ˇB0‚Ěę‡‚ÍGM‚Ĺ‚Í‚Č‚˘‘S‚Ä‚ĚƒLƒƒƒ‰‚ĚˆÓ–Ą‚Ĺ‚Í‚Č‚­‘S‚Ä‚ĚGM‚Ş‘S‚Ä‚ĚƒXƒLƒ‹‚đŠo‚Ś‚ç‚ę‚Č‚˘‚ĆŒž‚¤‚ą‚Ć‚Ĺ‚ˇB
+ 全てのスキルを覚えられるようにするGMのレベルを設定します。
+ これを0以外にすると、そのGMレベル以上のGMはJOBやスキル所得条件に関係なく全スキルが覚えられます。(クェストスキルも含めて)
+ デフォルトは 0 です。0の場合はGMではない全てのキャラの意味ではなく全てのGMが全てのスキルを覚えられないと言うことです。
gm_all_equipment
- ‘S‚Ä‚Ě‘•”ő•i‚đ‘•”ő‚Ĺ‚Ť‚é‚悤‚É‚ˇ‚éGM‚ĚƒŒƒxƒ‹‚đÝ’č‚ľ‚Ü‚ˇB
- ‚ą‚ę‚đ0ˆČŠO‚É‚ˇ‚é‚ƁA‚ť‚ĚGMƒŒƒxƒ‹ˆČă‚ĚGM‚ÍJOB‚⃌ƒxƒ‹AŤ•Ę‚ÉŠÖŒW‚Č‚­
- ‘S‘•”ő•i‚đ‘•”ő‚Ĺ‚Ť‚é‚悤‚É‚Č‚č‚Ü‚ˇB‚˝‚ž‚ľAƒNƒ‰ƒCƒAƒ“ƒg‘¤‚ĹƒGƒ‰[‚đ
- ‹N‚ą‚ˇ‘g‚ݍ‡‚í‚š‚ŕ‚ ‚é‚ĆŽv‚˘‚Ü‚ˇBƒfƒtƒHƒ‹ƒg‚Í 0 ‚Ĺ‚ˇB
- 0‚Ěę‡‚Í‘S‚Ä‚ĚGM‚Í’ĘíƒvƒŒƒCƒ„[‚Ć“Ż‚ś”ť’č‚Şs‚í‚ę‚Ü‚ˇB
+ 全ての装備品を装備できるようにするGMのレベルを設定します。
+ これを0以外にすると、そのGMレベル以上のGMはJOBやレベル、性別に関係なく
+ 全装備品を装備できるようになります。ただし、クライアント側でエラーを
+ 起こす組み合わせもあると思います。デフォルトは 0 です。
+ 0の場合は全てのGMは通常プレイヤーと同じ判定が行われます。
gm_skill_unconditional
- –łđŒ‚ɃXƒLƒ‹‚đŽg—p‚Ĺ‚Ť‚é‚悤‚É‚ˇ‚éGM‚ĚƒŒƒxƒ‹‚đÝ’č‚ľ‚Ü‚ˇB
- ‚ą‚ę‚đ0ˆČŠO‚É‚ˇ‚é‚ƁA‚ť‚ĚGMƒŒƒxƒ‹ˆČă‚ĚGM‚Í‘•”ő•Ší‚âÁ”ďƒAƒCƒeƒ€‚Ě—L–ł
- ‚Č‚Ç‚ÉŠÖŒW‚Č‚­A‚ť‚ľ‚ĉ˝‚ŕÁ”‚é‚ą‚Ć‚Č‚­ƒXƒLƒ‹‚đŽg—p‚Ĺ‚Ť‚é‚悤‚É
- ‚Č‚č‚Ü‚ˇB”ť’čˆ—‚𖳎‹‚ˇ‚é‚Ě‚Ĺ“Žě‚É•s“s‡‚Ş‚Ĺ‚é‰Â”\Ť‚Ş‚ ‚č‚Ü‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í 0 ‚Ĺ‚ˇB 0‚Ěę‡‚Í‘S‚Ä‚ĚGM‚Í’ĘíƒvƒŒƒCƒ„[‚Ć“Ż‚ś”ť’č‚Ş
- s‚í‚ę‚Ü‚ˇB
+ 無条件にスキルを使用できるようにするGMのレベルを設定します。
+ これを0以外にすると、そのGMレベル以上のGMは装備武器や消費アイテムの有無
+ などに関係なく、そして何も消費することなくスキルを使用できるように
+ なります。判定処理を無視するので動作に不都合がでる可能性があります。
+ デフォルトは 0 です。 0の場合は全てのGMは通常プレイヤーと同じ判定が
+ 行われます。
player_skillfree
- ƒXƒLƒ‹ƒcƒŠ[‚ÉŠÖŒW‚Č‚­ƒXƒLƒ‹‚đă‚°‚é‚ą‚Ć‚Ş‚Ĺ‚Ť‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- ‚ą‚ę‚đyes‚É‚ˇ‚ę‚΃vƒŒƒCƒ„[‚̐E‹Ć‚ŏK‚¤‚ą‚Ć‚Ş‚Ĺ‚Ť‚éƒXƒLƒ‹‘S‚Ä‚đ
- ƒXƒLƒ‹ƒcƒŠ[‚ÉŠÖŒW‚Č‚­ă‚°‚é‚ą‚Ć‚Ş‚Ĺ‚Ť‚Ü‚ˇBƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ スキルツリーに関係なくスキルを上げることができるかどうかです。
+ これをyesにすればプレイヤーの職業で習うことができるスキル全てを
+ スキルツリーに関係なく上げることができます。デフォルトはnoです。
player_skillup_limit
- ƒXƒLƒ‹ƒŠƒZƒbƒg“™‚đ‚ľ‚˝ŽžƒXƒLƒ‹‚đ§ŒŔ‚Č‚ľ‚Éă‚°‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- ‚ą‚ę‚đyes‚É‚ˇ‚ę‚ÎŽn‚ß‚ĚƒXƒLƒ‹ƒ|ƒCƒ“ƒg9‚‚̓m[ƒrƒX‚ŏK‚¤ƒXƒLƒ‹‚É‚ľ‚Š
- Žg‚Ś‚Ü‚š‚ńB‚ť‚ľ‚Ä‚ť‚ĚŒă‚Ě39‚Í1ŽŸE‹Ć‚ŏK‚¤•¨‚É‚ž‚ŻŽg‚Ś‚Ä‚ť‚ĚŒă‚Ě
- ƒ|ƒCƒ“ƒg‚ÍŽŠ—R‚ÉŽg‚¤‚ą‚Ć‚Ş‚Ĺ‚Ť‚Ü‚ˇBƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ スキルリセット等をした時スキルを制限なしに上げるかどうかです。
+ これをyesにすれば始めのスキルポイント9つはノービスで習うスキルにしか
+ 使えません。そしてその後の39は1次職業で習う物にだけ使えてその後の
+ ポイントは自由に使うことができます。デフォルトはnoです。
weapon_produce_rate
- •Šíť‘˘ƒXƒLƒ‹‚ł̐ť‘˘ŹŒ÷—Ś‚đ•S•Ş—Ś‚Ĺ’˛Ž‚ľ‚Ü‚ˇB
- 0-1000’ö“x‚̐”’l‚đŽw’č‚ľ‚Ä‚­‚ž‚ł‚˘BƒfƒtƒHƒ‹ƒg‚Í100‚Ĺ‚ˇB
+ 武器製造スキルでの製造成功率を百分率で調整します。
+ 0-1000程度の数値を指定してください。デフォルトは100です。
potion_produce_rate
- ƒ|[ƒVƒ‡ƒ“ť‘˘ƒXƒLƒ‹‚ł̐ť‘˘ŹŒ÷—Ś‚đ•S•Ş—Ś‚Ĺ’˛Ž‚ľ‚Ü‚ˇB
- 0-1000’ö“x‚̐”’l‚đŽw’č‚ľ‚Ä‚­‚ž‚ł‚˘BƒfƒtƒHƒ‹ƒg‚Í100‚Ĺ‚ˇB
+ ポーション製造スキルでの製造成功率を百分率で調整します。
+ 0-1000程度の数値を指定してください。デフォルトは100です。
monster_active_enable
- ćUƒ‚ƒ“ƒXƒ^[‚đćU‚É‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB‚ą‚ę‚đno‚É‚ˇ‚é‚Ć
- ćUƒ‚ƒ“ƒXƒ^[‚Ş”ńćU‚É‚Č‚č‚Ü‚ˇBƒfƒtƒHƒ‹ƒg‚Íyes‚Ĺ‚ˇB
+ 先攻モンスターを先攻にするかどうかです。これをnoにすると
+ 先攻モンスターが非先攻になります。デフォルトはyesです。
monster_damage_delay_rate
- ƒ‚ƒ“ƒXƒ^[‚ރ_ƒ[ƒW‚đŽó‚Ż‚˝ŽžˆÚ“Ž‚Ĺ‚Ť‚Č‚˘ƒfƒBƒŒƒC‚đ•S•Ş—Ś‚Ĺ’˛Ž‚ľ‚Ü‚ˇB
- 200‚É‚ˇ‚é‚ĆƒfƒBƒŒƒC‚Ş”{‚É‚Č‚čA0‚É‚ˇ‚é‚ĆƒfƒBƒŒƒC‚Ş‚Č‚­‚Č‚č‚Ü‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í100‚Ĺ‚ˇB
+ モンスターがダメージを受けた時移動できないディレイを百分率で調整します。
+ 200にするとディレイが倍になり、0にするとディレイがなくなります。
+ デフォルトは100です。
monster_loot_type
- ƒ‹[ƒgƒ‚ƒ“ƒXƒ^[‚̍s“Ž‚ĚŽd•ű‚đŽw’č‚ľ‚Ü‚ˇB
- 0‚Ěę‡‚ÍLOOTITEM_SIZE‚Ü‚ĹƒAƒCƒeƒ€‚đH‚ׂĂŕ‚Ü‚˝ƒAƒCƒeƒ€‚đH‚ׂāA
- ‘O‚ĚƒAƒCƒeƒ€‚ޏÁ‚Ś‚éŽd—lB1‚Ěę‡‚ÍLOOTITEM_SIZE‚Ü‚ĹƒAƒCƒeƒ€‚đH‚ׂé‚Ć
- ‚ŕ‚¤ƒAƒCƒeƒ€‚đH‚ׂȂ­‚Č‚éŽd—lBƒfƒtƒHƒ‹ƒg‚Í0‚Ĺ‚ˇB
+ ルートモンスターの行動の仕方を指定します。
+ 0の場合はLOOTITEM_SIZEまでアイテムを食べてもまたアイテムを食べて、
+ 前のアイテムが消える仕様。1の場合はLOOTITEM_SIZEまでアイテムを食べると
+ もうアイテムを食べなくなる仕様。デフォルトは0です。
mob_skill_use
- MOB‚ރXƒLƒ‹‚đŽg‚Á‚Ä‚­‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇBƒfƒtƒHƒ‹ƒg‚Íyes‚Ĺ‚ˇB
+ MOBがスキルを使ってくるかどうかです。デフォルトはyesです。
mob_count_rate
- map_athena.conf‚ĹŽw’č‚ł‚ę‚˝npcƒf[ƒ^‚đ“ǂݍž‚ލہA
- monster‚Ĺ’č‹`‚ł‚ę‚˝”z’uMOB‚̐”‚đ•S•Ş—Ś‚Ĺ’˛Ž‚ľ‚Ü‚ˇB
- —áŠO‚Ć‚ľ‚āA”z’u”1‚Ć‚ľ‚Ä’č‹`‚ł‚ę‚˝MOB‚̐”‚Í•Ď‚í‚č‚Ü‚š‚ńB(BOSS‘΍ô)
- ‚Ü‚˝A”z’u”‚đ‰ş•űCł‚ľ‚˝‚Ć‚ŤA1–˘–ž‚É‚Č‚Á‚˝ę‡‚Í1‚Ć‚ľ‚ďˆ—‚ľ‚Ü‚ˇB
- 0-1000’ö“x‚ĹŽw’č‚ľ‚Ä‚­‚ž‚ł‚˘BƒfƒtƒHƒ‹ƒg‚Í100‚Ĺ‚ˇB
+ map_athena.confで指定されたnpcデータを読み込む際、
+ monsterで定義された配置MOBの数を百分率で調整します。
+ 例外として、配置数1として定義されたMOBの数は変わりません。(BOSS対策)
+ また、配置数を下方修正したとき、1未満になった場合は1として処理します。
+ 0-1000程度で指定してください。デフォルトは100です。
quest_skill_learn
- ƒNƒFƒXƒgƒXƒLƒ‹‚đ•’Ę‚ÉK“ž‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- ‚ą‚ę‚đyes‚É‚ˇ‚é‚ĆƒNƒFƒXƒgƒXƒLƒ‹‚Ş•’Ę‚É•\ŽŚ‚ł‚ę‚ăXƒLƒ‹ƒ|ƒCƒ“ƒg‚đŽg‚Á‚ďK“ž‚ˇ‚é‚ą‚Ć‚Ş‚Ĺ‚Ť‚Ü‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í no‚Ĺ‚ˇB
+ クェストスキルを普通に習得するかどうかです。
+ これをyesにするとクェストスキルが普通に表示されてスキルポイントを使って習得することができます。
+ デフォルトは noです。
quest_skill_reset
- ƒXƒLƒ‹‚đƒŠƒZƒbƒg‚ˇ‚鎞ƒNƒFƒXƒgƒXƒLƒ‹‚đƒŠƒZƒbƒg‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íyes‚Ĺ‚ˇB
- no‚É‚ľ‚Ä‚ŕquest_skill_learn‚đyes‚É‚ˇ‚ę‚΃ŠƒZƒbƒg‚ł‚ę‚Ü‚ˇB
+ スキルをリセットする時クェストスキルをリセットするかどうかです。
+ デフォルトはyesです。
+ noにしてもquest_skill_learnをyesにすればリセットされます。
basic_skill_check
- Ŕ‚čAŒđŠˇAƒp[ƒeƒBŒ‹ŹAƒ`ƒƒƒbƒgƒ‹[ƒ€ě‚č“™‚ĚŽžŠî–{ƒXƒLƒ‹‚đƒ`ƒFƒbƒN‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- ‚ą‚ę‚đno‚É‚ˇ‚ę‚΍Ŕ‚čAŒđŠˇ“™‚ĚŠî–{ƒXƒLƒ‹‚Ş•K—v‚ȍs“Ž‚đŠî–{ƒXƒLƒ‹‚ÉŠÖŒW‚Č‚­Žg‚¤‚ą‚Ć‚Ş‚Ĺ‚Ť‚Ü‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í yes‚Ĺ‚ˇB
+ 座り、交換、パーティ結成、チャットルーム作り等の時基本スキルをチェックするかどうかです。
+ これをnoにすれば座り、交換等の基本スキルが必要な行動を基本スキルに関係なく使うことができます。
+ デフォルトは yesです。
guild_emperium_check
- ƒMƒ‹ƒh‚đě‚鎞ƒGƒ“ƒyƒŠƒEƒ€‚đÁ”‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB‚ą‚ę‚đno‚É‚ˇ‚ę‚Î
- ƒGƒ“ƒyƒŠƒEƒ€‚Č‚ľ‚Ĺ‚ŕƒMƒ‹ƒh‚ލě‚ę‚Ü‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í yes‚Ĺ‚ˇB
+ ギルドを作る時エンペリウムを消費するかどうかです。これをnoにすれば
+ エンペリウムなしでもギルドが作れます。
+ デフォルトは yesです。
guild_exp_limit
- ƒMƒ‹ƒh‚Ě–đE‚ɐݒč‚Ĺ‚Ť‚éă”[ŒoŒą’l‚ĚŠ„‡‚̏ăŒŔ‚đÝ’č‚Ĺ‚Ť‚Ü‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í50(%)‚Ĺ‚ˇB
+ ギルドの役職に設定できる上納経験値の割合の上限を設定できます。
+ デフォルトは50(%)です。
player_invincible_time
- ƒ}ƒbƒvˆÚ“Ž‚âƒeƒŒƒ|[ƒgA•œŠˆ‚ľ‚˝Žž‚Ě–ł“GŽžŠÔ‚đÝ’č‚ľ‚Ü‚ˇB’PˆÍ‚Í
- ms(ƒ~ƒŠ•b)BˆÚ“ŽAUŒ‚s“ŽAƒXƒLƒ‹Žg—pAƒAƒCƒeƒ€Žg—p‚đ‚ˇ‚é‚Ć‚ą‚Ě
- ŽžŠÔ‚Í‚Č‚­‚Č‚éB(ƒV[ƒYƒ‚[ƒh‚Ĺ‚ÍŽžŠÔ‚đ2”{‚É‚ľ‚Ä“K—p)
- ƒfƒtƒHƒ‹ƒg‚Í5000(5•b)‚Ĺ‚ˇB
+ マップ移動やテレポート、復活した時の無敵時間を設定します。単囲は
+ ms(ミリ秒)。移動、攻撃行動、スキル使用、アイテム使用をするとこの
+ 時間はなくなる。(シーズモードでは時間を2倍にして適用)
+ デフォルトは5000(5秒)です。
pet_catch_rate
- ƒyƒbƒg‚̕ߊl”{—Ś‚đ•S•Ş—Ś‚Őݒ肾‚Ü‚ˇB
- 0-1000’ö“x‚̐”’l‚đŽw’č‚ľ‚Ä‚­‚ž‚ł‚˘BƒfƒtƒHƒ‹ƒg‚Í100‚Ĺ‚ˇB
+ ペットの捕獲倍率を百分率で設定します。
+ 0-1000程度の数値を指定してください。デフォルトは100です。
pet_rename
- ƒyƒbƒg‚Ě–ź‘O‚đ•ĎX‚ˇ‚é‚Š‚Ç‚¤‚Š‚đŒˆ‚ß‚Ü‚ˇBƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
- yes‚͉˝“x‚Ĺ‚ŕ–ź‘O‚Ě•ĎX‚މ”\Bno‚͈ę“x•ĎX‚ˇ‚é‚Ć‚ŕ‚¤•ĎX•s‰Â”\‚É‚Č‚éB
+ ペットの名前を変更するかどうかを決めます。デフォルトはnoです。
+ yesは何度でも名前の変更が可能。noは一度変更するともう変更不可能になる。
pet_friendly_rate
- ƒyƒbƒg‚ɉa‚đ‚ ‚°‚˝Žžă‚Ş‚ée–§“x‚Ě”{—Ś‚Ĺ‚ˇB
- e–§“x‚ŞŒ¸‚éę‡‚Í“K—p‚ł‚ę‚Ü‚š‚ńBƒfƒtƒHƒ‹ƒg‚Í100‚Ĺ‚ˇB
+ ペットに餌をあげた時上がる親密度の倍率です。
+ 親密度が減る場合は適用されません。デフォルトは100です。
pet_hungry_delay_rate
- ƒyƒbƒg‚Ě• ‚ŞŒ¸‚鎞ŠÔ‚Ě”{—Ś‚Ĺ‚ˇB
- ”{—Ś‚ލ‚‚˘‚Ć• ‚ŞŒ¸‚č“ď‚­‚Č‚č‚Ü‚ˇBƒfƒtƒHƒ‹ƒg‚Í100‚Ĺ‚ˇB
+ ペットの腹が減る時間の倍率です。
+ 倍率が高いと腹が減り難くなります。デフォルトは100です。
pet_hungry_friendly_decrease
- ƒyƒbƒg‚Ě• ‚ŞŠŽ‘S‚ÉŒ¸‚Á‚˝ŽžŒ¸‚ée–§“x‚Ě—Ę‚Ĺ‚ˇBƒfƒtƒHƒ‹ƒg‚Í5‚Ĺ‚ˇB
+ ペットの腹が完全に減った時減る親密度の量です。デフォルトは5です。
pet_str
- ƒyƒbƒg‚ĚATKŒvŽZ‚ÉSTR‚đ“K—p‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íyes‚Ĺ‚ˇB
+ ペットのATK計算にSTRを適用するかどうかです。
+ デフォルトはyesです。
pet_status_support
- ƒyƒbƒg‚É‚ć‚éƒXƒe[ƒ^ƒXƒ{[ƒiƒX‚đ“K—p‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇByes‚É‚ˇ‚é‚Ć
- ƒyƒbƒg‚đŽ‚Á‚Ă鎞ƒyƒbƒg–ˆ‚ɐݒ肳‚ę‚Ä‚˘‚éƒXƒe[ƒ^ƒXƒ{[ƒiƒX‚Ş
- •t‚Ť‚Ü‚ˇBƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ ペットによるステータスボーナスを適用するかどうかです。yesにすると
+ ペットを持ってる時ペット毎に設定されているステータスボーナスが
+ 付きます。デフォルトはnoです。
pet_attack_support
pet_damage_support
- Žĺl‚ރ‚ƒ“ƒXƒ^[‚Ƀ_ƒ[ƒW‚đ—^‚Ś‚˝‚Ć‚ŤAŽó‚Ż‚˝‚Ć‚Ť‚É
- ƒyƒbƒg‚ŞŽx‰‡UŒ‚‚đ‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇByes‚É‚ˇ‚é‚Ćƒyƒbƒg‚̐e–§“x‚Ş
- ‚Ť‚í‚߂Đe‚ľ‚˘‚ĚŽž‚ž‚ŻŽx‰‡UŒ‚‚đ‚ľ‚Ä‚­‚ę‚Ü‚ˇBƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ 主人がモンスターにダメージを与えたとき、受けたときに
+ ペットが支援攻撃をするかどうかです。yesにするとペットの親密度が
+ きわめて親しいの時だけ支援攻撃をしてくれます。デフォルトはnoです。
pet_support_rate
- ƒyƒbƒg‚ĚŽx‰‡UŒ‚Šm—Ś‚Ě”{—Ś‚Ĺ‚ˇBi100‚Ĺ’ĘíA200‚Ĺ”{‚Ĺ‚ˇ)
- ”{—Ś‚ލ‚‚˘‚ĆŽx‰‡UŒ‚‚ć‚­‚ľ‚Ä‚­‚ę‚é‚悤‚É‚Č‚č‚Ü‚ˇBƒfƒtƒHƒ‹ƒg‚Í100‚Ĺ‚ˇB
+ ペットの支援攻撃確率の倍率です。(100で通常、200で倍です)
+ 倍率が高いと支援攻撃よくしてくれるようになります。デフォルトは100です。
pet_attack_exp_to_master
- ƒyƒbƒg‚Ş—^‚Ś‚˝ƒ_ƒ[ƒW‚Ě•Ş‚ĚŒoŒą’l‚đŽĺl‚ŞŽű“ž‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- ‚ą‚ę‚đyes‚É‚ˇ‚é‚Ćƒyƒbƒg‚̍UŒ‚‚É‚ć‚éƒ_ƒ[ƒW‚ŕŽĺl‚Ş—^‚Ś‚˝•¨‚É‚Č‚č
- Žĺl‚ŞŒoŒą’l‚đŽű“ž‚ˇ‚é‚ą‚Ć‚Ş‚Ĺ‚Ť‚Ü‚ˇBƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ ペットが与えたダメージの分の経験値を主人が収得するかどうかです。
+ これをyesにするとペットの攻撃によるダメージも主人が与えた物になり
+ 主人が経験値を収得することができます。デフォルトはnoです。
pet_attack_exp_rate
- ƒyƒbƒg‚Ş—^‚Ś‚˝ƒ_ƒ[ƒW‚Ě•Ş‚ĚŒoŒą’l‚đŽĺl‚ŞŽű“ž‚ˇ‚鎞‚Ě”{—Ś‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í100‚Ĺ‚ˇB
+ ペットが与えたダメージの分の経験値を主人が収得する時の倍率です。
+ デフォルトは100です。
pet_lootitem
- ƒyƒbƒg‚ރAƒCƒeƒ€‚đƒ‹[ƒg‚ˇ‚é‚Š‚Ç‚¤‚Š‚̐ݒč‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ ペットがアイテムをルートするかどうかの設定です。
+ デフォルトはnoです。
pet_weight
- ƒyƒbƒg‚Ƀ‹[ƒg‚ł‚š‚é‚Ć‚Ť‚̏d—ʐ§ŒŔ‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í1000‚Ĺ‚ˇB
+ ペットにルートさせるときの重量制限です。
+ デフォルトは1000です。
skill_min_damage
- ƒXƒLƒ‹‚đŽg‚Á‚˝Žžƒ_ƒ[ƒW‚ޘA‘Ő”‚ć‚č–˘–ž‚Ěę‡‘S‚ă~ƒX‚É‚Č‚é‚Š1ƒ_ƒ[ƒW‚É‚Č‚é‚Š‚đŒˆ’č‚ľ‚Ü‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ スキルを使った時ダメージが連打数より未満の場合全てミスになるか1ダメージになるかを決定します。
+ デフォルトはnoです。
finger_offensive_type
- ƒXƒLƒ‹Žw’e‚Ě•\ŽŚƒ^ƒCƒv‚đŒˆ’č‚ľ‚Ü‚ˇB
- 0‚Í–{ƒT[ƒo[Žd—l‚Ĺ1‚̓AƒeƒiŽd—l‚Ĺ‚ˇBƒfƒtƒHƒ‹ƒg‚Í0‚Ĺ‚ˇB
+ スキル指弾の表示タイプを決定します。
+ 0は本サーバー仕様で1はアテナ仕様です。デフォルトは0です。
heal_exp
- ƒXƒLƒ‹uƒq[ƒ‹v‚đŽg‚Á‚˝Ű‚É‚ŕ‚ç‚Ś‚éƒWƒ‡ƒuŒoŒą’l—ʂ̐ݒč‚Ĺ‚ˇB
- 100‚ʼnń•œ‚ľ‚˝—Ę‚Ć“Ż—Ę‚É‚Č‚č‚Ü‚ˇB
- ƒ‚ƒ“ƒXƒ^[‚ĚŒoŒą’l‚đ•ĎX‚ľ‚Ä‚Č‚˘ę‡‚Í5`10’ö“x‚Ş“K“–‚ž‚ĆŽv‚í‚ę‚Ü‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í0‚Ĺ‚ˇB
+ スキル「ヒール」を使った際にもらえるジョブ経験値量の設定です。
+ 100で回復した量と同量になります。
+ モンスターの経験値を変更してない場合は5〜10程度が適当だと思われます。
+ デフォルトは0です。
resurrection_exp
- ƒXƒLƒ‹uƒŠƒUƒŒƒNƒVƒ‡ƒ“v‚đŽg‚Á‚˝Ű‚É‚ŕ‚ç‚Ś‚éŒoŒą’l—ʂ̐ݒč‚Ĺ‚ˇB
- ’PˆĘ‚Í0.01%‚Ĺ‚ˇB•œŠˆ‚ľ‚˝ƒvƒŒƒCƒ„[‚ŞŽ‚Á‚Ä‚˘‚éŒoŒą’l * ƒŒƒxƒ‹ˇ/100 * resurrection_exp/10000 •Ş‚ĚŒoŒą‚Ş–á‚Ś‚Ü‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í0‚Ĺ‚ˇB
+ スキル「リザレクション」を使った際にもらえる経験値量の設定です。
+ 単位は0.01%です。復活したプレイヤーが持っている経験値 * レベル差/100 * resurrection_exp/10000 分の経験が貰えます。
+ デフォルトは0です。
shop_exp
- ƒXƒLƒ‹ƒfƒBƒXƒJƒEƒ“ƒg‚ĆƒI[ƒo[ƒ`ƒƒ[ƒW‚đK“ž‚ľ‚Ä‚éę‡NPC—˜—p‹ŕŠz‚ɉž‚ś‚˝JOBŒoŒą’lŠl“ž”{—Ś‚Ĺ‚ˇBi100‚Ĺ’ĘíA200‚Ĺ”{‚É‚Č‚č‚Ü‚ˇj
- ŒvŽZŽŽ‚Íln(‘ă‹ŕ*ƒXƒLƒ‹ƒŒƒxƒ‹) * shop_exp / 100 ‚Ĺ”ƒ‚¤ę‡‚̓fƒBƒXƒJƒEƒ“ƒg‚Ş‚ ‚鎞‚Ě‚Ý“K—p‚Ĺ”„‚éę‡ƒI[ƒo[ƒ`ƒƒ[ƒW‚Ş‚ ‚鎞‚Ě‚Ý“K—p‚ł‚ę‚Ü‚ˇB
- ŒvŽZŽŽ‚Í“K“x‚ɍě‚Á‚˝•¨‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í0‚Ĺ‚ˇB
+ スキルディスカウントとオーバーチャージを習得してる場合NPC利用金額に応じたJOB経験値獲得倍率です。(100で通常、200で倍になります)
+ 計算式はln(代金*スキルレベル) * shop_exp / 100 で買う場合はディスカウントがある時のみ適用で売る場合オーバーチャージがある時のみ適用されます。
+ 計算式は適度に作った物です。
+ デフォルトは0です。
combo_delay_rate
- ƒ‚ƒ“ƒN‚ĚƒRƒ“ƒ{ƒfƒBƒŒƒC‚ĚŽžŠÔ‚Ě”{—Ś‚Ĺ‚ˇBi100‚Ĺ’ĘíA200‚Ĺ”{‚É‚Č‚č‚Ü‚ˇBj
- ‚˝‚ž’ˆÓ‚ˇ‚é‚ׂŤ‚Č‚Ě‚Í‚‚­Ý’股‚é‚Ě‚Ş‚˘‚˘‚ą‚Ć‚Ĺ‚Í‚Č‚˘‚ą‚Ć‚Ĺ‚ˇB
- ƒRƒ“ƒ{ƒfƒBƒŒƒC‚Ş’ˇ‚˘‚ĆƒRƒ“ƒ{‚ĚŒq‚Ź‚Í‚ć‚­‚Č‚č‚Ü‚ˇ‚Ş‚ť‚Ě’ˇ‚­‚Č‚Á‚˝
- ŽžŠÔ‚ĚŠÔ‚Ís“Ž‚Ĺ‚Ť‚Č‚˘‚Š‚ç‚Ĺ‚ˇBƒfƒtƒHƒ‹ƒg‚Í100‚Ĺ‚ˇB
+ モンクのコンボディレイの時間の倍率です。(100で通常、200で倍になります。)
+ ただ注意するべきなのは高く設定するのがいいことではないことです。
+ コンボディレイが長いとコンボの繋ぎはよくなりますがその長くなった
+ 時間の間は行動できないからです。デフォルトは100です。
item_check
- ƒAƒCƒeƒ€‚Ěƒ`ƒFƒbƒN‚đs‚¤‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- ƒƒOƒCƒ“Žž‚Ćƒ}ƒbƒvˆÚ“ŽŽž‚ɏŠŽƒAƒCƒeƒ€‚É•słƒAƒCƒeƒ€‚Ş‚Č‚˘‚Šƒ`ƒFƒbƒN‚ľ‚Ü‚ˇB
- ‚Ü‚˝@item‚Ĺ•słƒAƒCƒeƒ€‚đŠ“ž‚Ĺ‚Ť‚Č‚­‚ľ‚Ü‚ˇB
- ƒfƒoƒO‚âƒAƒCƒeƒ€‚ĚŠm”F‚đs‚¤‚Ć‚Ť‚Č‚Ç‚Íoff‚É‚ľ‚Ä‚­‚ž‚ł‚˘B
- ƒfƒtƒHƒ‹ƒg‚Íon‚Ĺ‚ˇB
+ アイテムのチェックを行うかどうかです。
+ ログイン時とマップ移動時に所持アイテムに不正アイテムがないかチェックします。
+ また@itemで不正アイテムを所得できなくします。
+ デバグやアイテムの確認を行うときなどはoffにしてください。
+ デフォルトはonです。
wedding_modifydisplay
- ƒ^ƒLƒV[ƒh‚ĆƒEƒFƒfƒBƒ“ƒOƒhƒŒƒX‚đ•\ŽŚ‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- Œ‹ĽƒLƒƒƒ‰‚đ•\ŽŚ‚ľ‚˝‚˘ę‡‚Í‚ą‚ę‚đyes‚É‚ľ‚Ä‚­‚ž‚ł‚˘B
- ƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ タキシードとウェディングドレスを表示するかどうかです。
+ 結婚キャラを表示したい場合はこれをyesにしてください。
+ デフォルトはnoです。
natural_healhp_interval
- HP‚ŞŽŠ“Ž‰ń•œ‚ˇ‚é‚Ü‚ĹŠ|‚Š‚鎞ŠÔ‚Ĺ‚ˇB’PˆĘ‚Íms(ƒ~ƒŠ•b)‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í6000‚ĹNATURAL_HEAL_INTERVAL–˘–ž‚É‚ˇ‚é‚ą‚Ć‚Í‚Ĺ‚Ť‚Ü‚š‚ńB
+ HPが自動回復するまで掛かる時間です。単位はms(ミリ秒)です。
+ デフォルトは6000でNATURAL_HEAL_INTERVAL未満にすることはできません。
natural_healsp_interval
- SP‚ŞŽŠ“Ž‰ń•œ‚ˇ‚é‚Ü‚ĹŠ|‚Š‚鎞ŠÔ‚Ĺ‚ˇB’PˆĘ‚Íms(ƒ~ƒŠ•b)‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í8000‚ĹNATURAL_HEAL_INTERVAL–˘–ž‚É‚ˇ‚é‚ą‚Ć‚Í‚Ĺ‚Ť‚Ü‚š‚ńB
+ SPが自動回復するまで掛かる時間です。単位はms(ミリ秒)です。
+ デフォルトは8000でNATURAL_HEAL_INTERVAL未満にすることはできません。
natural_heal_skill_interval
- ƒXƒLƒ‹‚É‚ć‚Á‚ÄŽŠ“Ž‰ń•œ‚ˇ‚éę‡Š|‚Š‚鎞ŠÔ‚Ĺ‚ˇB’PˆĘ‚Íms(ƒ~ƒŠ•b)‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í10000‚ĹNATURAL_HEAL_INTERVAL–˘–ž‚É‚ˇ‚é‚ą‚Ć‚Í‚Ĺ‚Ť‚Ü‚š‚ńB
+ スキルによって自動回復する場合掛かる時間です。単位はms(ミリ秒)です。
+ デフォルトは10000でNATURAL_HEAL_INTERVAL未満にすることはできません。
natural_heal_weight_rate
- ŽŠ“Ž‰ń•œ‚Ş‚Ĺ‚Ť‚Č‚­‚Č‚éd—Ę‚đÝ’č‚ľ‚Ü‚ˇB’PˆĘ‚Í%‚Ĺ‚ˇB
- ĹŹ‚Í50‚ĹĹ‘ĺ‚Í101‚Ĺ‚ˇBĹ‘ĺ‚Ş101‚Č‚Ě‚Íd—Ę‚Ş
- natural_heal_weight_rate–˘–ž‚ĚŽž‚ÉŽŠ“Ž‰ń•œ‚ˇ‚é‚Š‚ç‚Ĺ‚ˇB(‚‚܂č101‚Č‚ç
- ‚˘‚Â‚Ĺ‚ŕŽŠ“Ž‰ń•œ‚Ĺ‚Ť‚Ü‚ˇB)
- ƒfƒtƒHƒ‹ƒg‚Í50‚Ĺ‚ˇB
+ 自動回復ができなくなる重量を設定します。単位は%です。
+ 最小は50で最大は101です。最大が101なのは重量が
+ natural_heal_weight_rate未満の時に自動回復するからです。(つまり101なら
+ いつでも自動回復できます。)
+ デフォルトは50です。
item_name_override_grffile
- ƒAƒCƒeƒ€‚Ě–ź‘O(‰pŒęˆČŠO‚Ě–ź‘O‚Ĺ‚ˇB)‚đ.grfƒtƒ@ƒCƒ‹‚Š‚ç“Ç‚Ţ‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- no‚É‚ˇ‚é‚Ćitem_db.txt‚Ě–ź‘O‚đŽg‚˘‚Ü‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íyes‚Ĺ‚ˇB
+ アイテムの名前(英語以外の名前です。)を.grfファイルから読むかどうかです。
+ noにするとitem_db.txtの名前を使います。
+ デフォルトはyesです。
arrow_decrement
- ‹|‚đŽg‚¤Žž–î‚đÁ–Ő‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB‚ą‚ę‚đno‚É‚ˇ‚é‚Ć
- –î‚ŞÁ–Ő‚ł‚ę‚Ü‚š‚ńB(–î‚đ‘•”ő‚ˇ‚é•K—v‚Í‚ ‚č‚Ü‚ˇB)
- ƒfƒtƒHƒ‹ƒg‚Íyes‚Ĺ‚ˇB
+ 弓を使う時矢を消耗するかどうかです。これをnoにすると
+ 矢が消耗されません。(矢を装備する必要はあります。)
+ デフォルトはyesです。
max_aspd
- ƒvƒŒƒCƒ„[‚ĚĹ‘ĺUŒ‚‘Ź“x‚đÝ’č‚ľ‚Ü‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í199‚Ĺ‚ˇBĹ‘ĺ‚Í199‚ōŏŹ‚Í100‚Ĺ‚ˇB
+ プレイヤーの最大攻撃速度を設定します。
+ デフォルトは199です。最大は199で最小は100です。
max_hp
- Ĺ‘ĺHP‚đÝ’č‚ľ‚Ü‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í32500‚Ĺ‚ˇBĹ‘ĺ‚Í1000000‚ōŏŹ‚Í100‚Ĺ‚ˇB
+ 最大HPを設定します。
+ デフォルトは32500です。最大は1000000で最小は100です。
max_sp
- Ĺ‘ĺSP‚đÝ’č‚ľ‚Ü‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í32500‚Ĺ‚ˇBĹ‘ĺ‚Í1000000‚ōŏŹ‚Í100‚Ĺ‚ˇB
+ 最大SPを設定します。
+ デフォルトは32500です。最大は1000000で最小は100です。
max_parameter
- ƒvƒŒƒCƒ„[‚ĚŠî–{ƒpƒ‰ƒ[ƒ^‚ĚĹ‘ĺ’l‚đÝ’č‚ľ‚Ü‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í99‚Ĺ‚ˇBĹ‘ĺ‚Í10000‚ōŏŹ‚Í10‚Ĺ‚ˇB
- Šî–{ƒpƒ‰ƒ[ƒ^‘ĺ‚Ť‚˘‰ß‚Ź‚é‚ĆƒNƒ‰ƒCƒAƒ“ƒg—Ž‚ż‚Ş‹N‚ą‚é‚Ě‚Ĺ
- “K“–‚Č’l‚đÝ’股‚é•ű‚Ş—Ç‚˘‚Ĺ‚ˇB
+ プレイヤーの基本パラメータの最大値を設定します。
+ デフォルトは99です。最大は10000で最小は10です。
+ 基本パラメータ大きい過ぎるとクライアント落ちが起こるので
+ 適当な値を設定する方が良いです。
max_cart_weight
- ƒJ[ƒg‚ĚĹ‘ĺd—Ę‚đÝ’č‚ľ‚Ü‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í8000‚Ĺ‚ˇBĹ‘ĺ‚Í1000000‚ōŏŹ‚Í100‚Ĺ‚ˇB
+ カートの最大重量を設定します。
+ デフォルトは8000です。最大は1000000で最小は100です。
player_skill_log
- ƒvƒŒƒCƒ„[‚ĚƒXƒLƒ‹Žg—pƒƒO‚đ•\ŽŚ‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ プレイヤーのスキル使用ログを表示するかどうかです。
+ デフォルトはnoです。
monster_skill_log
- ƒ‚ƒ“ƒXƒ^[‚ĚƒXƒLƒ‹Žg—pƒƒO‚đ•\ŽŚ‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ モンスターのスキル使用ログを表示するかどうかです。
+ デフォルトはnoです。
battle_log
- í“ŹŠÖŒW‚ĚƒƒO‚đ•\ŽŚ‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ 戦闘関係のログを表示するかどうかです。
+ デフォルトはnoです。
save_log
- ƒLƒƒƒ‰‚Ě•Ű‘ś‚ÉŠÖ‚ˇ‚郍ƒO‚đ•\ŽŚ‚ˇ‚é‚Š‚Ç‚¤‚Š
- ƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ キャラの保存に関するログを表示するかどうか
+ デフォルトはnoです。
error_log
- ƒGƒ‰[ƒƒO‚đ•\ŽŚ‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íyes‚Ĺ‚ˇB
+ エラーログを表示するかどうかです。
+ デフォルトはyesです。
etc_log
- ƒXƒLƒ‹Aí“ŹAƒLƒƒƒ‰•Ű‘śAƒGƒ‰[ˆČŠO‚ĚƒƒO‚đ•\ŽŚ‚ˇ‚é‚Š‚Ç‚¤‚Š
- ƒfƒtƒHƒ‹ƒg‚Íyes‚Ĺ‚ˇB
+ スキル、戦闘、キャラ保存、エラー以外のログを表示するかどうか
+ デフォルトはyesです。
save_clothcolor
- •ž‚̐F‚đ•Ű‘ś‚ˇ‚é‚Š‚Ç‚¤‚ŠA—LŒř‚É‚ˇ‚é‚Ć–â‘č‚Ş‚ ‚é‚Š‚ŕ‚ľ‚ę‚Ü‚š‚ńB
- ƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ 服の色を保存するかどうか、有効にすると問題があるかもしれません。
+ デフォルトはnoです。
undead_detect_type
- ƒAƒ“ƒfƒbƒh‚đ”FŽŻ‚ˇ‚é•ű–@‚đÝ’č‚ľ‚Ü‚ˇB0‚Ĺ‘ŽŤ‚̂݁A1‚ĹŽí‘°‚̂݁A
- 2‚Ĺ‘ŽŤ‚ĆŽí‘°‚Ě—ź•ű‚Ě‚Ç‚ż‚ç‚Ĺ‚ŕ‚ ‚Á‚Ä‚éę‡‚É‚Č‚č‚Ü‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í0‚Ĺ‚ˇB
+ アンデッドを認識する方法を設定します。0で属性のみ、1で種族のみ、
+ 2で属性と種族の両方のどちらでもあってる場合になります。
+ デフォルトは0です。
player_auto_counter_type
- ƒvƒŒƒCƒ„[‚ĚƒI[ƒgƒJƒEƒ“ƒ^[‚ĚŽd—l‚đÝ’č‚ľ‚Ü‚ˇB0‚Ĺ100%ƒNƒŠƒeƒBƒJƒ‹
- ‚ĹƒXƒLƒ‹”˝Œ‚–ł‚ľA1‚Ĺ–hŒä–łŽ‹AHit+20AƒNƒŠƒeƒBƒJƒ‹—Ś2”{‚ĹƒXƒLƒ‹”˝Œ‚
- –ł‚ľA2‚Ĺ100%ƒNƒŠƒeƒBƒJƒ‹‚ĹƒXƒLƒ‹”˝Œ‚—L‚čA3‚Ĺ–hŒä–łŽ‹AHit+20A
- ƒNƒŠƒeƒBƒJƒ‹—Ś2”{‚ĹƒXƒLƒ‹”˝Œ‚—L‚č‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í1‚Ĺ‚ˇB
+ プレイヤーのオートカウンターの仕様を設定します。0で100%クリティカル
+ でスキル反撃無し、1で防御無視、Hit+20、クリティカル率2倍でスキル反撃
+ 無し、2で100%クリティカルでスキル反撃有り、3で防御無視、Hit+20、
+ クリティカル率2倍でスキル反撃有りです。
+ デフォルトは1です。
monster_auto_counter_type
- ƒ‚ƒ“ƒXƒ^[‚ĚƒI[ƒgƒJƒEƒ“ƒ^[‚ĚŽd—l‚đÝ’č‚ľ‚Ü‚ˇB0‚Ĺ100%ƒNƒŠƒeƒBƒJƒ‹
- ‚ĹƒXƒLƒ‹”˝Œ‚–ł‚ľA1‚Ĺ–hŒä–łŽ‹AHit+20AƒNƒŠƒeƒBƒJƒ‹—Ś2”{‚ĹƒXƒLƒ‹”˝Œ‚
- –ł‚ľA2‚Ĺ100%ƒNƒŠƒeƒBƒJƒ‹‚ĹƒXƒLƒ‹”˝Œ‚—L‚čA3‚Ĺ–hŒä–łŽ‹AHit+20A
- ƒNƒŠƒeƒBƒJƒ‹—Ś2”{‚ĹƒXƒLƒ‹”˝Œ‚—L‚č‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í1‚Ĺ‚ˇB
+ モンスターのオートカウンターの仕様を設定します。0で100%クリティカル
+ でスキル反撃無し、1で防御無視、Hit+20、クリティカル率2倍でスキル反撃
+ 無し、2で100%クリティカルでスキル反撃有り、3で防御無視、Hit+20、
+ クリティカル率2倍でスキル反撃有りです。
+ デフォルトは1です。
agi_penaly_type
- agi_penaly_countˆČă‚Ě“G‚ɍUŒ‚‚ł‚ę‚˝Žž‚Ěagiƒyƒiƒ‹ƒeƒB‚ĚŽd—l‚đÝ’č‚ľ‚Ü‚ˇB
- 0‚Ĺ‚Č‚ľA1‚Ĺagi_penaly_num%‚¸‚ÂŒ¸‚Á‚āA2‚Ĺagi_penaly_num‚ž‚ŻŒ¸‚č‚Ü‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í0‚Ĺ‚ˇB
+ agi_penaly_count以上の敵に攻撃された時のagiペナルティの仕様を設定します。
+ 0でなし、1でagi_penaly_num%ずつ減って、2でagi_penaly_numだけ減ります。
+ デフォルトは0です。
agi_penaly_count
- agiƒyƒiƒ‹ƒeƒB‚đ“K—p‚ˇ‚é“G‚̐”‚đÝ’č‚ľ‚Ü‚ˇB
- 2–˘–ž‚ɐݒ股‚é‚ą‚Ć‚Í‚Ĺ‚Ť‚Ü‚š‚ńBƒfƒtƒHƒ‹ƒg‚Í3‚Ĺ‚ˇB
+ agiペナルティを適用する敵の数を設定します。
+ 2未満に設定することはできません。デフォルトは3です。
agi_penaly_num
- agiƒyƒiƒ‹ƒeƒB‚É‚ć‚Á‚ÄŒ¸‚é‰ń”đ‚Ě—Ę‚đÝ’č‚ľ‚Ü‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í0‚Ĺ‚ˇB
+ agiペナルティによって減る回避の量を設定します。
+ デフォルトは0です。
vit_penaly_type
- vit_penaly_countˆČă‚Ě“G‚ɍUŒ‚‚ł‚ę‚˝Žž‚Ěvitƒyƒiƒ‹ƒeƒB‚ĚŽd—l‚đÝ’č‚ľ‚Ü‚ˇB
- 0‚Ĺ‚Č‚ľA1‚Ĺvit_penaly_num%‚¸‚ÂŒ¸‚Á‚āA2‚Ĺvit_penaly_num‚ž‚ŻŒ¸‚č‚Ü‚ˇB
- (Œ¸‚é‚Ě‚Ívit‚É‚ć‚é–hŒä‚Ě‚Ý)
- ƒfƒtƒHƒ‹ƒg‚Í0‚Ĺ‚ˇB
+ vit_penaly_count以上の敵に攻撃された時のvitペナルティの仕様を設定します。
+ 0でなし、1でvit_penaly_num%ずつ減って、2でvit_penaly_numだけ減ります。
+ (減るのはvitによる防御のみ)
+ デフォルトは0です。
vit_penaly_count
- vitƒyƒiƒ‹ƒeƒB‚đ“K—p‚ˇ‚é“G‚̐”‚đÝ’č‚ľ‚Ü‚ˇB
- 2–˘–ž‚ɐݒ股‚é‚ą‚Ć‚Í‚Ĺ‚Ť‚Ü‚š‚ńBƒfƒtƒHƒ‹ƒg‚Í3‚Ĺ‚ˇB
+ vitペナルティを適用する敵の数を設定します。
+ 2未満に設定することはできません。デフォルトは3です。
vit_penaly_num
- vitƒyƒiƒ‹ƒeƒB‚É‚ć‚Á‚ÄŒ¸‚é‰ń”đ‚Ě—Ę‚đÝ’č‚ľ‚Ü‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í0‚Ĺ‚ˇB
+ vitペナルティによって減る回避の量を設定します。
+ デフォルトは0です。
player_defense_type
- ƒvƒŒƒCƒ„[‚Ş‘ÎŰ‚ÉUŒ‚‚ˇ‚鎞‚ĚDEF‚ĚŒvŽZ•ű–@B0‚Ĺ–{ŽIŽd—lA1ˆČă‚ĹŒ¸ŽZ(DEF*’l)B
+ プレイヤーが対象に攻撃する時のDEFの計算方法。0で本鯖仕様、1以上で減算(DEF*値)。
monster_defense_type
- ƒ‚ƒ“ƒXƒ^[‚Ş‘ÎŰ‚ÉUŒ‚‚ˇ‚鎞‚ĚDEF‚ĚŒvŽZ•ű–@B0‚Ĺ–{ŽIŽd—lA1ˆČă‚ĹŒ¸ŽZ(DEF*’l)B
+ モンスターが対象に攻撃する時のDEFの計算方法。0で本鯖仕様、1以上で減算(DEF*値)。
pet_defense_type
- ƒyƒbƒg‚Ş‘ÎŰ‚ÉUŒ‚‚ˇ‚鎞‚ĚDEF‚ĚŒvŽZ•ű–@B0‚Ĺ–{ŽIŽd—lA1ˆČă‚ĹŒ¸ŽZ(DEF*’l)B
+ ペットが対象に攻撃する時のDEFの計算方法。0で本鯖仕様、1以上で減算(DEF*値)。
magic_defense_type
- MDEF‚ĚŒvŽZ•ű–@B0‚Ĺ–{ŽIŽd—lA1ˆČă‚ĹŒ¸ŽZ(MDEF*’l)
+ MDEFの計算方法。0で本鯖仕様、1以上で減算(MDEF*値)
player_skill_reiteration
- ƒvƒŒƒCƒ„[‚ŞŽg‚¤ˆę•”‚Ě’n–ĘƒXƒLƒ‹‚̏d‚Ë’u‚Ť‚đ‹–‰Â‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- ‚ą‚ę‚đyes‚É‚ˇ‚é‚ĆSW‚âƒjƒ…[ƒ}Aƒgƒ‰ƒbƒv‚đd‚Ë‚Ä’u‚­‚ą‚Ć‚Ş‚Ĺ‚Ť‚Ü‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ プレイヤーが使う一部の地面スキルの重ね置きを許可するかどうかです。
+ これをyesにするとSWやニューマ、トラップを重ねて置くことができます。
+ デフォルトはnoです。
monster_skill_reiteration
- ƒ‚ƒ“ƒXƒ^[‚ŞŽg‚¤ˆę•”‚Ě’n–ĘƒXƒLƒ‹‚̏d‚Ë’u‚Ť‚đ‹–‰Â‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- ‚ą‚ę‚đyes‚É‚ˇ‚é‚ĆSW‚âƒjƒ…[ƒ}Aƒgƒ‰ƒbƒv‚đd‚Ë‚Ä’u‚­‚ą‚Ć‚Ş‚Ĺ‚Ť‚Ü‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ モンスターが使う一部の地面スキルの重ね置きを許可するかどうかです。
+ これをyesにするとSWやニューマ、トラップを重ねて置くことができます。
+ デフォルトはnoです。
player_skill_nofootset
- ƒvƒŒƒCƒ„[‚ŞŽg‚¤ˆę•”‚Ě’n–ĘƒXƒLƒ‹‚đƒvƒŒƒCƒ„[‚⃂ƒ“ƒXƒ^[‚Ě‘ŤŒł‚É
- ’u‚­‚Ě‚đ‹ÖŽ~‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB‚ą‚ę‚đyes‚É‚ˇ‚é‚ĆƒXƒLƒ‹‚đÝ’u‚ˇ‚鎞‚ť‚Ě
- Œř‰Ę”͈͂ɃvƒŒƒCƒ„[‚⃂ƒ“ƒXƒ^[‚Ş‚˘‚é‚ĆƒXƒLƒ‹‚đ’u‚­‚ą‚Ć‚Ş‚Ĺ‚Ť‚Ü‚š‚ńB
- ƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ プレイヤーが使う一部の地面スキルをプレイヤーやモンスターの足元に
+ 置くのを禁止するかどうかです。これをyesにするとスキルを設置する時その
+ 効果範囲にプレイヤーやモンスターがいるとスキルを置くことができません。
+ デフォルトはnoです。
monster_skill_nofootset
- ƒ‚ƒ“ƒXƒ^[‚ŞŽg‚¤ˆę•”‚Ě’n–ĘƒXƒLƒ‹‚đƒvƒŒƒCƒ„[‚⃂ƒ“ƒXƒ^[‚Ě‘ŤŒł‚É
- ’u‚­‚Ě‚đ‹ÖŽ~‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB‚ą‚ę‚đyes‚É‚ˇ‚é‚ĆƒXƒLƒ‹‚đÝ’u‚ˇ‚鎞‚ť‚Ě
- Œř‰Ę”͈͂ɃvƒŒƒCƒ„[‚⃂ƒ“ƒXƒ^[‚Ş‚˘‚é‚ĆƒXƒLƒ‹‚đ’u‚­‚ą‚Ć‚Ş‚Ĺ‚Ť‚Ü‚š‚ńB
- ƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ モンスターが使う一部の地面スキルをプレイヤーやモンスターの足元に
+ 置くのを禁止するかどうかです。これをyesにするとスキルを設置する時その
+ 効果範囲にプレイヤーやモンスターがいるとスキルを置くことができません。
+ デフォルトはnoです。
player_cloak_check_type
- ƒvƒŒƒCƒ„[ƒNƒ[ƒLƒ“ƒO‚ĚŽd—l‚đÝ’č‚ľ‚Ü‚ˇB
- 0‚͕ǃ`ƒFƒbƒN—L‚čAƒXƒLƒ‹Žg—p‚ƍUŒ‚‚Ĺ‰đœ‚ł‚ę‚éB
- 1‚͕ǃ`ƒFƒbƒN–ł‚ľAƒXƒLƒ‹Žg—p‚ƍUŒ‚‚Ĺ‰đœ‚ł‚ę‚éB
- 2‚͕͂ǃ`ƒFƒbƒN—L‚čAƒXƒLƒ‹Žg—p‚ƍUŒ‚‚Ĺ‰đœ‚ł‚ę‚Č‚˘B
- 2‚͕͂ǃ`ƒFƒbƒN–ł‚ľAƒXƒLƒ‹Žg—p‚ƍUŒ‚‚Ĺ‰đœ‚ł‚ę‚Č‚˘B
- ƒfƒtƒHƒ‹ƒg‚Í0‚Ĺ‚ˇB
+ プレイヤークローキングの仕様を設定します。
+ 0は壁チェック有り、スキル使用と攻撃で解除される。
+ 1は壁チェック無し、スキル使用と攻撃で解除される。
+ 2はは壁チェック有り、スキル使用と攻撃で解除されない。
+ 2はは壁チェック無し、スキル使用と攻撃で解除されない。
+ デフォルトは0です。
monster_cloak_check_type
- ƒ‚ƒ“ƒXƒ^[ƒNƒ[ƒLƒ“ƒO‚ĚŽd—l‚đÝ’č‚ľ‚Ü‚ˇB
- 0‚͕ǃ`ƒFƒbƒN—L‚čAƒXƒLƒ‹Žg—p‚ƍUŒ‚‚Ĺ‰đœ‚ł‚ę‚éB
- 1‚͕ǃ`ƒFƒbƒN–ł‚ľAƒXƒLƒ‹Žg—p‚ƍUŒ‚‚Ĺ‰đœ‚ł‚ę‚éB
- 2‚͕͂ǃ`ƒFƒbƒN—L‚čAƒXƒLƒ‹Žg—p‚ƍUŒ‚‚Ĺ‰đœ‚ł‚ę‚Č‚˘B
- 2‚͕͂ǃ`ƒFƒbƒN–ł‚ľAƒXƒLƒ‹Žg—p‚ƍUŒ‚‚Ĺ‰đœ‚ł‚ę‚Č‚˘B
- ƒfƒtƒHƒ‹ƒg‚Í0‚Ĺ‚ˇB
+ モンスタークローキングの仕様を設定します。
+ 0は壁チェック有り、スキル使用と攻撃で解除される。
+ 1は壁チェック無し、スキル使用と攻撃で解除される。
+ 2はは壁チェック有り、スキル使用と攻撃で解除されない。
+ 2はは壁チェック無し、スキル使用と攻撃で解除されない。
+ デフォルトは0です。
gvg_short_attack_damage_rate
- ƒV[ƒYƒ‚[ƒh‚Ĺ‹ß‹——Ł•¨—UŒ‚‚Ěƒ_ƒ[ƒW”{—Ś‚Ĺ‚ˇBƒfƒtƒHƒ‹ƒg‚Í100‚Ĺ‚ˇB
+ シーズモードで近距離物理攻撃のダメージ倍率です。デフォルトは100です。
gvg_long_attack_damage_rate
- ƒV[ƒYƒ‚[ƒh‚ʼn“‹——Ł•¨—UŒ‚‚Ěƒ_ƒ[ƒW”{—Ś‚Ĺ‚ˇBƒfƒtƒHƒ‹ƒg‚Í100‚Ĺ‚ˇB
+ シーズモードで遠距離物理攻撃のダメージ倍率です。デフォルトは100です。
gvg_magic_attack_damage_rate
- ƒV[ƒYƒ‚[ƒh‚Ĺ–‚–@UŒ‚‚Ěƒ_ƒ[ƒW”{—Ś‚Ĺ‚ˇBƒfƒtƒHƒ‹ƒg‚Í100‚Ĺ‚ˇB
+ シーズモードで魔法攻撃のダメージ倍率です。デフォルトは100です。
gvg_misc_attack_damage_rate
- ƒV[ƒYƒ‚[ƒh‚Ĺ•¨—UŒ‚‚Ć–‚–@UŒ‚ˆČŠO‚̍UŒ‚(‘é‚âƒgƒ‰ƒbƒv“™)‚Ě
- ƒ_ƒ[ƒW”{—Ś‚Ĺ‚ˇBƒfƒtƒHƒ‹ƒg‚Í100‚Ĺ‚ˇB
+ シーズモードで物理攻撃と魔法攻撃以外の攻撃(鷹やトラップ等)の
+ ダメージ倍率です。デフォルトは100です。
mob_changetarget_byskill: no
- đŒ‚Şskillused‚ĚƒXƒLƒ‹‚đMOB‚ŞPC‚ÉŽg—p‚ˇ‚é‚Ć‚ŤA‚ť‚Ě‘ÎŰ‚đƒXƒLƒ‹Žg—pŽŇ‚É‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- MOBƒXƒLƒ‹Žg—pŒă‚Ƀ^ƒQ‚Í–ß‚č‚Ü‚ˇBƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ 条件がskillusedのスキルをMOBがPCに使用するとき、その対象をスキル使用者にするかどうかです。
+ MOBスキル使用後にタゲは戻ります。デフォルトはnoです。
player_attack_direction_change
- ƒvƒŒƒCƒ„[‚ލUŒ‚‚ľ‚˝Žž•űŒü‚đ•ĎX‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB–{ŽI‚Ĺ‚Í“Ž‚Ż‚Č‚˘ŒŔ‚č•űŒü‚Ş•Ď‚Ś‚ç‚Č‚˘‚Ě‚Ĺ‚ˇ‚ރoƒO‚Ű‚˘Žd—l‚Č‚Ě‚ĹƒfƒtƒHƒ‹ƒg‚Íyes‚Ĺ‚ˇB
- no‚É‚ˇ‚ę‚ΓŽ‚­‚ą‚Ć‚ž‚Ż‚Ĺ•űŒü‚Ş•Ď‚Ś‚é‚悤‚É‚Č‚č‚Ü‚ˇB
+ プレイヤーが攻撃した時方向を変更するかどうかです。本鯖では動けない限り方向が変えらないのですがバグぽい仕様なのでデフォルトはyesです。
+ noにすれば動くことだけで方向が変えるようになります。
monster_attack_direction_change
- ƒ‚ƒ“ƒXƒ^[‚ލUŒ‚‚ľ‚˝Žž•űŒü‚đ•ĎX‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB–{ŽI‚Ĺ‚Í“Ž‚Ż‚Č‚˘ŒŔ‚č•űŒü‚Ş•Ď‚Ś‚ç‚Č‚˘‚Ě‚Ĺ‚ˇ‚ރoƒO‚Ű‚˘Žd—l‚Č‚Ě‚ĹƒfƒtƒHƒ‹ƒg‚Íyes‚Ĺ‚ˇB
- no‚É‚ˇ‚ę‚ΓŽ‚­‚ą‚Ć‚ž‚Ż‚Ĺ•űŒü‚Ş•Ď‚Ś‚é‚悤‚É‚Č‚č‚Ü‚ˇB
+ モンスターが攻撃した時方向を変更するかどうかです。本鯖では動けない限り方向が変えらないのですがバグぽい仕様なのでデフォルトはyesです。
+ noにすれば動くことだけで方向が変えるようになります。
player_land_skill_limit
- skill_db.txt‚Őݒ肳‚ę‚Ä‚˘‚é’n–ĘƒXƒLƒ‹‚̐”§ŒŔ‚đƒvƒŒƒCƒ„[‚É
- “K—p‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB‚ą‚ę‚đyes‚É‚ˇ‚ę‚ΐݒ肳‚ę‚Ä‚˘‚鐔ˆČă‚Í
- ’n–ʂɐݒu‚ˇ‚é‚ą‚Ć‚Ş‚Ĺ‚Ť‚Č‚­‚Č‚č‚Ü‚ˇ‚ސ”§ŒŔ‚đ‚Ç‚¤•Ď‚Ś‚Ä‚ŕ
- MAX_SKILLUNITGROUP‚đ‰z‚Ś‚鐔‚̐ݒu‚Í‚Ĺ‚Ť‚Ü‚š‚ńB
- ƒfƒtƒHƒ‹ƒg‚Íyes‚Ĺ‚ˇB
+ skill_db.txtで設定されている地面スキルの数制限をプレイヤーに
+ 適用するかどうかです。これをyesにすれば設定されている数以上は
+ 地面に設置することができなくなりますが数制限をどう変えても
+ MAX_SKILLUNITGROUPを越える数の設置はできません。
+ デフォルトはyesです。
monster_land_skill_limit
- skill_db.txt‚Őݒ肳‚ę‚Ä‚˘‚é’n–ĘƒXƒLƒ‹‚̐”§ŒŔ‚đƒ‚ƒ“ƒXƒ^[‚É
- “K—p‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB‚ą‚ę‚đyes‚É‚ˇ‚ę‚ΐݒ肳‚ę‚Ä‚˘‚鐔ˆČă‚Í
- ’n–ʂɐݒu‚ˇ‚é‚ą‚Ć‚Ş‚Ĺ‚Ť‚Č‚­‚Č‚č‚Ü‚ˇ‚ސ”§ŒŔ‚đ‚Ç‚¤•Ď‚Ś‚Ä‚ŕ
- MAX_MOBSKILLUNITGROUP‚đ‰z‚Ś‚鐔‚̐ݒu‚Í‚Ĺ‚Ť‚Ü‚š‚ńB
- ƒfƒtƒHƒ‹ƒg‚Íyes‚Ĺ‚ˇB
+ skill_db.txtで設定されている地面スキルの数制限をモンスターに
+ 適用するかどうかです。これをyesにすれば設定されている数以上は
+ 地面に設置することができなくなりますが数制限をどう変えても
+ MAX_MOBSKILLUNITGROUPを越える数の設置はできません。
+ デフォルトはyesです。
party_skill_penaly
- ˆę•”‚Ěƒp[ƒeƒBƒXƒLƒ‹‚đŽg—pŽŇ‚Ćƒp[ƒeƒB‚ĹƒXƒLƒ‹Œř‰Ę‚ވႤ‚悤‚É
- ‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB‚ą‚ę‚̉e‹ż‚đŽó‚Ż‚éƒXƒLƒ‹‚͍Ą‚̏Š
- ƒAƒhƒŒƒiƒŠƒ“ƒ‰ƒbƒVƒ…AƒEƒGƒ|ƒ“ƒp[ƒtƒFƒNƒVƒ‡ƒ“AƒI[ƒo[ƒgƒ‰ƒXƒg‚Ě‚Ý‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íyes‚Ĺ‚ˇB
+ 一部のパーティスキルを使用者とパーティでスキル効果が違うように
+ するかどうかです。これの影響を受けるスキルは今の所
+ アドレナリンラッシュ、ウエポンパーフェクション、オーバートラストのみです。
+ デフォルトはyesです。
monster_class_change_full_recover
- ƒ‚ƒ“ƒXƒ^[‚ރƒ^ƒ‚ƒ‹ƒtƒH[ƒVƒX‚Ćƒgƒ‰ƒ“ƒXƒtƒH[ƒ[ƒVƒ‡ƒ““™‚É‚ć‚Á‚Ä
- ‘ź‚Ěƒ‚ƒ“ƒXƒ^[‚É•Ď‚í‚Á‚˝Žž‚ť‚Ěƒ‚ƒ“ƒXƒ^[‚ĚHP‚đĹ‘ĺ‚Ȃʼnń•œ‚ł‚š‚é‚Š
- ‚Ç‚¤‚Š‚Ĺ‚ˇB‚ą‚ę‚đyes‚É‚ˇ‚é‚Ć•Ď‚í‚Á‚˝ƒ‚ƒ“ƒXƒ^[‚ĚĹ‘ĺHP‚Ü‚Ĺ
- ‰ń•œ‚ľ‚Ü‚ˇBno‚Č‚ç•Ď‚í‚é‘O‚ĚHP‚ĆĹ‘ĺHP‚̔䗌‚Ě•Ş‚ĚHP‚É‚Č‚č‚Ü‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ モンスターがメタモルフォーシスとトランスフォーメーション等によって
+ 他のモンスターに変わった時そのモンスターのHPを最大なで回復させるか
+ どうかです。これをyesにすると変わったモンスターの最大HPまで
+ 回復します。noなら変わる前のHPと最大HPの比率の分のHPになります。
+ デフォルトはnoです。
produce_item_name_input
- ť‘˘‚ōě‚ç‚ę‚˝“S‚â‘ŽŤÎ‚ɐť‘˘ŽŇ‚Ě–ź‘O‚đ•t‚Ż‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íyes‚Ĺ‚ˇB
+ 製造で作られた鉄や属性石に製造者の名前を付けるかどうかです。
+ デフォルトはyesです。
produce_potion_name_input
- ť‘˘‚ōě‚ç‚ę‚˝ƒ|[ƒVƒ‡ƒ“‚ɐť‘˘ŽŇ‚Ě–ź‘O‚đ•t‚Ż‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íyes‚Ĺ‚ˇB
+ 製造で作られたポーションに製造者の名前を付けるかどうかです。
+ デフォルトはyesです。
making_arrow_name_input
- –îěŹ‚ōě‚ç‚ę‚˝–î‚ɐť‘˘ŽŇ‚Ě–ź‘O‚đ•t‚Ż‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íyes‚Ĺ‚ˇB
+ 矢作成で作られた矢に製造者の名前を付けるかどうかです。
+ デフォルトはyesです。
holywater_name_input
- ƒAƒNƒAƒxƒlƒfƒBƒNƒ^‚ōě‚ç‚ę‚˝š…‚ɐť‘˘ŽŇ‚Ě–ź‘O‚đ•t‚Ż‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íyes‚Ĺ‚ˇB
+ アクアベネディクタで作られた聖水に製造者の名前を付けるかどうかです。
+ デフォルトはyesです。
display_delay_skill_fail
- ƒXƒLƒ‹Žg—p‚ĚƒfƒBƒŒƒC’†‚ɁuƒXƒLƒ‹Žg—p‚ĚŒă‚́A‚ľ‚΂炭‚¨‘Ň‚ż‚­‚ž‚ł‚˘v‚đ•\ŽŚ‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íyes‚Ĺ‚ˇB
+ スキル使用のディレイ中に「スキル使用の後は、しばらくお待ちください」を表示するかどうかです。
+ デフォルトはyesです。
chat_warpportal
- ƒ`ƒƒƒbƒg’†‚ĚPC‚đƒ[ƒvƒ|[ƒ^ƒ‹‚Ĺ”ň‚΂š‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ チャット中のPCをワープポータルで飛ばせるかどうかです。
+ デフォルトはnoです。
mob_warpportal
- MOB‚đƒ[ƒvƒ|[ƒ^ƒ‹‚Ĺ”ň‚΂š‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ MOBをワープポータルで飛ばせるかどうかです。
+ デフォルトはnoです。
dead_branch_active
- ŒĂ–Ř‚ĚŽ}‚Č‚Çmonster–˝—ß‚Ĺmobid‚𕉐”‚ÉŽw’č‚ľ‚˝ę‡‚ɏ˘ŠŤ‚ł‚ę‚郂ƒ“ƒXƒ^[‚đƒAƒNƒeƒBƒu‚É‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ 古木の枝などmonster命令でmobidを負数に指定した場合に召喚されるモンスターをアクティブにするかどうかです。
+ デフォルトはnoです。
vending_max_value
- ˜I“X‚Ĺ’u‚Ż‚éƒAƒCƒeƒ€‰żŠi‚̍ō‚’l‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Í10000000‚Ĺ‚ˇB
+ 露店で置けるアイテム価格の最高値です。
+ デフォルトは10000000です。
show_steal_in_same_party
- ƒXƒeƒB[ƒ‹ŹŒ÷ŽžA‰ć–Ę“ŕ‚ĚPTƒƒ“ƒo[(ŽŠ•ŞŠÜ‚Ţ)‚É
- ƒXƒeƒB[ƒ‹‚ľ‚˝ƒAƒCƒeƒ€‚̏î•ń‚đŒöŠJ‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ スティール成功時、画面内のPTメンバー(自分含む)に
+ スティールしたアイテムの情報を公開するかどうかです。
+ デフォルトはnoです。
enable_upper_class
- “]śA—{ŽqE‚đ—LŒř‚É‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ 転生、養子職を有効にするかどうかです。
+ デフォルトはnoです。
pet_atack_attr_none
- ƒyƒbƒg‚É‚ć‚é–ł‘ŽŤ’ʏíUŒ‚‚đ
- ‘ŽŤ–ł‚ľ(‘ŽŤ‚É‚ć‚é•âł–ł‚ľ)‚É‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇ
+ ペットによる無属性通常攻撃を
+ 属性無し(属性による補正無し)にするかどうかです。
+ デフォルトはnoです
pc_atack_attr_none
- ƒvƒŒƒCƒ„[‚É‚ć‚é–ł‘ŽŤ’ʏíUŒ‚‚đ
- ‘ŽŤ–ł‚ľ(‘ŽŤ‚É‚ć‚é•âł–ł‚ľ)‚É‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇ
+ プレイヤーによる無属性通常攻撃を
+ 属性無し(属性による補正無し)にするかどうかです。
+ デフォルトはnoです
mob_atack_attr_none
- ƒ‚ƒ“ƒXƒ^[‚É‚ć‚é–ł‘ŽŤ’ʏíUŒ‚‚đ
- ‘ŽŤ–ł‚ľ(‘ŽŤ‚É‚ć‚é•âł–ł‚ľ)‚É‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íyes‚Ĺ‚ˇ
+ モンスターによる無属性通常攻撃を
+ 属性無し(属性による補正無し)にするかどうかです。
+ デフォルトはyesです
player_skill_partner_check
- š‘̍~•Ÿ‚⍇‘tƒXƒLƒ‹‚đs‚¤Ű‚Ƀp[ƒgƒi[‚Ě‘śÝ‚đƒ`ƒFƒbƒN‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íyes(ƒ`ƒFƒbƒN‚ˇ‚é)‚Ĺ‚ˇB
+ 聖体降福や合奏スキルを行う際にパートナーの存在をチェックするかどうかです。
+ デフォルトはyes(チェックする)です。
hide_GM_session
- GMƒAƒJƒEƒ“ƒg‚ĚƒLƒƒƒ‰ƒNƒ^[‚đ@ƒRƒ}ƒ“ƒh“™‚Ĺ•\ŽŚ‚Ě‘ÎŰ‚É‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇ
+ GMアカウントのキャラクターを@コマンド等で表示の対象にするかどうかです。
+ デフォルトはnoです
unit_movement_type
- ƒ†ƒjƒbƒgˆÚ“Žˆ—•ű–@‚đ‘I‘đ‚ľ‚Ü‚ˇB
- 0‚Ĺ–{ŽIŽd—l(‰ńü•‰‰×¨dAŽIˆ—¨Œy)A1‚ĹAthenaŽd—l(‰ńü•‰‰×¨ŒyAŽIˆ—¨d)
- ƒfƒtƒHƒ‹ƒg‚Í0(–{ŽIŽd—l)‚Ĺ‚ˇ
+ ユニット移動処理方法を選択します。
+ 0で本鯖仕様(回線負荷→重、鯖処理→軽)、1でAthena仕様(回線負荷→軽、鯖処理→重)
+ デフォルトは0(本鯖仕様)です
invite_request_check
- ƒvƒŒƒCƒ„[‚ŞŠeŽí—vż’†(PT‰Á“üAGuild‰Á“üAŽćˆř)‚É‘ź‚Ě—vż‚đŽó‚Ż“ü‚ę‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- yes‚Ĺ–{ŽIŽd—lAno‚ĹAthenaŽd—l(Žó‚Ż“ü‚ę‚Č‚˘)
- ƒfƒtƒHƒ‹ƒg‚Íyes(Žó‚Ż“ü‚ę‚é)‚Ĺ‚ˇB
+ プレイヤーが各種要請中(PT加入、Guild加入、取引)に他の要請を受け入れるかどうかです。
+ yesで本鯖仕様、noでAthena仕様(受け入れない)
+ デフォルトはyes(受け入れる)です。
skill_removetrap_type
- ƒŠƒ€[ƒuƒgƒ‰ƒbƒv‚ĚŽd—l‚đ‘I‘đ‚ľ‚Ü‚ˇB
- 0:–{ŽIŽd—l‚ĹăŠ1ŒÂ‚đŽć“ž‚ˇ‚é
- 1:AthenaŽd—l‚ĹŽg‚Á‚˝ƒAƒCƒeƒ€‚đŽg‚Á‚˝ŒÂ”‚đŽć“ž‚ˇ‚é
+ リムーブトラップの仕様を選択します。
+ 0:本鯖仕様で罠1個を取得する
+ 1:Athena仕様で使ったアイテムを使った個数を取得する
disp_experience
- ŒoŒą’l‚đ•\ŽŚ‚ˇ‚é‚Š‚Ç‚¤‚Š‚Ĺ‚ˇB
- yes‚É‚ˇ‚é‚ƁA“G‚đ“|‚ľ‚˝Žž‚Č‚ÇŒoŒą’l‚Ş“ü‚Á‚˝Žž‚É–{l‚É‚Ě‚Ý•\ŽŚ‚ł‚ę‚Ü‚ˇB
- ƒfƒtƒHƒ‹ƒg‚Íno‚Ĺ‚ˇB
+ 経験値を表示するかどうかです。
+ yesにすると、敵を倒した時など経験値が入った時に本人にのみ表示されます。
+ デフォルトはnoです。
night_at_start
Choose if server begin with night (yes) or day (no)
@@ -1438,7 +1438,7 @@ packet_ver_flag
default value: 63 (all clients)
import
- ‚ť‚̍s‚đ•Ęƒtƒ@ƒCƒ‹‚Ě’†g‚Ć’u‚ŤŠˇ‚Ś‚Ü‚ˇB
+ その行を別ファイルの中身と置き換えます。
< Example >
@@ -1603,8 +1603,8 @@ packet_ver_flag: 63
< What this file is. >
- GMƒRƒ}ƒ“ƒh(/mmA/nb“™)‚â@ƒRƒ}ƒ“ƒh‚đŽg‚¤‚ą‚Ć‚Ş‚Ĺ‚Ť‚éGM‚ĚƒŒƒxƒ‹‚đÝ’股‚镨‚Ĺ‚ˇB
- Ý’č‚Í‘S‚ÄČ—Ş‰Â”\‚ŁAČ—ŞŽž‚̓fƒtƒHƒ‹ƒg’l‚Ş—˜—p‚ł‚ę‚Ü‚ˇB(ƒfƒtƒHƒ‹ƒg‚Í0‚Ĺ‚ˇB)
+ GMコマンド(/mm、/nb等)や@コマンドを使うことができるGMのレベルを設定する物です。
+ 設定は全て省略可能で、省略時はデフォルト値が利用されます。(デフォルトは0です。)
command_symbol
Set here the symbol that you want to use for your commands
@@ -1620,63 +1620,63 @@ Sets the level of the users that can use the GM commands.
Max GM level is 99. If you want forbid a command to all people, set it with level 100.
broadcast
- GMƒRƒ}ƒ“ƒh /nbA/bA/bb
+ GMコマンド /nb、/b、/bb
local_broadcast
- GMƒRƒ}ƒ“ƒh /lb
+ GMコマンド /lb
mapmove
- GMƒRƒ}ƒ“ƒh /mm
+ GMコマンド /mm
resetstate
- GMƒRƒ}ƒ“ƒh /resetstateA/resetskill
+ GMコマンド /resetstate、/resetskill
rura+
- @ƒRƒ}ƒ“ƒh @rura+
+ @コマンド @rura+
rura
- @ƒRƒ}ƒ“ƒh @rura
+ @コマンド @rura
where
- @ƒRƒ}ƒ“ƒh @where
+ @コマンド @where
jumpto
- @ƒRƒ}ƒ“ƒh @jumpto
+ @コマンド @jumpto
jump
- @ƒRƒ}ƒ“ƒh @jump
+ @コマンド @jump
who
- @ƒRƒ}ƒ“ƒh @who
+ @コマンド @who
save
- @ƒRƒ}ƒ“ƒh @save
+ @コマンド @save
load
- @ƒRƒ}ƒ“ƒh @load
+ @コマンド @load
speed
- @ƒRƒ}ƒ“ƒh @speed
+ @コマンド @speed
storage
- @ƒRƒ}ƒ“ƒh @storage
+ @コマンド @storage
gstorage
- @ƒRƒ}ƒ“ƒh @gstorage
+ @コマンド @gstorage
option
- @ƒRƒ}ƒ“ƒh @option
+ @コマンド @option
hide
- GMƒRƒ}ƒ“ƒh /hide‚Ć@ƒRƒ}ƒ“ƒh @hide
+ GMコマンド /hideと@コマンド @hide
jobchange
- @ƒRƒ}ƒ“ƒh @jobchange
+ @コマンド @jobchange
die
- @ƒRƒ}ƒ“ƒh @die
+ @コマンド @die
kill
- @ƒRƒ}ƒ“ƒh @kill
+ @コマンド @kill
alive
- @ƒRƒ}ƒ“ƒh @alive
+ @コマンド @alive
kami
- @ƒRƒ}ƒ“ƒh @kamiA@kamib
+ @コマンド @kami、@kamib
heal
- @ƒRƒ}ƒ“ƒh @heal
+ @コマンド @heal
item
- @ƒRƒ}ƒ“ƒh @itemA@item2
+ @コマンド @item、@item2
itemreset
- @ƒRƒ}ƒ“ƒh @itemreset
+ @コマンド @itemreset
itemcheck
- @ƒRƒ}ƒ“ƒh @itemcheck
+ @コマンド @itemcheck
lvup
- @ƒRƒ}ƒ“ƒh @lvup
+ @コマンド @lvup
joblvup
- @ƒRƒ}ƒ“ƒh @joblvup
+ @コマンド @joblvup
help
- @ƒRƒ}ƒ“ƒh @helpA@h
+ @コマンド @help、@h
gm
To become GM (need password; password is set in login_athena.conf).
special!: only a non-GM (player with gm level 0) need to have this command.
@@ -1687,101 +1687,101 @@ gm
- enable gm commands to normal player (battle_athena.conf, atcommand_gm_only parameter)
- and normal player must give correct password when he use the @gm command (gm_pass paramter in login_athena.conf)
pvpoff
- @ƒRƒ}ƒ“ƒh @pvpoff
+ @コマンド @pvpoff
pvpon
- @ƒRƒ}ƒ“ƒh @pvpon
+ @コマンド @pvpon
gvgoff
- @ƒRƒ}ƒ“ƒh @gvgoff
+ @コマンド @gvgoff
gvgon
- @ƒRƒ}ƒ“ƒh @gvgon
+ @コマンド @gvgon
model
- @ƒRƒ}ƒ“ƒh @model
+ @コマンド @model
go
- @ƒRƒ}ƒ“ƒh @go
+ @コマンド @go
monster
- @ƒRƒ}ƒ“ƒh @monster
+ @コマンド @monster
killmonster
- @ƒRƒ}ƒ“ƒh @killmonsterA@killmonster2
+ @コマンド @killmonster、@killmonster2
refine
- @ƒRƒ}ƒ“ƒh @refine
+ @コマンド @refine
produce
- @ƒRƒ}ƒ“ƒh @produce
+ @コマンド @produce
memo
- @ƒRƒ}ƒ“ƒh @memo
+ @コマンド @memo
gat
- @ƒRƒ}ƒ“ƒh @gat
+ @コマンド @gat
packet
- @ƒRƒ}ƒ“ƒh @packet
+ @コマンド @packet
stpoint
- @ƒRƒ}ƒ“ƒh @stpoint
+ @コマンド @stpoint
skpoint
- @ƒRƒ}ƒ“ƒh @skpoint
+ @コマンド @skpoint
zeny
- @ƒRƒ}ƒ“ƒh @zeny
+ @コマンド @zeny
param
- @ƒRƒ}ƒ“ƒh @strA@agiA@vitA@intA@dexA@luk
+ @コマンド @str、@agi、@vit、@int、@dex、@luk
guildlvup
- @ƒRƒ}ƒ“ƒh @guildlvup
+ @コマンド @guildlvup
makeegg
- @ƒRƒ}ƒ“ƒh @makeegg
+ @コマンド @makeegg
petfriendly
- @ƒRƒ}ƒ“ƒh @petfriendly
+ @コマンド @petfriendly
pethungry
- @ƒRƒ}ƒ“ƒh @pethungry
+ @コマンド @pethungry
petrename
- @ƒRƒ}ƒ“ƒh @petrename
+ @コマンド @petrename
recall
- @ƒRƒ}ƒ“ƒh @recall
+ @コマンド @recall
charjob
- @ƒRƒ}ƒ“ƒh @charjob
+ @コマンド @charjob
revive
- @ƒRƒ}ƒ“ƒh @revive
+ @コマンド @revive
charstats
- @ƒRƒ}ƒ“ƒh @charstats
+ @コマンド @charstats
charoption
- @ƒRƒ}ƒ“ƒh @charoption
+ @コマンド @charoption
charsave
- @ƒRƒ}ƒ“ƒh @charsave
+ @コマンド @charsave
charload
- @ƒRƒ}ƒ“ƒh @charload
+ @コマンド @charload
night
- @ƒRƒ}ƒ“ƒh @night
+ @コマンド @night
day
- @ƒRƒ}ƒ“ƒh @day
+ @コマンド @day
doom
- @ƒRƒ}ƒ“ƒh @doom
+ @コマンド @doom
doommap
- @ƒRƒ}ƒ“ƒh @doommap
+ @コマンド @doommap
raise
- @ƒRƒ}ƒ“ƒh @raise
+ @コマンド @raise
raisemap
- @ƒRƒ}ƒ“ƒh @raisemap
+ @コマンド @raisemap
charbaselvl
- @ƒRƒ}ƒ“ƒh @charbaselvl
+ @コマンド @charbaselvl
charjlvl
- @ƒRƒ}ƒ“ƒh @charjlvl
+ @コマンド @charjlvl
kick
- @ƒRƒ}ƒ“ƒh @kick‚ĆGM‰EƒNƒŠƒbƒN–˝—߁uŽg—pŽŇ‹­§I—šv
+ @コマンド @kickとGM右クリック命令「使用者強制終了」
allskill
- @ƒRƒ}ƒ“ƒh @allskill
+ @コマンド @allskill
questskill
- @ƒRƒ}ƒ“ƒh @questskill
+ @コマンド @questskill
lostskill
- @ƒRƒ}ƒ“ƒh @lostskill
+ @コマンド @lostskill
spiritball
- @ƒRƒ}ƒ“ƒh @spiritball
+ @コマンド @spiritball
party
- @ƒRƒ}ƒ“ƒh @party
+ @コマンド @party
guild
- @ƒRƒ}ƒ“ƒh @guild
+ @コマンド @guild
agitstart
- @ƒRƒ}ƒ“ƒh @agitstart
+ @コマンド @agitstart
agitend
- @ƒRƒ}ƒ“ƒh @agitend
+ @コマンド @agitend
mapexit
- @ƒRƒ}ƒ“ƒh @mapexit
+ @コマンド @mapexit
idsearch
- @ƒRƒ}ƒ“ƒh @idsearch
+ @コマンド @idsearch
charchangesex
Changes the sex of an online player (all characters on the account)
ignorelist
@@ -1803,7 +1803,7 @@ email
import
- ‚ť‚̍s‚đ•Ęƒtƒ@ƒCƒ‹‚Ě’†g‚Ć’u‚ŤŠˇ‚Ś‚Ü‚ˇB
+ その行を別ファイルの中身と置き換えます。
< Example >
@@ -1940,7 +1940,7 @@ passenc:
defaultlanguage
You can specified a language to display information and for logs.
There are 2 values:
- F: Français
+ F: Fran軋is
E: English (default)
If a displayed information isn't translated, English is used.
Default value: E
diff --git a/doc/db_ref.txt b/doc/db_ref.txt
index b4fd904..4a0ea23 100644
--- a/doc/db_ref.txt
+++ b/doc/db_ref.txt
@@ -1,18 +1,18 @@
==========================================================================
- Athena dev 2.1.1 mod0659 ŒťÝ‚Ědb‚ĚƒŠƒtƒ@ƒŒƒ“ƒX{ƒż
+ Athena dev 2.1.1 mod0659 現在のdbのリファレンス+α
--------------------------------------------------------------------------
-< ‚ą‚Ěƒtƒ@ƒCƒ‹‚͉˝H >
+< このファイルは何? >
- Athena‚Ědbƒtƒ@ƒCƒ‹‚̐ݒč•ű–@‚ĚƒŠƒtƒ@ƒŒƒ“ƒX‚Ĺ‚ˇB
+ Athenaのdbファイルの設定方法のリファレンスです。
-< db‚ĚƒŠƒXƒg >
+< dbのリスト >
-cast_db.txt ƒXƒLƒ‹‚ĚƒLƒƒƒXƒeƒBƒ“ƒOŽžŠÔ‚ĆƒfƒBƒŒƒCAˆŰŽŽžŠÔ“™‚đÝ’čB
-skill_db.txt ƒXƒLƒ‹‚Ěƒf[ƒ^‚đÝ’čB
-skill_require_db.txt ƒXƒLƒ‹Žg—pđŒ‚đÝ’čB
-pet_db.txt ƒyƒbƒg‚Ěƒf[ƒ^‚đÝ’čB
+cast_db.txt スキルのキャスティング時間とディレイ、維持時間等を設定。
+skill_db.txt スキルのデータを設定。
+skill_require_db.txt スキル使用条件を設定。
+pet_db.txt ペットのデータを設定。
==========================================================================
@@ -21,15 +21,15 @@ pet_db.txt ƒyƒbƒg‚Ěƒf[ƒ^‚đÝ’čB
id,cast_list,delay_list,upkeep_time,upkeep_time2
-id: ƒXƒLƒ‹‚ĚID‚Ĺ‚ˇB
-cast_list: ƒXƒLƒ‹‚ĚƒLƒƒƒXƒeƒBƒ“ƒOŽžŠÔ‚đÝ’č‚ľ‚Ü‚ˇBƒŒƒxƒ‹•Ę‚ɐݒ股‚éę‡‚́u:v‚đŽg‚˘‚Ü‚ˇB
-delay_list: ƒXƒLƒ‹‚ĚƒfƒBƒŒƒCŽžŠÔ‚đÝ’č‚ľ‚Ü‚ˇBƒŒƒxƒ‹•Ę‚ɐݒ股‚éę‡‚́u:v‚đŽg‚˘‚Ü‚ˇB
-upkeep_time:ƒXƒLƒ‹‚ĚˆŰŽŽžŠÔ‚đÝ’č‚ľ‚Ü‚ˇBƒŒƒxƒ‹•Ę‚ɐݒ股‚éę‡‚́u:v‚đŽg‚˘‚Ü‚ˇB
-upkeep_time2:ƒXƒLƒ‹‚É‚ć‚Á‚Ä‹N‚ą‚éó‘ÔˆŮí‚ĚˆŰŽŽžŠÔ‚đÝ’č‚ľ‚Ü‚ˇBƒŒƒxƒ‹•Ę‚ɐݒ股‚éę‡‚́u:v‚đŽg‚˘‚Ü‚ˇB(‚˝‚ž‘Ź“xŒ¸­‚Íupkeep_time‚đŽg‚˘‚Ü‚ˇ‚Ě‚Ĺ’ˆÓ‚ľ‚Ä‚­‚ž‚ł‚˘B)
+id: スキルのIDです。
+cast_list: スキルのキャスティング時間を設定します。レベル別に設定する場合は「:」を使います。
+delay_list: スキルのディレイ時間を設定します。レベル別に設定する場合は「:」を使います。
+upkeep_time:スキルの維持時間を設定します。レベル別に設定する場合は「:」を使います。
+upkeep_time2:スキルによって起こる状態異常の維持時間を設定します。レベル別に設定する場合は「:」を使います。(ただ速度減少はupkeep_timeを使いますので注意してください。)
-Ś•Ší‚̒ljÁŒř‰Ę‚É‚ć‚éó‘ÔˆŮí‚ÍMG_STONECURSE(Î‰ť)AMG_FROSTDIVER(“€Œ‹)ANPC_STUNATTACK(ƒXƒ^ƒ“)ANPC_SLEEPATTACK(‡–°)ATF_POISON(“Ĺ)ANPC_CURSEATTACK(Žô‚˘)ANPC_SILENCEATTACK(’ž–Ů)ANPC_BLINDATTACK(ˆĂ•)‚Ěupkeep_time2‚đŽg‚˘‚Ü‚ˇB(ƒŒƒxƒ‹‚Í7‚Ĺ“K—p)
-Ś‹}ŠUŒ‚‚Ěę‡Ĺ‘ĺƒŒƒxƒ‹‚Í1‚Ĺ‚ˇ‚ރoƒbƒVƒ…‚ĚƒŒƒxƒ‹‚É‚ć‚Á‚ÄˆŮíŽžŠÔ‚đ•ĎX‚Ĺ‚Ť‚é‚Ě‚Ĺ•Ą”Ý’č‚ŕ‰Â”\‚Ĺ‚ˇB
-Śƒ}ƒLƒVƒ}ƒCƒYƒpƒ[‚ĆƒNƒ[ƒLƒ“ƒO‚Ěupkeep_time‚ÍˆŰŽŽžŠÔ‚Ĺ‚Í‚Č‚­SP‚Ş1Œ¸‚鎞ŠÔ‚Ĺ‚ˇB
+※武器の追加効果による状態異常はMG_STONECURSE(石化)、MG_FROSTDIVER(凍結)、NPC_STUNATTACK(スタン)、NPC_SLEEPATTACK(睡眠)、TF_POISON(毒)、NPC_CURSEATTACK(呪い)、NPC_SILENCEATTACK(沈黙)、NPC_BLINDATTACK(暗黒)のupkeep_time2を使います。(レベルは7で適用)
+※急所攻撃の場合最大レベルは1ですがバッシュのレベルによって異常時間を変更できるので複数設定も可能です。
+※マキシマイズパワーとクローキングのupkeep_timeは維持時間ではなくSPが1減る時間です。
==========================================================================
@@ -38,23 +38,23 @@ upkeep_time2:ƒXƒLƒ‹‚É‚ć‚Á‚Ä‹N‚ą‚éó‘ÔˆŮí‚ĚˆŰŽŽžŠÔ‚đÝ’č‚ľ‚Ü‚ˇBƒŒƒxƒ‹•Ę‚ɐݒč‚
id,range,hit,inf,pl,nk,max,list_num,castcancel,cast_defence_rate,inf2,maxcount,skill_type,blow_count
-id: ƒXƒLƒ‹‚ĚID‚Ĺ‚ˇB
-range: ƒXƒLƒ‹‚ĚŽË’ö‹——Ł‚Ĺ‚ˇBƒŒƒxƒ‹•Ę‚ɐݒ股‚éę‡‚́u:v‚đŽg‚˘‚Ü‚ˇB-1‚̓Lƒƒƒ‰‚Ě•ŠíŽË’ö‚Ć“Ż‚ś‚ĆŒž‚¤ˆÓ–Ą‚Ĺ-2‚Č‚çƒLƒƒƒ‰‚Ě•ŠíŽË’ö+1A-3‚Č‚çƒLƒƒƒ‰‚Ě•ŠíŽË’ö+2‚É‚Č‚č‚Ü‚ˇB
-hit: ˜A‘Ĺ‚Č‚ç8A’P”­‚Č‚ç6(ƒXƒLƒ‹‚Ěƒqƒbƒg”‚ś‚á‚ ‚č‚Ü‚š‚ńB)
-inf: ƒXƒLƒ‹î•ń‚Ĺ‚ˇB
- 0-ƒpƒbƒVƒuA1-“GA2-ęŠA4-‘ŚŽž”­“ŽA16-–Ą•űA32-ăŠ
- •Ą”‚Ě•¨‚đ“ü‚ę‚é‚Ć(”’l‚đ‘Ť‚ľ‚Ä)ł‚ľ‚­“Žě‚ľ‚Ü‚š‚ńB
-pl: ƒXƒLƒ‹‚Ě‘ŽŤ‚Ĺ‚ˇB
- 0-–ł 1-… 2-’n 3-‰Î 4-•— 5-“Ĺ 6-š 7-ˆĂ 8-”O 9-•sŽ€
-nk: •t‰Á@1Œř‰Ę@2‚Ť”ň‚΂ľ
-MaxLv: ƒXƒLƒ‹‚ĚĹ‘ĺƒŒƒxƒ‹‚Ĺ‚ˇB
-list_num: Hit‰ń”‚ĚƒŠƒXƒg‚Ĺ‚ˇBƒŒƒxƒ‹•Ę‚ɐݒ股‚éę‡‚́u:v‚đŽg‚˘‚Ü‚ˇB
-castcancel: ƒXƒLƒ‹‚ރLƒƒƒ“ƒZƒ‹‚ł‚ę‚é‚Š‚Ç‚¤‚Š‚đÝ’č‚ľ‚Ü‚ˇByes‚̓Lƒƒƒ“ƒZƒ‹‚ł‚ę‚镨‚Ĺno‚̓Lƒƒƒ“ƒZƒ‹‚ł‚ę‚Č‚˘•¨‚Ĺ‚ˇB
-cast_defence_rate: ƒLƒƒƒXƒeƒBƒ“ƒO’†‚ɒቺ‚ˇ‚é–hŒä—͂̔䗌‚Ĺ‚ˇBƒ{ƒEƒŠƒ“ƒOƒoƒbƒVƒ…‚âƒNƒ‰ƒ“ƒhƒNƒƒX‚̂悤‚ɃXƒLƒ‹ƒLƒƒƒXƒeƒBƒ“ƒO’†‚É–hŒä‚ŞŒ¸‚éƒXƒLƒ‹‚̐ݒč‚ÉŽg‚˘‚Ü‚ˇB
-inf2: ƒXƒLƒ‹î•ń2‚Ĺ‚ˇB1 - ƒNƒFƒXƒgƒXƒLƒ‹A2 - npc ƒXƒLƒ‹A4-“GA8-ęŠA16-‘ŚŽž”­“ŽA32-–Ą•űA64-㊁A128-PVPƒ‚[ƒh‚ĹŽŠ•Ş‚đŠÜ‚Ţ‘S‚Ä‚Ě•¨‚Ƀ_ƒ[ƒW‚Ş“ü‚éƒXƒLƒ‹(’n–ĘƒXƒLƒ‹‚Ě‚Ý)A256-•’Ę‚ĚŽg—p‚ĹŽŠ•Ş‚É•K‚¸ƒ_ƒ[ƒW‚Ş“ü‚éƒXƒLƒ‹(’n–ĘƒXƒLƒ‹‚Ě‚Ý)A512-ŽŠ•Ş‚É‚ÍŽg‚¤‚ą‚Ć‚Ş‚Ĺ‚Ť‚Č‚˘ƒXƒLƒ‹A1024 - ŽŠ•Ş‚ŠŽŠ•Ş‚Ěƒp[ƒeƒB‚É‚ľ‚ŠŽg‚Ś‚Č‚˘ƒXƒLƒ‹B2048 - ŽŠ•Ş‚ŠŽŠ•Ş‚ĚƒMƒ‹ƒh‚É‚ľ‚ŠŽg‚Ś‚Č‚˘ƒXƒLƒ‹A“Ż–żƒMƒ‹ƒhƒ`ƒFƒbƒN‚Í–ł‚ľB(4A8A16A32A64‚Íˆę•”‚ĚƒAƒNƒeƒBƒuƒXƒLƒ‹‚ŞŽg—pBĄ‚͈˘C—…”e–PŒ‚Ě‚ÝŽg—pB)
-maxcount: ’n–ĘƒXƒLƒ‹‚Ě‚Ý‚É“K—p‚ł‚ę‚镨‚ĹƒXƒLƒ‹‚đ’u‚Ż‚éĹ‘吔‚Ĺ‚ˇB0‚Í’u‚Ż‚Č‚˘‚ĆŒž‚¤ˆÓ–Ą‚Ĺ‚Í‚Č‚­§ŒŔ‚Ş‚Č‚˘•¨‚ĆŒž‚¤ˆÓ–Ą‚Ĺ‚ˇB
-skill_type: ƒXƒLƒ‹‚ĚŽí—Ţ‚đÝ’č‚ľ‚Ü‚ˇBweapon‚Í•ŠíƒXƒLƒ‹‚Ĺmagic‚Í–‚–@ƒXƒLƒ‹Amisc‚Í•Ší‚Ĺ‚ŕ–‚–@‚Ĺ‚ŕ‚Č‚˘ƒXƒLƒ‹‚Ĺ‚ˇBnone‚ÍŒˆ‚ß“ď‚ľ‚˘•¨“™‚ɐݒ肾‚Ü‚ˇB‚˝‚ž‚ą‚ę‚đ•Ď‚Ś‚˝‚Ć‚ľ‚Ä‚ŕƒXƒLƒ‹‚Ěƒ_ƒ[ƒWŒvŽZ‚Ş‚ą‚ę‚ɍ‡‚í‚š‚Ä•Ď‚í‚é‚í‚Ż‚Ĺ‚Í‚Č‚­ƒ_ƒ[ƒW‚ĚŒvŽZ‚̓vƒƒOƒ‰ƒ€ƒŒƒxƒ‹‚ōs‚Č‚Á‚Ä‚˘‚Ü‚ˇB‚ą‚ę‚̓Xƒyƒ‹ƒuƒŒƒCƒJ[‚ʼnrĽ’†Ž~‚ł‚ę‚é‚Š‚Ç‚¤‚Š‚đÝ’股‚éˆ×‚Ě•¨‚Ĺ‚ˇB(‘ź‚ĚƒXƒLƒ‹‚Ĺ‚ą‚̐ݒč‚đŽg—p‚ˇ‚é‰Â”\Ť‚ŕ‚ ‚č‚Ü‚ˇ‚ލĄ‚̏ŠƒXƒyƒ‹ƒuƒŒƒCƒJ[‚Ě‚Ý‚Ĺ‚ˇB) magic‚ɐݒ股‚é‚ĆƒXƒyƒ‹ƒuƒŒƒCƒJ[‚ʼnrĽ’†Ž~‚ł‚ę‚Ü‚ˇB
-blow_count: ƒXƒLƒ‹‚ć‚éƒmƒbƒNƒoƒbƒN‹——Ł‚Ĺ‚ˇBƒŒƒxƒ‹•Ę‚ɐݒ股‚éę‡‚́u:v‚đŽg‚˘‚Ü‚ˇB
+id: スキルのIDです。
+range: スキルの射程距離です。レベル別に設定する場合は「:」を使います。-1はキャラの武器射程と同じと言う意味で-2ならキャラの武器射程+1、-3ならキャラの武器射程+2になります。
+hit: 連打なら8、単発なら6(スキルのヒット数じゃありません。)
+inf: スキル情報です。
+ 0-パッシブ、1-敵、2-場所、4-即時発動、16-味方、32-罠
+ 複数の物を入れると(数値を足して)正しく動作しません。
+pl: スキルの属性です。
+ 0-無 1-水 2-地 3-火 4-風 5-毒 6-聖 7-暗 8-念 9-不死
+nk: 付加 1効果 2吹き飛ばし
+MaxLv: スキルの最大レベルです。
+list_num: Hit回数のリストです。レベル別に設定する場合は「:」を使います。
+castcancel: スキルがキャンセルされるかどうかを設定します。yesはキャンセルされる物でnoはキャンセルされない物です。
+cast_defence_rate: キャスティング中に低下する防御力の比率です。ボウリングバッシュやクランドクロスのようにスキルキャスティング中に防御が減るスキルの設定に使います。
+inf2: スキル情報2です。1 - クェストスキル、2 - npc スキル、4-敵、8-場所、16-即時発動、32-味方、64-罠、128-PVPモードで自分を含む全ての物にダメージが入るスキル(地面スキルのみ)、256-普通の使用で自分に必ずダメージが入るスキル(地面スキルのみ)、512-自分には使うことができないスキル、1024 - 自分か自分のパーティにしか使えないスキル。2048 - 自分か自分のギルドにしか使えないスキル、同盟ギルドチェックは無し。(4、8、16、32、64は一部のアクティブスキルが使用。今は阿修羅覇鳳拳のみ使用。)
+maxcount: 地面スキルのみに適用される物でスキルを置ける最大数です。0は置けないと言う意味ではなく制限がない物と言う意味です。
+skill_type: スキルの種類を設定します。weaponは武器スキルでmagicは魔法スキル、miscは武器でも魔法でもないスキルです。noneは決め難しい物等に設定します。ただこれを変えたとしてもスキルのダメージ計算がこれに合わせて変わるわけではなくダメージの計算はプログラムレベルで行なっています。これはスペルブレイカーで詠唱中止されるかどうかを設定する為の物です。(他のスキルでこの設定を使用する可能性もありますが今の所スペルブレイカーのみです。) magicに設定するとスペルブレイカーで詠唱中止されます。
+blow_count: スキルよるノックバック距離です。レベル別に設定する場合は「:」を使います。
==========================================================================
@@ -63,53 +63,53 @@ blow_count: ƒXƒLƒ‹‚ć‚éƒmƒbƒNƒoƒbƒN‹——Ł‚Ĺ‚ˇBƒŒƒxƒ‹•Ę‚ɐݒ股‚éę‡‚́u:v‚đŽg‚˘‚
id,list_hp,list_sp,list_hp_rate,list_sp_rate,list_zeny,list_weapon,state,spiritball,itemid1,amount1,itemid2,amount2,itemid3,amount3,itemid4,amount4,itemid5,amount5,itemid6,amount6,itemid7,amount7,itemid8,amount8,itemid9,amount9,itemid10,amount10
-id: ƒXƒLƒ‹‚ĚID‚Ĺ‚ˇB
-list_hp: ƒXƒLƒ‹Žg—p‚ĹŒ¸‚éHP‚Ě—Ę‚Ĺ‚ˇBƒŒƒxƒ‹•Ę‚ɐݒ股‚éę‡‚́u:v‚đŽg‚˘‚Ü‚ˇB
-list_sp: ƒXƒLƒ‹Žg—p‚ĹŒ¸‚éSP‚Ě—Ę‚Ĺ‚ˇBƒŒƒxƒ‹•Ę‚ɐݒ股‚éę‡‚́u:v‚đŽg‚˘‚Ü‚ˇB
-list_hp_rate: ƒXƒLƒ‹Žg—p‚ĹŒ¸‚éHP‚̔䗌‚Ĺ‚ˇBƒŒƒxƒ‹•Ę‚ɐݒ股‚éę‡‚́u:v‚đŽg‚˘‚Ü‚ˇB(Ĺ‘ĺHP‚̔䗌‚Ĺ‚Í‚Č‚­ŒťÝHP‚̔䗌‚Ĺ‚ˇB)
-list_sp_rate: ƒXƒLƒ‹Žg—p‚ĹŒ¸‚éSP‚̔䗌‚Ĺ‚ˇBƒŒƒxƒ‹•Ę‚ɐݒ股‚éę‡‚́u:v‚đŽg‚˘‚Ü‚ˇB(Ĺ‘ĺSP‚̔䗌‚Ĺ‚Í‚Č‚­ŒťÝSP‚̔䗌‚Ĺ‚ˇB)
-list_zeny: ƒXƒLƒ‹Žg—p‚ĹŒ¸‚éƒ[ƒj‚Ě—Ę‚Ĺ‚ˇBƒŒƒxƒ‹•Ę‚ɐݒ股‚éę‡‚́u:v‚đŽg‚˘‚Ü‚ˇB
-list_weapon: ƒXƒLƒ‹‚đŽg‚¤‚ą‚Ć‚Ş‚Ĺ‚Ť‚镐Ší‚đÝ’č‚ľ‚Ü‚ˇB
- 99 - ‘S‚Ä‚Ě•ŠíA0 - ‘fŽčA1 - ’ZŒ•A2 - •ĐŽčŒ•A3 - —źŽčŒ•A4 - •ĐŽč‘„A
- 5 - —źŽč‘„A6 - •ĐŽč•€A7 - —źŽč•€A8 - •ĐŽč“ÝŠíA9 - —źŽč“ÝŠíA10 - ƒƒbƒhA
- 11 - ‹|A12 - ƒiƒbƒNƒ‹A13 - ŠyŠíA14 - •ÚA15 - –{A16 - ƒJƒ^[ƒ‹A
- 17~22: “ń“—Ź
- •Ą”‚đÝ’股‚éę‡‚́u:v‚đŽg‚˘‚Ü‚ˇB
-state:ƒXƒLƒ‹‚đŽg—p‚ˇ‚éˆ×‚ĚđŒ‚đÝ’č‚ľ‚Ü‚ˇB•Ą”‚̐ݒč‚Í‚Ĺ‚Ť‚Ü‚š‚ńB
- none - đŒ–ł‚ľ
- hiding - ƒnƒCƒfƒBƒ“ƒOó‘Ô
- cloacking - ƒNƒ[ƒLƒ“ƒOó‘ԁB
- hidden: ƒnƒCƒfƒBƒ“ƒO‚âƒNƒƒbƒLƒ“ƒOó‘Ô
- riding: ƒyƒRƒyƒR‚ɏć‚Á‚Ä‚˘‚é
- falcon: ‘é‚đ˜A‚ę‚Ä‚˘‚é
- cart: ƒJ[ƒg‚đ’…‚Ż‚Ä‚˘‚é
- shield: ƒV[ƒ‹ƒh‚đŽ‚Á‚Ä‚˘‚é
- sight: ƒTƒCƒgó‘Ô
- explosionspirits: ”š—ô”g“Žó‘Ô
- recover_weight_rate: ŽŠ‘R‰ń•œ‚Ĺ‚Ť‚éd—Ę
- move_enable: ƒXƒLƒ‹Žg—pˆĘ’u‚ވړŽ‰Â”\‚ȏꏩ
- water: ‘ŤŒł‚ސ…
-spiritball: ƒXƒLƒ‹Žg—p‚É•K—v‚Č‹C’e‚̐”‚Ĺ‚ˇBƒŒƒxƒ‹•Ę‚ɐݒ股‚éę‡‚́u:v‚đŽg‚˘‚Ü‚ˇB
-itemid1: ƒXƒLƒ‹Žg—p‚É•K—v‚ČƒAƒCƒeƒ€‚ĚIDAƒ|[ƒVƒ‡ƒ“ƒsƒbƒ`ƒƒ[‚Ěę‡ƒŒƒxƒ‹•Ę‚ÉŽg‚¤‚ą‚Ć‚É‚Č‚éƒAƒCƒeƒ€ID
-amount1: ƒXƒLƒ‹Žg—p‚É•K—v‚ČƒAƒCƒeƒ€‚̐”(”‚Ş0‚Ěę‡ƒAƒCƒeƒ€‚ĚID‚Ş‚ ‚é‚ĆƒAƒCƒeƒ€‚ÍŒ¸‚ç‚Č‚˘‚Ż‚ǐG”}‚Ć‚ľ‚Ä‚ť‚ĚƒAƒCƒeƒ€‚đŽ‚Á‚Ä‚˘‚é•K—v‚Ş‚ ‚é‚悤‚É‚Č‚č‚Ü‚ˇB) ƒ|[ƒVƒ‡ƒ“ƒsƒbƒ`ƒƒ[‚Ěę‡ƒŒƒxƒ‹•Ę‚ÉŽg‚¤‚ą‚Ć‚É‚Č‚éƒAƒCƒeƒ€”
-itemid2: ă“Ż
-amount2: ă“Ż
-itemid3: ă“Ż
-amount3: ă“Ż
-itemid4: ă“Ż
-amount4: ă“Ż
-itemid5: ă“Ż
-amount5: ă“Ż
-itemid6: ă“Ż
-amount6: ă“Ż
-itemid7: ă“Ż
-amount7: ă“Ż
-itemid8: ă“Ż
-amount8: ă“Ż
-itemid9: ă“Ż
-amount9: ă“Ż
-itemid10: ă“Ż
-amount10: ă“Ż
+id: スキルのIDです。
+list_hp: スキル使用で減るHPの量です。レベル別に設定する場合は「:」を使います。
+list_sp: スキル使用で減るSPの量です。レベル別に設定する場合は「:」を使います。
+list_hp_rate: スキル使用で減るHPの比率です。レベル別に設定する場合は「:」を使います。(最大HPの比率ではなく現在HPの比率です。)
+list_sp_rate: スキル使用で減るSPの比率です。レベル別に設定する場合は「:」を使います。(最大SPの比率ではなく現在SPの比率です。)
+list_zeny: スキル使用で減るゼニの量です。レベル別に設定する場合は「:」を使います。
+list_weapon: スキルを使うことができる武器を設定します。
+ 99 - 全ての武器、0 - 素手、1 - 短剣、2 - 片手剣、3 - 両手剣、4 - 片手槍、
+ 5 - 両手槍、6 - 片手斧、7 - 両手斧、8 - 片手鈍器、9 - 両手鈍器、10 - ロッド、
+ 11 - 弓、12 - ナックル、13 - 楽器、14 - 鞭、15 - 本、16 - カタール、
+ 17~22: 二刀流
+ 複数を設定する場合は「:」を使います。
+state:スキルを使用する為の条件を設定します。複数の設定はできません。
+ none - 条件無し
+ hiding - ハイディング状態
+ cloacking - クローキング状態。
+ hidden: ハイディングやクロッキング状態
+ riding: ペコペコに乗っている
+ falcon: 鷹を連れている
+ cart: カートを着けている
+ shield: シールドを持っている
+ sight: サイト状態
+ explosionspirits: 爆裂波動状態
+ recover_weight_rate: 自然回復できる重量
+ move_enable: スキル使用位置が移動可能な場所
+ water: 足元が水
+spiritball: スキル使用に必要な気弾の数です。レベル別に設定する場合は「:」を使います。
+itemid1: スキル使用に必要なアイテムのID、ポーションピッチャーの場合レベル別に使うことになるアイテムID
+amount1: スキル使用に必要なアイテムの数(数が0の場合アイテムのIDがあるとアイテムは減らないけど触媒としてそのアイテムを持っている必要があるようになります。) ポーションピッチャーの場合レベル別に使うことになるアイテム数
+itemid2: 上同
+amount2: 上同
+itemid3: 上同
+amount3: 上同
+itemid4: 上同
+amount4: 上同
+itemid5: 上同
+amount5: 上同
+itemid6: 上同
+amount6: 上同
+itemid7: 上同
+amount7: 上同
+itemid8: 上同
+amount8: 上同
+itemid9: 上同
+amount9: 上同
+itemid10: 上同
+amount10: 上同
==========================================================================
@@ -118,27 +118,27 @@ amount10: ă“Ż
MobID,Name,JName,ItemID,EggID,AcceID,FoodID,Fullness,HungryDelay ,R_Hungry,R_Full,Intimate,Die,Capture,Speed,S_Performance,talk_convert_class,attack_rate,defence_attack_rate,change_target_rate,pet_script
-MobID: ƒ‚ƒ“ƒXƒ^[ID‚Ĺ‚ˇB
-Name: ‰pŒę–ź‘O(ƒ_ƒ~[)
-JName: –ź‘O
-ItemID: •ßŠl—p‚ĚƒAƒCƒeƒ€ID
-EggID: —‘‚ĚƒAƒCƒeƒ€ID
-AcceID: ‘•”őƒAƒNƒZƒTƒŠ[‚ĚƒAƒCƒeƒ€ID
-FoodID: ‰a‚ĚƒAƒCƒeƒ€ID
-Fullness: 1‰ń‚̉a‚Ĺ‚Ě–ž• “x‘‰Á—Ś%
-HungryDelay: –ž• “x‚Ş1%Œ¸‚éˆ×‚É‚Š‚Š‚鎞ŠÔ(•b)
-R_Hungry: ‹ó• Žž‰a‚â‚če–§“x‘‰Á—Ę
-R_Full: ‚Ć‚Ä‚ŕ–ž• Žž‰a‚â‚če–§“xŒ¸­—Ę
-Intimate: •ßŠlŽže–§“x
-Die: Ž€–SŽže–§“xŒ¸­—Ę
-Capture: •ßŠl—Ś(–œ•Ş—Ś)
-Speed: ˆÚ“Ž‘Ź“x
-S_Performance: ƒXƒyƒVƒƒƒ‹ƒpƒtƒHƒ}ƒ“ƒX‚Ş‚ ‚é‚Š‚Ç‚¤‚Š(1‚Ĺ‚ ‚č0‚Ĺ‚Č‚ľ)
-talk_convert_class: ‘䎌‚đ‘ź‚Ěƒyƒbƒg‚Ě•¨‚É•ĎXB•ĎX‚ľ‚˝‚˘ƒyƒbƒg‚Ěƒ‚ƒ“ƒXƒ^[ID‚đ“ü‚ę‚Ü‚ˇB0‚Ěę‡•ĎX‚Č‚ľ‚Ĺƒ}ƒCƒiƒX‚đ“ü‚ę‚é‚ĆƒGƒ‚[ƒVƒ‡ƒ“ˆČŠO‚Ě•¨(‘䎌)‚Í‘S‚Ä–łŽ‹‚ł‚ę‚Ü‚ˇB
-attack_rate: Žx‰‡UŒ‚Šm—ŚB(–œ•Ş—Ś) Žĺl‚ލUŒ‚‚đ‚ľ‚Š‚Ż‚˝ę‡B
-defence_attack_rate: Žx‰‡UŒ‚Šm—ŚB(–œ•Ş—Ś) Žĺl‚ލUŒ‚‚đŽó‚Ż‚˝ę‡B
-change_target_rate: UŒ‚–Ú•W‚đ•ĎX‚ˇ‚éŠm—ŚB(–œ•Ş—Ś)
-pet_script: ƒyƒbƒg‚đŽ‚Á‚Ä‚˘‚鎞“K—p‚ł‚ę‚éƒXƒe[ƒ^ƒXƒ{[ƒiƒX‚đÝ’čB
+MobID: モンスターIDです。
+Name: 英語名前(ダミー)
+JName: 名前
+ItemID: 捕獲用のアイテムID
+EggID: 卵のアイテムID
+AcceID: 装備アクセサリーのアイテムID
+FoodID: 餌のアイテムID
+Fullness: 1回の餌での満腹度増加率%
+HungryDelay: 満腹度が1%減る為にかかる時間(秒)
+R_Hungry: 空腹時餌やり親密度増加量
+R_Full: とても満腹時餌やり親密度減少量
+Intimate: 捕獲時親密度
+Die: 死亡時親密度減少量
+Capture: 捕獲率(万分率)
+Speed: 移動速度
+S_Performance: スペシャルパフォマンスがあるかどうか(1であり0でなし)
+talk_convert_class: 台詞を他のペットの物に変更。変更したいペットのモンスターIDを入れます。0の場合変更なしでマイナスを入れるとエモーション以外の物(台詞)は全て無視されます。
+attack_rate: 支援攻撃確率。(万分率) 主人が攻撃をしかけた場合。
+defence_attack_rate: 支援攻撃確率。(万分率) 主人が攻撃を受けた場合。
+change_target_rate: 攻撃目標を変更する確率。(万分率)
+pet_script: ペットを持っている時適用されるステータスボーナスを設定。
diff --git a/doc/help.txt b/doc/help.txt
index 7b83258..430574d 100644
--- a/doc/help.txt
+++ b/doc/help.txt
@@ -422,8 +422,8 @@ Kick all characters off the server
<OTHER COMMANDS>
-@gat ---- ƒfƒoƒbƒO—p(Žü•Ógat‚𒲂ׂé)
-@packet ---- ƒfƒoƒbƒO—p(ƒpƒPƒbƒgFX)
+@gat ---- デバッグ用(周辺gatを調べる)
+@packet ---- デバッグ用(パケット色々)
@mapexit
Kick all players and shut down map-server.
diff --git a/doc/inter_server_packet.txt b/doc/inter_server_packet.txt
index 2532803..4e6dabf 100644
--- a/doc/inter_server_packet.txt
+++ b/doc/inter_server_packet.txt
@@ -1,7 +1,7 @@
-S mapŽI=>interŽI
-R interŽI=>mapŽI
+S map鯖=>inter鯖
+R inter鯖=>map鯖
-ƒpƒPƒbƒg’ˇƒŠƒXƒg
+パケット長リスト
R 3800-388f
-1,-1,27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -26,179 +26,179 @@ S 3000-308f
S 3000 <len>.w <message>.?B
- GMƒƒbƒZ[ƒW‘—M—v‹
+ GMメッセージ送信要求
R 3800 <len>.w <message>.?B
- GMƒƒbƒZ[ƒW
+ GMメッセージ
S 3001 <len>.w <src-nick>.24B <dst-nick>.24B <message>.?B
- Wis‘—M—v‹
+ Wis送信要求
R 3801 <len>.w <wis-id>.l <src-nick>.24B <dst-nick>.24B <message>.?B
- Wisƒf[ƒ^ŽóM
- wis-id=interŽI“ŕ•”‚ĚWis-idFmapŽI‚Ĺ‚Í3002‚Ĺ‘—M‚ˇ‚é‚˝‚ß‚ž‚Ż‚ÉŽg‚¤
+ Wisデータ受信
+ wis-id=inter鯖内部のWis-id:map鯖では3002で送信するためだけに使う
S 3002 <wis-id>.l <flag>.B
- ‚ą‚ĚmapŽI‚Ĺ‚ĚWis‚Ě‘—MŒ‹‰Ę
- flag=0 ‘—MŠŽ—š(‚ą‚ĚmapŽI‚É‚˘‚˝‚̂ŁA‘—M‚ľ‚˝)
- flag=1 ‘—MŽ¸”s(‚ą‚ĚmapŽI‚É‚Í‚ť‚ń‚Ȑl‚˘‚Ü‚š‚ń)
- flag=2 ‘—MI—š(‚ą‚ĚmapŽI‚É‚˘‚é‚ŞAignore‚ł‚ę‚Ä‚˘‚é)
+ このmap鯖でのWisの送信結果
+ flag=0 送信完了(このmap鯖にいたので、送信した)
+ flag=1 送信失敗(このmap鯖にはそんな人いません)
+ flag=2 送信終了(このmap鯖にいるが、ignoreされている)
R 3802 <src-nick>.24B <flag>.B
- ‘SmapŽI‚Ĺ‚ĚWis‘—MŒ‹‰Ę
- flag=0 ‘—MŠŽ—š
- flag=1 ‘—MŽ¸”s(‚Ç‚ĚmapŽI‚É‚ŕ‚ť‚ń‚Ȑl‚˘‚Ü‚š‚ń)
- flag=2 ‘—MŽ¸”s(ignore‚ł‚ę‚˝)
+ 全map鯖でのWis送信結果
+ flag=0 送信完了
+ flag=1 送信失敗(どのmap鯖にもそんな人いません)
+ flag=2 送信失敗(ignoreされた)
S 3010 <account_id>.l
- ‘qŒÉƒf[ƒ^—v‹
+ 倉庫データ要求
R 3810 <len>.w <account_id>.l <storage>.?B
- ‘qŒÉƒf[ƒ^ŽóM
+ 倉庫データ受信
S 3011 <len>.w <account_id>.l <storage>.?B
- ‘qŒÉƒf[ƒ^‘—M••Ű‘ś—v‹
+ 倉庫データ送信&保存要求
R 3811 <account_id>.l <flag>.b
- ‘qŒÉƒf[ƒ^•Ű‘śI—š
- flag=0 ŹŒ÷iŒťÝ‚ĚŽd—l‚Ĺ‚Í•K‚¸0‚Ȃ̂ŁA•ÔM‚đ‘Ň‚˝‚Č‚­‚Ä‚ŕ‚˘‚˘j
+ 倉庫データ保存終了
+ flag=0 成功(現在の仕様では必ず0なので、返信を待たなくてもいい)
S 3020 <account_id>.l <party_name>.24B <nick_name>.24B <map_name>.16B <level>.w
- ƒp[ƒeƒBěŹ—v‹
+ パーティ作成要求
R 3820 <account_id>.l <fail>.B <party_id>.l <party_name>.24B
- ƒp[ƒeƒBŹŒ÷‰Â”ہiŽŠ•Ş‚Ěƒ}ƒbƒvŽI‚̂݁j
- fail=00 ƒp[ƒeƒBěŹŹŒ÷
- fail=01 Ž¸”siparty_id,pary_name‚̓Sƒ~j
+ パーティ成功可否(自分のマップ鯖のみ)
+ fail=00 パーティ作成成功
+ fail=01 失敗(party_id,pary_nameはゴミ)
S 3021 <party_id>.l
- ƒp[ƒeƒBî•ń—v‹
+ パーティ情報要求
R 3821 <len>.w <struct party>.?B
- (struct party‚̍ŏ‰‚SƒoƒCƒg‚Íparty_id)
- len=8 ƒp[ƒeƒB‚Í‘śÝ‚ľ‚Č‚˘iŽóM‚ľ‚˝‚çŠY“–ƒLƒƒƒ‰‚đ–˘Š‘Ž‚É•ĎX‚ˇ‚éj
- len>8 ƒp[ƒeƒBî•ńiŽóM‚ľ‚˝‚çƒNƒ‰ƒCƒAƒ“ƒg‚É‘—‚é‚ą‚Ɓj
- i—v‹‚ľ‚Ä‚Ť‚˝ƒ}ƒbƒvŽI‚ցj
+ (struct partyの最初4バイトはparty_id)
+ len=8 パーティは存在しない(受信したら該当キャラを未所属に変更する)
+ len>8 パーティ情報(受信したらクライアントに送ること)
+ (要求してきたマップ鯖へ)
S 3022 <party_id>.l <account_id>.l <nick>.24B <map_name>.16B <level>.w
- ƒp[ƒeƒB’ljÁ—v‹
+ パーティ追加要求
R 3822 <party_id>.l <account_id>.l <fail>.B
- ƒp[ƒeƒB’ljÁ’Ę’mi—v‹‚ľ‚Ä‚Ť‚˝ƒ}ƒbƒvŽI‚ցj
- fail=00‚ŐŹŒ÷Afail=01‚ĹŽ¸”s
- iŹŒ÷Žž‚Í‚ą‚Ě’źŒă‚É‘SŽI‚Ƀp[ƒeƒBî•ń‚Ş‘—‚ç‚ę‚éj
+ パーティ追加通知(要求してきたマップ鯖へ)
+ fail=00で成功、fail=01で失敗
+ (成功時はこの直後に全鯖にパーティ情報が送られる)
S 3023 <party_id>.l <account_id>.l <exp>.w <item>.w
- ƒp[ƒeƒBÝ’č•ĎX—v‹
+ パーティ設定変更要求
R 3823 <party_id>.l <account_id>.l <exp>.w <item>.w <fail>.B
- ƒp[ƒeƒBÝ’č•ĎX’Ę’miŹŒ÷‚Ěę‡‘Sƒ}ƒbƒvŽI‚Ö’Ę’mj
- fail=0x00 ƒp[ƒeƒBÝ’č•ĎXŠŽ—š
- fail=0x01 exp‚Ě•ĎXŽ¸”s
- fail=0x10 item‚Ě•ĎXŽ¸”s
+ パーティ設定変更通知(成功の場合全マップ鯖へ通知)
+ fail=0x00 パーティ設定変更完了
+ fail=0x01 expの変更失敗
+ fail=0x10 itemの変更失敗
S 3024 <party_id>.l <account_id>.l
- ƒp[ƒeƒB’E‘Ţ—v‹
+ パーティ脱退要求
R 3824 <party_id>.l <account_id>.l <nick>.24B
- ƒp[ƒeƒB’E‘Ţ’Ę’mi‘Sƒ}ƒbƒvŽI‚ցj
+ パーティ脱退通知(全マップ鯖へ)
S 3025 <party_id>.l <account_id>.l <map_name>.16B <online>.B <level>.w
- ƒp[ƒeƒBƒ}ƒbƒvXV/ƒIƒ“ƒ‰ƒCƒ“—v‹
+ パーティマップ更新/オンライン要求
R 3825 <party_id>.l <account_id>.l <map_name>.16B <online>.B <level>.w
- ƒp[ƒeƒBƒ}ƒbƒvXV’Ę’mi‘Sƒ}ƒbƒvŽI‚ցj
+ パーティマップ更新通知(全マップ鯖へ)
S 3026 <party_id>.l
- ƒp[ƒeƒB‰đŽU—v‹i‘—‚ç‚ę‚é‚ą‚Ć‚Í‚Č‚˘‚ĆŽv‚í‚ę‚éj
+ パーティ解散要求(送られることはないと思われる)
R 3026 <party_id>.l <fail>.B
- ƒp[ƒeƒB‰đŽU
- fail=00 ƒp[ƒeƒB‚͉đŽU‚ł‚ę‚˝iĄ‚Ě‚Ć‚ą‚ë•K‚¸00j
- imapŽI“ŕ‚Ě•s—vƒf[ƒ^íœ‚Ě‚˝‚ß‚ž‚Ż‚ÉŽg‚í‚ę‚éj
+ パーティ解散
+ fail=00 パーティは解散された(今のところ必ず00)
+ (map鯖内の不要データ削除のためだけに使われる)
S 3027 <len>.w <party_id>.l <account_id>.l <message>.?B
- ƒp[ƒeƒB“ŕ”­Œž—v‹
+ パーティ内発言要求
R 3827 <len>.w <party_id>.l <account_id>.l <message>.?B
- ƒp[ƒeƒB“ŕ”­Œž’Ę’mi‘Sƒ}ƒbƒvŽI‚ցj
+ パーティ内発言通知(全マップ鯖へ)
S 3028 <party_id>.l <account_id>.l <nick>.24B
- •Ęƒp[ƒeƒB‚ɏŠ‘Ž‚ľ‚Ä‚˘‚Č‚˘‚Šƒ`ƒFƒbƒN<party_id>‚Í–{—ˆ‚̏Š‘Ž
+ 別パーティに所属していないかチェック<party_id>は本来の所属
S 3030 <len>.w <account_id>.l <guild_name>.24B <struct guild_member>.?B
- ƒMƒ‹ƒhěŹ—v‹
+ ギルド作成要求
R 3830 <account_id>.l <guild_id>.l
- ƒMƒ‹ƒhěŹ‰Â”Ű(guild_id=0‚ĹŽ¸”s)
+ ギルド作成可否(guild_id=0で失敗)
S 3031 <guild_id>.l
- ƒMƒ‹ƒhî•ń—v‹
+ ギルド情報要求
R 3831 <len>.w <struct guild>.?B
- ƒMƒ‹ƒhî•ń
- len=8 ƒMƒ‹ƒh‚Í‘śÝ‚ľ‚Č‚˘
- len>8 ƒMƒ‹ƒhî•ń
+ ギルド情報
+ len=8 ギルドは存在しない
+ len>8 ギルド情報
S 3032 <len>.w <guild_id>.l <struct guild_member>.?B
- ƒMƒ‹ƒhƒƒ“ƒo’ljÁ—v‹
+ ギルドメンバ追加要求
R 3832 <guild_id>.l <account_id>.l <charactor_id>.l <fail>.B
- ƒMƒ‹ƒh’ljÁƒƒ“ƒo’Ę’m
- fail=0‚ŐŹŒ÷,1‚ĹŽ¸”s
+ ギルド追加メンバ通知
+ fail=0で成功,1で失敗
S 3034 <guild_id>.l <account_id>.l <charactor_id>.l <flag>.B <mes>.40B
- ƒMƒ‹ƒh’E‘Ţ/’Ç•ú—v‹
- flag=0 ’E‘Ţ / 1 ’Ç•ú
+ ギルド脱退/追放要求
+ flag=0 脱退 / 1 追放
R 3834 <guild_id>.l <account_id>.l <charactor_id>.l <flag>.B <mes>.40B <nick>.24B
- ƒMƒ‹ƒh’E‘Ţ/’Ç•ú’Ę’m
+ ギルド脱退/追放通知
S 3035 <guild_id>.l <account_id>.l <charactor_id>.l <online>.B <lv>.w <class>.w
- ƒMƒ‹ƒhƒƒ“ƒoî•ńXV—v‹
+ ギルドメンバ情報更新要求
R 3835 <guild_id>.l <account_id>.l <charactor_id>.l <online>.B <lv>.w <class>.w
- ƒMƒ‹ƒhƒƒ“ƒoî•ńXV’Ę’m
+ ギルドメンバ情報更新通知
S 3036 <guild_id>.l
- ƒMƒ‹ƒh‰đŽU—v‹
+ ギルド解散要求
R 3836 <guild_id>.l <fail>.B
- ƒMƒ‹ƒh‰đŽU’Ę’m
- flag=00 ‰đŽUŹŒ÷ / 01 Ž¸”s
+ ギルド解散通知
+ flag=00 解散成功 / 01 失敗
S 3037 <len>.w <guild_id>.l <account_id>.l <message>.?B
- ƒMƒ‹ƒh”­Œž—v‹
+ ギルド発言要求
R 3837 <len>.w <guild_id>.l <account_id>.l <message>.?B
- ƒMƒ‹ƒh”­Œž’Ę’m
+ ギルド発言通知
S 3038 <guild_id>.l <account_id>.l <charactor_id>.l
- •ĘƒMƒ‹ƒh‚ɏŠ‘Ž‚ľ‚Ä‚˘‚Č‚˘‚Šƒ`ƒFƒbƒN
+ 別ギルドに所属していないかチェック
S 3039 <len>.w <guild_id>.l <type>.w <data>.?B
- ŠeŽíŠî–{î•ńXV—v‹
+ 各種基本情報更新要求
R 3839 <len>.w <guild_id>.l <type>.w <data>.?B
- ŠeŽíŠî–{î•ńXV’Ę’m
+ 各種基本情報更新通知
S 303A <len>.w <guild_id>.l <account_id>.l <char_id>.l <type>.w <data>.?B
- ŠeŽíƒMƒ‹ƒhƒƒ“ƒoî•ńXV—v‹
+ 各種ギルドメンバ情報更新要求
R 383A <len>.w <guild_id>.l <account_id>.l <char_id>.l <type>.w <data>.?B
- ŠeŽíƒMƒ‹ƒhƒƒ“ƒoî•ńXV’Ę’m
+ 各種ギルドメンバ情報更新通知
S 303B <len>.w <guild_id>.l <position>.l <struct guild_position>.?B
- ƒMƒ‹ƒh–đE•ĎX—v‹
+ ギルド役職変更要求
R 383B <len>.w <guild_id>.l <position>.l <struct guild_position>.?B
- ƒMƒ‹ƒh–đE•ĎX’Ę’m
+ ギルド役職変更通知
S 303C <guild_id>.l <skill_num>.l <account_id>.l
- ƒMƒ‹ƒhƒXƒLƒ‹Š„‚čU‚č
+ ギルドスキル割り振り
R 383C <guild_id>.l <skill_num>.l <account_id>.l
- ƒMƒ‹ƒhƒXƒLƒ‹Š„‚čU‚č(skill_num==0‚ĹŽ¸”s)
+ ギルドスキル割り振り(skill_num==0で失敗)
S 303D <guild_id1>.l <guild_id2>.l <account_id1>.l <account_id2>.l <flag>.B
- ƒMƒ‹ƒh“Ż–ż/“G‘Ηv‹
- flag=0 “Ż–ż / 1 “G‘Î / 8 “Ż–ż‰đœ / 9 “G‘Ήđœ
+ ギルド同盟/敵対要求
+ flag=0 同盟 / 1 敵対 / 8 同盟解除 / 9 敵対解除
R 383D <guild_id1>.l <guild_id2>.l <account_id1>.l <account_id2>.l <flag>.B <name1>.24B <name2>.24B
- ƒMƒ‹ƒh“Ż–ż/“G‘Î’Ę’m
- flag=0 “Ż–ż / 1 “G‘Î
- flag=0x10 “Ż–żŽ¸”s / 0x11 “G‘ÎŽ¸”s
+ ギルド同盟/敵対通知
+ flag=0 同盟 / 1 敵対
+ flag=0x10 同盟失敗 / 0x11 敵対失敗
S 303E <guild_id>.l <message1>.60B <message2>.120B
- ƒMƒ‹ƒh’mÝ’č—v‹
+ ギルド告知設定要求
R 383E <guild_id>.l <message1>.60B <message2>.120B
- ƒMƒ‹ƒh’mÝ’č’Ę’m
+ ギルド告知設定通知
S 303F <len>.w <guild_id>.l <dummy>.l <emblem_data>.?B
- ƒMƒ‹ƒhƒGƒ“ƒuƒŒƒ€•ĎX—v‹ dummy‚Í0ŒĹ’č
+ ギルドエンブレム変更要求 dummyは0固定
R 383F <len>.w <guild_id>.l <dummy>.l <emblem_data>.?B
- ƒMƒ‹ƒhƒGƒ“ƒuƒŒƒ€•ĎX’Ę’m
-iˆČ‰şAƒMƒ‹ƒhŒn’ljÁ—\’čj
+ ギルドエンブレム変更通知
+(以下、ギルド系追加予定)
S 3080 <account_id>.l <char_id>.I <pet_type>.w <pet_lv>.w <pet_egg_id>.w
<pet_equip>.w <pet_intimate>.w <pet_hungry>.w <rename_flag>.B <incuvate>.B
<pet_name>.24B
- ƒyƒbƒgśŹ—v‹
+ ペット生成要求
R 3880 <account_id>.l <fail>.B <pet_id>.l
- ƒyƒbƒgśŹŹŒ÷‰Â”Ű
- fail=00 ƒyƒbƒgśŹŹŒ÷
- fail=01 Ž¸”sipet_id‚̓Sƒ~j
+ ペット生成成功可否
+ fail=00 ペット生成成功
+ fail=01 失敗(pet_idはゴミ)
S 3081 <account_id>.l <char_id>.I <pet_id>.l
- ƒyƒbƒgƒf[ƒ^—v‹
+ ペットデータ要求
R 3881 <len>.w <account_id>.l <fail>.B <struct s_pet>.?B
- ƒyƒbƒgƒf[ƒ^ŽóM
- fail=00 ƒyƒbƒgƒf[ƒ^“]‘—
- fail=01 ƒyƒbƒg‚Ěƒf[ƒ^‚Ş‚Č‚˘‚Š‚ŕ‚ľ‚­‚Íaccount_id‚Šchar_id‚ލ‡‚í‚Č‚˘‚Ě‚Ĺ
- Ž¸”sis_pet‚̓Sƒ~j
+ ペットデータ受信
+ fail=00 ペットデータ転送
+ fail=01 ペットのデータがないかもしくはaccount_idかchar_idが合わないので
+ 失敗(s_petはゴミ)
S 3082 <len>.w <account_id>.l <struct s_pet>.?B
- ƒyƒbƒgƒf[ƒ^‘—M••Ű‘ś—v‹
+ ペットデータ送信&保存要求
R 3882 <account_id>.l <flag>.b
- ƒyƒbƒgƒf[ƒ^•Ű‘śI—š
- flag=0 ŹŒ÷iŒťÝ‚ĚŽd—l‚Ĺ‚Íƒƒ‚ƒŠ•s‘ŤˆČŠO‚É‚Í•K‚¸0‚Ȃ̂ŁA•ÔM‚đ
- ‘Ň‚˝‚Č‚­‚Ä‚ŕ‚˘‚˘j
- flag=1 Ž¸”s
+ ペットデータ保存終了
+ flag=0 成功(現在の仕様ではメモリ不足以外には必ず0なので、返信を
+ 待たなくてもいい)
+ flag=1 失敗
S 3083 <pet_id>.l
- ƒyƒbƒgƒf[ƒ^íœ—v‹
+ ペットデータ削除要求
R 3883 <flag>.b
- ƒyƒbƒgƒf[ƒ^íœI—š
- flag=0 ŹŒ÷iŒťÝ‚ĚŽd—l‚Ĺ‚ÍŠů‚Ƀf[ƒ^‚Ş‚˘‚Č‚˘ę‡ˆČŠO‚Í•K‚¸0‚Ȃ̂ŁA
- •ÔM‚đ‘Ň‚˝‚Č‚­‚Ä‚ŕ‚˘‚˘j
- flag=1 Ž¸”sipet_id‚É“–‚˝‚éƒf[ƒ^‚Ş‚Č‚˘ę‡‚Ě•¨‚Ĺ‚ˇ‚ŞŠů‚Ƀf[ƒ^‚Ş
- ‚˘‚Č‚˘‚ĆŒž‚¤‚ą‚Ć‚Ííœ‚ˇ‚é•K—v‚Ş‚Č‚˘‚ą‚Ć‚É‚ŕ‚Č‚č‚Ü‚ˇ‚Ě‚Ĺ
- ˆÓ–Ą‚Í‚ ‚č‚Ü‚š‚ńj
+ ペットデータ削除終了
+ flag=0 成功(現在の仕様では既にデータがいない場合以外は必ず0なので、
+ 返信を待たなくてもいい)
+ flag=1 失敗(pet_idに当たるデータがない場合の物ですが既にデータが
+ いないと言うことは削除する必要がないことにもなりますので
+ 意味はありません)
diff --git a/doc/packet_table_en.txt b/doc/packet_table_en.txt
index 52dcd0e..3b72ba3 100644
--- a/doc/packet_table_en.txt
+++ b/doc/packet_table_en.txt
@@ -2,16 +2,16 @@ here is a translation for "packet_table.txt".
i leave original japanese sentenses and write translation below that.
-Ú‚ľ‚­‚Í’m‚č‚Ü‚š‚ń‚ށAGM‚̓AƒJƒEƒ“ƒgID704554•t‹ß‚đŽw’股‚é‚Ć
-ƒNƒ‰ƒCƒAƒ“ƒg‚ŞGM‚ž‚Ć”FŽŻ‚ľ‚Ä•\ŽŚ‚ˇ‚é‚Ý‚˝‚˘‚Ĺ‚ˇB
-”Žš‚Ş”ź’[‚Č‚Ě‚Í‹C‚É‚ľ‚Č‚˘‚ŁEEE
+詳しくは知りませんが、GMはアカウントID=704554付近を指定すると
+クライアントがGMだと認識して表示するみたいです。
+数字が半端なのは気にしないで・・・
i don't know for sure, but if you set account id around 704554,
the ro client recognizes you as GM ( i don't know about other client like
iro or something. this is talking about jro.)
-ƒpƒPƒbƒg’ˇƒŠƒXƒgB-1‚̓pƒPƒbƒgŽí•Ę‚Ě’źŒă‚É’ˇ‚ł‚Ş‚ ‚éƒpƒPƒbƒg
+パケット長リスト。-1はパケット種別の直後に長さがあるパケット
list of packet length. "-1" means a packet that have its packet length
just after the packet number.
@@ -50,1276 +50,1276 @@ just after the packet number.
6, 3,106, 10, 10, 34, 0, 6, 8, 4, 4, 4, 29, -1, 10, 6,
90, 86, 24, 6, 30,102, 8, 4, 8, 4, 14, 10
-S ƒNƒ‰ƒCƒAƒ“ƒg‚Š‚猊‚Ä‘—M
+S クライアントから見て送信
S means a packet that will be sent from client.
-R ƒNƒ‰ƒCƒAƒ“ƒg‚Š‚猊‚ÄŽóM
+R クライアントから見て受信
R means a packet that will be received by client.
-B ƒoƒCƒg
+B バイト
B means a byte.
-w ƒ[ƒh=2B
+w ワード=2B
w means word( 2 bytes)
-l ƒƒ“ƒOƒ[ƒh=4B
+l ロングワード=4B
l means long word(4bytes)
-* 0ŒÂˆČă‚­‚č‚Š‚Ś‚ľ
+* 0個以上くりかえし
* means repeat
S 0064 <version>.l <account name>.24B <password>.24B <version2>.B
- ƒAƒJƒEƒ“ƒgID&ƒpƒXƒ[ƒh‘—M
+ アカウントID&パスワード送信
send account id & password
S 0065 <account ID>.l <login ID1>.l <login ID2>.l ?.2B <sex>.B
- ƒLƒƒƒ‰ƒZƒŒŽIÚ‘ą—v‹
+ キャラセレ鯖接続要求
request connection to character select server
S 0066 <charactor number>.B
- ƒLƒƒƒ‰ƒNƒ^‘I‘đ—v‹
+ キャラクタ選択要求
request to select character
S 0067 <charactor name>.24B <param etc>.11B
- ƒLƒƒƒ‰ƒNƒ^ěŹ—v‹
+ キャラクタ作成要求
request to create new character
S 0068 <charactor ID>.l <mail address>.40B
- ƒLƒƒƒ‰ƒNƒ^íœ—v‹
+ キャラクタ削除要求
request to delete character
R 0069 <len>.w <login ID1>.l <account ID>.l <login ID2>.l ?.32B <sex>.B {<IP>.l <port>.w <server name>.20B <login users>.l ?.2B}.32B*
- loginŹŒ÷&ŽIî•ń
+ login成功&鯖情報
information about a success of login to login server
R 006a <error No>.B
- loginŽ¸”s
+ login失敗
fail to login to login server
R 006b <len>.w <charactor select data>.106B*
- ƒLƒƒƒ‰ƒZƒŒŽIÚ‘ąŹŒ÷&ƒLƒƒƒ‰ƒNƒ^ƒf[ƒ^
+ キャラセレ鯖接続成功&キャラクタデータ
information about a success of connection to character select server & character server
<charactor select data> = <charactor ID>.l <base exp>.l <zeny>.l <job exp>.l <job level>.l ?.8B <option>.l <karma>.l <manner>.l ?.2B <HP>.w <MaxHP>.w <SP>.w <MaxSP>.w <speed>.w <class>.w <hair>.w <weapon>.2w <base level>.w <skill point>.w <head_bottom>.w <sheild>.w <head option top>.w <head option mid>.w <hair color>.w ?.w <name>.24B <STR>.B <AGI>.B <VIT>.B <INT>.B <DEX>.B <LUK>.B <charactor number>.B ?.B
R 006c <error No>.B
- ƒLƒƒƒ‰ƒNƒ^‘I‘đŽ¸”s
+ キャラクタ選択失敗
fail to select character
R 006d <charactor select data>.106B
- ƒLƒƒƒ‰ƒNƒ^ěŹŹŒ÷
+ キャラクタ作成成功
success to create new character
R 006e <error No>.B
- ƒLƒƒƒ‰ƒNƒ^ěŹŽ¸”s
+ キャラクタ作成失敗
fail to create new character
R 006f
- ƒLƒƒƒ‰ƒNƒ^íœŹŒ÷
+ キャラクタ削除成功
success to delete character
R 0070 <error No>.B
- ƒLƒƒƒ‰ƒNƒ^íœŽ¸”s
+ キャラクタ削除失敗
fail to delete character
R 0071 <charactor ID>.l <map name>.16B <ip>.l <port>.w
- ƒLƒƒƒ‰ƒNƒ^‘I‘đŹŒ÷&ƒ}ƒbƒv–ź&ƒQ[ƒ€ŽIIP/port
+ キャラクタ選択成功&マップ名&ゲーム鯖IP/port
success to select character & map name and ip/port number for game server
S 0072 <account ID>.l <charactor ID>.l <login ID1>.l <login ID2>.l <sex>.b
- ƒQ[ƒ€ŽIÚ‘ą—v‹
+ ゲーム鯖接続要求
request connection to game server
R 0073 <server tick>.l <coordidate>.3B ?.2B
- ƒQ[ƒ€ŽIÚ‘ąŹŒ÷&ƒT[ƒo‘¤1msŽžŒv&oŒťˆĘ’u
+ ゲーム鯖接続成功&サーバ側1ms時計&出現位置
success to connect to game server & server time & spawn point
R 0078 <ID>.l <speed>.w ?.w ?.w <option>.w <class>.w <hair>.w <weapon>.w <head option bottom>.w <sheild>.w <head option top>.w <head option mid>.w <hair color>.w ?.w <head dir>.w <guild>.w ?.w ?.w <manner>.w <karma>.w ?.B <sex>.B <X_Y_dir>.3B ?.B ?.B <sit>.B
- ƒ}ƒbƒvƒ[ƒhŽž&ˆÚ“ŽŽž—pAŒü‚Ť•t‚Ť—pƒLƒƒƒ‰î•ń?
+ マップロード時&移動時用、向き付き用キャラ情報?
a packet for map load or moving, infermation about a direction for character?
R 0079 <ID>.l <speed>.w ?.w ?.w <option>.w <class>.w <hair>.w <weapon>.w <head option bottom>.w <sheild>.w <head option top>.w <head option mid>.w <hair color>.w ?.w <head dir>.w <guild>.w ?.w ?.w <manner>.w <karma>.w ?.B <sex>.B <X_Y_dir>.3B ?.B ?.B
- ƒeƒŒƒ|“™‚Ě•\ŽŚ”ÍˆÍ“ŕ•Ś‚ŤƒLƒƒƒ‰—pAŒü‚Ť•t‚Ť–ł‚ľƒLƒƒƒ‰î•ń?
+ テレポ等の表示範囲内沸きキャラ用、向き付き無しキャラ情報?
information about characters in a range of a skill like teleport, no infor about direction for character?
R 007b <ID>.l <speed>.w ?.w ?.w <option>.w <class>.w <hair>.w <weapon>.w <head option bottom>.w <server tick>.l <sheild>.w <head option top>.w <head option mid>.w <hair color>.w ?.w <head dir>.w <guild>.w ?.w ?.w <manner>.w <karma>.w ?.B <sex>.B <X_Y_X_Y>.5B ?.B ?.B ?.B
- •\ŽŚ”͈͓ŕƒLƒƒƒ‰ˆÚ“Žî•ń
+ 表示範囲内キャラ移動情報
character information about walking in a range of the character can see
R 007c <ID>.l <speed>.w ?.6w <class>.w ?.7w <X_Y>.3B ?.2B
- NPC—p•\ŽŚ”͈͓ŕƒLƒƒƒ‰î•ń
+ NPC用表示範囲内キャラ情報
character information for npc in a range the character can see
S 007d
- mapƒ[ƒhI‚č
+ mapロード終り
end of load
S 007e <client tick>.l
- ƒNƒ‰ƒCƒAƒ“ƒg‘¤1msƒ^ƒCƒ}‘—M
+ クライアント側1msタイマ送信
send 1ms timer at client
R 007f <server tick>.l
- ƒT[ƒo‘¤1msƒ^ƒCƒ}‘—M
+ サーバ側1msタイマ送信
send 1ms timer at server
R 0080 <ID>.l <type>.B
- type=00 ƒLƒƒƒ‰Á–Ĺ (‰ć–ĘŠOˆÚ“ŽBŽ€‘̏Á–Ĺ“™?)
+ type=00 キャラ消滅 (画面外移動。死体消滅等?)
character disappear( walk out of screen. died and disappear?)
- type=01 ƒLƒƒƒ‰Ž€–S
+ type=01 キャラ死亡
character died
- type=02 ƒLƒƒƒ‰Á–Ĺ (ƒeƒŒƒ|,”ˆ,’ą,logout“™?)
+ type=02 キャラ消滅 (テレポ,蝿,蝶,logout等?)
character disappear( teleport, fly's wing, butterfly's wing, logout?)
R 0081 <type>.B
type=03 speed hack
speed hack
- type=08 2dƒƒOƒCƒ“
+ type=08 2重ログイン
duplicated login
S 0085 <X_Y>.3B
- ˆÚ“Ž—v‹
+ 移動要求
request to walk
R 0087 <server tick>.l <X_Y_X_Y>.5B ?.B
- ˆÚ“Ž‰ž“š
+ 移動応答
response to the request to walk
R 0088 <ID>.l <X>.w <Y>.w
- ˆÚ“Ž“r’†’âŽ~
+ 移動途中停止
stop walking
S 0089 <target ID>.l <type>.B
- type=00 target‚đ1‰ń‰Ł‚é
+ type=00 targetを1回殴る
hit target once
- type=02 Ŕ‚é
+ type=02 座る
sit down
- type=03 —§‚żă‚é
+ type=03 立ち上る
stand up
- type=07 target‚đ‰Ł‚č‘ą‚Ż‚é
+ type=07 targetを殴り続ける
continue to hit target
R 008a <src ID>.l <dst ID>.l <server tick>.l <src speed>.l <dst speed>.l <param1>.w <param2>.w <type>.B <param3>.w
type=00 param1=0 miss
param1=0 miss
- type=00 param1:ƒ_ƒ[ƒW(‚̍‡Œv?) param2:•ŞŠ„” param3:ƒAƒTƒVƒ“2“—Ź‹tŽčƒ_ƒ[ƒW
+ type=00 param1:ダメージ(の合計?) param2:分割数 param3:アサシン2刀流逆手ダメージ
param1:damage(of total?) param2:number of division param3:damage of assasin's left hand
- NPC‚Š‚ç‚̍UŒ‚‚Ěę‡Aparam2,param3‚̓Sƒ~ƒf[ƒ^
+ NPCからの攻撃の場合、param2,param3はゴミデータ
if the attack was by npc, param2 and param3 are not used
- speed‚ÍPC‚Ěę‡“ŕ•”ASPD‚Ćˆę’v
+ speedはPCの場合内部ASPDと一致
speed match the aspd if it's player character
- type=01 item‚đE‚¤ ID*2ˆČŠOƒSƒ~
+ type=01 itemを拾う ID*2以外ゴミ
pick up item, unused data except ID*2
- type=02 Ŕ‚é src IDˆČŠOƒSƒ~
+ type=02 座る src ID以外ゴミ
sit down, unused data except src ID
- type=03 —§‚ src IDˆČŠOƒSƒ~
+ type=03 立つ src ID以外ゴミ
stand up, unused data except src ID
- type=08 •Ą”UŒ‚
+ type=08 複数攻撃
multiple attack
- type=0a ƒNƒŠƒeƒBƒJƒ‹
+ type=0a クリティカル
critical attack
- type=0b ŠŽ‘S‰ń”đ
+ type=0b 完全回避
perfect evade
R 008c <len>.w <str>.?B
- ’Ęí”­Œž‘—MBƒ`ƒƒƒbƒg’†‚̓`ƒƒƒbƒg“ŕ”­Œž—p‚É‚Č‚é
+ 通常発言送信。チャット中はチャット内発言用になる
send normal speech. it become a speech for chat during a chat
- ć“Ş‚Ě"<nick> : "‚Ě•”•Ş‚̓Nƒ‰ƒCƒAƒ“ƒg‘¤‚Ĺ•t‚Ż‚鎖
+ 先頭の"<nick> : "の部分はクライアント側で付ける事
client adds "<nick> : " part.
R 008d <len>.w <ID>.l <str>.?B
- ID‚ł‚ń‚Ě”­ŒžŽóMBƒ`ƒƒƒbƒg’†‚̓`ƒƒƒbƒg“ŕ”­Œž—p‚É‚Č‚é
+ IDさんの発言受信。チャット中はチャット内発言用になる
receive a speech by ID. it become speech for chat during a chat
R 008e <len>.w <str>.?B
- ŽŠ•Ş‚Ě”­ŒžŽóMBƒ`ƒƒƒbƒg’†‚̓`ƒƒƒbƒg“ŕ”­Œž—p‚É‚Č‚é
+ 自分の発言受信。チャット中はチャット内発言用になる
receive my character's speech. it become speech for chat during a chat
S 0090 <ID>.l <type?>.B
- NPC‚ɘb‚ľ‚Š‚Ż‚éBtype‚Í01‚ľ‚ŠŒŠ‚˝Ž––ł‚ľ
+ NPCに話しかける。typeは01しか見た事無し
talk to npc. i havent seen type setted to 01.
R 0091 <map name>.16B <X>.w <Y>.w
- ŽI“ŕƒ}ƒbƒvŠÔˆÚ“ŽAƒeƒŒƒ|,”ˆ“™—p
+ 鯖内マップ間移動、テレポ,蝿等用
map change in the same server, for instance, teleport, fly's wing...
R 0092 <map name>.16B <X>.w <Y>.w <IP>.l <port>.w
- ŽIŠÔˆÚ“Ž
+ 鯖間移動
map change to the other server
R 0093
- 8ŒŽ’†‚É1‰ń‚ž‚ŻŠĎ‘ށB“ä
+ 8月中に1回だけ観測。謎
this packet observed in august once. i dont know what it is.
S 0094 <ID>.l
- ID‚ĚƒLƒƒƒ‰–ź“™—v‹B0095‚Š0195‚Ě•Ô“š‚Ş‚ ‚é‚Í‚¸
+ IDのキャラ名等要求。0095か0195の返答があるはず
request a character name for ID. 0095 or 0195 response is expected.
R 0095 <ID>.l <nick>.24B
- NPC,ƒMƒ‹ƒh–˘Š‘ŽPC‚Ě0094‚Ö‚Ě•Ô“š
+ NPC,ギルド未所属PCの0094への返答
response for 0094 request from npc or player character without guild.
- 0193 <charID>.l ‚Ŗ₢‡‚í‚š‚Ä
+ 0193 <charID>.l で問い合わせて
request by <charID>.l
- 0194 <charID>.l <name>.24B ‚̉ž“š‚Ĺ“ž‚Ä‚Ü‚ˇB
+ 0194 <charID>.l <name>.24B の応答で得てます。
get response by <charID>.l <name>.24B
S 0096 <len>.w <nick>.24B <message>.?B
- wis‘—M
+ wis送信
send wisper
R 0097 <len>.w <nick>.24B <message>.?B
- wisŽóM
+ wis受信
receive wisper
R 0098 <type>.B
- type=00 wis‘—MŹŒ÷
+ type=00 wis送信成功
success to send wisper
- type=01 wis‘ŠŽč‚Şlogin‚ľ‚Ä‚Č‚˘?
+ type=01 wis相手がloginしてない?
target character is not loged in?
- type=02 wis‘ŠŽč‚Š‚çignore‚ł‚ę‚Ä‚é?
+ type=02 wis相手からignoreされてる?
ignored by target
R 009a <len>.w <message>.?B
- GM‚Š‚ç‚Ě“V‚̐ş
+ GMからの天の声
GM announce
S 009b <head dir>.w <dir>.B
- ‘Ě&“Ş‚Ě•űŒü•ĎX—v‹BƒNƒ‰ƒCƒAƒ“ƒg‚ւ̉ž“š‚Í–ł‚˘–Í—l
+ 体&頭の方向変更要求。クライアントへの応答は無い模様
request a change of head and body direction. no response to client.
- dir‚Í00`07‚Ĺ‘Ě‚ĚŒü‚ŤB00‚Ĺ–k‚Š‚ç”˝ŽžŒv‰ń‚č‚É45‹’PˆĘ‚Ĺ07‚Ü‚Ĺ
+ dirは00〜07で体の向き。00で北から反時計回りに45°単位で07まで
dir can be 00-07 and it's for body direction. 00 means north and go counter-clockwise upto 07 by 45 degrees.
- head dir‚Í00,01,02‚Ĺ“Ş‚ĚŒü‚ŤB00‚Ĺ‘Ě‚Ć“Ż‚śA01‚މEA02‚ލś
+ head dirは00,01,02で頭の向き。00で体と同じ、01が右、02が左
head dir can be 00,01,02. 00 means the same direction of body, 01 means right, 02 menas left.
R 009c <ID>.l <head dir>.w <dir>.B
- ID‚Ě‘Ě&“Ş‚Ě•űŒü•ĎX
+ IDの体&頭の方向変更
change body and head direction for ID.
R 009d <ID>.l <item ID>.w <identify flag>.B <X>.w <Y>.w <amount>.w <subX>.B <subY>.B
- ˆÚ“Ž“™‚ŏ°ƒAƒCƒeƒ€‚މć–Ę“ŕ‚É“ü‚Á‚Ä‚Ť‚˝Žž
+ 移動等で床アイテムが画面内に入ってきた時
when the item on the floor will appear on the screen by walking etc.
R 009e <ID>.l <item ID>.w <identify flag>.B <X>.w <Y>.w <subX>.B <subY>.B <amount>.w
- item dropB‰˝ŒĚ‚Š009d‚Ćƒ}ƒX–Ú“ŕˆĘ’u&ŒÂ”‚Ş“ü‚ę•Ď‚Á‚Ä‚˘‚é
+ item drop。何故か009dとマス目内位置&個数が入れ変っている
item drop. coordinate and amount is different from 009d.
S 009f <ID>.l
- ID‚̏°ƒAƒCƒeƒ€‚đE‚¤
+ IDの床アイテムを拾う
pick up item on the floor.
R 00a0 <index>.w <amount>.w <item ID>.w <identify flag>.B <attribute?>.B <refine>.B <card>.4w <equip type>.w <type>.B <fail>.B
- fail=02 Žć“žŽ¸”s?
+ fail=02 取得失敗?
fail to pick up?
- fail=06 ƒ‹[ƒgŒ –ł‚ľBŽć“žŽ¸”s
+ fail=06 ルート権無し。取得失敗
no right to pick up. fail to pick up.
R 00a1 <ID>.l
- ID‚̏°ƒAƒCƒeƒ€Á‹Ž
+ IDの床アイテム消去
disappear the floor item
S 00a2 <index>.w <amount>.w
- Š—LƒAƒCƒeƒ€‚đ—Ž‚ˇ
+ 所有アイテムを落す
drop inventory item.
R 00a3 <len>.w {<index>.w <item ID>.w <type>.B <identify flag>.B <amount>.w ?.2B}.10B*
- Š—LÁ–Ő•i&ŽűW•iƒŠƒXƒg
+ 所有消耗品&収集品リスト
list of consumptive item and collecter item that you have
R 00a4 <len>.w {<index>.w <item ID>.w <type>.B <identify flag>.B <equip type>.w <equip point>.w <attribute?>.B <refine>.B <card>.4w}.20B*
- Š—L‘•”őƒŠƒXƒg
+ 所有装備リスト
list of equipments that you have
R 00a5 <len>.w {<index>.w <item ID>.w <type>.B <identify flag>.B <amount>.w ?.2B}.10B*
- ƒJƒvƒ‰‚ł‚ń‚É—a‚Ż‚Ä‚ ‚éÁ–Ő•i&ŽűW•iƒŠƒXƒg
+ カプラさんに預けてある消耗品&収集品リスト
list of consumptive item and collecter item that you leave with capra.
R 00a6 <len>.w {<index>.w <item ID>.w <type>.B <identify flag>.B <equip type>.w <equip point>.w <attribute?>.B <refine>.B <card>.4w}.20B*
- ƒJƒvƒ‰‚ł‚ń‚É—a‚Ż‚Ä‚ ‚é‘•”őƒŠƒXƒg
+ カプラさんに預けてある装備リスト
list of equipments that you leave with capra.
S 00a7 <index>.w <ID>.l
- ŠŽƒAƒCƒeƒ€index‚đŽg—p‚ˇ‚éBID‚ÍŽŠ•Ş‚Ě‚Ý?
+ 所持アイテムindexを使用する。IDは自分のみ?
use index item. ID can be only myself?
R 00a8 <index>.w <amount>.w <type>.B
- ƒAƒCƒeƒ€Žg—p‰ž“šBtype=00‚Ěę‡Žg—pŽ¸”s? amount‚ŕƒSƒ~‚Ě–Í—l
+ アイテム使用応答。type=00の場合使用失敗? amountもゴミの模様
response to use item. type=00 means failed. amount is unused.
- type=01‚Ěę‡ŹŒ÷‚ŁAamount‚ÍŽg—pŒă‚ĚŽc‚čŒÂ”
+ type=01の場合成功で、amountは使用後の残り個数
type=01 means success to use item, amount is a number of rest of the item.
S 00a9 <index>.w <equip type>.w
- ƒAƒCƒeƒ€‘•”ő
+ アイテム装備
equip item.
R 00aa <index>.w <equip point>.w <type>.B
- ƒAƒCƒeƒ€‘•”ő‰ž“šBtype=00‚Ěę‡‘•”őŽ¸”s? equip point‚ŕƒSƒ~‚Ě–Í—l
+ アイテム装備応答。type=00の場合装備失敗? equip pointもゴミの模様
response to equip item. type=00 means fail. equip point is unused.
S 00ab <index>.w
- ‘•”ő‰đœ
+ 装備解除
take off equipment.
R 00ac <index>.w <equip point>.w <type>.B
- ‘•”ő‰đœ‰ž“šBtype=00‚Ěę‡Ž¸”s? equip point‚ŕƒSƒ~‚Ě–Í—l
+ 装備解除応答。type=00の場合失敗? equip pointもゴミの模様
response to take off equipment. type=00 means fail? equip point is unused.
R 00af <index>.w <amount>.w
- ƒAƒCƒeƒ€”Œ¸­BamountŒÂ‚ž‚ŻŒ¸‚炡
+ アイテム数減少。amount個だけ減らす
decrease number of item by amount.
R 00b0 <type>.w <val>.l
- FX‚Č”\—Í’l‚̍XVBˆČ‰ştype:‘Ήž‚ˇ‚鐔’l‚đ—ń‹“
+ 色々な能力値の更新。以下type:対応する数値を列挙
update values of various status.
- 0000:speed 0003:ˆŤs’l 0004:ƒ}ƒi[ƒ|ƒCƒ“ƒg 0005:HP 0006:MaxHP
+ 0000:speed 0003:悪行値 0004:マナーポイント 0005:HP 0006:MaxHP
0000:speed 0003:carma 0004:manner point 0005:HP 0006: MaxHP
- 0007:SP 0008:MaxSP 0009:ƒXƒe[ƒ^ƒXƒ|ƒCƒ“ƒg 000b:ƒx[ƒXƒŒƒxƒ‹
+ 0007:SP 0008:MaxSP 0009:ステータスポイント 000b:ベースレベル
0007:SP 0008:MaxSP 0009:status point 000b: base level
- 000c:ƒXƒLƒ‹ƒ|ƒCƒ“ƒg 0018:d—Ę(•\ŽŚ‚ł‚ę‚Ă鐔Žš‚Ě10”{)
+ 000c:スキルポイント 0018:重量(表示されてる数字の10倍)
000c:skil point 0018:weight(this number must be 10 times greater than it's been diplayed.)
- 0019:Ĺ‘ĺd—Ę(•\ŽŚ‚ł‚ę‚Ă鐔Žš‚Ě10”{)
+ 0019:最大重量(表示されてる数字の10倍)
0019:max weight(this number must be 10 times greater than it's been diplayed.)
- 0029:ATK‘O 002a:ATKŒă 002b:MATK‘O 002c:MATKŒă
+ 0029:ATK前 002a:ATK後 002b:MATK前 002c:MATK後
0029:attack in front 002a:attack in back 002b:matk in front 002c:matk in back
- 002d:DEF‘O 002e:DEFŒă 002f:MDEF‘O 0030:MDEFŒă
+ 002d:DEF前 002e:DEF後 002f:MDEF前 0030:MDEF後
002d:deffence in front 002e:deffence in back 002f:mdef in front 0030:mdef in back
- 0031:HIT 0032:FLEE‘O 0033:FLEEŒă 0034:ƒNƒŠƒeƒBƒJƒ‹
+ 0031:HIT 0032:FLEE前 0033:FLEE後 0034:クリティカル
0031:hit 0032:flee in front 0033:flee in back 0034: critical
- 0035:ASPD(2ms’PˆĘ‚ĚŽžŠÔ?) 0037:ƒWƒ‡ƒuƒŒƒxƒ‹
+ 0035:ASPD(2ms単位の時間?) 0037:ジョブレベル
0035:aspd(time by 2ms?) 0037:job level
- 0082:“ä ATKŒă‚Ć“Ż‚ś”Žš?
+ 0082:謎 ATK後と同じ数字?
0082:unknown. is it the same number as atk in back?
R 00b1 <type>.w <val>.l
- FX‚Č”\—Í’l‚̍XVBˆČ‰ştype:‘Ήž‚ˇ‚鐔’l‚đ—ń‹“
+ 色々な能力値の更新。以下type:対応する数値を列挙
update valies of various status. below is the list of corresponding type and value.
- 0001:ƒx[ƒX‘¤ŒoŒą’l 0002:ƒWƒ‡ƒu‘¤ŒoŒą’l 0014:zeny
+ 0001:ベース側経験値 0002:ジョブ側経験値 0014:zeny
0001:base experience 0002:job experience 0014:zeny
- 0016:ƒx[ƒX‘¤•K—vŒoŒą’l 0017:ƒWƒ‡ƒu‘¤•K—vŒoŒą’l
+ 0016:ベース側必要経験値 0017:ジョブ側必要経験値
0016:base experience that needed to level up 0017:job experience that needed to level up
- ƒŔ1‚Ĺ‚Í00b0‚Íval‚ŞshortA00b1‚Íval‚Şlong‚Ć‚˘‚¤Žg‚˘•Ş‚Ż‚Ş‚ ‚Á‚˝‚ń‚ž‚Ż‚Ç
- Ą‚Ć‚Č‚Á‚Ă͍ˇ‚Ş–ł‚­‚Č‚Á‚āA–Ó’°‚Ý‚˝‚˘‚Č‚ŕ‚Ě?
+ β1では00b0はvalがshort、00b1はvalがlongという使い分けがあったんだけど
+ 今となっては差が無くなって、盲腸みたいなもの?
in beta1, value of 00b0 was short and value of 00b1 was long,
but not there are no difference.
S 00b2 <type>.B
- type=00 Ž€–SŽžƒŠƒXƒ^[ƒg
+ type=00 死亡時リスタート
restart game when character died
- type=01 ƒLƒƒƒ‰ƒZƒŒ—v‹
+ type=01 キャラセレ要求
request character select
R 00b3 <type>.B
- type=01 ƒLƒƒƒ‰ƒZƒŒ‰ž“š
+ type=01 キャラセレ応答
response to character select
R 00b4 <len>.w <ID>.l <str>.?B
- ID‚ĚNPC‚Š‚ç‚ĚƒƒbƒZ[ƒW
+ IDのNPCからのメッセージ
message from npc id
R 00b5 <ID>.l
- ID‚ĚNPC‚Ć‚ĚƒƒbƒZ[ƒWƒEƒBƒ“ƒhƒE‚É"NEXT"ƒAƒCƒRƒ“‚đo‚ˇ
+ IDのNPCとのメッセージウィンドウに"NEXT"アイコンを出す
display the "NEXT" icon to npc message window
R 00b6 <ID>.l
- ID‚ĚNPC‚Ć‚ĚƒƒbƒZ[ƒWƒEƒBƒ“ƒhƒE‚É"CLOSE"ƒAƒCƒRƒ“‚đo‚ˇ
+ IDのNPCとのメッセージウィンドウに"CLOSE"アイコンを出す
display the "CLOSE" icon to npc message window
R 00b7 <len>.w <ID>.l <str>.?B
- ID‚ĚNPC‚̉ď˜b‚Ĺ‘I‘đ€–Ú•\ŽŚBŠe€–Ú‚Í':'‚Ĺ‹ćŘ‚ç‚ę‚é
+ IDのNPCの会話で選択項目表示。各項目は':'で区切られる
display select options in npc message window. each options devided by ":".
S 00b8 <ID>.l <select>.B
- ID‚ĚNPC‚̉ď˜b‚Ě‘I‘đBŠe€–ڂɏ‡‚É1`‚ސU‚ç‚ę‚éBff‚ĹƒLƒƒƒ“ƒZƒ‹?
+ IDのNPCの会話の選択。各項目に順に1〜が振られる。ffでキャンセル?
select options in ncp message window. number starts from 1 for each options. cancel for ff?
S 00b9 <ID>.l
- ID‚ĚNPC‚Ƃ̉ď˜bBNEXTƒ{ƒ^ƒ“‚đ‰Ÿ‚ľ‚˝
+ IDのNPCとの会話。NEXTボタンを押した
"NEXT" button clicked in ncp message window.
S 00bb <type>.w <amount>.B
- ƒXƒe[ƒ^ƒXup—v‹Btype‚Í000d‚Š‚ç0012‚ޏ‡‚ÉSTR,AGI,VIT,INT,DEX,LUK‚ɑΉž
+ ステータスup要求。typeは000dから0012が順にSTR,AGI,VIT,INT,DEX,LUKに対応
request update status. type can be 000d for STR, 000e for AGI, 000f for VIT, 0010 for INT, 0011 for DEX, 0012 for LUK.
R 00bc <type>.w <fail>.B <val>.B
- ƒXƒe[ƒ^ƒXup‰ž“šBfail=01‚Ȃ琏Œ÷Btype‚Í00bb‚Ć“Ż‚śBval‚͏ă‚Á‚˝Œă‚̐”Žš
+ ステータスup応答。fail=01なら成功。typeは00bbと同じ。valは上った後の数字
respnse to update status. it's successeeded if fail=01. type is the same value as packet number 00bb. val is a value of increase.
- Ž¸”s—á‚ÍŒŠ‚˝Ž––ł‚˘‚Ě‚Ĺ“äBƒXƒe[ƒ^ƒXƒ|ƒCƒ“ƒg‚Ş‘Ť‚č‚Č‚˘ó‘Ô‚Ĺ
- 00bb‚đ”­s‚Ĺ‚Ť‚éƒNƒ‰ƒCƒAƒ“ƒg‚Ş—L‚ę‚΁Afail=00‚É‚Č‚é‚Ě‚Ĺ‚Í‚Č‚˘‚Š‚Ć—\‘z
+ 失敗例は見た事無いので謎。ステータスポイントが足りない状態で
+ 00bbを発行できるクライアントが有れば、fail=00になるのではないかと予想
it's unknown when it's failed because i havent ever seen. i think it will be fail=00 when it's failed.
R 00bd <status point>.w <STR>.B <STRupP>.B <AGI>.B <AGIupP>.B <VIT>.B <VITupP>.B <INT>.B <INTupP>.B <DEX>.B <DEXupP>.B <LUK>.B <LUKupP>.B <ATK>.w <ATKbonus>.w <MATKmax>.w <MATKmin>.w <DEF>.w <DEFbonus>.w <MDEF>.w <MDEFbonus>.w <HIT>.w <FLEE>.w <FLEEbonus>.w <critical>.w ?.w
- ‚Ü‚Ć‚ß‚ÄƒXƒe[ƒ^ƒXî•ń‚đ‘—‚éƒpƒPƒbƒg
+ まとめてステータス情報を送るパケット
packet of information for various status.
R 00be <type>.w <val>.B
- •K—vƒXƒe[ƒ^ƒXƒ|ƒCƒ“ƒgXVƒpƒPƒbƒgBtype‚Í0020`0025‚ޏ‡‚ÉSTR`LUK‚ɑΉž
+ 必要ステータスポイント更新パケット。typeは0020〜0025が順にSTR〜LUKに対応
packet to update required status point. type can be 0020-0025 for STR-LUK.( see packet number 00bb for detals.)
S 00bf <type>.B
- ƒGƒ‚[ƒVƒ‡ƒ“‚đo‚ˇBtype‚Í00-0c(,0d)‚ŞALT+1`ALT+9,ALT+0,ƒ`ƒ‡ƒL,ƒO[,ƒp[(,ŠŘ‘Šř)‚ɑΉž
+ エモーションを出す。typeは00-0c(,0d)がALT+1〜ALT+9,ALT+0,チョキ,グー,パー(,韓国旗)に対応
display emotion. type can be 00-0c(,0d) for ALT+1-ALT+9,ALT+0,CTRL+-,CTRL++,CTRL+\(,korean flag).
R 00c0 <ID>.l <type>.B
- ID‚̐l‚ރGƒ‚[ƒVƒ‡ƒ“‚đo‚ľ‚˝Btype‚Í00bf‚Ć“Ż‚ś
+ IDの人がエモーションを出した。typeは00bfと同じ
emotion by ID. type is the same as 00bf.
S 00c1
- loginl”–₢‡‚í‚š
+ login人数問い合わせ
request to ask loged in people.
R 00c2 <val>.l
- loginl”‰ž“š
+ login人数応答
response to asking loged in people.
R 00c3 <ID>.l <type>.B <val>.B
- ŒŠ‚˝–Ú•ĎXBtype‚Í00‚Ĺ–{‘Ě(“]EŽž“™)A02‚Ş•ŠíA03‚Ş“Ş(‰ş)A04‚Ş“Ş(ă)A05‚Ş“Ş(’†)A08‚ޏ‚
+ 見た目変更。typeは00で本体(転職時等)、02が武器、03が頭(下)、04が頭(上)、05が頭(中)、08が盾
change looks. type=00 means body(by jobs), 02 is weapon, 03 is head(lower), 04 is head(upper), 05 is head(middle), 08 is shield.
R 00c4 <ID>.l
- ˜b‚Š‚Ż‚˝NPC‚ޏ¤l‚ž‚Á‚˝‚Ě‚Ĺbuy/sell‘I‘đ‘‹o
+ 話かけたNPCが商人だったのでbuy/sell選択窓出
display "BUY" or "SELL" window by npc ID
R 00c5 <ID>.l <type>.B
- buy/sell‘I‘đBtype=00‚Č‚çbuyBtype=01‚Č‚çsell
+ buy/sell選択。type=00ならbuy。type=01ならsell
select "BUY" or "SELL". type=00 is buy, type=01 is sell.
R 00c6 <len>.w {<value>.l <DCvalue>.l <type>.B <item ID>.w}.11B*
- NPC‚Ě‚¨“Xbuy‘I‘𮾁BDCvalue‚͏¤lDCŒă‚Ě’l’i
+ NPCのお店buy選択時。DCvalueは商人DC後の値段
list of marchandizes when clicked "BUY". DCvalue is a value of Discount Skill applied.
R 00c7 <len>.w {<index>.w <value>.l <OCvalue>.l}.10B*
- NPC‚Ě‚¨“Xsey‘I‘𮾁BOCvalue‚͏¤lOCŒă‚Ě’l’i
+ NPCのお店sey選択時。OCvalueは商人OC後の値段
list of items when clicked "SELL". OCvalue is a value of Over Charge Skill applied.
S 00c8 <len>.w {<amount>.w <item ID>.w}.4B*
- NPC‚Ě‚¨“X‚Š‚甃‚¤
+ NPCのお店から買う
buy item from npc shop.
S 00c9 <>.w {<index>.w <amount>.w}.4B*
- NPC‚Ě‚¨“X‚É”„‚é
+ NPCのお店に売る
sell item to npc shop.
R 00ca <type>.B
- NPC‚Š‚çw“üI—šBtype=00ŹŒ÷
+ NPCから購入終了。type=00成功
response for buying item. type=00 meanse successetion.
R 00cb <type>.B
- NPC‚Ö”„‹pI—šBtype=00ŹŒ÷
+ NPCへ売却終了。type=00成功
response for selling item. type=00 means success.
S 00cf <nick>.24B <type>.B
- type=00 nick‚Š‚ç‚Ě”­ŒžŽó‚Ż•t‚Ż‹‘”Ű (/ex nick)
+ type=00 nickからの発言受け付け拒否 (/ex nick)
deny speech from nick(/ex nick).
- type=01 nick‚Š‚ç‚Ě”­ŒžŽó‚Ż•t‚Ż‹–‰Â (/in nick)
+ type=01 nickからの発言受け付け許可 (/in nick)
allow speech from nick(/in nick)
S 00d0 <type>len.B
- type=00 ‘S‚Ä‚Ě”­ŒžŽó‚Ż•t‚Ż‹‘”Ű (/exall)
+ type=00 全ての発言受け付け拒否 (/exall)
deny all speech(/exall)
- type=01 ‘S‚Ä‚Ě”­ŒžŽó‚Ż•t‚Ż‹–‰Â (/inall)
+ type=01 全ての発言受け付け許可 (/inall)
allow all speech(/inall)
R 00d1 <type>.B <fail>.B
- fail=00 ”­ŒžŽó‚Ż•t‚Ż‹‘”ېŹŒ÷
+ fail=00 発言受け付け拒否成功
success to deny speech
- fail=01 ”­ŒžŽó‚Ż•t‚Ż‹‘”ŰŽ¸”s
+ fail=01 発言受け付け拒否失敗
fail to deny speech
R 00d2 <type>.B <fail>.B
- fail=00 ‘S”­ŒžŽó‚Ż•t‚Ż‹‘”ېŹŒ÷
+ fail=00 全発言受け付け拒否成功
seccess to allow speech
- fail=01 ‘S”­ŒžŽó‚Ż•t‚Ż‹‘”ŰŽ¸”s
+ fail=01 全発言受け付け拒否失敗
fail to alloe speech
S 00d5 <len>.w <limit>.w <pub>.B <passwd>.8B <title>.?B
- ƒ`ƒƒƒbƒg—§‚āB‚ą‚ą‚Š‚çƒ`ƒƒƒbƒgŠÖŒW‚Ş‘ą‚­‚Ż‚Ç’˛‚×‚ŞŠĂ‚˘‚̂ŕ⊎‚ć‚ë
+ チャット立て。ここからチャット関係が続くけど調べが甘いので補完よろ
create chat room.(from now on, im not sure for packets about chat.)
R 00d6 <fail>.B
- ƒ`ƒƒƒbƒg—§‚ĉž“š
+ チャット立て応答
response to create chat room.
R 00d7 <len>.w <owner ID>.l <chat ID>.l <limit>.w <users>.w <pub>.B <title>.?B
- ‰ć–Ę“ŕƒ`ƒƒƒbƒgî•ń
+ 画面内チャット情報
information for chat room in the screen.
R 00d8 <chat ID>.l
- ƒ`ƒƒƒbƒgÁ‹Ž
+ チャット消去
delete chat room.
S 00d9 <chat ID>.l <passwd>.8B
- ƒ`ƒƒƒbƒgŽQ‰Á—vż
+ チャット参加要請
request to join the chat.
R 00da <fail>.B
- ƒ`ƒƒƒbƒgŽQ‰ÁŽ¸”s
+ チャット参加失敗
fail to join the chat.
R 00db <len>.w <chat ID>.l {<index>.l <nick>.24B}.28B*
- ƒ`ƒƒƒbƒgŽQ‰ÁŽŇƒŠƒXƒg
+ チャット参加者リスト
list of people in the chat room.
R 00dc <users>.w <nick>.24B
- ƒ`ƒƒƒbƒg‚Ö‚ĚŽQ‰ÁŽŇ’ljÁ(?)
+ チャットへの参加者追加(?)
add person to the chat room.
R 00dd <index>.w <nick>.24B <fail>.B
- ƒ`ƒƒƒbƒg‚Š‚çŽQ‰ÁŽŇ”˛‚Ż
+ チャットから参加者抜け
leave the chat room.
S 00de <len>.w <limit>.w <pub>.B <passwd>.8B <title>.?B
- ƒ`ƒƒƒbƒgƒXƒe[ƒ^ƒX•ĎX
+ チャットステータス変更
change chat room status.
R 00df <len>.w <owner ID>.l <chat ID>.l <limit>.w <users>.w <pub>.B <title>.?B
- ƒ`ƒƒƒbƒgƒXƒe[ƒ^ƒX•ĎXŹŒ÷
+ チャットステータス変更成功
success to change chat room status.
S 00e0 ?.l <nick>.24B
- ƒ`ƒƒƒbƒgƒ‹[ƒ€Š—LŽŇ•ĎX—v‹?
+ チャットルーム所有者変更要求?
request to change owner of the chat room?
R 00e1 <index>.l <nick>.24B
- ƒ`ƒƒƒbƒgŽQ‰ÁŽŇ”ԍ†•t‚Ż’ź‚ľ?
+ チャット参加者番号付け直し?
re-number people in the chat room?
S 00e2 <nick>.24B
- ƒ`ƒƒƒbƒgkick
+ チャットkick
kick nick from chat room.
S 00e3
- ƒ`ƒƒƒbƒg”˛‚Ż
+ チャット抜け
leave chat room.
S 00e4 <ID>.l
- Žć‚čˆř‚Ť—v‹
+ 取り引き要求
request trade.
R 00e5 <nick>.24B
- Žć‚čˆř‚Ť—vżŽó‚Ż
+ 取り引き要請受け
recieve a request to trade.
S 00e6 <type>.B
- type=03 Žć‚čˆř‚Ť—vżok
+ type=03 取り引き要請ok
trade ok.
- type=04 Žć‚čˆř‚Ť—vżƒLƒƒƒ“ƒZƒ‹
+ type=04 取り引き要請キャンセル
trade canceled.
R 00e7 <fail>.B
- Žć‚čˆř‚Ť—v‹‰ž“š
+ 取り引き要求応答
response to requesting trade.
- fail=00 ‹——Ł‚މ“‰ß‚Ź
+ fail=00 距離が遠過ぎ
too far.
- fail=03 —vżŽó‚Ż‚Ä‚­‚ę‚˝
+ fail=03 要請受けてくれた
allowed the trade.
- fail=04 ƒLƒƒƒ“ƒZƒ‹‚ł‚ę‚˝?
+ fail=04 キャンセルされた?
trade canceled?
S 00e8 <index>.w <amount>.l
- ƒAƒCƒeƒ€’ljÁBindex=0‚Ĺzeny’ljÁBł‹KƒNƒ‰ƒCƒAƒ“ƒg‚Ĺ‚Ízeny‚Í00eb‚Ě’ź‘O‚Ě‚Ý
+ アイテム追加。index=0でzeny追加。正規クライアントではzenyは00ebの直前のみ
add item. index=0 means adding zeny. for official client, zeny can be added only in packet number 00eb.
R 00e9 <amount>.l <type ID>.w <identify flag>.B <attribute?>.B <refine>.B <card>.4w
- ‘ŠŽč•ű‚Š‚ç‚ĚƒAƒCƒeƒ€’ljÁ
+ 相手方からのアイテム追加
added item from other character.
R 00ea <index>.w <fail>.B
- fail=00 ƒAƒCƒeƒ€’ljÁŹŒ÷
+ fail=00 アイテム追加成功
success to add item.
- fail=01 ’ljÁŽ¸”sB‘ŠŽč‘¤d—ĘƒI[ƒo
+ fail=01 追加失敗。相手側重量オーバ
fail to add item. the player was over weighted.
S 00eb
- ƒAƒCƒeƒ€’ljÁŠŽ—š(ok‰Ÿ‚ľ)
+ アイテム追加完了(ok押し)
completed adding item.(cliecked OK)
R 00ec <fail>.B
- fail=00 ŽŠ•Ş‚Š‚ç‚ĚokŽó—Ě
+ fail=00 自分からのok受領
recieved "OK" from myself
- fail=01 ‘ŠŽč‚Š‚ç‚ĚokŽó—Ě
+ fail=01 相手からのok受領
recieved "OK" from the other.
S 00ed
- Žć‚čˆř‚ŤƒLƒƒƒ“ƒZƒ‹
+ 取り引きキャンセル
trade canceled.
R 00ee
- Žć‚čˆř‚Ť‚ރLƒƒƒ“ƒZƒ‹‚ł‚ę‚Ü‚ľ‚˝
+ 取り引きがキャンセルされました
message of "trade canceled"
S 00ef
- Žć‚čˆř‚Ť‹–‘ř(trade‰Ÿ‚ľ)
+ 取り引き許諾(trade押し)
trade OKed. (cliecked Trade)
R 00f0
- Žć‚čˆř‚ŤŠŽ—š
+ 取り引き完了
trade completed.
R 00f2 <num>.w <limit>.w
- ƒJƒvƒ‰‚ł‚ń‹–—eƒAƒCƒeƒ€ŒÂ”&Œťó
+ カプラさん許容アイテム個数&現状
number of item that capra can stock and number of item that capra stocks now.
S 00f3 <index>.w <amount>.l
- ƒJƒvƒ‰‚ł‚ń‘qŒÉ‚ɃAƒCƒeƒ€•ú‚荾‚Ý
+ カプラさん倉庫にアイテム放り込み
put item to capra's warehouse.
R 00f4 <index>.w <amount>.l <type ID>.w <identify flag>.B <attribute?>.B <refine>.B <card>.4w
- ƒJƒvƒ‰‚ł‚ń‘qŒÉ‚ĚƒAƒCƒeƒ€’ljÁ
+ カプラさん倉庫のアイテム追加
add item to capra's warehouse.
S 00f5 <index>.w <amount>.l
- ƒJƒvƒ‰‚ł‚ń‘qŒÉ‚Š‚çƒAƒCƒeƒ€Žć‚čo‚ľ
+ カプラさん倉庫からアイテム取り出し
take out item from capra's warehouse.
R 00f6 <index>.w <amount>.l
- ƒJƒvƒ‰‚ł‚ń‘qŒÉ‚ĚƒAƒCƒeƒ€íœ
+ カプラさん倉庫のアイテム削除
delete item in the capra's warehouse.
S 00f7
- ƒJƒvƒ‰‚ł‚ń‘qŒÉ•Â‚ś
+ カプラさん倉庫閉じ
request to close capra's warehouse.
R 00f8
- ƒJƒvƒ‰‚ł‚ń‘qŒÉ•Â‚ś‰ž“š
+ カプラさん倉庫閉じ応答
response to close capra's warehouse.
S 00f9 <party name>.24B
- ƒp[ƒeƒBěŹ
+ パーティ作成
create party.
R 00fa <fail>.B
- fail=00 ěŹŹŒ÷
+ fail=00 作成成功
success to create party.
R 00fb <len>.w <party name>.24B {<ID>.l <nick>.24B <map name>.16B <leader>.B <offline>.B}.46B*
- ƒp[ƒeƒBî•ń‚Ü‚Ć‚ß‚Ä‘—‚č
+ パーティ情報まとめて送り
packet for various information about party.
S 00fc <ID>.l
- ƒp[ƒeƒBŠŠ—U‚ˇ‚é
+ パーティ勧誘する
invate player to the party.
R 00fd <nick>.24B <fail>.B
- fail=00 ‘ŠŽč‚ÍŠů‚Ƀp[ƒeƒB‚É“ü‚Á‚Ä‚˘‚˝
+ fail=00 相手は既にパーティに入っていた
the player is already in other party.
- fail=01 ‘ŠŽč‚É‹‘”Ű‚ł‚ę‚˝
+ fail=01 相手に拒否された
invitaion was denied.
- fail=02 ŠŠ—UŹŒ÷
+ fail=02 勧誘成功
success to invite,
R 00fe <ID>.l <party name>.24B
- ƒp[ƒeƒB‚É—U‚í‚ę‚˝
+ パーティに誘われた
invited to party.
S 00ff <ID>.l <fail>.l
- ƒp[ƒeƒB‚É—U‚í‚ę‚˝Žž‚Ě•Ô“šBfail=1 ok•Ô“š?
+ パーティに誘われた時の返答。fail=1 ok返答?
response when player was invited to party. fail=1 means OK?
R 0100
- ? ƒp[ƒeƒBŠÖ˜A?
+ ? パーティ関連?
unknown. related to party?
S 0101 <exp>.w <item?>.w
- ƒp[ƒeƒBÝ’č•ĎX
+ パーティ設定変更
change party setting.
R 0102 <exp>.w <item?>.w
- ƒp[ƒeƒBÝ’čŒťó? exp=2‚Ěę‡‚ÍŒö•˝”z•ŞÝ’莸”s?
+ パーティ設定現状? exp=2の場合は公平配分設定失敗?
party setting status. when exp=2, fail to set "equality for experience"?
R 0104 <ID>.l ?.l <X>.w <Y>.w <offline>.B <party name>.24B <nick>.24B <map name>.16B
- ƒp[ƒeƒB1l•Şî•ńXV
+ パーティ1人分情報更新
information about a one player in th party.
R 0105 <ID>.l <nick>.24B <fail>.B
- nick‚ł‚ń‚ރp[ƒeƒB‚Š‚ç—Ł’E
+ nickさんがパーティから離脱
nick leaves the party.
R 0106 <ID>,l <HP>.w <MaxHP>.w
- ƒp[ƒeƒBƒƒ“ƒoHPXV
+ パーティメンバHP更新
update HP of party members.
R 0107 <ID>.l <X>.w <Y>.w
- ƒp[ƒeƒBƒƒ“ƒoˆĘ’uXV
+ パーティメンバ位置更新
update coordinates of party members.
S 0108 <len>.w <message>.?B
- ƒp[ƒeƒB“ŕ”­Œž
+ パーティ内発言
send speech for party memebers.
R 0109 <len>.w <ID>.l <message>.?B
- ƒp[ƒeƒB“ŕ”­ŒžŽóM
+ パーティ内発言受信
receive speech for party memebers.
R 010a <type ID>.w
- MVPƒAƒCƒeƒ€Žć“ž
+ MVPアイテム取得
get MVP item.
R 010b <exp>.l
- MVPŒoŒą’lŽć“ž
+ MVP経験値取得
get MVP experience.
R 010c <ID>.l
- MVPƒLƒƒƒ‰•\ŽŚ
+ MVPキャラ表示
display MVP character.
R 010e <skill ID>.w <lv>.w <sp>.w <range>.w <up>.B
- ƒXƒLƒ‹î•ńXVBsp‚Í–˘Žg—p?
+ スキル情報更新。spは未使用?
update skill sinformation. sp is unused?
R 010f <len>.w {<skill ID>.w <target type>.w ?.w <lv>.w <sp>.w <range>.w <skill name>.24B <up>.B}.37B*
- ƒXƒLƒ‹î•ń‚̉ňBskill name‚Íˆę•”—Ź‚ę‚Ä—ˆ‚Č‚˘•¨‚Ş‚ ‚遄AL_PNEUMA,PR_SLOWPOISON“™
+ スキル情報の塊。skill nameは一部流れて来ない物がある>AL_PNEUMA,PR_SLOWPOISON等
bunch of information about skill. some of skill name is not send (AL_PNEUMA, PR_SLOWPOISON etc).
- target type‚Í0-ƒpƒbƒVƒuA1-“GA2-ęŠA4-‘ŚŽž”­“ŽA16-–Ą•ű
+ target typeは0-パッシブ、1-敵、2-場所、4-即時発動、16-味方
target type is 0 for novice skill, 1 for enemy, 2 for place, 4 for immediate invoke, 16 for party member
- lv=0 up=0‚Ěę‡‚̓ŠƒXƒg‚ɏo‚ľ‚Ä‚Č‚˘?
+ lv=0 up=0の場合はリストに出してない?
it will not be on list when lv=0 up=0?
R 0110 <skill ID>.w <basic type>.w ?.w <fail>.B <type>.B
- fail=00‚ĚŽž‚ɃXƒLƒ‹—˜—pŽ¸”s?
+ fail=00の時にスキル利用失敗?
fail to use skill when fail=00?
- type 00:basic type‚Ě•ű 01:SP•s‘Ť 02:HP•s‘Ť 03:memo–ł‚ľ 04:delay’†
+ type 00:basic typeの方 01:SP不足 02:HP不足 03:memo無し 04:delay中
type 00:basic type 01:lack of SP, 02:lack of HP, 03:no memo, 04:in delay
- 05:‚¨‹ŕ–ł‚ľ(‚߂܁[) 06:•Ší‚Ş‚ć‚ë‚ľ‚­‚Č‚˘ 07:ÔƒWƒFƒ€–ł‚ľ 08:ÂƒWƒFƒ€–ł‚ľ 09:“ä
+ 05:お金無し(めまー) 06:武器がよろしくない 07:赤ジェム無し 08:青ジェム無し 09:謎
05:lack of money, 06:weapon does not satisfy, 07:no red jewel, 08:no blue jewel, 09:unkown
- basic type 00:Žć‚čˆř‚Ť 01:emotion 02:Ŕ‚č 03:ƒ`ƒƒƒbƒg 04:ƒp[ƒeƒB
+ basic type 00:取り引き 01:emotion 02:座り 03:チャット 04:パーティ
basic type 00:trade 01:emotion 02:sit down, 03:chat, 04:party
- 05:shout? 06:PK 07:ƒ}ƒi[ƒ|ƒCƒ“ƒg
+ 05:shout? 06:PK 07:マナーポイント
05:shout? 06:PK, 07:manner point
R 0111 <skill ID>.w <target type>.w ?.w <lv>.w <sp>.w <range>.w <skill name>.24B <up>.B
- 010f‚Ě1‚•ށBƒŔ2‚ž‚Ć–˘Žg—p?
+ 010fの1つ分。β2だと未使用?
just one skill information. not used in beta2?
S 0112 <skill ID>.w
- ƒXƒLƒ‹lvup—v‹
+ スキルlvup要求
request to skill level up.
S 0113 <level>.w <skill ID>.w <ID>.l
- ID‚đƒ^[ƒQƒbƒg‚Éskill‚đŽg‚¤
+ IDをターゲットにskillを使う
use skill to the target.
R 0114 <skill ID>.w <src ID>.l <dst ID>.l <server tick>.l <src speed>.l <dst speed>.l <param1>.w <param2>.w <param3>.w <type>.B
- UŒ‚ŒnƒXƒLƒ‹ƒGƒtƒFƒNƒg@
+ 攻撃系スキルエフェクト@
skill effect for attack.
- type=04 ‰Î•Ç‚ĹŠĎ‘Ş type=06‚Ć‚Ů‚Ú“Ż‚ś?
+ type=04 火壁で観測 type=06とほぼ同じ?
rtpe=04 observed when firewall was used. is that the almost same as type=06?
- type=06 ’P”­‚ŕ‚Ě? param1‚̓_ƒ[ƒW‡ŒvAparam2‚ÍlevelAparam3‚Í1ŒĹ’č‚Ć—\‘z
+ type=06 単発もの? param1はダメージ合計、param2はlevel、param3は1固定と予想
type=06 skill for just one hit? param1 is total damage, param2 is level, param3 will always stay 1.
- type=08 ˜A‘Ĺ‚ŕ‚Ě? param1‚̓_ƒ[ƒW‡ŒvAparam2‚ÍlevelAparam3‚Í•ŞŠ„”‚Ć—\‘z
+ type=08 連打もの? param1はダメージ合計、param2はlevel、param3は分割数と予想
type=08 skill for multiple hits? param1 is totak damage, param2 is level, param3 will be a number of hit.
R 0115 <skill ID>.w <src ID>.l <dst ID>.l <server tick>.l <src speed>.l <dst speed>.l <X>.w <Y>.w <param1>.w <param2>.w <param3>.w <type>.B
- ’e‚Ť”ň‚΂ľ—L‚čUŒ‚ŒnƒXƒLƒ‹ƒGƒtƒFƒNƒg
+ 弾き飛ばし有り攻撃系スキルエフェクト
blow up type skill effect.
- type=05 ƒ_ƒ[ƒW&’e‚Ť”ň‚΂ľBparam1‚̓_ƒ[ƒW‡ŒvAparam2‚ÍlevelAparam3‚Í•ŞŠ„”‚Ć—\‘z
+ type=05 ダメージ&弾き飛ばし。param1はダメージ合計、param2はlevel、param3は分割数と予想
type=05 damage and blow up. param1 is total damage, param2 is level, param3 will be a number of hit.
- type=06 ”šS’n? ­‚Č‚­‚Ć‚ŕparam1‚̓Sƒ~‚Ě–Í—l
+ type=06 爆心地? 少なくともparam1はゴミの模様
type=06 a point of explorsion? param1 is unused at least.
S 0116 <level>.w <skill ID>.w <X>.w <Y>.w
- (X,Y)‚đƒ^[ƒQƒbƒg‚Éskill‚đŽg‚¤
+ (X,Y)をターゲットにskillを使う
use skill at (X,Y).
R 0117 <skill ID>.w <src ID>.l <val>.w <X>.w <Y>.w <server tick>.l
- ęŠ‘ŠŽč‚ĚƒXƒLƒ‹ƒGƒtƒFƒNƒg•\ŽŚBval‚̓Œƒxƒ‹‚ŠAˆę•”ŒĹ‚ł?(•X•Ç)
+ 場所相手のスキルエフェクト表示。valはレベルか、一部固さ?(氷壁)
display skill effect at (X,Y). is val level? or how hard it is (like ice wall)?
S 0118
- UŒ‚ƒLƒƒƒ“ƒZƒ‹
+ 攻撃キャンセル
cancel to attack
R 0119 <ID>.l <param1>.w <param2>.w <param3>.w ?.B
- ŒŠ‚˝–Ú•ĎX
+ 見た目変更
change looks.
- param1=02 ƒtƒƒXƒgƒ_ƒCƒo‚Ĺ“€‚č’Đ‚Ż?
+ param1=02 フロストダイバで凍り漬け?
param1=02 flozen diva?
- param2=01 “Ĺ?
+ param2=01 毒?
param2=01 poison?
- param2=20 ANGELUSó‘Ô?
+ param2=20 ANGELUS状態?
param2=20 ANGELUS?
- param3=01 ƒTƒCƒg‚Šƒ‹ƒƒbƒ`?
+ param3=01 サイトかルワッチ?
param3-01 site or ruwatch? (i dont know skill names in english :()
- param3=0b ƒnƒCƒfƒBƒ“ƒOó‘Ô?
+ param3=0b ハイディング状態?
param3=0b hiding?
- param3=0b ƒNƒ[ƒLƒ“ƒOó‘Ô?
+ param3=0b クローキング状態?
param3-0b cloking?
- param3=0d ƒJ[ƒg•t‚Ť
+ param3=0d カート付き
param3=0d with cart
- param3=0e ‘é•t‚Ť
+ param3=0e 鷹付き
param3-0e with hawk
- param3=0f ƒyƒRƒyƒRć‚č
+ param3=0f ペコペコ乗り
param3=0f with pekopeko
R 011a <skill ID>.w <val>.w <dst ID>.l <src ID>.l <fail>.B
- ”ńƒ_ƒ[ƒWŒnƒXƒLƒ‹•\ŽŚBƒq[ƒ‹‚Ěę‡val‚͉ń•œ—Ę
+ 非ダメージ系スキル表示。ヒールの場合valは回復量
display no-damage skill effect. val is an amount of HP cured when it's heal.
- fail=00‚Ěę‡Ž¸”s‚Ű‚˘‚ށAƒXƒ`[ƒ‹ˆČŠO‚Ĺ‚ÍŒŠ‚˝Ž––ł‚ľ
+ fail=00の場合失敗ぽいが、スチール以外では見た事無し
fail=00 must mean fail, but i havent seend it except steal.
S 011b <skill ID>.w <map name>.16B
- 011c‚ւ̉ž“šBŽg‚í‚Č‚˘ę‡"cancel"‚đ‘—‚é
+ 011cへの応答。使わない場合"cancel"を送る
response to packet number 011c. send "cancel" for no-use.
R 011c <skill ID>.w <map1>.16B <map2>.16B <map3>.16B <map4>.16B
- ƒeƒŒƒ|/ƒ|ƒ^‚̏ꏩ‘I‘đB
+ テレポ/ポタの場所選択。
select place for teleport or portal warp.
- ƒeƒŒƒ|‚Ěę‡ARandom/ƒZ[ƒuęŠAƒ|ƒ^‚Ěę‡AƒZ[ƒuęŠ/memo1/memo2/memo3‚Ć‚Č‚é
- ƒ}ƒbƒv–ź‚Ě‚Ý‘—‚ç‚ę‚é
+ テレポの場合、Random/セーブ場所、ポタの場合、セーブ場所/memo1/memo2/memo3となる
+ マップ名のみ送られる
in case of teleport, Ramdom/save point will be sent,
in case of portal warp, save point/memo1/memo2/memo3 will be sent.
only map name wil be sent.
S 011d
- ŒťÝ‹‚鏊‚đƒƒ‚—v‹
+ 現在居る所をメモ要求
request to take a memo at this point.
R 011e <fail>.B
- fail=00 ƒƒ‚ŹŒ÷
+ fail=00 メモ成功
success to take memo.
- fail=01 ƒƒ‚Ž¸”s
+ fail=01 メモ失敗
fail to take memo.
R 011f <dst ID>.l <src ID>.l <X>.w <Y>.w <type>.B <fail>.B
- ƒXƒLƒ‹Œř”\’něŹ
+ スキル効能地作成
create ground effect for skills like firewall.
- type 7e:SW 7f:‰Î•Ç 80:ƒ|ƒ^”­“Ž’† 81:ƒ|ƒ^”­“Ž‘O 83:ƒTƒ“ƒN 85:ƒtƒjƒ…[ƒ}
+ type 7e:SW 7f:火壁 80:ポタ発動中 81:ポタ発動前 83:サンク 85:フニューマ
type 7e:SW, 7f:firewall, 80:portal warp(invoking), 81:portal warp(before invoking), 83:sank, 85:funewma( i really don know skill names :()
- 86:ƒo[ƒ~ƒŠƒIƒ“ 8c:ƒg[ƒL[ƒ{ƒbƒNƒX”­“ŽŽž 8d:•X•Ç 8e:‚­‚ ‚Ž‚Ü‚˘‚â[ 91:‚ ‚ń‚­‚邡‚Ë‚ 
+ 86:バーミリオン 8c:トーキーボックス発動時 8d:氷壁 8e:くあぐまいやー 91:あんくるすねあ
86: bermillion, 8c:talky box(invoked), 8d:frost diva, 8e:kuagumire, 91:uncle snear
- 93:‚ç‚ń‚Ç‚Ü‚˘‚ń 97:?? 99:ƒg[ƒL[ƒ{ƒbƒNƒX”­“Ž‘O
+ 93:らんどまいん 97:?? 99:トーキーボックス発動前
93:land mine, 97:??, 99:talky box(befor invoked)
- ‘źî•ń‹‚Ţ
+ 他情報求む
R 0120 <ID>.l
- ƒXƒLƒ‹Œř”\’nÁ‹Ž
+ スキル効能地消去
delete ground effect.
R 0121 <num>.w <num limit>.w <weight>.l <weight limit>l
- ƒJ[ƒg‚ĚŽí—Ţ&d‚ł‚ĚŒťÝ’l&ăŒŔ
+ カートの種類&重さの現在値&上限
kind of cart, weight and max weight.
R 0122 <len>.w {<index>.w <item ID>.w <type>.B <identify flag>.B <equip type>.w <equip point>.w <attribute?>.B <refine>.B <card>.4w}.20B*
- ƒJ[ƒg“ŕƒAƒCƒeƒ€B‘•”ő•i
+ カート内アイテム。装備品
equipments in cart.
R 0123 <len>.w {<index>.w <item ID>.w <type>.B <identify flag>.B <amount>.w ?.2B}.10B*
- ƒJ[ƒg“ŕƒAƒCƒeƒ€BÁ–Ő•i/ŽűW•i
+ カート内アイテム。消耗品/収集品
cunsumptive and collector items in cart.
R 0124 <index>.w <amount>.l <item ID>.w <identify flag>.B <attribute?>.B <refine>.B <card>.4w
- ƒJ[ƒg‚ɃAƒCƒeƒ€’ljÁ
+ カートにアイテム追加
add item to cart.
R 0125 <index>.w <amount>.l
- ƒJ[ƒg‚Š‚çƒAƒCƒeƒ€íœ
+ カートからアイテム削除
delete item in cart.
S 0126 <index>.w <amount>.l
- ƒJ[ƒg‚ɃAƒCƒeƒ€‚đ“ü‚ę‚é
+ カートにアイテムを入れる
put item to cart.
S 0127 <index>.w <amount>.l
- ƒJ[ƒg‚Š‚çƒAƒCƒeƒ€‚đŽć‚čo‚ˇ
+ カートからアイテムを取り出す
take out item from cart.
S 0128 <index>.w <amount>.l
- ƒJƒvƒ‰‚ł‚ń‚Š‚çƒJ[ƒg‚ÖƒAƒCƒeƒ€‚đˆÚ‚ˇ
+ カプラさんからカートへアイテムを移す
move item from capra's warehouse to cart.
S 0129 <index>.w <amount>.l
- ƒJ[ƒg‚Š‚çƒJƒvƒ‰‚ł‚ń‚ÖƒAƒCƒeƒ€‚đˆÚ‚ˇ
+ カートからカプラさんへアイテムを移す
move item from cart to capra's warehouse.
R 012c <fail>.B
- fail=00 d—ʐ§ŒŔ‚đ‰z‚Ś‚ăJ[ƒg‚ɃAƒCƒeƒ€‚đ“ü‚ę‚ç‚ę‚Ü‚š‚ń‚Ĺ‚ľ‚˝?
+ fail=00 重量制限を越えてカートにアイテムを入れられませんでした?
fail=00 over the weight and could not add item to cart.
R 012d <num>.w
- ˜I“XŠJÝBƒAƒCƒeƒ€ƒŠƒXƒg—v‹Bnum‚Í’u‚Ż‚éĹ‘吔
+ 露店開設。アイテムリスト要求。numは置ける最大数
create shop (marchant skill). request item list. num is a number of kind of item that can be sell.
S 012e
- ˜I“X•Â˝
+ 露店閉鎖
close shop.
S 012f <len>.w <message>.80B {<index>.w <amount>.w <value>.l}.8B*
- ˜I“XŠJÝA˜I“X–ź&ƒAƒCƒeƒ€,’l’iƒŠƒXƒg
+ 露店開設、露店名&アイテム,値段リスト
create shop, shop name, item, price list.
S 0130 <ID>.l
- ˜I“XƒAƒCƒeƒ€ƒŠƒXƒg—v‹
+ 露店アイテムリスト要求
request item list for shop( not npc shop).
R 0131 <ID>.l <message>.80B
- ˜I“XŠĹ”•\ŽŚ
+ 露店看板表示
display shop name tag.
R 0132 <ID>.l
- ˜I“XŠĹ”Á‹Ž
+ 露店看板消去
delete shop name tag.
R 0133 <len>.w <ID>.l {<value>.l <amount>.w <index>.w <type>.B <item ID>.w <identify flag>.B <attribute?>.B <refine>.B <card>.4w}.22B
- ˜I“XƒAƒCƒeƒ€ƒŠƒXƒg
+ 露店アイテムリスト
item list for shop(not npc shop).
S 0134 <len>.w <ID>.l {<amount>.w <index>.w}.4B*
- ˜I“XƒAƒCƒeƒ€w“ü
+ 露店アイテム購入
buy item from shop (not npc).
R 0135 <index>.w <amount>.w <fail>.B
- ˜I“XƒAƒCƒeƒ€w“üŽ¸”sBfail‚ÍŒ´ˆö
+ 露店アイテム購入失敗。failは原因
fail to buy item from non npc shop. fail tells you reasons.
R 0136 <len>.w <ID>.l {<value>.l <index>.w <amount>.w <type>.B <item ID>.w <identify flag>.B <attribute?>.B <refine>.B <card>.4w}.22B*
- ˜I“XŠJÝŹŒ÷
+ 露店開設成功
success to create non-npc-shop.
R 0137 <index>.w <amount>.w
- ˜I“XƒAƒCƒeƒ€”Ě”„•ń
+ 露店アイテム販売報告
report of selling item.
R 0139 <ID>.l <X>.w <Y>.w <X2>.w <Y2>.w <range>.w
- ID‚Ě“G‚Í(X,Y)‚É‹‚ÄŽŠ•Ş‚Í(X2,Y2)‚É‹‚é‚Ě‚ĹUŒ‚‚Ş“Í‚Ť‚Ü‚š‚ń‚Ĺ‚ľ‚˝
+ IDの敵は(X,Y)に居て自分は(X2,Y2)に居るので攻撃が届きませんでした
the enemy at(X,Y) was too far to attack from my coordinate (X2,Y2).
- UŒ‚‰Â”\‹——Ł‚Írange‚Ȃ̂ŁA‹ßŠń‚Á‚ĉş‚ł‚˘?
+ 攻撃可能距離はrangeなので、近寄って下さい?
possible range to attack enemy is "range", so be closer?
R 013a <val>.w
- UŒ‚ŽË’ö
+ 攻撃射程
attack range.
R 013b <type>.w
- ŠeŽíƒƒbƒZ[ƒW•\ŽŚB3=–î‚Ş‘•”ő‚Ĺ‚Ť‚Ü‚ľ‚˝
+ 各種メッセージ表示。3=矢が装備できました
various message. 3="arrow has been equiped"
R 013c <ID>.w
- ‘•”ő‚ł‚ę‚˝–î‚ĚItemIDB0‚ŁA–˘‘•”őó‘ԁB
+ 装備された矢のItemID。0で、未装備状態。
item id of equiped arrow. 0 means no arrow is equiped.
R 013d <type>.w <val>.w
- HP‰ń•œƒXƒLƒ‹/SP‰ń•œƒXƒLƒ‹‚É‚ć‚é‰ń•œ
+ HP回復スキル/SP回復スキルによる回復
recovery of HP/SP by HP/SP recovery skill.
- type=5‚Č‚çHP type=7‚Č‚çSP
+ type=5ならHP type=7ならSP
type=5 is HP, type=7 is SP.
R 013c <index>.w
-@@ ‘•”ő‚ľ‚Ä‚˘‚é–î
+   装備している矢
id of equiped arrow.
R 013e <src ID>.l <dst ID>.l <X>.w <Y>.w <lv?>.w ?.w <wait>.l
- ƒXƒLƒ‹‰rĽ’†BPC/NPC‚Ş‘ŠŽč‚Ěę‡‚Í(X,Y)‚Í0BęŠ‚ރ^[ƒQƒbƒg‚Ěę‡‚Ídst ID‚Í0‚É‚Č‚é
+ スキル詠唱中。PC/NPCが相手の場合は(X,Y)は0。場所がターゲットの場合はdst IDは0になる
skill has been casting. (X,Y) will be 0 when target is player character or NPC. dst ID will be 0 when target is place.
- 0x013e ‚Ě offset+16(dword) ‚̓XƒLƒ‹‘ŽŤ‚Ĺ‚ˇ(’˛¸Ď)B
+ 0x013e の offset+16(dword) はスキル属性です(調査済)。
offset+16(dword) in packet number 0x013e is skill attribute.
- 00:–ł 01:… 02:’n 03:‰Î 04:•— 05:“Ĺ 06:š 07:ˆĂ 08:”O 09:Ž€
+ 00:無 01:水 02:地 03:火 04:風 05:毒 06:聖 07:暗 08:念 09:死
00:none, 01:water, 02:ground, 03:fire, 04:wind, 05:poinson, 06:holly, 07:dark, 08:spirit(i don know how to translate.), 09:death
- Ť—ˆ“I‚ɁA‰rĽ’†‚ĚƒGƒtƒFƒNƒg‚Ş‘ŽŤ‚Ĺ•Ď‚í‚é‚Ě‚Š‚ƁB
+ 将来的に、詠唱中のエフェクトが属性で変わるのかと。
casting effect might differ by skill attribute in the future.
- wait‚Íms’PˆĘ‚Š‚Č?
+ waitはms単位かな?
wait in mili second?
R 0141 <type>.l <base>.l <bonus>.l
- ƒXƒe[ƒ^ƒXî•ńBtype‚Í0d‚Š‚ç12‚ޏ‡‚ÉSTR,AGI,VIT,INT,DEX,LUK‚ɑΉž
+ ステータス情報。typeは0dから12が順にSTR,AGI,VIT,INT,DEX,LUKに対応
information for status. type is 0d-12 for STR,AGI,VIT,INT,DEX,LUK.
- base+bonus‚Ć•\ŽŚ‚ł‚ę‚é
+ base+bonusと表示される
base+bonus will be displayed.
R 0144 <ID>.l <type>.l <X>.l <Y>.l <point ID>.B <color>.3B ?.B
- ˆÄ“ŕˆő—pAƒ}ƒbƒvăƒAƒCƒRƒ“•\ŽŚƒpƒPƒbƒg
+ 案内員用、マップ上アイコン表示パケット
for guid npc, packet for display icon on map.
- type=1 ƒAƒCƒRƒ“‚đ•\ŽŚ
+ type=1 アイコンを表示
display icon.
- type=2 ƒAƒCƒRƒ“‚đÁ‹Ž
+ type=2 アイコンを消去
delete icon.
R 0145 <file name>.16B <type>.B
- (Ą‚̏Š)ƒJƒvƒ‰‚ł‚ńcutin•\ŽŚ
+ (今の所)カプラさんcutin表示
display capra picture(at this time).
- type=02 •\ŽŚ
+ type=02 襨示
display.
- type=ff Á‹Ž
+ type=ff 消去
delete.
S 0146 <ID>.l
- ID‚ĚNPC‚Ƃ̉ď˜bBCLOSEƒ{ƒ^ƒ“‚đ‰Ÿ‚ľ‚˝Back–ł‚ľ‚ÉNPCƒƒbƒZ[ƒWƒEƒBƒ“ƒh‚đ“ŻŽž‚ɕ‚ś‚é
+ IDのNPCとの会話。CLOSEボタンを押した。ack無しにNPCメッセージウィンドを同時に閉じる
talk to npc with ID. Clicked CLOSE button.
R 0147 <skill ID>.w <target type>.w ?.w <lv>.w <sp>.w <range>.w <skill name>.24B <up>.B
- ƒAƒCƒeƒ€—˜—p‚ĚŒ‹‰ĘˆęŽž“I‚É“ž‚ç‚ę‚˝ƒXƒLƒ‹î•ń
+ アイテム利用の結果一時的に得られたスキル情報
effect for skill by using item.
S 0148 <ID>.l
- ƒŠƒUƒŒƒNƒVƒ‡ƒ“‚Ě‘ŠŽčŒˆ‚ß? @ ƒŔ1
+ リザレクションの相手決め? @ β1
decide target of a skill rezarection? in beta1.
S 0149 <ID>.l <type>.B
- ID‚Ƀ}ƒi[ƒ|ƒCƒ“ƒg‚đ—^‚Ś‚éBtype=00 ƒvƒ‰ƒX type=01 ƒ}ƒCƒiƒX
+ IDにマナーポイントを与える。type=00 プラス type=01 マイナス
give manner point to ID. type=00 is plus, type=01 is minus.
R 014a <fail>.l
- ƒ}ƒi[ƒ|ƒCƒ“ƒg‚đ—^‚Ś‚˝Œ‹‰ĘBfail=0 ŹŒ÷ fail=1 Ž¸”s
+ マナーポイントを与えた結果。fail=0 成功 fail=1 失敗
result of giving manner point. fail=0 is success, fail=1 is fail.
R 014b <type>.B <nick>.24B
- ƒ}ƒi[ƒ|ƒCƒ“ƒg‚đ–á‚Á‚˝Btype=00 ƒvƒ‰ƒX type=01 ƒ}ƒCƒiƒX
+ マナーポイントを貰った。type=00 プラス type=01 マイナス
get manner point. type=00 is plus, type-01 is minus.
R 014C <len>.w (<type>.l <guildID>.l <guild name>.24B).*
- “Ż–żĽ“G‘΃Mƒ‹ƒh•\ŽŚ
+ 同盟・敵対ギルド表示
display alliance and opposition guild.
- type=0 “Ż–ż
+ type=0 同盟
alliance.
- type=1 “G‘Î
+ type=1 敵対
opposition.
S 014D
-@@ ƒMƒ‹ƒhî•ń•\ŽŚŠJŽnH
+   ギルド情報表示開始?
start of guild information?
R 014E <type?>.l
-@@ type=0x57 ˆę”ĘƒMƒ‹ƒh’cˆő
+   type=0x57 一般ギルド団員
normal guild member.
-@@ type=0xD7 ƒMƒ‹ƒhƒ}ƒXƒ^[
+   type=0xD7 ギルドマスター
guild master.
S 014F <page>.l
-@@ ƒMƒ‹ƒh•\ŽŚƒ^ƒu‘—M
+   ギルド表示タブ送信
send packet for guild "DISPLAY" tab.
-R 0150 <guildID>.l <guildLv>.l <connum>.l <’čˆő>.l <Avl.lvl>.l ?.l <next_exp>.l ?.16B <guild name>.24B <guild master>.24B ?.16B
-@@ ƒMƒ‹ƒhî•ń
+R 0150 <guildID>.l <guildLv>.l <connum>.l <定員>.l <Avl.lvl>.l ?.l <next_exp>.l ?.16B <guild name>.24B <guild master>.24B ?.16B
+   ギルド情報
guild info.
S 0151 <guild ID>.l
- ƒGƒ“ƒuƒŒƒ€—v‹
+ エンブレム要求
request for guild emblem.
R 0152 <len>.w <guild ID>.l <emblem ID?>.l <emblem data>.?B
- ƒGƒ“ƒuƒŒƒ€ƒCƒ[ƒW‘—•t
+ エンブレムイメージ送付
return emblem image.
-R 0154 <len>.w {<accID>.l <charactorID>.l <”ŻŒ^>.w <”Ż‚̐F>.w <Ť•ĘH>.w <job>.w <lvl?>.w <ă”[ŒoŒą’l>.l <online>.l <Position>.l ?.50B <nick>.24B}*
- ƒMƒ‹ƒhƒƒ“ƒoƒŠƒXƒg?
+R 0154 <len>.w {<accID>.l <charactorID>.l <髪型>.w <髪の色>.w <性別?>.w <job>.w <lvl?>.w <上納経験値>.l <online>.l <Position>.l ?.50B <nick>.24B}*
+ ギルドメンバリスト?
guild member list?
S 0159 <guildID>.l <accID>.l <charID>.l <mess>.40B
-@@ ƒMƒ‹ƒh’E‘Ţ‘—M
+   ギルド脱退送信
send packet for leaving guild.
R 015A <nic>.24B <mess>.40B
-@@ ƒMƒ‹ƒh’E‘Ţ(‘Sˆő)ŽóM
+   ギルド脱退(全員)受信
receive packet for leaving guild(all members).
S 015B <guildID>.l <accID>.l <charID>.l <mess>.40B
-@@ ƒMƒ‹ƒh’Ç•ú‘—M
+   ギルド追放送信
send packet for kicking member out of the guild.
-R 015C <nick>.24B <mess>.40B <ƒAƒJƒEƒ“ƒg‚h‚c>.24B
-@@ ƒMƒ‹ƒh’Ç•úi‘SˆőjŽóM
+R 015C <nick>.24B <mess>.40B <アカウントID>.24B
+   ギルド追放(全員)受信
receive packet for kicking member out of the guild.(all member)
R 0163 <len>.w <nick>.24B <accountID>.24B <kicking reason>.40B
S 0165 <myaccID>.l <guild name>.24B
-@@ ƒMƒ‹ƒhěŹ
+   ギルド作成
create guild
R 0166 <len>.w ?.28B*
- –đE–źƒŠƒXƒg?
+ 役職名リスト?
list for roll of members?
R 0167 <type>.b
- ƒMƒ‹ƒhěŹ‡”Ű
+ ギルド作成合否
response to vreating guild.
- type = 0 ƒMƒ‹ƒhěŹŹŒ÷
+ type = 0 ギルド作成成功
success.
- type = 2 “Ż–ź‚ĚƒMƒ‹ƒh‚Ş‚ ‚é
+ type = 2 同名のギルドがある
there is a guild with the same name.
S 0168 <TargetAccID>.l <sourceAccID>.l <myCharactorID>.l
-@@ ƒMƒ‹ƒhŠŠ—U
+   ギルド勧誘
invite to the guild.
R 0169 <type>.B
-@@ ƒMƒ‹ƒhŠŠ—U‹‘”Ű‚ł‚ę‚˝
+   ギルド勧誘拒否された
invitation denied.
R 016A <guild ID>.l <guild name>.24B
-@@ ƒMƒ‹ƒhŠŠ—U‚ł‚ę‚˝
+   ギルド勧誘された
invited to the guild.
S 016B <guild ID>.l <type>.l
-@@ ƒMƒ‹ƒhŠŠ—U•ÔM
+   ギルド勧誘返信
response to invitaion for joining to guild.
-@@ type=0 ‹‘”Ű‚ˇ‚é
+   type=0 拒否する
deny.
-@@ type=1 ‹–‘ř‚ˇ‚é
+   type=1 許諾する
OK.
R 016c <guild ID>.l ?.13B <guild name>.24B
- loginŽžƒMƒ‹ƒhî•ń
+ login時ギルド情報
guild information when loged in.
R 016d <ID>.l <charactor ID>.l <online>.l
- ƒMƒ‹ƒhƒƒ“ƒo‚Şlogin‚ľ‚˝”˛‚Ż‚˝“™
+ ギルドメンバがloginした抜けた等
information about guild member loged in or loged out etc.
R 016f <message>.180B
- ƒMƒ‹ƒh‚¨‘č–Ú?
+ ギルドお題目?
guild message?
S 016E <guildID>.l <mess1>.60B <mess2>.120B
-@@ ƒMƒ‹ƒh’mÝ’č
+   ギルド告知設定
set guild announcement.
R 016F <mess1>.60B <mess2>.120B
-@@ ƒMƒ‹ƒh’m
+   ギルド告知
guild announcement.
S 0170 <TargetAccID>.l <sourceAccID>.l <myCharactorID>.l
-@@ “Ż–ż—vżŠŠ—U
+   同盟要請勧誘
invite the guild to be alliance.
R 0171 <SorceAccID>.l <guild name>.24B
-@@ “Ż–ż—vżŠŠ—U‚ł‚ę‚˝
+   同盟要請勧誘された
invited to be a alliance.
S 0172 <SorceAccID>.l <type>.l
-@@ “Ż–ż—vż•ÔM
+   同盟要請返信
response for invitiation to be alliance.
-@@ type=0 ‹‘”Ű‚ˇ‚é
+   type=0 拒否する
deny.
-@@ type=1 ‹–‘ř‚ˇ‚é
+   type=1 許諾する
OK.
R 0173 <type>.B
- type = 0 ‚ˇ‚Ĺ‚É“Ż–żŠÖŒW
+ type = 0 すでに同盟関係
the guild is already alliance.
-@@ type = 1 “Ż–ż‹‘”Ű‚ł‚ę‚˝
+   type = 1 同盟拒否された
denied to be alliance.
-@@ type = 2 “Ż–żŹŒ÷
+   type = 2 同盟成功
success to invite to be alliance.
R 0177 <len>.w <index>.w*
- ŠÓ’č‰Â”\ƒAƒCƒeƒ€ƒŠƒXƒg
+ 鑑定可能アイテムリスト
list of items that need to be judge( i mean unkown items.)
S 0178 <index>.w
- ƒAƒCƒeƒ€ŠÓ’č
+ アイテム鑑定
judge item.
R 0179 <index>.w <fail>.B
- ƒAƒCƒeƒ€ŠÓ’čŒ‹‰ĘBfail=00‚ŐŹŒ÷Bfail=01‚Á‚Ä‚ ‚é‚Ě‚Š?
+ アイテム鑑定結果。fail=00で成功。fail=01ってあるのか?
response to judging item. fail=00 is success. is there fail=01?
S 017A <index>.w
-@@ ƒJ[ƒh‚vƒNƒŠƒbƒN
+   カードWクリック
card is double clicked.
R 017B <len>.w {<index>.w}*
-@@ ƒJ[ƒh‘}“ü‚Ĺ‚Ť‚éƒAƒCƒeƒ€Index”ԍ†
+   カード挿入できるアイテムIndex番号
item index number for items that can be inserted card.
S 017C <SrcIndex>.w <DescIndex>.w
-@@ Src ‚đDesc‚É“Ë‚Áž‚Ţ
+   Src をDescに突っ込む
insert Src to Desc.
R 017D <DescIndex>.w <SrcIndex>.w <fail>.b
-@@ Src ‚đDesc‚É“Ë‚Áž‚Ý<fail> 0=ŹŒ÷ 1=Ž¸”sH
+   Src をDescに突っ込み<fail> 0=成功 1=失敗?
response to insert Src to Desc. fail=0 is success, fail=01 is fail?
S 017e <len>.w <message>.?B
- ƒMƒ‹ƒh“ŕƒƒbƒZ[ƒW”­Œž
+ ギルド内メッセージ発言
send speach for guild members.
R 017f <len>.w <message>.?B
- ƒMƒ‹ƒh“ŕƒƒbƒZ[ƒWŽóM
+ ギルド内メッセージ受信
receive guild message.
R 0182 <accID>.l <charactorID>.l <hair type>.w <hair color>.w <sex?>.w <job>.w <lvl?>.w <experience?>.l <online>.l <Position>.l ?.50B <nick>.24B
R 0187 <account ID>.l
- aliveM†?
+ alive信号?
alive signal?
R 0188 <fail?>.w <index>.w <val>.w
- •Ší¸˜BBŒ‹‰Ę+val•Ší‚É
+ 武器精錬。結果+val武器に
weapon refiling. result+val to weapon
R 0189 ?.w
- “äBƒeƒŒƒ|Ž¸”s?
+ 謎。テレポ失敗?
unknown. fail to teleport?
S 018a ?.w
- ƒQ[ƒ€I—š
+ ゲーム終了
game quited.
R 018b <fail>.w
- ƒQ[ƒ€I—š/ƒLƒƒƒ‰ƒZƒŒ‰ž“šBfail=0ŹŒ÷Bfail=1Ž¸”s?
+ ゲーム終了/キャラセレ応答。fail=0成功。fail=1失敗?
game quited/character select sever response. fail=0 is success, fail=1 is fail?
R 018C <MonsID>.w <class>.w <size>.w <HP>.w <?>.w <deffence>.w <kind of monster>.w <magic deffence>.w <attribute>.w <anti-attribute?>.9b
- wiz‚Ě“G‚ĚƒZƒ“ƒXŒ‹‰Ę
+ wizの敵のセンス結果
response to sense skill by wizard.
- 0 ŹŒ^
+ 0 小型
small
- 1 ’†Œ^
+ 1 中型
middle
- 2 ‘ĺŒ^
+ 2 大型
big
R 0191 <ID>.l <message>.80B
- ƒg[ƒL[ƒ{ƒbƒNƒX‚ĚƒƒbƒZ[ƒW
+ トーキーボックスのメッセージ
message of talky box.
S 0193 <ID>.l
- ƒMƒ‹ƒhƒƒ“ƒo–ź‘Oˆř‚Ť?
+ ギルドメンバ名前引き?
name search for guild member?
R 0194 <ID>.l <nick>.24B
- ƒMƒ‹ƒhƒƒ“ƒo–ź‘Oˆř‚Ť‰ž“š?
+ ギルドメンバ名前引き応答?
response to name search for guild member?
R 0195 <ID>.l <nick>.24B <party name>.24B <guild name>.24B <class name>.24B
- ƒMƒ‹ƒhŠ‘ŽPC‚Ěę‡‚Ě0094•Ô“š
+ ギルド所属PCの場合の0094返答
response to packet number 0094 that if the player joined guild.
R 0196 <type>.w <ID>.l
- ‘‹­ŒnƒXƒLƒ‹Žg—pŽž‚ĚƒƒbƒZ[ƒWFXBID‚Ítarget‚ĆŽv‚í‚ę‚é‚ŞŽŠ•Ş‘ŠŽč‚Ě‚Ý‚ľ‚Š—ˆ‚Č‚˘?
+ 増強系スキル使用時のメッセージ色々。IDはtargetと思われるが自分相手のみしか来ない?
various message of skill that effect status. ID must be target, but only m ID and other's ID are sent?
- type=00 2HQ•t—^uUŒ‚‘Ź“x‚Ş‘‰Á‚ľ‚Ü‚ľ‚˝Bv
+ type=00 2HQ付与「攻撃速度が増加しました。」
2HQ casted. "attack speed insreased."
- type=01 2HQ‰đœuUŒ‚‘Ź“x‚ŞŒ¸­‚ľ‚Ü‚ľ‚˝Bv
+ type=01 2HQ解除「攻撃速度が減少しました。」
2HQ ended. "attack speed decreased."
- type=02 IMPOSITIO•t—^u•Ší‚̍UŒ‚—Í‚Ş‘‰Á‚ľ‚Ü‚ľ‚˝Bv
+ type=02 IMPOSITIO付与「武器の攻撃力が増加しました。」
IMPOSITIO casted. "power of the weapon increased."
- type=03 IMPOSITIO‰đœu•Ší‚̍UŒ‚—Í‚ŞŒ¸­‚ľ‚Ü‚ľ‚˝Bv
+ type=03 IMPOSITIO解除「武器の攻撃力が減少しました。」
IMPOSITIO ened. "power of the weapon decreased."
- type=04 uƒXƒLƒ‹Žg—pƒfƒBƒŒƒC‚ŞŒ¸­‚ľ‚Ü‚ľ‚˝Bv
+ type=04 「スキル使用ディレイが減少しました。」
"casting delay become short"
- type=05 uƒXƒLƒ‹Žg—pƒfƒBƒŒƒC‚ŞŒł‚É–ß‚č‚Ü‚ľ‚˝Bv
+ type=05 「スキル使用ディレイが元に戻りました。」
"casting delay return to defailt"
- type=06 u•Ší‚É“Ĺ‘ŽŤ‚Ş•t—^‚ł‚ę‚Ü‚ľ‚˝Bv
+ type=06 「武器に毒属性が付与されました。」
"attribute of poison is given to the weapon"
- type=07 ASPERSIO•t—^u•Ší‚ɐš‘ŽŤ‚Ş•t—^‚ł‚ę‚Ü‚ľ‚˝Bv
+ type=07 ASPERSIO付与「武器に聖属性が付与されました。」
ASPERSIO casted. "attribute of holly is given to the weapon"
- type=08 ASPERSIO‰đœu•Ší‚Ě‘ŽŤ‚ŞŒł‚É–ß‚č‚Ü‚ľ‚˝Bv
+ type=08 ASPERSIO解除「武器の属性が元に戻りました。」
ASPERSIO ended. "attribute of weapon return to default"
- type=09 u–h‹ď‚ɐš‘ŽŤ‚Ş•t—^‚ł‚ę‚Ü‚ľ‚˝Bv
+ type=09 「防具に聖属性が付与されました。」
"armor got holly attribute"
- type=0a u–h‹ď‚Ě‘ŽŤ‚ŞŒł‚É–ß‚č‚Ü‚ľ‚˝Bv
+ type=0a 「防具の属性が元に戻りました。」
"armor's attribute return to default"
- type=0b KYRIE•t—^uƒoƒŠƒAó‘Ô‚É‚Č‚č‚Ü‚ľ‚˝Bv
+ type=0b KYRIE付与「バリア状態になりました。」
KYRIE casted. "barrier"
- type=0c KYRIE‰đœuƒoƒŠƒAó‘Ô‚Ş‰đœ‚ł‚ę‚Ü‚ľ‚˝Bv
+ type=0c KYRIE解除「バリア状態が解除されました。」
KYRIE ended. "barrier end"
- type=0d uƒEƒFƒ|ƒ“ƒp[ƒtƒFƒNƒVƒ‡ƒ“ƒ‚[ƒh‚É‚Č‚č‚Ü‚ľ‚˝Bv
+ type=0d 「ウェポンパーフェクションモードになりました。」
"became weapon ferfection mode"
- type=0e uƒEƒFƒ|ƒ“ƒp[ƒtƒFƒNƒVƒ‡ƒ“ƒ‚[ƒh‚Ş‰đœ‚ł‚ę‚Ü‚ľ‚˝Bv
+ type=0e 「ウェポンパーフェクションモードが解除されました。」
"end weapon perfection mode"
- type=0f uƒI[ƒo[ƒgƒ‰ƒXƒgƒ‚[ƒh‚É‚Č‚č‚Ü‚ľ‚˝Bv
+ type=0f 「オーバートラストモードになりました。」
"became over trust mode"
- type=10 uƒI[ƒo[ƒgƒ‰ƒXƒgƒ‚[ƒh‚Ş‰đœ‚ł‚ę‚Ü‚ľ‚˝Bv
+ type=10 「オーバートラストモードが解除されました。」
"end over trust mode"
- type=11 uƒ}ƒLƒVƒ}ƒCƒYƒpƒ[ƒ‚[ƒh‚É‚Č‚č‚Ü‚ľ‚˝Bv
+ type=11 「マキシマイズパワーモードになりました。」
"became maximize power mode"
- type=12 uƒ}ƒLƒVƒ}ƒCƒYƒpƒ[ƒ‚[ƒh‚Ş‰đœ‚ł‚ę‚Ü‚ľ‚˝Bv
+ type=12 「マキシマイズパワーモードが解除されました。」
"end maximize power mode"
S 0197 <type>.w
type=0 /resetstate
type=1 /resetskill
- Œř”\‚Í–ł‚ľ?
+ 効能は無し?
no effect?
R 019b <ID>.l <type>.l
- ‘źl‚Ělvup‚═Ší¸˜B“™‚Ě•\ŽŚ?
+ 他人のlvupや武器精錬等の表示?
display other's level up effect or weapon refiling?
type=0 base lvup?
type=1 job lvup?
- type=3 •Ší¸˜B
+ type=3 武器精錬
weapon refiling
R 0199 <type>.w
-@@ type=1 pvpƒ‚[ƒhŠJŽn?
+   type=1 pvpモード開始?
start pvp mode?
R 019a <ID>.l <rank>.l <num>.l
-@@ pvp‡ˆĘ rank/num
+   pvp順位 rank/num
pvp rank rank/num
R 019b <ID>.l <type>.l
- ‘źl‚Ělvup‚═Ší¸˜B“™‚Ě•\ŽŚ?
+ 他人のlvupや武器精錬等の表示?
type=0 base lvup?
type=1 job lvup?
- type=2 •Ší¸˜BŽ¸”s
- type=3 •Ší¸˜BŹŒ÷
+ type=2 武器精錬失敗
+ type=3 武器精錬成功
R 019d <?>.4B
- GMƒRƒ}ƒ“ƒh/hide
+ GMコマンド/hide
S 00CC <ID>.l
-@ GM—p‰EƒNƒŠƒbƒNƒƒjƒ…[uinamejŽg—pŽŇ‹­§I—švŽg—p
+  GM用右クリックメニュー「(name)使用者強制終了」使用
use special right click menu for GM "(name) force to quit"
S 0149 <ID>.l <type>.B <time>.w
-@ GM—p‰EƒNƒŠƒbƒNƒƒjƒ…[uƒ`ƒƒƒbƒg‹ÖŽ~ŽžŠÔ‚đ‰ş‚°‚éi‰đ‚Ż‚éjvŽg—p ¨ type=00
+  GM用右クリックメニュー「チャット禁止時間を下げる(解ける)」使用 → type=00
use special right click menu for GM "decrease prohibited time to create chat room". type=00
-@ GM—p‰EƒNƒŠƒbƒNƒƒjƒ…[uƒ`ƒƒƒbƒg‹ÖŽ~ŽžŠÔ‚đă‚°‚éiŠ|‚Ż‚éjvŽg—p ¨ type=01
+  GM用右クリックメニュー「チャット禁止時間を上げる(掛ける)」使用 → type=01
use special right click menu for GM "increase prohibited time to create chat room". type=01
- @time‚Í•Ş’PˆĘ‚Ĺ‚ˇiŠm‚Š
+  timeは分単位です(確か
unit is minute (maybe
R 019e
- •ßŠlƒ‚ƒ“ƒXƒ^[Œˆ‚ß
+ 捕獲モンスター決め
S 019f <ID>.l
- •ßŠlƒ‚ƒ“ƒXƒ^[Žw’č
+ 捕獲モンスター指定
R 01a0 <fail>.B
- •ßŠl”ť’č
- fail=01‚ŐŹŒ÷A00‚ĹŽ¸”s
+ 捕獲判定
+ fail=01で成功、00で失敗
S 01a1 <param>.1B
<param>
- 0x00Fƒyƒbƒgó‘Ô•\ŽŚ
- 0x01F‰a‚đ—^‚Ś‚é
- 0x02FƒpƒtƒH[ƒ}ƒ“ƒX
- 0x03F—‘‚É–ß‚ˇ
- 0x04FƒAƒNƒZƒTƒŠ‰đœ
+ 0x00:ペット状態表示
+ 0x01:餌を与える
+ 0x02:パフォーマンス
+ 0x03:卵に戻す
+ 0x04:アクセサリ解除
R 01a2 <pet name>.24B <name flag>.B <lv>.w <hungry>.w <friendly>.w <accessory>.w
- ƒyƒbƒg‚̏ó‘Ô
- name flag:00=–ź‘O–˘Ý’č 01=–ź‘OÝ’čĎ‚Ý(•ĎX•s‰Â)
- lv=ƒyƒbƒg‚ĚƒŒƒxƒ‹Ahungry=–ž• “x(0~100)Afriendly=e–§“x(‰Šú’l250?)Aaccessory=ƒAƒNƒZƒTƒŠ‚ĚItemID
+ ペットの状態
+ name flag:00=名前未設定 01=名前設定済み(変更不可)
+ lv=ペットのレベル、hungry=満腹度(0~100)、friendly=親密度(初期値250?)、accessory=アクセサリのItemID
R 01a3 <fail>.B <itemID>.w
<fail>
- 0x00F‰a‚â‚莸”s
- 0x01F‰a‚â‚萏Œ÷
+ 0x00:餌やり失敗
+ 0x01:餌やり成功
R 01a4 <type>.B <ID>.l <val>.l
- ƒyƒbƒgŠÖ˜A’Ę’m
- type=00,val=00 ƒyƒbƒg›z‰ťŽž‚É‘—‚ç‚ę‚Ä‚­‚éBƒyƒbƒg”FŽŻ—pH
- type=01 e–§“x•Ď‰ť
- type=02 –ž• “x•Ď‰ť
- type=03 ƒAƒNƒZƒTƒŠ•Ď‰ť(0‚Ĺ–˘‘•”ő)
- type=04 ƒpƒtƒH[ƒ}ƒ“ƒX Šm”F‚ł‚ę‚˝val=1~3
- (4‚̓XƒyƒVƒƒƒ‹ƒpƒtƒH[ƒ}ƒ“ƒXH)
- type=05 HŠm”F‚ł‚ę‚˝val=0x14
+ ペット関連通知
+ type=00,val=00 ペット孵化時に送られてくる。ペット認識用?
+ type=01 親密度変化
+ type=02 満腹度変化
+ type=03 アクセサリ変化(0で未装備)
+ type=04 パフォーマンス 確認されたval=1~3
+ (4はスペシャルパフォーマンス?)
+ type=05 ?確認されたval=0x14
S 01a5 <pet name>.24B
- ƒyƒbƒg‚Ě–ź‘OŒˆ‚ß
+ ペットの名前決め
R 01a6 <len>.w <index>.w*
- ƒyƒbƒg‚Ě—‘ƒŠƒXƒg
+ ペットの卵リスト
S 01a7 <index>.w
- ƒyƒbƒg‚Ě—‘ƒŠƒXƒg‚Ş‘I‘đ‚ł‚ę‚˝
+ ペットの卵リストが選択された
S 01a9 <emotion>.l
- ƒyƒbƒgƒGƒ‚[ƒVƒ‡ƒ“‘—M
+ ペットエモーション送信
R 01aa <ID>.l <emotion>.l
- ƒyƒbƒgƒGƒ‚[ƒVƒ‡ƒ“ŽóM
+ ペットエモーション受信
<emotion>
- 33ˆČ‰ş‚Ě‚Ć‚ŤFƒGƒ‚[ƒVƒ‡ƒ“
- 34ˆČă‚Ě‚Ć‚ŤF”­Œžƒe[ƒuƒ‹H
+ 33以下のとき:エモーション
+ 34以上のとき:発言テーブル?
R 01ac <object id>.l
- ƒAƒ“ƒNƒ‹‚Ě”­“Ž(‚Ý’u)Žž‚Ě‚Ý–ˆ‰ńoŒť(‹@”\‚Í“ä)
+ アンクルの発動(≠設置)時のみ毎回出現(機能は謎)
R 01ad <len>.l <item>.w
- –îě‚č‚̍쐬‰Â”\ITEM•\ŽóM
+ 矢作りの作成可能ITEM表受信
S 01ae <itemID>.w
- –îě‚č‚ĹŽg‚¤Ţ—ż‘—M
+ 矢作りで使う材料送信
S 01af <type>.w
- ƒ`ƒFƒ“ƒWƒJ[ƒgiƒJ[ƒg‘I‘đj
- type=1 ƒm[ƒ}ƒ‹ƒJ[ƒg
+ チェンジカート(カート選択)
+ type=1 ノーマルカート
R 01b0 <monster id>.l <?>.b <new monster code>.l
- –ű‚ĚƒNƒ‰ƒXƒ`ƒFƒ“ƒW
- <new monster code>‚̓`ƒFƒ“ƒWŒă‚ĚƒR[ƒh(1001`)‚đdword‚Ĺ
+ 油のクラスチェンジ
+ <new monster code>はチェンジ後のコード(1001〜)をdwordで
S 01b2 <len>.w <message>.80B <flag>.B {<index>.w <amount>.w <value>.l}.8B*
- ˜I“XŠJÝ
- flag F 0=ƒLƒƒƒ“ƒZƒ‹ , 1=ƒI[ƒvƒ“
+ 露店開設
+ flag : 0=キャンセル , 1=オープン
R 01b3 <filename>.64B <type>.B
- R 0145‚̏ăˆĘŒÝŠˇ
-R 01B6 <guildID>.l <guildLv>.l <connum>.l <’čˆő>.l <Avl.lvl>.l <now_exp>.l <next_exp>.l <ă”[ƒ|ƒCƒ“ƒg>.l <ŤŒüF-V>.l <ŤŒüR-W>.l <members>.l <guild name>.24B <guild master>.24B <agit?>.20B
- ƒMƒ‹ƒhî•ń
+ R 0145の上位互換
+R 01B6 <guildID>.l <guildLv>.l <connum>.l <定員>.l <Avl.lvl>.l <now_exp>.l <next_exp>.l <上納ポイント>.l <性向F-V>.l <性向R-W>.l <members>.l <guild name>.24B <guild master>.24B <agit?>.20B
+ ギルド情報
R 01b9 <ID>.I
- ”íƒ_ƒ“™‚É‚ć‚éID‚̉rĽ’†’f
+ 被ダメ等によるIDの詠唱中断
R 01c4 <index>.w <amount>.l <itemID>.w <item data>.12B
- ƒJƒvƒ‰‘qŒÉƒAƒCƒeƒ€
+ カプラ倉庫アイテム
R 01c8 <index>.w <item ID>.w <ID>.l <amount left>.w <type>.B
- ƒAƒCƒeƒ€Žg—p‰ž“šB(00a8‚̏ăˆĘƒo[ƒVƒ‡ƒ“H)
- type=00‚Ěę‡Žg—pŽ¸”s? amount‚ŕƒSƒ~‚Ě–Í—l
- type=01‚Ěę‡ŹŒ÷‚ŁAamount‚ÍŽg—pŒă‚ĚŽc‚čŒÂ”
+ アイテム使用応答。(00a8の上位バーション?)
+ type=00の場合使用失敗? amountもゴミの模様
+ type=01の場合成功で、amountは使用後の残り個数
R 01c9 <dst ID>.l <src ID>.l <X>.w <Y>.w <type>.B <fail>.B ?.81b
- ƒXƒLƒ‹Œř”\’něŹ(011f‚̏ăˆĘƒo[ƒVƒ‡ƒ“H)
- type 0x7e:SWA0x7f:‰Î•ÇA0x80 ƒ|ƒ^ŠJ‚Ť’†A0x81 ƒ|ƒ^ŠJ‚Ť’ź‘O
- 0x82 š‘́A0x83 ƒTƒ“ƒNA0x84 ƒ}ƒOƒkƒXA0x85 ƒjƒ…[ƒ}
- 0x86 0x86 ‘ĺ–‚–@(SG/MS/LoV/GX)A0x87 ƒtƒ@ƒCƒ„[ƒsƒ‰‘Ň‹@
- 0x88 ƒtƒ@ƒCƒ„[ƒsƒ‰”š”­A0x87`0x8B •\ŽŚ–ł‚ľA
- 0x8c ƒg[ƒL[ƒ{ƒbƒNƒX(”­“Ž’†)A0x8D ƒAƒCƒXƒEƒH[ƒ‹
- 0x8E ƒNƒƒOƒ}ƒCƒAA0x8f ƒuƒ‰ƒXƒgƒ}ƒCƒ“A0x90 ƒXƒLƒbƒh
- 0x91 ƒAƒ“ƒNƒ‹A0x92 ƒxƒmƒ€ƒ_ƒXƒgA0x93 ƒ‰ƒ“ƒhƒ}ƒCƒ“
- 0x94 ƒVƒ‡ƒbƒNƒEƒF[ƒuƒgƒ‰ƒbƒvA0x95 ƒTƒ“ƒhƒ}ƒ“
- 0x96 ƒtƒ‰ƒbƒVƒƒ[A0x97 ƒtƒŠ[ƒWƒ“ƒOƒgƒ‰ƒbƒv
- 0x98 ƒNƒŒƒCƒ‚ƒA[ƒgƒ‰ƒbƒvA0x99 ƒg[ƒL[ƒ{ƒbƒNƒX
- 0x9A ƒ{ƒ‹ƒP[ƒmA0x9B ƒfƒŠƒ…[ƒWA0x9C ƒoƒCƒIƒŒƒ“ƒgƒQƒCƒ‹
- 0x9D ƒ‰ƒ“ƒhƒvƒƒeƒNƒ^[A0x9E Zenyƒ}[ƒNA0x9F Zeny‘Ü
- 0xA0 ‰ń‚é—΂̗ցA0xA1 ƒsƒ“ƒN‚̉š•„ (“ń˜A•„—L‚č
- 0xA2 ^‚ń’†‚É“_‚Ě‚ ‚éŒő‚̋ʁA0xA3 ƒsƒ“ƒN‚ĚƒXƒvƒŠƒ“ƒO
- 0xA4 [•Ł‚Ě’†‚ɁA0xA5 ‰ń‚éÂ‚˘—ցA0xA6 •s‹Ś˜a‰š
- 0xA7 Œű“JA0xA8 —[—z‚ĚƒAƒTƒVƒ“ƒNƒƒXA0xA9 ƒuƒ‰ƒM‚ĚŽ
- 0xAA ƒCƒhƒDƒ“‚Ě—ŃŒçA0xAB ŽŠ•ŞŸŽč‚Čƒ_ƒ“ƒXA0xAC ƒnƒ~ƒ“ƒO
- 0xAD Ž„‚đ–Y‚ę‚Č‚˘‚ŁcA0xAE ƒT[ƒrƒXƒtƒH[ƒ†[
- 0xAF ƒsƒ“ƒN‚ĚƒXƒvƒŠƒ“ƒOA0xB0 •\ŽŚ–ł‚ľ
- 0xB0 ƒOƒ‰ƒtƒBƒeƒB,
- 0xB1 ƒfƒ‚ƒ“ƒXƒgƒŒ[ƒVƒ‡ƒ“A0xB2`0xBF •\ŽŚ–ł‚ľ
- 0xB2 ƒsƒ“ƒN‚Ěƒ[ƒvƒ|[ƒ^ƒ‹•—
- 0xB3 Ź‚ł‚ȏ\Žš‰Ë‚Ş‚Ó‚ć‚Ó‚ć
- 0xB4 ƒoƒWƒŠƒJA0xB5 ƒGƒtƒFƒNƒg‚Č‚ľH
- 0xB6 •‚˘~‚Ş—§‘Ě“I‚É•‚‚Š‚Ńă‚Ş‚é
- 0xB7 ƒNƒ‚‚Ě‘ƒA0xB8` ƒGƒtƒFƒNƒg‚Č‚ľH
+ スキル効能地作成(011fの上位バーション?)
+ type 0x7e:SW、0x7f:火壁、0x80 ポタ開き中、0x81 ポタ開き直前
+ 0x82 聖体、0x83 サンク、0x84 マグヌス、0x85 ニューマ
+ 0x86 0x86 大魔法(SG/MS/LoV/GX)、0x87 ファイヤーピラ待機
+ 0x88 ファイヤーピラ爆発、0x87〜0x8B 表示無し、
+ 0x8c トーキーボックス(発動中)、0x8D アイスウォール
+ 0x8E クワグマイア、0x8f ブラストマイン、0x90 スキッド
+ 0x91 アンクル、0x92 ベノムダスト、0x93 ランドマイン
+ 0x94 ショックウェーブトラップ、0x95 サンドマン
+ 0x96 フラッシャー、0x97 フリージングトラップ
+ 0x98 クレイモアートラップ、0x99 トーキーボックス
+ 0x9A ボルケーノ、0x9B デリュージ、0x9C バイオレントゲイル
+ 0x9D ランドプロテクター、0x9E Zenyマーク、0x9F Zeny袋
+ 0xA0 回る緑の輪、0xA1 ピンクの音符 (二連符有り
+ 0xA2 真ん中に点のある光の玉、0xA3 ピンクのスプリング
+ 0xA4 深淵の中に、0xA5 回る青い輪、0xA6 不協和音
+ 0xA7 口笛、0xA8 夕陽のアサシンクロス、0xA9 ブラギの詩
+ 0xAA イドゥンの林檎、0xAB 自分勝手なダンス、0xAC ハミング
+ 0xAD 私を忘れないで…、0xAE サービスフォーユー
+ 0xAF ピンクのスプリング、0xB0 表示無し
+ 0xB0 グラフィティ,
+ 0xB1 デモンストレーション、0xB2〜0xBF 表示無し
+ 0xB2 ピンクのワープポータル風
+ 0xB3 小さな十字架がふよふよ
+ 0xB4 バジリカ、0xB5 エフェクトなし?
+ 0xB6 黒い×が立体的に浮かび上がる
+ 0xB7 クモの巣、0xB8〜 エフェクトなし?
- ‘źî•ń‹‚Ţ
- ?.81b‚Í“äB
+ 他情報求む
+ ?.81bは謎。
R 01cd (<sid>.l)x7
- ƒI[ƒgƒXƒyƒ‹‘I‘đŽˆŽóM
- <sid>x7 ‚É‚Í NB,CB,FB,LB,SS,FBL,FD ‚̏‡‚ĹƒXƒLƒ‹ƒR[ƒh‚Şdword‚Ĺ“ü‚é
- ‚Ü‚ž‘I‘đ‚Ĺ‚Ť‚Č‚˘ƒXƒLƒ‹‚Ě•”•Ş‚Í <sid> = 0x00000000 ‚Ş“ü‚é
+ オートスペル選択肢受信
+ <sid>x7 には NB,CB,FB,LB,SS,FBL,FD の順でスキルコードがdwordで入る
+ まだ選択できないスキルの部分は <sid> = 0x00000000 が入る
S 01ce <sid>.l
- ƒI[ƒgƒXƒyƒ‹‘I‘đŽˆ‘—M
+ オートスペル選択肢送信
R 01cf <crusader id>.l <target id>.l <?>.18b
- ŒŁgó‘Ôƒ^[ƒQƒbƒgON/OFFBŒŁg‚ŞŘ‚ę‚é‚Ć <target id> ‚Ş 0x00000000 ‚É‚Č‚é
+ 献身状態ターゲットON/OFF。献身が切れると <target id> が 0x00000000 になる
R 01d0 <ID>.l <num>.w
- <num> : ‹CŒ÷‚̐”(”ńLv)
+ <num> : 気功の数(非Lv)
R 01d1 <monk id>.l <target monster id>.l <bool>.l
- ”’‰HŽć‚čó‘ÔON/OFFB<bool> ‚Í”’nŽć‚萏—§Žž‚É 0x00000001 ‰đœŽž‚É 0x00000000 ‚Ş—ˆ‚é
+ 白羽取り状態ON/OFF。<bool> は白刃取り成立時に 0x00000001 解除時に 0x00000000 が来る
R 01d2 <id>.l <delay>.l
- ƒ‚ƒ“ƒN‚ĚƒRƒ“ƒ{ƒfƒBƒŒƒC(msec)
- ŽO’iE˜A‘Ĺ‚ÍŠî–{ƒfƒBƒŒƒC1000(+300)A–Ň—´‚ÍŠî–{ƒfƒBƒŒƒC700(+300)
+ モンクのコンボディレイ(msec)
+ 三段・連打は基本ディレイ1000(+300)、猛龍は基本ディレイ700(+300)
R 01d4 <ID>.l
- •śŽš—ń“ü—Í‘‹•\ŽŚ(ID‚ÍNPC‚ĚID‚Ş“ü‚é)
+ 文字列入力窓表示(IDはNPCのIDが入る)
S 01d5 <len>.w <ID>.l <input>.?B 00
- •śŽš—ń“ü—Í“ŕ—e‘—M(ID‚ÍNPC‚ĚID‚Ş“ü‚é)
+ 文字列入力内容送信(IDはNPCのIDが入る)
R 01d7 <ID>.l <equip point>.b <item id1>.w <item id2>.w
- ‘•”őƒOƒ‰ƒtƒBƒbƒN <equip point> ‚Í 02Žč‚Ć09‘Ť‚Ě‚ÝŠm”FBid2‚͍śŽč
+ 装備グラフィック <equip point> は 02手と09足のみ確認。id2は左手
R 01d8 <ID>.l <speed>.w <opt1>.w <opt2>.w <option>.w <class>.w <hair>.w <item id1>.w <item id2>.w <head option bottom>.w <head option top>.w <head option mid>.w <hair color>.w ?.w <head dir>.w <guild>.l <emblem>.l <manner>.w <karma>.B <sex>.B <X_Y_dir>.3B ?.B ?.B <sit>.B <Lv>.B ?.B
- ƒ}ƒbƒvƒ[ƒhŽž&ˆÚ“ŽŽž—pAŒü‚Ť•t‚Ť—pƒLƒƒƒ‰î•ń?(0078‚̏ăˆĘƒo[ƒWƒ‡ƒ“)
+ マップロード時&移動時用、向き付き用キャラ情報?(0078の上位バージョン)
R 01d9 <ID>.l <speed>.w <opt1>.w <opt2>.w <option>.w <class>.w <hair>.w <item id1>.w <item id2>.w.<head option bottom>.w <head option top>.w <head option mid>.w <hair color>.w ?.w <head dir>.w <guild>.l <emblem>.l <manner>.w <karma>.B <sex>.B <X_Y_dir>.3B ?.B ?.B <Lv>.B ?.B
- ƒeƒŒƒ|“™‚Ě•\ŽŚ”ÍˆÍ“ŕ•Ś‚ŤƒLƒƒƒ‰—pAŒü‚Ť•t‚Ť–ł‚ľƒLƒƒƒ‰î•ń?(0079‚̏ăˆĘƒo[ƒWƒ‡ƒ“)
+ テレポ等の表示範囲内沸きキャラ用、向き付き無しキャラ情報?(0079の上位バージョン)
R 01da <ID>.l <speed>.w <opt1>.w <opt2>.w <option>.w <class>.w <hair>.<item id1>.w <item id2>.w <head option bottom>.w <server tick>.l <head option top>.w <head option mid>.w <hair color>.w ?.w <head dir>.w <guild>.l <emblem>.l <manner>.w <karma>.B <sex>.B <X_Y_X_Y>.5B ?.B ?.B ?.B <Lv>.B ?.B
- •\ŽŚ”͈͓ŕƒLƒƒƒ‰ˆÚ“Žî•ń(007b‚̏ăˆĘƒo[ƒWƒ‡ƒ“)
+ 表示範囲内キャラ移動情報(007bの上位バージョン)
S 01db
- ˆĂ†‰ťkey—v‹
+ 暗号化key要求
R 01dc <len>.w <key>.?B
- ˆĂ†‰ťkey‘—•t
+ 暗号化key送付
S 01dd <version>.l <account name>.24B <md5 binary>.16B <version2>.1B
- id&ˆĂ†‰ťĎ‚Ýpass‘—M
- ‡‚ɃNƒ‰ƒCƒAƒ“ƒg‚Ş01db‚đ‘—‚éA
- ŽI‚Ş01dc‚Ĺkey‚đ•Ô‚ˇA
- ƒNƒ‰ƒCƒAƒ“ƒg‚Ş"<key><password>"‚ɂ‚˘‚Ämd5ŒvŽZ‚ľ
- <md5 binary>‚̏Š‚đ–„‚ß‚Ä01dd‚đ‘—‚éB
- <passwordencrypt2>‚ĚŽž‚Í
- "<key><password>"‚ɑ΂ľ‚Ämd5ŒvŽZ‚Ć‚ľ‚Ä‚˘‚鏊‚đ
- "<password><key>"‚Ć•ĎX‚ˇ‚é
+ id&暗号化済みpass送信
+ 順にクライアントが01dbを送る、
+ 鯖が01dcでkeyを返す、
+ クライアントが"<key><password>"についてmd5計算し
+ <md5 binary>の所を埋めて01ddを送る。
+ <passwordencrypt2>の時は
+ "<key><password>"に対してmd5計算としている所を
+ "<password><key>"と変更する
R 01de <skill ID>.w <src ID>.l <dst ID>.l <server tick>.l <src speed>.l <dst speed>.l <param1>.l <param2>.w <param3>.w <type>.B
- UŒ‚ŒnƒXƒLƒ‹ƒGƒtƒFƒNƒg@(0114‚̏ăˆĘƒo[ƒVƒ‡ƒ“H)
- type=04 ‰Î•Ç‚ĹŠĎ‘Ş type=06‚Ć‚Ů‚Ú“Ż‚ś?
- type=05 NB/FBl‚Ě•ŞŽU‚ľ‚˝ƒ_ƒ[ƒW—pH
- type=06 ’P”­‚ŕ‚Ě? param1‚̓_ƒ[ƒW‡ŒvAparam2‚ÍlevelAparam3‚Í1ŒĹ’č‚Ć—\‘z
- type=07 ƒ_ƒ[ƒW•\ŽŚ–ł‚ľH
- type=08 ˜A‘Ĺ‚ŕ‚Ě? param1‚̓_ƒ[ƒW‡ŒvAparam2‚ÍlevelAparam3‚Í•ŞŠ„”‚Ć—\‘z
- type=09 ƒ_ƒ[ƒWƒ‚[ƒVƒ‡ƒ“‚Č‚ľ‚Ƀ_ƒ[ƒW‚ž‚Ż•\ŽŚ‚ł‚ę‚镨(ƒCƒ“ƒfƒ…ƒA)‚ĆŽv‚Á‚˝‚Ě‚ž‚ރ_ƒ[ƒWƒ‚[ƒVƒ‡ƒ“‚ޏo‚镨B(‹@”\‚Í“ä)
+ 攻撃系スキルエフェクト@(0114の上位バーション?)
+ type=04 火壁で観測 type=06とほぼ同じ?
+ type=05 NB/FBlの分散したダメージ用?
+ type=06 単発もの? param1はダメージ合計、param2はlevel、param3は1固定と予想
+ type=07 ダメージ表示無し?
+ type=08 連打もの? param1はダメージ合計、param2はlevel、param3は分割数と予想
+ type=09 ダメージモーションなしにダメージだけ表示される物(インデュア)と思ったのだがダメージモーションが出る物。(機能は謎)
S 01df <ID>.|
- GM‰EƒNƒŠƒbƒN‚É‚ć‚éID‚Ěƒ`ƒƒƒbƒg‹ÖŽ~‰ń”ŽQĆH
+ GM右クリックによるIDのチャット禁止回数参照?
R 01e1 <ID>.l <num>.w
- <num> : ‹CŒ÷‚̐”(”ńLv) ˆę“x•\ŽŚ‚ľ‚˝‚çŒă‚Ç‚ń‚Čnum‚Ş—ˆ‚Ä‚ŕ–łŽ‹‚ł‚ę‚éB
+ <num> : 気功の数(非Lv) 一度表示したら後どんなnumが来ても無視される。
R 01e6 <partner name>.24B
- Œ‹ĽƒXƒLƒ‹‚ ‚Č‚˝‚Ɉ§‚˘‚˝‚˘Žg—pŽž‚Ě‹Š‚ѐş
+ 結婚スキルあなたに逢いたい使用時の叫び声
S 01e7
- ƒXƒpƒmƒr‚Ĺ/doridori‚ľ‚˝‚ç”ň‚ń‚Ĺ‚­‚éBSPR‰ń•œ—Ę2”{ƒtƒ‰ƒO‚𗧂ĂéƒpƒPƒbƒg
+ スパノビで/doridoriしたら飛んでくる。SPR回復量2倍フラグを立てるパケット
S 01e8 <party name>.24B <item1>B <item2>B
- <item1>ƒAƒCƒeƒ€ŽűW•ű–@B0‚ĹŒÂl•ĘA1‚Ĺƒp[ƒeƒBŒö—L
- <item2>ƒAƒCƒeƒ€•Ş”z•ű–@B0‚ĹŒÂl•ĘA1‚Ĺƒp[ƒeƒB‚É‹Ď“™•Ş”z
- (00f9‚̏ăˆĘƒo[ƒVƒ‡ƒ“)
+ <item1>アイテム収集方法。0で個人別、1でパーティ公有
+ <item2>アイテム分配方法。0で個人別、1でパーティに均等分配
+ (00f9の上位バーション)
R 01ea <ID>.l
- Œ‹ĽƒGƒtƒFƒNƒg(‰šŠyAŽ†á)
- ID‚͐V•w‚Ě‚ŕ‚Ě‚Ş“ü‚éH
+ 結婚エフェクト(音楽、紙吹雪)
+ IDは新婦のものが入る?
S 01ed
- ƒXƒpƒmƒr‚Ş”š—ô”g“Ž‚É‚Č‚éƒtƒ‰ƒO‚𗧂ĂéƒpƒPƒbƒg
+ スパノビが爆裂波動になるフラグを立てるパケット
R 01ee <len>.w {<index>.w <item ID>.w <type>.B <identify flag>.B <amount>.w ?.2B <card>.4w}.18B*
- Š—LÁ–Ő•i&ŽűW•iƒŠƒXƒg
- –î‚Ěę‡‚Í?.2B‚Ş0x8000‚É‚Č‚é
- 00a3‚Š‚ç•ĎX
+ 所有消耗品&収集品リスト
+ 矢の場合は?.2Bが0x8000になる
+ 00a3から変更
R 01ef <len>.w {<index>.w <item ID>.w <type>.B <identify flag>.B <amount>.w ?.2B <card>.4w}.18B*
- ƒJ[ƒg“ŕƒAƒCƒeƒ€BÁ–Ő•i/ŽűW•i
- 0123‚Š‚ç•ĎX
+ カート内アイテム。消耗品/収集品
+ 0123から変更
R 01f0 <len>.w {<index>.w <item ID>.w <type>.B <identify flag>.B <amount>.w ?.2B <card>.4w}.18B*
- ƒJƒvƒ‰‚ł‚ń‚É—a‚Ż‚Ä‚ ‚éÁ–Ő•i&ŽűW•iƒŠƒXƒg
- 00a5‚Š‚ç•ĎX
+ カプラさんに預けてある消耗品&収集品リスト
+ 00a5から変更
R 01f4 <name>.24B <trade id?>.L <LV>.w
- ć•ű‚Š‚çŽćˆř—vż
- 00e5‚Š‚ç•ĎX
+ 先方から取引要請
+ 00e5から変更
R 01f5 <result>.B <trade id?>.L <LV>.w
- ‚ą‚ż‚ç‚Š‚ç‚ĚŽćˆř—vż‚ɑ΂ˇ‚é”˝‰ž
- 00e7‚Š‚ç•ĎX
+ こちらからの取引要請に対する反応
+ 00e7から変更
S 0200 <login name>.24B
- ragexe‚É/accountƒIƒvƒVƒ‡ƒ“‚đ‚‚Ż‚Ä‹N“Ž‚ˇ‚é‚ĆƒƒOƒCƒ“—v‹‚É•t‰Á‚ł‚ę‚éƒpƒPƒbƒg
+ ragexeに/accountオプションをつけて起動するとログイン要求に付加されるパケット
R 0201 ?.1B<Flag?>.1B (?.8B <Character Name>.24B)x20
Flag seems to need to be 1 to function.
8 unknown bytes and 24 bytes for name need to be repeated for each friend.
S 0202 <Character name>.24B
Character name to add to friend list (for server-side friend list enabled clients)
S 0204 <?>.16B
- ƒƒOƒCƒ“—v‹‚É•t‰Á‚ł‚ę‚éƒpƒPƒbƒgB16ƒoƒCƒg‚ÍŒĹ’čH
+ ログイン要求に付加されるパケット。16バイトは固定?
S 020B <?>.17B
- ƒLƒƒƒ‰ƒNƒ^ƒT[ƒoÚ‘ą—v‹0065‚É•t‰Á‚ł‚ę‚éƒpƒPƒbƒgB1+0204‚Ě16ƒoƒCƒg‚Ĺ17ƒoƒCƒgH
+ キャラクタサーバ接続要求0065に付加されるパケット。1+0204の16バイトで17バイト?
S 020C <account id>.L, <ip address>.L
IP address in network byte order for a player account in response to a charname request [MadCamel]
-ƒpƒPƒbƒg’ˇ‚̒ljÁB019e`01aa‚Ş‘‚Ś‚Ä‚é‚̂ŁA0190`‚đŘ‚蔲‚Ť
+パケット長の追加。019e〜01aaが増えてるので、0190〜を切り抜き
added packet lenth. 019e-01aa is a new, so here is a packet length table from 0190.
-@ 90, 86, 24,@6, 30,102,@8,@4,@ 8,@4, 14, 10, -1,@6,@2,@6,
-@@3,@3, 35,@5, 11, 26, -1,@4,@ 4,@6, 10
+  90, 86, 24, 6, 30,102, 8, 4,  8, 4, 14, 10, -1, 6, 2, 6,
+  3, 3, 35, 5, 11, 26, -1, 4,  4, 6, 10
diff --git a/doc/readme.txt b/doc/readme.txt
index 0fd0c89..797d338 100644
--- a/doc/readme.txt
+++ b/doc/readme.txt
@@ -91,7 +91,7 @@ provided above.
The item_descriptions.txt file is where all of the
descriptions are stored. Please note if you're manually
-changing something in it, that you should the ť character
+changing something in it, that you should the } character
for a new line. (Use ALT + 175 to type it.) It should
currently have the majority of the basic descriptions.
You won't need to add how much defense or the attack
diff --git a/src/char/int_guild.c b/src/char/int_guild.c
index 49bb238..5b4fe30 100644
--- a/src/char/int_guild.c
+++ b/src/char/int_guild.c
@@ -32,17 +32,17 @@ int mapif_guild_basicinfochanged (int guild_id, int type, const void *data,
int mapif_guild_info (int fd, struct guild *g);
int guild_break_sub (void *key, void *data, va_list ap);
-// ƒMƒ‹ƒhƒf[ƒ^‚Ě•śŽš—ń‚Ö‚Ě•ĎŠˇ
+// ギルドデータの文字列への変換
int inter_guild_tostr (char *str, struct guild *g)
{
int i, c, len;
- // Šî–{ƒf[ƒ^
+ // 基本データ
len = sprintf (str, "%d\t%s\t%s\t%d,%d,%d,%d,%d\t%s#\t%s#\t",
g->guild_id, g->name, g->master,
g->guild_lv, g->max_member, g->exp, g->skill_point,
g->castle_id, g->mes1, g->mes2);
- // ƒƒ“ƒo[
+ // ュンバミ
for (i = 0; i < g->max_member; i++)
{
struct guild_member *m = &g->member[i];
@@ -52,7 +52,7 @@ int inter_guild_tostr (char *str, struct guild *g)
m->class, m->lv, m->exp, m->exp_payper, m->position,
((m->account_id > 0) ? m->name : "-"));
}
- // –đE
+ // 彚聡
for (i = 0; i < MAX_GUILDPOSITION; i++)
{
struct guild_position *p = &g->position[i];
@@ -60,7 +60,7 @@ int inter_guild_tostr (char *str, struct guild *g)
sprintf (str + len, "%d,%d\t%s#\t", p->mode, p->exp_mode,
p->name);
}
- // ƒGƒ“ƒuƒŒƒ€
+ // エンブレム
len += sprintf (str + len, "%d,%d,", g->emblem_len, g->emblem_id);
for (i = 0; i < g->emblem_len; i++)
{
@@ -68,7 +68,7 @@ int inter_guild_tostr (char *str, struct guild *g)
sprintf (str + len, "%02x", (unsigned char) (g->emblem_data[i]));
}
len += sprintf (str + len, "$\t");
- // “Ż–żƒŠƒXƒg
+ // 同盟リスト
c = 0;
for (i = 0; i < MAX_GUILDALLIANCE; i++)
if (g->alliance[i].guild_id > 0)
@@ -82,7 +82,7 @@ int inter_guild_tostr (char *str, struct guild *g)
sprintf (str + len, "%d,%d\t%s\t", a->guild_id, a->opposition,
a->name);
}
- // ’Ç•úƒŠƒXƒg
+ // 追放リスト
c = 0;
for (i = 0; i < MAX_GUILDEXPLUSION; i++)
if (g->explusion[i].account_id > 0)
@@ -96,7 +96,7 @@ int inter_guild_tostr (char *str, struct guild *g)
e->account_id, e->rsv1, e->rsv2, e->rsv3,
e->name, e->acc, e->mes);
}
- // ƒMƒ‹ƒhƒXƒLƒ‹
+ // ギルドスキル
for (i = 0; i < MAX_GUILDSKILL; i++)
{
len += sprintf (str + len, "%d,%d ", g->skill[i].id, g->skill[i].lv);
@@ -106,7 +106,7 @@ int inter_guild_tostr (char *str, struct guild *g)
return 0;
}
-// ƒMƒ‹ƒhƒf[ƒ^‚Ě•śŽš—ń‚Š‚ç‚Ě•ĎŠˇ
+// ギルドデータの文字列からの変換
int inter_guild_fromstr (char *str, struct guild *g)
{
int i, j, c;
@@ -115,7 +115,7 @@ int inter_guild_fromstr (char *str, struct guild *g)
char tmp_str2[4096];
char *pstr;
- // Šî–{ƒf[ƒ^
+ // 基本データ
memset (g, 0, sizeof (struct guild));
if (sscanf
(str, "%d\t%[^\t]\t%[^\t]\t%d,%d,%d,%d,%d\t%[^\t]\t%[^\t]\t",
@@ -136,11 +136,11 @@ int inter_guild_fromstr (char *str, struct guild *g)
g->mes1[strlen (g->mes1) - 1] = 0;
g->mes2[strlen (g->mes2) - 1] = 0;
- for (j = 0; j < 6 && str != NULL; j++) // ˆĘ’uƒXƒLƒbƒv
+ for (j = 0; j < 6 && str != NULL; j++) // 位置スキップ
str = strchr (str + 1, '\t');
// printf("GuildBaseInfo OK\n");
- // ƒƒ“ƒo[
+ // ュンバミ
for (i = 0; i < g->max_member; i++)
{
struct guild_member *m = &g->member[i];
@@ -161,11 +161,11 @@ int inter_guild_fromstr (char *str, struct guild *g)
m->position = tmp_int[9];
memcpy (m->name, tmp_str[0], 24);
- for (j = 0; j < 2 && str != NULL; j++) // ˆĘ’uƒXƒLƒbƒv
+ for (j = 0; j < 2 && str != NULL; j++) // 位置スキップ
str = strchr (str + 1, '\t');
}
// printf("GuildMemberInfo OK\n");
- // –đE
+ // 彚聡
i = 0;
while (sscanf (str + 1, "%d,%d%n", &tmp_int[0], &tmp_int[1], &j) == 2
&& str[1 + j] == '\t')
@@ -180,12 +180,12 @@ int inter_guild_fromstr (char *str, struct guild *g)
tmp_str[0][strlen (tmp_str[0]) - 1] = 0;
memcpy (p->name, tmp_str[0], 24);
- for (j = 0; j < 2 && str != NULL; j++) // ˆĘ’uƒXƒLƒbƒv
+ for (j = 0; j < 2 && str != NULL; j++) // 位置スキップ
str = strchr (str + 1, '\t');
i++;
}
// printf("GuildPositionInfo OK\n");
- // ƒGƒ“ƒuƒŒƒ€
+ // エンブレム
tmp_int[1] = 0;
if (sscanf (str + 1, "%d,%d,%[^\t]\t", &tmp_int[0], &tmp_int[1], tmp_str2)
< 3 && sscanf (str + 1, "%d,%[^\t]\t", &tmp_int[0], tmp_str2) < 2)
@@ -210,12 +210,12 @@ int inter_guild_fromstr (char *str, struct guild *g)
g->emblem_data[i] = (x1 << 4) | x2;
}
// printf("GuildEmblemInfo OK\n");
- str = strchr (str + 1, '\t'); // ˆĘ’uƒXƒLƒbƒv
+ str = strchr (str + 1, '\t'); // 位置スキップ
- // “Ż–żƒŠƒXƒg
+ // 同盟リスト
if (sscanf (str + 1, "%d\t", &c) < 1)
return 1;
- str = strchr (str + 1, '\t'); // ˆĘ’uƒXƒLƒbƒv
+ str = strchr (str + 1, '\t'); // 位置スキップ
for (i = 0; i < c; i++)
{
struct guild_alliance *a = &g->alliance[i];
@@ -227,14 +227,14 @@ int inter_guild_fromstr (char *str, struct guild *g)
a->opposition = tmp_int[1];
memcpy (a->name, tmp_str[0], 24);
- for (j = 0; j < 2 && str != NULL; j++) // ˆĘ’uƒXƒLƒbƒv
+ for (j = 0; j < 2 && str != NULL; j++) // 位置スキップ
str = strchr (str + 1, '\t');
}
// printf("GuildAllianceInfo OK\n");
- // ’Ç•úƒŠƒXƒg
+ // 追放リスト
if (sscanf (str + 1, "%d\t", &c) < 1)
return 1;
- str = strchr (str + 1, '\t'); // ˆĘ’uƒXƒLƒbƒv
+ str = strchr (str + 1, '\t'); // 位置スキップ
for (i = 0; i < c; i++)
{
struct guild_explusion *e = &g->explusion[i];
@@ -251,11 +251,11 @@ int inter_guild_fromstr (char *str, struct guild *g)
tmp_str[2][strlen (tmp_str[2]) - 1] = 0;
memcpy (e->mes, tmp_str[2], 40);
- for (j = 0; j < 4 && str != NULL; j++) // ˆĘ’uƒXƒLƒbƒv
+ for (j = 0; j < 4 && str != NULL; j++) // 位置スキップ
str = strchr (str + 1, '\t');
}
// printf("GuildExplusionInfo OK\n");
- // ƒMƒ‹ƒhƒXƒLƒ‹
+ // ギルドスキル
for (i = 0; i < MAX_GUILDSKILL; i++)
{
if (sscanf (str + 1, "%d,%d ", &tmp_int[0], &tmp_int[1]) < 2)
@@ -270,7 +270,7 @@ int inter_guild_fromstr (char *str, struct guild *g)
return 0;
}
-// ƒMƒ‹ƒhéƒf[ƒ^‚Ě•śŽš—ń‚Ö‚Ě•ĎŠˇ
+// ギルド城データの文字列への変換
int inter_guildcastle_tostr (char *str, struct guild_castle *gc)
{
int len;
@@ -286,7 +286,7 @@ int inter_guildcastle_tostr (char *str, struct guild_castle *gc)
return 0;
}
-// ƒMƒ‹ƒhéƒf[ƒ^‚Ě•śŽš—ń‚Š‚ç‚Ě•ĎŠˇ
+// ギルド城データの文字列からの変換
int inter_guildcastle_fromstr (char *str, struct guild_castle *gc)
{
int tmp_int[26];
@@ -397,7 +397,7 @@ int inter_guildcastle_fromstr (char *str, struct guild_castle *gc)
return 0;
}
-// ƒMƒ‹ƒhŠÖ˜Aƒf[ƒ^ƒx[ƒX“ǂݍž‚Ý
+// ギルド関連データベース読み込み
int inter_guild_readdb ()
{
int i;
@@ -423,7 +423,7 @@ int inter_guild_readdb ()
return 0;
}
-// ƒMƒ‹ƒhƒf[ƒ^‚Ě“Ç‚Ýž‚Ý
+// ギルドデータの読み込み
int inter_guild_init ()
{
char line[16384];
@@ -474,7 +474,7 @@ int inter_guild_init ()
fclose_ (fp);
// printf("int_guild: %s read done (%d guilds)\n", guild_txt, c);
- c = 0; //ƒJƒEƒ“ƒ^‰Šú‰ť
+ c = 0; //カウンタ初期化
if ((fp = fopen_ (castle_txt, "r")) == NULL)
{
@@ -505,7 +505,7 @@ int inter_guild_init ()
if (!c)
{
printf (" %s - making Default Data...\n", castle_txt);
- //ƒfƒtƒHƒ‹ƒgƒf[ƒ^‚đěŹ
+ //デフォルトデータを作成
for (i = 0; i < MAX_GUILDCASTLE; i++)
{
gc = calloc (sizeof (struct guild_castle), 1);
@@ -561,7 +561,7 @@ struct guild *inter_guild_search (int guild_id)
return g;
}
-// ƒMƒ‹ƒhƒf[ƒ^‚ĚƒZ[ƒu—p
+// ギルドデータのセーブ用
int inter_guild_save_sub (void *key, void *data, va_list ap)
{
char line[16384];
@@ -574,7 +574,7 @@ int inter_guild_save_sub (void *key, void *data, va_list ap)
return 0;
}
-// ƒMƒ‹ƒhéƒf[ƒ^‚ĚƒZ[ƒu—p
+// ギルド城データのセーブ用
int inter_castle_save_sub (void *key, void *data, va_list ap)
{
char line[16384];
@@ -587,7 +587,7 @@ int inter_castle_save_sub (void *key, void *data, va_list ap)
return 0;
}
-// ƒMƒ‹ƒhƒf[ƒ^‚ĚƒZ[ƒu
+// ギルドデータのセーブ
int inter_guild_save ()
{
FILE *fp;
@@ -616,7 +616,7 @@ int inter_guild_save ()
return 0;
}
-// ƒMƒ‹ƒh–źŒŸő—p
+// ギルド名検索用
int search_guildname_sub (void *key, void *data, va_list ap)
{
struct guild *g = (struct guild *) data, **dst;
@@ -629,7 +629,7 @@ int search_guildname_sub (void *key, void *data, va_list ap)
return 0;
}
-// ƒMƒ‹ƒh–źŒŸő
+// ギルド名検索
struct guild *search_guildname (char *str)
{
struct guild *g = NULL;
@@ -637,7 +637,7 @@ struct guild *search_guildname (char *str)
return g;
}
-// ƒMƒ‹ƒh‚Ş‹ó‚Š‚Ç‚¤‚Šƒ`ƒFƒbƒN
+// ギルドが空かどうかチェック
int guild_check_empty (struct guild *g)
{
int i;
@@ -649,7 +649,7 @@ int guild_check_empty (struct guild *g)
return 0;
}
}
- // ’N‚ŕ‚˘‚Č‚˘‚̂ʼnđŽU
+ // 誰もいないので解散
numdb_foreach (guild_db, guild_break_sub, g->guild_id);
numdb_erase (guild_db, g->guild_id);
inter_guild_storage_delete (g->guild_id);
@@ -659,7 +659,7 @@ int guild_check_empty (struct guild *g)
return 1;
}
-// ƒLƒƒƒ‰‚Ě‹Ł‡‚Ş‚Č‚˘‚Šƒ`ƒFƒbƒN—p
+// キャラの競合がないかチェック用
int guild_check_conflict_sub (void *key, void *data, va_list ap)
{
struct guild *g = (struct guild *) data;
@@ -669,25 +669,25 @@ int guild_check_conflict_sub (void *key, void *data, va_list ap)
account_id = va_arg (ap, int);
char_id = va_arg (ap, int);
- if (g->guild_id == guild_id) // –{—ˆ‚̏Š‘Ž‚Č‚Ě‚Ĺ–â‘č‚Č‚ľ
+ if (g->guild_id == guild_id) // 本来の所属なので問題なし
return 0;
for (i = 0; i < MAX_GUILD; i++)
{
if (g->member[i].account_id == account_id)
{
- // •Ę‚ĚƒMƒ‹ƒh‚É‹U‚̏Š‘Žƒf[ƒ^‚Ş‚ ‚é‚Ě‚Ĺ’E‘Ţ
+ // 別のギルドに偽の所属データがあるので脱退
printf ("int_guild: guild conflict! %d,%d %d!=%d\n", account_id,
char_id, guild_id, g->guild_id);
mapif_parse_GuildLeave (-1, g->guild_id, account_id, 0 /*char_id*/, 0,
- "**ƒf[ƒ^‹Ł‡**");
+ "**データ競合**");
}
}
return 0;
}
-// ƒLƒƒƒ‰‚Ě‹Ł‡‚Ş‚Č‚˘‚Šƒ`ƒFƒbƒN
+// キャラの競合がないかチェック
int guild_check_conflict (int guild_id, int account_id, int char_id)
{
numdb_foreach (guild_db, guild_check_conflict_sub, guild_id, account_id,
@@ -704,30 +704,30 @@ int guild_nextexp (int level)
return 0;
}
-// ƒMƒ‹ƒhƒXƒLƒ‹‚Ş‚ ‚é‚ŠŠm”F
+// ギルドスキルがあるか確認
int guild_checkskill (struct guild *g, int id)
{
return g->skill[id - 10000].lv;
}
-// ƒMƒ‹ƒh‚̏î•ń‚ĚÄŒvŽZ
+// ギルドの情報の再計算
int guild_calcinfo (struct guild *g)
{
int i, c, nextexp;
struct guild before = *g;
- // ƒXƒLƒ‹ID‚̐ݒč
+ // スキルIDの設定
for (i = 0; i < 5; i++)
g->skill[i].id = i + 10000;
- // ƒMƒ‹ƒhƒŒƒxƒ‹
+ // ギルドレベル
if (g->guild_lv <= 0)
g->guild_lv = 1;
nextexp = guild_nextexp (g->guild_lv);
if (nextexp > 0)
{
while (g->exp >= nextexp)
- { // ƒŒƒxƒ‹ƒAƒbƒvˆ—
+ { // レベルアップ処理
g->exp -= nextexp;
g->guild_lv++;
g->skill_point++;
@@ -735,13 +735,13 @@ int guild_calcinfo (struct guild *g)
}
}
- // ƒMƒ‹ƒh‚ĚŽŸ‚ĚŒoŒą’l
+ // ギルドの次の経験値
g->next_exp = guild_nextexp (g->guild_lv);
- // ƒƒ“ƒoăŒŔiƒMƒ‹ƒhŠg’Ł“K—pj
+ // メンバ上限(ギルド拡張適用)
g->max_member = 100 + guild_checkskill (g, 10004) * 2;
- // •˝‹ĎƒŒƒxƒ‹‚ĆƒIƒ“ƒ‰ƒCƒ“l”
+ // 平均レベルとオンライン人数
g->average_lv = 0;
g->connect_member = 0;
c = 0;
@@ -757,7 +757,7 @@ int guild_calcinfo (struct guild *g)
}
g->average_lv /= c;
- // ‘Sƒf[ƒ^‚đ‘—‚é•K—v‚Ş‚ ‚č‚ť‚¤
+ // 全データを送る必要がありそう
if (g->max_member != before.max_member ||
g->guild_lv != before.guild_lv ||
g->skill_point != before.skill_point)
@@ -770,9 +770,9 @@ int guild_calcinfo (struct guild *g)
}
//-------------------------------------------------------------------
-// map server‚ւ̒ʐM
+// map serverへの通信
-// ƒMƒ‹ƒhěŹ‰Â”Ű
+// ギルド作成可否
int mapif_guild_created (int fd, int account_id, struct guild *g)
{
WFIFOW (fd, 0) = 0x3830;
@@ -790,7 +790,7 @@ int mapif_guild_created (int fd, int account_id, struct guild *g)
return 0;
}
-// ƒMƒ‹ƒhî•ńŒŠ‚‚Š‚炸
+// ギルド情報見つからず
int mapif_guild_noinfo (int fd, int guild_id)
{
WFIFOW (fd, 0) = 0x3831;
@@ -802,7 +802,7 @@ int mapif_guild_noinfo (int fd, int guild_id)
return 0;
}
-// ƒMƒ‹ƒhî•ń‚Ü‚Ć‚ß‘—‚č
+// ギルド情報まとめ送り
int mapif_guild_info (int fd, struct guild *g)
{
unsigned char buf[4 + sizeof (struct guild)];
@@ -820,7 +820,7 @@ int mapif_guild_info (int fd, struct guild *g)
return 0;
}
-// ƒƒ“ƒo’ljÁ‰Â”Ű
+// メンバ追加可否
int mapif_guild_memberadded (int fd, int guild_id, int account_id,
int char_id, int flag)
{
@@ -834,7 +834,7 @@ int mapif_guild_memberadded (int fd, int guild_id, int account_id,
return 0;
}
-// ’E‘Ţ/’Ç•ú’Ę’m
+// 脱退/追放通知
int mapif_guild_leaved (int guild_id, int account_id, int char_id, int flag,
const char *name, const char *mes)
{
@@ -854,7 +854,7 @@ int mapif_guild_leaved (int guild_id, int account_id, int char_id, int flag,
return 0;
}
-// ƒIƒ“ƒ‰ƒCƒ“ó‘Ô‚ĆLvXV’Ę’m
+// オンライン状態とLv更新通知
int mapif_guild_memberinfoshort (struct guild *g, int idx)
{
unsigned char buf[19];
@@ -870,7 +870,7 @@ int mapif_guild_memberinfoshort (struct guild *g, int idx)
return 0;
}
-// ‰đŽU’Ę’m
+// 解散通知
int mapif_guild_broken (int guild_id, int flag)
{
unsigned char buf[7];
@@ -884,7 +884,7 @@ int mapif_guild_broken (int guild_id, int flag)
return 0;
}
-// ƒMƒ‹ƒh“ŕ”­Œž
+// ギルド内発言
int mapif_guild_message (int guild_id, int account_id, char *mes, int len)
{
unsigned char buf[len + 12];
@@ -899,7 +899,7 @@ int mapif_guild_message (int guild_id, int account_id, char *mes, int len)
return 0;
}
-// ƒMƒ‹ƒhŠî–{î•ń•ĎX’Ę’m
+// ギルド基本情報変更通知
int mapif_guild_basicinfochanged (int guild_id, int type, const void *data,
int len)
{
@@ -914,7 +914,7 @@ int mapif_guild_basicinfochanged (int guild_id, int type, const void *data,
return 0;
}
-// ƒMƒ‹ƒhƒƒ“ƒoî•ń•ĎX’Ę’m
+// ギルドメンバ情報変更通知
int mapif_guild_memberinfochanged (int guild_id, int account_id, int char_id,
int type, const void *data, int len)
{
@@ -932,7 +932,7 @@ int mapif_guild_memberinfochanged (int guild_id, int account_id, int char_id,
return 0;
}
-// ƒMƒ‹ƒhƒXƒLƒ‹ƒAƒbƒv’Ę’m
+// ギルドスキルアップ通知
int mapif_guild_skillupack (int guild_id, int skill_num, int account_id)
{
unsigned char buf[14];
@@ -946,7 +946,7 @@ int mapif_guild_skillupack (int guild_id, int skill_num, int account_id)
return 0;
}
-// ƒMƒ‹ƒh“Ż–ż/“G‘Î’Ę’m
+// ギルド同盟/敵対通知
int mapif_guild_alliance (int guild_id1, int guild_id2, int account_id1,
int account_id2, int flag, const char *name1,
const char *name2)
@@ -966,7 +966,7 @@ int mapif_guild_alliance (int guild_id1, int guild_id2, int account_id1,
return 0;
}
-// ƒMƒ‹ƒh–đE•ĎX’Ę’m
+// ギルド役職変更通知
int mapif_guild_position (struct guild *g, int idx)
{
unsigned char buf[sizeof (struct guild_position) + 12];
@@ -982,7 +982,7 @@ int mapif_guild_position (struct guild *g, int idx)
return 0;
}
-// ƒMƒ‹ƒh’m•ĎX’Ę’m
+// ギルド告知変更通知
int mapif_guild_notice (struct guild *g)
{
unsigned char buf[186];
@@ -996,7 +996,7 @@ int mapif_guild_notice (struct guild *g)
return 0;
}
-// ƒMƒ‹ƒhƒGƒ“ƒuƒŒƒ€•ĎX’Ę’m
+// ギルドエンブレム変更通知
int mapif_guild_emblem (struct guild *g)
{
unsigned char buf[2048];
@@ -1062,9 +1062,9 @@ int mapif_guild_castle_alldataload (int fd)
}
//-------------------------------------------------------------------
-// map server‚Š‚ç‚̒ʐM
+// map serverからの通信
-// ƒMƒ‹ƒhěŹ—v‹
+// ギルド作成要求
int mapif_parse_CreateGuild (int fd, int account_id, char *name,
struct guild_member *master)
{
@@ -1106,7 +1106,7 @@ int mapif_parse_CreateGuild (int fd, int account_id, char *name,
for (i = 1; i < MAX_GUILDPOSITION - 1; i++)
sprintf (g->position[i].name, "Position %d", i + 1);
- // ‚ą‚ą‚ĹƒMƒ‹ƒhî•ńŒvŽZ‚Ş•K—v‚ĆŽv‚í‚ę‚é
+ // ここでギルド情報計算が必要と思われる
g->max_member = 100;
g->average_lv = master->lv;
for (i = 0; i < 5; i++)
@@ -1123,7 +1123,7 @@ int mapif_parse_CreateGuild (int fd, int account_id, char *name,
return 0;
}
-// ƒMƒ‹ƒhî•ń—v‹
+// ギルド情報要求
int mapif_parse_GuildInfo (int fd, int guild_id)
{
struct guild *g;
@@ -1140,7 +1140,7 @@ int mapif_parse_GuildInfo (int fd, int guild_id)
return 0;
}
-// ƒMƒ‹ƒhƒƒ“ƒo’ljÁ—v‹
+// ギルドメンバ追加要求
int mapif_parse_GuildAddMember (int fd, int guild_id, struct guild_member *m)
{
struct guild *g;
@@ -1171,7 +1171,7 @@ int mapif_parse_GuildAddMember (int fd, int guild_id, struct guild_member *m)
return 0;
}
-// ƒMƒ‹ƒh’E‘Ţ/’Ç•ú—v‹
+// ギルド脱退/追放要求
int mapif_parse_GuildLeave (int fd, int guild_id, int account_id, int char_id,
int flag, const char *mes)
{
@@ -1189,14 +1189,14 @@ int mapif_parse_GuildLeave (int fd, int guild_id, int account_id, int char_id,
// printf("%d %s\n", i, g->member[i].name);
if (flag)
- { // ’Ç•ú‚Ěę‡’Ç•úƒŠƒXƒg‚É“ü‚ę‚é
+ { // 追放の場合追放リストに入れる
for (j = 0; j < MAX_GUILDEXPLUSION; j++)
{
if (g->explusion[j].account_id == 0)
break;
}
if (j == MAX_GUILDEXPLUSION)
- { // ˆę”t‚Č‚Ě‚ĹŒĂ‚˘‚Ě‚đÁ‚ˇ
+ { // 一杯なので古いのを消す
for (j = 0; j < MAX_GUILDEXPLUSION - 1; j++)
g->explusion[j] = g->explusion[j + 1];
j = MAX_GUILDEXPLUSION - 1;
@@ -1214,7 +1214,7 @@ int mapif_parse_GuildLeave (int fd, int guild_id, int account_id, int char_id,
memset (&g->member[i], 0, sizeof (struct guild_member));
if (guild_check_empty (g) == 0)
- mapif_guild_info (-1, g); // ‚Ü‚žl‚Ş‚˘‚é‚Ě‚Ĺƒf[ƒ^‘—M
+ mapif_guild_info (-1, g); // まだ人がいるのでデータ送信
return 0;
}
@@ -1223,7 +1223,7 @@ int mapif_parse_GuildLeave (int fd, int guild_id, int account_id, int char_id,
return 0;
}
-// ƒIƒ“ƒ‰ƒCƒ“/LvXV
+// オンライン/Lv更新
int mapif_parse_GuildChangeMemberInfoShort (int fd, int guild_id,
int account_id, int char_id,
int online, int lv, int class)
@@ -1256,13 +1256,13 @@ int mapif_parse_GuildChangeMemberInfoShort (int fd, int guild_id,
if (g->member[i].online)
g->connect_member++;
}
- // •˝‹ĎƒŒƒxƒ‹
+ // 平均レベル
g->average_lv = alv / c;
return 0;
}
-// ƒMƒ‹ƒh‰đŽUˆ——pi“Ż–ż/“G‘΂đ‰đœj
+// ギルド解散処理用(同盟/敵対を解除)
int guild_break_sub (void *key, void *data, va_list ap)
{
struct guild *g = (struct guild *) data;
@@ -1277,7 +1277,7 @@ int guild_break_sub (void *key, void *data, va_list ap)
return 0;
}
-// ƒMƒ‹ƒh‰đŽU—v‹
+// ギルド解散要求
int mapif_parse_BreakGuild (int fd, int guild_id)
{
struct guild *g;
@@ -1297,14 +1297,14 @@ int mapif_parse_BreakGuild (int fd, int guild_id)
return 0;
}
-// ƒMƒ‹ƒhƒƒbƒZ[ƒW‘—M
+// ギルドメッセージ送信
int mapif_parse_GuildMessage (int fd, int guild_id, int account_id, char *mes,
int len)
{
return mapif_guild_message (guild_id, account_id, mes, len);
}
-// ƒMƒ‹ƒhŠî–{ƒf[ƒ^•ĎX—v‹
+// ギルド基本データ変更要求
int mapif_parse_GuildBasicInfoChange (int fd, int guild_id, int type,
const char *data, int len)
{
@@ -1337,7 +1337,7 @@ int mapif_parse_GuildBasicInfoChange (int fd, int guild_id, int type,
return 0;
}
-// ƒMƒ‹ƒhƒƒ“ƒoƒf[ƒ^•ĎX—v‹
+// ギルドメンバデータ変更要求
int mapif_parse_GuildMemberInfoChange (int fd, int guild_id, int account_id,
int char_id, int type,
const char *data, int len)
@@ -1360,7 +1360,7 @@ int mapif_parse_GuildMemberInfoChange (int fd, int guild_id, int account_id,
}
switch (type)
{
- case GMI_POSITION: // –đE
+ case GMI_POSITION: // 彚聡
g->member[i].position = *((int *) data);
break;
case GMI_EXP: // EXP
@@ -1368,7 +1368,7 @@ int mapif_parse_GuildMemberInfoChange (int fd, int guild_id, int account_id,
int exp, oldexp = g->member[i].exp;
exp = g->member[i].exp = *((unsigned int *) data);
g->exp += (exp - oldexp);
- guild_calcinfo (g); // LvƒAƒbƒv”ť’f
+ guild_calcinfo (g); // Lvアップ判断
mapif_guild_basicinfochanged (guild_id, GBI_EXP, &g->exp, 4);
}
break;
@@ -1383,7 +1383,7 @@ int mapif_parse_GuildMemberInfoChange (int fd, int guild_id, int account_id,
return 0;
}
-// ƒMƒ‹ƒh–đE–ź•ĎX—v‹
+// ギルド役職名変更要求
int mapif_parse_GuildPosition (int fd, int guild_id, int idx,
struct guild_position *p)
{
@@ -1400,7 +1400,7 @@ int mapif_parse_GuildPosition (int fd, int guild_id, int idx,
return 0;
}
-// ƒMƒ‹ƒhƒXƒLƒ‹ƒAƒbƒv—v‹
+// ギルドスキルアップ要求
int mapif_parse_GuildSkillUp (int fd, int guild_id, int skill_num,
int account_id)
{
@@ -1423,7 +1423,7 @@ int mapif_parse_GuildSkillUp (int fd, int guild_id, int skill_num,
return 0;
}
-// ƒMƒ‹ƒh“Ż–ż—v‹
+// ギルド同盟要求
int mapif_parse_GuildAlliance (int fd, int guild_id1, int guild_id2,
int account_id1, int account_id2, int flag)
{
@@ -1450,7 +1450,7 @@ int mapif_parse_GuildAlliance (int fd, int guild_id1, int guild_id2,
}
}
else
- { // ŠÖŒW‰đÁ
+ { // 関係解消
for (i = 0; i < 2 - (flag & 1); i++)
{
for (j = 0; j < MAX_GUILDALLIANCE; j++)
@@ -1468,7 +1468,7 @@ int mapif_parse_GuildAlliance (int fd, int guild_id1, int guild_id2,
return 0;
}
-// ƒMƒ‹ƒh’m•ĎX—v‹
+// ギルド告知変更要求
int mapif_parse_GuildNotice (int fd, int guild_id, const char *mes1,
const char *mes2)
{
@@ -1483,7 +1483,7 @@ int mapif_parse_GuildNotice (int fd, int guild_id, const char *mes1,
return mapif_guild_notice (g);
}
-// ƒMƒ‹ƒhƒGƒ“ƒuƒŒƒ€•ĎX—v‹
+// ギルドエンブレム変更要求
int mapif_parse_GuildEmblem (int fd, int len, int guild_id, int dummy,
const char *data)
{
@@ -1697,17 +1697,17 @@ int mapif_parse_GuildCastleDataSave (int fd, int castle_id, int index,
return mapif_guild_castle_datasave (gc->castle_id, index, value);
}
-// ƒMƒ‹ƒhƒ`ƒFƒbƒN—v‹
+// ギルドチェック要求
int mapif_parse_GuildCheck (int fd, int guild_id, int account_id, int char_id)
{
return guild_check_conflict (guild_id, account_id, 0 /*char_id*/);
}
-// map server ‚Š‚ç‚̒ʐM
-// E‚PƒpƒPƒbƒg‚̂݉đÍ‚ˇ‚é‚ą‚Ć
-// EƒpƒPƒbƒg’ˇƒf[ƒ^‚Íinter.c‚ɃZƒbƒg‚ľ‚Ä‚¨‚­‚ą‚Ć
-// EƒpƒPƒbƒg’ˇƒ`ƒFƒbƒN‚âARFIFOSKIP‚ÍŒÄ‚Ńo‚ľŒł‚ōs‚í‚ę‚é‚Ě‚Ĺs‚Á‚Ä‚Í‚Č‚ç‚Č‚˘
-// EƒGƒ‰[‚Č‚ç0(false)A‚ť‚¤‚Ĺ‚Č‚˘‚Č‚ç1(true)‚đ‚Š‚Ś‚ł‚Č‚Ż‚ę‚΂Ȃç‚Č‚˘
+// map server からの通信
+// ・1パケットのみ解析すること
+// ・パケット長データはinter.cにセットしておくこと
+// ・パケット長チェックや、RFIFOSKIPは呼び出し元で行われるので行ってはならない
+// ・エラーなら0(false)、そうでないなら1(true)をかえさなければならない
int inter_guild_parse_frommap (int fd)
{
switch (RFIFOW (fd, 0))
@@ -1799,15 +1799,15 @@ int inter_guild_parse_frommap (int fd)
return 1;
}
-// ƒ}ƒbƒvƒT[ƒo[‚̐ڑąŽžˆ—
+// マップサーバーの接続時処理
int inter_guild_mapif_init (int fd)
{
return mapif_guild_castle_alldataload (fd);
}
-// ƒT[ƒo[‚Š‚ç’E‘Ţ—v‹iƒLƒƒƒ‰íœ—pj
+// サーバーから脱退要求(キャラ削除用)
int inter_guild_leave (int guild_id, int account_id, int char_id)
{
return mapif_parse_GuildLeave (-1, guild_id, account_id, 0 /*char_id*/, 0,
- "**ƒT[ƒo[–˝—ß**");
+ "**サーバー命令**");
}
diff --git a/src/char/int_party.c b/src/char/int_party.c
index fb9c3ca..c501c74 100644
--- a/src/char/int_party.c
+++ b/src/char/int_party.c
@@ -19,7 +19,7 @@ int mapif_party_broken (int party_id, int flag);
int party_check_empty (struct party *p);
int mapif_parse_PartyLeave (int fd, int party_id, int account_id);
-// ƒp[ƒeƒBƒf[ƒ^‚Ě•śŽš—ń‚Ö‚Ě•ĎŠˇ
+// パーティデータの文字列への変換
int inter_party_tostr (char *str, struct party *p)
{
int i, len;
@@ -38,7 +38,7 @@ int inter_party_tostr (char *str, struct party *p)
return 0;
}
-// ƒp[ƒeƒBƒf[ƒ^‚Ě•śŽš—ń‚Š‚ç‚Ě•ĎŠˇ
+// パーティデータの文字列からの変換
int inter_party_fromstr (char *str, struct party *p)
{
int i, j;
@@ -86,7 +86,7 @@ int inter_party_fromstr (char *str, struct party *p)
return 0;
}
-// ƒp[ƒeƒBƒf[ƒ^‚Ěƒ[ƒh
+// パーティデータのロード
int inter_party_init ()
{
char line[8192];
@@ -138,7 +138,7 @@ int inter_party_init ()
return 0;
}
-// ƒp[ƒeƒB[ƒf[ƒ^‚ĚƒZ[ƒu—p
+// パーティーデータのセーブ用
int inter_party_save_sub (void *key, void *data, va_list ap)
{
char line[8192];
@@ -151,7 +151,7 @@ int inter_party_save_sub (void *key, void *data, va_list ap)
return 0;
}
-// ƒp[ƒeƒB[ƒf[ƒ^‚ĚƒZ[ƒu
+// パーティーデータのセーブ
int inter_party_save ()
{
FILE *fp;
@@ -171,7 +171,7 @@ int inter_party_save ()
return 0;
}
-// ƒp[ƒeƒB–źŒŸő—p
+// パーティ名検索用
int search_partyname_sub (void *key, void *data, va_list ap)
{
struct party *p = (struct party *) data, **dst;
@@ -185,7 +185,7 @@ int search_partyname_sub (void *key, void *data, va_list ap)
return 0;
}
-// ƒp[ƒeƒB–źŒŸő
+// パーティ名検索
struct party *search_partyname (char *str)
{
struct party *p = NULL;
@@ -194,7 +194,7 @@ struct party *search_partyname (char *str)
return p;
}
-// EXPŒö•˝•Ş”z‚Ĺ‚Ť‚é‚Šƒ`ƒFƒbƒN
+// EXP公平分配できるかチェック
int party_check_exp_share (struct party *p)
{
int i;
@@ -215,7 +215,7 @@ int party_check_exp_share (struct party *p)
return (maxlv == 0 || maxlv - minlv <= party_share_level);
}
-// ƒp[ƒeƒB‚Ş‹ó‚Š‚Ç‚¤‚Šƒ`ƒFƒbƒN
+// パーティが空かどうかチェック
int party_check_empty (struct party *p)
{
int i;
@@ -229,7 +229,7 @@ int party_check_empty (struct party *p)
return 0;
}
}
- // ’N‚ŕ‚˘‚Č‚˘‚̂ʼnđŽU
+ // 誰もいないので解散
mapif_party_broken (p->party_id, 0);
numdb_erase (party_db, p->party_id);
free (p);
@@ -237,7 +237,7 @@ int party_check_empty (struct party *p)
return 1;
}
-// ƒLƒƒƒ‰‚Ě‹Ł‡‚Ş‚Č‚˘‚Šƒ`ƒFƒbƒN—p
+// キャラの競合がないかチェック用
int party_check_conflict_sub (void *key, void *data, va_list ap)
{
struct party *p = (struct party *) data;
@@ -248,7 +248,7 @@ int party_check_conflict_sub (void *key, void *data, va_list ap)
account_id = va_arg (ap, int);
nick = va_arg (ap, char *);
- if (p->party_id == party_id) // –{—ˆ‚̏Š‘Ž‚Č‚Ě‚Ĺ–â‘č‚Č‚ľ
+ if (p->party_id == party_id) // 本来の所属なので問題なし
return 0;
for (i = 0; i < MAX_PARTY; i++)
@@ -256,7 +256,7 @@ int party_check_conflict_sub (void *key, void *data, va_list ap)
if (p->member[i].account_id == account_id
&& strcmp (p->member[i].name, nick) == 0)
{
- // •Ę‚Ěƒp[ƒeƒB‚É‹U‚̏Š‘Žƒf[ƒ^‚Ş‚ ‚é‚Ě‚Ĺ’E‘Ţ
+ // 別のパーティに偽の所属データがあるので脱退
printf ("int_party: party conflict! %d %d %d\n", account_id,
party_id, p->party_id);
mapif_parse_PartyLeave (-1, p->party_id, account_id);
@@ -266,7 +266,7 @@ int party_check_conflict_sub (void *key, void *data, va_list ap)
return 0;
}
-// ƒLƒƒƒ‰‚Ě‹Ł‡‚Ş‚Č‚˘‚Šƒ`ƒFƒbƒN
+// キャラの競合がないかチェック
int party_check_conflict (int party_id, int account_id, char *nick)
{
numdb_foreach (party_db, party_check_conflict_sub, party_id, account_id,
@@ -276,9 +276,9 @@ int party_check_conflict (int party_id, int account_id, char *nick)
}
//-------------------------------------------------------------------
-// map server‚ւ̒ʐM
+// map serverへの通信
-// ƒp[ƒeƒBěŹ‰Â”Ű
+// パーティ作成可否
int mapif_party_created (int fd, int account_id, struct party *p)
{
WFIFOW (fd, 0) = 0x3820;
@@ -301,7 +301,7 @@ int mapif_party_created (int fd, int account_id, struct party *p)
return 0;
}
-// ƒp[ƒeƒBî•ńŒŠ‚‚Š‚炸
+// パーティ情報見つからず
int mapif_party_noinfo (int fd, int party_id)
{
WFIFOW (fd, 0) = 0x3821;
@@ -313,7 +313,7 @@ int mapif_party_noinfo (int fd, int party_id)
return 0;
}
-// ƒp[ƒeƒBî•ń‚Ü‚Ć‚ß‘—‚č
+// パーティ情報まとめ送り
int mapif_party_info (int fd, struct party *p)
{
unsigned char buf[4 + sizeof (struct party)];
@@ -330,7 +330,7 @@ int mapif_party_info (int fd, struct party *p)
return 0;
}
-// ƒp[ƒeƒBƒƒ“ƒo’ljÁ‰Â”Ű
+// パーティメンバ追加可否
int mapif_party_memberadded (int fd, int party_id, int account_id, int flag)
{
WFIFOW (fd, 0) = 0x3822;
@@ -342,7 +342,7 @@ int mapif_party_memberadded (int fd, int party_id, int account_id, int flag)
return 0;
}
-// ƒp[ƒeƒBÝ’č•ĎX’Ę’m
+// パーティ設定変更通知
int mapif_party_optionchanged (int fd, struct party *p, int account_id,
int flag)
{
@@ -364,7 +364,7 @@ int mapif_party_optionchanged (int fd, struct party *p, int account_id,
return 0;
}
-// ƒp[ƒeƒB’E‘Ţ’Ę’m
+// パーティ脱退通知
int mapif_party_leaved (int party_id, int account_id, char *name)
{
unsigned char buf[34];
@@ -379,7 +379,7 @@ int mapif_party_leaved (int party_id, int account_id, char *name)
return 0;
}
-// ƒp[ƒeƒBƒ}ƒbƒvXV’Ę’m
+// パーティマップ更新通知
int mapif_party_membermoved (struct party *p, int idx)
{
unsigned char buf[29];
@@ -395,7 +395,7 @@ int mapif_party_membermoved (struct party *p, int idx)
return 0;
}
-// ƒp[ƒeƒB‰đŽU’Ę’m
+// パーティ解散通知
int mapif_party_broken (int party_id, int flag)
{
unsigned char buf[7];
@@ -408,7 +408,7 @@ int mapif_party_broken (int party_id, int flag)
return 0;
}
-// ƒp[ƒeƒB“ŕ”­Œž
+// パーティ内発言
int mapif_party_message (int party_id, int account_id, char *mes, int len)
{
unsigned char buf[len + 12];
@@ -424,9 +424,9 @@ int mapif_party_message (int party_id, int account_id, char *mes, int len)
}
//-------------------------------------------------------------------
-// map server‚Š‚ç‚̒ʐM
+// map serverからの通信
-// ƒp[ƒeƒB
+// パーティ
int mapif_parse_CreateParty (int fd, int account_id, char *name, char *nick,
char *map, int lv)
{
@@ -476,7 +476,7 @@ int mapif_parse_CreateParty (int fd, int account_id, char *name, char *nick,
return 0;
}
-// ƒp[ƒeƒBî•ń—v‹
+// パーティ情報要求
int mapif_parse_PartyInfo (int fd, int party_id)
{
struct party *p;
@@ -490,7 +490,7 @@ int mapif_parse_PartyInfo (int fd, int party_id)
return 0;
}
-// ƒp[ƒeƒB’ljÁ—v‹
+// パーティ追加要求
int mapif_parse_PartyAddMember (int fd, int party_id, int account_id,
char *nick, char *map, int lv)
{
@@ -534,7 +534,7 @@ int mapif_parse_PartyAddMember (int fd, int party_id, int account_id,
return 0;
}
-// ƒp[ƒeƒB[Ý’č•ĎX—v‹
+// パーティー設定変更要求
int mapif_parse_PartyChangeOption (int fd, int party_id, int account_id,
int exp, int item)
{
@@ -558,7 +558,7 @@ int mapif_parse_PartyChangeOption (int fd, int party_id, int account_id,
return 0;
}
-// ƒp[ƒeƒB’E‘Ţ—v‹
+// パーティ脱退要求
int mapif_parse_PartyLeave (int fd, int party_id, int account_id)
{
struct party *p;
@@ -575,7 +575,7 @@ int mapif_parse_PartyLeave (int fd, int party_id, int account_id)
memset (&p->member[i], 0, sizeof (struct party_member));
if (party_check_empty (p) == 0)
- mapif_party_info (-1, p); // ‚Ü‚žl‚Ş‚˘‚é‚Ě‚Ĺƒf[ƒ^‘—M
+ mapif_party_info (-1, p); // まだ人がいるのでデータ送信
return 0;
}
}
@@ -584,7 +584,7 @@ int mapif_parse_PartyLeave (int fd, int party_id, int account_id)
return 0;
}
-// ƒp[ƒeƒBƒ}ƒbƒvXV—v‹
+// パーティマップ更新要求
int mapif_parse_PartyChangeMap (int fd, int party_id, int account_id,
char *map, int online, int lv)
{
@@ -620,7 +620,7 @@ int mapif_parse_PartyChangeMap (int fd, int party_id, int account_id,
return 0;
}
-// ƒp[ƒeƒB‰đŽU—v‹
+// パーティ解散要求
int mapif_parse_BreakParty (int fd, int party_id)
{
struct party *p;
@@ -635,24 +635,24 @@ int mapif_parse_BreakParty (int fd, int party_id)
return 0;
}
-// ƒp[ƒeƒBƒƒbƒZ[ƒW‘—M
+// パーティメッセージ送信
int mapif_parse_PartyMessage (int fd, int party_id, int account_id, char *mes,
int len)
{
return mapif_party_message (party_id, account_id, mes, len);
}
-// ƒp[ƒeƒBƒ`ƒFƒbƒN—v‹
+// パーティチェック要求
int mapif_parse_PartyCheck (int fd, int party_id, int account_id, char *nick)
{
return party_check_conflict (party_id, account_id, nick);
}
-// map server ‚Š‚ç‚̒ʐM
-// E‚PƒpƒPƒbƒg‚̂݉đÍ‚ˇ‚é‚ą‚Ć
-// EƒpƒPƒbƒg’ˇƒf[ƒ^‚Íinter.c‚ɃZƒbƒg‚ľ‚Ä‚¨‚­‚ą‚Ć
-// EƒpƒPƒbƒg’ˇƒ`ƒFƒbƒN‚âARFIFOSKIP‚ÍŒÄ‚Ńo‚ľŒł‚ōs‚í‚ę‚é‚Ě‚Ĺs‚Á‚Ä‚Í‚Č‚ç‚Č‚˘
-// EƒGƒ‰[‚Č‚ç0(false)A‚ť‚¤‚Ĺ‚Č‚˘‚Č‚ç1(true)‚đ‚Š‚Ś‚ł‚Č‚Ż‚ę‚΂Ȃç‚Č‚˘
+// map server からの通信
+// ・1パケットのみ解析すること
+// ・パケット長データはinter.cにセットしておくこと
+// ・パケット長チェックや、RFIFOSKIPは呼び出し元で行われるので行ってはならない
+// ・エラーなら0(false)、そうでないなら1(true)をかえさなければならない
int inter_party_parse_frommap (int fd)
{
switch (RFIFOW (fd, 0))
@@ -700,7 +700,7 @@ int inter_party_parse_frommap (int fd)
return 1;
}
-// ƒT[ƒo[‚Š‚ç’E‘Ţ—v‹iƒLƒƒƒ‰íœ—pj
+// サーバーから脱退要求(キャラ削除用)
int inter_party_leave (int party_id, int account_id)
{
return mapif_parse_PartyLeave (-1, party_id, account_id);
diff --git a/src/char/int_storage.c b/src/char/int_storage.c
index 47dff67..744a59f 100644
--- a/src/char/int_storage.c
+++ b/src/char/int_storage.c
@@ -13,15 +13,15 @@
#include "int_storage.h"
#include "int_guild.h"
-// ƒtƒ@ƒCƒ‹–ź‚ĚƒfƒtƒHƒ‹ƒg
-// inter_config_read()‚ĹÄÝ’č‚ł‚ę‚é
+// ファイル名のデフォルト
+// inter_config_read()で再設定される
char storage_txt[1024] = "save/storage.txt";
char guild_storage_txt[1024] = "save/g_storage.txt";
static struct dbt *storage_db;
static struct dbt *guild_storage_db;
-// ‘qŒÉƒf[ƒ^‚𕜎š—ń‚É•ĎŠˇ
+// 倉庫データを文字列に変換
int storage_tostr (char *str, struct storage *p)
{
int i, f = 0;
@@ -49,7 +49,7 @@ int storage_tostr (char *str, struct storage *p)
return 0;
}
-// •śŽš—ń‚đ‘qŒÉƒf[ƒ^‚É•ĎŠˇ
+// 文字列を倉庫データに変換
int storage_fromstr (char *str, struct storage *p)
{
int tmp_int[256];
@@ -215,7 +215,7 @@ int guild_storage_fromstr (char *str, struct guild_storage *p)
return 0;
}
-// ƒAƒJƒEƒ“ƒg‚Š‚ç‘qŒÉƒf[ƒ^ƒCƒ“ƒfƒbƒNƒX‚đ“ž‚éiV‹K‘qŒÉ’ljÁ‰Â”\j
+// アカウントから倉庫データインデックスを得る(新規倉庫追加可能)
struct storage *account2storage (int account_id)
{
struct storage *s;
@@ -260,7 +260,7 @@ struct guild_storage *guild2storage (int guild_id)
}
//---------------------------------------------------------
-// ‘qŒÉƒf[ƒ^‚đ“ǂݍž‚Ţ
+// 倉庫データを読み込む
int inter_storage_init ()
{
char line[65536];
@@ -375,7 +375,7 @@ int inter_storage_save_sub (void *key, void *data, va_list ap)
}
//---------------------------------------------------------
-// ‘qŒÉƒf[ƒ^‚đ‘‚Ťž‚Ţ
+// 倉庫データを書き込む
int inter_storage_save ()
{
FILE *fp;
@@ -413,7 +413,7 @@ int inter_guild_storage_save_sub (void *key, void *data, va_list ap)
}
//---------------------------------------------------------
-// ‘qŒÉƒf[ƒ^‚đ‘‚Ťž‚Ţ
+// 倉庫データを書き込む
int inter_guild_storage_save ()
{
FILE *fp;
@@ -434,7 +434,7 @@ int inter_guild_storage_save ()
return 0;
}
-// ‘qŒÉƒf[ƒ^íœ
+// 倉庫データ削除
int inter_storage_delete (int account_id)
{
struct storage *s =
@@ -447,7 +447,7 @@ int inter_storage_delete (int account_id)
return 0;
}
-// ƒMƒ‹ƒh‘qŒÉƒf[ƒ^íœ
+// ギルド倉庫データ削除
int inter_guild_storage_delete (int guild_id)
{
struct guild_storage *gs =
@@ -461,9 +461,9 @@ int inter_guild_storage_delete (int guild_id)
}
//---------------------------------------------------------
-// map server‚ւ̒ʐM
+// map serverへの通信
-// ‘qŒÉƒf[ƒ^‚Ě‘—M
+// 倉庫データの送信
int mapif_load_storage (int fd, int account_id)
{
struct storage *s = account2storage (account_id);
@@ -475,7 +475,7 @@ int mapif_load_storage (int fd, int account_id)
return 0;
}
-// ‘qŒÉƒf[ƒ^•Ű‘śŠŽ—š‘—M
+// 倉庫データ保存完了送信
int mapif_save_storage_ack (int fd, int account_id)
{
WFIFOW (fd, 0) = 0x3811;
@@ -519,16 +519,16 @@ int mapif_save_guild_storage_ack (int fd, int account_id, int guild_id,
}
//---------------------------------------------------------
-// map server‚Š‚ç‚̒ʐM
+// map serverからの通信
-// ‘qŒÉƒf[ƒ^—v‹ŽóM
+// 倉庫データ要求受信
int mapif_parse_LoadStorage (int fd)
{
mapif_load_storage (fd, RFIFOL (fd, 2));
return 0;
}
-// ‘qŒÉƒf[ƒ^ŽóM••Ű‘ś
+// 倉庫データ受信&保存
int mapif_parse_SaveStorage (int fd)
{
struct storage *s;
@@ -578,11 +578,11 @@ int mapif_parse_SaveGuildStorage (int fd)
return 0;
}
-// map server ‚Š‚ç‚̒ʐM
-// E‚PƒpƒPƒbƒg‚̂݉đÍ‚ˇ‚é‚ą‚Ć
-// EƒpƒPƒbƒg’ˇƒf[ƒ^‚Íinter.c‚ɃZƒbƒg‚ľ‚Ä‚¨‚­‚ą‚Ć
-// EƒpƒPƒbƒg’ˇƒ`ƒFƒbƒN‚âARFIFOSKIP‚ÍŒÄ‚Ńo‚ľŒł‚ōs‚í‚ę‚é‚Ě‚Ĺs‚Á‚Ä‚Í‚Č‚ç‚Č‚˘
-// EƒGƒ‰[‚Č‚ç0(false)A‚ť‚¤‚Ĺ‚Č‚˘‚Č‚ç1(true)‚đ‚Š‚Ś‚ł‚Č‚Ż‚ę‚΂Ȃç‚Č‚˘
+// map server からの通信
+// ・1パケットのみ解析すること
+// ・パケット長データはinter.cにセットしておくこと
+// ・パケット長チェックや、RFIFOSKIPは呼び出し元で行われるので行ってはならない
+// ・エラーなら0(false)、そうでないなら1(true)をかえさなければならない
int inter_storage_parse_frommap (int fd)
{
switch (RFIFOW (fd, 0))
diff --git a/src/char/inter.c b/src/char/inter.c
index 19e1d83..89a3e39 100644
--- a/src/char/inter.c
+++ b/src/char/inter.c
@@ -30,7 +30,7 @@ struct accreg
int party_share_level = 10;
-// ‘—MƒpƒPƒbƒg’ˇƒŠƒXƒg
+// 送信パケット長リスト
int inter_send_packet_length[] = {
-1, -1, 27, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-1, 7, 0, 0, 0, 0, 0, 0, -1, 11, 0, 0, 0, 0, 0, 0,
@@ -43,7 +43,7 @@ int inter_send_packet_length[] = {
11, -1, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
-// ŽóMƒpƒPƒbƒg’ˇƒŠƒXƒg
+// 受信パケット長リスト
int inter_recv_packet_length[] = {
-1, -1, 7, -1, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
6, -1, 0, 0, 0, 0, 0, 0, 10, -1, 0, 0, 0, 0, 0, 0,
@@ -67,7 +67,7 @@ static int wis_dellist[WISDELLIST_MAX], wis_delnum;
//--------------------------------------------------------
-// ƒAƒJƒEƒ“ƒg•Ď”‚𕜎š—ń‚Ö•ĎŠˇ
+// アカウント変数を文字列へ変換
int inter_accreg_tostr (char *str, struct accreg *reg)
{
int j;
@@ -82,7 +82,7 @@ int inter_accreg_tostr (char *str, struct accreg *reg)
return 0;
}
-// ƒAƒJƒEƒ“ƒg•Ď”‚𕜎š—ń‚Š‚ç•ĎŠˇ
+// アカウント変数を文字列から変換
int inter_accreg_fromstr (const char *str, struct accreg *reg)
{
int j, v, n;
@@ -105,7 +105,7 @@ int inter_accreg_fromstr (const char *str, struct accreg *reg)
return 0;
}
-// ƒAƒJƒEƒ“ƒg•Ď”‚Ě“Ç‚Ýž‚Ý
+// アカウント変数の読み込み
int inter_accreg_init ()
{
char line[8192];
@@ -145,7 +145,7 @@ int inter_accreg_init ()
return 0;
}
-// ƒAƒJƒEƒ“ƒg•Ď”‚ĚƒZ[ƒu—p
+// アカウント変数のセーブ用
int inter_accreg_save_sub (void *key, void *data, va_list ap)
{
char line[8192];
@@ -162,7 +162,7 @@ int inter_accreg_save_sub (void *key, void *data, va_list ap)
return 0;
}
-// ƒAƒJƒEƒ“ƒg•Ď”‚ĚƒZ[ƒu
+// アカウント変数のセーブ
int inter_accreg_save ()
{
FILE *fp;
@@ -184,7 +184,7 @@ int inter_accreg_save ()
//--------------------------------------------------------
/*==========================================
- * Ý’čƒtƒ@ƒCƒ‹‚đ“ǂݍž‚Ţ
+ * 設定ファイルを読み込む
*------------------------------------------
*/
int inter_config_read (const char *cfgName)
@@ -251,7 +251,7 @@ int inter_config_read (const char *cfgName)
return 0;
}
-// ƒƒO‘‚Ťo‚ľ
+// ログ書き出し
int inter_log (char *fmt, ...)
{
FILE *logfp;
@@ -269,7 +269,7 @@ int inter_log (char *fmt, ...)
return 0;
}
-// ƒZ[ƒu
+// セーブ
int inter_save ()
{
inter_party_save ();
@@ -281,7 +281,7 @@ int inter_save ()
return 0;
}
-// ‰Šú‰ť
+// 初期化
int inter_init (const char *file)
{
inter_config_read (file);
@@ -296,7 +296,7 @@ int inter_init (const char *file)
return 0;
}
-// ƒ}ƒbƒvƒT[ƒo[Ú‘ą
+// マップサーバー接続
int inter_mapif_init (int fd)
{
inter_guild_mapif_init (fd);
@@ -307,7 +307,7 @@ int inter_mapif_init (int fd)
//--------------------------------------------------------
// sended packets to map-server
-// GMƒƒbƒZ[ƒW‘—M
+// GMメッセージ送信
int mapif_GMmessage (unsigned char *mes, int len)
{
unsigned char buf[len];
@@ -351,7 +351,7 @@ int mapif_wis_end (struct WisData *wd, int flag)
return 0;
}
-// ƒAƒJƒEƒ“ƒg•Ď”‘—M
+// アカウント変数送信
int mapif_account_reg (int fd, unsigned char *src)
{
unsigned char buf[WBUFW (src, 2)];
@@ -363,7 +363,7 @@ int mapif_account_reg (int fd, unsigned char *src)
return 0;
}
-// ƒAƒJƒEƒ“ƒg•Ď”—v‹•ÔM
+// アカウント変数要求返信
int mapif_account_reg_reply (int fd, int account_id)
{
struct accreg *reg = numdb_search (accreg_db, account_id);
@@ -433,7 +433,7 @@ int check_ttl_wisdata ()
//--------------------------------------------------------
// received packets from map-server
-// GMƒƒbƒZ[ƒW‘—M
+// GMメッセージ送信
int mapif_parse_GMmessage (int fd)
{
mapif_GMmessage (RFIFOP (fd, 4), RFIFOW (fd, 2));
@@ -542,7 +542,7 @@ int mapif_parse_WisToGM (int fd)
return 0;
}
-// ƒAƒJƒEƒ“ƒg•Ď”•Ű‘ś—v‹
+// アカウント変数保存要求
int mapif_parse_AccReg (int fd)
{
int j, p;
@@ -567,12 +567,12 @@ int mapif_parse_AccReg (int fd)
}
reg->reg_num = j;
- mapif_account_reg (fd, RFIFOP (fd, 0)); // ‘ź‚ĚMAPƒT[ƒo[‚É‘—M
+ mapif_account_reg (fd, RFIFOP (fd, 0)); // 他のMAPサーバーに送信
return 0;
}
-// ƒAƒJƒEƒ“ƒg•Ď”‘—M—v‹
+// アカウント変数送信要求
int mapif_parse_AccRegRequest (int fd)
{
// printf("mapif: accreg request\n");
@@ -581,15 +581,15 @@ int mapif_parse_AccRegRequest (int fd)
//--------------------------------------------------------
-// map server ‚Š‚ç‚̒ʐMi‚PƒpƒPƒbƒg‚̂݉đÍ‚ˇ‚é‚ą‚Ɓj
-// ƒGƒ‰[‚Č‚ç0(false)Aˆ—‚Ĺ‚Ť‚˝‚Č‚ç1A
-// ƒpƒPƒbƒg’ˇ‚Ş‘Ť‚č‚Č‚Ż‚ę‚Î2‚đ‚Š‚Ś‚ł‚Č‚Ż‚ę‚΂Ȃç‚Č‚˘
+// map server からの通信(1パケットのみ解析すること)
+// エラーなら0(false)、処理できたなら1、
+// パケット長が足りなければ2をかえさなければならない
int inter_parse_frommap (int fd)
{
int cmd = RFIFOW (fd, 0);
int len = 0;
- // interŽIŠÇŠ‚Š‚𒲂ׂé
+ // inter鯖管轄かを調べる
if (cmd < 0x3000
|| cmd >=
0x3000 +
@@ -597,7 +597,7 @@ int inter_parse_frommap (int fd)
sizeof (inter_recv_packet_length[0])))
return 0;
- // ƒpƒPƒbƒg’ˇ‚𒲂ׂé
+ // パケット長を調べる
if ((len =
inter_check_length (fd,
inter_recv_packet_length[cmd - 0x3000])) == 0)
@@ -637,18 +637,18 @@ int inter_parse_frommap (int fd)
return 1;
}
-// RFIFO‚ĚƒpƒPƒbƒg’ˇŠm”F
-// •K—vƒpƒPƒbƒg’ˇ‚Ş‚ ‚ę‚΃pƒPƒbƒg’ˇA‚Ü‚ž‘Ť‚č‚Č‚Ż‚ę‚Î0
+// RFIFOのパケット長確認
+// 必要パケット長があればパケット長、まだ足りなければ0
int inter_check_length (int fd, int length)
{
if (length == -1)
- { // ‰Â•ĎƒpƒPƒbƒg’ˇ
- if (RFIFOREST (fd) < 4) // ƒpƒPƒbƒg’ˇ‚Ş–˘’…
+ { // 可変パケット長
+ if (RFIFOREST (fd) < 4) // パケット長が未着
return 0;
length = RFIFOW (fd, 2);
}
- if (RFIFOREST (fd) < length) // ƒpƒPƒbƒg‚Ş–˘’…
+ if (RFIFOREST (fd) < length) // パケットが未着
return 0;
return length;
diff --git a/src/char_sql/char.c b/src/char_sql/char.c
index b9c8de3..4bfce6d 100644
--- a/src/char_sql/char.c
+++ b/src/char_sql/char.c
@@ -1715,7 +1715,7 @@ int parse_tologin (int fd)
}
break;
- // account_reg2•ĎX’Ę’m
+ // account_reg2変更通知
case 0x2729:
if (RFIFOREST (fd) < 4 || RFIFOREST (fd) < RFIFOW (fd, 2))
return 0;
@@ -1732,7 +1732,7 @@ int parse_tologin (int fd)
reg[j].value = RFIFOL (fd, p + 32);
}
// set_account_reg2(acc,j,reg);
- // “ŻCƒƒOƒCƒ“‚đ‹ÖŽ~‚ľ‚Ä‚˘‚ę‚Α—‚é•K—v‚Í–ł‚˘
+ // 同垢ログインを禁止していれば送る必要は無い
memcpy (buf, RFIFOP (fd, 0), RFIFOW (fd, 2));
WBUFW (buf, 0) = 0x2b11;
mapif_sendall (buf, WBUFW (buf, 2));
@@ -2135,7 +2135,7 @@ int parse_frommap (int fd)
break;
*/
- // account_reg•Ű‘ś—v‹
+ // account_reg保存要求
case 0x2b10:
if (RFIFOREST (fd) < 4 || RFIFOREST (fd) < RFIFOW (fd, 2))
return 0;
@@ -2151,7 +2151,7 @@ int parse_frommap (int fd)
reg[j].value = RFIFOL (fd, p + 32);
}
// set_account_reg2(acc,j,reg);
- // loginƒT[ƒo[‚Ö‘—‚é
+ // loginサーバーへ送る
if (login_fd > 0)
{ // don't send request if no login-server
WFIFOW (login_fd, 0) = 0x2728;
@@ -2159,7 +2159,7 @@ int parse_frommap (int fd)
RFIFOW (fd, 2));
WFIFOSET (login_fd, WFIFOW (login_fd, 2));
}
- // ƒ[ƒ‹ƒh‚Ö‚Ě“ŻCƒƒOƒCƒ“‚Ş‚Č‚Ż‚ę‚ÎmapƒT[ƒo[‚É‘—‚é•K—v‚Í‚Č‚˘
+ // ワールドへの同垢ログインがなければmapサーバーに送る必要はない
//memcpy(buf,RFIFOP(fd,0),RFIFOW(fd,2));
//WBUFW(buf,0)=0x2b11;
//mapif_sendall(buf,WBUFW(buf,2));
@@ -3241,7 +3241,7 @@ int check_connect_login_server (int tid, unsigned int tick, int id, int data)
//----------------------------------------------------------
// Return numerical value of a switch configuration by [Yor]
-// on/off, english, français, deutsch, espańol
+// on/off, english, fran軋is, deutsch, espal
//----------------------------------------------------------
int config_switch (const char *str)
{
@@ -3700,7 +3700,7 @@ int do_init (int argc, char **argv)
printf ("charserver configuration reading done.....\n");
- inter_init ((argc > 2) ? argv[2] : inter_cfgName); // inter server ĂĘąâČ­
+ inter_init ((argc > 2) ? argv[2] : inter_cfgName); // inter server テハア篳ュ
printf ("interserver configuration reading done.....\n");
printf ("start char server initializing.....\n");
diff --git a/src/char_sql/int_guild.c b/src/char_sql/int_guild.c
index 5030b41..7b363a1 100644
--- a/src/char_sql/int_guild.c
+++ b/src/char_sql/int_guild.c
@@ -856,7 +856,7 @@ int guild_check_empty (struct guild *g)
}
}
- // ’N‚ŕ‚˘‚Č‚˘‚̂ʼnđŽU
+ // 誰もいないので解散
mapif_guild_broken (g->guild_id, 0);
inter_guild_storage_delete (g->guild_id);
inter_guild_tosql (g, 255);
@@ -872,23 +872,23 @@ int guild_nextexp (int level)
return 0;
}
-// ƒMƒ‹ƒhƒXƒLƒ‹‚Ş‚ ‚é‚ŠŠm”F
+// ギルドスキルがあるか確認
int guild_checkskill (struct guild *g, int id)
{
return g->skill[id - 10000].lv;
}
-// ƒMƒ‹ƒh‚̏î•ń‚ĚÄŒvŽZ
+// ギルドの情報の再計算
int guild_calcinfo (struct guild *g)
{
int i, c, nextexp;
struct guild before = *g;
- // ƒXƒLƒ‹ID‚̐ݒč
+ // スキルIDの設定
for (i = 0; i < 5; i++)
g->skill[i].id = i + 10000;
- // ƒMƒ‹ƒhƒŒƒxƒ‹
+ // ギルドレベル
if (g->guild_lv <= 0)
g->guild_lv = 1;
nextexp = guild_nextexp (g->guild_lv);
@@ -903,13 +903,13 @@ int guild_calcinfo (struct guild *g)
}
}
- // ƒMƒ‹ƒh‚ĚŽŸ‚ĚŒoŒą’l
+ // ギルドの次の経験値
g->next_exp = guild_nextexp (g->guild_lv);
- // ƒƒ“ƒoăŒŔiƒMƒ‹ƒhŠg’Ł“K—pj
+ // メンバ上限(ギルド拡張適用)
g->max_member = 100 + guild_checkskill (g, 10004) * 2; // Updated max_members [PoW]
- // •˝‹ĎƒŒƒxƒ‹‚ĆƒIƒ“ƒ‰ƒCƒ“l”
+ // 平均レベルとオンライン人数
g->average_lv = 0;
g->connect_member = 0;
for (i = c = 0; i < g->max_member; i++)
@@ -925,7 +925,7 @@ int guild_calcinfo (struct guild *g)
}
g->average_lv /= c;
- // ‘Sƒf[ƒ^‚đ‘—‚é•K—v‚Ş‚ ‚č‚ť‚¤
+ // 全データを送る必要がありそう
if (g->max_member != before.max_member ||
g->guild_lv != before.guild_lv ||
g->skill_point != before.skill_point)
@@ -938,9 +938,9 @@ int guild_calcinfo (struct guild *g)
}
//-------------------------------------------------------------------
-// map server‚ւ̒ʐM
+// map serverへの通信
-// ƒMƒ‹ƒhěŹ‰Â”Ű
+// ギルド作成可否
int mapif_guild_created (int fd, int account_id, struct guild *g)
{
WFIFOW (fd, 0) = 0x3830;
@@ -958,7 +958,7 @@ int mapif_guild_created (int fd, int account_id, struct guild *g)
return 0;
}
-// ƒMƒ‹ƒhî•ńŒŠ‚‚Š‚炸
+// ギルド情報見つからず
int mapif_guild_noinfo (int fd, int guild_id)
{
WFIFOW (fd, 0) = 0x3831;
@@ -969,7 +969,7 @@ int mapif_guild_noinfo (int fd, int guild_id)
return 0;
}
-// ƒMƒ‹ƒhî•ń‚Ü‚Ć‚ß‘—‚č
+// ギルド情報まとめ送り
int mapif_guild_info (int fd, struct guild *g)
{
unsigned char buf[16384];
@@ -985,7 +985,7 @@ int mapif_guild_info (int fd, struct guild *g)
return 0;
}
-// ƒƒ“ƒo’ljÁ‰Â”Ű
+// メンバ追加可否
int mapif_guild_memberadded (int fd, int guild_id, int account_id,
int char_id, int flag)
{
@@ -998,7 +998,7 @@ int mapif_guild_memberadded (int fd, int guild_id, int account_id,
return 0;
}
-// ’E‘Ţ/’Ç•ú’Ę’m
+// 脱退/追放通知
int mapif_guild_leaved (int guild_id, int account_id, int char_id, int flag,
const char *name, const char *mes)
{
@@ -1016,7 +1016,7 @@ int mapif_guild_leaved (int guild_id, int account_id, int char_id, int flag,
return 0;
}
-// ƒIƒ“ƒ‰ƒCƒ“ó‘Ô‚ĆLvXV’Ę’m
+// オンライン状態とLv更新通知
int mapif_guild_memberinfoshort (struct guild *g, int idx)
{
unsigned char buf[32];
@@ -1031,7 +1031,7 @@ int mapif_guild_memberinfoshort (struct guild *g, int idx)
return 0;
}
-// ‰đŽU’Ę’m
+// 解散通知
int mapif_guild_broken (int guild_id, int flag)
{
unsigned char buf[16];
@@ -1043,7 +1043,7 @@ int mapif_guild_broken (int guild_id, int flag)
return 0;
}
-// ƒMƒ‹ƒh“ŕ”­Œž
+// ギルド内発言
int mapif_guild_message (int guild_id, int account_id, char *mes, int len)
{
unsigned char buf[512];
@@ -1056,7 +1056,7 @@ int mapif_guild_message (int guild_id, int account_id, char *mes, int len)
return 0;
}
-// ƒMƒ‹ƒhŠî–{î•ń•ĎX’Ę’m
+// ギルド基本情報変更通知
int mapif_guild_basicinfochanged (int guild_id, int type, const void *data,
int len)
{
@@ -1070,7 +1070,7 @@ int mapif_guild_basicinfochanged (int guild_id, int type, const void *data,
return 0;
}
-// ƒMƒ‹ƒhƒƒ“ƒoî•ń•ĎX’Ę’m
+// ギルドメンバ情報変更通知
int mapif_guild_memberinfochanged (int guild_id, int account_id, int char_id,
int type, const void *data, int len)
{
@@ -1086,7 +1086,7 @@ int mapif_guild_memberinfochanged (int guild_id, int account_id, int char_id,
return 0;
}
-// ƒMƒ‹ƒhƒXƒLƒ‹ƒAƒbƒv’Ę’m
+// ギルドスキルアップ通知
int mapif_guild_skillupack (int guild_id, int skill_num, int account_id)
{
unsigned char buf[16];
@@ -1098,7 +1098,7 @@ int mapif_guild_skillupack (int guild_id, int skill_num, int account_id)
return 0;
}
-// ƒMƒ‹ƒh“Ż–ż/“G‘Î’Ę’m
+// ギルド同盟/敵対通知
int mapif_guild_alliance (int guild_id1, int guild_id2, int account_id1,
int account_id2, int flag, const char *name1,
const char *name2)
@@ -1116,7 +1116,7 @@ int mapif_guild_alliance (int guild_id1, int guild_id2, int account_id1,
return 0;
}
-// ƒMƒ‹ƒh–đE•ĎX’Ę’m
+// ギルド役職変更通知
int mapif_guild_position (struct guild *g, int idx)
{
unsigned char buf[128];
@@ -1130,7 +1130,7 @@ int mapif_guild_position (struct guild *g, int idx)
return 0;
}
-// ƒMƒ‹ƒh’m•ĎX’Ę’m
+// ギルド告知変更通知
int mapif_guild_notice (struct guild *g)
{
unsigned char buf[256];
@@ -1142,7 +1142,7 @@ int mapif_guild_notice (struct guild *g)
return 0;
}
-// ƒMƒ‹ƒhƒGƒ“ƒuƒŒƒ€•ĎX’Ę’m
+// ギルドエンブレム変更通知
int mapif_guild_emblem (struct guild *g)
{
unsigned char buf[2048];
@@ -1235,9 +1235,9 @@ int mapif_guild_castle_alldataload (int fd)
}
//-------------------------------------------------------------------
-// map server‚Š‚ç‚̒ʐM
+// map serverからの通信
-// ƒMƒ‹ƒhěŹ—v‹
+// ギルド作成要求
int mapif_parse_CreateGuild (int fd, int account_id, char *name,
struct guild_member *master)
{
@@ -1362,7 +1362,7 @@ int mapif_parse_GuildLeave (int fd, int guild_id, int account_id, int char_id,
printf ("%d %s\n", i, g->member[i].name);
if (flag)
- { // ’Ç•ú‚Ěę‡’Ç•úƒŠƒXƒg‚É“ü‚ę‚é
+ { // 追放の場合追放リストに入れる
int j;
for (j = 0; j < MAX_GUILDEXPLUSION; j++)
{
@@ -1370,7 +1370,7 @@ int mapif_parse_GuildLeave (int fd, int guild_id, int account_id, int char_id,
break;
}
if (j == MAX_GUILDEXPLUSION)
- { // ˆę”t‚Č‚Ě‚ĹŒĂ‚˘‚Ě‚đÁ‚ˇ
+ { // 一杯なので古いのを消す
for (j = 0; j < MAX_GUILDEXPLUSION - 1; j++)
g->explusion[j] = g->explusion[j + 1];
j = MAX_GUILDEXPLUSION - 1;
@@ -1388,10 +1388,10 @@ int mapif_parse_GuildLeave (int fd, int guild_id, int account_id, int char_id,
memset (&g->member[i], 0, sizeof (struct guild_member));
if (guild_check_empty (g) == 0)
- mapif_guild_info (-1, g); // ‚Ü‚žl‚Ş‚˘‚é‚Ě‚Ĺƒf[ƒ^‘—M
+ mapif_guild_info (-1, g); // まだ人がいるのでデータ送信
/*
* else
- * inter_guild_save(); // ‰đŽU‚ľ‚˝‚Ě‚Ĺˆę‰žƒZ[ƒu
+ * inter_guild_save(); // 解散したので一応セーブ
* return 0; */
}
}
@@ -1451,7 +1451,7 @@ int mapif_parse_GuildChangeMemberInfoShort (int fd, int guild_id,
if (g->member[i].online)
g->connect_member++;
}
- // •˝‹ĎƒŒƒxƒ‹
+ // 平均レベル
g->average_lv = alv / c;
inter_guild_tosql (g, 3); // Change guild & guild_member
@@ -1547,14 +1547,14 @@ int mapif_parse_BreakGuild (int fd, int guild_id)
return 0;
}
-// ƒMƒ‹ƒhƒƒbƒZ[ƒW‘—M
+// ギルドメッセージ送信
int mapif_parse_GuildMessage (int fd, int guild_id, int account_id, char *mes,
int len)
{
return mapif_guild_message (guild_id, account_id, mes, len);
}
-// ƒMƒ‹ƒhŠî–{ƒf[ƒ^•ĎX—v‹
+// ギルド基本データ変更要求
int mapif_parse_GuildBasicInfoChange (int fd, int guild_id,
int type, const char *data, int len)
{
@@ -1594,7 +1594,7 @@ int mapif_parse_GuildBasicInfoChange (int fd, int guild_id,
return 0;
}
-// ƒMƒ‹ƒhƒƒ“ƒoƒf[ƒ^•ĎX—v‹
+// ギルドメンバデータ変更要求
int mapif_parse_GuildMemberInfoChange (int fd, int guild_id, int account_id,
int char_id, int type,
const char *data, int len)
@@ -1622,7 +1622,7 @@ int mapif_parse_GuildMemberInfoChange (int fd, int guild_id, int account_id,
}
switch (type)
{
- case GMI_POSITION: // –đE
+ case GMI_POSITION: // 彚聡
g->member[i].position = *((int *) data);
break;
case GMI_EXP:
@@ -1630,7 +1630,7 @@ int mapif_parse_GuildMemberInfoChange (int fd, int guild_id, int account_id,
int exp, oldexp = g->member[i].exp;
exp = g->member[i].exp = *((unsigned int *) data);
g->exp += (exp - oldexp);
- guild_calcinfo (g); // LvƒAƒbƒv”ť’f
+ guild_calcinfo (g); // Lvアップ判断
mapif_guild_basicinfochanged (guild_id, GBI_EXP, &g->exp, 4);
} break;
default:
@@ -1644,7 +1644,7 @@ int mapif_parse_GuildMemberInfoChange (int fd, int guild_id, int account_id,
return 0;
}
-// ƒMƒ‹ƒh–đE–ź•ĎX—v‹
+// ギルド役職名変更要求
int mapif_parse_GuildPosition (int fd, int guild_id, int idx,
struct guild_position *p)
{
@@ -1664,7 +1664,7 @@ int mapif_parse_GuildPosition (int fd, int guild_id, int idx,
return 0;
}
-// ƒMƒ‹ƒhƒXƒLƒ‹ƒAƒbƒv—v‹
+// ギルドスキルアップ要求
int mapif_parse_GuildSkillUp (int fd, int guild_id, int skill_num,
int account_id)
{
@@ -1691,7 +1691,7 @@ int mapif_parse_GuildSkillUp (int fd, int guild_id, int skill_num,
return 0;
}
-// ƒMƒ‹ƒh“Ż–ż—v‹
+// ギルド同盟要求
int mapif_parse_GuildAlliance (int fd, int guild_id1, int guild_id2,
int account_id1, int account_id2, int flag)
{
@@ -1722,7 +1722,7 @@ int mapif_parse_GuildAlliance (int fd, int guild_id1, int guild_id2,
}
}
else
- { // ŠÖŒW‰đÁ
+ { // 関係解消
for (i = 0; i < 2 - (flag & 1); i++)
{
for (j = 0; j < MAX_GUILDALLIANCE; j++)
@@ -1741,7 +1741,7 @@ int mapif_parse_GuildAlliance (int fd, int guild_id1, int guild_id2,
return 0;
}
-// ƒMƒ‹ƒh’m•ĎX—v‹
+// ギルド告知変更要求
int mapif_parse_GuildNotice (int fd, int guild_id, const char *mes1,
const char *mes2)
{
@@ -1757,7 +1757,7 @@ int mapif_parse_GuildNotice (int fd, int guild_id, const char *mes1,
return mapif_guild_notice (g);
}
-// ƒMƒ‹ƒhƒGƒ“ƒuƒŒƒ€•ĎX—v‹
+// ギルドエンブレム変更要求
int mapif_parse_GuildEmblem (int fd, int len, int guild_id, int dummy,
const char *data)
{
@@ -1996,18 +1996,18 @@ int mapif_parse_GuildCastleDataSave (int fd, int castle_id, int index, int value
return mapif_guild_castle_datasave (gc->castle_id, index, value);
}
-// ƒMƒ‹ƒhƒ`ƒFƒbƒN—v‹
+// ギルドチェック要求
int mapif_parse_GuildCheck (int fd, int guild_id, int account_id, int char_id)
{
// What does this mean? Check if belong to another guild?
return 0;
}
-// map server ‚Š‚ç‚̒ʐM
-// E‚PƒpƒPƒbƒg‚̂݉đÍ‚ˇ‚é‚ą‚Ć
-// EƒpƒPƒbƒg’ˇƒf[ƒ^‚Íinter.c‚ɃZƒbƒg‚ľ‚Ä‚¨‚­‚ą‚Ć
-// EƒpƒPƒbƒg’ˇƒ`ƒFƒbƒN‚âARFIFOSKIP‚ÍŒÄ‚Ńo‚ľŒł‚ōs‚í‚ę‚é‚Ě‚Ĺs‚Á‚Ä‚Í‚Č‚ç‚Č‚˘
-// EƒGƒ‰[‚Č‚ç0(false)A‚ť‚¤‚Ĺ‚Č‚˘‚Č‚ç1(true)‚đ‚Š‚Ś‚ł‚Č‚Ż‚ę‚΂Ȃç‚Č‚˘
+// map server からの通信
+// ・1パケットのみ解析すること
+// ・パケット長データはinter.cにセットしておくこと
+// ・パケット長チェックや、RFIFOSKIPは呼び出し元で行われるので行ってはならない
+// ・エラーなら0(false)、そうでないなら1(true)をかえさなければならない
int inter_guild_parse_frommap (int fd)
{
switch (RFIFOW (fd, 0))
@@ -2103,9 +2103,9 @@ int inter_guild_mapif_init (int fd)
return mapif_guild_castle_alldataload (fd);
}
-// ƒT[ƒo[‚Š‚ç’E‘Ţ—v‹iƒLƒƒƒ‰íœ—pj
+// サーバーから脱退要求(キャラ削除用)
int inter_guild_leave (int guild_id, int account_id, int char_id)
{
return mapif_parse_GuildLeave (-1, guild_id, account_id, char_id, 0,
- "**ƒT[ƒo[–˝—ß**");
+ "**サーバー命令**");
}
diff --git a/src/char_sql/int_party.c b/src/char_sql/int_party.c
index 0eccb83..45237de 100644
--- a/src/char_sql/int_party.c
+++ b/src/char_sql/int_party.c
@@ -368,7 +368,7 @@ struct party *search_partyname (char *str)
return p;
}
-// EXPŒö•˝•Ş”z‚Ĺ‚Ť‚é‚Šƒ`ƒFƒbƒN
+// EXP公平分配できるかチェック
int party_check_exp_share (struct party *p)
{
int i;
@@ -415,9 +415,9 @@ int party_check_conflict (int party_id, int account_id, char *nick)
}
//-------------------------------------------------------------------
-// map server‚ւ̒ʐM
+// map serverへの通信
-// ƒp[ƒeƒBěŹ‰Â”Ű
+// パーティ作成可否
int mapif_party_created (int fd, int account_id, struct party *p)
{
WFIFOW (fd, 0) = 0x3820;
@@ -439,7 +439,7 @@ int mapif_party_created (int fd, int account_id, struct party *p)
return 0;
}
-// ƒp[ƒeƒBî•ńŒŠ‚‚Š‚炸
+// パーティ情報見つからず
int mapif_party_noinfo (int fd, int party_id)
{
WFIFOW (fd, 0) = 0x3821;
@@ -450,7 +450,7 @@ int mapif_party_noinfo (int fd, int party_id)
return 0;
}
-// ƒp[ƒeƒBî•ń‚Ü‚Ć‚ß‘—‚č
+// パーティ情報まとめ送り
int mapif_party_info (int fd, struct party *p)
{
unsigned char buf[1024];
@@ -465,7 +465,7 @@ int mapif_party_info (int fd, struct party *p)
return 0;
}
-// ƒp[ƒeƒBƒƒ“ƒo’ljÁ‰Â”Ű
+// パーティメンバ追加可否
int mapif_party_memberadded (int fd, int party_id, int account_id, int flag)
{
WFIFOW (fd, 0) = 0x3822;
@@ -476,7 +476,7 @@ int mapif_party_memberadded (int fd, int party_id, int account_id, int flag)
return 0;
}
-// ƒp[ƒeƒBÝ’č•ĎX’Ę’m
+// パーティ設定変更通知
int mapif_party_optionchanged (int fd, struct party *p, int account_id,
int flag)
{
@@ -495,7 +495,7 @@ int mapif_party_optionchanged (int fd, struct party *p, int account_id,
return 0;
}
-// ƒp[ƒeƒB’E‘Ţ’Ę’m
+// パーティ脱退通知
int mapif_party_leaved (int party_id, int account_id, char *name)
{
unsigned char buf[64];
@@ -508,7 +508,7 @@ int mapif_party_leaved (int party_id, int account_id, char *name)
return 0;
}
-// ƒp[ƒeƒBƒ}ƒbƒvXV’Ę’m
+// パーティマップ更新通知
int mapif_party_membermoved (struct party *p, int idx)
{
unsigned char buf[32];
@@ -522,7 +522,7 @@ int mapif_party_membermoved (struct party *p, int idx)
return 0;
}
-// ƒp[ƒeƒB‰đŽU’Ę’m
+// パーティ解散通知
int mapif_party_broken (int party_id, int flag)
{
unsigned char buf[16];
@@ -534,7 +534,7 @@ int mapif_party_broken (int party_id, int flag)
return 0;
}
-// ƒp[ƒeƒB“ŕ”­Œž
+// パーティ内発言
int mapif_party_message (int party_id, int account_id, char *mes, int len)
{
unsigned char buf[512];
@@ -548,7 +548,7 @@ int mapif_party_message (int party_id, int account_id, char *mes, int len)
}
//-------------------------------------------------------------------
-// map server‚Š‚ç‚̒ʐM
+// map serverからの通信
// Create Party
int mapif_parse_CreateParty (int fd, int account_id, char *name, char *nick,
@@ -588,7 +588,7 @@ int mapif_parse_CreateParty (int fd, int account_id, char *name, char *nick,
return 0;
}
-// ƒp[ƒeƒBî•ń—v‹
+// パーティ情報要求
int mapif_parse_PartyInfo (int fd, int party_id)
{
struct party *p = party_pt;
@@ -606,7 +606,7 @@ int mapif_parse_PartyInfo (int fd, int party_id)
return 0;
}
-// ƒp[ƒeƒB’ljÁ—v‹
+// パーティ追加要求
int mapif_parse_PartyAddMember (int fd, int party_id, int account_id,
char *nick, char *map, int lv)
{
@@ -659,7 +659,7 @@ int mapif_parse_PartyAddMember (int fd, int party_id, int account_id,
return 0;
}
-// ƒp[ƒeƒB[Ý’č•ĎX—v‹
+// パーティー設定変更要求
int mapif_parse_PartyChangeOption (int fd, int party_id, int account_id,
int exp, int item)
{
@@ -694,7 +694,7 @@ int mapif_parse_PartyChangeOption (int fd, int party_id, int account_id,
return 0;
}
-// ƒp[ƒeƒB’E‘Ţ—v‹
+// パーティ脱退要求
int mapif_parse_PartyLeave (int fd, int party_id, int account_id)
{
char t_member[24];
@@ -776,7 +776,7 @@ int mapif_parse_PartyLeave (int fd, int party_id, int account_id)
}
}
if (party_check_empty (p) == 0)
- mapif_party_info (-1, p); // ‚Ü‚žl‚Ş‚˘‚é‚Ě‚Ĺƒf[ƒ^‘—M
+ mapif_party_info (-1, p); // まだ人がいるのでデータ送信
/*
* else
* inter_party_tosql(party_id,p); // Break the party if no member
@@ -840,7 +840,7 @@ int mapif_parse_PartyChangeMap (int fd, int party_id, int account_id,
return 0;
}
-// ƒp[ƒeƒB‰đŽU—v‹
+// パーティ解散要求
int mapif_parse_BreakParty (int fd, int party_id)
{
struct party *p;
@@ -864,24 +864,24 @@ int mapif_parse_BreakParty (int fd, int party_id)
return 0;
}
-// ƒp[ƒeƒBƒƒbƒZ[ƒW‘—M
+// パーティメッセージ送信
int mapif_parse_PartyMessage (int fd, int party_id, int account_id, char *mes,
int len)
{
return mapif_party_message (party_id, account_id, mes, len);
}
-// ƒp[ƒeƒBƒ`ƒFƒbƒN—v‹
+// パーティチェック要求
int mapif_parse_PartyCheck (int fd, int party_id, int account_id, char *nick)
{
return party_check_conflict (party_id, account_id, nick);
}
-// map server ‚Š‚ç‚̒ʐM
-// E‚PƒpƒPƒbƒg‚̂݉đÍ‚ˇ‚é‚ą‚Ć
-// EƒpƒPƒbƒg’ˇƒf[ƒ^‚Íinter.c‚ɃZƒbƒg‚ľ‚Ä‚¨‚­‚ą‚Ć
-// EƒpƒPƒbƒg’ˇƒ`ƒFƒbƒN‚âARFIFOSKIP‚ÍŒÄ‚Ńo‚ľŒł‚ōs‚í‚ę‚é‚Ě‚Ĺs‚Á‚Ä‚Í‚Č‚ç‚Č‚˘
-// EƒGƒ‰[‚Č‚ç0(false)A‚ť‚¤‚Ĺ‚Č‚˘‚Č‚ç1(true)‚đ‚Š‚Ś‚ł‚Č‚Ż‚ę‚΂Ȃç‚Č‚˘
+// map server からの通信
+// ・1パケットのみ解析すること
+// ・パケット長データはinter.cにセットしておくこと
+// ・パケット長チェックや、RFIFOSKIPは呼び出し元で行われるので行ってはならない
+// ・エラーなら0(false)、そうでないなら1(true)をかえさなければならない
int inter_party_parse_frommap (int fd)
{
switch (RFIFOW (fd, 0))
@@ -928,7 +928,7 @@ int inter_party_parse_frommap (int fd)
return 1;
}
-// ƒT[ƒo[‚Š‚ç’E‘Ţ—v‹iƒLƒƒƒ‰íœ—pj
+// サーバーから脱退要求(キャラ削除用)
int inter_party_leave (int party_id, int account_id)
{
return mapif_parse_PartyLeave (-1, party_id, account_id);
diff --git a/src/char_sql/int_storage.c b/src/char_sql/int_storage.c
index 3dd0685..63198b1 100644
--- a/src/char_sql/int_storage.c
+++ b/src/char_sql/int_storage.c
@@ -234,7 +234,7 @@ int inter_storage_sql_init ()
return 1;
}
-// ‘qŒÉƒf[ƒ^íœ
+// 倉庫データ削除
int inter_storage_delete (int account_id)
{
sprintf (tmp_sql, "DELETE FROM `%s` WHERE `account_id`='%d'", storage_db,
diff --git a/src/char_sql/inter.c b/src/char_sql/inter.c
index 048d466..800beaf 100644
--- a/src/char_sql/inter.c
+++ b/src/char_sql/inter.c
@@ -15,8 +15,8 @@
#include "int_pet.h"
#include "lock.h"
-#define WISDATA_TTL (60*1000) // Wisƒf[ƒ^‚̐ś‘śŽžŠÔ(60•b)
-#define WISDELLIST_MAX 256 // Wisƒf[ƒ^íœƒŠƒXƒg‚Ě—v‘f”
+#define WISDATA_TTL (60*1000) // Wisデータの生存時間(60秒)
+#define WISDELLIST_MAX 256 // Wisデータ削除リストの要素数
struct accreg
{
@@ -601,13 +601,13 @@ int inter_parse_frommap (int fd)
int cmd = RFIFOW (fd, 0);
int len = 0;
- // interŽIŠÇŠ‚Š‚𒲂ׂé
+ // inter鯖管轄かを調べる
if (cmd < 0x3000 || cmd >= 0x3000 + (sizeof (inter_recv_packet_length) /
sizeof (inter_recv_packet_length
[0])))
return 0;
- // ƒpƒPƒbƒg’ˇ‚𒲂ׂé
+ // パケット長を調べる
if ((len =
inter_check_length (fd,
inter_recv_packet_length[cmd - 0x3000])) == 0)
diff --git a/src/char_sql/itemdb.c b/src/char_sql/itemdb.c
index 3e1c22d..ee0801f 100644
--- a/src/char_sql/itemdb.c
+++ b/src/char_sql/itemdb.c
@@ -16,7 +16,7 @@
#define MAX_RANDITEM 2000
// ** ITEMDB_OVERRIDE_NAME_VERBOSE **
-// ’č‹`‚ˇ‚é‚ƁAitemdb.txt‚Ćgrf‚Ĺ–ź‘O‚ŞˆŮ‚Č‚éę‡A•\ŽŚ‚ľ‚Ü‚ˇ.
+// 定義すると、itemdb.txtとgrfで名前が異なる場合、表示します.
//#define ITEMDB_OVERRIDE_NAME_VERBOSE 1
char item_db_db[256] = "item_db"; // added to specify item_db sql table [Valaris]
@@ -24,7 +24,7 @@ char item_db_db[256] = "item_db"; // added to specify item_db sql table [Valar
static struct dbt *item_db;
/*==========================================
- * DB‚ĚŒŸő
+ * DBの検索
*------------------------------------------
*/
struct item_data *itemdb_search (int nameid)
@@ -93,7 +93,7 @@ int itemdb_isequip2 (struct item_data *data)
}
/*==========================================
- * ƒAƒCƒeƒ€ƒf[ƒ^ƒx[ƒX‚Ě“Ç‚Ýž‚Ý
+ * アイテムデータベースの読み込み
*------------------------------------------
*/
static int itemdb_readdb (void)
diff --git a/src/char_sql/itemdb.h b/src/char_sql/itemdb.h
index 9f4274e..5d55c1b 100644
--- a/src/char_sql/itemdb.h
+++ b/src/char_sql/itemdb.h
@@ -18,8 +18,8 @@ struct item_data
int look;
int elv;
int wlv;
- char *use_script; // ‰ń•œ‚Ć‚Š‚ŕ‘S•”‚ą‚Ě’†‚Ĺ‚â‚낤‚Š‚Č‚Ć
- char *equip_script; // UŒ‚,–hŒä‚Ě‘ŽŤÝ’č‚ŕ‚ą‚Ě’†‚ʼn”\‚Š‚Č?
+ char *use_script; // 回復とかも全部この中でやろうかなと
+ char *equip_script; // 攻撃,防御の属性設定もこの中で可能かな?
char available;
};
diff --git a/src/common/db.c b/src/common/db.c
index 7a4fa70..07b08c8 100644
--- a/src/common/db.c
+++ b/src/common/db.c
@@ -211,7 +211,7 @@ static void db_rebalance (struct dbn *p, struct dbn **root)
{
p->color = RED;
while (p != *root && p->parent->color == RED)
- { // root‚Í•K‚¸•‚Őe‚͐Ԃ˘‚̂Őe‚̐e‚Í•K‚¸‘śÝ‚ˇ‚é
+ { // rootは必ず黒で親は赤いので親の親は必ず存在する
if (p->parent == p->parent->parent->left)
{
struct dbn *y = p->parent->parent->right;
@@ -276,7 +276,7 @@ static void db_rebalance_erase (struct dbn *z, struct dbn **root)
x = y->right;
}
if (y != z)
- { // ś‰E‚Ş—ź•ű–„‚Ü‚Á‚Ä‚˘‚˝Žž y‚đz‚ĚˆĘ’u‚ÉŽ‚Á‚Ä‚Ť‚Äz‚đ•‚‚Š‚š‚é
+ { // 左右が両方埋まっていた時 yをzの位置に持ってきてzを浮かせる
z->left->parent = y;
y->left = z->left;
if (y != z->right)
@@ -305,7 +305,7 @@ static void db_rebalance_erase (struct dbn *z, struct dbn **root)
y = z;
}
else
- { // ‚Ç‚ż‚ç‚Š‹ó‚˘‚Ä‚˘‚˝ę‡ x‚đz‚ĚˆĘ’u‚ÉŽ‚Á‚Ä‚Ť‚Äz‚đ•‚‚Š‚š‚é
+ { // どちらか空いていた場合 xをzの位置に持ってきてzを浮かせる
x_parent = y->parent;
if (x)
x->parent = y->parent;
@@ -316,9 +316,9 @@ static void db_rebalance_erase (struct dbn *z, struct dbn **root)
else
z->parent->right = x;
}
- // ‚ą‚ą‚܂ŐF‚ĚˆÚ“Ž‚̏œ‚˘‚Ä’Ęí‚Ě2•Ş–Ř‚Ć“Ż‚ś
+ // ここまで色の移動の除いて通常の2分木と同じ
if (y->color != RED)
- { // Ô‚ޏÁ‚Ś‚é•Ş‚ɂ͉e‹ż–ł‚ľ
+ { // 赤が消える分には影響無し
while (x != *root && (x == NULL || x->color == BLACK))
if (x == x_parent->left)
{
@@ -498,7 +498,7 @@ void db_foreach (struct dbt *table, int (*func) (void *, void *, va_list),
...)
{
int i, sp;
- // red-black tree‚Č‚Ě‚Ĺ64ŒÂstack‚Ş‚ ‚ę‚Î2^32ŒÂƒm[ƒh‚Ü‚Ĺ‘ĺä•v
+ // red-black treeなので64個stackがあれば2^32個ノードまで大丈夫
struct dbn *p, *pn, *stack[64];
va_list ap;
diff --git a/src/common/lock.c b/src/common/lock.c
index 7409baf..bed657f 100644
--- a/src/common/lock.c
+++ b/src/common/lock.c
@@ -4,17 +4,17 @@
#include "lock.h"
#include "socket.h"
-// ‘‚Ťž‚݃tƒ@ƒCƒ‹‚Ě•ŰŒěˆ—
-// i‘‚Ťž‚Ý‚ŞI‚í‚é‚܂ŁA‹Œƒtƒ@ƒCƒ‹‚đ•ŰŠÇ‚ľ‚Ä‚¨‚­j
+// 書き込みファイルの保護処理
+// (書き込みが終わるまで、旧ファイルを保管しておく)
-// V‚ľ‚˘ƒtƒ@ƒCƒ‹‚̏‘‚Ťž‚ÝŠJŽn
+// 新しいファイルの書き込み開始
FILE *lock_fopen (const char *filename, int *info)
{
char newfile[512];
FILE *fp;
int no = getpid ();
- // ˆŔ‘S‚Čƒtƒ@ƒCƒ‹–ź‚đ“ž‚éiŽč”˛‚Ťj
+ // 安全なファイル名を得る(手抜き)
do
{
sprintf (newfile, "%s_%d.tmp", filename, no++);
@@ -24,7 +24,7 @@ FILE *lock_fopen (const char *filename, int *info)
return fopen_ (newfile, "w");
}
-// ‹Œƒtƒ@ƒCƒ‹‚đíœ•Vƒtƒ@ƒCƒ‹‚đƒŠƒl[ƒ€
+// 旧ファイルを削除&新ファイルをリネーム
int lock_fclose (FILE * fp, const char *filename, int *info)
{
int ret = 0;
@@ -34,7 +34,7 @@ int lock_fclose (FILE * fp, const char *filename, int *info)
ret = fclose_ (fp);
sprintf (newfile, "%s_%d.tmp", filename, *info);
remove (filename);
- // ‚ą‚Ěƒ^ƒCƒ~ƒ“ƒO‚Ĺ—Ž‚ż‚é‚ĆĹˆŤB
+ // このタイミングで落ちると最悪。
rename (newfile, filename);
return ret;
}
diff --git a/src/common/mmo.h b/src/common/mmo.h
index 11d37b1..279bf4a 100644
--- a/src/common/mmo.h
+++ b/src/common/mmo.h
@@ -8,9 +8,9 @@
#include "utils.h" // LCCWIN32
#ifdef CYGWIN
-#define RETCODE "\r\n" // (CR/LFFWindowsŒn)
+#define RETCODE "\r\n" // (CR/LF:Windows系)
#else
-#define RETCODE "\n" // (LFFUnixŒnj
+#define RETCODE "\n" // (LF:Unix系)
#endif
#define FIFOSIZE_SERVERLINK 256*1024
@@ -278,13 +278,13 @@ struct square
enum
{
- GBI_EXP = 1, // ƒMƒ‹ƒh‚ĚEXP
- GBI_GUILDLV = 2, // ƒMƒ‹ƒh‚ĚLv
- GBI_SKILLPOINT = 3, // ƒMƒ‹ƒh‚ĚƒXƒLƒ‹ƒ|ƒCƒ“ƒg
- GBI_SKILLLV = 4, // ƒMƒ‹ƒhƒXƒLƒ‹Lv
+ GBI_EXP = 1, // ギルドのEXP
+ GBI_GUILDLV = 2, // ギルドのLv
+ GBI_SKILLPOINT = 3, // ギルドのスキルポイント
+ GBI_SKILLLV = 4, // ギルドスキルLv
- GMI_POSITION = 0, // ƒƒ“ƒo[‚Ě–đE•ĎX
- GMI_EXP = 1, // ƒƒ“ƒo[‚ĚEXP
+ GMI_POSITION = 0, // メンバーの役職変更
+ GMI_EXP = 1, // ュンバミぎEXP
};
diff --git a/src/common/nullpo.c b/src/common/nullpo.c
index daeca9f..3205293 100644
--- a/src/common/nullpo.c
+++ b/src/common/nullpo.c
@@ -2,13 +2,13 @@
#include <stdarg.h>
#include <string.h>
#include "nullpo.h"
-// #include "logs.h" // •zÎ‚ľ‚Ä‚Ý‚é
+// #include "logs.h" // 布石してみる
static void nullpo_info_core (const char *file, int line, const char *func,
const char *fmt, va_list ap);
/*======================================
- * Nullƒ`ƒFƒbƒN ‹y‚Ń î•ńo—Í
+ * Nullチェック 及び 情報出力
*--------------------------------------
*/
int nullpo_chk_f (const char *file, int line, const char *func,
@@ -36,7 +36,7 @@ int nullpo_chk (const char *file, int line, const char *func,
}
/*======================================
- * nullpoî•ńo—Í(ŠO•”ŒÄo‚ľŒü‚Żƒ‰ƒbƒp)
+ * nullpo情報出力(外部呼出し向けラッパ)
*--------------------------------------
*/
void nullpo_info_f (const char *file, int line, const char *func,
@@ -55,7 +55,7 @@ void nullpo_info (const char *file, int line, const char *func)
}
/*======================================
- * nullpoî•ńo—Í(Main)
+ * nullpo情報出力(Main)
*--------------------------------------
*/
static void nullpo_info_core (const char *file, int line, const char *func,
@@ -74,13 +74,13 @@ static void nullpo_info_core (const char *file, int line, const char *func,
{
vprintf (fmt, ap);
- // ĹŒă‚ɉüs‚ľ‚˝‚ŠŠm”F
+ // 最後に改行したか確認
if (fmt[strlen (fmt) - 1] != '\n')
printf ("\n");
}
}
printf ("--- end nullpo info ----------------------------------------\n");
- // ‚ą‚ą‚ç‚ĹnullpoƒƒO‚đƒtƒ@ƒCƒ‹‚ɏ‘‚Ťo‚š‚˝‚ç
- // ‚Ü‚Ć‚ß‚Ä’ńo‚Ĺ‚Ť‚é‚Č‚ĆŽv‚Á‚Ä‚˘‚˝‚čB
+ // ここらでnullpoログをファイルに書き出せたら
+ // まとめて提出できるなと思っていたり。
}
diff --git a/src/common/nullpo.h b/src/common/nullpo.h
index bac92cd..baeacdc 100644
--- a/src/common/nullpo.h
+++ b/src/common/nullpo.h
@@ -2,8 +2,8 @@
#define _NULLPO_H_
#define NULLPO_CHECK 1
- // ‘S‘Ě‚ĚƒXƒCƒbƒ`‚đéŒž‚ľ‚Ä‚˘‚éƒwƒbƒ_‚Ş‚ ‚ę‚Î
- // ‚ť‚ą‚ɈړŽ‚ľ‚Ä‚˘‚˝‚ž‚Ż‚é‚Ć
+ // 全体のスイッチを宣言しているヘッダがあれば
+ // そこに移動していただけると
#if __STDC_VERSION__ < 199901L
# if __GNUC__ >= 2
@@ -24,52 +24,52 @@
*----------------------------------------------------------------------------
*/
/*======================================
- * Nullƒ`ƒFƒbƒN ‹y‚Ń î•ńo—ÍŒă return
- *E“WŠJ‚ˇ‚é‚Ćif‚Ć‚Šreturn“™‚ޏo‚é‚Ě‚Ĺ
- * ˆęs’P‘Ě‚ĹŽg‚Á‚Ä‚­‚ž‚ł‚˘B
- *Enullpo_ret(x = func());
- * ‚̂悤‚ČŽg—p–@‚ŕ‘z’č‚ľ‚Ä‚˘‚Ü‚ˇB
+ * Nullチェック 及び 情報出力後 return
+ *・展開するとifとかreturn等が出るので
+ * 一行単体で使ってください。
+ *ポnullpo_ret(x = func());
+ * のような使用法も想定しています。
*--------------------------------------
* nullpo_ret(t)
- * –ß‚č’l 0ŒĹ’č
- * [ˆř”]
- * t ƒ`ƒFƒbƒN‘ΏŰ
+ * 戻り値 0固定
+ * [引数]
+ * t チェック対象
*--------------------------------------
* nullpo_retv(t)
- * –ß‚č’l ‚Č‚ľ
- * [ˆř”]
- * t ƒ`ƒFƒbƒN‘ΏŰ
+ * 戻り値 なし
+ * [引数]
+ * t チェック対象
*--------------------------------------
* nullpo_retr(ret, t)
- * –ß‚č’l Žw’č
- * [ˆř”]
+ * 戻り値 指定
+ * [引数]
* ret return(ret);
- * t ƒ`ƒFƒbƒN‘ΏŰ
+ * t チェック対象
*--------------------------------------
* nullpo_ret_f(t, fmt, ...)
- * Ú×î•ńo—Í—p
- * –ß‚č’l 0
- * [ˆř”]
- * t ƒ`ƒFƒbƒN‘ΏŰ
- * fmt ... vprintf‚É“n‚ł‚ę‚é
- * ”ől‚âŠÖŒW•Ď”‚̏‘‚Ťo‚ľ‚Č‚Ç‚É
+ * 詳細情報出力用
+ * 戻り値 0
+ * [引数]
+ * t チェック対象
+ * fmt ... vprintfに渡される
+ * 備考や関係変数の書き出しなどに
*--------------------------------------
* nullpo_retv_f(t, fmt, ...)
- * Ú×î•ńo—Í—p
- * –ß‚č’l ‚Č‚ľ
- * [ˆř”]
- * t ƒ`ƒFƒbƒN‘ΏŰ
- * fmt ... vprintf‚É“n‚ł‚ę‚é
- * ”ől‚âŠÖŒW•Ď”‚̏‘‚Ťo‚ľ‚Č‚Ç‚É
+ * 詳細情報出力用
+ * 戻り値 なし
+ * [引数]
+ * t チェック対象
+ * fmt ... vprintfに渡される
+ * 備考や関係変数の書き出しなどに
*--------------------------------------
* nullpo_retr_f(ret, t, fmt, ...)
- * Ú×î•ńo—Í—p
- * –ß‚č’l Žw’č
- * [ˆř”]
+ * 詳細情報出力用
+ * 戻り値 指定
+ * [引数]
* ret return(ret);
- * t ƒ`ƒFƒbƒN‘ΏŰ
- * fmt ... vprintf‚É“n‚ł‚ę‚é
- * ”ől‚âŠÖŒW•Ď”‚̏‘‚Ťo‚ľ‚Č‚Ç‚É
+ * t チェック対象
+ * fmt ... vprintfに渡される
+ * 備考や関係変数の書き出しなどに
*--------------------------------------
*/
@@ -84,9 +84,9 @@
#define nullpo_retr(ret, t) \
if (nullpo_chk(NLP_MARK, (void *)(t))) {return(ret);}
-// ‰Â•Ďˆř”ƒ}ƒNƒ‚ÉŠÖ‚ˇ‚éđŒƒRƒ“ƒpƒCƒ‹
+// 可変引数マクロに関する条件コンパイル
#if __STDC_VERSION__ >= 199901L
-/* C99‚ɑΉž */
+/* C99に対応 */
#define nullpo_ret_f(t, fmt, ...) \
if (nullpo_chk_f(NLP_MARK, (void *)(t), (fmt), __VA_ARGS__)) {return(0);}
@@ -97,7 +97,7 @@
if (nullpo_chk_f(NLP_MARK, (void *)(t), (fmt), __VA_ARGS__)) {return(ret);}
#elif __GNUC__ >= 2
-/* GCC—p */
+/* GCC用 */
#define nullpo_ret_f(t, fmt, args...) \
if (nullpo_chk_f(NLP_MARK, (void *)(t), (fmt), ## args)) {return(0);}
@@ -109,7 +109,7 @@
#else
-/* ‚ť‚Ě‘ź‚Ěę‡EEE orz */
+/* その他の場合・・・ orz */
#endif
@@ -117,28 +117,28 @@
/* No Nullpo check */
// if((t)){;}
-// —Ç‚˘•ű–@‚ŞŽv‚˘‚‚Š‚Č‚Š‚Á‚˝‚̂ŁEEE‹ę“÷‚̍ô‚Ĺ‚ˇB
-// ˆę‰žƒ[ƒjƒ“ƒO‚͏o‚Č‚˘‚Í‚¸
+// 良い方法が思いつかなかったので・・・苦肉の策です。
+// 一応ワーニングは出ないはず
#define nullpo_ret(t) if((t)){;}
#define nullpo_retv(t) if((t)){;}
#define nullpo_retr(ret, t) if((t)){;}
-// ‰Â•Ďˆř”ƒ}ƒNƒ‚ÉŠÖ‚ˇ‚éđŒƒRƒ“ƒpƒCƒ‹
+// 可変引数マクロに関する条件コンパイル
#if __STDC_VERSION__ >= 199901L
-/* C99‚ɑΉž */
+/* C99に対応 */
#define nullpo_ret_f(t, fmt, ...) if((t)){;}
#define nullpo_retv_f(t, fmt, ...) if((t)){;}
#define nullpo_retr_f(ret, t, fmt, ...) if((t)){;}
#elif __GNUC__ >= 2
-/* GCC—p */
+/* GCC用 */
#define nullpo_ret_f(t, fmt, args...) if((t)){;}
#define nullpo_retv_f(t, fmt, args...) if((t)){;}
#define nullpo_retr_f(ret, t, fmt, args...) if((t)){;}
#else
-/* ‚ť‚Ě‘ź‚Ěę‡EEE orz */
+/* その他の場合・・・ orz */
#endif
#endif /* NULLPO_CHECK */
@@ -149,14 +149,14 @@
*/
/*======================================
* nullpo_chk
- * Nullƒ`ƒFƒbƒN ‹y‚Ń î•ńo—Í
- * [ˆř”]
+ * Nullチェック 及び 情報出力
+ * [引数]
* file __FILE__
* line __LINE__
- * func __func__ (ŠÖ”–ź)
- * ‚ą‚ę‚ç‚É‚Í NLP_MARK ‚đŽg‚¤‚Ƃ悢
- * target ƒ`ƒFƒbƒN‘ΏŰ
- * [•Ô‚č’l]
+ * func __func__ (関数名)
+ * これらには NLP_MARK を使うとよい
+ * target チェック対象
+ * [返り値]
* 0 OK
* 1 NULL
*--------------------------------------
@@ -166,16 +166,16 @@ int nullpo_chk (const char *file, int line, const char *func,
/*======================================
* nullpo_chk_f
- * Nullƒ`ƒFƒbƒN ‹y‚Ń Ú×‚ȏî•ńo—Í
- * [ˆř”]
+ * Nullチェック 及び 詳細な情報出力
+ * [引数]
* file __FILE__
* line __LINE__
- * func __func__ (ŠÖ”–ź)
- * ‚ą‚ę‚ç‚É‚Í NLP_MARK ‚đŽg‚¤‚Ƃ悢
- * target ƒ`ƒFƒbƒN‘ΏŰ
- * fmt ... vprintf‚É“n‚ł‚ę‚é
- * ”ől‚âŠÖŒW•Ď”‚̏‘‚Ťo‚ľ‚Č‚Ç‚É
- * [•Ô‚č’l]
+ * func __func__ (関数名)
+ * これらには NLP_MARK を使うとよい
+ * target チェック対象
+ * fmt ... vprintfに渡される
+ * 備考や関係変数の書き出しなどに
+ * [返り値]
* 0 OK
* 1 NULL
*--------------------------------------
@@ -186,26 +186,26 @@ int nullpo_chk_f (const char *file, int line, const char *func,
/*======================================
* nullpo_info
- * nullpoî•ńo—Í
- * [ˆř”]
+ * nullpo情報出力
+ * [引数]
* file __FILE__
* line __LINE__
- * func __func__ (ŠÖ”–ź)
- * ‚ą‚ę‚ç‚É‚Í NLP_MARK ‚đŽg‚¤‚Ƃ悢
+ * func __func__ (関数名)
+ * これらには NLP_MARK を使うとよい
*--------------------------------------
*/
void nullpo_info (const char *file, int line, const char *func);
/*======================================
* nullpo_info_f
- * nullpoÚ×î•ńo—Í
- * [ˆř”]
+ * nullpo詳細情報出力
+ * [引数]
* file __FILE__
* line __LINE__
- * func __func__ (ŠÖ”–ź)
- * ‚ą‚ę‚ç‚É‚Í NLP_MARK ‚đŽg‚¤‚Ƃ悢
- * fmt ... vprintf‚É“n‚ł‚ę‚é
- * ”ől‚âŠÖŒW•Ď”‚̏‘‚Ťo‚ľ‚Č‚Ç‚É
+ * func __func__ (関数名)
+ * これらには NLP_MARK を使うとよい
+ * fmt ... vprintfに渡される
+ * 備考や関係変数の書き出しなどに
*--------------------------------------
*/
void nullpo_info_f (const char *file, int line, const char *func,
diff --git a/src/common/timer.c b/src/common/timer.c
index d9552fe..fca6f42 100644
--- a/src/common/timer.c
+++ b/src/common/timer.c
@@ -253,7 +253,7 @@ int delete_timer (int id, int (*func) (int, unsigned int, int, int))
search_timer_func_list (func));
return -2;
}
- // ‚ť‚Ě‚¤‚żÁ‚Ś‚é‚É‚Ü‚Š‚š‚é
+ // そのうち消えるにまかせる
timer_data[id].func = NULL;
timer_data[id].type = TIMER_ONCE_AUTODEL;
timer_data[id].tick -= 60 * 60 * 1000;
@@ -298,10 +298,10 @@ int do_timer (unsigned int tick)
{
if (DIFF_TICK (timer_data[i].tick, tick) < -1000)
{
- // 1•bˆČă‚Ě‘ĺ•‚Č’x‰„‚Ş”­ś‚ľ‚Ä‚˘‚é‚̂ŁA
- // timerˆ—ƒ^ƒCƒ~ƒ“ƒO‚đŒťÝ’l‚Ć‚ˇ‚鎖‚Ĺ
- // ŒÄ‚яo‚ľŽžƒ^ƒCƒ~ƒ“ƒO(ˆř”‚Ětick)‘Š‘Î‚Ĺˆ—‚ľ‚Ä‚é
- // timerŠÖ”‚ĚŽŸ‰ńˆ—ƒ^ƒCƒ~ƒ“ƒO‚đ’x‚ç‚š‚é
+ // 1秒以上の大幅な遅延が発生しているので、
+ // timer処理タイミングを現在値とする事で
+ // 呼び出し時タイミング(引数のtick)相対で処理してる
+ // timer関数の次回処理タイミングを遅らせる
timer_data[i].func (i, tick, timer_data[i].id,
timer_data[i].data);
}
diff --git a/src/common/version.h b/src/common/version.h
index 60c9fca..cd9808e 100644
--- a/src/common/version.h
+++ b/src/common/version.h
@@ -14,14 +14,14 @@
#define ATHENA_SERVER_INTER 4 // inter server
#define ATHENA_SERVER_MAP 8 // map server
-// ATHENA_MOD_VERSION‚̓pƒbƒ`”ԍ†‚Ĺ‚ˇB
-// ‚ą‚ę‚Í–ł—‚É•Ď‚Ś‚Č‚­‚Ä‚ŕ‹C‚ŞŒü‚˘‚˝‚ç•Ď‚Ś‚é’ö“x‚Ěˆľ‚˘‚ŁB
-// i–ˆ‰ńƒAƒbƒvƒ[ƒh‚Ě“x‚É•ĎX‚ˇ‚é‚Ě‚ŕ–Ę“|‚ĆŽv‚í‚ę‚é‚ľA‚ť‚ŕ‚ť‚ŕ
-// @‚ą‚̍€–Ú‚đŽQĆ‚ˇ‚él‚Ş‚˘‚é‚Š‚Ç‚¤‚Š‚Ĺ‹^–â‚ž‚Š‚çBj
-// ‚ť‚Ě’ö“x‚Ěˆľ‚˘‚Ȃ̂ŁAƒT[ƒo[‚ɖ₢‡‚í‚š‚鑤‚ŕA‚ ‚­‚Ü‚Ĺ–ÚˆŔ’ö“x‚Ěˆľ‚˘‚Ĺ
-// ‚ ‚ń‚Ü‚čM—p‚ľ‚Č‚˘‚ą‚ƁB
-// ŽIsnapshot‚ĚŽž‚âA‘ĺ‚Ť‚Č•ĎX‚Ş‚ ‚Á‚˝ę‡‚͐ݒ肾‚Ä‚Ů‚ľ‚˘‚Ĺ‚ˇB
-// CŒžŒę‚ĚŽd—lăAĹ‰‚É0‚đ•t‚Ż‚é‚Ć8i”‚É‚Č‚é‚Ě‚ĹŠÔˆá‚Ś‚Č‚˘‚ʼnş‚ł‚˘B
+// ATHENA_MOD_VERSIONはパッチ番号です。
+// これは無理に変えなくても気が向いたら変える程度の扱いで。
+// (毎回アップロードの度に変更するのも面倒と思われるし、そもそも
+//  この項目を参照する人がいるかどうかで疑問だから。)
+// その程度の扱いなので、サーバーに問い合わせる側も、あくまで目安程度の扱いで
+// あんまり信用しないこと。
+// 鯖snapshotの時や、大きな変更があった場合は設定してほしいです。
+// C言語の仕様上、最初に0を付けると8進数になるので間違えないで下さい。
#define ATHENA_MOD_VERSION 1052 // mod version (patch No.)
#endif
diff --git a/src/login_sql/login.c b/src/login_sql/login.c
index cc59f19..db58026 100644
--- a/src/login_sql/login.c
+++ b/src/login_sql/login.c
@@ -1707,7 +1707,7 @@ int parse_login (int fd)
//-------------------------------------------------
// Return numerical value of a switch configuration
-// on/off, english, français, deutsch, espańol
+// on/off, english, fran軋is, deutsch, espal
//-------------------------------------------------
int config_switch (const char *str)
{
diff --git a/src/map/battle.c b/src/map/battle.c
index 9d868c7..f81aaf0 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -29,8 +29,8 @@ int attr_fix_table[4][10][10];
struct Battle_Config battle_config;
/*==========================================
- * “ń“_ŠÔ‚Ě‹——Ł‚đ•Ô‚ˇ
- * –ß‚č‚͐Ž”‚Ĺ0ˆČă
+ * 二点間の距離を返す
+ * 戻りは整数で0以上
*------------------------------------------
*/
static int distance (int x0, int y0, int x1, int y1)
@@ -43,8 +43,8 @@ static int distance (int x0, int y0, int x1, int y1)
}
/*==========================================
- * ŽŠ•Ş‚đƒƒbƒN‚ľ‚Ä‚˘‚é‘ÎŰ‚Ě”‚đ•Ô‚ˇ(”Ä—p)
- * –ß‚č‚͐Ž”‚Ĺ0ˆČă
+ * 自分をロックしている対象の数を返す(汎用)
+ * 戻りは整数で0以上
*------------------------------------------
*/
int battle_counttargeted (struct block_list *bl, struct block_list *src,
@@ -60,8 +60,8 @@ int battle_counttargeted (struct block_list *bl, struct block_list *src,
}
/*==========================================
- * ‘ÎŰ‚ĚClass‚đ•Ô‚ˇ(”Ä—p)
- * –ß‚č‚͐Ž”‚Ĺ0ˆČă
+ * 対象のClassを返す(汎用)
+ * 戻りは整数で0以上
*------------------------------------------
*/
int battle_get_class (struct block_list *bl)
@@ -76,8 +76,8 @@ int battle_get_class (struct block_list *bl)
}
/*==========================================
- * ‘ÎŰ‚Ě•űŒü‚đ•Ô‚ˇ(”Ä—p)
- * –ß‚č‚͐Ž”‚Ĺ0ˆČă
+ * 対象の方向を返す(汎用)
+ * 戻りは整数で0以上
*------------------------------------------
*/
int battle_get_dir (struct block_list *bl)
@@ -92,8 +92,8 @@ int battle_get_dir (struct block_list *bl)
}
/*==========================================
- * ‘ÎŰ‚ĚƒŒƒxƒ‹‚đ•Ô‚ˇ(”Ä—p)
- * –ß‚č‚͐Ž”‚Ĺ0ˆČă
+ * 対象のレベルを返す(汎用)
+ * 戻りは整数で0以上
*------------------------------------------
*/
int battle_get_lv (struct block_list *bl)
@@ -108,8 +108,8 @@ int battle_get_lv (struct block_list *bl)
}
/*==========================================
- * ‘ÎŰ‚ĚŽË’ö‚đ•Ô‚ˇ(”Ä—p)
- * –ß‚č‚͐Ž”‚Ĺ0ˆČă
+ * 対象の射程を返す(汎用)
+ * 戻りは整数で0以上
*------------------------------------------
*/
int battle_get_range (struct block_list *bl)
@@ -124,8 +124,8 @@ int battle_get_range (struct block_list *bl)
}
/*==========================================
- * ‘ÎŰ‚ĚHP‚đ•Ô‚ˇ(”Ä—p)
- * –ß‚č‚͐Ž”‚Ĺ0ˆČă
+ * 対象のHPを返す(汎用)
+ * 戻りは整数で0以上
*------------------------------------------
*/
int battle_get_hp (struct block_list *bl)
@@ -140,8 +140,8 @@ int battle_get_hp (struct block_list *bl)
}
/*==========================================
- * ‘ÎŰ‚ĚMHP‚đ•Ô‚ˇ(”Ä—p)
- * –ß‚č‚͐Ž”‚Ĺ0ˆČă
+ * 対象のMHPを返す(汎用)
+ * 戻りは整数で0以上
*------------------------------------------
*/
int battle_get_max_hp (struct block_list *bl)
@@ -183,8 +183,8 @@ int battle_get_max_hp (struct block_list *bl)
}
/*==========================================
- * ‘ÎŰ‚ĚStr‚đ•Ô‚ˇ(”Ä—p)
- * –ß‚č‚͐Ž”‚Ĺ0ˆČă
+ * 対象のStrを返す(汎用)
+ * 戻りは整数で0以上
*------------------------------------------
*/
int battle_get_str (struct block_list *bl)
@@ -205,15 +205,15 @@ int battle_get_str (struct block_list *bl)
&& bl->type != BL_PC)
str += 4;
if (sc_data[SC_BLESSING].timer != -1 && bl->type != BL_PC)
- { // ƒuƒŒƒbƒVƒ“ƒO
+ { // ブレッシング
int race = battle_get_race (bl);
if (battle_check_undead (race, battle_get_elem_type (bl))
|| race == 6)
- str >>= 1; // ˆŤ –‚/•sŽ€
+ str >>= 1; // 悪 魔/不死
else
- str += sc_data[SC_BLESSING].val1; // ‚ť‚Ě‘ź
+ str += sc_data[SC_BLESSING].val1; // その他
}
- if (sc_data[SC_TRUESIGHT].timer != -1 && bl->type != BL_PC) // ƒgƒDƒ‹[ƒTƒCƒg
+ if (sc_data[SC_TRUESIGHT].timer != -1 && bl->type != BL_PC) // トゥルーサイト
str += 5;
}
if (str < 0)
@@ -222,8 +222,8 @@ int battle_get_str (struct block_list *bl)
}
/*==========================================
- * ‘ÎŰ‚ĚAgi‚đ•Ô‚ˇ(”Ä—p)
- * –ß‚č‚͐Ž”‚Ĺ0ˆČă
+ * 対象のAgiを返す(汎用)
+ * 戻りは整数で0以上
*------------------------------------------
*/
@@ -241,19 +241,19 @@ int battle_get_agi (struct block_list *bl)
if (sc_data)
{
- if (sc_data[SC_INCREASEAGI].timer != -1 && sc_data[SC_QUAGMIRE].timer == -1 && sc_data[SC_DONTFORGETME].timer == -1 && bl->type != BL_PC) // ‘Ź“x‘‰Á(PC‚Ípc.c‚Ĺ)
+ if (sc_data[SC_INCREASEAGI].timer != -1 && sc_data[SC_QUAGMIRE].timer == -1 && sc_data[SC_DONTFORGETME].timer == -1 && bl->type != BL_PC) // 速度増加(PCはpc.cで)
agi += 2 + sc_data[SC_INCREASEAGI].val1;
if (sc_data[SC_CONCENTRATE].timer != -1
&& sc_data[SC_QUAGMIRE].timer == -1 && bl->type != BL_PC)
agi += agi * (2 + sc_data[SC_CONCENTRATE].val1) / 100;
- if (sc_data[SC_DECREASEAGI].timer != -1) // ‘Ź“xŒ¸­
+ if (sc_data[SC_DECREASEAGI].timer != -1) // 速度減少
agi -= 2 + sc_data[SC_DECREASEAGI].val1;
- if (sc_data[SC_QUAGMIRE].timer != -1) // ƒNƒ@ƒOƒ}ƒCƒA
+ if (sc_data[SC_QUAGMIRE].timer != -1) // クァグマイア
agi >>= 1;
- if (sc_data[SC_TRUESIGHT].timer != -1 && bl->type != BL_PC) // ƒgƒDƒ‹[ƒTƒCƒg
+ if (sc_data[SC_TRUESIGHT].timer != -1 && bl->type != BL_PC) // トゥルーサイト
agi += 5;
}
if (agi < 0)
@@ -262,8 +262,8 @@ int battle_get_agi (struct block_list *bl)
}
/*==========================================
- * ‘ÎŰ‚ĚVit‚đ•Ô‚ˇ(”Ä—p)
- * –ß‚č‚͐Ž”‚Ĺ0ˆČă
+ * 対象のVitを返す(汎用)
+ * 戻りは整数で0以上
*------------------------------------------
*/
int battle_get_vit (struct block_list *bl)
@@ -281,7 +281,7 @@ int battle_get_vit (struct block_list *bl)
{
if (sc_data[SC_STRIPARMOR].timer != -1 && bl->type != BL_PC)
vit = vit * 60 / 100;
- if (sc_data[SC_TRUESIGHT].timer != -1 && bl->type != BL_PC) // ƒgƒDƒ‹[ƒTƒCƒg
+ if (sc_data[SC_TRUESIGHT].timer != -1 && bl->type != BL_PC) // トゥルーサイト
vit += 5;
}
@@ -291,8 +291,8 @@ int battle_get_vit (struct block_list *bl)
}
/*==========================================
- * ‘ÎŰ‚ĚInt‚đ•Ô‚ˇ(”Ä—p)
- * –ß‚č‚͐Ž”‚Ĺ0ˆČă
+ * 対象のIntを返す(汎用)
+ * 戻りは整数で0以上
*------------------------------------------
*/
int battle_get_int (struct block_list *bl)
@@ -310,17 +310,17 @@ int battle_get_int (struct block_list *bl)
if (sc_data)
{
if (sc_data[SC_BLESSING].timer != -1 && bl->type != BL_PC)
- { // ƒuƒŒƒbƒVƒ“ƒO
+ { // ブレッシング
int race = battle_get_race (bl);
if (battle_check_undead (race, battle_get_elem_type (bl))
|| race == 6)
- int_ >>= 1; // ˆŤ –‚/•sŽ€
+ int_ >>= 1; // 悪 魔/不死
else
- int_ += sc_data[SC_BLESSING].val1; // ‚ť‚Ě‘ź
+ int_ += sc_data[SC_BLESSING].val1; // その他
}
if (sc_data[SC_STRIPHELM].timer != -1 && bl->type != BL_PC)
int_ = int_ * 60 / 100;
- if (sc_data[SC_TRUESIGHT].timer != -1 && bl->type != BL_PC) // ƒgƒDƒ‹[ƒTƒCƒg
+ if (sc_data[SC_TRUESIGHT].timer != -1 && bl->type != BL_PC) // トゥルーサイト
int_ += 5;
}
if (int_ < 0)
@@ -329,8 +329,8 @@ int battle_get_int (struct block_list *bl)
}
/*==========================================
- * ‘ÎŰ‚ĚDex‚đ•Ô‚ˇ(”Ä—p)
- * –ß‚č‚͐Ž”‚Ĺ0ˆČă
+ * 対象のDexを返す(汎用)
+ * 戻りは整数で0以上
*------------------------------------------
*/
int battle_get_dex (struct block_list *bl)
@@ -352,18 +352,18 @@ int battle_get_dex (struct block_list *bl)
dex += dex * (2 + sc_data[SC_CONCENTRATE].val1) / 100;
if (sc_data[SC_BLESSING].timer != -1 && bl->type != BL_PC)
- { // ƒuƒŒƒbƒVƒ“ƒO
+ { // ブレッシング
int race = battle_get_race (bl);
if (battle_check_undead (race, battle_get_elem_type (bl))
|| race == 6)
- dex >>= 1; // ˆŤ –‚/•sŽ€
+ dex >>= 1; // 悪 魔/不死
else
- dex += sc_data[SC_BLESSING].val1; // ‚ť‚Ě‘ź
+ dex += sc_data[SC_BLESSING].val1; // その他
}
- if (sc_data[SC_QUAGMIRE].timer != -1) // ƒNƒ@ƒOƒ}ƒCƒA
+ if (sc_data[SC_QUAGMIRE].timer != -1) // クァグマイア
dex >>= 1;
- if (sc_data[SC_TRUESIGHT].timer != -1 && bl->type != BL_PC) // ƒgƒDƒ‹[ƒTƒCƒg
+ if (sc_data[SC_TRUESIGHT].timer != -1 && bl->type != BL_PC) // トゥルーサイト
dex += 5;
}
if (dex < 0)
@@ -372,8 +372,8 @@ int battle_get_dex (struct block_list *bl)
}
/*==========================================
- * ‘ÎŰ‚ĚLuk‚đ•Ô‚ˇ(”Ä—p)
- * –ß‚č‚͐Ž”‚Ĺ0ˆČă
+ * 対象のLukを返す(汎用)
+ * 戻りは整数で0以上
*------------------------------------------
*/
int battle_get_luk (struct block_list *bl)
@@ -390,11 +390,11 @@ int battle_get_luk (struct block_list *bl)
if (sc_data)
{
- if (sc_data[SC_GLORIA].timer != -1 && bl->type != BL_PC) // ƒOƒƒŠƒA(PC‚Ípc.c‚Ĺ)
+ if (sc_data[SC_GLORIA].timer != -1 && bl->type != BL_PC) // グロリア(PCはpc.cで)
luk += 30;
- if (sc_data[SC_CURSE].timer != -1) // Žô‚˘
+ if (sc_data[SC_CURSE].timer != -1) // 呪い
luk = 0;
- if (sc_data[SC_TRUESIGHT].timer != -1 && bl->type != BL_PC) // ƒgƒDƒ‹[ƒTƒCƒg
+ if (sc_data[SC_TRUESIGHT].timer != -1 && bl->type != BL_PC) // トゥルーサイト
luk += 5;
}
if (luk < 0)
@@ -403,8 +403,8 @@ int battle_get_luk (struct block_list *bl)
}
/*==========================================
- * ‘ÎŰ‚ĚFlee‚đ•Ô‚ˇ(”Ä—p)
- * –ß‚č‚͐Ž”‚Ĺ1ˆČă
+ * 対象のFleeを返す(汎用)
+ * 戻りは整数で1以上
*------------------------------------------
*/
int battle_get_flee (struct block_list *bl)
@@ -427,9 +427,9 @@ int battle_get_flee (struct block_list *bl)
(sc_data[SC_WHISTLE].val3 >> 16)) / 100;
if (sc_data[SC_BLIND].timer != -1 && bl->type != BL_PC)
flee -= flee * 25 / 100;
- if (sc_data[SC_WINDWALK].timer != -1 && bl->type != BL_PC) // ƒEƒBƒ“ƒhƒEƒH[ƒN
+ if (sc_data[SC_WINDWALK].timer != -1 && bl->type != BL_PC) // ウィンドウォーク
flee += flee * (sc_data[SC_WINDWALK].val2) / 100;
- if (sc_data[SC_SPIDERWEB].timer != -1 && bl->type != BL_PC) //ƒXƒpƒCƒ_[ƒEƒFƒu
+ if (sc_data[SC_SPIDERWEB].timer != -1 && bl->type != BL_PC) //スパイダーウェブ
flee -= flee * 50 / 100;
if (battle_is_unarmed (bl))
@@ -442,8 +442,8 @@ int battle_get_flee (struct block_list *bl)
}
/*==========================================
- * ‘ÎŰ‚ĚHit‚đ•Ô‚ˇ(”Ä—p)
- * –ß‚č‚͐Ž”‚Ĺ1ˆČă
+ * 対象のHitを返す(汎用)
+ * 戻りは整数で1以上
*------------------------------------------
*/
int battle_get_hit (struct block_list *bl)
@@ -465,11 +465,11 @@ int battle_get_hit (struct block_list *bl)
hit * (sc_data[SC_HUMMING].val1 * 2 +
sc_data[SC_HUMMING].val2 +
sc_data[SC_HUMMING].val3) / 100;
- if (sc_data[SC_BLIND].timer != -1 && bl->type != BL_PC) // Žô‚˘
+ if (sc_data[SC_BLIND].timer != -1 && bl->type != BL_PC) // 呪い
hit -= hit * 25 / 100;
- if (sc_data[SC_TRUESIGHT].timer != -1 && bl->type != BL_PC) // ƒgƒDƒ‹[ƒTƒCƒg
+ if (sc_data[SC_TRUESIGHT].timer != -1 && bl->type != BL_PC) // トゥルーサイト
hit += 3 * (sc_data[SC_TRUESIGHT].val1);
- if (sc_data[SC_CONCENTRATION].timer != -1 && bl->type != BL_PC) //ƒRƒ“ƒZƒ“ƒgƒŒ[ƒVƒ‡ƒ“
+ if (sc_data[SC_CONCENTRATION].timer != -1 && bl->type != BL_PC) //コンセントレーション
hit += (hit * (10 * (sc_data[SC_CONCENTRATION].val1))) / 100;
if (battle_is_unarmed (bl))
@@ -481,8 +481,8 @@ int battle_get_hit (struct block_list *bl)
}
/*==========================================
- * ‘ÎŰ‚ĚŠŽ‘S‰ń”đ‚đ•Ô‚ˇ(”Ä—p)
- * –ß‚č‚͐Ž”‚Ĺ1ˆČă
+ * 対象の完全回避を返す(汎用)
+ * 戻りは整数で1以上
*------------------------------------------
*/
int battle_get_flee2 (struct block_list *bl)
@@ -518,8 +518,8 @@ int battle_get_flee2 (struct block_list *bl)
}
/*==========================================
- * ‘ÎŰ‚ĚƒNƒŠƒeƒBƒJƒ‹‚đ•Ô‚ˇ(”Ä—p)
- * –ß‚č‚͐Ž”‚Ĺ1ˆČă
+ * 対象のクリティカルを返す(汎用)
+ * 戻りは整数で1以上
*------------------------------------------
*/
int battle_get_critical (struct block_list *bl)
@@ -547,7 +547,7 @@ int battle_get_critical (struct block_list *bl)
sc_data[SC_FORTUNE].val3) * 10;
if (sc_data[SC_EXPLOSIONSPIRITS].timer != -1 && bl->type != BL_PC)
critical += sc_data[SC_EXPLOSIONSPIRITS].val2;
- if (sc_data[SC_TRUESIGHT].timer != -1 && bl->type != BL_PC) //ƒgƒDƒ‹[ƒTƒCƒg
+ if (sc_data[SC_TRUESIGHT].timer != -1 && bl->type != BL_PC) //トゥルーサイト
critical += critical * sc_data[SC_TRUESIGHT].val1 / 100;
}
if (critical < 1)
@@ -556,8 +556,8 @@ int battle_get_critical (struct block_list *bl)
}
/*==========================================
- * base_atk‚ĚŽć“ž
- * –ß‚č‚͐Ž”‚Ĺ1ˆČă
+ * base_atkの取得
+ * 戻りは整数で1以上
*------------------------------------------
*/
int battle_get_baseatk (struct block_list *bl)
@@ -568,31 +568,31 @@ int battle_get_baseatk (struct block_list *bl)
nullpo_retr (1, bl);
sc_data = battle_get_sc_data (bl);
if (bl->type == BL_PC && (struct map_session_data *) bl)
- batk = ((struct map_session_data *) bl)->base_atk; //Ý’č‚ł‚ę‚Ä‚˘‚ébase_atk
+ batk = ((struct map_session_data *) bl)->base_atk; //設定されているbase_atk
else
- { //‚ť‚ęˆČŠO‚Č‚ç
+ { //それ以外なら
int str, dstr;
str = battle_get_str (bl); //STR
dstr = str / 10;
- batk = dstr * dstr + str; //base_atk‚đŒvŽZ‚ˇ‚é
+ batk = dstr * dstr + str; //base_atkを計算する
}
if (sc_data)
- { //ó‘ÔˆŮí‚ ‚č
- if (sc_data[SC_PROVOKE].timer != -1 && bl->type != BL_PC) //PC‚Ĺƒvƒƒ{ƒbƒN(SM_PROVOKE)ó‘Ô
- batk = batk * (100 + 2 * sc_data[SC_PROVOKE].val1) / 100; //base_atk‘‰Á
- if (sc_data[SC_CURSE].timer != -1) //Žô‚í‚ę‚Ä‚˘‚˝‚ç
- batk -= batk * 25 / 100; //base_atk‚Ş25%Œ¸­
- if (sc_data[SC_CONCENTRATION].timer != -1 && bl->type != BL_PC) //ƒRƒ“ƒZƒ“ƒgƒŒ[ƒVƒ‡ƒ“
+ { //状態異常あり
+ if (sc_data[SC_PROVOKE].timer != -1 && bl->type != BL_PC) //PCでプロボック(SM_PROVOKE)状態
+ batk = batk * (100 + 2 * sc_data[SC_PROVOKE].val1) / 100; //base_atk増加
+ if (sc_data[SC_CURSE].timer != -1) //呪われていたら
+ batk -= batk * 25 / 100; //base_atkが25%減少
+ if (sc_data[SC_CONCENTRATION].timer != -1 && bl->type != BL_PC) //コンセントレーション
batk += batk * (5 * sc_data[SC_CONCENTRATION].val1) / 100;
}
if (batk < 1)
- batk = 1; //base_atk‚ÍĹ’á‚Ĺ‚ŕ1
+ batk = 1; //base_atkは最低でも1
return batk;
}
/*==========================================
- * ‘ÎŰ‚ĚAtk‚đ•Ô‚ˇ(”Ä—p)
- * –ß‚č‚͐Ž”‚Ĺ0ˆČă
+ * 対象のAtkを返す(汎用)
+ * 戻りは整数で0以上
*------------------------------------------
*/
int battle_get_atk (struct block_list *bl)
@@ -613,7 +613,7 @@ int battle_get_atk (struct block_list *bl)
atk = atk * (100 + 2 * sc_data[SC_PROVOKE].val1) / 100;
if (sc_data[SC_CURSE].timer != -1)
atk -= atk * 25 / 100;
- if (sc_data[SC_CONCENTRATION].timer != -1 && bl->type != BL_PC) //ƒRƒ“ƒZƒ“ƒgƒŒ[ƒVƒ‡ƒ“
+ if (sc_data[SC_CONCENTRATION].timer != -1 && bl->type != BL_PC) //コンセントレーション
atk += atk * (5 * sc_data[SC_CONCENTRATION].val1) / 100;
}
if (atk < 0)
@@ -622,8 +622,8 @@ int battle_get_atk (struct block_list *bl)
}
/*==========================================
- * ‘ÎŰ‚ĚśŽčAtk‚đ•Ô‚ˇ(”Ä—p)
- * –ß‚č‚͐Ž”‚Ĺ0ˆČă
+ * 対象の左手Atkを返す(汎用)
+ * 戻りは整数で0以上
*------------------------------------------
*/
int battle_get_atk_ (struct block_list *bl)
@@ -642,8 +642,8 @@ int battle_get_atk_ (struct block_list *bl)
}
/*==========================================
- * ‘ÎŰ‚ĚAtk2‚đ•Ô‚ˇ(”Ä—p)
- * –ß‚č‚͐Ž”‚Ĺ0ˆČă
+ * 対象のAtk2を返す(汎用)
+ * 戻りは整数で0以上
*------------------------------------------
*/
int battle_get_atk2 (struct block_list *bl)
@@ -672,7 +672,7 @@ int battle_get_atk2 (struct block_list *bl)
atk2 += sc_data[SC_NIBELUNGEN].val2;
if (sc_data[SC_STRIPWEAPON].timer != -1)
atk2 = atk2 * 90 / 100;
- if (sc_data[SC_CONCENTRATION].timer != -1) //ƒRƒ“ƒZƒ“ƒgƒŒ[ƒVƒ‡ƒ“
+ if (sc_data[SC_CONCENTRATION].timer != -1) //コンセントレーション
atk2 += atk2 * (5 * sc_data[SC_CONCENTRATION].val1) / 100;
}
@@ -684,8 +684,8 @@ int battle_get_atk2 (struct block_list *bl)
}
/*==========================================
- * ‘ÎŰ‚ĚśŽčAtk2‚đ•Ô‚ˇ(”Ä—p)
- * –ß‚č‚͐Ž”‚Ĺ0ˆČă
+ * 対象の左手Atk2を返す(汎用)
+ * 戻りは整数で0以上
*------------------------------------------
*/
int battle_get_atk_2 (struct block_list *bl)
@@ -698,8 +698,8 @@ int battle_get_atk_2 (struct block_list *bl)
}
/*==========================================
- * ‘ÎŰ‚ĚMAtk1‚đ•Ô‚ˇ(”Ä—p)
- * –ß‚č‚͐Ž”‚Ĺ0ˆČă
+ * 対象のMAtk1を返す(汎用)
+ * 戻りは整数で0以上
*------------------------------------------
*/
int battle_get_matk1 (struct block_list *bl)
@@ -724,8 +724,8 @@ int battle_get_matk1 (struct block_list *bl)
}
/*==========================================
- * ‘ÎŰ‚ĚMAtk2‚đ•Ô‚ˇ(”Ä—p)
- * –ß‚č‚͐Ž”‚Ĺ0ˆČă
+ * 対象のMAtk2を返す(汎用)
+ * 戻りは整数で0以上
*------------------------------------------
*/
int battle_get_matk2 (struct block_list *bl)
@@ -749,8 +749,8 @@ int battle_get_matk2 (struct block_list *bl)
}
/*==========================================
- * ‘ÎŰ‚ĚDef‚đ•Ô‚ˇ(”Ä—p)
- * –ß‚č‚͐Ž”‚Ĺ0ˆČă
+ * 対象のDefを返す(汎用)
+ * 戻りは整数で0以上
*------------------------------------------
*/
int battle_get_def (struct block_list *bl)
@@ -777,38 +777,38 @@ int battle_get_def (struct block_list *bl)
{
if (sc_data)
{
- //ƒL[ƒsƒ“ƒOŽž‚ÍDEF100
+ //キーピング時はDEF100
if (sc_data[SC_KEEPING].timer != -1)
def = 100;
- //ƒvƒƒ{ƒbƒNŽž‚ÍŒ¸ŽZ
+ //プロボック時は減算
if (sc_data[SC_PROVOKE].timer != -1 && bl->type != BL_PC)
def = (def * (100 - 6 * sc_data[SC_PROVOKE].val1) + 50) / 100;
- //í‘žŒŰ‚Ě‹ż‚ŤŽž‚͉ÁŽZ
+ //戦太鼓の響き時は加算
if (sc_data[SC_DRUMBATTLE].timer != -1 && bl->type != BL_PC)
def += sc_data[SC_DRUMBATTLE].val3;
- //“Ĺ‚É‚Š‚Š‚Á‚Ä‚˘‚鎞‚ÍŒ¸ŽZ
+ //毒にかかっている時は減算
if (sc_data[SC_POISON].timer != -1 && bl->type != BL_PC)
def = def * 75 / 100;
- //ƒXƒgƒŠƒbƒvƒV[ƒ‹ƒhŽž‚ÍŒ¸ŽZ
+ //ストリップシールド時は減算
if (sc_data[SC_STRIPSHIELD].timer != -1 && bl->type != BL_PC)
def = def * 85 / 100;
- //ƒVƒOƒiƒ€ƒNƒ‹ƒVƒXŽž‚ÍŒ¸ŽZ
+ //シグナムクルシス時は減算
if (sc_data[SC_SIGNUMCRUCIS].timer != -1 && bl->type != BL_PC)
def = def * (100 - sc_data[SC_SIGNUMCRUCIS].val2) / 100;
- //‰i‰“‚̍Ź“׎ž‚ÍDEF0‚É‚Č‚é
+ //永遠の混沌時はDEF0になる
if (sc_data[SC_ETERNALCHAOS].timer != -1 && bl->type != BL_PC)
def = 0;
- //“€Œ‹AÎ‰ťŽž‚͉EƒVƒtƒg
+ //凍結、石化時は右シフト
if (sc_data[SC_FREEZE].timer != -1
|| (sc_data[SC_STONE].timer != -1
&& sc_data[SC_STONE].val2 == 0))
def >>= 1;
- //ƒRƒ“ƒZƒ“ƒgƒŒ[ƒVƒ‡ƒ“Žž‚ÍŒ¸ŽZ
+ //コンセントレーション時は減算
if (sc_data[SC_CONCENTRATION].timer != -1 && bl->type != BL_PC)
def =
(def * (100 - 5 * sc_data[SC_CONCENTRATION].val1)) / 100;
}
- //‰rĽ’†‚͉rĽŽžŒ¸ŽZ—Ś‚ÉŠî‚Ă‚˘‚ÄŒ¸ŽZ
+ //詠唱中は詠唱時減算率に基づいて減算
if (skilltimer != -1)
{
int def_rate = skill_get_castdef (skillid);
@@ -822,8 +822,8 @@ int battle_get_def (struct block_list *bl)
}
/*==========================================
- * ‘ÎŰ‚ĚMDef‚đ•Ô‚ˇ(”Ä—p)
- * –ß‚č‚͐Ž”‚Ĺ0ˆČă
+ * 対象のMDefを返す(汎用)
+ * 戻りは整数で0以上
*------------------------------------------
*/
int battle_get_mdef (struct block_list *bl)
@@ -842,7 +842,7 @@ int battle_get_mdef (struct block_list *bl)
{
if (sc_data)
{
- //ƒoƒŠƒA[ó‘ÔŽž‚ÍMDEF100
+ //バリアー状態時はMDEF100
if (mdef < 90 && sc_data[SC_MBARRIER].timer != -1)
{
mdef += sc_data[SC_MBARRIER].val1;
@@ -851,7 +851,7 @@ int battle_get_mdef (struct block_list *bl)
}
if (sc_data[SC_BARRIER].timer != -1)
mdef = 100;
- //“€Œ‹AÎ‰ťŽž‚Í1.25”{
+ //凍結、石化時は1.25倍
if (sc_data[SC_FREEZE].timer != -1
|| (sc_data[SC_STONE].timer != -1
&& sc_data[SC_STONE].val2 == 0))
@@ -866,8 +866,8 @@ int battle_get_mdef (struct block_list *bl)
}
/*==========================================
- * ‘ÎŰ‚ĚDef2‚đ•Ô‚ˇ(”Ä—p)
- * –ß‚č‚͐Ž”‚Ĺ1ˆČă
+ * 対象のDef2を返す(汎用)
+ * 戻りは整数で1以上
*------------------------------------------
*/
int battle_get_def2 (struct block_list *bl)
@@ -890,7 +890,7 @@ int battle_get_def2 (struct block_list *bl)
def2 = (def2 * (100 - 6 * sc_data[SC_PROVOKE].val1) + 50) / 100;
if (sc_data[SC_POISON].timer != -1 && bl->type != BL_PC)
def2 = def2 * 75 / 100;
- //ƒRƒ“ƒZƒ“ƒgƒŒ[ƒVƒ‡ƒ“Žž‚ÍŒ¸ŽZ
+ //コンセントレーション時は減算
if (sc_data[SC_CONCENTRATION].timer != -1 && bl->type != BL_PC)
def2 = def2 * (100 - 5 * sc_data[SC_CONCENTRATION].val1) / 100;
}
@@ -900,8 +900,8 @@ int battle_get_def2 (struct block_list *bl)
}
/*==========================================
- * ‘ÎŰ‚ĚMDef2‚đ•Ô‚ˇ(”Ä—p)
- * –ß‚č‚͐Ž”‚Ĺ0ˆČă
+ * 対象のMDef2を返す(汎用)
+ * 戻りは整数で0以上
*------------------------------------------
*/
int battle_get_mdef2 (struct block_list *bl)
@@ -929,9 +929,9 @@ int battle_get_mdef2 (struct block_list *bl)
}
/*==========================================
- * ‘ÎŰ‚ĚSpeed(ˆÚ“Ž‘Ź“x)‚đ•Ô‚ˇ(”Ä—p)
- * –ß‚č‚͐Ž”‚Ĺ1ˆČă
- * Speed‚͏Ź‚ł‚˘‚Ů‚¤‚ވړŽ‘Ź“x‚Ş‘Ź‚˘
+ * 対象のSpeed(移動速度)を返す(汎用)
+ * 戻りは整数で1以上
+ * Speedは小さいほうが移動速度が速い
*------------------------------------------
*/
int battle_get_speed (struct block_list *bl)
@@ -948,35 +948,35 @@ int battle_get_speed (struct block_list *bl)
if (sc_data)
{
- //‘Ź“x‘‰ÁŽž‚Í25%Œ¸ŽZ
+ //速度増加時は25%減算
if (sc_data[SC_INCREASEAGI].timer != -1
&& sc_data[SC_DONTFORGETME].timer == -1)
speed -= speed * 25 / 100;
- //‘Ź“xŒ¸­Žž‚Í25%‰ÁŽZ
+ //速度減少時は25%加算
if (sc_data[SC_DECREASEAGI].timer != -1)
speed = speed * 125 / 100;
- //ƒNƒ@ƒOƒ}ƒCƒAŽž‚Í50%‰ÁŽZ
+ //クァグマイア時は50%加算
if (sc_data[SC_QUAGMIRE].timer != -1)
speed = speed * 3 / 2;
- //Ž„‚đ–Y‚ę‚Č‚˘‚ŁcŽž‚͉ÁŽZ
+ //私を忘れないで…時は加算
if (sc_data[SC_DONTFORGETME].timer != -1)
speed =
speed * (100 + sc_data[SC_DONTFORGETME].val1 * 2 +
sc_data[SC_DONTFORGETME].val2 +
(sc_data[SC_DONTFORGETME].val3 & 0xffff)) / 100;
- //‹ŕ„Žž‚Í25%‰ÁŽZ
+ //金剛時は25%加算
if (sc_data[SC_STEELBODY].timer != -1)
speed = speed * 125 / 100;
- //ƒfƒBƒtƒFƒ“ƒ_[Žž‚͉ÁŽZ
+ //ディフェンダー時は加算
if (sc_data[SC_DEFENDER].timer != -1)
speed = (speed * (155 - sc_data[SC_DEFENDER].val1 * 5)) / 100;
- //—x‚čó‘Ô‚Í4”{’x‚˘
+ //踊り状態は4倍遅い
if (sc_data[SC_DANCING].timer != -1)
speed *= 4;
- //Žô‚˘Žž‚Í450‰ÁŽZ
+ //呪い時は450加算
if (sc_data[SC_CURSE].timer != -1)
speed = speed + 450;
- //ƒEƒBƒ“ƒhƒEƒH[ƒNŽž‚ÍLv*2%Œ¸ŽZ
+ //ウィンドウォーク時はLv*2%減算
if (sc_data[SC_WINDWALK].timer != -1)
speed -= (speed * (sc_data[SC_WINDWALK].val1 * 2)) / 100;
}
@@ -989,8 +989,8 @@ int battle_get_speed (struct block_list *bl)
}
/*==========================================
- * ‘ÎŰ‚ĚaDelay(UŒ‚ŽžƒfƒBƒŒƒC)‚đ•Ô‚ˇ(”Ä—p)
- * aDelay‚͏Ź‚ł‚˘‚Ů‚¤‚ލUŒ‚‘Ź“x‚Ş‘Ź‚˘
+ * 対象のaDelay(攻撃時ディレイ)を返す(汎用)
+ * aDelayは小さいほうが攻撃速度が速い
*------------------------------------------
*/
int battle_get_adelay (struct block_list *bl)
@@ -1007,28 +1007,28 @@ int battle_get_adelay (struct block_list *bl)
if (sc_data)
{
- //ƒc[ƒnƒ“ƒhƒNƒCƒbƒPƒ“Žg—pŽž‚ĹƒNƒ@ƒOƒ}ƒCƒA‚Ĺ‚ŕŽ„‚đ–Y‚ę‚Č‚˘‚Łc‚Ĺ‚ŕ‚Č‚˘Žž‚Í3Š„Œ¸ŽZ
+ //ツーハンドクイッケン使用時でクァグマイアでも私を忘れないで…でもない時は3割減算
if (sc_data[SC_TWOHANDQUICKEN].timer != -1 && sc_data[SC_QUAGMIRE].timer == -1 && sc_data[SC_DONTFORGETME].timer == -1) // 2HQ
aspd_rate -= 30;
- //ƒAƒhƒŒƒiƒŠƒ“ƒ‰ƒbƒVƒ…Žg—pŽž‚Ĺƒc[ƒnƒ“ƒhƒNƒCƒbƒPƒ“‚Ĺ‚ŕƒNƒ@ƒOƒ}ƒCƒA‚Ĺ‚ŕŽ„‚đ–Y‚ę‚Č‚˘‚Łc‚Ĺ‚ŕ‚Č‚˘Žž‚Í
+ //アドレナリンラッシュ使用時でツーハンドクイッケンでもクァグマイアでも私を忘れないで…でもない時は
if (sc_data[SC_ADRENALINE].timer != -1
&& sc_data[SC_TWOHANDQUICKEN].timer == -1
&& sc_data[SC_QUAGMIRE].timer == -1
&& sc_data[SC_DONTFORGETME].timer == -1)
- { // ƒAƒhƒŒƒiƒŠƒ“ƒ‰ƒbƒVƒ…
- //Žg—pŽŇ‚Ćƒp[ƒeƒBƒƒ“ƒo[‚ĹŠiˇ‚ޏo‚éÝ’č‚Ĺ‚Č‚Ż‚ę‚Î3Š„Œ¸ŽZ
+ { // アドレナリンラッシュ
+ //使用者とパーティメンバーで格差が出る設定でなければ3割減算
if (sc_data[SC_ADRENALINE].val2
|| !battle_config.party_skill_penaly)
aspd_rate -= 30;
- //‚ť‚¤‚Ĺ‚Č‚Ż‚ę‚Î2.5Š„Œ¸ŽZ
+ //そうでなければ2.5割減算
else
aspd_rate -= 25;
}
- //ƒXƒsƒAƒNƒBƒbƒPƒ“Žž‚ÍŒ¸ŽZ
- if (sc_data[SC_SPEARSQUICKEN].timer != -1 && sc_data[SC_ADRENALINE].timer == -1 && sc_data[SC_TWOHANDQUICKEN].timer == -1 && sc_data[SC_QUAGMIRE].timer == -1 && sc_data[SC_DONTFORGETME].timer == -1) // ƒXƒsƒAƒNƒBƒbƒPƒ“
+ //スピアクィッケン時は減算
+ if (sc_data[SC_SPEARSQUICKEN].timer != -1 && sc_data[SC_ADRENALINE].timer == -1 && sc_data[SC_TWOHANDQUICKEN].timer == -1 && sc_data[SC_QUAGMIRE].timer == -1 && sc_data[SC_DONTFORGETME].timer == -1) // スピアクィッケン
aspd_rate -= sc_data[SC_SPEARSQUICKEN].val2;
- //—[“ú‚ĚƒAƒTƒVƒ“ƒNƒƒXŽž‚ÍŒ¸ŽZ
- if (sc_data[SC_ASSNCROS].timer != -1 && // —[—z‚ĚƒAƒTƒVƒ“ƒNƒƒX
+ //夕日のアサシンクロス時は減算
+ if (sc_data[SC_ASSNCROS].timer != -1 && // 夕陽のアサシンクロス
sc_data[SC_TWOHANDQUICKEN].timer == -1
&& sc_data[SC_ADRENALINE].timer == -1
&& sc_data[SC_SPEARSQUICKEN].timer == -1
@@ -1036,16 +1036,16 @@ int battle_get_adelay (struct block_list *bl)
aspd_rate -=
5 + sc_data[SC_ASSNCROS].val1 +
sc_data[SC_ASSNCROS].val2 + sc_data[SC_ASSNCROS].val3;
- //Ž„‚đ–Y‚ę‚Č‚˘‚ŁcŽž‚͉ÁŽZ
- if (sc_data[SC_DONTFORGETME].timer != -1) // Ž„‚đ–Y‚ę‚Č‚˘‚Ĺ
+ //私を忘れないで…時は加算
+ if (sc_data[SC_DONTFORGETME].timer != -1) // 私を忘れないで
aspd_rate +=
sc_data[SC_DONTFORGETME].val1 * 3 +
sc_data[SC_DONTFORGETME].val2 +
(sc_data[SC_DONTFORGETME].val3 >> 16);
- //‹ŕ„Žž25%‰ÁŽZ
- if (sc_data[SC_STEELBODY].timer != -1) // ‹ŕ„
+ //金剛時25%加算
+ if (sc_data[SC_STEELBODY].timer != -1) // 金剛
aspd_rate += 25;
- //‘‘Źƒ|[ƒVƒ‡ƒ“Žg—pŽž‚ÍŒ¸ŽZ
+ //増速ポーション使用時は減算
if (sc_data[i = SC_SPEEDPOTION2].timer != -1
|| sc_data[i = SC_SPEEDPOTION1].timer != -1
|| sc_data[i = SC_SPEEDPOTION0].timer != -1)
@@ -1053,7 +1053,7 @@ int battle_get_adelay (struct block_list *bl)
// Fate's `haste' spell works the same as the above
if (sc_data[SC_HASTE].timer != -1)
aspd_rate -= sc_data[SC_HASTE].val1;
- //ƒfƒBƒtƒFƒ“ƒ_[Žž‚͉ÁŽZ
+ //ディフェンダー時は加算
if (sc_data[SC_DEFENDER].timer != -1)
adelay += (1100 - sc_data[SC_DEFENDER].val1 * 100);
}
@@ -1087,16 +1087,16 @@ int battle_get_amotion (struct block_list *bl)
&& sc_data[SC_TWOHANDQUICKEN].timer == -1
&& sc_data[SC_QUAGMIRE].timer == -1
&& sc_data[SC_DONTFORGETME].timer == -1)
- { // ƒAƒhƒŒƒiƒŠƒ“ƒ‰ƒbƒVƒ…
+ { // アドレナリンラッシュ
if (sc_data[SC_ADRENALINE].val2
|| !battle_config.party_skill_penaly)
aspd_rate -= 30;
else
aspd_rate -= 25;
}
- if (sc_data[SC_SPEARSQUICKEN].timer != -1 && sc_data[SC_ADRENALINE].timer == -1 && sc_data[SC_TWOHANDQUICKEN].timer == -1 && sc_data[SC_QUAGMIRE].timer == -1 && sc_data[SC_DONTFORGETME].timer == -1) // ƒXƒsƒAƒNƒBƒbƒPƒ“
+ if (sc_data[SC_SPEARSQUICKEN].timer != -1 && sc_data[SC_ADRENALINE].timer == -1 && sc_data[SC_TWOHANDQUICKEN].timer == -1 && sc_data[SC_QUAGMIRE].timer == -1 && sc_data[SC_DONTFORGETME].timer == -1) // スピアクィッケン
aspd_rate -= sc_data[SC_SPEARSQUICKEN].val2;
- if (sc_data[SC_ASSNCROS].timer != -1 && // —[—z‚ĚƒAƒTƒVƒ“ƒNƒƒX
+ if (sc_data[SC_ASSNCROS].timer != -1 && // 夕陽のアサシンクロス
sc_data[SC_TWOHANDQUICKEN].timer == -1
&& sc_data[SC_ADRENALINE].timer == -1
&& sc_data[SC_SPEARSQUICKEN].timer == -1
@@ -1104,12 +1104,12 @@ int battle_get_amotion (struct block_list *bl)
aspd_rate -=
5 + sc_data[SC_ASSNCROS].val1 +
sc_data[SC_ASSNCROS].val2 + sc_data[SC_ASSNCROS].val3;
- if (sc_data[SC_DONTFORGETME].timer != -1) // Ž„‚đ–Y‚ę‚Č‚˘‚Ĺ
+ if (sc_data[SC_DONTFORGETME].timer != -1) // 私を忘れないで
aspd_rate +=
sc_data[SC_DONTFORGETME].val1 * 3 +
sc_data[SC_DONTFORGETME].val2 +
(sc_data[SC_DONTFORGETME].val3 >> 16);
- if (sc_data[SC_STEELBODY].timer != -1) // ‹ŕ„
+ if (sc_data[SC_STEELBODY].timer != -1) // 金剛
aspd_rate += 25;
if (sc_data[i = SC_SPEEDPOTION2].timer != -1
|| sc_data[i = SC_SPEEDPOTION1].timer != -1
@@ -1167,16 +1167,16 @@ int battle_get_element (struct block_list *bl)
nullpo_retr (ret, bl);
sc_data = battle_get_sc_data (bl);
- if (bl->type == BL_MOB && (struct mob_data *) bl) // 10‚ĚˆĘLv*2A‚P‚ĚˆĘ‘ŽŤ
+ if (bl->type == BL_MOB && (struct mob_data *) bl) // 10の位=Lv*2、1の位=属性
ret = ((struct mob_data *) bl)->def_ele;
else if (bl->type == BL_PC && (struct map_session_data *) bl)
- ret = 20 + ((struct map_session_data *) bl)->def_ele; // –hŒä‘ŽŤLv1
+ ret = 20 + ((struct map_session_data *) bl)->def_ele; // 防御属性Lv1
if (sc_data)
{
- if (sc_data[SC_BENEDICTIO].timer != -1) // š‘̍~•Ÿ
+ if (sc_data[SC_BENEDICTIO].timer != -1) // 聖体降福
ret = 26;
- if (sc_data[SC_FREEZE].timer != -1) // “€Œ‹
+ if (sc_data[SC_FREEZE].timer != -1) // 凍結
ret = 21;
if (sc_data[SC_STONE].timer != -1 && sc_data[SC_STONE].val2 == 0)
ret = 22;
@@ -1198,17 +1198,17 @@ int battle_get_attack_element (struct block_list *bl)
if (sc_data)
{
- if (sc_data[SC_FROSTWEAPON].timer != -1) // ƒtƒƒXƒgƒEƒFƒ|ƒ“
+ if (sc_data[SC_FROSTWEAPON].timer != -1) // フロストウェポン
ret = 1;
- if (sc_data[SC_SEISMICWEAPON].timer != -1) // ƒTƒCƒYƒ~ƒbƒNƒEƒFƒ|ƒ“
+ if (sc_data[SC_SEISMICWEAPON].timer != -1) // サイズミックウェポン
ret = 2;
- if (sc_data[SC_FLAMELAUNCHER].timer != -1) // ƒtƒŒ[ƒ€ƒ‰ƒ“ƒ`ƒƒ[
+ if (sc_data[SC_FLAMELAUNCHER].timer != -1) // フレームランチャー
ret = 3;
- if (sc_data[SC_LIGHTNINGLOADER].timer != -1) // ƒ‰ƒCƒgƒjƒ“ƒOƒ[ƒ_[
+ if (sc_data[SC_LIGHTNINGLOADER].timer != -1) // ライトニングローダー
ret = 4;
- if (sc_data[SC_ENCPOISON].timer != -1) // ƒGƒ“ƒ`ƒƒƒ“ƒgƒ|ƒCƒYƒ“
+ if (sc_data[SC_ENCPOISON].timer != -1) // エンチャントポイズン
ret = 5;
- if (sc_data[SC_ASPERSIO].timer != -1) // ƒAƒXƒyƒ‹ƒVƒI
+ if (sc_data[SC_ASPERSIO].timer != -1) // アスペルシオ
ret = 6;
}
@@ -1226,17 +1226,17 @@ int battle_get_attack_element2 (struct block_list *bl)
if (sc_data)
{
- if (sc_data[SC_FROSTWEAPON].timer != -1) // ƒtƒƒXƒgƒEƒFƒ|ƒ“
+ if (sc_data[SC_FROSTWEAPON].timer != -1) // フロストウェポン
ret = 1;
- if (sc_data[SC_SEISMICWEAPON].timer != -1) // ƒTƒCƒYƒ~ƒbƒNƒEƒFƒ|ƒ“
+ if (sc_data[SC_SEISMICWEAPON].timer != -1) // サイズミックウェポン
ret = 2;
- if (sc_data[SC_FLAMELAUNCHER].timer != -1) // ƒtƒŒ[ƒ€ƒ‰ƒ“ƒ`ƒƒ[
+ if (sc_data[SC_FLAMELAUNCHER].timer != -1) // フレームランチャー
ret = 3;
- if (sc_data[SC_LIGHTNINGLOADER].timer != -1) // ƒ‰ƒCƒgƒjƒ“ƒOƒ[ƒ_[
+ if (sc_data[SC_LIGHTNINGLOADER].timer != -1) // ライトニングローダー
ret = 4;
- if (sc_data[SC_ENCPOISON].timer != -1) // ƒGƒ“ƒ`ƒƒƒ“ƒgƒ|ƒCƒYƒ“
+ if (sc_data[SC_ENCPOISON].timer != -1) // エンチャントポイズン
ret = 5;
- if (sc_data[SC_ASPERSIO].timer != -1) // ƒAƒXƒyƒ‹ƒVƒI
+ if (sc_data[SC_ASPERSIO].timer != -1) // アスペルシオ
ret = 6;
}
return ret;
@@ -1303,7 +1303,7 @@ int battle_get_mode (struct block_list *bl)
if (bl->type == BL_MOB && (struct mob_data *) bl)
return mob_db[((struct mob_data *) bl)->class].mode;
else
- return 0x01; // ‚Ć‚č‚ ‚Ś‚¸“Ž‚­‚Ć‚˘‚¤‚ą‚Ć‚Ĺ1
+ return 0x01; // とりあえず動くということで1
}
int battle_get_mexp (struct block_list *bl)
@@ -1345,7 +1345,7 @@ int battle_get_stat (int stat_id /* SP_VIT or similar */ ,
}
}
-// StatusChangeŒn‚̏Š“ž
+// StatusChange系の所得
struct status_change *battle_get_sc_data (struct block_list *bl)
{
nullpo_retr (NULL, bl);
@@ -1416,7 +1416,7 @@ short *battle_get_option (struct block_list *bl)
//-------------------------------------------------------------------
-// ƒ_ƒ[ƒW‚Ě’x‰„
+// ダメージの遅延
struct battle_delay_damage_
{
struct block_list *src, *target;
@@ -1451,7 +1451,7 @@ int battle_delay_damage (unsigned int tick, struct block_list *src,
return 0;
}
-// ŽŔŰ‚ÉHP‚đ‘€ě
+// 実際にHPを操作
int battle_damage (struct block_list *bl, struct block_list *target,
int damage, int flag)
{
@@ -1460,7 +1460,7 @@ int battle_damage (struct block_list *bl, struct block_list *target,
short *sc_count;
int i;
- nullpo_retr (0, target); //bl‚ÍNULL‚ĹŒÄ‚Î‚ę‚é‚ą‚Ć‚Ş‚ ‚é‚Ě‚Ĺ‘ź‚Ĺƒ`ƒFƒbƒN
+ nullpo_retr (0, target); //blはNULLで呼ばれることがあるので他でチェック
if (damage == 0)
return 0;
@@ -1483,7 +1483,7 @@ int battle_damage (struct block_list *bl, struct block_list *target,
if (!flag && (sc_count = battle_get_sc_count (target)) != NULL
&& *sc_count > 0)
{
- // “€Œ‹AÎ‰ťA‡–°‚đÁ‹Ž
+ // 凍結、石化、睡眠を消去
if (sc_data[SC_FREEZE].timer != -1)
skill_status_change_end (target, SC_FREEZE, -1);
if (sc_data[SC_STONE].timer != -1 && sc_data[SC_STONE].val2 == 0)
@@ -1495,7 +1495,7 @@ int battle_damage (struct block_list *bl, struct block_list *target,
if (target->type == BL_MOB)
{ // MOB
struct mob_data *md = (struct mob_data *) target;
- if (md && md->skilltimer != -1 && md->state.skillcastcancel) // ‰rĽ–WŠQ
+ if (md && md->skilltimer != -1 && md->state.skillcastcancel) // 詠唱妨害
skill_castcancel (target, 0);
return mob_damage (bl, md, damage, 0);
}
@@ -1505,7 +1505,7 @@ int battle_damage (struct block_list *bl, struct block_list *target,
struct map_session_data *tsd = (struct map_session_data *) target;
if (tsd && tsd->sc_data && tsd->sc_data[SC_DEVOTION].val1)
- { // ƒfƒBƒ{[ƒVƒ‡ƒ“‚đ‚Š‚Ż‚ç‚ę‚Ä‚˘‚é
+ { // ディボーションをかけられている
struct map_session_data *md =
map_id2sd (tsd->sc_data[SC_DEVOTION].val1);
if (md && skill_devotion3 (&md->bl, target->id))
@@ -1525,8 +1525,8 @@ int battle_damage (struct block_list *bl, struct block_list *target,
}
if (tsd && tsd->skilltimer != -1)
- { // ‰rĽ–WŠQ
- // ƒtƒFƒ“ƒJ[ƒh‚â–WŠQ‚ł‚ę‚Č‚˘ƒXƒLƒ‹‚Š‚ĚŒŸ¸
+ { // 詠唱妨害
+ // フェンカードや妨害されないスキルかの検査
if ((!tsd->special_state.no_castcancel || map[bl->m].flag.gvg)
&& tsd->state.skillcastcancel
&& !tsd->special_state.no_castcancel2)
@@ -1545,7 +1545,7 @@ int battle_damage (struct block_list *bl, struct block_list *target,
int battle_heal (struct block_list *bl, struct block_list *target, int hp,
int sp, int flag)
{
- nullpo_retr (0, target); //bl‚ÍNULL‚ĹŒÄ‚Î‚ę‚é‚ą‚Ć‚Ş‚ ‚é‚Ě‚Ĺ‘ź‚Ĺƒ`ƒFƒbƒN
+ nullpo_retr (0, target); //blはNULLで呼ばれることがあるので他でチェック
if (target->type == BL_PC
&& pc_isdead ((struct map_session_data *) target))
@@ -1563,7 +1563,7 @@ int battle_heal (struct block_list *bl, struct block_list *target, int hp,
return 0;
}
-// UŒ‚’âŽ~
+// 攻撃停止
int battle_stopattack (struct block_list *bl)
{
nullpo_retr (0, bl);
@@ -1574,7 +1574,7 @@ int battle_stopattack (struct block_list *bl)
return 0;
}
-// ˆÚ“Ž’âŽ~
+// 移動停止
int battle_stopwalking (struct block_list *bl, int type)
{
nullpo_retr (0, bl);
@@ -1586,7 +1586,7 @@ int battle_stopwalking (struct block_list *bl, int type)
}
/*==========================================
- * ƒ_ƒ[ƒW‚Ě‘ŽŤCł
+ * ダメージの属性修正
*------------------------------------------
*/
int battle_attr_fix (int damage, int atk_elem, int def_elem)
@@ -1595,7 +1595,7 @@ int battle_attr_fix (int damage, int atk_elem, int def_elem)
if (atk_elem < 0 || atk_elem > 9 || def_type < 0 || def_type > 9 ||
def_lv < 1 || def_lv > 4)
- { // ‘Ž Ť’l‚Ş‚¨‚Š‚ľ‚˘‚Ě‚Ĺ‚Ć‚č‚ ‚Ś‚¸‚ť‚Ě‚Ü‚Ü•Ô‚ˇ
+ { // 属 性値がおかしいのでとりあえずそのまま返す
if (battle_config.error_log)
printf
("battle_attr_fix: unknown attr type: atk=%d def_type=%d def_lv=%d\n",
@@ -1607,7 +1607,7 @@ int battle_attr_fix (int damage, int atk_elem, int def_elem)
}
/*==========================================
- * ƒ_ƒ[ƒWĹIŒvŽZ
+ * ダメージ最終計算
*------------------------------------------
*/
int battle_calc_damage (struct block_list *src, struct block_list *bl,
@@ -1638,37 +1638,37 @@ int battle_calc_damage (struct block_list *src, struct block_list *bl,
&& flag & BF_WEAPON && flag & BF_SHORT
&& skill_num != NPC_GUIDEDATTACK)
{
- // ƒZ[ƒtƒeƒBƒEƒH[ƒ‹
+ // セーフティウォール
struct skill_unit *unit =
(struct skill_unit *) sc_data[SC_SAFETYWALL].val2;
if (unit && unit->alive && (--unit->group->val2) <= 0)
skill_delunit (unit);
- skill_unit_move (bl, gettick (), 1); // d‚ËŠ|‚Żƒ`ƒFƒbƒN
+ skill_unit_move (bl, gettick (), 1); // 重ね掛けチェック
damage = 0;
}
if (sc_data[SC_PNEUMA].timer != -1 && damage > 0 && flag & BF_WEAPON
&& flag & BF_LONG && skill_num != NPC_GUIDEDATTACK)
{
- // ƒjƒ…[ƒ}
+ // ニューマ
damage = 0;
}
if (sc_data[SC_ROKISWEIL].timer != -1 && damage > 0 &&
flag & BF_MAGIC)
{
- // ƒjƒ…[ƒ}
+ // ニューマ
damage = 0;
}
if (sc_data[SC_AETERNA].timer != -1 && damage > 0)
- { // ƒŒƒbƒNƒXƒG[ƒeƒ‹ƒi
+ { // レックスエーテルナ
damage <<= 1;
skill_status_change_end (bl, SC_AETERNA, -1);
}
- //‘ŽŤę‚Ěƒ_ƒ[ƒW‘‰Á
+ //属性場のダメージ増加
if (sc_data[SC_VOLCANO].timer != -1)
- { // ƒ{ƒ‹ƒP[ƒm
+ { // ボルケーノ
if (flag & BF_SKILL && skill_get_pl (skill_num) == 3)
damage += damage * sc_data[SC_VOLCANO].val4 / 100;
else if (!(flag & BF_SKILL) && (battle_get_attack_element (bl) == 3))
@@ -1676,7 +1676,7 @@ int battle_calc_damage (struct block_list *src, struct block_list *bl,
}
if (sc_data[SC_VIOLENTGALE].timer != -1)
- { // ƒoƒCƒIƒŒƒ“ƒgƒQƒCƒ‹
+ { // バイオレントゲイル
if (flag & BF_SKILL && skill_get_pl (skill_num) == 4)
damage += damage * sc_data[SC_VIOLENTGALE].val4 / 100;
else if (!(flag & BF_SKILL) && (battle_get_attack_element (bl) == 4))
@@ -1684,7 +1684,7 @@ int battle_calc_damage (struct block_list *src, struct block_list *bl,
}
if (sc_data[SC_DELUGE].timer != -1)
- { // ƒfƒŠƒ…[ƒW
+ { // デリュージ
if (flag & BF_SKILL && skill_get_pl (skill_num) == 1)
damage += damage * sc_data[SC_DELUGE].val4 / 100;
else if (!(flag & BF_SKILL) && (battle_get_attack_element (bl) == 1))
@@ -1693,7 +1693,7 @@ int battle_calc_damage (struct block_list *src, struct block_list *bl,
if (sc_data[SC_ENERGYCOAT].timer != -1 && damage > 0
&& flag & BF_WEAPON)
- { // ƒGƒiƒW[ƒR[ƒg
+ { // エナジーコート
if (sd)
{
if (sd->status.sp > 0)
@@ -1713,7 +1713,7 @@ int battle_calc_damage (struct block_list *src, struct block_list *bl,
}
if (sc_data[SC_KYRIE].timer != -1 && damage > 0)
- { // ƒLƒŠƒGƒGƒŒƒCƒ\ƒ“
+ { // キリエエレイソン
sc = &sc_data[SC_KYRIE];
sc->val2 -= damage;
if (flag & BF_WEAPON)
@@ -1730,13 +1730,13 @@ int battle_calc_damage (struct block_list *src, struct block_list *bl,
if (sc_data[SC_BASILICA].timer != -1 && damage > 0)
{
- // ƒjƒ…[ƒ}
+ // ニューマ
damage = 0;
}
if (sc_data[SC_LANDPROTECTOR].timer != -1 && damage > 0
&& flag & BF_MAGIC)
{
- // ƒjƒ…[ƒ}
+ // ニューマ
damage = 0;
}
@@ -1766,7 +1766,7 @@ int battle_calc_damage (struct block_list *src, struct block_list *bl,
sc_data[SC_PARRYING].val1, 1);
}
}
- // ƒŠƒWƒFƒNƒgƒ\[ƒh
+ // リジェクトソード
if (sc_data[SC_REJECTSWORD].timer != -1 && damage > 0
&& flag & BF_WEAPON
&&
@@ -1776,11 +1776,11 @@ int battle_calc_damage (struct block_list *src, struct block_list *bl,
|| src->type == BL_MOB))
{
if (MRAND (100) < (10 + 5 * sc_data[SC_REJECTSWORD].val1))
- { //”˝ŽËŠm—Ś‚Í10+5*Lv
+ { //反射確率は10+5*Lv
damage = damage * 50 / 100;
battle_damage (bl, src, damage, 0);
- //ƒ_ƒ[ƒW‚đ—^‚Ś‚˝‚Ě‚Í—Ç‚˘‚ń‚ž‚ށA‚ą‚ą‚Š‚ç‚Ç‚¤‚ľ‚Ä•\ŽŚ‚ˇ‚é‚ń‚ž‚Š‚í‚Š‚ń‚Ë‚Ľ
- //ƒGƒtƒFƒNƒg‚ŕ‚ą‚ę‚Ĺ‚˘‚˘‚Ě‚Š‚í‚Š‚ń‚Ë‚Ľ
+ //ダメージを与えたのは良いんだが、ここからどうして表示するんだかわかんねぇ
+ //エフェクトもこれでいいのかわかんねぇ
clif_skill_nodamage (bl, bl, ST_REJECTSWORD,
sc_data[SC_REJECTSWORD].val1, 1);
if ((--sc_data[SC_REJECTSWORD].val2) <= 0)
@@ -1805,11 +1805,11 @@ int battle_calc_damage (struct block_list *src, struct block_list *bl,
if (gc && agit_flag == 0 && class != 1288) // guardians cannot be damaged during non-woe [Valaris]
damage = 0; // end woe check [Valaris]
if (g == NULL)
- damage = 0; //ƒMƒ‹ƒh–˘‰Á“ü‚Č‚çƒ_ƒ[ƒW–ł‚ľ
+ damage = 0; //ギルド未加入ならダメージ無し
else if ((gc != NULL) && guild_isallied (g, gc))
- damage = 0; //ŽŠč—ĚƒMƒ‹ƒh‚ĚƒGƒ“ƒy‚Č‚çƒ_ƒ[ƒW–ł‚ľ
+ damage = 0; //自占領ギルドのエンペならダメージ無し
else if (g && guild_checkskill (g, GD_APPROVAL) <= 0)
- damage = 0; //ł‹KƒMƒ‹ƒhł”F‚Ş‚Č‚˘‚Ćƒ_ƒ[ƒW–ł‚ľ
+ damage = 0; //正規ギルド承認がないとダメージ無し
else if (battle_config.guild_max_castles != 0
&& guild_checkcastles (g) >=
battle_config.guild_max_castles)
@@ -1847,14 +1847,14 @@ int battle_calc_damage (struct block_list *src, struct block_list *bl,
damage = 3;
}
- if (md != NULL && md->hp > 0 && damage > 0) // ”˝Œ‚‚Č‚Ç‚ĚMOBƒXƒLƒ‹”ť’č
+ if (md != NULL && md->hp > 0 && damage > 0) // 反撃などのMOBスキル判定
mobskill_event (md, flag);
return damage;
}
/*==========================================
- * C—űƒ_ƒ[ƒW
+ * 修練ダメージ
*------------------------------------------
*/
int battle_addmastery (struct map_session_data *sd, struct block_list *target,
@@ -1867,13 +1867,13 @@ int battle_addmastery (struct map_session_data *sd, struct block_list *target,
nullpo_retr (0, sd);
- // ƒf[ƒ‚ƒ“ƒxƒCƒ“(+3 ` +30) vs •sŽ€ or ˆŤ–‚ (Ž€l‚ÍŠÜ‚ß‚Č‚˘H)
+ // デーモンベイン(+3 〜 +30) vs 不死 or 悪魔 (死人は含めない?)
if ((skill = pc_checkskill (sd, AL_DEMONBANE)) > 0
&& (battle_check_undead (race, battle_get_elem_type (target))
|| race == 6))
damage += (skill * 3);
- // ƒr[ƒXƒgƒxƒCƒ“(+4 ` +40) vs “Ž•¨ or Š’Ž
+ // ビーストベイン(+4 〜 +40) vs 動物 or 昆虫
if ((skill = pc_checkskill (sd, HT_BEASTBANE)) > 0
&& (race == 2 || race == 4))
damage += (skill * 4);
@@ -1884,10 +1884,10 @@ int battle_addmastery (struct map_session_data *sd, struct block_list *target,
weapon = sd->weapontype2;
switch (weapon)
{
- case 0x01: // ’ZŒ• (Updated By AppleGirl)
+ case 0x01: // 短剣 (Updated By AppleGirl)
case 0x02: // 1HS
{
- // Œ•C—ű(+4 ` +40) •ĐŽčŒ• ’ZŒ•ŠÜ‚Ţ
+ // 剣修練(+4 〜 +40) 片手剣 短剣含む
if ((skill = pc_checkskill (sd, SM_SWORD)) > 0)
{
damage += (skill * 4);
@@ -1896,7 +1896,7 @@ int battle_addmastery (struct map_session_data *sd, struct block_list *target,
}
case 0x03: // 2HS
{
- // —źŽčŒ•C—ű(+4 ` +40) —źŽčŒ•
+ // 両手剣修練(+4 〜 +40) 両手剣
if ((skill = pc_checkskill (sd, SM_TWOHAND)) > 0)
{
damage += (skill * 4);
@@ -1905,29 +1905,29 @@ int battle_addmastery (struct map_session_data *sd, struct block_list *target,
}
case 0x04: // 1HL
{
- // ‘„C—ű(+4 ` +40,+5 ` +50) ‘„
+ // 槍修練(+4 〜 +40,+5 〜 +50) 槍
if ((skill = pc_checkskill (sd, KN_SPEARMASTERY)) > 0)
{
if (!pc_isriding (sd))
- damage += (skill * 4); // ƒyƒR‚ɏć‚Á‚Ä‚Č‚˘
+ damage += (skill * 4); // ペコに乗ってない
else
- damage += (skill * 5); // ƒyƒR‚ɏć‚Á‚Ä‚é
+ damage += (skill * 5); // ペコに乗ってる
}
break;
}
case 0x05: // 2HL
{
- // ‘„C—ű(+4 ` +40,+5 ` +50) ‘„
+ // 槍修練(+4 〜 +40,+5 〜 +50) 槍
if ((skill = pc_checkskill (sd, KN_SPEARMASTERY)) > 0)
{
if (!pc_isriding (sd))
- damage += (skill * 4); // ƒyƒR‚ɏć‚Á‚Ä‚Č‚˘
+ damage += (skill * 4); // ペコに乗ってない
else
- damage += (skill * 5); // ƒyƒR‚ɏć‚Á‚Ä‚é
+ damage += (skill * 5); // ペコに乗ってる
}
break;
}
- case 0x06: // •ĐŽč•€
+ case 0x06: // 片手斧
{
if ((skill = pc_checkskill (sd, AM_AXEMASTERY)) > 0)
{
@@ -1943,25 +1943,25 @@ int battle_addmastery (struct map_session_data *sd, struct block_list *target,
}
break;
}
- case 0x08: // ƒƒCƒX
+ case 0x08: // メイス
{
- // ƒƒCƒXC—ű(+3 ` +30) ƒƒCƒX
+ // メイス修練(+3 〜 +30) メイス
if ((skill = pc_checkskill (sd, PR_MACEMASTERY)) > 0)
{
damage += (skill * 3);
}
break;
}
- case 0x09: // ‚Č‚ľ?
+ case 0x09: // なし?
break;
- case 0x0a: // ń
+ case 0x0a: // 杖
break;
- case 0x0b: // ‹|
+ case 0x0b: // 弓
break;
- case 0x00: // ‘fŽč
+ case 0x00: // 素手
case 0x0c: // Knuckles
{
- // “SŒ(+3 ` +30) ‘fŽč,ƒiƒbƒNƒ‹
+ // 鉄拳(+3 〜 +30) 素手,ナックル
if ((skill = pc_checkskill (sd, MO_IRONHAND)) > 0)
{
damage += (skill * 3);
@@ -1970,7 +1970,7 @@ int battle_addmastery (struct map_session_data *sd, struct block_list *target,
}
case 0x0d: // Musical Instrument
{
- // ŠyŠí‚Ě—űK(+3 ` +30) ŠyŠí
+ // 楽器の練習(+3 〜 +30) 楽器
if ((skill = pc_checkskill (sd, BA_MUSICALLESSON)) > 0)
{
damage += (skill * 3);
@@ -1979,7 +1979,7 @@ int battle_addmastery (struct map_session_data *sd, struct block_list *target,
}
case 0x0e: // Dance Mastery
{
- // Dance Lesson Skill Effect(+3 damage for every lvl = +30) •Ú
+ // Dance Lesson Skill Effect(+3 damage for every lvl = +30) 鞭
if ((skill = pc_checkskill (sd, DC_DANCINGLESSON)) > 0)
{
damage += (skill * 3);
@@ -1997,10 +1997,10 @@ int battle_addmastery (struct map_session_data *sd, struct block_list *target,
}
case 0x10: // Katars
{
- // ƒJƒ^[ƒ‹C—ű(+3 ` +30) ƒJƒ^[ƒ‹
+ // カタール修練(+3 〜 +30) カタール
if ((skill = pc_checkskill (sd, AS_KATAR)) > 0)
{
- //ƒ\ƒjƒbƒNƒuƒ[Žž‚Í•Ęˆ—i1Œ‚‚É•t‚Ť1/8“K‰ž)
+ //ソニックブロー時は別処理(1撃に付き1/8適応)
damage += (skill * 3);
}
break;
@@ -2031,7 +2031,7 @@ static struct Damage battle_calc_mob_weapon_attack (struct block_list *src,
short *sc_count;
short *option, *opt1, *opt2;
- //return‘O‚̏ˆ—‚Ş‚ ‚é‚Ě‚Ĺî•ńo—Í•”‚Ě‚Ý•ĎX
+ //return前の処理があるので情報出力部のみ変更
if (src == NULL || target == NULL || md == NULL)
{
nullpo_info (NLP_MARK);
@@ -2047,7 +2047,7 @@ static struct Damage battle_calc_mob_weapon_attack (struct block_list *src,
opt1 = battle_get_opt1 (src);
opt2 = battle_get_opt2 (src);
- // ƒ^[ƒQƒbƒg
+ // ターゲット
if (target->type == BL_PC)
tsd = (struct map_session_data *) target;
else if (target->type == BL_MOB)
@@ -2090,9 +2090,9 @@ static struct Damage battle_calc_mob_weapon_attack (struct block_list *src,
ac_flag = 1;
}
}
- flag = BF_SHORT | BF_WEAPON | BF_NORMAL; // UŒ‚‚ĚŽí—ނ̐ݒč
+ flag = BF_SHORT | BF_WEAPON | BF_NORMAL; // 攻撃の種類の設定
- // ‰ń”đ—ŚŒvŽZA‰ń”𔝒č‚ÍŒă‚Ĺ
+ // 回避率計算、回避判定は後で
flee = battle_get_flee (target);
if (battle_config.agi_penaly_type > 0
|| battle_config.vit_penaly_type > 0)
@@ -2131,7 +2131,7 @@ static struct Damage battle_calc_mob_weapon_attack (struct block_list *src,
else
damage = 0;
if (skill_num == HW_MAGICCRASHER)
- { /* ƒ}ƒWƒbƒNƒNƒ‰ƒbƒVƒƒ[‚ÍMATK‚ʼnŁ‚é */
+ { /* マジッククラッシャーはMATKで殴る */
atkmin = battle_get_matk1 (src);
atkmax = battle_get_matk2 (src);
}
@@ -2147,7 +2147,7 @@ static struct Damage battle_calc_mob_weapon_attack (struct block_list *src,
atkmin = atkmax;
if (sc_data != NULL && sc_data[SC_MAXIMIZEPOWER].timer != -1)
- { // ƒ}ƒLƒVƒ}ƒCƒYƒpƒ[
+ { // マキシマイズパワー
atkmin = atkmax;
}
@@ -2159,7 +2159,7 @@ static struct Damage battle_calc_mob_weapon_attack (struct block_list *src,
if (cri < 1)
cri = 1;
}
- if (t_sc_data != NULL && t_sc_data[SC_SLEEP].timer != -1) // ‡–°’†‚̓NƒŠƒeƒBƒJƒ‹‚Ş”{‚É
+ if (t_sc_data != NULL && t_sc_data[SC_SLEEP].timer != -1) // 睡眠中はクリティカルが倍に
cri <<= 1;
if (ac_flag)
@@ -2176,8 +2176,8 @@ static struct Damage battle_calc_mob_weapon_attack (struct block_list *src,
if (tsd && tsd->critical_def)
cri = cri * (100 - tsd->critical_def) / 100;
- if ((skill_num == 0 || skill_num == KN_AUTOCOUNTER) && skill_lv >= 0 && battle_config.enemy_critical && (MRAND (1000)) < cri) // ”ť’čiƒXƒLƒ‹‚Ěę‡‚Í–łŽ‹j
- // “G‚Ě”ť’č
+ if ((skill_num == 0 || skill_num == KN_AUTOCOUNTER) && skill_lv >= 0 && battle_config.enemy_critical && (MRAND (1000)) < cri) // 判定(スキルの場合は無視)
+ // 敵の判定
{
damage += atkmax;
type = 0x0a;
@@ -2190,20 +2190,20 @@ static struct Damage battle_calc_mob_weapon_attack (struct block_list *src,
damage += atkmin + MRAND ((atkmax - atkmin + 1));
else
damage += atkmin;
- // ƒXƒLƒ‹Cł‚PiUŒ‚—Í”{‰ťŒnj
- // ƒI[ƒo[ƒgƒ‰ƒXƒg(+5% ` +25%),‘źUŒ‚ŒnƒXƒLƒ‹‚Ěę‡‚ą‚ą‚ŕ␳
- // ƒoƒbƒVƒ…,ƒ}ƒOƒiƒ€ƒuƒŒƒCƒN,
- // ƒ{[ƒŠƒ“ƒOƒoƒbƒVƒ…,ƒXƒsƒAƒu[ƒƒ‰ƒ“,ƒuƒ‰ƒ“ƒfƒBƒbƒVƒ…ƒXƒsƒA,ƒXƒsƒAƒXƒ^ƒbƒu,
- // ƒƒ}[ƒiƒCƒg,ƒJ[ƒgƒŒƒ{ƒŠƒ…[ƒVƒ‡ƒ“
- // ƒ_ƒuƒ‹ƒXƒgƒŒƒCƒtƒBƒ“ƒO,ƒAƒ[ƒVƒƒƒ[,ƒ`ƒƒ[ƒWƒAƒ[,
- // ƒ\ƒjƒbƒNƒuƒ[
+ // スキル修正1(攻撃力倍化系)
+ // オーバートラスト(+5% 〜 +25%),他攻撃系スキルの場合ここで補正
+ // バッシュ,マグナムブレイク,
+ // ボーリングバッシュ,スピアブーメラン,ブランディッシュスピア,スピアスタッブ,
+ // メマーナイト,カートレボリューション
+ // ダブルストレイフィング,アローシャワー,チャージアロー,
+ // ソニックブロー
if (sc_data)
- { //ó‘ÔˆŮí’†‚Ěƒ_ƒ[ƒW’ljÁ
- if (sc_data[SC_OVERTHRUST].timer != -1) // ƒI[ƒo[ƒgƒ‰ƒXƒg
+ { //状態異常中のダメージ追加
+ if (sc_data[SC_OVERTHRUST].timer != -1) // オーバートラスト
damage += damage * (5 * sc_data[SC_OVERTHRUST].val1) / 100;
- if (sc_data[SC_TRUESIGHT].timer != -1) // ƒgƒDƒ‹[ƒTƒCƒg
+ if (sc_data[SC_TRUESIGHT].timer != -1) // トゥルーサイト
damage += damage * (2 * sc_data[SC_TRUESIGHT].val1) / 100;
- if (sc_data[SC_BERSERK].timer != -1) // ƒo[ƒT[ƒN
+ if (sc_data[SC_BERSERK].timer != -1) // バーサーク
damage += damage * 50 / 100;
}
@@ -2216,44 +2216,44 @@ static struct Damage battle_calc_mob_weapon_attack (struct block_list *src,
flag = (flag & ~BF_SKILLMASK) | BF_SKILL;
switch (skill_num)
{
- case SM_BASH: // ƒoƒbƒVƒ…
+ case SM_BASH: // バッシュ
damage = damage * (100 + 30 * skill_lv) / 100;
hitrate = (hitrate * (100 + 5 * skill_lv)) / 100;
break;
- case SM_MAGNUM: // ƒ}ƒOƒiƒ€ƒuƒŒƒCƒN
+ case SM_MAGNUM: // マグナムブレイク
damage =
damage * (5 * skill_lv + (wflag) ? 65 : 115) / 100;
break;
- case MC_MAMMONITE: // ƒƒ}[ƒiƒCƒg
+ case MC_MAMMONITE: // メマーナイト
damage = damage * (100 + 50 * skill_lv) / 100;
break;
- case AC_DOUBLE: // ƒ_ƒuƒ‹ƒXƒgƒŒƒCƒtƒBƒ“ƒO
+ case AC_DOUBLE: // ダブルストレイフィング
damage = damage * (180 + 20 * skill_lv) / 100;
div_ = 2;
flag = (flag & ~BF_RANGEMASK) | BF_LONG;
break;
- case AC_SHOWER: // ƒAƒ[ƒVƒƒƒ[
+ case AC_SHOWER: // アローシャワー
damage = damage * (75 + 5 * skill_lv) / 100;
flag = (flag & ~BF_RANGEMASK) | BF_LONG;
break;
- case AC_CHARGEARROW: // ƒ`ƒƒ[ƒWƒAƒ[
+ case AC_CHARGEARROW: // チャージアロー
damage = damage * 150 / 100;
flag = (flag & ~BF_RANGEMASK) | BF_LONG;
break;
- case KN_PIERCE: // ƒsƒA[ƒX
+ case KN_PIERCE: // ピアース
damage = damage * (100 + 10 * skill_lv) / 100;
hitrate = hitrate * (100 + 5 * skill_lv) / 100;
div_ = t_size + 1;
damage *= div_;
break;
- case KN_SPEARSTAB: // ƒXƒsƒAƒXƒ^ƒu
+ case KN_SPEARSTAB: // スピアスタブ
damage = damage * (100 + 15 * skill_lv) / 100;
break;
- case KN_SPEARBOOMERANG: // ƒXƒsƒAƒu[ƒƒ‰ƒ“
+ case KN_SPEARBOOMERANG: // スピアブーメラン
damage = damage * (100 + 50 * skill_lv) / 100;
flag = (flag & ~BF_RANGEMASK) | BF_LONG;
break;
- case KN_BRANDISHSPEAR: // ƒuƒ‰ƒ“ƒfƒBƒbƒVƒ…ƒXƒsƒA
+ case KN_BRANDISHSPEAR: // ブランディッシュスピア
damage = damage * (100 + 20 * skill_lv) / 100;
if (skill_lv > 3 && wflag == 1)
damage2 += damage / 2;
@@ -2270,7 +2270,7 @@ static struct Damage battle_calc_mob_weapon_attack (struct block_list *src,
damage += damage2;
blewcount = 0;
break;
- case KN_BOWLINGBASH: // ƒ{ƒEƒŠƒ“ƒOƒoƒbƒVƒ…
+ case KN_BOWLINGBASH: // ボウリングバッシュ
damage = damage * (100 + 50 * skill_lv) / 100;
blewcount = 0;
break;
@@ -2281,25 +2281,25 @@ static struct Damage battle_calc_mob_weapon_attack (struct block_list *src,
hitrate = 1000000;
flag = (flag & ~BF_SKILLMASK) | BF_NORMAL;
break;
- case AS_SONICBLOW: // ƒ\ƒjƒbƒNƒuƒƒE
+ case AS_SONICBLOW: // ソニックブロウ
damage = damage * (300 + 50 * skill_lv) / 100;
div_ = 8;
break;
- case TF_SPRINKLESAND: // ť‚Ü‚Ť
+ case TF_SPRINKLESAND: // 砂まき
damage = damage * 125 / 100;
break;
- case MC_CARTREVOLUTION: // ƒJ[ƒgƒŒƒ{ƒŠƒ…[ƒVƒ‡ƒ“
+ case MC_CARTREVOLUTION: // カートレボリューション
damage = (damage * 150) / 100;
break;
- // ˆČ‰şMOB
- case NPC_COMBOATTACK: // ‘˝’iUŒ‚
+ // 以下MOB
+ case NPC_COMBOATTACK: // 多段攻撃
div_ = skill_get_num (skill_num, skill_lv);
damage *= div_;
break;
- case NPC_RANDOMATTACK: // ƒ‰ƒ“ƒ_ƒ€ATKUŒ‚
+ case NPC_RANDOMATTACK: // ランダムATK攻撃
damage = damage * (MPRAND (50, 150)) / 100;
break;
- // ‘ŽŤUŒ‚i“K“–j
+ // 属性攻撃(適当)
case NPC_WATERATTACK:
case NPC_GROUNDATTACK:
case NPC_FIREATTACK:
@@ -2319,46 +2319,46 @@ static struct Damage battle_calc_mob_weapon_attack (struct block_list *src,
case NPC_PIERCINGATT:
flag = (flag & ~BF_RANGEMASK) | BF_SHORT;
break;
- case RG_BACKSTAP: // ƒoƒbƒNƒXƒ^ƒu
+ case RG_BACKSTAP: // バックスタブ
damage = damage * (300 + 40 * skill_lv) / 100;
hitrate = 1000000;
break;
- case RG_RAID: // ƒTƒvƒ‰ƒCƒYƒAƒ^ƒbƒN
+ case RG_RAID: // サプライズアタック
damage = damage * (100 + 40 * skill_lv) / 100;
break;
- case RG_INTIMIDATE: // ƒCƒ“ƒeƒBƒ~ƒfƒCƒg
+ case RG_INTIMIDATE: // インティミデイト
damage = damage * (100 + 30 * skill_lv) / 100;
break;
- case CR_SHIELDCHARGE: // ƒV[ƒ‹ƒhƒ`ƒƒ[ƒW
+ case CR_SHIELDCHARGE: // シールドチャージ
damage = damage * (100 + 20 * skill_lv) / 100;
flag = (flag & ~BF_RANGEMASK) | BF_SHORT;
s_ele = 0;
break;
- case CR_SHIELDBOOMERANG: // ƒV[ƒ‹ƒhƒu[ƒƒ‰ƒ“
+ case CR_SHIELDBOOMERANG: // シールドブーメラン
damage = damage * (100 + 30 * skill_lv) / 100;
flag = (flag & ~BF_RANGEMASK) | BF_LONG;
s_ele = 0;
break;
- case CR_HOLYCROSS: // ƒz[ƒŠ[ƒNƒƒX
+ case CR_HOLYCROSS: // ホーリークロス
damage = damage * (100 + 35 * skill_lv) / 100;
div_ = 2;
break;
case CR_GRANDCROSS:
hitrate = 1000000;
break;
- case AM_DEMONSTRATION: // ƒfƒ‚ƒ“ƒXƒgƒŒ[ƒVƒ‡ƒ“
+ case AM_DEMONSTRATION: // デモンストレーション
damage = damage * (100 + 20 * skill_lv) / 100;
damage2 = damage2 * (100 + 20 * skill_lv) / 100;
break;
- case AM_ACIDTERROR: // ƒAƒVƒbƒhƒeƒ‰[
+ case AM_ACIDTERROR: // アシッドテラー
damage = damage * (100 + 40 * skill_lv) / 100;
damage2 = damage2 * (100 + 40 * skill_lv) / 100;
break;
- case MO_FINGEROFFENSIVE: //Žw’e
+ case MO_FINGEROFFENSIVE: //指弾
damage = damage * (100 + 50 * skill_lv) / 100;
div_ = 1;
break;
- case MO_INVESTIGATE: // ”­ ™¤
+ case MO_INVESTIGATE: // 発 勁
if (def1 < 1000000)
damage =
damage * (100 + 75 * skill_lv) / 100 * (def1 +
@@ -2367,61 +2367,61 @@ static struct Damage battle_calc_mob_weapon_attack (struct block_list *src,
hitrate = 1000000;
s_ele = 0;
break;
- case MO_EXTREMITYFIST: // ˆ˘C—…”e–PŒ
+ case MO_EXTREMITYFIST: // 阿修羅覇鳳拳
damage = damage * 8 + 250 + (skill_lv * 150);
hitrate = 1000000;
s_ele = 0;
break;
- case MO_CHAINCOMBO: // ˜A‘ŏś
+ case MO_CHAINCOMBO: // 連打掌
damage = damage * (150 + 50 * skill_lv) / 100;
div_ = 4;
break;
- case BA_MUSICALSTRIKE: // ƒ~ƒ…[ƒWƒJƒ‹ƒXƒgƒ‰ƒCƒN
+ case BA_MUSICALSTRIKE: // ミュージカルストライク
damage = damage * (100 + 50 * skill_lv) / 100;
flag = (flag & ~BF_RANGEMASK) | BF_LONG;
break;
- case DC_THROWARROW: // –‚ż
+ case DC_THROWARROW: // 矢撃ち
damage = damage * (100 + 50 * skill_lv) / 100;
flag = (flag & ~BF_RANGEMASK) | BF_LONG;
break;
- case MO_COMBOFINISH: // –Ň—´Œ
+ case MO_COMBOFINISH: // 猛龍拳
damage = damage * (240 + 60 * skill_lv) / 100;
break;
- case CH_TIGERFIST: // •šŒŐŒ
+ case CH_TIGERFIST: // 伏虎拳
damage = damage * (100 + 20 * skill_lv) / 100;
break;
- case CH_CHAINCRUSH: // ˜A’Œ•öŒ‚
+ case CH_CHAINCRUSH: // 連柱崩撃
damage = damage * (100 + 20 * skill_lv) / 100;
div_ = skill_get_num (skill_num, skill_lv);
break;
- case CH_PALMSTRIKE: // –ŇŒŐd”hŽR
+ case CH_PALMSTRIKE: // 猛虎硬派山
damage = damage * (50 + 100 * skill_lv) / 100;
break;
- case LK_SPIRALPIERCE: /* ƒXƒpƒCƒ‰ƒ‹ƒsƒA[ƒX */
- damage = damage * (100 + 50 * skill_lv) / 100; //‘‰Á—Ę‚Ş•Ş‚Š‚ç‚Č‚˘‚Ě‚Ĺ“K“–‚É
+ case LK_SPIRALPIERCE: /* スパイラルピアース */
+ damage = damage * (100 + 50 * skill_lv) / 100; //増加量が分からないので適当に
div_ = 5;
if (tsd)
tsd->canmove_tick = gettick () + 1000;
else if (tmd)
tmd->canmove_tick = gettick () + 1000;
break;
- case LK_HEADCRUSH: /* ƒwƒbƒhƒNƒ‰ƒbƒVƒ… */
+ case LK_HEADCRUSH: /* ヘッドクラッシュ */
damage = damage * (100 + 20 * skill_lv) / 100;
break;
- case LK_JOINTBEAT: /* ƒWƒ‡ƒCƒ“ƒgƒr[ƒg */
+ case LK_JOINTBEAT: /* ジョイントビート */
damage = damage * (50 + 10 * skill_lv) / 100;
break;
- case ASC_METEORASSAULT: /* ƒƒeƒIƒAƒTƒ‹ƒg */
+ case ASC_METEORASSAULT: /* メテオアサルト */
damage = damage * (40 + 40 * skill_lv) / 100;
break;
- case SN_SHARPSHOOTING: /* ƒVƒƒ[ƒvƒVƒ…[ƒeƒBƒ“ƒO */
+ case SN_SHARPSHOOTING: /* シャープシューティング */
damage += damage * (30 * skill_lv) / 100;
break;
- case CG_ARROWVULCAN: /* ƒAƒ[ƒoƒ‹ƒJƒ“ */
+ case CG_ARROWVULCAN: /* アローバルカン */
damage = damage * (160 + 40 * skill_lv) / 100;
div_ = 9;
break;
- case AS_SPLASHER: /* ƒxƒiƒ€ƒXƒvƒ‰ƒbƒVƒƒ[ */
+ case AS_SPLASHER: /* ベナムスプラッシャー */
damage = damage * (200 + 20 * skill_lv) / 100;
break;
}
@@ -2429,11 +2429,11 @@ static struct Damage battle_calc_mob_weapon_attack (struct block_list *src,
if (skill_num != NPC_CRITICALSLASH)
{
- // ‘Î Ű‚Ě–hŒä—Í‚É‚ć‚éƒ_ƒ[ƒW‚ĚŒ¸­
- // ƒfƒBƒoƒCƒ“ƒvƒƒeƒNƒVƒ‡ƒ“i‚ą‚ą‚Ĺ‚˘‚˘‚Ě‚Š‚ȁHj
+ // 対 象の防御力によるダメージの減少
+ // ディバインプロテクション(ここでいいのかな?)
if (skill_num != MO_INVESTIGATE && skill_num != MO_EXTREMITYFIST
&& skill_num != KN_AUTOCOUNTER && def1 < 1000000)
- { //DEF, VIT–łŽ‹
+ { //DEF, VIT無視
int t_def;
target_count =
1 + battle_counttargeted (target, src,
@@ -2513,17 +2513,17 @@ static struct Damage battle_calc_mob_weapon_attack (struct block_list *src,
}
}
- // 0–˘–ž‚ž‚Á‚˝ę‡1‚ɕ␳
+ // 0未満だった場合1に補正
if (damage < 1)
damage = 1;
- // ‰ń”đCł
+ // 回避修正
if (hitrate < 1000000)
hitrate = ((hitrate > 95) ? 95 : ((hitrate < 5) ? 5 : hitrate));
- if (hitrate < 1000000 && // •K’†UŒ‚
- (t_sc_data != NULL && (t_sc_data[SC_SLEEP].timer != -1 || // ‡–°‚Í•K’†
- t_sc_data[SC_STAN].timer != -1 || // ƒXƒ^ƒ“‚Í•K’†
- t_sc_data[SC_FREEZE].timer != -1 || (t_sc_data[SC_STONE].timer != -1 && t_sc_data[SC_STONE].val2 == 0)))) // “€Œ‹‚Í•K’†
+ if (hitrate < 1000000 && // 必中攻撃
+ (t_sc_data != NULL && (t_sc_data[SC_SLEEP].timer != -1 || // 睡眠は必中
+ t_sc_data[SC_STAN].timer != -1 || // スタンは必中
+ t_sc_data[SC_FREEZE].timer != -1 || (t_sc_data[SC_STONE].timer != -1 && t_sc_data[SC_STONE].val2 == 0)))) // 凍結は必中
hitrate = 1000000;
if (type == 0 && MRAND (100) >= hitrate)
{
@@ -2538,8 +2538,8 @@ static struct Damage battle_calc_mob_weapon_attack (struct block_list *src,
if (tsd)
{
int cardfix = 100, i;
- cardfix = cardfix * (100 - tsd->subele[s_ele]) / 100; // ‘Ž Ť‚É‚ć‚éƒ_ƒ[ƒW‘ϐŤ
- cardfix = cardfix * (100 - tsd->subrace[s_race]) / 100; // Ží‘°‚É‚ć‚éƒ_ƒ[ƒW‘ϐŤ
+ cardfix = cardfix * (100 - tsd->subele[s_ele]) / 100; // 属 性によるダメージ耐性
+ cardfix = cardfix * (100 - tsd->subrace[s_race]) / 100; // 種族によるダメージ耐性
if (mob_db[md->class].mode & 0x20)
cardfix = cardfix * (100 - tsd->subrace[10]) / 100;
else
@@ -2567,7 +2567,7 @@ static struct Damage battle_calc_mob_weapon_attack (struct block_list *src,
damage = damage * cardfix / 100;
}
if (t_sc_data && t_sc_data[SC_ASSUMPTIO].timer != -1)
- { //ƒAƒVƒƒƒ“ƒvƒeƒBƒI
+ { //アシャンプティオ
if (!map[target->m].flag.pvp)
damage = damage / 3;
else
@@ -2577,19 +2577,19 @@ static struct Damage battle_calc_mob_weapon_attack (struct block_list *src,
if (damage < 0)
damage = 0;
- // ‘Ž Ť‚Ě“K—p
+ // 属 性の適用
if (!((battle_config.mob_ghostring_fix == 1) && (battle_get_element (target) == 8) && (target->type == BL_PC))) // [MouseJstr]
if (skill_num != 0 || s_ele != 0
|| !battle_config.mob_attack_attr_none)
damage =
battle_attr_fix (damage, s_ele, battle_get_element (target));
- if (sc_data && sc_data[SC_AURABLADE].timer != -1) /* ƒI[ƒ‰ƒuƒŒ[ƒh •K’† */
+ if (sc_data && sc_data[SC_AURABLADE].timer != -1) /* オーラブレード 必中 */
damage += sc_data[SC_AURABLADE].val1 * 10;
- if (skill_num == PA_PRESSURE) /* ƒvƒŒƒbƒVƒƒ[ •K’†? */
+ if (skill_num == PA_PRESSURE) /* プレッシャー 必中? */
damage = 700 + 100 * skill_lv;
- // ƒCƒ“ƒxƒiƒ€Cł
+ // インベナム修正
if (skill_num == TF_POISON)
{
damage =
@@ -2601,7 +2601,7 @@ static struct Damage battle_calc_mob_weapon_attack (struct block_list *src,
damage = battle_attr_fix (damage, 0, battle_get_element (target));
}
- // ŠŽ‘S‰ń”đ‚Ě”ť’č
+ // 完全回避の判定
if (skill_num == 0 && skill_lv >= 0 && tsd != NULL
&& MRAND (1000) < battle_get_flee2 (target))
{
@@ -2664,7 +2664,7 @@ int battle_is_unarmed (struct block_list *bl)
/*
* =========================================================================
- * PC‚Ě•Ší‚É‚ć‚éUŒ‚
+ * PCの武器による攻撃
*-------------------------------------------------------------------------
*/
static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
@@ -2688,13 +2688,13 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
struct status_change *sc_data, *t_sc_data;
short *sc_count;
short *option, *opt1, *opt2;
- int atkmax_ = 0, atkmin_ = 0, s_ele_; //“ń“—Ź—p
+ int atkmax_ = 0, atkmin_ = 0, s_ele_; //二刀流用
int watk, watk_, cardfix, t_ele;
int da = 0, i, t_class, ac_flag = 0;
int idef_flag = 0, idef_flag_ = 0;
int target_distance;
- //return‘O‚̏ˆ—‚Ş‚ ‚é‚Ě‚Ĺî•ńo—Í•”‚Ě‚Ý•ĎX
+ //return前の処理があるので情報出力部のみ変更
if (src == NULL || target == NULL || sd == NULL)
{
nullpo_info (NLP_MARK);
@@ -2702,31 +2702,31 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
return wd;
}
- // ƒAƒ^ƒbƒJ[
- s_race = battle_get_race (src); //Ží‘°
- s_ele = battle_get_attack_element (src); //‘ŽŤ
- s_ele_ = battle_get_attack_element2 (src); //śŽč‘ŽŤ
- sc_data = battle_get_sc_data (src); //ƒXƒe[ƒ^ƒXˆŮí
- sc_count = battle_get_sc_count (src); //ƒXƒe[ƒ^ƒXˆŮí‚̐”
- option = battle_get_option (src); //‘é‚Ć‚ŠƒyƒR‚Ć‚ŠƒJ[ƒg‚Ć‚Š
- opt1 = battle_get_opt1 (src); //Î‰ťA“€Œ‹AƒXƒ^ƒ“A‡–°AˆĂˆĹ
- opt2 = battle_get_opt2 (src); //“ŁAŽô‚˘A’ž–فAˆĂˆĹH
-
- if (skill_num != CR_GRANDCROSS) //ƒOƒ‰ƒ“ƒhƒNƒƒX‚Ĺ‚Č‚˘‚Č‚ç
- sd->state.attack_type = BF_WEAPON; //UŒ‚ƒ^ƒCƒv‚Í•ŠíUŒ‚
-
- // ƒ^[ƒQƒbƒg
- if (target->type == BL_PC) //‘ÎŰ‚ŞPC‚Č‚ç
- tsd = (struct map_session_data *) target; //tsd‚É‘ă“ü(tmd‚ÍNULL)
- else if (target->type == BL_MOB) //‘ÎŰ‚ŞMob‚Č‚ç
- tmd = (struct mob_data *) target; //tmd‚É‘ă“ü(tsd‚ÍNULL)
- t_race = battle_get_race (target); //‘ÎŰ‚ĚŽí‘°
- t_ele = battle_get_elem_type (target); //‘ÎŰ‚Ě‘ŽŤ
- t_size = battle_get_size (target); //‘ÎŰ‚ĚƒTƒCƒY
- t_mode = battle_get_mode (target); //‘ÎŰ‚ĚMode
- t_sc_data = battle_get_sc_data (target); //‘ÎŰ‚ĚƒXƒe[ƒ^ƒXˆŮí
-
-//ƒI[ƒgƒJƒEƒ“ƒ^[ˆ—‚ą‚ą‚Š‚ç
+ // アタッカー
+ s_race = battle_get_race (src); //種族
+ s_ele = battle_get_attack_element (src); //属性
+ s_ele_ = battle_get_attack_element2 (src); //左手属性
+ sc_data = battle_get_sc_data (src); //ステータス異常
+ sc_count = battle_get_sc_count (src); //ステータス異常の数
+ option = battle_get_option (src); //鷹とかペコとかカートとか
+ opt1 = battle_get_opt1 (src); //石化、凍結、スタン、睡眠、暗闇
+ opt2 = battle_get_opt2 (src); //毒、呪い、沈黙、暗闇?
+
+ if (skill_num != CR_GRANDCROSS) //グランドクロスでないなら
+ sd->state.attack_type = BF_WEAPON; //攻撃タイプは武器攻撃
+
+ // ターゲット
+ if (target->type == BL_PC) //対象がPCなら
+ tsd = (struct map_session_data *) target; //tsdに代入(tmdはNULL)
+ else if (target->type == BL_MOB) //対象がMobなら
+ tmd = (struct mob_data *) target; //tmdに代入(tsdはNULL)
+ t_race = battle_get_race (target); //対象の種族
+ t_ele = battle_get_elem_type (target); //対象の属性
+ t_size = battle_get_size (target); //対象のサイズ
+ t_mode = battle_get_mode (target); //寞蹥ぎMode
+ t_sc_data = battle_get_sc_data (target); //対象のステータス異常
+
+//オートカウンター処理ここから
if ((skill_num == 0
|| (target->type == BL_PC && battle_config.pc_auto_counter_type & 2)
|| (target->type == BL_MOB
@@ -2735,57 +2735,57 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
{
if (skill_num != CR_GRANDCROSS && t_sc_data
&& t_sc_data[SC_AUTOCOUNTER].timer != -1)
- { //ƒOƒ‰ƒ“ƒhƒNƒƒX‚Ĺ‚Č‚­A‘ÎŰ‚ŞƒI[ƒgƒJƒEƒ“ƒ^[ó‘Ô‚Ěę‡
+ { //グランドクロスでなく、対象がオートカウンター状態の場合
int dir = map_calc_dir (src, target->x, target->y), t_dir =
battle_get_dir (target);
int dist = distance (src->x, src->y, target->x, target->y);
if (dist <= 0 || map_check_dir (dir, t_dir))
- { //‘ÎŰ‚Ć‚Ě‹——Ł‚Ş0ˆČ‰şA‚Ü‚˝‚Í‘ÎŰ‚Ěł–ʁH
+ { //対象との距離が0以下、または対象の正面?
memset (&wd, 0, sizeof (wd));
t_sc_data[SC_AUTOCOUNTER].val3 = 0;
t_sc_data[SC_AUTOCOUNTER].val4 = 1;
if (sc_data && sc_data[SC_AUTOCOUNTER].timer == -1)
- { //ŽŠ•Ş‚ރI[ƒgƒJƒEƒ“ƒ^[ó‘Ô
+ { //自分がオートカウンター状態
int range = battle_get_range (target);
- if ((target->type == BL_PC && ((struct map_session_data *) target)->status.weapon != 11 && dist <= range + 1) || //‘ÎŰ‚ŞPC‚Ĺ•Ší‚Ş‹|–î‚Ĺ‚Č‚­ŽË’ö“ŕ
- (target->type == BL_MOB && range <= 3 && dist <= range + 1)) //‚Ü‚˝‚Í‘ÎŰ‚ŞMob‚ĹŽË’ö‚Ş3ˆČ‰ş‚ĹŽË’ö“ŕ
+ if ((target->type == BL_PC && ((struct map_session_data *) target)->status.weapon != 11 && dist <= range + 1) || //対象がPCで武器が弓矢でなく射程内
+ (target->type == BL_MOB && range <= 3 && dist <= range + 1)) //または対象がMobで射程が3以下で射程内
t_sc_data[SC_AUTOCOUNTER].val3 = src->id;
}
- return wd; //ƒ_ƒ[ƒW\‘˘‘Ě‚đ•Ô‚ľ‚ďI—š
+ return wd; //ダメージ構造体を返して終了
}
else
ac_flag = 1;
}
}
-//ƒI[ƒgƒJƒEƒ“ƒ^[ˆ—‚ą‚ą‚Ü‚Ĺ
+//オートカウンター処理ここまで
- flag = BF_SHORT | BF_WEAPON | BF_NORMAL; // UŒ‚‚ĚŽí—ނ̐ݒč
+ flag = BF_SHORT | BF_WEAPON | BF_NORMAL; // 攻撃の種類の設定
- // ‰ń”đ—ŚŒvŽZA‰ń”𔝒č‚ÍŒă‚Ĺ
+ // 回避率計算、回避判定は後で
flee = battle_get_flee (target);
- if (battle_config.agi_penaly_type > 0 || battle_config.vit_penaly_type > 0) //AGIAVITƒyƒiƒ‹ƒeƒBÝ’č‚Ş—LŒř
- target_count += battle_counttargeted (target, src, battle_config.agi_penaly_count_lv); //‘ÎŰ‚Ě”‚đŽZo
+ if (battle_config.agi_penaly_type > 0 || battle_config.vit_penaly_type > 0) //AGI、VITペナルティ設定が有効
+ target_count += battle_counttargeted (target, src, battle_config.agi_penaly_count_lv); //対象の数を算出
if (battle_config.agi_penaly_type > 0)
{
if (target_count >= battle_config.agi_penaly_count)
- { //ƒyƒiƒ‹ƒeƒBÝ’č‚ć‚č‘ÎŰ‚Ş‘˝‚˘
- if (battle_config.agi_penaly_type == 1) //‰ń”đ—Ś‚Şagi_penaly_num%‚¸‚ÂŒ¸­
+ { //ペナルティ設定より対象が多い
+ if (battle_config.agi_penaly_type == 1) //回避率がagi_penaly_num%ずつ減少
flee =
(flee *
(100 -
(target_count -
(battle_config.agi_penaly_count -
1)) * battle_config.agi_penaly_num)) / 100;
- else if (battle_config.agi_penaly_type == 2) //‰ń”đ—Ś‚Şagi_penaly_num•ŞŒ¸­
+ else if (battle_config.agi_penaly_type == 2) //回避率がagi_penaly_num分減少
flee -=
(target_count -
(battle_config.agi_penaly_count -
1)) * battle_config.agi_penaly_num;
if (flee < 1)
- flee = 1; //‰ń”đ—Ś‚ÍĹ’á‚Ĺ‚ŕ1
+ flee = 1; //回避率は最低でも1
}
}
- hitrate = battle_get_hit (src) - flee + 80; //–˝’†—ŚŒvŽZ
+ hitrate = battle_get_hit (src) - flee + 80; //命中率計算
{ // [fate] Reduce hit chance by distance
int dx = abs (src->x - target->x);
@@ -2801,18 +2801,18 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
dex = battle_get_dex (src); //DEX
luk = battle_get_luk (src); //LUK
watk = battle_get_atk (src); //ATK
- watk_ = battle_get_atk_ (src); //ATKśŽč
+ watk_ = battle_get_atk_ (src); //ATK左手
type = 0; // normal
div_ = 1; // single attack
if (skill_num == HW_MAGICCRASHER)
- { /* ƒ}ƒWƒbƒNƒNƒ‰ƒbƒVƒƒ[‚ÍMATK‚ʼnŁ‚é */
- damage = damage2 = battle_get_matk1 (src); //damega,damega2‰“oęAbase_atk‚ĚŽć“ž
+ { /* マジッククラッシャーはMATKで殴る */
+ damage = damage2 = battle_get_matk1 (src); //damega,damega2初登場、base_atkの取得
}
else
{
- damage = damage2 = battle_get_baseatk (&sd->bl); //damega,damega2‰“oęAbase_atk‚ĚŽć“ž
+ damage = damage2 = battle_get_baseatk (&sd->bl); //damega,damega2初登場、base_atkの取得
}
if (sd->attackrange > 2)
{ // [fate] ranged weapon?
@@ -2827,8 +2827,8 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
sd->attackrange)) >> 8;
}
- atkmin = atkmin_ = dex; //Ĺ’áATK‚ÍDEX‚ŏ‰Šú‰ťH
- sd->state.arrow_atk = 0; //arrow_atk‰Šú‰ť
+ atkmin = atkmin_ = dex; //最低ATKはDEXで初期化?
+ sd->state.arrow_atk = 0; //arrow_atk初期化
if (sd->equip_index[9] >= 0 && sd->inventory_data[sd->equip_index[9]])
atkmin =
atkmin * (80 +
@@ -2839,22 +2839,22 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
sd->inventory_data[sd->equip_index[8]]->wlv * 20) /
100;
if (sd->status.weapon == 11)
- { //•Ší‚Ş‹|–î‚Ěę‡
- atkmin = watk * ((atkmin < watk) ? atkmin : watk) / 100; //‹|—pĹ’áATKŒvŽZ
- flag = (flag & ~BF_RANGEMASK) | BF_LONG; //‰“‹——ŁUŒ‚ƒtƒ‰ƒO‚đ—LŒř
- if (sd->arrow_ele > 0) //‘ŽŤ–î‚Č‚ç‘ŽŤ‚đ–î‚Ě‘ŽŤ‚É•ĎX
+ { //武器が弓矢の場合
+ atkmin = watk * ((atkmin < watk) ? atkmin : watk) / 100; //弓用最低ATK計算
+ flag = (flag & ~BF_RANGEMASK) | BF_LONG; //遠距離攻撃フラグを有効
+ if (sd->arrow_ele > 0) //属性矢なら属性を矢の属性に変更
s_ele = sd->arrow_ele;
- sd->state.arrow_atk = 1; //arrow_atk—LŒř‰ť
+ sd->state.arrow_atk = 1; //arrow_atk有効化
}
- // ƒTƒCƒYCł
- // ƒyƒR‹Rć‚ľ‚Ä‚˘‚āA‘„‚ōUŒ‚‚ľ‚˝ę‡‚Í’†Œ^‚ĚƒTƒCƒYCł‚đ100‚É‚ˇ‚é
- // ƒEƒFƒ|ƒ“ƒp[ƒtƒFƒNƒVƒ‡ƒ“,ƒhƒŒƒCƒNC
+ // サイズ修正
+ // ペコ騎乗していて、槍で攻撃した場合は中型のサイズ修正を100にする
+ // ウェポンパーフェクション,ドレイクC
if (((sd->special_state.no_sizefix)
|| (pc_isriding (sd)
&& (sd->status.weapon == 4 || sd->status.weapon == 5)
&& t_size == 1) || skill_num == MO_EXTREMITYFIST))
- { //ƒyƒR‹Rć‚ľ‚Ä‚˘‚āA‘„‚Ĺ’†Œ^‚đUŒ‚
+ { //ペコ騎乗していて、槍で中型を攻撃
atkmax = watk;
atkmax_ = watk_;
}
@@ -2867,23 +2867,23 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
}
if ((sc_data != NULL && sc_data[SC_WEAPONPERFECTION].timer != -1)
|| (sd->special_state.no_sizefix))
- { // ƒEƒFƒ|ƒ“ƒp[ƒtƒFƒNƒVƒ‡ƒ“ || ƒhƒŒƒCƒNƒJ[ƒh
+ { // ウェポンパーフェクション || ドレイクカード
atkmax = watk;
atkmax_ = watk_;
}
if (atkmin > atkmax && !(sd->state.arrow_atk))
- atkmin = atkmax; //‹|‚ÍĹ’á‚Şă‰ń‚éę‡‚ ‚č
+ atkmin = atkmax; //弓は最低が上回る場合あり
if (atkmin_ > atkmax_)
atkmin_ = atkmax_;
if (sc_data != NULL && sc_data[SC_MAXIMIZEPOWER].timer != -1)
- { // ƒ}ƒLƒVƒ}ƒCƒYƒpƒ[
+ { // マキシマイズパワー
atkmin = atkmax;
atkmin_ = atkmax_;
}
- //ƒ_ƒuƒ‹ƒAƒ^ƒbƒN”ť’č
+ //ダブルアタック判定
if (sd->weapontype1 == 0x01)
{
if (skill_num == 0 && skill_lv >= 0
@@ -2891,7 +2891,7 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
da = (MRAND (100) < (skill * 5)) ? 1 : 0;
}
- //ŽO’iś
+ //三段掌
if (skill_num == 0 && skill_lv >= 0
&& (skill = pc_checkskill (sd, MO_TRIPLEATTACK)) > 0
&& sd->status.weapon <= 16 && !sd->state.arrow_atk)
@@ -2902,24 +2902,24 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
if (sd->double_rate > 0 && da == 0 && skill_num == 0 && skill_lv >= 0)
da = (MRAND (100) < sd->double_rate) ? 1 : 0;
- // ‰ßč¸˜Bƒ{[ƒiƒX
+ // 過剰精錬ボーナス
if (sd->overrefine > 0)
damage += MPRAND (1, sd->overrefine);
if (sd->overrefine_ > 0)
damage2 += MPRAND (1, sd->overrefine_);
if (da == 0)
- { //ƒ_ƒuƒ‹ƒAƒ^ƒbƒN‚Ş”­“Ž‚ľ‚Ä‚˘‚Č‚˘
- // ƒNƒŠƒeƒBƒJƒ‹ŒvŽZ
+ { //ダブルアタックが発動していない
+ // クリティカル計算
cri = battle_get_critical (src);
if (sd->state.arrow_atk)
cri += sd->arrow_cri;
if (sd->status.weapon == 16)
- // ƒJƒ^[ƒ‹‚Ěę‡AƒNƒŠƒeƒBƒJƒ‹‚đ”{‚É
+ // カタールの場合、クリティカルを倍に
cri <<= 1;
cri -= battle_get_luk (target) * 3;
- if (t_sc_data != NULL && t_sc_data[SC_SLEEP].timer != -1) // ‡–°’†‚̓NƒŠƒeƒBƒJƒ‹‚Ş”{‚É
+ if (t_sc_data != NULL && t_sc_data[SC_SLEEP].timer != -1) // 睡眠中はクリティカルが倍に
cri <<= 1;
if (ac_flag)
cri = 1000;
@@ -2939,8 +2939,8 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
if (tsd && tsd->critical_def)
cri = cri * (100 - tsd->critical_def) / 100;
- if (da == 0 && (skill_num == 0 || skill_num == KN_AUTOCOUNTER || skill_num == SN_SHARPSHOOTING) && skill_lv >= 0 && //ƒ_ƒuƒ‹ƒAƒ^ƒbƒN‚Ş”­“Ž‚ľ‚Ä‚˘‚Č‚˘
- (MRAND (1000)) < cri) // ”ť’čiƒXƒLƒ‹‚Ěę‡‚Í–łŽ‹j
+ if (da == 0 && (skill_num == 0 || skill_num == KN_AUTOCOUNTER || skill_num == SN_SHARPSHOOTING) && skill_lv >= 0 && //ダブルアタックが発動していない
+ (MRAND (1000)) < cri) // 判定(スキルの場合は無視)
{
damage += atkmax;
damage2 += atkmax_;
@@ -3051,27 +3051,27 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
}
}
- // ƒXƒLƒ‹Cł‚PiUŒ‚—Í”{‰ťŒnj
- // ƒI[ƒo[ƒgƒ‰ƒXƒg(+5% ` +25%),‘źUŒ‚ŒnƒXƒLƒ‹‚Ěę‡‚ą‚ą‚ŕ␳
- // ƒoƒbƒVƒ…,ƒ}ƒOƒiƒ€ƒuƒŒƒCƒN,
- // ƒ{[ƒŠƒ“ƒOƒoƒbƒVƒ…,ƒXƒsƒAƒu[ƒƒ‰ƒ“,ƒuƒ‰ƒ“ƒfƒBƒbƒVƒ…ƒXƒsƒA,ƒXƒsƒAƒXƒ^ƒbƒu,
- // ƒƒ}[ƒiƒCƒg,ƒJ[ƒgƒŒƒ{ƒŠƒ…[ƒVƒ‡ƒ“
- // ƒ_ƒuƒ‹ƒXƒgƒŒƒCƒtƒBƒ“ƒO,ƒAƒ[ƒVƒƒƒ[,ƒ`ƒƒ[ƒWƒAƒ[,
- // ƒ\ƒjƒbƒNƒuƒ[
+ // スキル修正1(攻撃力倍化系)
+ // オーバートラスト(+5% 〜 +25%),他攻撃系スキルの場合ここで補正
+ // バッシュ,マグナムブレイク,
+ // ボーリングバッシュ,スピアブーメラン,ブランディッシュスピア,スピアスタッブ,
+ // メマーナイト,カートレボリューション
+ // ダブルストレイフィング,アローシャワー,チャージアロー,
+ // ソニックブロー
if (sc_data)
- { //ó‘ÔˆŮí’†‚Ěƒ_ƒ[ƒW’ljÁ
+ { //状態異常中のダメージ追加
if (sc_data[SC_OVERTHRUST].timer != -1)
- { // ƒI[ƒo[ƒgƒ‰ƒXƒg
+ { // オーバートラスト
damage += damage * (5 * sc_data[SC_OVERTHRUST].val1) / 100;
damage2 += damage2 * (5 * sc_data[SC_OVERTHRUST].val1) / 100;
}
if (sc_data[SC_TRUESIGHT].timer != -1)
- { // ƒgƒDƒ‹[ƒTƒCƒg
+ { // トゥルーサイト
damage += damage * (2 * sc_data[SC_TRUESIGHT].val1) / 100;
damage2 += damage2 * (2 * sc_data[SC_TRUESIGHT].val1) / 100;
}
if (sc_data[SC_BERSERK].timer != -1)
- { // ƒo[ƒT[ƒN
+ { // バーサーク
damage += damage * 50 / 100;
damage2 += damage2 * 50 / 100;
}
@@ -3086,22 +3086,22 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
flag = (flag & ~BF_SKILLMASK) | BF_SKILL;
switch (skill_num)
{
- case SM_BASH: // ƒoƒbƒVƒ…
+ case SM_BASH: // バッシュ
damage = damage * (100 + 30 * skill_lv) / 100;
damage2 = damage2 * (100 + 30 * skill_lv) / 100;
hitrate = (hitrate * (100 + 5 * skill_lv)) / 100;
break;
- case SM_MAGNUM: // ƒ}ƒOƒiƒ€ƒuƒŒƒCƒN
+ case SM_MAGNUM: // マグナムブレイク
damage =
damage * (5 * skill_lv + (wflag) ? 65 : 115) / 100;
damage2 =
damage2 * (5 * skill_lv + (wflag) ? 65 : 115) / 100;
break;
- case MC_MAMMONITE: // ƒƒ}[ƒiƒCƒg
+ case MC_MAMMONITE: // メマーナイト
damage = damage * (100 + 50 * skill_lv) / 100;
damage2 = damage2 * (100 + 50 * skill_lv) / 100;
break;
- case AC_DOUBLE: // ƒ_ƒuƒ‹ƒXƒgƒŒƒCƒtƒBƒ“ƒO
+ case AC_DOUBLE: // ダブルストレイフィング
if (!sd->state.arrow_atk && sd->arrow_atk > 0)
{
int arr = MRAND ((sd->arrow_atk + 1));
@@ -3119,7 +3119,7 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
flag = (flag & ~BF_RANGEMASK) | BF_LONG;
sd->state.arrow_atk = 1;
break;
- case AC_SHOWER: // ƒAƒ[ƒVƒƒƒ[
+ case AC_SHOWER: // アローシャワー
if (!sd->state.arrow_atk && sd->arrow_atk > 0)
{
int arr = MRAND ((sd->arrow_atk + 1));
@@ -3136,7 +3136,7 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
flag = (flag & ~BF_RANGEMASK) | BF_LONG;
sd->state.arrow_atk = 1;
break;
- case AC_CHARGEARROW: // ƒ`ƒƒ[ƒWƒAƒ[
+ case AC_CHARGEARROW: // チャージアロー
if (!sd->state.arrow_atk && sd->arrow_atk > 0)
{
int arr = MRAND ((sd->arrow_atk + 1));
@@ -3153,7 +3153,7 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
flag = (flag & ~BF_RANGEMASK) | BF_LONG;
sd->state.arrow_atk = 1;
break;
- case KN_PIERCE: // ƒsƒA[ƒX
+ case KN_PIERCE: // ピアース
damage = damage * (100 + 10 * skill_lv) / 100;
damage2 = damage2 * (100 + 10 * skill_lv) / 100;
hitrate = hitrate * (100 + 5 * skill_lv) / 100;
@@ -3161,16 +3161,16 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
damage *= div_;
damage2 *= div_;
break;
- case KN_SPEARSTAB: // ƒXƒsƒAƒXƒ^ƒu
+ case KN_SPEARSTAB: // スピアスタブ
damage = damage * (100 + 15 * skill_lv) / 100;
damage2 = damage2 * (100 + 15 * skill_lv) / 100;
break;
- case KN_SPEARBOOMERANG: // ƒXƒsƒAƒu[ƒƒ‰ƒ“
+ case KN_SPEARBOOMERANG: // スピアブーメラン
damage = damage * (100 + 50 * skill_lv) / 100;
damage2 = damage2 * (100 + 50 * skill_lv) / 100;
flag = (flag & ~BF_RANGEMASK) | BF_LONG;
break;
- case KN_BRANDISHSPEAR: // ƒuƒ‰ƒ“ƒfƒBƒbƒVƒ…ƒXƒsƒA
+ case KN_BRANDISHSPEAR: // ブランディッシュスピア
damage = damage * (100 + 20 * skill_lv) / 100;
damage2 = damage2 * (100 + 20 * skill_lv) / 100;
if (skill_lv > 3 && wflag == 1)
@@ -3201,7 +3201,7 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
damage2 += damage4;
blewcount = 0;
break;
- case KN_BOWLINGBASH: // ƒ{ƒEƒŠƒ“ƒOƒoƒbƒVƒ…
+ case KN_BOWLINGBASH: // ボウリングバッシュ
damage = damage * (100 + 50 * skill_lv) / 100;
damage2 = damage2 * (100 + 50 * skill_lv) / 100;
blewcount = 0;
@@ -3213,17 +3213,17 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
hitrate = 1000000;
flag = (flag & ~BF_SKILLMASK) | BF_NORMAL;
break;
- case AS_SONICBLOW: // ƒ\ƒjƒbƒNƒuƒƒE
+ case AS_SONICBLOW: // ソニックブロウ
hitrate += 30; // hitrate +30, thanks to midas
damage = damage * (300 + 50 * skill_lv) / 100;
damage2 = damage2 * (300 + 50 * skill_lv) / 100;
div_ = 8;
break;
- case TF_SPRINKLESAND: // ť‚Ü‚Ť
+ case TF_SPRINKLESAND: // 砂まき
damage = damage * 125 / 100;
damage2 = damage2 * 125 / 100;
break;
- case MC_CARTREVOLUTION: // ƒJ[ƒgƒŒƒ{ƒŠƒ…[ƒVƒ‡ƒ“
+ case MC_CARTREVOLUTION: // カートレボリューション
if (sd->cart_max_weight > 0 && sd->cart_weight > 0)
{
damage =
@@ -3243,17 +3243,17 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
damage2 = (damage2 * 150) / 100;
}
break;
- // ˆČ‰şMOB
- case NPC_COMBOATTACK: // ‘˝’iUŒ‚
+ // 以下MOB
+ case NPC_COMBOATTACK: // 多段攻撃
div_ = skill_get_num (skill_num, skill_lv);
damage *= div_;
damage2 *= div_;
break;
- case NPC_RANDOMATTACK: // ƒ‰ƒ“ƒ_ƒ€ATKUŒ‚
+ case NPC_RANDOMATTACK: // ランダムATK攻撃
damage = damage * (MPRAND (50, 150)) / 100;
damage2 = damage2 * (MPRAND (50, 150)) / 100;
break;
- // ‘ŽŤUŒ‚i“K“–j
+ // 属性攻撃(適当)
case NPC_WATERATTACK:
case NPC_GROUNDATTACK:
case NPC_FIREATTACK:
@@ -3274,7 +3274,7 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
case NPC_PIERCINGATT:
flag = (flag & ~BF_RANGEMASK) | BF_SHORT;
break;
- case RG_BACKSTAP: // ƒoƒbƒNƒXƒ^ƒu
+ case RG_BACKSTAP: // バックスタブ
if (battle_config.backstab_bow_penalty == 1
&& sd->status.weapon == 11)
{
@@ -3288,27 +3288,27 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
}
hitrate = 1000000;
break;
- case RG_RAID: // ƒTƒvƒ‰ƒCƒYƒAƒ^ƒbƒN
+ case RG_RAID: // サプライズアタック
damage = damage * (100 + 40 * skill_lv) / 100;
damage2 = damage2 * (100 + 40 * skill_lv) / 100;
break;
- case RG_INTIMIDATE: // ƒCƒ“ƒeƒBƒ~ƒfƒCƒg
+ case RG_INTIMIDATE: // インティミデイト
damage = damage * (100 + 30 * skill_lv) / 100;
damage2 = damage2 * (100 + 30 * skill_lv) / 100;
break;
- case CR_SHIELDCHARGE: // ƒV[ƒ‹ƒhƒ`ƒƒ[ƒW
+ case CR_SHIELDCHARGE: // シールドチャージ
damage = damage * (100 + 20 * skill_lv) / 100;
damage2 = damage2 * (100 + 20 * skill_lv) / 100;
flag = (flag & ~BF_RANGEMASK) | BF_SHORT;
s_ele = 0;
break;
- case CR_SHIELDBOOMERANG: // ƒV[ƒ‹ƒhƒu[ƒƒ‰ƒ“
+ case CR_SHIELDBOOMERANG: // シールドブーメラン
damage = damage * (100 + 30 * skill_lv) / 100;
damage2 = damage2 * (100 + 30 * skill_lv) / 100;
flag = (flag & ~BF_RANGEMASK) | BF_LONG;
s_ele = 0;
break;
- case CR_HOLYCROSS: // ƒz[ƒŠ[ƒNƒƒX
+ case CR_HOLYCROSS: // ホーリークロス
damage = damage * (100 + 35 * skill_lv) / 100;
damage2 = damage2 * (100 + 35 * skill_lv) / 100;
div_ = 2;
@@ -3316,15 +3316,15 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
case CR_GRANDCROSS:
hitrate = 1000000;
break;
- case AM_DEMONSTRATION: // ƒfƒ‚ƒ“ƒXƒgƒŒ[ƒVƒ‡ƒ“
+ case AM_DEMONSTRATION: // デモンストレーション
damage = damage * (100 + 20 * skill_lv) / 100;
damage2 = damage2 * (100 + 20 * skill_lv) / 100;
break;
- case AM_ACIDTERROR: // ƒAƒVƒbƒhƒeƒ‰[
+ case AM_ACIDTERROR: // アシッドテラー
damage = damage * (100 + 40 * skill_lv) / 100;
damage2 = damage2 * (100 + 40 * skill_lv) / 100;
break;
- case MO_FINGEROFFENSIVE: //Žw’e
+ case MO_FINGEROFFENSIVE: //指弾
if (battle_config.finger_offensive_type == 0)
{
damage =
@@ -3344,7 +3344,7 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
div_ = 1;
}
break;
- case MO_INVESTIGATE: // ”­ ™¤
+ case MO_INVESTIGATE: // 発 勁
if (def1 < 1000000)
{
damage =
@@ -3360,7 +3360,7 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
s_ele = 0;
s_ele_ = 0;
break;
- case MO_EXTREMITYFIST: // ˆ˘C—…”e–PŒ
+ case MO_EXTREMITYFIST: // 阿修羅覇鳳拳
damage =
damage * (8 + ((sd->status.sp) / 10)) + 250 +
(skill_lv * 150);
@@ -3373,16 +3373,16 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
s_ele = 0;
s_ele_ = 0;
break;
- case MO_CHAINCOMBO: // ˜A‘ŏś
+ case MO_CHAINCOMBO: // 連打掌
damage = damage * (150 + 50 * skill_lv) / 100;
damage2 = damage2 * (150 + 50 * skill_lv) / 100;
div_ = 4;
break;
- case MO_COMBOFINISH: // –Ň—´Œ
+ case MO_COMBOFINISH: // 猛龍拳
damage = damage * (240 + 60 * skill_lv) / 100;
damage2 = damage2 * (240 + 60 * skill_lv) / 100;
break;
- case BA_MUSICALSTRIKE: // ƒ~ƒ…[ƒWƒJƒ‹ƒXƒgƒ‰ƒCƒN
+ case BA_MUSICALSTRIKE: // ミュージカルストライク
if (!sd->state.arrow_atk && sd->arrow_atk > 0)
{
int arr = MRAND ((sd->arrow_atk + 1));
@@ -3399,7 +3399,7 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
flag = (flag & ~BF_RANGEMASK) | BF_LONG;
sd->state.arrow_atk = 1;
break;
- case DC_THROWARROW: // –‚ż
+ case DC_THROWARROW: // 矢撃ち
if (!sd->state.arrow_atk && sd->arrow_atk > 0)
{
int arr = MRAND ((sd->arrow_atk + 1));
@@ -3416,50 +3416,50 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
flag = (flag & ~BF_RANGEMASK) | BF_LONG;
sd->state.arrow_atk = 1;
break;
- case CH_TIGERFIST: // •šŒŐŒ
+ case CH_TIGERFIST: // 伏虎拳
damage = damage * (100 + 20 * skill_lv) / 100;
damage2 = damage2 * (100 + 20 * skill_lv) / 100;
break;
- case CH_CHAINCRUSH: // ˜A’Œ•öŒ‚
+ case CH_CHAINCRUSH: // 連柱崩撃
damage = damage * (100 + 20 * skill_lv) / 100;
damage2 = damage2 * (100 + 20 * skill_lv) / 100;
div_ = skill_get_num (skill_num, skill_lv);
break;
- case CH_PALMSTRIKE: // –ŇŒŐd”hŽR
+ case CH_PALMSTRIKE: // 猛虎硬派山
damage = damage * (50 + 100 * skill_lv) / 100;
damage2 = damage2 * (50 + 100 * skill_lv) / 100;
break;
- case LK_SPIRALPIERCE: /* ƒXƒpƒCƒ‰ƒ‹ƒsƒA[ƒX */
- damage = damage * (100 + 50 * skill_lv) / 100; //‘‰Á—Ę‚Ş•Ş‚Š‚ç‚Č‚˘‚Ě‚Ĺ“K“–‚É
- damage2 = damage2 * (100 + 50 * skill_lv) / 100; //‘‰Á—Ę‚Ş•Ş‚Š‚ç‚Č‚˘‚Ě‚Ĺ“K“–‚É
+ case LK_SPIRALPIERCE: /* スパイラルピアース */
+ damage = damage * (100 + 50 * skill_lv) / 100; //増加量が分からないので適当に
+ damage2 = damage2 * (100 + 50 * skill_lv) / 100; //増加量が分からないので適当に
div_ = 5;
if (tsd)
tsd->canmove_tick = gettick () + 1000;
else if (tmd)
tmd->canmove_tick = gettick () + 1000;
break;
- case LK_HEADCRUSH: /* ƒwƒbƒhƒNƒ‰ƒbƒVƒ… */
+ case LK_HEADCRUSH: /* ヘッドクラッシュ */
damage = damage * (100 + 20 * skill_lv) / 100;
damage2 = damage2 * (100 + 20 * skill_lv) / 100;
break;
- case LK_JOINTBEAT: /* ƒWƒ‡ƒCƒ“ƒgƒr[ƒg */
+ case LK_JOINTBEAT: /* ジョイントビート */
damage = damage * (50 + 10 * skill_lv) / 100;
damage2 = damage2 * (50 + 10 * skill_lv) / 100;
break;
- case ASC_METEORASSAULT: /* ƒƒeƒIƒAƒTƒ‹ƒg */
+ case ASC_METEORASSAULT: /* メテオアサルト */
damage = damage * (40 + 40 * skill_lv) / 100;
damage2 = damage2 * (40 + 40 * skill_lv) / 100;
break;
- case SN_SHARPSHOOTING: /* ƒVƒƒ[ƒvƒVƒ…[ƒeƒBƒ“ƒO */
+ case SN_SHARPSHOOTING: /* シャープシューティング */
damage += damage * (30 * skill_lv) / 100;
damage2 += damage2 * (30 * skill_lv) / 100;
break;
- case CG_ARROWVULCAN: /* ƒAƒ[ƒoƒ‹ƒJƒ“ */
+ case CG_ARROWVULCAN: /* アローバルカン */
damage = damage * (160 + 40 * skill_lv) / 100;
damage2 = damage2 * (160 + 40 * skill_lv) / 100;
div_ = 9;
break;
- case AS_SPLASHER: /* ƒxƒiƒ€ƒXƒvƒ‰ƒbƒVƒƒ[ */
+ case AS_SPLASHER: /* ベナムスプラッシャー */
damage =
damage * (200 + 20 * skill_lv +
20 * pc_checkskill (sd,
@@ -3542,9 +3542,9 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
}
}
if (da == 2)
- { //ŽO’iś‚Ş”­“Ž‚ľ‚Ä‚˘‚é‚Š
+ { //三段掌が発動しているか
type = 0x08;
- div_ = 255; //ŽO’iś—p‚Ɂc
+ div_ = 255; //三段掌用に…
damage =
damage * (100 +
20 * pc_checkskill (sd, MO_TRIPLEATTACK)) / 100;
@@ -3552,11 +3552,11 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
if (skill_num != NPC_CRITICALSLASH)
{
- // ‘Î Ű‚Ě–hŒä—Í‚É‚ć‚éƒ_ƒ[ƒW‚ĚŒ¸­
- // ƒfƒBƒoƒCƒ“ƒvƒƒeƒNƒVƒ‡ƒ“i‚ą‚ą‚Ĺ‚˘‚˘‚Ě‚Š‚ȁHj
+ // 対 象の防御力によるダメージの減少
+ // ディバインプロテクション(ここでいいのかな?)
if (skill_num != MO_INVESTIGATE && skill_num != MO_EXTREMITYFIST
&& skill_num != KN_AUTOCOUNTER && def1 < 1000000)
- { //DEF, VIT–łŽ‹
+ { //DEF, VIT無視
int t_def;
target_count =
1 + battle_counttargeted (target, src,
@@ -3676,9 +3676,9 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
}
}
}
- // ¸˜Bƒ_ƒ[ƒW‚̒ljÁ
+ // 精錬ダメージの追加
if (skill_num != MO_INVESTIGATE && skill_num != MO_EXTREMITYFIST)
- { //DEF, VIT–łŽ‹
+ { //DEF, VIT無視
damage += battle_get_atk2 (src);
damage2 += battle_get_atk_2 (src);
}
@@ -3698,9 +3698,9 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
}
}
if (skill_num == LK_SPIRALPIERCE)
- { /* ƒXƒpƒCƒ‰ƒ‹ƒsƒA[ƒX */
+ { /* スパイラルピアース */
if (sd->equip_index[9] >= 0)
- { //d—ʂŒljÁƒ_ƒ[ƒW‚ç‚ľ‚˘‚Ě‚ĹƒV[ƒ‹ƒhƒu[ƒƒ‰ƒ“‚đŽQl‚ɒljÁ
+ { //重量で追加ダメージらしいのでシールドブーメランを参考に追加
int index = sd->equip_index[9];
if (sd->inventory_data[index]
&& sd->inventory_data[index]->type == 4)
@@ -3715,17 +3715,17 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
}
}
- // 0–˘–ž‚ž‚Á‚˝ę‡1‚ɕ␳
+ // 0未満だった場合1に補正
if (damage < 1)
damage = 1;
if (damage2 < 1)
damage2 = 1;
- // ƒXƒLƒ‹Cł‚QiC—űŒnj
- // C—űƒ_ƒ[ƒW(‰EŽč‚Ě‚Ý) ƒ\ƒjƒbƒNƒuƒ[Žž‚Í•Ęˆ—i1Œ‚‚É•t‚Ť1/8“K‰ž)
+ // スキル修正2(修練系)
+ // 修練ダメージ(右手のみ) ソニックブロー時は別処理(1撃に付き1/8適応)
if (skill_num != MO_INVESTIGATE && skill_num != MO_EXTREMITYFIST
&& skill_num != CR_GRANDCROSS)
- { //C—űƒ_ƒ[ƒW–łŽ‹
+ { //修練ダメージ無視
damage = battle_addmastery (sd, target, damage, 0);
damage2 = battle_addmastery (sd, target, damage2, 1);
}
@@ -3736,12 +3736,12 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
hitrate = 1000000;
}
- // ‰ń”đCł
+ // 回避修正
hitrate = (hitrate < 5) ? 5 : hitrate;
- if (hitrate < 1000000 && // •K’†UŒ‚
- (t_sc_data != NULL && (t_sc_data[SC_SLEEP].timer != -1 || // ‡–°‚Í•K’†
- t_sc_data[SC_STAN].timer != -1 || // ƒXƒ^ƒ“‚Í•K’†
- t_sc_data[SC_FREEZE].timer != -1 || (t_sc_data[SC_STONE].timer != -1 && t_sc_data[SC_STONE].val2 == 0)))) // “€Œ‹‚Í•K’†
+ if (hitrate < 1000000 && // 必中攻撃
+ (t_sc_data != NULL && (t_sc_data[SC_SLEEP].timer != -1 || // 睡眠は必中
+ t_sc_data[SC_STAN].timer != -1 || // スタンは必中
+ t_sc_data[SC_FREEZE].timer != -1 || (t_sc_data[SC_STONE].timer != -1 && t_sc_data[SC_STONE].val2 == 0)))) // 凍結は必中
hitrate = 1000000;
if (type == 0 && MRAND (100) >= hitrate)
{
@@ -3752,7 +3752,7 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
{
dmg_lv = ATK_DEF;
}
- // ƒXƒLƒ‹Cł‚Ri•ŠíŒ¤‹†j
+ // スキル修正3(武器研究)
if ((skill = pc_checkskill (sd, BS_WEAPONRESEARCH)) > 0)
{
damage += skill * 2;
@@ -3767,56 +3767,56 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
}
}
-//ƒXƒLƒ‹‚É‚ć‚éƒ_ƒ[ƒW•âł‚ą‚ą‚Ü‚Ĺ
+//スキルによるダメージ補正ここまで
-//ƒJ[ƒh‚É‚ć‚éƒ_ƒ[ƒW’ljÁˆ—‚ą‚ą‚Š‚ç
+//カードによるダメージ追加処理ここから
cardfix = 100;
if (!sd->state.arrow_atk)
- { //‹|–îˆČŠO
+ { //弓矢以外
if (!battle_config.left_cardfix_to_right)
- { //śŽčƒJ[ƒh•âłÝ’č–ł‚ľ
- cardfix = cardfix * (100 + sd->addrace[t_race]) / 100; // Ží‘°‚É‚ć‚éƒ_ƒ[ƒWCł
- cardfix = cardfix * (100 + sd->addele[t_ele]) / 100; // ‘ŽŤ‚É‚ć‚éƒ_ƒ[ƒWCł
- cardfix = cardfix * (100 + sd->addsize[t_size]) / 100; // ƒTƒCƒY‚É‚ć‚éƒ_ƒ[ƒWCł
+ { //左手カード補正設定無し
+ cardfix = cardfix * (100 + sd->addrace[t_race]) / 100; // 種族によるダメージ修正
+ cardfix = cardfix * (100 + sd->addele[t_ele]) / 100; // 属性によるダメージ修正
+ cardfix = cardfix * (100 + sd->addsize[t_size]) / 100; // サイズによるダメージ修正
}
else
{
- cardfix = cardfix * (100 + sd->addrace[t_race] + sd->addrace_[t_race]) / 100; // Ží‘°‚É‚ć‚éƒ_ƒ[ƒWCł(śŽč‚É‚ć‚é’ljÁ‚ ‚č)
- cardfix = cardfix * (100 + sd->addele[t_ele] + sd->addele_[t_ele]) / 100; // ‘ŽŤ‚É‚ć‚éƒ_ƒ[ƒWCł(śŽč‚É‚ć‚é’ljÁ‚ ‚č)
- cardfix = cardfix * (100 + sd->addsize[t_size] + sd->addsize_[t_size]) / 100; // ƒTƒCƒY‚É‚ć‚éƒ_ƒ[ƒWCł(śŽč‚É‚ć‚é’ljÁ‚ ‚č)
+ cardfix = cardfix * (100 + sd->addrace[t_race] + sd->addrace_[t_race]) / 100; // 種族によるダメージ修正(左手による追加あり)
+ cardfix = cardfix * (100 + sd->addele[t_ele] + sd->addele_[t_ele]) / 100; // 属性によるダメージ修正(左手による追加あり)
+ cardfix = cardfix * (100 + sd->addsize[t_size] + sd->addsize_[t_size]) / 100; // サイズによるダメージ修正(左手による追加あり)
}
}
else
- { //‹|–î
- cardfix = cardfix * (100 + sd->addrace[t_race] + sd->arrow_addrace[t_race]) / 100; // Ží‘°‚É‚ć‚éƒ_ƒ[ƒWCł(‹|–î‚É‚ć‚é’ljÁ‚ ‚č)
- cardfix = cardfix * (100 + sd->addele[t_ele] + sd->arrow_addele[t_ele]) / 100; // ‘ŽŤ‚É‚ć‚éƒ_ƒ[ƒWCł(‹|–î‚É‚ć‚é’ljÁ‚ ‚č)
- cardfix = cardfix * (100 + sd->addsize[t_size] + sd->arrow_addsize[t_size]) / 100; // ƒTƒCƒY‚É‚ć‚éƒ_ƒ[ƒWCł(‹|–î‚É‚ć‚é’ljÁ‚ ‚č)
+ { //弓矢
+ cardfix = cardfix * (100 + sd->addrace[t_race] + sd->arrow_addrace[t_race]) / 100; // 種族によるダメージ修正(弓矢による追加あり)
+ cardfix = cardfix * (100 + sd->addele[t_ele] + sd->arrow_addele[t_ele]) / 100; // 属性によるダメージ修正(弓矢による追加あり)
+ cardfix = cardfix * (100 + sd->addsize[t_size] + sd->arrow_addsize[t_size]) / 100; // サイズによるダメージ修正(弓矢による追加あり)
}
if (t_mode & 0x20)
- { //ƒ{ƒX
+ { //ボス
if (!sd->state.arrow_atk)
- { //‹|–îUŒ‚ˆČŠO‚Č‚ç
- if (!battle_config.left_cardfix_to_right) //śŽčƒJ[ƒh•âłÝ’č–ł‚ľ
- cardfix = cardfix * (100 + sd->addrace[10]) / 100; //ƒ{ƒXƒ‚ƒ“ƒXƒ^[‚ɒljÁƒ_ƒ[ƒW
- else //śŽčƒJ[ƒh•âłÝ’č‚ ‚č
- cardfix = cardfix * (100 + sd->addrace[10] + sd->addrace_[10]) / 100; //ƒ{ƒXƒ‚ƒ“ƒXƒ^[‚ɒljÁƒ_ƒ[ƒW(śŽč‚É‚ć‚é’ljÁ‚ ‚č)
+ { //弓矢攻撃以外なら
+ if (!battle_config.left_cardfix_to_right) //左手カード補正設定無し
+ cardfix = cardfix * (100 + sd->addrace[10]) / 100; //ボスモンスターに追加ダメージ
+ else //左手カード補正設定あり
+ cardfix = cardfix * (100 + sd->addrace[10] + sd->addrace_[10]) / 100; //ボスモンスターに追加ダメージ(左手による追加あり)
}
- else //‹|–îUŒ‚
- cardfix = cardfix * (100 + sd->addrace[10] + sd->arrow_addrace[10]) / 100; //ƒ{ƒXƒ‚ƒ“ƒXƒ^[‚ɒljÁƒ_ƒ[ƒW(‹|–î‚É‚ć‚é’ljÁ‚ ‚č)
+ else //弓矢攻撃
+ cardfix = cardfix * (100 + sd->addrace[10] + sd->arrow_addrace[10]) / 100; //ボスモンスターに追加ダメージ(弓矢による追加あり)
}
else
- { //ƒ{ƒX‚ś‚á‚Č‚˘
+ { //ボスじゃない
if (!sd->state.arrow_atk)
- { //‹|–îUŒ‚ˆČŠO
- if (!battle_config.left_cardfix_to_right) //śŽčƒJ[ƒh•âłÝ’č–ł‚ľ
- cardfix = cardfix * (100 + sd->addrace[11]) / 100; //ƒ{ƒXˆČŠOƒ‚ƒ“ƒXƒ^[‚ɒljÁƒ_ƒ[ƒW
- else //śŽčƒJ[ƒh•âłÝ’č‚ ‚č
- cardfix = cardfix * (100 + sd->addrace[11] + sd->addrace_[11]) / 100; //ƒ{ƒXˆČŠOƒ‚ƒ“ƒXƒ^[‚ɒljÁƒ_ƒ[ƒW(śŽč‚É‚ć‚é’ljÁ‚ ‚č)
+ { //弓矢攻撃以外
+ if (!battle_config.left_cardfix_to_right) //左手カード補正設定無し
+ cardfix = cardfix * (100 + sd->addrace[11]) / 100; //ボス以外モンスターに追加ダメージ
+ else //左手カード補正設定あり
+ cardfix = cardfix * (100 + sd->addrace[11] + sd->addrace_[11]) / 100; //ボス以外モンスターに追加ダメージ(左手による追加あり)
}
else
- cardfix = cardfix * (100 + sd->addrace[11] + sd->arrow_addrace[11]) / 100; //ƒ{ƒXˆČŠOƒ‚ƒ“ƒXƒ^[‚ɒljÁƒ_ƒ[ƒW(‹|–î‚É‚ć‚é’ljÁ‚ ‚č)
+ cardfix = cardfix * (100 + sd->addrace[11] + sd->arrow_addrace[11]) / 100; //ボス以外モンスターに追加ダメージ(弓矢による追加あり)
}
- //“Á’čClass—p•âłˆ—(­—‚Ě“ú‹L¨ƒ{ƒ“ƒSƒ“—pH)
+ //特定Class用補正処理(少女の日記→ボンゴン用?)
t_class = battle_get_class (target);
for (i = 0; i < sd->add_damage_class_count; i++)
{
@@ -3827,22 +3827,22 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
}
}
if (skill_num != CR_GRANDCROSS || !battle_config.gx_cardfix)
- damage = damage * cardfix / 100; //ƒJ[ƒh•âł‚É‚ć‚éƒ_ƒ[ƒW‘‰Á
-//ƒJ[ƒh‚É‚ć‚éƒ_ƒ[ƒW‘‰Áˆ—‚ą‚ą‚Ü‚Ĺ
+ damage = damage * cardfix / 100; //カード補正によるダメージ増加
+//カードによるダメージ増加処理ここまで
-//ƒJ[ƒh‚É‚ć‚éƒ_ƒ[ƒW’ljÁˆ—(śŽč)‚ą‚ą‚Š‚ç
+//カードによるダメージ追加処理(左手)ここから
cardfix = 100;
if (!battle_config.left_cardfix_to_right)
- { //śŽčƒJ[ƒh•âłÝ’č–ł‚ľ
- cardfix = cardfix * (100 + sd->addrace_[t_race]) / 100; // Ží‘°‚É‚ć‚éƒ_ƒ[ƒWCłśŽč
- cardfix = cardfix * (100 + sd->addele_[t_ele]) / 100; // ‘Ž Ť‚É‚ć‚éƒ_ƒ[ƒWCłśŽč
- cardfix = cardfix * (100 + sd->addsize_[t_size]) / 100; // ƒTƒCƒY‚É‚ć‚éƒ_ƒ[ƒWCłśŽč
- if (t_mode & 0x20) //ƒ{ƒX
- cardfix = cardfix * (100 + sd->addrace_[10]) / 100; //ƒ{ƒXƒ‚ƒ“ƒXƒ^[‚ɒljÁƒ_ƒ[ƒWśŽč
+ { //左手カード補正設定無し
+ cardfix = cardfix * (100 + sd->addrace_[t_race]) / 100; // 種族によるダメージ修正左手
+ cardfix = cardfix * (100 + sd->addele_[t_ele]) / 100; // 属 性によるダメージ修正左手
+ cardfix = cardfix * (100 + sd->addsize_[t_size]) / 100; // サイズによるダメージ修正左手
+ if (t_mode & 0x20) //ボス
+ cardfix = cardfix * (100 + sd->addrace_[10]) / 100; //ボスモンスターに追加ダメージ左手
else
- cardfix = cardfix * (100 + sd->addrace_[11]) / 100; //ƒ{ƒXˆČŠOƒ‚ƒ“ƒXƒ^[‚ɒljÁƒ_ƒ[ƒWśŽč
+ cardfix = cardfix * (100 + sd->addrace_[11]) / 100; //ボス以外モンスターに追加ダメージ左手
}
- //“Á’čClass—p•âłˆ—śŽč(­—‚Ě“ú‹L¨ƒ{ƒ“ƒSƒ“—pH)
+ //特定Class用補正処理左手(少女の日記→ボンゴン用?)
for (i = 0; i < sd->add_damage_class_count_; i++)
{
if (sd->add_damage_classid_[i] == t_class)
@@ -3852,24 +3852,24 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
}
}
if (skill_num != CR_GRANDCROSS)
- damage2 = damage2 * cardfix / 100; //ƒJ[ƒh•âł‚É‚ć‚鍶Žčƒ_ƒ[ƒW‘‰Á
-//ƒJ[ƒh‚É‚ć‚éƒ_ƒ[ƒW‘‰Áˆ—(śŽč)‚ą‚ą‚Ü‚Ĺ
+ damage2 = damage2 * cardfix / 100; //カード補正による左手ダメージ増加
+//カードによるダメージ増加処理(左手)ここまで
// -- moonsoul (cardfix for magic damage portion of ASC_BREAKER)
if (skill_num == ASC_BREAKER)
damage3 = damage3 * cardfix / 100;
-//ƒJ[ƒh‚É‚ć‚éƒ_ƒ[ƒWŒ¸Šˆ—‚ą‚ą‚Š‚ç
+//カードによるダメージ減衰処理ここから
if (tsd)
- { //‘ÎŰ‚ŞPC‚Ěę‡
+ { //対象がPCの場合
cardfix = 100;
- cardfix = cardfix * (100 - tsd->subrace[s_race]) / 100; // Ží‘°‚É‚ć‚éƒ_ƒ[ƒW‘ϐŤ
- cardfix = cardfix * (100 - tsd->subele[s_ele]) / 100; // ‘ŽŤ‚É‚ć‚éƒ_ƒ[ƒW‘ϐŤ
+ cardfix = cardfix * (100 - tsd->subrace[s_race]) / 100; // 種族によるダメージ耐性
+ cardfix = cardfix * (100 - tsd->subele[s_ele]) / 100; // 属性によるダメージ耐性
if (battle_get_mode (src) & 0x20)
- cardfix = cardfix * (100 - tsd->subrace[10]) / 100; //ƒ{ƒX‚Š‚ç‚̍UŒ‚‚̓_ƒ[ƒWŒ¸­
+ cardfix = cardfix * (100 - tsd->subrace[10]) / 100; //ボスからの攻撃はダメージ減少
else
- cardfix = cardfix * (100 - tsd->subrace[11]) / 100; //ƒ{ƒXˆČŠO‚Š‚ç‚̍UŒ‚‚̓_ƒ[ƒWŒ¸­
- //“Á’čClass—p•âłˆ—śŽč(­—‚Ě“ú‹L¨ƒ{ƒ“ƒSƒ“—pH)
+ cardfix = cardfix * (100 - tsd->subrace[11]) / 100; //ボス以外からの攻撃はダメージ減少
+ //特定Class用補正処理左手(少女の日記→ボンゴン用?)
for (i = 0; i < tsd->add_def_class_count; i++)
{
if (tsd->add_def_classid[i] == sd->status.class)
@@ -3879,27 +3879,27 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
}
}
if (flag & BF_LONG)
- cardfix = cardfix * (100 - tsd->long_attack_def_rate) / 100; //‰“‹——ŁUŒ‚‚̓_ƒ[ƒWŒ¸­(ƒzƒ‹ƒ“C‚Ć‚Š)
+ cardfix = cardfix * (100 - tsd->long_attack_def_rate) / 100; //遠距離攻撃はダメージ減少(ホルンCとか)
if (flag & BF_SHORT)
- cardfix = cardfix * (100 - tsd->near_attack_def_rate) / 100; //‹ß‹——ŁUŒ‚‚̓_ƒ[ƒWŒ¸­(ŠY“––ł‚ľH)
- damage = damage * cardfix / 100; //ƒJ[ƒh•âł‚É‚ć‚éƒ_ƒ[ƒWŒ¸­
- damage2 = damage2 * cardfix / 100; //ƒJ[ƒh•âł‚É‚ć‚鍶Žčƒ_ƒ[ƒWŒ¸­
+ cardfix = cardfix * (100 - tsd->near_attack_def_rate) / 100; //近距離攻撃はダメージ減少(該当無し?)
+ damage = damage * cardfix / 100; //カード補正によるダメージ減少
+ damage2 = damage2 * cardfix / 100; //カード補正による左手ダメージ減少
}
-//ƒJ[ƒh‚É‚ć‚éƒ_ƒ[ƒWŒ¸Šˆ—‚ą‚ą‚Ü‚Ĺ
+//カードによるダメージ減衰処理ここまで
-//‘ÎŰ‚ÉƒXƒe[ƒ^ƒXˆŮí‚Ş‚ ‚éę‡‚Ěƒ_ƒ[ƒWŒ¸ŽZˆ—‚ą‚ą‚Š‚ç
+//対象にステータス異常がある場合のダメージ減算処理ここから
if (t_sc_data)
{
cardfix = 100;
- if (t_sc_data[SC_DEFENDER].timer != -1 && flag & BF_LONG) //ƒfƒBƒtƒFƒ“ƒ_[ó‘Ԃʼn“‹——ŁUŒ‚
- cardfix = cardfix * (100 - t_sc_data[SC_DEFENDER].val2) / 100; //ƒfƒBƒtƒFƒ“ƒ_[‚É‚ć‚錸Š
+ if (t_sc_data[SC_DEFENDER].timer != -1 && flag & BF_LONG) //ディフェンダー状態で遠距離攻撃
+ cardfix = cardfix * (100 - t_sc_data[SC_DEFENDER].val2) / 100; //ディフェンダーによる減衰
if (cardfix != 100)
{
- damage = damage * cardfix / 100; //ƒfƒBƒtƒFƒ“ƒ_[•âł‚É‚ć‚éƒ_ƒ[ƒWŒ¸­
- damage2 = damage2 * cardfix / 100; //ƒfƒBƒtƒFƒ“ƒ_[•âł‚É‚ć‚鍶Žčƒ_ƒ[ƒWŒ¸­
+ damage = damage * cardfix / 100; //ディフェンダー補正によるダメージ減少
+ damage2 = damage2 * cardfix / 100; //ディフェンダー補正による左手ダメージ減少
}
if (t_sc_data[SC_ASSUMPTIO].timer != -1)
- { //ƒAƒXƒ€ƒvƒeƒBƒI
+ { //アスムプティオ
if (!map[target->m].flag.pvp)
{
damage = damage / 3;
@@ -3912,67 +3912,67 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
}
}
}
-//‘ÎŰ‚ÉƒXƒe[ƒ^ƒXˆŮí‚Ş‚ ‚éę‡‚Ěƒ_ƒ[ƒWŒ¸ŽZˆ—‚ą‚ą‚Ü‚Ĺ
+//対象にステータス異常がある場合のダメージ減算処理ここまで
if (damage < 0)
damage = 0;
if (damage2 < 0)
damage2 = 0;
- // ‘Ž Ť‚Ě“K—p
+ // 属 性の適用
damage = battle_attr_fix (damage, s_ele, battle_get_element (target));
damage2 = battle_attr_fix (damage2, s_ele_, battle_get_element (target));
- // Ż‚Ě‚Š‚Ż‚çA‹C‹…‚Ě“K—p
+ // 星のかけら、気球の適用
damage += sd->star;
damage2 += sd->star_;
damage += sd->spiritball * 3;
damage2 += sd->spiritball * 3;
if (sc_data && sc_data[SC_AURABLADE].timer != -1)
- { /* ƒI[ƒ‰ƒuƒŒ[ƒh •K’† */
+ { /* オーラブレード 必中 */
damage += sc_data[SC_AURABLADE].val1 * 10;
damage2 += sc_data[SC_AURABLADE].val1 * 10;
}
if (skill_num == PA_PRESSURE)
- { /* ƒvƒŒƒbƒVƒƒ[ •K’†? */
+ { /* プレッシャー 必中? */
damage = 700 + 100 * skill_lv;
damage2 = 700 + 100 * skill_lv;
}
- // >“ń“—Ź‚̍ś‰Eƒ_ƒ[ƒWŒvŽZ’N‚Š‚â‚Á‚Ä‚­‚ę‚Ľ‚Ľ‚Ľ‚Ľ‚Ś‚Ś‚ŚI
- // >map_session_data ‚ɍśŽčƒ_ƒ[ƒW(atk,atk2)’ljÁ‚ľ‚Ä
- // >pc_calcstatus()‚Ĺ‚â‚é‚ׂŤ‚Š‚ȁH
- // map_session_data ‚ɍśŽč•Ší(atk,atk2,ele,star,atkmods)’ljÁ‚ľ‚Ä
- // pc_calcstatus()‚Ĺƒf[ƒ^‚đ“ü—Í‚ľ‚Ä‚˘‚Ü‚ˇ
+ // >二刀流の左右ダメージ計算誰かやってくれぇぇぇぇえええ!
+ // >map_session_data に左手ダメージ(atk,atk2)追加して
+ // >pc_calcstatus()でやるべきかな?
+ // map_session_data に左手武器(atk,atk2,ele,star,atkmods)追加して
+ // pc_calcstatus()でデータを入力しています
- //śŽč‚Ě‚Ý•Ší‘•”ő
+ //左手のみ武器装備
if (sd->weapontype1 == 0 && sd->weapontype2 > 0)
{
damage = damage2;
damage2 = 0;
}
- // ‰EŽčAśŽčC—ű‚Ě“K—p
+ // 右手、左手修練の適用
if (sd->status.weapon > 16)
- { // “ń“—Ź‚Š?
+ { // 二刀流か?
int dmg = damage, dmg2 = damage2;
- // ‰EŽčC—ű(60% ` 100%) ‰EŽč‘S”Ę
+ // 右手修練(60% 〜 100%) 右手全般
skill = pc_checkskill (sd, AS_RIGHT);
damage = damage * (50 + (skill * 10)) / 100;
if (dmg > 0 && damage < 1)
damage = 1;
- // śŽčC—ű(40% ` 80%) śŽč‘S”Ę
+ // 左手修練(40% 〜 80%) 左手全般
skill = pc_checkskill (sd, AS_LEFT);
damage2 = damage2 * (30 + (skill * 10)) / 100;
if (dmg2 > 0 && damage2 < 1)
damage2 = 1;
}
- else //“ń“—Ź‚Ĺ‚Č‚Ż‚ę‚΍śŽčƒ_ƒ[ƒW‚Í0
+ else //二刀流でなければ左手ダメージは0
damage2 = 0;
- // ‰EŽč,’ZŒ•‚Ě‚Ý
+ // 右手,短剣のみ
if (da == 1)
- { //ƒ_ƒuƒ‹ƒAƒ^ƒbƒN‚Ş”­“Ž‚ľ‚Ä‚˘‚é‚Š
+ { //ダブルアタックが発動しているか
div_ = 2;
damage += damage;
type = 0x08;
@@ -3980,14 +3980,14 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
if (sd->status.weapon == 16)
{
- // ƒJƒ^[ƒ‹’ÇŒ‚ƒ_ƒ[ƒW
+ // カタール追撃ダメージ
skill = pc_checkskill (sd, TF_DOUBLE);
damage2 = damage * (1 + (skill * 2)) / 100;
if (damage > 0 && damage2 < 1)
damage2 = 1;
}
- // ƒCƒ“ƒxƒiƒ€Cł
+ // インベナム修正
if (skill_num == TF_POISON)
{
damage =
@@ -3999,7 +3999,7 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
damage = battle_attr_fix (damage, 0, battle_get_element (target));
}
- // ŠŽ‘S‰ń”đ‚Ě”ť’č
+ // 完全回避の判定
if (skill_num == 0 && skill_lv >= 0 && tsd != NULL && div_ < 255
&& MRAND (1000) < battle_get_flee2 (target))
{
@@ -4008,7 +4008,7 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
dmg_lv = ATK_LUCKY;
}
- // ‘ÎŰ‚ŞŠŽ‘S‰ń”đ‚đ‚ˇ‚éÝ’č‚ŞON‚Č‚ç
+ // 対象が完全回避をする設定がONなら
if (battle_config.enemy_perfect_flee)
{
if (skill_num == 0 && skill_lv >= 0 && tmd != NULL && div_ < 255
@@ -4020,7 +4020,7 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
}
}
- //Mob‚ĚMode‚ÉŠć‹­ƒtƒ‰ƒO‚Ş—§‚Á‚Ä‚˘‚é‚Ć‚Ť‚̏ˆ—
+ //MobのModeに頑強フラグが立っているときの処理
if (t_mode & 0x40)
{
if (damage > 0)
@@ -4029,23 +4029,23 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
damage2 = 1;
}
- //bNoWeaponDamage(Ý’čƒAƒCƒeƒ€–ł‚ľH)‚ĹƒOƒ‰ƒ“ƒhƒNƒƒX‚ś‚á‚Č‚˘ę‡‚̓_ƒ[ƒW‚Ş0
+ //bNoWeaponDamage(設定アイテム無し?)でグランドクロスじゃない場合はダメージが0
if (tsd && tsd->special_state.no_weapon_damage
&& skill_num != CR_GRANDCROSS)
damage = damage2 = 0;
if (skill_num != CR_GRANDCROSS && (damage > 0 || damage2 > 0))
{
- if (damage2 < 1) // ƒ_ƒ[ƒWĹICł
+ if (damage2 < 1) // ダメージ最終修正
damage =
battle_calc_damage (src, target, damage, div_, skill_num,
skill_lv, flag);
- else if (damage < 1) // ‰EŽč‚ރ~ƒXH
+ else if (damage < 1) // 右手がミス?
damage2 =
battle_calc_damage (src, target, damage2, div_, skill_num,
skill_lv, flag);
else
- { // —ź Žč/ƒJƒ^[ƒ‹‚Ěę‡‚Í‚ż‚ĺ‚Á‚ĆŒvŽZ‚â‚â‚ą‚ľ‚˘
+ { // 両 手/カタールの場合はちょっと計算ややこしい
int d1 = damage + damage2, d2 = damage2;
damage =
battle_calc_damage (src, target, damage + damage2, div_,
@@ -4094,7 +4094,7 @@ static struct Damage battle_calc_pc_weapon_attack (struct block_list *src,
}
/*==========================================
- * •Šíƒ_ƒ[ƒWŒvŽZ
+ * 武器ダメージ計算
*------------------------------------------
*/
struct Damage battle_calc_weapon_attack (struct block_list *src,
@@ -4104,7 +4104,7 @@ struct Damage battle_calc_weapon_attack (struct block_list *src,
{
struct Damage wd;
- //return‘O‚̏ˆ—‚Ş‚ ‚é‚Ě‚Ĺî•ńo—Í•”‚Ě‚Ý•ĎX
+ //return前の処理があるので情報出力部のみ変更
if (src == NULL || target == NULL)
{
nullpo_info (NLP_MARK);
@@ -4173,7 +4173,7 @@ struct Damage battle_calc_weapon_attack (struct block_list *src,
}
/*==========================================
- * –‚–@ƒ_ƒ[ƒWŒvŽZ
+ * 魔法ダメージ計算
*------------------------------------------
*/
struct Damage battle_calc_magic_attack (struct block_list *bl,
@@ -4192,7 +4192,7 @@ struct Damage battle_calc_magic_attack (struct block_list *bl,
struct map_session_data *sd = NULL, *tsd = NULL;
struct mob_data *tmd = NULL;
- //return‘O‚̏ˆ—‚Ş‚ ‚é‚Ě‚Ĺî•ńo—Í•”‚Ě‚Ý•ĎX
+ //return前の処理があるので情報出力部のみ変更
if (bl == NULL || target == NULL)
{
nullpo_info (NLP_MARK);
@@ -4227,24 +4227,24 @@ struct Damage battle_calc_magic_attack (struct block_list *bl,
if (skill_num > 0)
{
switch (skill_num)
- { // Šî–{ƒ_ƒ[ƒWŒvŽZ(ƒXƒLƒ‹‚˛‚Ć‚Éˆ—)
- // ƒq[ƒ‹orš‘Ě
+ { // 基本ダメージ計算(スキルごとに処理)
+ // ヒールor聖体
case AL_HEAL:
case PR_BENEDICTIO:
damage = skill_calc_heal (bl, skill_lv) / 2;
normalmagic_flag = 0;
break;
- case PR_ASPERSIO: /* ƒAƒXƒyƒ‹ƒVƒI */
- damage = 40; //ŒĹ’čƒ_ƒ[ƒW
+ case PR_ASPERSIO: /* アスペルシオ */
+ damage = 40; //固定ダメージ
normalmagic_flag = 0;
break;
- case PR_SANCTUARY: // ƒTƒ“ƒNƒ`ƒ…ƒAƒŠ
+ case PR_SANCTUARY: // サンクチュアリ
damage = (skill_lv > 6) ? 388 : skill_lv * 50;
normalmagic_flag = 0;
blewcount |= 0x10000;
break;
case ALL_RESURRECTION:
- case PR_TURNUNDEAD: // UŒ‚ƒŠƒUƒŒƒNƒVƒ‡ƒ“‚Ćƒ^[ƒ“ƒAƒ“ƒfƒbƒh
+ case PR_TURNUNDEAD: // 攻撃リザレクションとターンアンデッド
if (target->type != BL_PC
&& battle_check_undead (t_race, t_ele))
{
@@ -4257,10 +4257,10 @@ struct Damage battle_calc_magic_attack (struct block_list *bl,
if (thres > 700)
thres = 700;
// if(battle_config.battle_log)
-// printf("ƒ^[ƒ“ƒAƒ“ƒfƒbƒhI Šm—Ś%d ń(ç•Ş—Ś)\n", thres);
- if (MRAND (1000) < thres && !(t_mode & 0x20)) // ŹŒ÷
+// printf("ターンアンデッド! 確率%d ‰(千分率)\n", thres);
+ if (MRAND (1000) < thres && !(t_mode & 0x20)) // 成功
damage = hp;
- else // Ž¸”s
+ else // 失敗
damage =
battle_get_lv (bl) + battle_get_int (bl) +
skill_lv * 10;
@@ -4268,7 +4268,7 @@ struct Damage battle_calc_magic_attack (struct block_list *bl,
normalmagic_flag = 0;
break;
- case MG_NAPALMBEAT: // ƒiƒp[ƒ€ƒr[ƒgi•ŞŽUŒvŽZž‚݁j
+ case MG_NAPALMBEAT: // ナパームビート(分散計算込み)
MATK_FIX (70 + skill_lv * 10, 100);
if (flag > 0)
{
@@ -4281,7 +4281,7 @@ struct Damage battle_calc_magic_attack (struct block_list *bl,
("battle_calc_magic_attack(): napam enemy count=0 !\n");
}
break;
- case MG_FIREBALL: // ƒtƒ@ƒCƒ„[ƒ{[ƒ‹
+ case MG_FIREBALL: // ファイヤーボール
{
const int drate[] = { 100, 90, 70 };
if (flag > 2)
@@ -4290,9 +4290,9 @@ struct Damage battle_calc_magic_attack (struct block_list *bl,
MATK_FIX ((95 + skill_lv * 5) * drate[flag], 10000);
}
break;
- case MG_FIREWALL: // ƒtƒ@ƒCƒ„[ƒEƒH[ƒ‹
+ case MG_FIREWALL: // ファイヤーウォール
/*
- if( (t_ele!=3 && !battle_check_undead(t_race,t_ele)) || target->type==BL_PC ) //PC‚͉ΑŽŤ‚Ĺ‚ŕ”ň‚ԁH‚ť‚ŕ‚ť‚ŕƒ_ƒ[ƒWŽó‚Ż‚éH
+ if( (t_ele!=3 && !battle_check_undead(t_race,t_ele)) || target->type==BL_PC ) //PCは火属性でも飛ぶ?そもそもダメージ受ける?
blewcount |= 0x10000;
else
blewcount = 0;
@@ -4304,18 +4304,18 @@ struct Damage battle_calc_magic_attack (struct block_list *bl,
blewcount |= 0x10000;
MATK_FIX (1, 2);
break;
- case MG_THUNDERSTORM: // ƒTƒ“ƒ_[ƒXƒg[ƒ€
+ case MG_THUNDERSTORM: // サンダーストーム
MATK_FIX (80, 100);
break;
- case MG_FROSTDIVER: // ƒtƒƒXƒgƒ_ƒCƒo
+ case MG_FROSTDIVER: // フロストダイバ
MATK_FIX (100 + skill_lv * 10, 100);
break;
- case WZ_FROSTNOVA: // ƒtƒƒXƒgƒ_ƒCƒo
+ case WZ_FROSTNOVA: // フロストダイバ
MATK_FIX (((100 + skill_lv * 10) * (2 / 3)), 100);
break;
- case WZ_FIREPILLAR: // ƒtƒ@ƒCƒ„[ƒsƒ‰[
+ case WZ_FIREPILLAR: // ファイヤーピラー
if (mdef1 < 1000000)
- mdef1 = mdef2 = 0; // MDEF–łŽ‹
+ mdef1 = mdef2 = 0; // MDEF無視
MATK_FIX (1, 5);
matk1 += 50;
matk2 += 50;
@@ -4324,26 +4324,26 @@ struct Damage battle_calc_magic_attack (struct block_list *bl,
MATK_FIX (100 + skill_lv * 20, 100);
break;
case WZ_METEOR:
- case WZ_JUPITEL: // ƒ†ƒsƒeƒ‹ƒTƒ“ƒ_[
+ case WZ_JUPITEL: // ユピテルサンダー
break;
- case WZ_VERMILION: // ƒ[ƒhƒIƒuƒo[ƒ~ƒŠƒIƒ“
+ case WZ_VERMILION: // ロードオブバーミリオン
MATK_FIX (skill_lv * 20 + 80, 100);
break;
- case WZ_WATERBALL: // ƒEƒH[ƒ^[ƒ{[ƒ‹
+ case WZ_WATERBALL: // ウォーターボール
matk1 += skill_lv * 30;
matk2 += skill_lv * 30;
break;
- case WZ_STORMGUST: // ƒXƒg[ƒ€ƒKƒXƒg
+ case WZ_STORMGUST: // ストームガスト
MATK_FIX (skill_lv * 40 + 100, 100);
blewcount |= 0x10000;
break;
- case AL_HOLYLIGHT: // ƒz[ƒŠ[ƒ‰ƒCƒg
+ case AL_HOLYLIGHT: // ホーリーライト
MATK_FIX (125, 100);
break;
case AL_RUWACH:
MATK_FIX (145, 100);
break;
- case HW_NAPALMVULCAN: // ƒiƒp[ƒ€ƒr[ƒgi•ŞŽUŒvŽZž‚݁j
+ case HW_NAPALMVULCAN: // ナパームビート(分散計算込み)
MATK_FIX (70 + skill_lv * 10, 100);
if (flag > 0)
{
@@ -4360,7 +4360,7 @@ struct Damage battle_calc_magic_attack (struct block_list *bl,
}
if (normalmagic_flag)
- { // ˆę”Ę–‚–@ƒ_ƒ[ƒWŒvŽZ
+ { // 一般魔法ダメージ計算
int imdef_flag = 0;
if (matk1 > matk2)
damage = matk2 + MRAND ((matk1 - matk2 + 1));
@@ -4426,8 +4426,8 @@ struct Damage battle_calc_magic_attack (struct block_list *bl,
{
int s_class = battle_get_class (bl);
cardfix = 100;
- cardfix = cardfix * (100 - tsd->subele[ele]) / 100; // ‘Ž Ť‚É‚ć‚éƒ_ƒ[ƒW‘ϐŤ
- cardfix = cardfix * (100 - tsd->subrace[race]) / 100; // Ží‘°‚É‚ć‚éƒ_ƒ[ƒW‘ϐŤ
+ cardfix = cardfix * (100 - tsd->subele[ele]) / 100; // 属 性によるダメージ耐性
+ cardfix = cardfix * (100 - tsd->subrace[race]) / 100; // 種族によるダメージ耐性
cardfix = cardfix * (100 - tsd->magic_subrace[race]) / 100;
if (battle_get_mode (bl) & 0x20)
cardfix = cardfix * (100 - tsd->magic_subrace[10]) / 100;
@@ -4447,18 +4447,18 @@ struct Damage battle_calc_magic_attack (struct block_list *bl,
if (damage < 0)
damage = 0;
- damage = battle_attr_fix (damage, ele, battle_get_element (target)); // ‘Ž ŤCł
+ damage = battle_attr_fix (damage, ele, battle_get_element (target)); // 属 性修正
if (skill_num == CR_GRANDCROSS)
- { // ƒOƒ‰ƒ“ƒhƒNƒƒX
+ { // グランドクロス
struct Damage wd;
wd = battle_calc_weapon_attack (bl, target, skill_num, skill_lv,
flag);
damage = (damage + wd.damage) * (100 + 40 * skill_lv) / 100;
if (battle_config.gx_dupele)
- damage = battle_attr_fix (damage, ele, battle_get_element (target)); //‘ŽŤ2‰ń‚Š‚Š‚é
+ damage = battle_attr_fix (damage, ele, battle_get_element (target)); //属性2回かかる
if (bl == target)
- damage = damage / 2; //”˝“Ž‚Í”ź•Ş
+ damage = damage / 2; //反動は半分
}
div_ = skill_get_num (skill_num, skill_lv);
@@ -4479,10 +4479,10 @@ struct Damage battle_calc_magic_attack (struct block_list *bl,
damage = (damage * (100 - battle_config.gtb_pvp_only)) / 100;
}
else
- damage = 0; // ‰Š ‹ŕ峃J[ƒhi–‚–@ƒ_ƒ[ƒW‚Oj
+ damage = 0; // 黄 金蟲カード(魔法ダメージ0)
}
- damage = battle_calc_damage (bl, target, damage, div_, skill_num, skill_lv, aflag); // ĹICł
+ damage = battle_calc_damage (bl, target, damage, div_, skill_num, skill_lv, aflag); // 最終修正
/* magic_damage_return by [AppleGirl] and [Valaris] */
if (target->type == BL_PC && tsd && tsd->magic_damage_return > 0)
@@ -4508,7 +4508,7 @@ struct Damage battle_calc_magic_attack (struct block_list *bl,
}
/*==========================================
- * ‚ť‚Ě‘źƒ_ƒ[ƒWŒvŽZ
+ * その他ダメージ計算
*------------------------------------------
*/
struct Damage battle_calc_misc_attack (struct block_list *bl,
@@ -4527,7 +4527,7 @@ struct Damage battle_calc_misc_attack (struct block_list *bl,
int aflag = BF_MISC | BF_LONG | BF_SKILL;
- //return‘O‚̏ˆ—‚Ş‚ ‚é‚Ě‚Ĺî•ńo—Í•”‚Ě‚Ý•ĎX
+ //return前の処理があるので情報出力部のみ変更
if (bl == NULL || target == NULL)
{
nullpo_info (NLP_MARK);
@@ -4547,19 +4547,19 @@ struct Damage battle_calc_misc_attack (struct block_list *bl,
switch (skill_num)
{
- case HT_LANDMINE: // ƒ‰ƒ“ƒhƒ}ƒCƒ“
+ case HT_LANDMINE: // ランドマイン
damage = skill_lv * (dex + 75) * (100 + int_) / 100;
break;
- case HT_BLASTMINE: // ƒuƒ‰ƒXƒgƒ}ƒCƒ“
+ case HT_BLASTMINE: // ブラストマイン
damage = skill_lv * (dex / 2 + 50) * (100 + int_) / 100;
break;
- case HT_CLAYMORETRAP: // ƒNƒŒƒCƒ‚ƒA[ƒgƒ‰ƒbƒv
+ case HT_CLAYMORETRAP: // クレイモアートラップ
damage = skill_lv * (dex / 2 + 75) * (100 + int_) / 100;
break;
- case HT_BLITZBEAT: // ƒuƒŠƒbƒcƒr[ƒg
+ case HT_BLITZBEAT: // ブリッツビート
if (sd == NULL || (skill = pc_checkskill (sd, HT_STEELCROW)) <= 0)
skill = 0;
damage = (dex / 10 + int_ / 2 + skill * 3 + 40) * 2;
@@ -4567,22 +4567,22 @@ struct Damage battle_calc_misc_attack (struct block_list *bl,
damage /= flag;
break;
- case TF_THROWSTONE: // Î“Š‚°
+ case TF_THROWSTONE: // 石投げ
damage = 30;
damagefix = 0;
break;
- case BA_DISSONANCE: // •s‹Ś˜a‰š
+ case BA_DISSONANCE: // 不協和音
damage =
(skill_lv) * 20 + pc_checkskill (sd, BA_MUSICALLESSON) * 3;
break;
- case NPC_SELFDESTRUCTION: // ŽŠ”š
+ case NPC_SELFDESTRUCTION: // 自爆
damage = battle_get_hp (bl) - (bl == target ? 1 : 0);
damagefix = 0;
break;
- case NPC_SMOKING: // ƒ^ƒoƒR‚đ‹z‚¤
+ case NPC_SMOKING: // タバコを吸う
damage = 3;
damagefix = 0;
break;
@@ -4608,7 +4608,7 @@ struct Damage battle_calc_misc_attack (struct block_list *bl,
}
}
break;
- case SN_FALCONASSAULT: /* ƒtƒ@ƒ‹ƒRƒ“ƒAƒTƒ‹ƒg */
+ case SN_FALCONASSAULT: /* ファルコンアサルト */
skill = pc_checkskill (sd, HT_BLITZBEAT);
damage =
(100 + 50 * skill_lv +
@@ -4627,14 +4627,14 @@ struct Damage battle_calc_misc_attack (struct block_list *bl,
if (tsd)
{
cardfix = 100;
- cardfix = cardfix * (100 - tsd->subele[ele]) / 100; // ‘ŽŤ‚É‚ć‚éƒ_ƒ[ƒW‘ϐŤ
- cardfix = cardfix * (100 - tsd->subrace[race]) / 100; // Ží‘°‚É‚ć‚éƒ_ƒ[ƒW‘ϐŤ
+ cardfix = cardfix * (100 - tsd->subele[ele]) / 100; // 属性によるダメージ耐性
+ cardfix = cardfix * (100 - tsd->subrace[race]) / 100; // 種族によるダメージ耐性
cardfix = cardfix * (100 - tsd->misc_def_rate) / 100;
damage = damage * cardfix / 100;
}
if (damage < 0)
damage = 0;
- damage = battle_attr_fix (damage, ele, battle_get_element (target)); // ‘ŽŤCł
+ damage = battle_attr_fix (damage, ele, battle_get_element (target)); // 属性修正
}
div_ = skill_get_num (skill_num, skill_lv);
@@ -4649,7 +4649,7 @@ struct Damage battle_calc_misc_attack (struct block_list *bl,
damage = div_;
}
- damage = battle_calc_damage (bl, target, damage, div_, skill_num, skill_lv, aflag); // ĹICł
+ damage = battle_calc_damage (bl, target, damage, div_, skill_num, skill_lv, aflag); // 最終修正
md.damage = damage;
md.div_ = div_;
@@ -4664,7 +4664,7 @@ struct Damage battle_calc_misc_attack (struct block_list *bl,
}
/*==========================================
- * ƒ_ƒ[ƒWŒvŽZˆęŠ‡ˆ——p
+ * ダメージ計算一括処理用
*------------------------------------------
*/
struct Damage battle_calc_attack (int attack_type,
@@ -4696,7 +4696,7 @@ struct Damage battle_calc_attack (int attack_type,
}
/*==========================================
- * ’ʏíUŒ‚ˆ—‚Ü‚Ć‚ß
+ * 通常攻撃処理まとめ
*------------------------------------------
*/
int battle_weapon_attack (struct block_list *src, struct block_list *target,
@@ -4741,7 +4741,7 @@ int battle_weapon_attack (struct block_list *src, struct block_list *target,
if (battle_check_target (src, target, BCT_ENEMY) > 0 &&
battle_check_range (src, target, 0))
{
- // UŒ‚‘ÎŰ‚Ć‚Č‚č‚¤‚é‚Ě‚ĹUŒ‚
+ // 攻撃対象となりうるので攻撃
if (sd && sd->status.weapon == 11)
{
if (sd->equip_index[10] >= 0)
@@ -4833,14 +4833,14 @@ int battle_weapon_attack (struct block_list *src, struct block_list *target,
}
if (wd.div_ == 255 && sd)
- { //ŽO’iś
+ { //三段掌
int delay =
1000 - 4 * battle_get_agi (src) - 2 * battle_get_dex (src);
int skilllv;
if (wd.damage + wd.damage2 < battle_get_hp (target))
{
if ((skilllv = pc_checkskill (sd, MO_CHAINCOMBO)) > 0)
- delay += 300 * battle_config.combo_delay_rate / 100; //’ljÁƒfƒBƒŒƒC‚đconf‚É‚ć‚č’˛Ž
+ delay += 300 * battle_config.combo_delay_rate / 100; //追加ディレイをconfにより調整
skill_status_change_start (src, SC_COMBO, MO_TRIPLEATTACK,
skilllv, 0, 0, delay, 0);
@@ -4855,7 +4855,7 @@ int battle_weapon_attack (struct block_list *src, struct block_list *target,
{
clif_damage (src, target, tick, wd.amotion, wd.dmotion,
wd.damage, wd.div_, wd.type, wd.damage2);
- //“ń“—ŹśŽč‚ĆƒJƒ^[ƒ‹’ÇŒ‚‚Ěƒ~ƒX•\ŽŚ(–ł—‚â‚č`)
+ //二刀流左手とカタール追撃のミス表示(無理やり〜)
if (sd && sd->status.weapon >= 16 && wd.damage2 == 0)
clif_damage (src, target, tick + 10, wd.amotion, wd.dmotion,
0, 1, 0, 0);
@@ -4967,7 +4967,7 @@ int battle_weapon_attack (struct block_list *src, struct block_list *target,
skilllv, tick,
flag);
break;
- case 1: /* Žx‰‡Œn */
+ case 1: /* 支援系 */
if ((sc_data[SC_AUTOSPELL].val2 == AL_HEAL
|| (sc_data[SC_AUTOSPELL].val2 ==
ALL_RESURRECTION
@@ -5011,7 +5011,7 @@ int battle_weapon_attack (struct block_list *src, struct block_list *target,
[SC_AUTOSPELL].val2,
skilllv, tick, flag);
break;
- case 1: /* Žx‰‡Œn */
+ case 1: /* 支援系 */
if ((sc_data[SC_AUTOSPELL].val2 == AL_HEAL
|| (sc_data[SC_AUTOSPELL].val2 ==
ALL_RESURRECTION
@@ -5064,7 +5064,7 @@ int battle_weapon_attack (struct block_list *src, struct block_list *target,
skilllv, tick,
flag);
break;
- case 1: /* Žx‰‡Œn */
+ case 1: /* 支援系 */
if ((sd->autospell_id == AL_HEAL
|| (sd->autospell_id == ALL_RESURRECTION
&& target->type != BL_PC))
@@ -5154,7 +5154,7 @@ int battle_weapon_attack (struct block_list *src, struct block_list *target,
(int) target, (int) src,
skill_get_time2 (MO_BLADESTOP, lv), 0);
}
- if (t_sc_data && t_sc_data[SC_SPLASHER].timer != -1) //‰Ł‚Á‚˝‚Ě‚Ĺ‘ÎŰ‚Ěƒxƒiƒ€ƒXƒvƒ‰ƒbƒVƒƒ[ó‘Ô‚đ‰đœ
+ if (t_sc_data && t_sc_data[SC_SPLASHER].timer != -1) //殴ったので対象のベナムスプラッシャー状態を解除
skill_status_change_end (target, SC_SPLASHER, -1);
map_freeblock_unlock ();
@@ -5183,12 +5183,12 @@ int battle_check_undead (int race, int element)
}
/*==========================================
- * “G–Ą•ű”ť’č(1=m’č,0=”Ű’č,-1=ƒGƒ‰[)
- * flag&0xf0000 = 0x00000:“G‚ś‚á‚Č‚˘‚Š”ť’čiret:1“G‚Ĺ‚Í‚Č‚˘j
- * = 0x10000:ƒp[ƒeƒB[”ť’čiret:1=ƒp[ƒeƒB[ƒƒ“ƒo)
- * = 0x20000:‘S‚Ä(ret:1=“G–Ą•ű—ź•ű)
- * = 0x40000:“G‚Š”ť’č(ret:1=“G)
- * = 0x50000:ƒp[ƒeƒB[‚ś‚á‚Č‚˘‚Š”ť’č(ret:1=ƒp[ƒeƒB‚Ĺ‚Č‚˘)
+ * 敵味方判定(1=肯定,0=否定,-1=エラー)
+ * flag&0xf0000 = 0x00000:敵じゃないか判定(ret:1=敵ではない)
+ * = 0x10000:パーティー判定(ret:1=パーティーメンバ)
+ * = 0x20000:全て(ret:1=敵味方両方)
+ * = 0x40000:敵か判定(ret:1=敵)
+ * = 0x50000:パーティーじゃないか判定(ret:1=パーティでない)
*------------------------------------------
*/
int battle_check_target (struct block_list *src, struct block_list *target,
@@ -5201,7 +5201,7 @@ int battle_check_target (struct block_list *src, struct block_list *target,
nullpo_retr (0, target);
if (flag & 0x40000)
- { // ”˝“]ƒtƒ‰ƒO
+ { // 反転フラグ
int ret = battle_check_target (src, target, flag & 0x30000);
if (ret != -1)
return !ret;
@@ -5216,7 +5216,7 @@ int battle_check_target (struct block_list *src, struct block_list *target,
return -1;
}
- if (src->type == BL_SKILL && target->type == BL_SKILL) // ‘ÎŰ‚ŞƒXƒLƒ‹ƒ†ƒjƒbƒg‚Č‚ç–łđŒm’č
+ if (src->type == BL_SKILL && target->type == BL_SKILL) // 対象がスキルユニットなら無条件肯定
return -1;
if (target->type == BL_PC
@@ -5235,7 +5235,7 @@ int battle_check_target (struct block_list *src, struct block_list *target,
}
}
- // ƒXƒLƒ‹ƒ†ƒjƒbƒg‚Ěę‡Ae‚đ‹‚ß‚é
+ // スキルユニットの場合、親を求める
if (src->type == BL_SKILL)
{
int inf2 =
@@ -5257,25 +5257,25 @@ int battle_check_target (struct block_list *src, struct block_list *target,
return -1;
}
}
- // Mob‚Ĺmaster_id‚Ş‚ ‚Á‚Äspecial_mob_ai‚Č‚çA˘ŠŤŽĺ‚đ‹‚ß‚é
+ // Mobでmaster_idがあってspecial_mob_aiなら、召喚主を求める
if (src->type == BL_MOB)
{
struct mob_data *md = (struct mob_data *) src;
if (md && md->master_id > 0)
{
- if (md->master_id == target->id) // Žĺ‚Č‚çm’č
+ if (md->master_id == target->id) // 主なら肯定
return 1;
if (md->state.special_mob_ai)
{
if (target->type == BL_MOB)
- { //special_mob_ai‚Ĺ‘ÎŰ‚ŞMob
+ { //special_mob_aiで対象がMob
struct mob_data *tmd = (struct mob_data *) target;
if (tmd)
{
- if (tmd->master_id != md->master_id) //˘ŠŤŽĺ‚Şˆę‚Ĺ‚Č‚Ż‚ę‚Δےč
+ if (tmd->master_id != md->master_id) //召喚主が一緒でなければ否定
return 0;
else
- { //˘ŠŤŽĺ‚Şˆę‚Č‚Ě‚Ĺm’č‚ľ‚˝‚˘‚Ż‚ÇŽŠ”š‚͔ےč
+ { //召喚主が一緒なので肯定したいけど自爆は否定
if (md->state.special_mob_ai > 2)
return 0;
else
@@ -5289,20 +5289,20 @@ int battle_check_target (struct block_list *src, struct block_list *target,
}
}
- if (src == target || ss == target) // “Ż‚ś‚Č‚çm’č
+ if (src == target || ss == target) // 同じなら肯定
return 1;
if (target->type == BL_PC
&& pc_isinvisible ((struct map_session_data *) target))
return -1;
- if (src->prev == NULL || // Ž€‚ń‚Ĺ‚é‚Č‚çƒGƒ‰[
+ if (src->prev == NULL || // 死んでるならエラー
(src->type == BL_PC && pc_isdead ((struct map_session_data *) src)))
return -1;
if ((ss->type == BL_PC && target->type == BL_MOB) ||
(ss->type == BL_MOB && target->type == BL_PC))
- return 0; // PCvsMOB‚Č‚ç”Ű’č
+ return 0; // PCvsMOBなら否定
s_p = battle_get_party_id (ss);
s_g = battle_get_guild_id (ss);
@@ -5312,20 +5312,20 @@ int battle_check_target (struct block_list *src, struct block_list *target,
if (flag & 0x10000)
{
- if (s_p && t_p && s_p == t_p) // “Ż‚śƒp[ƒeƒB‚Č‚çm’či–Ą•űj
+ if (s_p && t_p && s_p == t_p) // 同じパーティなら肯定(味方)
return 1;
- else // ƒp[ƒeƒBŒŸő‚Č‚ç“Ż‚śƒp[ƒeƒB‚ś‚á‚Č‚˘Žž“_‚Ŕےč
+ else // パーティ検索なら同じパーティじゃない時点で否定
return 0;
}
- if (ss->type == BL_MOB && s_g > 0 && t_g > 0 && s_g == t_g) // “Ż‚śƒMƒ‹ƒh/mobƒNƒ‰ƒX‚Č‚çm’či–Ą•űj
+ if (ss->type == BL_MOB && s_g > 0 && t_g > 0 && s_g == t_g) // 同じギルド/mobクラスなら肯定(味方)
return 1;
//printf("ss:%d src:%d target:%d flag:0x%x %d %d ",ss->id,src->id,target->id,flag,src->type,target->type);
//printf("p:%d %d g:%d %d\n",s_p,t_p,s_g,t_g);
if (ss->type == BL_PC && target->type == BL_PC)
- { // —ź•űPVPƒ‚[ƒh‚Č‚ç”Ű’či“Gj
+ { // 両方PVPモードなら否定(敵)
struct skill_unit *su = NULL;
if (src->type == BL_SKILL)
su = (struct skill_unit *) src;
@@ -5367,9 +5367,9 @@ int battle_check_target (struct block_list *src, struct block_list *target,
&& g->alliance[i].guild_id == t_g)
{
if (g->alliance[i].opposition)
- return 0; //“G‘΃Mƒ‹ƒh‚Č‚ç–łđŒ‚É“G
+ return 0; //敵対ギルドなら無条件に敵
else
- return 1; //“Ż–żƒMƒ‹ƒh‚Č‚ç–łđŒ‚É–Ą•ű
+ return 1; //同盟ギルドなら無条件に味方
}
}
}
@@ -5377,11 +5377,11 @@ int battle_check_target (struct block_list *src, struct block_list *target,
}
}
- return 1; // ŠY“–‚ľ‚Č‚˘‚Ě‚Ĺ–łŠÖŒWl•¨i‚Ü‚ “G‚ś‚á‚Č‚˘‚Ě‚Ĺ–Ą•űj
+ return 1; // 該当しないので無関係人物(まあ敵じゃないので味方)
}
/*==========================================
- * ŽË’ö”ť’č
+ * 射程判定
*------------------------------------------
*/
int battle_check_range (struct block_list *src, struct block_list *bl,
@@ -5399,19 +5399,19 @@ int battle_check_range (struct block_list *src, struct block_list *bl,
dy = abs (bl->y - src->y);
arange = ((dx > dy) ? dx : dy);
- if (src->m != bl->m) // ˆá‚¤ƒ}ƒbƒv
+ if (src->m != bl->m) // 違うマップ
return 0;
- if (range > 0 && range < arange) // ‰“‚ˇ‚Ź‚é
+ if (range > 0 && range < arange) // 遠すぎる
return 0;
- if (arange < 2) // “Ż‚śƒ}ƒX‚Š—אÚ
+ if (arange < 2) // 同じマスか隣接
return 1;
// if(bl->type == BL_SKILL && ((struct skill_unit *)bl)->group->unit_id == 0x8d)
// return 1;
- // áŠQ•¨”ť’č
+ // 障害物判定
wpd.path_len = 0;
wpd.path_pos = 0;
wpd.path_half = 0;
@@ -5427,7 +5427,7 @@ int battle_check_range (struct block_list *src, struct block_list *bl,
/*==========================================
* Return numerical value of a switch configuration (modified by [Yor])
- * on/off, english, français, deutsch, espańol
+ * on/off, english, fran軋is, deutsch, espal
*------------------------------------------
*/
int battle_config_switch (const char *str)
@@ -5443,7 +5443,7 @@ int battle_config_switch (const char *str)
}
/*==========================================
- * Ý’čƒtƒ@ƒCƒ‹‚đ“ǂݍž‚Ţ
+ * 設定ファイルを読み込む
*------------------------------------------
*/
int battle_config_read (const char *cfgName)
diff --git a/src/map/battle.h b/src/map/battle.h
index 44016a5..3153925 100644
--- a/src/map/battle.h
+++ b/src/map/battle.h
@@ -2,7 +2,7 @@
#ifndef _BATTLE_H_
#define _BATTLE_H_
-// ƒ_ƒ[ƒW
+// ダメージ
struct Damage
{
int damage, damage2;
@@ -10,17 +10,17 @@ struct Damage
int amotion, dmotion;
int blewcount;
int flag;
- int dmg_lv; //ˆÍ‚Ü‚ęŒ¸ŽZŒvŽZ—p@0:ƒXƒLƒ‹UŒ‚ ATK_LUCKY,ATK_FLEE,ATK_DEF
+ int dmg_lv; //囲まれ減算計算用 0:スキル攻撃 ATK_LUCKY,ATK_FLEE,ATK_DEF
};
-// ‘ŽŤ•\i“ǂݍž‚Ý‚Ípc.cAbattle_attr_fix‚ĹŽg—pj
+// 属性表(読み込みはpc.c、battle_attr_fixで使用)
extern int attr_fix_table[4][10][10];
struct map_session_data;
struct mob_data;
struct block_list;
-// ƒ_ƒ[ƒWŒvŽZ
+// ダメージ計算
struct Damage battle_calc_attack (int attack_type,
struct block_list *bl,
@@ -38,15 +38,15 @@ struct Damage battle_calc_misc_attack (struct block_list *bl,
struct block_list *target,
int skill_num, int skill_lv, int flag);
-// ‘ŽŤCłŒvŽZ
+// 属性修正計算
int battle_attr_fix (int damage, int atk_elem, int def_elem);
-// ƒ_ƒ[ƒWĹIŒvŽZ
+// ダメージ最終計算
int battle_calc_damage (struct block_list *src, struct block_list *bl,
int damage, int div_, int skill_num, int skill_lv,
int flag);
enum
-{ // ĹIŒvŽZ‚Ěƒtƒ‰ƒO
+{ // 最終計算のフラグ
BF_WEAPON = 0x0001,
BF_MAGIC = 0x0002,
BF_MISC = 0x0004,
@@ -59,7 +59,7 @@ enum
BF_SKILLMASK = 0x0f00,
};
-// ŽŔŰ‚ÉHP‚đ‘Œ¸
+// 実際にHPを増減
int battle_delay_damage (unsigned int tick, struct block_list *src,
struct block_list *target, int damage, int flag);
int battle_damage (struct block_list *bl, struct block_list *target,
@@ -67,15 +67,15 @@ int battle_damage (struct block_list *bl, struct block_list *target,
int battle_heal (struct block_list *bl, struct block_list *target, int hp,
int sp, int flag);
-// UŒ‚‚âˆÚ“Ž‚đŽ~‚ß‚é
+// 攻撃や移動を止める
int battle_stopattack (struct block_list *bl);
int battle_stopwalking (struct block_list *bl, int type);
-// ’ʏíUŒ‚ˆ—‚Ü‚Ć‚ß
+// 通常攻撃処理まとめ
int battle_weapon_attack (struct block_list *bl, struct block_list *target,
unsigned int tick, int flag);
-// ŠeŽíƒpƒ‰ƒ[ƒ^‚đ“ž‚é
+// 各種パラメータを得る
int battle_counttargeted (struct block_list *bl, struct block_list *src,
int target_lv);
int battle_is_unarmed (struct block_list *bl);
@@ -107,7 +107,7 @@ int battle_get_amotion (struct block_list *bl);
int battle_get_dmotion (struct block_list *bl);
int battle_get_element (struct block_list *bl);
int battle_get_attack_element (struct block_list *bl);
-int battle_get_attack_element2 (struct block_list *bl); //śŽč•Ší‘ŽŤŽć“ž
+int battle_get_attack_element2 (struct block_list *bl); //左手武器属性取得
#define battle_get_elem_type(bl) (battle_get_element(bl)%10)
#define battle_get_elem_level(bl) (battle_get_element(bl)/10/2)
int battle_get_party_id (struct block_list *bl);
@@ -142,7 +142,7 @@ int battle_check_target (struct block_list *src, struct block_list *target,
int battle_check_range (struct block_list *src, struct block_list *bl,
int range);
-// Ý’č
+// 設定
int battle_config_switch (const char *str); // [Valaris]
diff --git a/src/map/chat.c b/src/map/chat.c
index 1005205..772ac4c 100644
--- a/src/map/chat.c
+++ b/src/map/chat.c
@@ -19,7 +19,7 @@
int chat_triggerevent (struct chat_data *cd);
/*==========================================
- * ƒ`ƒƒƒbƒgƒ‹[ƒ€ěŹ
+ * チャットルーム作成
*------------------------------------------
*/
int chat_createchat (struct map_session_data *sd, int limit, int pub,
@@ -63,7 +63,7 @@ int chat_createchat (struct map_session_data *sd, int limit, int pub,
}
/*==========================================
- * Šů‘śƒ`ƒƒƒbƒgƒ‹[ƒ€‚ÉŽQ‰Á
+ * 既存チャットルームに参加
*------------------------------------------
*/
int chat_joinchat (struct map_session_data *sd, int chatid, char *pass)
@@ -92,17 +92,17 @@ int chat_joinchat (struct map_session_data *sd, int chatid, char *pass)
pc_setchatid (sd, cd->bl.id);
- clif_joinchatok (sd, cd); // V‚˝‚ÉŽQ‰Á‚ľ‚˝l‚É‚Í‘Sˆő‚ĚƒŠƒXƒg
- clif_addchat (cd, sd); // Šů‚É’†‚É‹‚˝l‚ɂ͒ljÁ‚ľ‚˝l‚Ě•ń
- clif_dispchat (cd, 0); // ŽüˆÍ‚̐l‚ɂ͐l”•Ď‰ť•ń
+ clif_joinchatok (sd, cd); // 新たに参加した人には全員のリスト
+ clif_addchat (cd, sd); // 既に中に居た人には追加した人の報告
+ clif_dispchat (cd, 0); // 周囲の人には人数変化報告
- chat_triggerevent (cd); // ƒCƒxƒ“ƒg
+ chat_triggerevent (cd); // イベント
return 0;
}
/*==========================================
- * ƒ`ƒƒƒbƒgƒ‹[ƒ€‚Š‚甲‚Ż‚é
+ * チャットルームから抜ける
*------------------------------------------
*/
int chat_leavechat (struct map_session_data *sd)
@@ -124,17 +124,17 @@ int chat_leavechat (struct map_session_data *sd)
break;
}
}
- if (leavechar < 0) // ‚ť‚Ěchat‚ɏŠ‘Ž‚ľ‚Ä‚˘‚Č‚˘‚ç‚ľ‚˘ (ƒoƒOŽž‚Ě‚Ý)
+ if (leavechar < 0) // そのchatに所属していないらしい (バグ時のみ)
return -1;
if (leavechar == 0 && cd->users > 1 && (*cd->owner)->type == BL_PC)
{
- // Š—LŽŇ‚ž‚Á‚˝&‘ź‚ɐl‚Ş‹‚é&PC‚Ěƒ`ƒƒƒbƒg
+ // 所有者だった&他に人が居る&PCのチャット
clif_changechatowner (cd, cd->usersd[1]);
clif_clearchat (cd, 0);
}
- // ”˛‚Ż‚éPC‚É‚ŕ‘—‚é‚Ě‚Ĺusers‚đŒ¸‚ç‚ˇ‘O‚ÉŽŔs
+ // 抜けるPCにも送るのでusersを減らす前に実行
clif_leavechat (cd, sd);
cd->users--;
@@ -142,9 +142,9 @@ int chat_leavechat (struct map_session_data *sd)
if (cd->users == 0 && (*cd->owner)->type == BL_PC)
{
- // ‘Sˆő‹‚Č‚­‚Č‚Á‚˝&PC‚Ěƒ`ƒƒƒbƒg‚Č‚Ě‚ĹÁ‚ˇ
+ // 全員居なくなった&PCのチャットなので消す
clif_clearchat (cd, 0);
- map_delobject (cd->bl.id, BL_CHAT); // free‚Ü‚Ĺ‚ľ‚Ä‚­‚ę‚é
+ map_delobject (cd->bl.id, BL_CHAT); // freeまでしてくれる
}
else
{
@@ -152,7 +152,7 @@ int chat_leavechat (struct map_session_data *sd)
cd->usersd[i] = cd->usersd[i + 1];
if (leavechar == 0 && (*cd->owner)->type == BL_PC)
{
- // PC‚Ěƒ`ƒƒƒbƒg‚Č‚Ě‚ĹŠ—LŽŇ‚Ş”˛‚Ż‚˝‚Ě‚ĹˆĘ’u•ĎX
+ // PCのチャットなので所有者が抜けたので位置変更
cd->bl.x = cd->usersd[0]->bl.x;
cd->bl.y = cd->usersd[0]->bl.y;
}
@@ -163,7 +163,7 @@ int chat_leavechat (struct map_session_data *sd)
}
/*==========================================
- * ƒ`ƒƒƒbƒgƒ‹[ƒ€‚ĚŽ‚żŽĺ‚đ÷‚é
+ * チャットルームの持ち主を譲る
*------------------------------------------
*/
int chat_changechatowner (struct map_session_data *sd, char *nextownername)
@@ -186,31 +186,31 @@ int chat_changechatowner (struct map_session_data *sd, char *nextownername)
break;
}
}
- if (nextowner < 0) // ‚ť‚ń‚Ȑl‚Í‹‚Č‚˘
+ if (nextowner < 0) // そんな人は居ない
return -1;
clif_changechatowner (cd, cd->usersd[nextowner]);
- // ˆę’UÁ‚ˇ
+ // 一旦消す
clif_clearchat (cd, 0);
- // userlist‚̏‡”Ô•ĎX (0‚ޏŠ—LŽŇ‚Č‚Ě‚Ĺ)
+ // userlistの順番変更 (0が所有者なので)
if ((tmp_sd = cd->usersd[0]) == NULL)
- return 1; //‚ ‚č‚Ś‚é‚Ě‚Š‚ȁH
+ return 1; //ありえるのかな?
cd->usersd[0] = cd->usersd[nextowner];
cd->usersd[nextowner] = tmp_sd;
- // V‚ľ‚˘Š—LŽŇ‚ĚˆĘ’u‚Ö•ĎX
+ // 新しい所有者の位置へ変更
cd->bl.x = cd->usersd[0]->bl.x;
cd->bl.y = cd->usersd[0]->bl.y;
- // Ä“x•\ŽŚ
+ // 再度表示
clif_dispchat (cd, 0);
return 0;
}
/*==========================================
- * ƒ`ƒƒƒbƒg‚̏ó‘Ô(ƒ^ƒCƒgƒ‹“™)‚đ•ĎX
+ * チャットの状態(タイトル等)を変更
*------------------------------------------
*/
int chat_changechatstatus (struct map_session_data *sd, int limit, int pub,
@@ -239,7 +239,7 @@ int chat_changechatstatus (struct map_session_data *sd, int limit, int pub,
}
/*==========================================
- * ƒ`ƒƒƒbƒgƒ‹[ƒ€‚Š‚çR‚čo‚ˇ
+ * チャットルームから蹴り出す
*------------------------------------------
*/
int chat_kickchat (struct map_session_data *sd, char *kickusername)
@@ -261,7 +261,7 @@ int chat_kickchat (struct map_session_data *sd, char *kickusername)
break;
}
}
- if (kickuser < 0) // ‚ť‚ń‚Ȑl‚Í‹‚Č‚˘
+ if (kickuser < 0) // そんな人は居ない
return -1;
chat_leavechat (cd->usersd[kickuser]);
@@ -270,7 +270,7 @@ int chat_kickchat (struct map_session_data *sd, char *kickusername)
}
/*==========================================
- * npcƒ`ƒƒƒbƒgƒ‹[ƒ€ěŹ
+ * npcチャットルーム作成
*------------------------------------------
*/
int chat_createnpcchat (struct npc_data *nd, int limit, int pub, int trigger,
@@ -315,7 +315,7 @@ int chat_createnpcchat (struct npc_data *nd, int limit, int pub, int trigger,
}
/*==========================================
- * npcƒ`ƒƒƒbƒgƒ‹[ƒ€íœ
+ * npcチャットルーム削除
*------------------------------------------
*/
int chat_deletenpcchat (struct npc_data *nd)
@@ -327,14 +327,14 @@ int chat_deletenpcchat (struct npc_data *nd)
chat_npckickall (cd);
clif_clearchat (cd, 0);
- map_delobject (cd->bl.id, BL_CHAT); // free‚Ü‚Ĺ‚ľ‚Ä‚­‚ę‚é
+ map_delobject (cd->bl.id, BL_CHAT); // freeまでしてくれる
nd->chat_id = 0;
return 0;
}
/*==========================================
- * ‹K’čl”ˆČă‚ĹƒCƒxƒ“ƒg‚Ş’č‹`‚ł‚ę‚Ä‚é‚Č‚çŽŔs
+ * 規定人数以上でイベントが定義されてるなら実行
*------------------------------------------
*/
int chat_triggerevent (struct chat_data *cd)
@@ -347,7 +347,7 @@ int chat_triggerevent (struct chat_data *cd)
}
/*==========================================
- * ƒCƒxƒ“ƒg‚Ě—LŒř‰ť
+ * イベントの有効化
*------------------------------------------
*/
int chat_enableevent (struct chat_data *cd)
@@ -360,7 +360,7 @@ int chat_enableevent (struct chat_data *cd)
}
/*==========================================
- * ƒCƒxƒ“ƒg‚Ě–łŒř‰ť
+ * イベントの無効化
*------------------------------------------
*/
int chat_disableevent (struct chat_data *cd)
@@ -372,7 +372,7 @@ int chat_disableevent (struct chat_data *cd)
}
/*==========================================
- * ƒ`ƒƒƒbƒgƒ‹[ƒ€‚Š‚ç‘SˆőR‚čo‚ˇ
+ * チャットルームから全員蹴り出す
*------------------------------------------
*/
int chat_npckickall (struct chat_data *cd)
@@ -387,7 +387,7 @@ int chat_npckickall (struct chat_data *cd)
}
/*==========================================
- * I—š
+ * 終了
*------------------------------------------
*/
int do_final_chat (void)
diff --git a/src/map/chrif.c b/src/map/chrif.c
index fd2398b..4bcfa45 100644
--- a/src/map/chrif.c
+++ b/src/map/chrif.c
@@ -44,7 +44,7 @@ static int char_port = 6121;
static char userid[24], passwd[24];
static int chrif_state;
-// Ý’čƒtƒ@ƒCƒ‹“ǂݍž‚ÝŠÖŒW
+// 設定ファイル読み込み関係
/*==========================================
*
*------------------------------------------
@@ -147,7 +147,7 @@ int chrif_connect (int fd)
}
/*==========================================
- * ƒ}ƒbƒv‘—M
+ * マップ送信
*------------------------------------------
*/
int chrif_sendmap (int fd)
@@ -167,7 +167,7 @@ int chrif_sendmap (int fd)
}
/*==========================================
- * ƒ}ƒbƒvŽóM
+ * マップ受信
*------------------------------------------
*/
int chrif_recvmap (int fd)
@@ -175,7 +175,7 @@ int chrif_recvmap (int fd)
int i, j, ip, port;
unsigned char *p = (unsigned char *) &ip;
- if (chrif_state < 2) // ‚Ü‚ž€”ő’†
+ if (chrif_state < 2) // まだ準備中
return -1;
ip = RFIFOL (fd, 4);
@@ -194,7 +194,7 @@ int chrif_recvmap (int fd)
}
/*==========================================
- * ƒ}ƒbƒvŽIŠÔˆÚ“Ž‚Ě‚˝‚ß‚Ěƒf[ƒ^€”ő—v‹
+ * マップ鯖間移動のためのデータ準備要求
*------------------------------------------
*/
int chrif_changemapserver (struct map_session_data *sd, char *name, int x,
@@ -230,7 +230,7 @@ int chrif_changemapserver (struct map_session_data *sd, char *name, int x,
}
/*==========================================
- * ƒ}ƒbƒvŽIŠÔˆÚ“Žack
+ * マップ鯖間移動ack
*------------------------------------------
*/
int chrif_changemapserverack (int fd)
@@ -361,7 +361,7 @@ int chrif_charselectreq (struct map_session_data *sd)
}
/*==========================================
- * ƒLƒƒƒ‰–ź–₢‡‚í‚š
+ * キャラ名問い合わせ
*------------------------------------------
*/
int chrif_searchcharid (int char_id)
@@ -377,7 +377,7 @@ int chrif_searchcharid (int char_id)
}
/*==========================================
- * GM‚ɕωť—v‹
+ * GMに変化要求
*------------------------------------------
*/
int chrif_changegm (int id, const char *pass, int len)
@@ -633,7 +633,7 @@ int chrif_changedgm (int fd)
}
/*==========================================
- * Ť•Ę•Ď‰ťI—š (modified by Yor)
+ * 性別変化終了 (modified by Yor)
*------------------------------------------
*/
int chrif_changedsex (int fd)
@@ -705,7 +705,7 @@ int chrif_changedsex (int fd)
}
/*==========================================
- * ƒAƒJƒEƒ“ƒg•Ď”•Ű‘ś—v‹
+ * アカウント変数保存要求
*------------------------------------------
*/
int chrif_saveaccountreg2 (struct map_session_data *sd)
@@ -733,7 +733,7 @@ int chrif_saveaccountreg2 (struct map_session_data *sd)
}
/*==========================================
- * ƒAƒJƒEƒ“ƒg•Ď”’Ę’m
+ * アカウント変数通知
*------------------------------------------
*/
int chrif_accountreg2 (int fd)
@@ -1151,12 +1151,12 @@ int chrif_parse (int fd)
|| packet_len_table[cmd - 0x2af8] == 0)
{
- int r = intif_parse (fd); // intif‚É“n‚ˇ
+ int r = intif_parse (fd); // intifに渡す
if (r == 1)
- continue; // intif‚ŏˆ—‚ľ‚˝
+ continue; // intifで処理した
if (r == 2)
- return 0; // intif‚ŏˆ—‚ľ‚˝‚ށAƒf[ƒ^‚Ş‘Ť‚č‚Č‚˘
+ return 0; // intifで処理したが、データが足りない
session[fd]->eof = 1;
return 0;
@@ -1244,8 +1244,8 @@ int chrif_parse (int fd)
}
/*==========================================
- * timerŠÖ”
- * Ą‚ą‚ĚmapŽI‚ÉŒq‚Ş‚Á‚Ä‚˘‚éƒNƒ‰ƒCƒAƒ“ƒgl”‚đcharŽI‚Ö‘—‚é
+ * timer関数
+ * 今このmap鯖に繋がっているクライアント人数をchar鯖へ送る
*------------------------------------------
*/
int send_users_tochar (int tid, unsigned int tick, int id, int data)
@@ -1276,8 +1276,8 @@ int send_users_tochar (int tid, unsigned int tick, int id, int data)
}
/*==========================================
- * timerŠÖ”
- * charŽI‚Ƃ̐ڑą‚đŠm”F‚ľA‚ŕ‚ľŘ‚ę‚Ä‚˘‚˝‚çÄ“xÚ‘ą‚ˇ‚é
+ * timer関数
+ * char鯖との接続を確認し、もし切れていたら再度接続する
*------------------------------------------
*/
int check_connect_char_server (int tid, unsigned int tick, int id, int data)
diff --git a/src/map/guild.c b/src/map/guild.c
index edee837..1d328ea 100644
--- a/src/map/guild.c
+++ b/src/map/guild.c
@@ -35,17 +35,17 @@ struct eventlist
struct eventlist *next;
};
-// ƒMƒ‹ƒh‚ĚEXPƒLƒƒƒbƒVƒ…‚Ěƒtƒ‰ƒbƒVƒ…‚ÉŠÖ˜A‚ˇ‚é’萔
-#define GUILD_PAYEXP_INVERVAL 10000 // ŠÔŠu(ƒLƒƒƒbƒVƒ…‚ĚĹ‘ĺś‘śŽžŠÔAƒ~ƒŠ•b)
-#define GUILD_PAYEXP_LIST 8192 // ƒLƒƒƒbƒVƒ…‚ĚĹ‘ĺ”
+// ギルドのEXPキャッシュのフラッシュに関連する定数
+#define GUILD_PAYEXP_INVERVAL 10000 // 間隔(キャッシュの最大生存時間、ミリ秒)
+#define GUILD_PAYEXP_LIST 8192 // キャッシュの最大数
-// ƒMƒ‹ƒh‚ĚEXPƒLƒƒƒbƒVƒ…
+// ギルドのEXPキャッシュ
struct guild_expcache
{
int guild_id, account_id, char_id, exp;
};
-// ƒMƒ‹ƒhƒXƒLƒ‹db‚ĚƒAƒNƒZƒTiĄ‚Í’ź‘Ĺ‚ż‚Ĺ‘ă—pj
+// ギルドスキルdbのアクセサ(今は直打ちで代用)
int guild_skill_get_inf (int id)
{
return 0;
@@ -66,7 +66,7 @@ int guild_skill_get_max (int id)
return (id == 10004) ? 10 : 1;
}
-// ƒMƒ‹ƒhƒXƒLƒ‹‚Ş‚ ‚é‚ŠŠm”F
+// ギルドスキルがあるか確認
int guild_checkskill (struct guild *g, int id)
{
return g->skill[id - 10000].lv;
@@ -146,7 +146,7 @@ static int guild_read_castledb (void)
return 0;
}
-// ‰Šú‰ť
+// 初期化
void do_init_guild (void)
{
guild_db = numdb_init ();
@@ -164,7 +164,7 @@ void do_init_guild (void)
guild_payexp_timer, 0, 0, GUILD_PAYEXP_INVERVAL);
}
-// ŒŸő
+// 検索
struct guild *guild_search (int guild_id)
{
return numdb_search (guild_db, guild_id);
@@ -181,7 +181,7 @@ int guild_searchname_sub (void *key, void *data, va_list ap)
return 0;
}
-// ƒMƒ‹ƒh–źŒŸő
+// ギルド名検索
struct guild *guild_searchname (char *str)
{
struct guild *g = NULL;
@@ -194,7 +194,7 @@ struct guild_castle *guild_castle_search (int gcid)
return numdb_search (castle_db, gcid);
}
-// mapname‚ɑΉž‚ľ‚˝ƒAƒWƒg‚Ěgc‚đ•Ô‚ˇ
+// mapnameに対応したアジトのgcを返す
struct guild_castle *guild_mapname2gc (char *mapname)
{
int i;
@@ -210,7 +210,7 @@ struct guild_castle *guild_mapname2gc (char *mapname)
return NULL;
}
-// ƒƒOƒCƒ“’†‚ĚƒMƒ‹ƒhƒƒ“ƒo[‚Ě‚Pl‚Ěsd‚đ•Ô‚ˇ
+// ログイン中のギルドメンバーの1人のsdを返す
struct map_session_data *guild_getavailablesd (struct guild *g)
{
int i;
@@ -223,7 +223,7 @@ struct map_session_data *guild_getavailablesd (struct guild *g)
return NULL;
}
-// ƒMƒ‹ƒhƒƒ“ƒo[‚ĚƒCƒ“ƒfƒbƒNƒX‚đ•Ô‚ˇ
+// ギルドメンバーのインデックスを返す
int guild_getindex (struct guild *g, int account_id, int char_id)
{
int i;
@@ -235,7 +235,7 @@ int guild_getindex (struct guild *g, int account_id, int char_id)
return -1;
}
-// ƒMƒ‹ƒhƒƒ“ƒo[‚Ě–đE‚đ•Ô‚ˇ
+// ギルドメンバーの役職を返す
int guild_getposition (struct map_session_data *sd, struct guild *g)
{
int i;
@@ -250,7 +250,7 @@ int guild_getposition (struct map_session_data *sd, struct guild *g)
return -1;
}
-// ƒƒ“ƒo[î•ń‚̍쐬
+// メンバー情報の作成
void guild_makemember (struct guild_member *m, struct map_session_data *sd)
{
nullpo_retv (sd);
@@ -271,7 +271,7 @@ void guild_makemember (struct guild_member *m, struct map_session_data *sd)
return;
}
-// ƒMƒ‹ƒh‹Ł‡Šm”F
+// ギルド競合確認
int guild_check_conflict (struct map_session_data *sd)
{
nullpo_retr (0, sd);
@@ -281,7 +281,7 @@ int guild_check_conflict (struct map_session_data *sd)
return 0;
}
-// ƒMƒ‹ƒh‚ĚEXPƒLƒƒƒbƒVƒ…‚đinterŽI‚Ƀtƒ‰ƒbƒVƒ…‚ˇ‚é
+// ギルドのEXPキャッシュをinter鯖にフラッシュする
int guild_payexp_timer_sub (void *key, void *data, va_list ap)
{
int i, *dellist, *delp, dataid = (int) key;
@@ -401,7 +401,7 @@ int guild_created (int account_id, int guild_id)
return 0;
}
-// î•ń—v‹
+// 情報要求
int guild_request_info (int guild_id)
{
// if(battle_config.etc_log)
@@ -409,7 +409,7 @@ int guild_request_info (int guild_id)
return intif_guild_request_info (guild_id);
}
-// ƒCƒxƒ“ƒg•t‚Ťî•ń—v‹
+// イベント付き情報要求
int guild_npc_request_info (int guild_id, const char *event)
{
struct eventlist *ev;
@@ -432,7 +432,7 @@ int guild_npc_request_info (int guild_id, const char *event)
return guild_request_info (guild_id);
}
-// Š‘ŽƒLƒƒƒ‰‚ĚŠm”F
+// 所属キャラの確認
int guild_check_member (const struct guild *g)
{
int i;
@@ -448,7 +448,7 @@ int guild_check_member (const struct guild *g)
{
int j, f = 1;
for (j = 0; j < MAX_GUILD; j++)
- { // ƒf[ƒ^‚Ş‚ ‚é‚Š
+ { // データがあるか
if (g->member[j].account_id == sd->status.account_id)
f = 0;
}
@@ -467,7 +467,7 @@ int guild_check_member (const struct guild *g)
return 0;
}
-// î•ńŠ“žŽ¸”si‚ť‚ĚID‚ĚƒLƒƒƒ‰‚đ‘S•”–˘Š‘Ž‚É‚ˇ‚éj
+// 情報所得失敗(そのIDのキャラを全部未所属にする)
int guild_recv_noinfo (int guild_id)
{
int i;
@@ -483,7 +483,7 @@ int guild_recv_noinfo (int guild_id)
return 0;
}
-// î•ńŠ“ž
+// 情報所得
int guild_recv_info (struct guild *sg)
{
struct guild *g, before;
@@ -498,7 +498,7 @@ int guild_recv_info (struct guild *sg)
numdb_insert (guild_db, sg->guild_id, g);
before = *sg;
- // Ĺ‰‚Ěƒ[ƒh‚Č‚Ě‚Ĺƒ†[ƒU[‚Ěƒ`ƒFƒbƒN‚đs‚¤
+ // 最初のロードなのでユーザーのチェックを行う
guild_check_member (sg);
}
else
@@ -506,7 +506,7 @@ int guild_recv_info (struct guild *sg)
memcpy (g, sg, sizeof (struct guild));
for (i = bm = m = 0; i < g->max_member; i++)
- { // sd‚̐ݒč‚Ɛl”‚ĚŠm”F
+ { // sdの設定と人数の確認
if (g->member[i].account_id > 0)
{
struct map_session_data *sd = map_id2sd (g->member[i].account_id);
@@ -522,7 +522,7 @@ int guild_recv_info (struct guild *sg)
}
for (i = 0; i < g->max_member; i++)
- { // î•ń‚Ě‘—M
+ { // 情報の送信
struct map_session_data *sd = g->member[i].sd;
if (sd == NULL)
continue;
@@ -530,20 +530,20 @@ int guild_recv_info (struct guild *sg)
if (before.guild_lv != g->guild_lv || bm != m ||
before.max_member != g->max_member)
{
- clif_guild_basicinfo (sd); // Šî–{î•ń‘—M
- clif_guild_emblem (sd, g); // ƒGƒ“ƒuƒŒƒ€‘—M
+ clif_guild_basicinfo (sd); // 基本情報送信
+ clif_guild_emblem (sd, g); // エンブレム送信
}
if (bm != m)
- { // ƒƒ“ƒo[î•ń‘—M
+ { // メンバー情報送信
clif_guild_memberlist (g->member[i].sd);
}
if (before.skill_point != g->skill_point)
- clif_guild_skillinfo (sd); // ƒXƒLƒ‹î•ń‘—M
+ clif_guild_skillinfo (sd); // スキル情報送信
if (sd->guild_sended == 0)
- { // –˘‘—M‚Č‚çŠ‘Žî•ń‚ŕ‘—‚é
+ { // 未送信なら所属情報も送る
clif_guild_belonginfo (sd, g);
clif_guild_notice (sd, g);
sd->guild_emblem_id = g->emblem_id;
@@ -551,7 +551,7 @@ int guild_recv_info (struct guild *sg)
}
}
- // ƒCƒxƒ“ƒg‚Ě”­ś
+ // イベントの発生
if ((ev = numdb_search (guild_infoevent_db, sg->guild_id)) != NULL)
{
numdb_erase (guild_infoevent_db, sg->guild_id);
@@ -564,7 +564,7 @@ int guild_recv_info (struct guild *sg)
return 0;
}
-// ƒMƒ‹ƒh‚Ö‚ĚŠŠ—U
+// ギルドへの勧誘
int guild_invite (struct map_session_data *sd, int account_id)
{
struct map_session_data *tsd;
@@ -581,18 +581,18 @@ int guild_invite (struct map_session_data *sd, int account_id)
if (!battle_config.invite_request_check)
{
if (tsd->party_invite > 0 || tsd->trade_partner)
- { // ‘ŠŽč‚ŞŽćˆř’†‚Š‚Ç‚¤‚Š
+ { // 相手が取引中かどうか
clif_guild_inviteack (sd, 0);
return 0;
}
}
if (tsd->status.guild_id > 0 || tsd->guild_invite > 0)
- { // ‘ŠŽč‚̏Š‘ŽŠm”F
+ { // 相手の所属確認
clif_guild_inviteack (sd, 0);
return 0;
}
- // ’čˆőŠm”F
+ // 定員確認
for (i = 0; i < g->max_member; i++)
if (g->member[i].account_id == 0)
break;
@@ -609,7 +609,7 @@ int guild_invite (struct map_session_data *sd, int account_id)
return 0;
}
-// ƒMƒ‹ƒhŠŠ—U‚Ö‚Ě•Ô“š
+// ギルド勧誘への返答
int guild_reply_invite (struct map_session_data *sd, int guild_id, int flag)
{
struct map_session_data *tsd;
@@ -617,16 +617,16 @@ int guild_reply_invite (struct map_session_data *sd, int guild_id, int flag)
nullpo_retr (0, sd);
nullpo_retr (0, tsd = map_id2sd (sd->guild_invite_account));
- if (sd->guild_invite != guild_id) // ŠŠ—U‚ĆƒMƒ‹ƒhID‚ވႤ
+ if (sd->guild_invite != guild_id) // 勧誘とギルドIDが違う
return 0;
if (flag == 1)
- { // ł‘ř
+ { // 承諾
struct guild_member m;
struct guild *g;
int i;
- // ’čˆőŠm”F
+ // 定員確認
if ((g = guild_search (tsd->status.guild_id)) == NULL)
{
sd->guild_invite = 0;
@@ -644,13 +644,13 @@ int guild_reply_invite (struct map_session_data *sd, int guild_id, int flag)
return 0;
}
- //interŽI‚֒ljÁ—v‹
+ //inter鯖へ追加要求
guild_makemember (&m, sd);
intif_guild_addmember (sd->guild_invite, &m);
return 0;
}
else
- { // ‹‘”Ű
+ { // 拒否
sd->guild_invite = 0;
sd->guild_invite_account = 0;
if (tsd == NULL)
@@ -660,7 +660,7 @@ int guild_reply_invite (struct map_session_data *sd, int guild_id, int flag)
return 0;
}
-// ƒMƒ‹ƒhƒƒ“ƒo‚ޒljÁ‚ł‚ę‚˝
+// ギルドメンバが追加された
int guild_member_added (int guild_id, int account_id, int char_id, int flag)
{
struct map_session_data *sd = map_id2sd (account_id), *sd2;
@@ -671,11 +671,11 @@ int guild_member_added (int guild_id, int account_id, int char_id, int flag)
if ((sd == NULL || sd->guild_invite == 0) && flag == 0)
{
- // ƒLƒƒƒ‰‘¤‚É“o˜^‚Ĺ‚Ť‚Č‚Š‚Á‚˝‚˝‚ß’E‘Ţ—v‹‚đo‚ˇ
+ // キャラ側に登録できなかったため脱退要求を出す
if (battle_config.error_log)
printf ("guild: member added error %d is not online\n",
account_id);
- intif_guild_leave (guild_id, account_id, 0 /*char_id*/, 0, "**“o˜^Ž¸”s**");
+ intif_guild_leave (guild_id, account_id, 0 /*char_id*/, 0, "**登録失敗**");
return 0;
}
sd->guild_invite = 0;
@@ -684,26 +684,26 @@ int guild_member_added (int guild_id, int account_id, int char_id, int flag)
sd2 = map_id2sd (sd->guild_invite_account);
if (flag == 1)
- { // Ž¸”s
+ { // 失敗
if (sd2 != NULL)
clif_guild_inviteack (sd2, 3);
return 0;
}
- // ŹŒ÷
+ // 成功
sd->guild_sended = 0;
sd->status.guild_id = guild_id;
if (sd2 != NULL)
clif_guild_inviteack (sd2, 2);
- // ‚˘‚ż‚¨‚¤‹Ł‡Šm”F
+ // いちおう競合確認
guild_check_conflict (sd);
return 0;
}
-// ƒMƒ‹ƒh’E‘Ţ—v‹
+// ギルド脱退要求
int guild_leave (struct map_session_data *sd, int guild_id,
int account_id, int char_id, const char *mes)
{
@@ -722,7 +722,7 @@ int guild_leave (struct map_session_data *sd, int guild_id,
return 0;
for (i = 0; i < g->max_member; i++)
- { // Š‘Ž‚ľ‚Ä‚˘‚é‚Š
+ { // 所属しているか
if (g->member[i].account_id == sd->status.account_id)
{
intif_guild_leave (g->guild_id, sd->status.account_id,
@@ -733,7 +733,7 @@ int guild_leave (struct map_session_data *sd, int guild_id,
return 0;
}
-// ƒMƒ‹ƒh’Ç•ú—v‹
+// ギルド追放要求
int guild_explusion (struct map_session_data *sd, int guild_id,
int account_id, int char_id, const char *mes)
{
@@ -752,10 +752,10 @@ int guild_explusion (struct map_session_data *sd, int guild_id,
if ((ps = guild_getposition (sd, g)) < 0
|| !(g->position[ps].mode & 0x0010))
- return 0; // ˆ”ąŒ ŒŔ–ł‚ľ
+ return 0; // 処罰権限無し
for (i = 0; i < g->max_member; i++)
- { // Š‘Ž‚ľ‚Ä‚˘‚é‚Š
+ { // 所属しているか
if (g->member[i].account_id == account_id)
{
intif_guild_leave (g->guild_id, account_id, 0 /*char_id*/, 1, mes);
@@ -765,7 +765,7 @@ int guild_explusion (struct map_session_data *sd, int guild_id,
return 0;
}
-// ƒMƒ‹ƒhƒƒ“ƒo‚Ş’E‘Ţ‚ľ‚˝
+// ギルドメンバが脱退した
int guild_member_leaved (int guild_id, int account_id, int char_id, int flag,
const char *name, const char *mes)
{
@@ -802,7 +802,7 @@ int guild_member_leaved (int guild_id, int account_id, int char_id, int flag,
sd->guild_sended = 0;
}
- // ƒƒ“ƒo[ƒŠƒXƒg‚đ‘Sˆő‚ÉÄ’Ę’m
+ // メンバーリストを全員に再通知
for (i = 0; i < g->max_member; i++)
{
if (g->member[i].sd != NULL)
@@ -812,7 +812,7 @@ int guild_member_leaved (int guild_id, int account_id, int char_id, int flag,
return 0;
}
-// ƒMƒ‹ƒhƒƒ“ƒo‚ĚƒIƒ“ƒ‰ƒCƒ“ó‘Ô/LvXV‘—M
+// ギルドメンバのオンライン状態/Lv更新送信
int guild_send_memberinfoshort (struct map_session_data *sd, int online)
{
struct guild *g;
@@ -831,7 +831,7 @@ int guild_send_memberinfoshort (struct map_session_data *sd, int online)
sd->status.class);
if (!online)
- { // ƒƒOƒAƒEƒg‚ˇ‚é‚Č‚çsd‚đƒNƒŠƒA‚ľ‚ďI—š
+ { // ログアウトするならsdをクリアして終了
int i =
guild_getindex (g, sd->status.account_id, 0 /*char_id*/);
if (i >= 0)
@@ -839,16 +839,16 @@ int guild_send_memberinfoshort (struct map_session_data *sd, int online)
return 0;
}
- if (sd->guild_sended != 0) // ƒMƒ‹ƒh‰Šú‘—Mƒf[ƒ^‚Í‘—MĎ‚Ý
+ if (sd->guild_sended != 0) // ギルド初期送信データは送信済み
return 0;
- // ‹Ł‡Šm”F
+ // 競合確認
guild_check_conflict (sd);
- // ‚ ‚é‚Č‚çƒMƒ‹ƒh‰Šú‘—Mƒf[ƒ^‘—M
+ // あるならギルド初期送信データ送信
if ((g = guild_search (sd->status.guild_id)) != NULL)
{
- guild_check_member (g); // Š‘Ž‚đŠm”F‚ˇ‚é
+ guild_check_member (g); // 所属を確認する
if (sd->status.guild_id == g->guild_id)
{
clif_guild_belonginfo (sd, g);
@@ -860,7 +860,7 @@ int guild_send_memberinfoshort (struct map_session_data *sd, int online)
return 0;
}
-// ƒMƒ‹ƒhƒƒ“ƒo‚ĚƒIƒ“ƒ‰ƒCƒ“ó‘Ô/LvXV’Ę’m
+// ギルドメンバのオンライン状態/Lv更新通知
int guild_recv_memberinfoshort (int guild_id, int account_id, int char_id,
int online, int lv, int class)
{
@@ -897,22 +897,22 @@ int guild_recv_memberinfoshort (int guild_id, int account_id, int char_id,
g->average_lv = alv / c;
g->connect_member = om;
- if (oldonline != online) // ƒIƒ“ƒ‰ƒCƒ“ó‘Ô‚Ş•Ď‚í‚Á‚˝‚Ě‚Ĺ’Ę’m
+ if (oldonline != online) // オンライン状態が変わったので通知
clif_guild_memberlogin_notice (g, idx, online);
for (i = 0; i < g->max_member; i++)
- { // sdÄÝ’č
+ { // sd再設定
struct map_session_data *sd = map_id2sd (g->member[i].account_id);
g->member[i].sd = (sd != NULL &&
sd->status.guild_id == guild_id) ? sd : NULL;
}
- // ‚ą‚ą‚ɃNƒ‰ƒCƒAƒ“ƒg‚É‘—Mˆ—‚Ş•K—v
+ // ここにクライアントに送信処理が必要
return 0;
}
-// ƒMƒ‹ƒh‰ď˜b‘—M
+// ギルド会話送信
int guild_send_message (struct map_session_data *sd, char *mes, int len)
{
nullpo_retr (0, sd);
@@ -924,7 +924,7 @@ int guild_send_message (struct map_session_data *sd, char *mes, int len)
return 0;
}
-// ƒMƒ‹ƒh‰ď˜bŽóM
+// ギルド会話受信
int guild_recv_message (int guild_id, int account_id, char *mes, int len)
{
struct guild *g;
@@ -934,7 +934,7 @@ int guild_recv_message (int guild_id, int account_id, char *mes, int len)
return 0;
}
-// ƒMƒ‹ƒhƒƒ“ƒo‚Ě–đE•ĎX
+// ギルドメンバの役職変更
int guild_change_memberposition (int guild_id, int account_id, int char_id,
int idx)
{
@@ -942,7 +942,7 @@ int guild_change_memberposition (int guild_id, int account_id, int char_id,
GMI_POSITION, &idx, sizeof (idx));
}
-// ƒMƒ‹ƒhƒƒ“ƒo‚Ě–đE•ĎX’Ę’m
+// ギルドメンバの役職変更通知
int guild_memberposition_changed (struct guild *g, int idx, int pos)
{
nullpo_retr (0, g);
@@ -952,7 +952,7 @@ int guild_memberposition_changed (struct guild *g, int idx, int pos)
return 0;
}
-// ƒMƒ‹ƒh–đE•ĎX
+// ギルド役職変更
int guild_change_position (struct map_session_data *sd, int idx,
int mode, int exp_mode, const char *name)
{
@@ -970,7 +970,7 @@ int guild_change_position (struct map_session_data *sd, int idx,
return intif_guild_position (sd->status.guild_id, idx, &p);
}
-// ƒMƒ‹ƒh–đE•ĎX’Ę’m
+// ギルド役職変更通知
int guild_position_changed (int guild_id, int idx, struct guild_position *p)
{
struct guild *g = guild_search (guild_id);
@@ -981,7 +981,7 @@ int guild_position_changed (int guild_id, int idx, struct guild_position *p)
return 0;
}
-// ƒMƒ‹ƒh’m•ĎX
+// ギルド告知変更
int guild_change_notice (struct map_session_data *sd, int guild_id,
const char *mes1, const char *mes2)
{
@@ -1005,7 +1005,7 @@ int guild_change_notice (struct map_session_data *sd, int guild_id,
return intif_guild_notice (guild_id, mes1, mes2);
}
-// ƒMƒ‹ƒh’m•ĎX’Ę’m
+// ギルド告知変更通知
int guild_notice_changed (int guild_id, const char *mes1, const char *mes2)
{
int i;
@@ -1025,7 +1025,7 @@ int guild_notice_changed (int guild_id, const char *mes1, const char *mes2)
return 0;
}
-// ƒMƒ‹ƒhƒGƒ“ƒuƒŒƒ€•ĎX
+// ギルドエンブレム変更
int guild_change_emblem (struct map_session_data *sd, int len,
const char *data)
{
@@ -1046,7 +1046,7 @@ int guild_change_emblem (struct map_session_data *sd, int len,
return intif_guild_emblem (sd->status.guild_id, len, data);
}
-// ƒMƒ‹ƒhƒGƒ“ƒuƒŒƒ€•ĎX’Ę’m
+// ギルドエンブレム変更通知
int guild_emblem_changed (int len, int guild_id, int emblem_id,
const char *data)
{
@@ -1072,7 +1072,7 @@ int guild_emblem_changed (int len, int guild_id, int emblem_id,
return 0;
}
-// ƒMƒ‹ƒh‚ĚEXPă”[
+// ギルドのEXP上納
int guild_payexp (struct map_session_data *sd, int exp)
{
struct guild *g;
@@ -1110,7 +1110,7 @@ int guild_payexp (struct map_session_data *sd, int exp)
return exp2;
}
-// ƒXƒLƒ‹ƒ|ƒCƒ“ƒgŠ„‚čU‚č
+// スキルポイント割り振り
int guild_skillup (struct map_session_data *sd, int skill_num)
{
struct guild *g;
@@ -1133,7 +1133,7 @@ int guild_skillup (struct map_session_data *sd, int skill_num)
return 0;
}
-// ƒXƒLƒ‹ƒ|ƒCƒ“ƒgŠ„‚čU‚č’Ę’m
+// スキルポイント割り振り通知
int guild_skillupack (int guild_id, int skill_num, int account_id)
{
struct map_session_data *sd = map_id2sd (account_id);
@@ -1143,14 +1143,14 @@ int guild_skillupack (int guild_id, int skill_num, int account_id)
return 0;
if (sd != NULL)
clif_guild_skillup (sd, skill_num, g->skill[skill_num - 10000].lv);
- // ‘Sˆő‚É’Ę’m
+ // 全員に通知
for (i = 0; i < g->max_member; i++)
if ((sd = g->member[i].sd) != NULL)
clif_guild_skillinfo (sd);
return 0;
}
-// ƒMƒ‹ƒh“Ż–ż”Š“ž
+// ギルド同盟数所得
int guild_get_alliance_count (struct guild *g, int flag)
{
int i, c;
@@ -1165,7 +1165,7 @@ int guild_get_alliance_count (struct guild *g, int flag)
return c;
}
-// ƒMƒ‹ƒh“Ż–ż—v‹
+// ギルド同盟要求
int guild_reqalliance (struct map_session_data *sd, int account_id)
{
struct map_session_data *tsd = map_id2sd (account_id);
@@ -1194,19 +1194,19 @@ int guild_reqalliance (struct map_session_data *sd, int account_id)
|| !(g[0]->position[ps].mode & 0x0010))
return 0;
- if (guild_get_alliance_count (g[0], 0) > 3) // “Ż–ż”Šm”F
+ if (guild_get_alliance_count (g[0], 0) > 3) // 同盟数確認
clif_guild_allianceack (sd, 4);
if (guild_get_alliance_count (g[1], 0) > 3)
clif_guild_allianceack (sd, 3);
if (tsd->guild_alliance > 0)
- { // ‘ŠŽč‚Ş“Ż–ż—vżó‘Ô‚Š‚Ç‚¤‚ŠŠm”F
+ { // 相手が同盟要請状態かどうか確認
clif_guild_allianceack (sd, 1);
return 0;
}
for (i = 0; i < MAX_GUILDALLIANCE; i++)
- { // ‚ˇ‚Ĺ‚É“Ż–żó‘Ô‚ŠŠm”F
+ { // すでに同盟状態か確認
if (g[0]->alliance[i].guild_id == tsd->status.guild_id &&
g[0]->alliance[i].opposition == 0)
{
@@ -1222,7 +1222,7 @@ int guild_reqalliance (struct map_session_data *sd, int account_id)
return 0;
}
-// ƒMƒ‹ƒhŠŠ—U‚Ö‚Ě•Ô“š
+// ギルド勧誘への返答
int guild_reply_reqalliance (struct map_session_data *sd, int account_id,
int flag)
{
@@ -1231,14 +1231,14 @@ int guild_reply_reqalliance (struct map_session_data *sd, int account_id,
nullpo_retr (0, sd);
nullpo_retr (0, tsd = map_id2sd (account_id));
- if (sd->guild_alliance != tsd->status.guild_id) // ŠŠ—U‚ĆƒMƒ‹ƒhID‚ވႤ
+ if (sd->guild_alliance != tsd->status.guild_id) // 勧誘とギルドIDが違う
return 0;
if (flag == 1)
- { // ł‘ř
+ { // 承諾
int i;
- struct guild *g; // “Ż–ż”ÄŠm”F
+ struct guild *g; // 同盟数再確認
if ((g = guild_search (sd->status.guild_id)) == NULL ||
guild_get_alliance_count (g, 0) > 3)
{
@@ -1254,7 +1254,7 @@ int guild_reply_reqalliance (struct map_session_data *sd, int account_id,
return 0;
}
- // “G‘Ί֌W‚Č‚ç“G‘΂đŽ~‚ß‚é
+ // 敵対関係なら敵対を止める
if ((g = guild_search (sd->status.guild_id)) == NULL)
return 0;
for (i = 0; i < MAX_GUILDALLIANCE; i++)
@@ -1278,14 +1278,14 @@ int guild_reply_reqalliance (struct map_session_data *sd, int account_id,
sd->status.account_id, 9);
}
- // interŽI‚Ö“Ż–ż—vż
+ // inter鯖へ同盟要請
intif_guild_alliance (sd->status.guild_id, tsd->status.guild_id,
sd->status.account_id, tsd->status.account_id,
0);
return 0;
}
else
- { // ‹‘”Ű
+ { // 拒否
sd->guild_alliance = 0;
sd->guild_alliance_account = 0;
if (tsd != NULL)
@@ -1294,7 +1294,7 @@ int guild_reply_reqalliance (struct map_session_data *sd, int account_id,
return 0;
}
-// ƒMƒ‹ƒhŠÖŒW‰đÁ
+// ギルド関係解消
int guild_delalliance (struct map_session_data *sd, int guild_id, int flag)
{
if (agit_flag)
@@ -1323,7 +1323,7 @@ int guild_delalliance (struct map_session_data *sd, int guild_id, int flag)
return 0;
}
-// ƒMƒ‹ƒh“G‘Î
+// ギルド敵対
int guild_opposition (struct map_session_data *sd, int account_id /*char_id*/)
{
struct map_session_data *tsd = map_id2sd (account_id /*char_id*/);
@@ -1340,19 +1340,19 @@ int guild_opposition (struct map_session_data *sd, int account_id /*char_id*/)
|| !(g->position[ps].mode & 0x0010))
return 0;
- if (guild_get_alliance_count (g, 1) > 3) // “G‘ΐ”Šm”F
+ if (guild_get_alliance_count (g, 1) > 3) // 敵対数確認
clif_guild_oppositionack (sd, 1);
for (i = 0; i < MAX_GUILDALLIANCE; i++)
- { // ‚ˇ‚Ĺ‚ÉŠÖŒW‚đŽ‚Á‚Ä‚˘‚é‚ŠŠm”F
+ { // すでに関係を持っているか確認
if (g->alliance[i].guild_id == tsd->status.guild_id)
{
if (g->alliance[i].opposition == 1)
- { // ‚ˇ‚Ĺ‚É“G‘Î
+ { // すでに敵対
clif_guild_oppositionack (sd, 2);
return 0;
}
- else // “Ż–ż”jŠü
+ else // 同盟破棄
intif_guild_alliance (sd->status.guild_id,
tsd->status.guild_id,
sd->status.account_id,
@@ -1360,13 +1360,13 @@ int guild_opposition (struct map_session_data *sd, int account_id /*char_id*/)
}
}
- // interŽI‚É“G‘Ηvż
+ // inter鯖に敵対要請
intif_guild_alliance (sd->status.guild_id, tsd->status.guild_id,
sd->status.account_id, tsd->status.account_id, 1);
return 0;
}
-// ƒMƒ‹ƒh“Ż–ż/“G‘Î’Ę’m
+// ギルド同盟/敵対通知
int guild_allianceack (int guild_id1, int guild_id2, int account_id1,
int account_id2, int flag, const char *name1,
const char *name2)
@@ -1388,7 +1388,7 @@ int guild_allianceack (int guild_id1, int guild_id2, int account_id1,
}
if (flag & 0x70)
- { // Ž¸”s
+ { // 失敗
for (i = 0; i < 2 - (flag & 1); i++)
if (sd[i] != NULL)
clif_guild_allianceack (sd[i],
@@ -1399,7 +1399,7 @@ int guild_allianceack (int guild_id1, int guild_id2, int account_id1,
// printf("guild alliance_ack %d %d %d %d %d %s %s\n",guild_id1,guild_id2,account_id1,account_id2,flag,name1,name2);
if (!(flag & 0x08))
- { // ŠÖŒW’ljÁ
+ { // 関係追加
for (i = 0; i < 2 - (flag & 1); i++)
if (g[i] != NULL)
for (j = 0; j < MAX_GUILDALLIANCE; j++)
@@ -1413,7 +1413,7 @@ int guild_allianceack (int guild_id1, int guild_id2, int account_id1,
}
}
else
- { // ŠÖŒW‰đÁ
+ { // 関係解消
for (i = 0; i < 2 - (flag & 1); i++)
{
if (g[i] != NULL)
@@ -1424,24 +1424,24 @@ int guild_allianceack (int guild_id1, int guild_id2, int account_id1,
g[i]->alliance[j].guild_id = 0;
break;
}
- if (sd[i] != NULL) // ‰đÁ’Ę’m
+ if (sd[i] != NULL) // 解消通知
clif_guild_delalliance (sd[i], guild_id[1 - i], (flag & 1));
}
}
if ((flag & 0x0f) == 0)
- { // “Ż–ż’Ę’m
+ { // 同盟通知
if (sd[1] != NULL)
clif_guild_allianceack (sd[1], 2);
}
else if ((flag & 0x0f) == 1)
- { // “G‘Î’Ę’m
+ { // 敵対通知
if (sd[0] != NULL)
clif_guild_oppositionack (sd[0], 0);
}
for (i = 0; i < 2 - (flag & 1); i++)
- { // “Ż–ż/“G‘΃ŠƒXƒg‚ĚÄ‘—M
+ { // 同盟/敵対リストの再送信
struct map_session_data *sd;
if (g[i] != NULL)
for (j = 0; j < g[i]->max_member; j++)
@@ -1451,7 +1451,7 @@ int guild_allianceack (int guild_id1, int guild_id2, int account_id1,
return 0;
}
-// ƒMƒ‹ƒh‰đŽU’Ę’m—p
+// ギルド解散通知用
int guild_broken_sub (void *key, void *data, va_list ap)
{
struct guild *g = (struct guild *) data;
@@ -1462,7 +1462,7 @@ int guild_broken_sub (void *key, void *data, va_list ap)
nullpo_retr (0, g);
for (i = 0; i < MAX_GUILDALLIANCE; i++)
- { // ŠÖŒW‚đ”jŠü
+ { // 関係を破棄
if (g->alliance[i].guild_id == guild_id)
{
for (j = 0; j < g->max_member; j++)
@@ -1475,7 +1475,7 @@ int guild_broken_sub (void *key, void *data, va_list ap)
return 0;
}
-// ƒMƒ‹ƒh‰đŽU’Ę’m
+// ギルド解散通知
int guild_broken (int guild_id, int flag)
{
struct guild *g = guild_search (guild_id);
@@ -1485,7 +1485,7 @@ int guild_broken (int guild_id, int flag)
return 0;
for (i = 0; i < g->max_member; i++)
- { // ƒMƒ‹ƒh‰đŽU‚đ’Ę’m
+ { // ギルド解散を通知
if ((sd = g->member[i].sd) != NULL)
{
if (sd->state.storage_flag == 2)
@@ -1503,7 +1503,7 @@ int guild_broken (int guild_id, int flag)
return 0;
}
-// ƒMƒ‹ƒh‰đŽU
+// ギルド解散
int guild_break (struct map_session_data *sd, char *name)
{
struct guild *g;
@@ -1533,13 +1533,13 @@ int guild_break (struct map_session_data *sd, char *name)
return 0;
}
-// ƒMƒ‹ƒhéƒf[ƒ^—v‹
+// ギルド城データ要求
int guild_castledataload (int castle_id, int index)
{
return intif_guild_castle_dataload (castle_id, index);
}
-// ƒMƒ‹ƒhéî•ńŠ“žŽžƒCƒxƒ“ƒg’ljÁ
+// ギルド城情報所得時イベント追加
int guild_addcastleinfoevent (int castle_id, int index, const char *name)
{
struct eventlist *ev;
@@ -1555,7 +1555,7 @@ int guild_addcastleinfoevent (int castle_id, int index, const char *name)
return 0;
}
-// ƒMƒ‹ƒhéƒf[ƒ^—v‹•ÔM
+// ギルド城データ要求返信
int guild_castledataloadack (int castle_id, int index, int value)
{
struct guild_castle *gc = guild_castle_search (castle_id);
@@ -1659,13 +1659,13 @@ int guild_castledataloadack (int castle_id, int index, int value)
return 1;
}
-// ƒMƒ‹ƒhéƒf[ƒ^•ĎX—v‹
+// ギルド城データ変更要求
int guild_castledatasave (int castle_id, int index, int value)
{
return intif_guild_castle_datasave (castle_id, index, value);
}
-// ƒMƒ‹ƒhéƒf[ƒ^•ĎX’Ę’m
+// ギルド城データ変更通知
int guild_castledatasaveack (int castle_id, int index, int value)
{
struct guild_castle *gc = guild_castle_search (castle_id);
@@ -1758,7 +1758,7 @@ int guild_castledatasaveack (int castle_id, int index, int value)
return 1;
}
-// ƒMƒ‹ƒhƒf[ƒ^ˆęŠ‡ŽóMi‰Šú‰ťŽžj
+// ギルドデータ一括受信(初期化時)
int guild_castlealldataload (int len, struct guild_castle *gc)
{
int i;
@@ -1766,14 +1766,14 @@ int guild_castlealldataload (int len, struct guild_castle *gc)
nullpo_retr (0, gc);
- // ƒCƒxƒ“ƒg•t‚Ť‚Ĺ—v‹‚ˇ‚éƒf[ƒ^ˆĘ’u‚đ’T‚ˇ(ĹŒă‚̐苒ƒf[ƒ^)
+ // イベント付きで要求するデータ位置を探す(最後の占拠データ)
for (i = 0; i < n; i++)
{
if ((gc + i)->guild_id)
ev = i;
}
- // éƒf[ƒ^Ši”[‚ĆƒMƒ‹ƒhî•ń—v‹
+ // 城データ格納とギルド情報要求
for (i = 0; i < n; i++, gc++)
{
struct guild_castle *c = guild_castle_search (gc->castle_id);
diff --git a/src/map/intif.c b/src/map/intif.c
index 6945486..efde695 100644
--- a/src/map/intif.c
+++ b/src/map/intif.c
@@ -48,11 +48,11 @@ static const int packet_len_table[] = {
11, -1, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
-extern int char_fd; // inter server‚Ěfd‚Íchar_fd‚đŽg‚¤
-#define inter_fd (char_fd) // ƒGƒCƒŠƒAƒX
+extern int char_fd; // inter serverのfdはchar_fdを使う
+#define inter_fd (char_fd) // エイリアス
//-----------------------------------------------------------------
-// inter server‚Ö‚Ě‘—M
+// inter serverへの送信
// Message for all GMs on all map servers
int intif_GMmessage (char *mes, int len, int flag)
@@ -120,7 +120,7 @@ int intif_wis_message_to_gm (char *Wisp_name, int min_gm_level, char *mes,
return 0;
}
-// ƒAƒJƒEƒ“ƒg•Ď”‘—M
+// アカウント変数送信
int intif_saveaccountreg (struct map_session_data *sd)
{
int j, p;
@@ -139,7 +139,7 @@ int intif_saveaccountreg (struct map_session_data *sd)
return 0;
}
-// ƒAƒJƒEƒ“ƒg•Ď”—v‹
+// アカウント変数要求
int intif_request_accountreg (struct map_session_data *sd)
{
nullpo_retr (0, sd);
@@ -150,7 +150,7 @@ int intif_request_accountreg (struct map_session_data *sd)
return 0;
}
-// ‘qŒÉƒf[ƒ^—v‹
+// 倉庫データ要求
int intif_request_storage (int account_id)
{
WFIFOW (inter_fd, 0) = 0x3010;
@@ -159,7 +159,7 @@ int intif_request_storage (int account_id)
return 0;
}
-// ‘qŒÉƒf[ƒ^‘—M
+// 倉庫データ送信
int intif_send_storage (struct storage *stor)
{
nullpo_retr (0, stor);
@@ -191,7 +191,7 @@ int intif_send_guild_storage (int account_id, struct guild_storage *gstor)
return 0;
}
-// ƒp[ƒeƒBěŹ—v‹
+// パーティ作成要求
int intif_create_party (struct map_session_data *sd, char *name)
{
nullpo_retr (0, sd);
@@ -208,7 +208,7 @@ int intif_create_party (struct map_session_data *sd, char *name)
return 0;
}
-// ƒp[ƒeƒBî•ń—v‹
+// パーティ情報要求
int intif_request_partyinfo (int party_id)
{
WFIFOW (inter_fd, 0) = 0x3021;
@@ -219,7 +219,7 @@ int intif_request_partyinfo (int party_id)
return 0;
}
-// ƒp[ƒeƒB’ljÁ—v‹
+// パーティ追加要求
int intif_party_addmember (int party_id, int account_id)
{
struct map_session_data *sd;
@@ -239,7 +239,7 @@ int intif_party_addmember (int party_id, int account_id)
return 0;
}
-// ƒp[ƒeƒBÝ’č•ĎX
+// パーティ設定変更
int intif_party_changeoption (int party_id, int account_id, int exp, int item)
{
WFIFOW (inter_fd, 0) = 0x3023;
@@ -251,7 +251,7 @@ int intif_party_changeoption (int party_id, int account_id, int exp, int item)
return 0;
}
-// ƒp[ƒeƒB’E‘Ţ—v‹
+// パーティ脱退要求
int intif_party_leave (int party_id, int account_id)
{
// if(battle_config.etc_log)
@@ -263,7 +263,7 @@ int intif_party_leave (int party_id, int account_id)
return 0;
}
-// ƒp[ƒeƒBˆÚ“Ž—v‹
+// パーティ移動要求
int intif_party_changemap (struct map_session_data *sd, int online)
{
if (sd != NULL)
@@ -281,7 +281,7 @@ int intif_party_changemap (struct map_session_data *sd, int online)
return 0;
}
-// ƒp[ƒeƒB[‰đŽU—v‹
+// パーティー解散要求
int intif_break_party (int party_id)
{
WFIFOW (inter_fd, 0) = 0x3026;
@@ -290,7 +290,7 @@ int intif_break_party (int party_id)
return 0;
}
-// ƒp[ƒeƒB‰ď˜b‘—M
+// パーティ会話送信
int intif_party_message (int party_id, int account_id, char *mes, int len)
{
// if(battle_config.etc_log)
@@ -304,7 +304,7 @@ int intif_party_message (int party_id, int account_id, char *mes, int len)
return 0;
}
-// ƒp[ƒeƒB‹Ł‡ƒ`ƒFƒbƒN—v‹
+// パーティ競合チェック要求
int intif_party_checkconflict (int party_id, int account_id, char *nick)
{
WFIFOW (inter_fd, 0) = 0x3028;
@@ -315,7 +315,7 @@ int intif_party_checkconflict (int party_id, int account_id, char *nick)
return 0;
}
-// ƒMƒ‹ƒhěŹ—v‹
+// ギルド作成要求
int intif_guild_create (const char *name, const struct guild_member *master)
{
nullpo_retr (0, master);
@@ -329,7 +329,7 @@ int intif_guild_create (const char *name, const struct guild_member *master)
return 0;
}
-// ƒMƒ‹ƒhî•ń—v‹
+// ギルド情報要求
int intif_guild_request_info (int guild_id)
{
WFIFOW (inter_fd, 0) = 0x3031;
@@ -338,7 +338,7 @@ int intif_guild_request_info (int guild_id)
return 0;
}
-// ƒMƒ‹ƒhƒƒ“ƒo’ljÁ—v‹
+// ギルドメンバ追加要求
int intif_guild_addmember (int guild_id, struct guild_member *m)
{
WFIFOW (inter_fd, 0) = 0x3032;
@@ -349,7 +349,7 @@ int intif_guild_addmember (int guild_id, struct guild_member *m)
return 0;
}
-// ƒMƒ‹ƒhƒƒ“ƒo’E‘Ţ/’Ç•ú—v‹
+// ギルドメンバ脱退/追放要求
int intif_guild_leave (int guild_id, int account_id, int char_id, int flag,
const char *mes)
{
@@ -363,7 +363,7 @@ int intif_guild_leave (int guild_id, int account_id, int char_id, int flag,
return 0;
}
-// ƒMƒ‹ƒhƒƒ“ƒo‚ĚƒIƒ“ƒ‰ƒCƒ“ó‹ľ/LvXV—v‹
+// ギルドメンバのオンライン状況/Lv更新要求
int intif_guild_memberinfoshort (int guild_id,
int account_id, int char_id, int online,
int lv, int class)
@@ -379,7 +379,7 @@ int intif_guild_memberinfoshort (int guild_id,
return 0;
}
-// ƒMƒ‹ƒh‰đŽU’Ę’m
+// ギルド解散通知
int intif_guild_break (int guild_id)
{
WFIFOW (inter_fd, 0) = 0x3036;
@@ -388,7 +388,7 @@ int intif_guild_break (int guild_id)
return 0;
}
-// ƒMƒ‹ƒh‰ď˜b‘—M
+// ギルド会話送信
int intif_guild_message (int guild_id, int account_id, char *mes, int len)
{
WFIFOW (inter_fd, 0) = 0x3037;
@@ -400,7 +400,7 @@ int intif_guild_message (int guild_id, int account_id, char *mes, int len)
return 0;
}
-// ƒMƒ‹ƒh‹Ł‡ƒ`ƒFƒbƒN—v‹
+// ギルド競合チェック要求
int intif_guild_checkconflict (int guild_id, int account_id, int char_id)
{
WFIFOW (inter_fd, 0) = 0x3038;
@@ -411,7 +411,7 @@ int intif_guild_checkconflict (int guild_id, int account_id, int char_id)
return 0;
}
-// ƒMƒ‹ƒhŠî–{î•ń•ĎX—v‹
+// ギルド基本情報変更要求
int intif_guild_change_basicinfo (int guild_id, int type, const void *data,
int len)
{
@@ -424,7 +424,7 @@ int intif_guild_change_basicinfo (int guild_id, int type, const void *data,
return 0;
}
-// ƒMƒ‹ƒhƒƒ“ƒoî•ń•ĎX—v‹
+// ギルドメンバ情報変更要求
int intif_guild_change_memberinfo (int guild_id, int account_id, int char_id,
int type, const void *data, int len)
{
@@ -439,7 +439,7 @@ int intif_guild_change_memberinfo (int guild_id, int account_id, int char_id,
return 0;
}
-// ƒMƒ‹ƒh–đE•ĎX—v‹
+// ギルド役職変更要求
int intif_guild_position (int guild_id, int idx, struct guild_position *p)
{
WFIFOW (inter_fd, 0) = 0x303b;
@@ -451,7 +451,7 @@ int intif_guild_position (int guild_id, int idx, struct guild_position *p)
return 0;
}
-// ƒMƒ‹ƒhƒXƒLƒ‹ƒAƒbƒv—v‹
+// ギルドスキルアップ要求
int intif_guild_skillup (int guild_id, int skill_num, int account_id)
{
WFIFOW (inter_fd, 0) = 0x303c;
@@ -462,7 +462,7 @@ int intif_guild_skillup (int guild_id, int skill_num, int account_id)
return 0;
}
-// ƒMƒ‹ƒh“Ż–ż/“G‘Ηv‹
+// ギルド同盟/敵対要求
int intif_guild_alliance (int guild_id1, int guild_id2, int account_id1,
int account_id2, int flag)
{
@@ -476,7 +476,7 @@ int intif_guild_alliance (int guild_id1, int guild_id2, int account_id1,
return 0;
}
-// ƒMƒ‹ƒh’m•ĎX—v‹
+// ギルド告知変更要求
int intif_guild_notice (int guild_id, const char *mes1, const char *mes2)
{
WFIFOW (inter_fd, 0) = 0x303e;
@@ -487,7 +487,7 @@ int intif_guild_notice (int guild_id, const char *mes1, const char *mes2)
return 0;
}
-// ƒMƒ‹ƒhƒGƒ“ƒuƒŒƒ€•ĎX—v‹
+// ギルドエンブレム変更要求
int intif_guild_emblem (int guild_id, int len, const char *data)
{
if (guild_id <= 0 || len < 0 || len > 2000)
@@ -501,7 +501,7 @@ int intif_guild_emblem (int guild_id, int len, const char *data)
return 0;
}
-//ŒťÝ‚ĚƒMƒ‹ƒhéč—ĚƒMƒ‹ƒh‚𒲂ׂé
+//現在のギルド城占領ギルドを調べる
int intif_guild_castle_dataload (int castle_id, int index)
{
WFIFOW (inter_fd, 0) = 0x3040;
@@ -511,7 +511,7 @@ int intif_guild_castle_dataload (int castle_id, int index)
return 0;
}
-//ƒMƒ‹ƒhéč—ĚƒMƒ‹ƒh•ĎX—v‹
+//ギルド城占領ギルド変更要求
int intif_guild_castle_datasave (int castle_id, int index, int value)
{
WFIFOW (inter_fd, 0) = 0x3041;
@@ -615,7 +615,7 @@ int mapif_parse_WisToGM (int fd)
return 0;
}
-// ƒAƒJƒEƒ“ƒg•Ď”’Ę’m
+// アカウント変数通知
int intif_parse_AccountReg (int fd)
{
int j, p;
@@ -635,7 +635,7 @@ int intif_parse_AccountReg (int fd)
return 0;
}
-// ‘qŒÉƒf[ƒ^ŽóM
+// 倉庫データ受信
int intif_parse_LoadStorage (int fd)
{
struct storage *stor;
@@ -687,7 +687,7 @@ int intif_parse_LoadStorage (int fd)
return 0;
}
-// ‘qŒÉƒf[ƒ^‘—MŹŒ÷
+// 倉庫データ送信成功
int intif_parse_SaveStorage (int fd)
{
if (battle_config.save_log)
@@ -771,7 +771,7 @@ int intif_parse_SaveGuildStorage (int fd)
return 0;
}
-// ƒp[ƒeƒBěŹ‰Â”Ű
+// パーティ作成可否
int intif_parse_PartyCreated (int fd)
{
if (battle_config.etc_log)
@@ -781,7 +781,7 @@ int intif_parse_PartyCreated (int fd)
return 0;
}
-// ƒp[ƒeƒBî•ń
+// パーティ情報
int intif_parse_PartyInfo (int fd)
{
if (RFIFOW (fd, 2) == 8)
@@ -804,7 +804,7 @@ int intif_parse_PartyInfo (int fd)
return 0;
}
-// ƒp[ƒeƒB’ljÁ’Ę’m
+// パーティ追加通知
int intif_parse_PartyMemberAdded (int fd)
{
if (battle_config.etc_log)
@@ -814,7 +814,7 @@ int intif_parse_PartyMemberAdded (int fd)
return 0;
}
-// ƒp[ƒeƒBÝ’č•ĎX’Ę’m
+// パーティ設定変更通知
int intif_parse_PartyOptionChanged (int fd)
{
party_optionchanged (RFIFOL (fd, 2), RFIFOL (fd, 6), RFIFOW (fd, 10),
@@ -822,7 +822,7 @@ int intif_parse_PartyOptionChanged (int fd)
return 0;
}
-// ƒp[ƒeƒB’E‘Ţ’Ę’m
+// パーティ脱退通知
int intif_parse_PartyMemberLeaved (int fd)
{
if (battle_config.etc_log)
@@ -832,14 +832,14 @@ int intif_parse_PartyMemberLeaved (int fd)
return 0;
}
-// ƒp[ƒeƒB‰đŽU’Ę’m
+// パーティ解散通知
int intif_parse_PartyBroken (int fd)
{
party_broken (RFIFOL (fd, 2));
return 0;
}
-// ƒp[ƒeƒBˆÚ“Ž’Ę’m
+// パーティ移動通知
int intif_parse_PartyMove (int fd)
{
// if(battle_config.etc_log)
@@ -849,7 +849,7 @@ int intif_parse_PartyMove (int fd)
return 0;
}
-// ƒp[ƒeƒBƒƒbƒZ[ƒW
+// パーティメッセージ
int intif_parse_PartyMessage (int fd)
{
// if(battle_config.etc_log)
@@ -859,14 +859,14 @@ int intif_parse_PartyMessage (int fd)
return 0;
}
-// ƒMƒ‹ƒhěŹ‰Â”Ű
+// ギルド作成可否
int intif_parse_GuildCreated (int fd)
{
guild_created (RFIFOL (fd, 2), RFIFOL (fd, 6));
return 0;
}
-// ƒMƒ‹ƒhî•ń
+// ギルド情報
int intif_parse_GuildInfo (int fd)
{
if (RFIFOW (fd, 2) == 8)
@@ -890,7 +890,7 @@ int intif_parse_GuildInfo (int fd)
return 0;
}
-// ƒMƒ‹ƒhƒƒ“ƒo’ljÁ’Ę’m
+// ギルドメンバ追加通知
int intif_parse_GuildMemberAdded (int fd)
{
if (battle_config.etc_log)
@@ -901,7 +901,7 @@ int intif_parse_GuildMemberAdded (int fd)
return 0;
}
-// ƒMƒ‹ƒhƒƒ“ƒo’E‘Ţ/’Ç•ú’Ę’m
+// ギルドメンバ脱退/追放通知
int intif_parse_GuildMemberLeaved (int fd)
{
guild_member_leaved (RFIFOL (fd, 2), RFIFOL (fd, 6), RFIFOL (fd, 10),
@@ -909,7 +909,7 @@ int intif_parse_GuildMemberLeaved (int fd)
return 0;
}
-// ƒMƒ‹ƒhƒƒ“ƒoƒIƒ“ƒ‰ƒCƒ“ó‘Ô/Lv•ĎX’Ę’m
+// ギルドメンバオンライン状態/Lv変更通知
int intif_parse_GuildMemberInfoShort (int fd)
{
guild_recv_memberinfoshort (RFIFOL (fd, 2), RFIFOL (fd, 6),
@@ -919,14 +919,14 @@ int intif_parse_GuildMemberInfoShort (int fd)
return 0;
}
-// ƒMƒ‹ƒh‰đŽU’Ę’m
+// ギルド解散通知
int intif_parse_GuildBroken (int fd)
{
guild_broken (RFIFOL (fd, 2), RFIFOB (fd, 6));
return 0;
}
-// ƒMƒ‹ƒhŠî–{î•ń•ĎX’Ę’m
+// ギルド基本情報変更通知
int intif_parse_GuildBasicInfoChanged (int fd)
{
int type = RFIFOW (fd, 8), guild_id = RFIFOL (fd, 4);
@@ -951,7 +951,7 @@ int intif_parse_GuildBasicInfoChanged (int fd)
return 0;
}
-// ƒMƒ‹ƒhƒƒ“ƒoî•ń•ĎX’Ę’m
+// ギルドメンバ情報変更通知
int intif_parse_GuildMemberInfoChanged (int fd)
{
int type = RFIFOW (fd, 16), guild_id = RFIFOL (fd, 4);
@@ -975,7 +975,7 @@ int intif_parse_GuildMemberInfoChanged (int fd)
return 0;
}
-// ƒMƒ‹ƒh–đE•ĎX’Ę’m
+// ギルド役職変更通知
int intif_parse_GuildPosition (int fd)
{
if (RFIFOW (fd, 2) != sizeof (struct guild_position) + 12)
@@ -990,14 +990,14 @@ int intif_parse_GuildPosition (int fd)
return 0;
}
-// ƒMƒ‹ƒhƒXƒLƒ‹Š„‚čU‚č’Ę’m
+// ギルドスキル割り振り通知
int intif_parse_GuildSkillUp (int fd)
{
guild_skillupack (RFIFOL (fd, 2), RFIFOL (fd, 6), RFIFOL (fd, 10));
return 0;
}
-// ƒMƒ‹ƒh“Ż–ż/“G‘Î’Ę’m
+// ギルド同盟/敵対通知
int intif_parse_GuildAlliance (int fd)
{
guild_allianceack (RFIFOL (fd, 2), RFIFOL (fd, 6), RFIFOL (fd, 10),
@@ -1006,14 +1006,14 @@ int intif_parse_GuildAlliance (int fd)
return 0;
}
-// ƒMƒ‹ƒh’m•ĎX’Ę’m
+// ギルド告知変更通知
int intif_parse_GuildNotice (int fd)
{
guild_notice_changed (RFIFOL (fd, 2), RFIFOP (fd, 6), RFIFOP (fd, 66));
return 0;
}
-// ƒMƒ‹ƒhƒGƒ“ƒuƒŒƒ€•ĎX’Ę’m
+// ギルドエンブレム変更通知
int intif_parse_GuildEmblem (int fd)
{
guild_emblem_changed (RFIFOW (fd, 2) - 12, RFIFOL (fd, 4), RFIFOL (fd, 8),
@@ -1021,7 +1021,7 @@ int intif_parse_GuildEmblem (int fd)
return 0;
}
-// ƒMƒ‹ƒh‰ď˜bŽóM
+// ギルド会話受信
int intif_parse_GuildMessage (int fd)
{
guild_recv_message (RFIFOL (fd, 4), RFIFOL (fd, 8), RFIFOP (fd, 12),
@@ -1029,21 +1029,21 @@ int intif_parse_GuildMessage (int fd)
return 0;
}
-// ƒMƒ‹ƒhéƒf[ƒ^—v‹•ÔM
+// ギルド城データ要求返信
int intif_parse_GuildCastleDataLoad (int fd)
{
return guild_castledataloadack (RFIFOW (fd, 2), RFIFOB (fd, 4),
RFIFOL (fd, 5));
}
-// ƒMƒ‹ƒhéƒf[ƒ^•ĎX’Ę’m
+// ギルド城データ変更通知
int intif_parse_GuildCastleDataSave (int fd)
{
return guild_castledatasaveack (RFIFOW (fd, 2), RFIFOB (fd, 4),
RFIFOL (fd, 5));
}
-// ƒMƒ‹ƒhéƒf[ƒ^ˆęŠ‡ŽóM(‰Šú‰ťŽž)
+// ギルド城データ一括受信(初期化時)
int intif_parse_GuildCastleAllDataLoad (int fd)
{
return guild_castlealldataload (RFIFOW (fd, 2),
@@ -1051,14 +1051,14 @@ int intif_parse_GuildCastleAllDataLoad (int fd)
}
//-----------------------------------------------------------------
-// inter server‚Š‚ç‚̒ʐM
-// ƒGƒ‰[‚Ş‚ ‚ę‚Î0(false)‚đ•Ô‚ˇ‚ą‚Ć
-// ƒpƒPƒbƒg‚ޏˆ—‚Ĺ‚Ť‚ę‚Î1,ƒpƒPƒbƒg’ˇ‚Ş‘Ť‚č‚Č‚Ż‚ę‚Î2‚đ•Ô‚ˇ‚ą‚Ć
+// inter serverからの通信
+// エラーがあれば0(false)を返すこと
+// パケットが処理できれば1,パケット長が足りなければ2を返すこと
int intif_parse (int fd)
{
int packet_len;
int cmd = RFIFOW (fd, 0);
- // ƒpƒPƒbƒg‚ĚIDŠm”F
+ // パケットのID確認
if (cmd < 0x3800
|| cmd >=
0x3800 + (sizeof (packet_len_table) / sizeof (packet_len_table[0]))
@@ -1066,7 +1066,7 @@ int intif_parse (int fd)
{
return 0;
}
- // ƒpƒPƒbƒg‚Ě’ˇ‚łŠm”F
+ // パケットの長さ確認
packet_len = packet_len_table[cmd - 0x3800];
if (packet_len == -1)
{
@@ -1080,7 +1080,7 @@ int intif_parse (int fd)
{
return 2;
}
- // ˆ—•ŞŠň
+ // 処理分岐
switch (cmd)
{
case 0x3800:
@@ -1195,7 +1195,7 @@ int intif_parse (int fd)
RFIFOW (fd, 0));
return 0;
}
- // ƒpƒPƒbƒg“Ç‚Ý”ň‚΂ľ
+ // パケット読み飛ばし
RFIFOSKIP (fd, packet_len);
return 1;
}
diff --git a/src/map/itemdb.c b/src/map/itemdb.c
index cf2910a..d589e35 100644
--- a/src/map/itemdb.c
+++ b/src/map/itemdb.c
@@ -21,7 +21,7 @@
#define MAX_RANDITEM 2000
// ** ITEMDB_OVERRIDE_NAME_VERBOSE **
-// ’č‹`‚ˇ‚é‚ƁAitemdb.txt‚Ćgrf‚Ĺ–ź‘O‚ŞˆŮ‚Č‚éę‡A•\ŽŚ‚ľ‚Ü‚ˇ.
+// 定義すると、itemdb.txtとgrfで名前が異なる場合、表示します.
//#define ITEMDB_OVERRIDE_NAME_VERBOSE 1
static struct dbt *item_db;
@@ -45,7 +45,7 @@ static int itemdb_read_noequip (void);
void itemdb_reload (void);
/*==========================================
- * –ź‘O‚ĹŒŸő—p
+ * 名前で検索用
*------------------------------------------
*/
// name = item alias, so we should find items aliases first. if not found then look for "jname" (full name)
@@ -63,7 +63,7 @@ int itemdb_searchname_sub (void *key, void *data, va_list ap)
}
/*==========================================
- * –ź‘O‚ĹŒŸő—p
+ * 名前で検索用
*------------------------------------------
*/
int itemdb_searchjname_sub (void *key, void *data, va_list ap)
@@ -78,7 +78,7 @@ int itemdb_searchjname_sub (void *key, void *data, va_list ap)
}
/*==========================================
- * –ź‘O‚ĹŒŸő
+ * 名前で検索
*------------------------------------------
*/
struct item_data *itemdb_searchname (const char *str)
@@ -89,7 +89,7 @@ struct item_data *itemdb_searchname (const char *str)
}
/*==========================================
- * ” ŒnƒAƒCƒeƒ€ŒŸő
+ * 箱系アイテム検索
*------------------------------------------
*/
int itemdb_searchrandomid (int flags)
@@ -139,7 +139,7 @@ int itemdb_searchrandomid (int flags)
}
/*==========================================
- * DB‚Ě‘śÝŠm”F
+ * DBの存在確認
*------------------------------------------
*/
struct item_data *itemdb_exists (int nameid)
@@ -148,7 +148,7 @@ struct item_data *itemdb_exists (int nameid)
}
/*==========================================
- * DB‚ĚŒŸő
+ * DBの検索
*------------------------------------------
*/
struct item_data *itemdb_search (int nameid)
@@ -169,7 +169,7 @@ struct item_data *itemdb_search (int nameid)
id->sex = 2;
id->elv = 0;
id->flag.available = 0;
- id->flag.value_notdc = 0; //ˆę‰žEEE
+ id->flag.value_notdc = 0; //一応・・・
id->flag.value_notoc = 0;
id->flag.no_equip = 0;
id->view_id = 0;
@@ -236,16 +236,16 @@ int itemdb_isequip3 (int nameid)
}
/*==========================================
- * ŽĚ‚Ä‚ç‚ę‚éƒAƒCƒeƒ€‚Í1A‚ť‚¤‚Ĺ‚Č‚˘ƒAƒCƒeƒ€‚Í0
+ * 捨てられるアイテムは1、そうでないアイテムは0
*------------------------------------------
*/
int itemdb_isdropable (int nameid)
{
- //Œ‹ĽŽw—Ö‚ÍŽĚ‚Ä‚ç‚ę‚Č‚˘
+ //結婚指輪は捨てられない
switch (nameid)
{
- case 2634: //Œ‹ĽŽw—Ö
- case 2635: //Œ‹ĽŽw—Ö
+ case 2634: //結婚指輪
+ case 2635: //結婚指輪
return 0;
}
@@ -253,7 +253,7 @@ int itemdb_isdropable (int nameid)
}
//
-// ‰Šú‰ť
+// 初期化
//
/*==========================================
*
@@ -289,7 +289,7 @@ static int itemdb_read_itemslottable (void)
}
/*==========================================
- * ƒAƒCƒeƒ€ƒf[ƒ^ƒx[ƒX‚Ě“Ç‚Ýž‚Ý
+ * アイテムデータベースの読み込み
*------------------------------------------
*/
static int itemdb_readdb (void)
@@ -396,7 +396,7 @@ static int itemdb_readdb (void)
// Removed item_value_db, don't re-add!
/*==========================================
- * ƒ‰ƒ“ƒ_ƒ€ƒAƒCƒeƒ€oŒťƒf[ƒ^‚Ě“Ç‚Ýž‚Ý
+ * ランダムアイテム出現データの読み込み
*------------------------------------------
*/
static int itemdb_read_randomitem ()
@@ -487,7 +487,7 @@ static int itemdb_read_randomitem ()
}
/*==========================================
- * ƒAƒCƒeƒ€Žg—p‰Â”\ƒtƒ‰ƒO‚ĚƒI[ƒo[ƒ‰ƒCƒh
+ * アイテム使用可能フラグのオーバーライド
*------------------------------------------
*/
static int itemdb_read_itemavail (void)
@@ -540,7 +540,7 @@ static int itemdb_read_itemavail (void)
}
/*==========================================
- * ƒAƒCƒeƒ€‚Ě–ź‘Oƒe[ƒuƒ‹‚đ“ǂݍž‚Ţ
+ * アイテムの名前テーブルを読み込む
*------------------------------------------
*/
static int itemdb_read_itemnametable (void)
@@ -586,7 +586,7 @@ static int itemdb_read_itemnametable (void)
}
/*==========================================
- * ƒJ[ƒhƒCƒ‰ƒXƒg‚ĚƒŠƒ\[ƒX–ź‘Oƒe[ƒuƒ‹‚đ“ǂݍž‚Ţ
+ * カードイラストのリソース名前テーブルを読み込む
*------------------------------------------
*/
static int itemdb_read_cardillustnametable (void)
@@ -624,7 +624,7 @@ static int itemdb_read_cardillustnametable (void)
}
/*==========================================
- * ‘•”ő§ŒŔƒtƒ@ƒCƒ‹“ǂݏo‚ľ
+ * 装備制限ファイル読み出し
*------------------------------------------
*/
static int itemdb_read_noequip (void)
diff --git a/src/map/map.c b/src/map/map.c
index 19a7528..57183d1 100644
--- a/src/map/map.c
+++ b/src/map/map.c
@@ -40,7 +40,7 @@
#include "memwatch.h"
#endif
-// ‹É—Í static‚Ĺƒ[ƒJƒ‹‚ÉŽű‚ß‚é
+// 極力 staticでローカルに収める
static struct dbt *id_db = NULL;
static struct dbt *map_db = NULL;
static struct dbt *nick_db = NULL;
@@ -80,8 +80,8 @@ char help_txt[256] = "conf/help.txt";
char wisp_server_name[24] = "Server"; // can be modified in char-server configuration file
/*==========================================
- * ‘SmapŽI‘Œv‚ł̐ڑą”Ý’č
- * (charŽI‚Š‚ç‘—‚ç‚ę‚Ä‚­‚é)
+ * 全map鯖総計での接続数設定
+ * (char鯖から送られてくる)
*------------------------------------------
*/
void map_setusers (int n)
@@ -90,7 +90,7 @@ void map_setusers (int n)
}
/*==========================================
- * ‘SmapŽI‘Œv‚ł̐ڑą”Žć“ž (/w‚ւ̉ž“š—p)
+ * 全map鯖総計での接続数取得 (/wへの応答用)
*------------------------------------------
*/
int map_getusers (void)
@@ -99,12 +99,12 @@ int map_getusers (void)
}
//
-// blockíœ‚ĚˆŔ‘SŤŠm•Űˆ—
+// block削除の安全性確保処理
//
/*==========================================
- * block‚đfree‚ˇ‚é‚Ć‚Ťfree‚Ě•Ď‚í‚č‚ɌĂÔ
- * ƒƒbƒN‚ł‚ę‚Ä‚˘‚é‚Ć‚Ť‚̓oƒbƒtƒ@‚É‚˝‚ß‚é
+ * blockをfreeするときfreeの変わりに呼ぶ
+ * ロックされているときはバッファにためる
*------------------------------------------
*/
int map_freeblock (void *bl)
@@ -130,7 +130,7 @@ int map_freeblock (void *bl)
}
/*==========================================
- * block‚Ěfree‚đˆęŽž“I‚É‹ÖŽ~‚ˇ‚é
+ * blockのfreeを一時的に禁止する
*------------------------------------------
*/
int map_freeblock_lock (void)
@@ -139,9 +139,9 @@ int map_freeblock_lock (void)
}
/*==========================================
- * block‚Ěfree‚ĚƒƒbƒN‚đ‰đœ‚ˇ‚é
- * ‚ą‚Ě‚Ć‚ŤAƒƒbƒN‚ŞŠŽ‘S‚É‚Č‚­‚Č‚é‚Ć
- * ƒoƒbƒtƒ@‚É‚˝‚Ü‚Á‚Ä‚˘‚˝block‚đ‘S•”íœ
+ * blockのfreeのロックを解除する
+ * このとき、ロックが完全になくなると
+ * バッファにたまっていたblockを全部削除
*------------------------------------------
*/
int map_freeblock_unlock (void)
@@ -169,20 +169,20 @@ int map_freeblock_unlock (void)
}
//
-// block‰ťˆ—
+// block化処理
//
/*==========================================
- * map[]‚Ěblock_list‚Š‚çŒq‚Ş‚Á‚Ä‚˘‚éę‡‚É
- * bl->prev‚Ébl_head‚ĚƒAƒhƒŒƒX‚đ“ü‚ę‚Ä‚¨‚­
+ * map[]のblock_listから繋がっている場合に
+ * bl->prevにbl_headのアドレスを入れておく
*------------------------------------------
*/
static struct block_list bl_head;
/*==========================================
- * map[]‚Ěblock_list‚ɒljÁ
- * mob‚͐”‚Ş‘˝‚˘‚Ě‚Ĺ•ĘƒŠƒXƒg
+ * map[]のblock_listに追加
+ * mobは数が多いので別リスト
*
- * Šů‚ÉlinkĎ‚Ý‚Š‚ĚŠm”F‚Ş–ł‚˘BŠëŒŻ‚Š‚ŕ
+ * 既にlink済みかの確認が無い。危険かも
*------------------------------------------
*/
int map_addblock (struct block_list *bl)
@@ -233,8 +233,8 @@ int map_addblock (struct block_list *bl)
}
/*==========================================
- * map[]‚Ěblock_list‚Š‚çŠO‚ˇ
- * prev‚ŞNULL‚Ěę‡list‚ÉŒq‚Ş‚Á‚Ä‚Č‚˘
+ * map[]のblock_listから外す
+ * prevがNULLの場合listに繋がってない
*------------------------------------------
*/
int map_delblock (struct block_list *bl)
@@ -242,12 +242,12 @@ int map_delblock (struct block_list *bl)
int b;
nullpo_retr (0, bl);
- // Šů‚Éblocklist‚Š‚甲‚Ż‚Ä‚˘‚é
+ // 既にblocklistから抜けている
if (bl->prev == NULL)
{
if (bl->next != NULL)
{
- // prev‚ŞNULL‚Ĺnext‚ŞNULL‚Ĺ‚Č‚˘‚Ě‚Í—L‚Á‚Ä‚Í‚Č‚ç‚Č‚˘
+ // prevがNULLでnextがNULLでないのは有ってはならない
if (battle_config.error_log)
printf ("map_delblock error : bl->next!=NULL\n");
}
@@ -263,7 +263,7 @@ int map_delblock (struct block_list *bl)
bl->next->prev = bl->prev;
if (bl->prev == &bl_head)
{
- // ƒŠƒXƒg‚Ě“Ş‚Č‚Ě‚ĹAmap[]‚Ěblock_list‚đXV‚ˇ‚é
+ // リストの頭なので、map[]のblock_listを更新する
if (bl->type == BL_MOB)
{
map[bl->m].block_mob[b] = bl->next;
@@ -288,7 +288,7 @@ int map_delblock (struct block_list *bl)
}
/*==========================================
- * ŽüˆÍ‚ĚPCl”‚𐔂Ś‚é (ŒťÝ–˘Žg—p)
+ * 周囲のPC人数を数える (現在未使用)
*------------------------------------------
*/
int map_countnearpc (int m, int x, int y)
@@ -320,7 +320,7 @@ int map_countnearpc (int m, int x, int y)
}
/*==========================================
- * ƒZƒ‹ă‚ĚPC‚ĆMOB‚̐”‚𐔂Ś‚é (ƒOƒ‰ƒ“ƒhƒNƒƒX—p)
+ * セル上のPCとMOBの数を数える (グランドクロス用)
*------------------------------------------
*/
int map_count_oncell (int m, int x, int y)
@@ -355,9 +355,9 @@ int map_count_oncell (int m, int x, int y)
}
/*==========================================
- * map m (x0,y0)-(x1,y1)“ŕ‚Ě‘Sobj‚ɑ΂ľ‚Ä
- * func‚đŒÄ‚Ô
- * type!=0 ‚Č‚ç‚ť‚ĚŽí—Ţ‚Ě‚Ý
+ * map m (x0,y0)-(x1,y1)内の全objに対して
+ * funcを呼ぶ
+ * type!=0 ならその種類のみ
*------------------------------------------
*/
void map_foreachinarea (int (*func) (struct block_list *, va_list), int m,
@@ -418,24 +418,24 @@ void map_foreachinarea (int (*func) (struct block_list *, va_list), int m,
printf ("map_foreachinarea: *WARNING* block count too many!\n");
}
- map_freeblock_lock (); // ƒƒ‚ƒŠ‚Š‚ç‚̉đ•ú‚đ‹ÖŽ~‚ˇ‚é
+ map_freeblock_lock (); // メモリからの解放を禁止する
for (i = blockcount; i < bl_list_count; i++)
- if (bl_list[i]->prev) // —LŒř‚Š‚Ç‚¤‚Šƒ`ƒFƒbƒN
+ if (bl_list[i]->prev) // 有効かどうかチェック
func (bl_list[i], ap);
- map_freeblock_unlock (); // ‰đ•ú‚đ‹–‰Â‚ˇ‚é
+ map_freeblock_unlock (); // 解放を許可する
va_end (ap);
bl_list_count = blockcount;
}
/*==========================================
- * ‹éŒ`(x0,y0)-(x1,y1)‚Ş(dx,dy)ˆÚ“Ž‚ľ‚˝Žž‚Ě
- * —ĚˆćŠO‚É‚Č‚é—Ěˆć(‹éŒ`‚ŠLŽšŒ`)“ŕ‚Ěobj‚É
- * ‘΂ľ‚Äfunc‚đŒÄ‚Ô
+ * 矩形(x0,y0)-(x1,y1)が(dx,dy)移動した時の
+ * 領域外になる領域(矩形かL字形)内のobjに
+ * 対してfuncを呼ぶ
*
- * dx,dy‚Í-1,0,1‚Ě‚Ý‚Ć‚ˇ‚éi‚Ç‚ń‚Č’l‚Ĺ‚ŕ‚˘‚˘‚Á‚Ű‚˘Hj
+ * dx,dyは-1,0,1のみとする(どんな値でもいいっぽい?)
*------------------------------------------
*/
void map_foreachinmovearea (int (*func) (struct block_list *, va_list), int m,
@@ -450,7 +450,7 @@ void map_foreachinmovearea (int (*func) (struct block_list *, va_list), int m,
va_start (ap, type);
if (dx == 0 || dy == 0)
{
- // ‹éŒ`—Ěˆć‚Ěę‡
+ // 矩形領域の場合
if (dx == 0)
{
if (dy < 0)
@@ -510,7 +510,7 @@ void map_foreachinmovearea (int (*func) (struct block_list *, va_list), int m,
}
else
{
- // LŽš—Ěˆć‚Ěę‡
+ // L字領域の場合
if (x0 < 0)
x0 = 0;
@@ -573,13 +573,13 @@ void map_foreachinmovearea (int (*func) (struct block_list *, va_list), int m,
printf ("map_foreachinarea: *WARNING* block count too many!\n");
}
- map_freeblock_lock (); // ƒƒ‚ƒŠ‚Š‚ç‚̉đ•ú‚đ‹ÖŽ~‚ˇ‚é
+ map_freeblock_lock (); // メモリからの解放を禁止する
for (i = blockcount; i < bl_list_count; i++)
- if (bl_list[i]->prev) // —LŒř‚Š‚Ç‚¤‚Šƒ`ƒFƒbƒN
+ if (bl_list[i]->prev) // 有効かどうかチェック
func (bl_list[i], ap);
- map_freeblock_unlock (); // ‰đ•ú‚đ‹–‰Â‚ˇ‚é
+ map_freeblock_unlock (); // 解放を許可する
va_end (ap);
bl_list_count = blockcount;
@@ -632,23 +632,23 @@ void map_foreachincell (int (*func) (struct block_list *, va_list), int m,
printf ("map_foreachincell: *WARNING* block count too many!\n");
}
- map_freeblock_lock (); // ƒƒ‚ƒŠ‚Š‚ç‚̉đ•ú‚đ‹ÖŽ~‚ˇ‚é
+ map_freeblock_lock (); // メモリからの解放を禁止する
for (i = blockcount; i < bl_list_count; i++)
- if (bl_list[i]->prev) // —LŒř‚Š‚Ç‚¤‚Šƒ`ƒFƒbƒN
+ if (bl_list[i]->prev) // 有効かどうかチェック
func (bl_list[i], ap);
- map_freeblock_unlock (); // ‰đ•ú‚đ‹–‰Â‚ˇ‚é
+ map_freeblock_unlock (); // 解放を許可する
va_end (ap);
bl_list_count = blockcount;
}
/*==========================================
- * °ƒAƒCƒeƒ€‚âƒGƒtƒFƒNƒg—p‚ĚˆęŽžobjŠ„‚č“–‚Ä
- * object[]‚Ö‚Ě•Ű‘ś‚Ćid_db“o˜^‚Ü‚Ĺ
+ * 床アイテムやエフェクト用の一時obj割り当て
+ * object[]への保存とid_db登録まで
*
- * bl->id‚ŕ‚ą‚Ě’†‚Őݒ肾‚Ä–â‘č–ł‚˘?
+ * bl->idもこの中で設定して問題無い?
*------------------------------------------
*/
int map_addobject (struct block_list *bl)
@@ -679,8 +679,8 @@ int map_addobject (struct block_list *bl)
}
/*==========================================
- * ˆęŽžobject‚̉đ•ú
- * map_delobject‚Ěfree‚ľ‚Č‚˘ƒo[ƒWƒ‡ƒ“
+ * 一時objectの解放
+ * map_delobjectのfreeしないバージョン
*------------------------------------------
*/
int map_delobjectnofree (int id, int type)
@@ -710,11 +710,11 @@ int map_delobjectnofree (int id, int type)
}
/*==========================================
- * ˆęŽžobject‚̉đ•ú
- * block_list‚Š‚ç‚ĚíœAid_db‚Š‚ç‚Ěíœ
- * object data‚ĚfreeAobject[]‚Ö‚ĚNULL‘ă“ü
+ * 一時objectの解放
+ * block_listからの削除、id_dbからの削除
+ * object dataのfree、object[]へのNULL代入
*
- * add‚Ć‚Ě‘ÎĚŤ‚Ş–ł‚˘‚Ě‚Ş‹C‚É‚Č‚é
+ * addとの対称性が無いのが気になる
*------------------------------------------
*/
int map_delobject (int id, int type)
@@ -734,7 +734,7 @@ int map_delobject (int id, int type)
}
/*==========================================
- * ‘SˆęŽžobj‘ŠŽč‚Éfunc‚đŒÄ‚Ô
+ * 全一時obj相手にfuncを呼ぶ
*
*------------------------------------------
*/
@@ -776,13 +776,13 @@ void map_foreachobject (int (*func) (struct block_list *, va_list), int type,
}
/*==========================================
- * °ƒAƒCƒeƒ€‚đÁ‚ˇ
+ * 床アイテムを消す
*
- * data==0‚ĚŽž‚Ítimer‚ŏÁ‚Ś‚˝Žž
- * data!=0‚ĚŽž‚͏E‚¤“™‚ŏÁ‚Ś‚˝Žž‚Ć‚ľ‚Ä“Žě
+ * data==0の時はtimerで消えた時
+ * data!=0の時は拾う等で消えた時として動作
*
- * ŒăŽŇ‚́Amap_clearflooritem(id)‚Ö
- * map.h“ŕ‚Ĺ#define‚ľ‚Ä‚ ‚é
+ * 後者は、map_clearflooritem(id)へ
+ * map.h内で#defineしてある
*------------------------------------------
*/
int map_clearflooritem_timer (int tid, unsigned int tick, int id, int data)
@@ -806,10 +806,10 @@ int map_clearflooritem_timer (int tid, unsigned int tick, int id, int data)
}
/*==========================================
- * (m,x,y)‚ĚŽüˆÍrangeƒ}ƒX“ŕ‚Ě‹ó‚Ť(=N“ü‰Â”\)cell‚Ě
- * “ŕ‚Š‚ç“K“–‚Čƒ}ƒX–Ú‚ĚŔ•W‚đx+(y<<16)‚Ĺ•Ô‚ˇ
+ * (m,x,y)の周囲rangeマス内の空き(=侵入可能)cellの
+ * 内から適当なマス目の座標をx+(y<<16)で返す
*
- * Œťórange=1‚ĹƒAƒCƒeƒ€ƒhƒƒbƒv—p“r‚Ě‚Ý
+ * 現状range=1でアイテムドロップ用途のみ
*------------------------------------------
*/
int map_searchrandfreecell (int m, int x, int y, int range)
@@ -857,9 +857,9 @@ int map_searchrandfreecell (int m, int x, int y, int range)
}
/*==========================================
- * (m,x,y)‚𒆐S‚É3x3ˆČ“ŕ‚ɏ°ƒAƒCƒeƒ€Ý’u
+ * (m,x,y)を中心に3x3以内に床アイテム設置
*
- * item_data‚ÍamountˆČŠO‚đcopy‚ˇ‚é
+ * item_dataはamount以外をcopyする
*------------------------------------------
*/
int map_addflooritem_any (struct item *item_data, int amount, int m, int x,
@@ -1019,7 +1019,7 @@ int map_addflooritem (struct item *item_data, int amount, int m, int x, int y,
/* } */
/*==========================================
- * charid_db‚֒ljÁ(•ÔM‘Ň‚ż‚Ş‚ ‚ę‚ΕԐM)
+ * charid_dbへ追加(返信待ちがあれば返信)
*------------------------------------------
*/
void map_addchariddb (int charid, char *name)
@@ -1029,7 +1029,7 @@ void map_addchariddb (int charid, char *name)
p = numdb_search (charid_db, charid);
if (p == NULL)
- { // ƒf[ƒ^ƒx[ƒX‚É‚Č‚˘
+ { // データベースにない
p = (struct charid2nick *) aCalloc (1, sizeof (struct charid2nick));
p->req_id = 0;
}
@@ -1041,7 +1041,7 @@ void map_addchariddb (int charid, char *name)
p->req_id = 0;
numdb_insert (charid_db, charid, p);
if (req)
- { // •ÔM‘Ň‚ż‚Ş‚ ‚ę‚ΕԐM
+ { // 返信待ちがあれば返信
struct map_session_data *sd = map_id2sd (req);
if (sd != NULL)
clif_solved_charname (sd, charid);
@@ -1049,7 +1049,7 @@ void map_addchariddb (int charid, char *name)
}
/*==========================================
- * charid_db‚֒ljÁi•ÔM—v‹‚̂݁j
+ * charid_dbへ追加(返信要求のみ)
*------------------------------------------
*/
int map_reqchariddb (struct map_session_data *sd, int charid)
@@ -1059,7 +1059,7 @@ int map_reqchariddb (struct map_session_data *sd, int charid)
nullpo_retr (0, sd);
p = numdb_search (charid_db, charid);
- if (p != NULL) // ƒf[ƒ^ƒx[ƒX‚É‚ˇ‚Ĺ‚É‚ ‚é
+ if (p != NULL) // データベースにすでにある
return 0;
p = (struct charid2nick *) aCalloc (1, sizeof (struct charid2nick));
p->req_id = sd->bl.id;
@@ -1068,7 +1068,7 @@ int map_reqchariddb (struct map_session_data *sd, int charid)
}
/*==========================================
- * id_db‚Öbl‚đ’ljÁ
+ * id_dbへblを追加
*------------------------------------------
*/
void map_addiddb (struct block_list *bl)
@@ -1079,7 +1079,7 @@ void map_addiddb (struct block_list *bl)
}
/*==========================================
- * id_db‚Š‚çbl‚đíœ
+ * id_dbからblを削除
*------------------------------------------
*/
void map_deliddb (struct block_list *bl)
@@ -1090,7 +1090,7 @@ void map_deliddb (struct block_list *bl)
}
/*==========================================
- * nick_db‚Ösd‚đ’ljÁ
+ * nick_dbへsdを追加
*------------------------------------------
*/
void map_addnickdb (struct map_session_data *sd)
@@ -1101,43 +1101,43 @@ void map_addnickdb (struct map_session_data *sd)
}
/*==========================================
- * PC‚Ěquitˆ— map.c“ŕ•Ş
+ * PCのquit処理 map.c内分
*
- * quitˆ—‚ĚŽĺ‘Ě‚Şˆá‚¤‚悤‚Č‹C‚ŕ‚ľ‚Ä‚Ť‚˝
+ * quit処理の主体が違うような気もしてきた
*------------------------------------------
*/
int map_quit (struct map_session_data *sd)
{
nullpo_retr (0, sd);
- if (sd->chatID) // ƒ`ƒƒƒbƒg‚Š‚ço‚é
+ if (sd->chatID) // チャットから出る
chat_leavechat (sd);
- if (sd->trade_partner) // Žćˆř‚đ’†’f‚ˇ‚é
+ if (sd->trade_partner) // 取引を中断する
trade_tradecancel (sd);
- if (sd->party_invite > 0) // ƒp[ƒeƒBŠŠ—U‚đ‹‘”Ű‚ˇ‚é
+ if (sd->party_invite > 0) // パーティ勧誘を拒否する
party_reply_invite (sd, sd->party_invite_account, 0);
- if (sd->guild_invite > 0) // ƒMƒ‹ƒhŠŠ—U‚đ‹‘”Ű‚ˇ‚é
+ if (sd->guild_invite > 0) // ギルド勧誘を拒否する
guild_reply_invite (sd, sd->guild_invite, 0);
- if (sd->guild_alliance > 0) // ƒMƒ‹ƒh“Ż–żŠŠ—U‚đ‹‘”Ű‚ˇ‚é
+ if (sd->guild_alliance > 0) // ギルド同盟勧誘を拒否する
guild_reply_reqalliance (sd, sd->guild_alliance_account, 0);
- party_send_logout (sd); // ƒp[ƒeƒB‚ĚƒƒOƒAƒEƒgƒƒbƒZ[ƒW‘—M
+ party_send_logout (sd); // パーティのログアウトメッセージ送信
- guild_send_memberinfoshort (sd, 0); // ƒMƒ‹ƒh‚ĚƒƒOƒAƒEƒgƒƒbƒZ[ƒW‘—M
+ guild_send_memberinfoshort (sd, 0); // ギルドのログアウトメッセージ送信
- pc_cleareventtimer (sd); // ƒCƒxƒ“ƒgƒ^ƒCƒ}‚đ”jŠü‚ˇ‚é
+ pc_cleareventtimer (sd); // イベントタイマを破棄する
- skill_castcancel (&sd->bl, 0); // ‰rĽ‚đ’†’f‚ˇ‚é
- skill_stop_dancing (&sd->bl, 1); // ƒ_ƒ“ƒX/‰‰‘t’†’f
+ skill_castcancel (&sd->bl, 0); // 詠唱を中断する
+ skill_stop_dancing (&sd->bl, 1); // ダンス/演奏中断
- if (sd->sc_data && sd->sc_data[SC_BERSERK].timer != -1) //ƒo[ƒT[ƒN’†‚̏I—š‚ÍHP‚đ100‚É
+ if (sd->sc_data && sd->sc_data[SC_BERSERK].timer != -1) //バーサーク中の終了はHPを100に
sd->status.hp = 100;
- skill_status_change_clear (&sd->bl, 1); // ƒXƒe[ƒ^ƒXˆŮí‚đ‰đœ‚ˇ‚é
- skill_clear_unitgroup (&sd->bl); // ƒXƒLƒ‹ƒ†ƒjƒbƒgƒOƒ‹[ƒv‚Ěíœ
+ skill_status_change_clear (&sd->bl, 1); // ステータス異常を解除する
+ skill_clear_unitgroup (&sd->bl); // スキルユニットグループの削除
skill_cleartimerskill (&sd->bl);
pc_stop_walking (sd, 0);
pc_stopattack (sd);
@@ -1152,7 +1152,7 @@ int map_quit (struct map_session_data *sd)
if (pc_isdead (sd))
pc_setrestartvalue (sd, 2);
pc_makesavestatus (sd);
- //ƒNƒ[ƒ“ƒXƒLƒ‹‚ĹŠo‚Ś‚˝ƒXƒLƒ‹‚͏Á‚ˇ
+ //クローンスキルで覚えたスキルは消す
//The storage closing routines will save the char if needed. [Skotlex]
if (!sd->state.storage_flag)
@@ -1175,7 +1175,7 @@ int map_quit (struct map_session_data *sd)
}
/*==========================================
- * id”ԍ†‚ĚPC‚đ’T‚ˇB‹‚Č‚Ż‚ę‚ÎNULL
+ * id番号のPCを探す。居なければNULL
*------------------------------------------
*/
struct map_session_data *map_id2sd (int id)
@@ -1205,7 +1205,7 @@ struct map_session_data *map_id2sd (int id)
}
/*==========================================
- * char_id”ԍ†‚Ě–ź‘O‚đ’T‚ˇ
+ * char_id番号の名前を探す
*------------------------------------------
*/
char *map_charid2nick (int id)
@@ -1322,8 +1322,8 @@ struct map_session_data *map_nick2sd (char *nick)
}
/*==========================================
- * id”ԍ†‚Ě•¨‚đ’T‚ˇ
- * ˆęŽžobject‚Ěę‡‚Í”z—ń‚đˆř‚­‚Ě‚Ý
+ * id番号の物を探す
+ * 一時objectの場合は配列を引くのみ
*------------------------------------------
*/
struct block_list *map_id2bl (int id)
@@ -1338,7 +1338,7 @@ struct block_list *map_id2bl (int id)
}
/*==========================================
- * id_db“ŕ‚Ě‘S‚Ä‚Éfunc‚đŽŔs
+ * id_db内の全てにfuncを実行
*------------------------------------------
*/
int map_foreachiddb (int (*func) (void *, void *, va_list), ...)
@@ -1352,7 +1352,7 @@ int map_foreachiddb (int (*func) (void *, void *, va_list), ...)
}
/*==========================================
- * map.npc‚֒ljÁ (warp“™‚Ě—ĚˆćŽ‚ż‚Ě‚Ý)
+ * map.npcへ追加 (warp等の領域持ちのみ)
*------------------------------------------
*/
int map_addnpc (int m, struct npc_data *nd)
@@ -1411,7 +1411,7 @@ void map_removenpc (void)
}
/*==========================================
- * map–ź‚Š‚çmap”ԍ†‚Ö•ĎŠˇ
+ * map名からmap番号へ変換
*------------------------------------------
*/
int map_mapname2mapid (char *name)
@@ -1425,7 +1425,7 @@ int map_mapname2mapid (char *name)
}
/*==========================================
- * ‘źŽImap–ź‚Š‚çip,port•ĎŠˇ
+ * 他鯖map名からip,port変換
*------------------------------------------
*/
int map_mapname2ipport (char *name, int *ip, int *port)
@@ -1487,7 +1487,7 @@ int map_check_dir (int s_dir, int t_dir)
}
/*==========================================
- * ”މä‚Ě•űŒü‚đŒvŽZ
+ * 彼我の方向を計算
*------------------------------------------
*/
int map_calc_dir (struct block_list *src, int x, int y)
@@ -1500,47 +1500,47 @@ int map_calc_dir (struct block_list *src, int x, int y)
dx = x - src->x;
dy = y - src->y;
if (dx == 0 && dy == 0)
- { // ”މä‚̏ꏩˆę’v
- dir = 0; // ă
+ { // 彼我の場所一致
+ dir = 0; // 上
}
else if (dx >= 0 && dy >= 0)
- { // •űŒü“I‚ɉEă
- dir = 7; // ‰Eă
+ { // 方向的に右上
+ dir = 7; // 右上
if (dx * 3 - 1 < dy)
- dir = 0; // ă
+ dir = 0; // 上
if (dx > dy * 3)
- dir = 6; // ‰E
+ dir = 6; // 右
}
else if (dx >= 0 && dy <= 0)
- { // •űŒü“I‚ɉE‰ş
- dir = 5; // ‰E‰ş
+ { // 方向的に右下
+ dir = 5; // 右下
if (dx * 3 - 1 < -dy)
- dir = 4; // ‰ş
+ dir = 4; // 下
if (dx > -dy * 3)
- dir = 6; // ‰E
+ dir = 6; // 右
}
else if (dx <= 0 && dy <= 0)
- { // •űŒü“I‚ɍś‰ş
- dir = 3; // ś‰ş
+ { // 方向的に左下
+ dir = 3; // 左下
if (dx * 3 + 1 > dy)
- dir = 4; // ‰ş
+ dir = 4; // 下
if (dx < dy * 3)
- dir = 2; // ś
+ dir = 2; // 塌
}
else
- { // •űŒü“I‚ɍśă
- dir = 1; // śă
+ { // 方向的に左上
+ dir = 1; // 左上
if (-dx * 3 - 1 < dy)
- dir = 0; // ă
+ dir = 0; // 上
if (-dx > dy * 3)
- dir = 2; // ś
+ dir = 2; // 塌
}
return dir;
}
-// gatŒn
+// gatçłť
/*==========================================
- * (m,x,y)‚̏ó‘Ԃ𒲂ׂé
+ * (m,x,y)の状態を調べる
*------------------------------------------
*/
int map_getcell (int m, int x, int y)
@@ -1551,7 +1551,7 @@ int map_getcell (int m, int x, int y)
}
/*==========================================
- * (m,x,y)‚̏ó‘Ô‚đt‚É‚ˇ‚é
+ * (m,x,y)の状態をtにする
*------------------------------------------
*/
int map_setcell (int m, int x, int y, int t)
@@ -1562,7 +1562,7 @@ int map_setcell (int m, int x, int y, int t)
}
/*==========================================
- * ‘źŽIŠÇ—‚Ěƒ}ƒbƒv‚đdb‚ɒljÁ
+ * 他鯖管理のマップをdbに追加
*------------------------------------------
*/
int map_setipport (char *name, unsigned long ip, int port)
@@ -1604,9 +1604,9 @@ int map_setipport (char *name, unsigned long ip, int port)
return 0;
}
-// ‰Šú‰ťŽü‚č
+// 初期化周り
/*==========================================
- * …ę‚‚łÝ’č
+ * 水場高さ設定
*------------------------------------------
*/
static struct
@@ -1663,7 +1663,7 @@ static void map_readwater (char *watertxt)
}
/*==========================================
- * ƒ}ƒbƒv1–‡“ǂݍž‚Ý
+ * マップ1枚読み込み
*------------------------------------------
*/
static int map_readmap (int m, char *fn, char *alias)
@@ -1709,7 +1709,7 @@ static int map_readmap (int m, char *fn, char *alias)
for (x = 0; x < xs; x++)
{
/*if(wh!=NO_WATER && p->type==0){
- * // …ę”ť’č
+ * // 水場判定
* map[m].gat[x+y*xs]=(p->high[0]>wh || p->high[1]>wh || p->high[2]>wh || p->high[3]>wh) ? 3 : 0;
* } else { */
map[m].gat[x + y * xs] = p->type;
@@ -1763,7 +1763,7 @@ static int map_readmap (int m, char *fn, char *alias)
}
/*==========================================
- * ‘S‚Ä‚Ěmapƒf[ƒ^‚đ“ǂݍž‚Ţ
+ * 全てのmapデータを読み込む
*------------------------------------------
*/
int map_readallmap (void)
@@ -1771,7 +1771,7 @@ int map_readallmap (void)
int i, maps_removed = 0;
char fn[256] = "";
- // ć‚É‘S•”‚Ěƒƒbƒv‚Ě‘śÝ‚đŠm”F
+ // 先に全部のャbプの存在を確認
for (i = 0; i < map_num; i++)
{
if (strstr (map[i].name, ".gat") == NULL)
@@ -1820,7 +1820,7 @@ int map_readallmap (void)
}
/*==========================================
- * “ǂݍž‚Ţmap‚đ’ljÁ‚ˇ‚é
+ * 読み込むmapを追加する
*------------------------------------------
*/
int map_addmap (char *mapname)
@@ -1842,7 +1842,7 @@ int map_addmap (char *mapname)
}
/*==========================================
- * “ǂݍž‚Ţmap‚đíœ‚ˇ‚é
+ * 読み込むmapを削除する
*------------------------------------------
*/
int map_delmap (char *mapname)
@@ -1938,7 +1938,7 @@ void map_write_log (char *format, ...)
}
/*==========================================
- * Ý’čƒtƒ@ƒCƒ‹‚đ“ǂݍž‚Ţ
+ * 設定ファイルを読み込む
*------------------------------------------
*/
int map_config_read (char *cfgName)
@@ -2130,7 +2130,7 @@ static int cleanup_sub (struct block_list *bl, va_list ap)
}
/*==========================================
- * mapŽII—šŽžˆ—
+ * map鯖終了時処理
*------------------------------------------
*/
void do_final (void)
@@ -2248,7 +2248,7 @@ int do_init (int argc, char *argv[])
do_init_chrif ();
do_init_clif ();
do_init_itemdb ();
- do_init_mob (); // npc‚̏‰Šú‰ťŽž“ŕ‚Ĺmob_spawn‚ľ‚āAmob_db‚đŽQĆ‚ˇ‚é‚Ě‚Ĺinit_npc‚ć‚čć
+ do_init_mob (); // npcの初期化時内でmob_spawnして、mob_dbを参照するのでinit_npcより先
do_init_script ();
do_init_npc ();
do_init_pc ();
@@ -2258,7 +2258,7 @@ int do_init (int argc, char *argv[])
do_init_skill ();
do_init_magic ();
- npc_event_do_oninit (); // npc‚ĚOnInitƒCƒxƒ“ƒgŽŔs
+ npc_event_do_oninit (); // npcのOnInitイベント実行
if (battle_config.pk_mode == 1)
printf ("The server is running in \033[1;31mPK Mode\033[0m.\n");
diff --git a/src/map/map.h b/src/map/map.h
index dde7d7f..53f6dfc 100644
--- a/src/map/map.h
+++ b/src/map/map.h
@@ -294,8 +294,8 @@ struct map_session_data
int castrate, hprate, sprate, dsprate;
int addele[10], addrace[12], addsize[3], subele[10], subrace[12];
int addeff[10], addeff2[10], reseff[10];
- int watk_, watk_2, atkmods_[3], addele_[10], addrace_[12], addsize_[3]; //“ń“—Ź‚Ě‚˝‚߂ɒljÁ
- int atk_ele_, star_, overrefine_; //“ń“—Ź‚Ě‚˝‚߂ɒljÁ
+ int watk_, watk_2, atkmods_[3], addele_[10], addrace_[12], addsize_[3]; //二刀流のために追加
+ int atk_ele_, star_, overrefine_; //二刀流のために追加
int base_atk, atk_rate;
int arrow_atk, arrow_ele, arrow_cri, arrow_hit, arrow_range;
int arrow_addele[10], arrow_addrace[12], arrow_addsize[3],
@@ -452,7 +452,7 @@ struct npc_data
} warp;
char *message; // for MESSAGE: only send this message
} u;
- // ‚ą‚ą‚Ƀƒ“ƒo‚đ’ljÁ‚ľ‚Ä‚Í‚Č‚ç‚Č‚˘(shop_item‚Ş‰Â•Ď’ˇ‚Ěˆ×)
+ // ここにメンバを追加してはならない(shop_itemが可変長の為)
char eventqueue[MAX_EVENTQUEUE][50];
int eventtimer[MAX_EVENTTIMER];
@@ -552,13 +552,13 @@ enum
{ NONE_ATTACKABLE, ATTACKABLE };
enum
-{ ATK_LUCKY = 1, ATK_FLEE, ATK_DEF }; // ˆÍ‚Ü‚ęƒyƒiƒ‹ƒeƒBŒvŽZ—p
+{ ATK_LUCKY = 1, ATK_FLEE, ATK_DEF }; // 囲まれペナルティ計算用
struct map_data
{
char name[24];
char alias[24]; // [MouseJstr]
- unsigned char *gat; // NULL‚Ȃ牺‚Ěmap_data_other_server‚Ć‚ľ‚Ĉľ‚¤
+ unsigned char *gat; // NULLなら下のmap_data_other_serverとして扱う
struct block_list **block;
struct block_list **block_mob;
int *block_count, *block_mob_count;
@@ -611,7 +611,7 @@ struct map_data
struct map_data_other_server
{
char name[24];
- unsigned char *gat; // NULLŒĹ’č‚É‚ľ‚Ä”ť’f
+ unsigned char *gat; // NULL固定にして判断
unsigned long ip;
unsigned int port;
};
@@ -725,14 +725,14 @@ extern char talkie_mes[];
extern char wisp_server_name[];
-// ŽI‘S‘̏î•ń
+// 鯖全体情報
void map_setusers (int);
int map_getusers (void);
-// blockíœŠÖ˜A
+// block削除関連
int map_freeblock (void *bl);
int map_freeblock_lock (void);
int map_freeblock_unlock (void);
-// blockŠÖ˜A
+// block関連
int map_addblock (struct block_list *);
int map_delblock (struct block_list *);
void map_foreachinarea (int (*)(struct block_list *, va_list), int, int, int,
@@ -743,9 +743,9 @@ void map_foreachincell (int (*)(struct block_list *, va_list), int, int, int,
void map_foreachinmovearea (int (*)(struct block_list *, va_list), int, int,
int, int, int, int, int, int, ...);
int map_countnearpc (int, int, int);
-//blockŠÖ˜A‚ɒljÁ
+//block関連に追加
int map_count_oncell (int m, int x, int y);
-// ˆęŽž“IobjectŠÖ˜A
+// 一時的object関連
int map_addobject (struct block_list *);
int map_delobject (int, int type);
int map_delobjectnofree (int id, int type);
@@ -761,7 +761,7 @@ void map_write_log (char *format, ...);
#define MAP_LOG_PC(sd, fmt, args...) MAP_LOG("PC%d %d:%d,%d " fmt, sd->status.char_id, sd->bl.m, sd->bl.x, sd->bl.y, ## args)
-// °ƒAƒCƒeƒ€ŠÖ˜A
+// 床アイテム関連
int map_clearflooritem_timer (int, unsigned int, int, int);
#define map_clearflooritem(id) map_clearflooritem_timer(0,0,id,1)
int map_addflooritem_any (struct item *, int amount, int m, int x, int y,
@@ -773,7 +773,7 @@ int map_addflooritem (struct item *, int, int, int, int,
struct map_session_data *, int);
int map_searchrandfreecell (int, int, int, int);
-// ƒLƒƒƒ‰id„ƒLƒƒƒ‰–ź •ĎŠˇŠÖ˜A
+// キャラid=>キャラ名 変換関連
void map_addchariddb (int charid, char *name);
void map_delchariddb (int charid);
int map_reqchariddb (struct map_session_data *sd, int charid);
@@ -800,15 +800,15 @@ struct map_session_data *map_get_next_session (struct map_session_data
struct map_session_data *map_get_prev_session (struct map_session_data
*current);
-// gatŠÖ˜A
+// gat関連
int map_getcell (int, int, int);
int map_setcell (int, int, int, int);
-// ‚ť‚Ě‘ź
+// その他
int map_check_dir (int s_dir, int t_dir);
int map_calc_dir (struct block_list *src, int x, int y);
-// path.c‚ć‚č
+// path.cより
int path_search (struct walkpath_data *, int, int, int, int, int, int);
int path_blownpos (int m, int x0, int y0, int dx, int dy, int count);
diff --git a/src/map/mob.c b/src/map/mob.c
index de691c1..7962114 100644
--- a/src/map/mob.c
+++ b/src/map/mob.c
@@ -353,11 +353,11 @@ int mob_once_spawn (struct map_session_data *sd, char *mapname,
else
m = map_mapname2mapid (mapname);
- if (m < 0 || amount <= 0 || (class >= 0 && class <= 1000) || class > 2000) // ’l‚ŞˆŮí‚Č‚ç˘ŠŤ‚đŽ~‚ß‚é
+ if (m < 0 || amount <= 0 || (class >= 0 && class <= 1000) || class > 2000) // 値が異常なら召喚を止める
return 0;
if (class < 0)
- { // ƒ‰ƒ“ƒ_ƒ€‚ɏ˘ŠŤ
+ { // ランダムに召喚
int i = 0;
int j = -class - 1;
int k;
@@ -412,7 +412,7 @@ int mob_once_spawn (struct map_session_data *sd, char *mapname,
md->bl.x = x;
md->bl.y = y;
if (r < 0 && battle_config.dead_branch_active == 1)
- md->mode = 0x1 + 0x4 + 0x80; //ˆÚ“Ž‚ľ‚ăAƒNƒeƒBƒu‚Ĺ”˝Œ‚‚ˇ‚é
+ md->mode = 0x1 + 0x4 + 0x80; //移動してアクティブで反撃する
md->m = m;
md->x0 = x;
md->y0 = y;
@@ -510,7 +510,7 @@ int mob_spawn_guardian (struct map_session_data *sd, char *mapname,
else
m = map_mapname2mapid (mapname);
- if (m < 0 || amount <= 0 || (class >= 0 && class <= 1000) || class > 2000) // ’l‚ŞˆŮí‚Č‚ç˘ŠŤ‚đŽ~‚ß‚é
+ if (m < 0 || amount <= 0 || (class >= 0 && class <= 1000) || class > 2000) // 値が異常なら召喚を止める
return 0;
if (class < 0)
@@ -677,11 +677,11 @@ int mob_can_move (struct mob_data *md)
if (md->canmove_tick > gettick () || (md->opt1 > 0 && md->opt1 != 6)
|| md->option & 2)
return 0;
- // ƒAƒ“ƒNƒ‹’†‚Ĺ“Ž‚Ż‚Č‚˘‚Ć‚Š
- if (md->sc_data[SC_ANKLE].timer != -1 || //ƒAƒ“ƒNƒ‹ƒXƒlƒA
- md->sc_data[SC_AUTOCOUNTER].timer != -1 || //ƒI[ƒgƒJƒEƒ“ƒ^[
- md->sc_data[SC_BLADESTOP].timer != -1 || //”’nŽć‚č
- md->sc_data[SC_SPIDERWEB].timer != -1 //ƒXƒpƒCƒ_[ƒEƒFƒbƒu
+ // アンクル中で動けないとか
+ if (md->sc_data[SC_ANKLE].timer != -1 || //アンクルスネア
+ md->sc_data[SC_AUTOCOUNTER].timer != -1 || //オートカウンター
+ md->sc_data[SC_BLADESTOP].timer != -1 || //白刃取り
+ md->sc_data[SC_SPIDERWEB].timer != -1 //スパイダーウェッブ
)
return 0;
@@ -917,12 +917,12 @@ static int mob_attack (struct mob_data *md, unsigned int tick, int data)
return 0;
if (battle_config.monster_attack_direction_change)
- md->dir = map_calc_dir (&md->bl, tbl->x, tbl->y); // Œü‚ŤÝ’č
+ md->dir = map_calc_dir (&md->bl, tbl->x, tbl->y); // 向き設定
//clif_fixmobpos(md);
md->state.skillstate = MSS_ATTACK;
- if (mobskill_use (md, tick, -2)) // ƒXƒLƒ‹Žg—p
+ if (mobskill_use (md, tick, -2)) // スキル使用
return 0;
md->target_lv = battle_weapon_attack (&md->bl, tbl, tick, 0);
@@ -1041,7 +1041,7 @@ static int mob_timer (int tid, unsigned int tick, int id, int data)
struct block_list *bl;
if ((bl = map_id2bl (id)) == NULL)
- { //UŒ‚‚ľ‚Ä‚Ť‚˝“G‚Ş‚ŕ‚¤‚˘‚Č‚˘‚̂͐łí‚̂悤‚ž
+ { //攻撃してきた敵がもういないのは正常のようだ
return 1;
}
@@ -1453,13 +1453,13 @@ int mob_can_reach (struct mob_data *md, struct block_list *bl, int range)
return 0;
}
- if (md->bl.m != bl->m) // ˆá‚¤ƒƒbƒv
+ if (md->bl.m != bl->m) // 違うャbプ
return 0;
- if (range > 0 && range < ((dx > dy) ? dx : dy)) // ‰“‚ˇ‚Ź‚é
+ if (range > 0 && range < ((dx > dy) ? dx : dy)) // 遠すぎる
return 0;
- if (md->bl.x == bl->x && md->bl.y == bl->y) // “Ż‚śƒƒX
+ if (md->bl.x == bl->x && md->bl.y == bl->y) // 同じャX
return 1;
// Obstacle judging
@@ -1573,7 +1573,7 @@ static int mob_ai_sub_hard_activesearch (struct block_list *bl, va_list ap)
else
return 0;
- //“G–Ą•ű”ť’č
+ //敵味方判定
if (battle_check_target (&smd->bl, bl, BCT_ENEMY) == 0)
return 0;
@@ -1582,11 +1582,11 @@ static int mob_ai_sub_hard_activesearch (struct block_list *bl, va_list ap)
else
mode = smd->mode;
- // ƒAƒNƒeƒBƒu‚Ĺƒ^[ƒQƒbƒgŽË’ö“ŕ‚É‚˘‚é‚Č‚çAƒƒbƒN‚ˇ‚é
+ // アクティブでターゲット射程内にいるなら、ロックする
if (mode & 0x04)
{
race = mob_db[smd->class].race;
- //‘ÎŰ‚ŞPC‚Ěę‡
+ //対象がPCの場合
if (tsd &&
!pc_isdead (tsd) &&
tsd->bl.m == smd->bl.m &&
@@ -1599,25 +1599,25 @@ static int mob_ai_sub_hard_activesearch (struct block_list *bl, va_list ap)
(tsd->sc_data[SC_TRICKDEAD].timer == -1 &&
((!pc_ishiding (tsd) && !tsd->state.gangsterparadise)
|| race == 4 || race == 6)))
- { // –WŠQ‚Ş‚Č‚˘‚Š”ť’č
- if (mob_can_reach (smd, bl, 12) && // “ž’B‰Â”\Ť”ť’č
+ { // 妨害がないか判定
+ if (mob_can_reach (smd, bl, 12) && // 到達可能性判定
MRAND (1000) < 1000 / (++(*pcc)))
- { // ”͈͓ŕPC‚Ĺ“™Šm—Ś‚É‚ˇ‚é
+ { // 範囲内PCで等確率にする
smd->target_id = tsd->bl.id;
smd->state.targettype = ATTACKABLE;
smd->min_chase = 13;
}
}
}
- //‘ÎŰ‚ŞMob‚Ěę‡
+ //対象がMobの場合
else if (tmd &&
tmd->bl.m == smd->bl.m &&
(dist =
distance (smd->bl.x, smd->bl.y, tmd->bl.x, tmd->bl.y)) < 9)
{
- if (mob_can_reach (smd, bl, 12) && // “ž’B‰Â”\Ť”ť’č
+ if (mob_can_reach (smd, bl, 12) && // 到達可能性判定
MRAND (1000) < 1000 / (++(*pcc)))
- { // ”͈͓ŕ‚Ĺ“™Šm—Ś‚É‚ˇ‚é
+ { // 範囲内で等確率にする
smd->target_id = bl->id;
smd->state.targettype = ATTACKABLE;
smd->min_chase = 13;
@@ -1828,7 +1828,7 @@ static int mob_ai_sub_hard_slavemob (struct mob_data *md, unsigned int tick)
(sd->sc_data[SC_TRICKDEAD].timer == -1 &&
((!pc_ishiding (sd) && !sd->state.gangsterparadise)
|| race == 4 || race == 6)))
- { // –WŠQ‚Ş‚Č‚˘‚Š”ť’č
+ { // 妨害がないか判定
md->target_id = sd->bl.id;
md->state.targettype = ATTACKABLE;
@@ -2028,7 +2028,7 @@ static int mob_ai_sub_hard (struct block_list *bl, va_list ap)
if (md->master_id > 0 && md->state.special_mob_ai == 0)
mob_ai_sub_hard_slavemob (md, tick);
- // ƒAƒNƒeƒBƒ”ƒ‚ƒ“ƒXƒ^[‚̍ô“G (?? of a bitter taste TIVU monster)
+ // アクティヴモンスターの策敵 (?? of a bitter taste TIVU monster)
if ((!md->target_id || md->state.targettype == NONE_ATTACKABLE)
&& mode & 0x04 && !md->state.master_check
&& battle_config.monster_active_enable == 1)
@@ -2077,45 +2077,45 @@ static int mob_ai_sub_hard (struct block_list *bl, va_list ap)
|| (dist =
distance (md->bl.x, md->bl.y, tbl->x,
tbl->y)) >= md->min_chase)
- mob_unlocktarget (md, tick); // •Ęƒ}ƒbƒv‚ŠAŽ‹ŠEŠO
+ mob_unlocktarget (md, tick); // 別マップか、視界外
else if (tsd && !(mode & 0x20)
&& (tsd->sc_data[SC_TRICKDEAD].timer != -1
||
((pc_ishiding (tsd)
|| tsd->state.gangsterparadise) && race != 4
&& race != 6)))
- mob_unlocktarget (md, tick); // ƒXƒLƒ‹‚Č‚Ç‚É‚ć‚éô“G–WŠQ
+ mob_unlocktarget (md, tick); // スキルなどによる策敵妨害
else if (!battle_check_range
(&md->bl, tbl, mob_db[md->class].range))
{
- // UŒ‚”͈͊O‚Č‚Ě‚ĹˆÚ“Ž
+ // 攻撃範囲外なので移動
if (!(mode & 1))
- { // ˆÚ“Ž‚ľ‚Č‚˘ƒ‚[ƒh
+ { // 移動しないモード
mob_unlocktarget (md, tick);
return 0;
}
- if (!mob_can_move (md)) // “Ž‚Ż‚Č‚˘ó‘Ô‚É‚ ‚é
+ if (!mob_can_move (md)) // 動けない状態にある
return 0;
- md->state.skillstate = MSS_CHASE; // “ËŒ‚ŽžƒXƒLƒ‹
+ md->state.skillstate = MSS_CHASE; // 突撃時スキル
mobskill_use (md, tick, -1);
// if(md->timer != -1 && (DIFF_TICK(md->next_walktime,tick)<0 || distance(md->to_x,md->to_y,tsd->bl.x,tsd->bl.y)<2) )
if (md->timer != -1 && md->state.state != MS_ATTACK
&& (DIFF_TICK (md->next_walktime, tick) < 0
|| distance (md->to_x, md->to_y, tbl->x,
tbl->y) < 2))
- return 0; // Šů‚ɈړŽ’†
+ return 0; // 既に移動中
if (!mob_can_reach
(md, tbl, (md->min_chase > 13) ? md->min_chase : 13))
- mob_unlocktarget (md, tick); // ˆÚ“Ž‚Ĺ‚Ť‚Č‚˘‚Ě‚Ĺƒ^ƒQ‰đœiIW‚Ć‚ŠHj
+ mob_unlocktarget (md, tick); // 移動できないのでタゲ解除(IWとか?)
else
{
- // ’ǐŐ
+ // 追补
md->next_walktime = tick + 500;
i = 0;
do
{
if (i == 0)
- { // Ĺ‰‚ÍAEGIS‚Ć“Ż‚ś•ű–@‚ĹŒŸő
+ { // 最初はAEGISと同じ方法で検索
dx = tbl->x - md->bl.x;
dy = tbl->y - md->bl.y;
if (dx < 0)
@@ -2128,7 +2128,7 @@ static int mob_ai_sub_hard (struct block_list *bl, va_list ap)
dy--;
}
else
- { // ‚ž‚ß‚Č‚çAthenaŽŽ(ƒ‰ƒ“ƒ_ƒ€)
+ { // だめならAthena式(ランダム)
dx = tbl->x - md->bl.x + MRAND (3) - 1;
dy = tbl->y - md->bl.y + MRAND (3) - 1;
}
@@ -2148,7 +2148,7 @@ static int mob_ai_sub_hard (struct block_list *bl, va_list ap)
while (ret && i < 5);
if (ret)
- { // ˆÚ“Ž•s‰Â”\‚ȏŠ‚Š‚ç‚̍UŒ‚‚Č‚ç2•ŕ‰ş‚é
+ { // 移動不可能な所からの攻撃なら2歩下る
if (dx < 0)
dx = 2;
else if (dx > 0)
@@ -2163,15 +2163,15 @@ static int mob_ai_sub_hard (struct block_list *bl, va_list ap)
}
}
else
- { // UŒ‚ŽË’ö”͈͓ŕ
+ { // 攻撃射程範囲内
md->state.skillstate = MSS_ATTACK;
if (md->state.state == MS_WALK)
- mob_stop_walking (md, 1); // •ŕs’†‚Č‚ç’âŽ~
+ mob_stop_walking (md, 1); // 歩行中なら停止
if (md->state.state == MS_ATTACK)
- return 0; // Šů‚ɍUŒ‚’†
+ return 0; // 既に攻撃中
mob_changestate (md, MS_ATTACK, attack_type);
-/* if(mode&0x08){ // ƒŠƒ“ƒNƒ‚ƒ“ƒXƒ^[
+/* if(mode&0x08){ // リンクモンスター
map_foreachinarea(mob_ai_sub_hard_linksearch,md->bl.m,
md->bl.x-13,md->bl.y-13,
md->bl.x+13,md->bl.y+13,
@@ -2181,34 +2181,34 @@ static int mob_ai_sub_hard (struct block_list *bl, va_list ap)
return 0;
}
else
- { // ƒ‹[ƒgƒ‚ƒ“ƒXƒ^[ˆ—
+ { // ルートモンスター処理
if (tbl == NULL || tbl->type != BL_ITEM || tbl->m != md->bl.m
|| (dist =
distance (md->bl.x, md->bl.y, tbl->x,
tbl->y)) >= md->min_chase || !md->lootitem)
{
- // ‰“‚ˇ‚Ź‚é‚ŠƒAƒCƒeƒ€‚Ş‚Č‚­‚Č‚Á‚˝
+ // 遠すぎるかアイテムがなくなった
mob_unlocktarget (md, tick);
if (md->state.state == MS_WALK)
- mob_stop_walking (md, 1); // •ŕs’†‚Č‚ç’âŽ~
+ mob_stop_walking (md, 1); // 歩行中なら停止
}
else if (dist)
{
if (!(mode & 1))
- { // ˆÚ“Ž‚ľ‚Č‚˘ƒ‚[ƒh
+ { // 移動しないモード
mob_unlocktarget (md, tick);
return 0;
}
- if (!mob_can_move (md)) // “Ž‚Ż‚Č‚˘ó‘Ô‚É‚ ‚é
+ if (!mob_can_move (md)) // 動けない状態にある
return 0;
- md->state.skillstate = MSS_LOOT; // ƒ‹[ƒgŽžƒXƒLƒ‹Žg—p
+ md->state.skillstate = MSS_LOOT; // ルート時スキル使用
mobskill_use (md, tick, -1);
// if(md->timer != -1 && (DIFF_TICK(md->next_walktime,tick)<0 || distance(md->to_x,md->to_y,tbl->x,tbl->y)<2) )
if (md->timer != -1 && md->state.state != MS_ATTACK
&& (DIFF_TICK (md->next_walktime, tick) < 0
|| distance (md->to_x, md->to_y, tbl->x,
tbl->y) <= 0))
- return 0; // Šů‚ɈړŽ’†
+ return 0; // 既に移動中
md->next_walktime = tick + 500;
dx = tbl->x - md->bl.x;
dy = tbl->y - md->bl.y;
@@ -2218,14 +2218,14 @@ static int mob_ai_sub_hard (struct block_list *bl, va_list ap)
}*/
ret = mob_walktoxy (md, md->bl.x + dx, md->bl.y + dy, 0);
if (ret)
- mob_unlocktarget (md, tick); // ˆÚ“Ž‚Ĺ‚Ť‚Č‚˘‚Ě‚Ĺƒ^ƒQ‰đœiIW‚Ć‚ŠHj
+ mob_unlocktarget (md, tick); // 移動できないのでタゲ解除(IWとか?)
}
else
- { // ƒAƒCƒeƒ€‚Ü‚Ĺ‚˝‚Ç‚č’…‚˘‚˝
+ { // アイテムまでたどり着いた
if (md->state.state == MS_ATTACK)
- return 0; // UŒ‚’†
+ return 0; // 攻撃中
if (md->state.state == MS_WALK)
- mob_stop_walking (md, 1); // •ŕs’†‚Č‚ç’âŽ~
+ mob_stop_walking (md, 1); // 歩行中なら停止
fitem = (struct flooritem_data *) tbl;
if (md->lootitem_count < LOOTITEM_SIZE)
memcpy (&md->lootitem[md->lootitem_count++],
@@ -2254,7 +2254,7 @@ static int mob_ai_sub_hard (struct block_list *bl, va_list ap)
{
mob_unlocktarget (md, tick);
if (md->state.state == MS_WALK)
- mob_stop_walking (md, 4); // •ŕs’†‚Č‚ç’âŽ~
+ mob_stop_walking (md, 4); // 歩行中なら停止
return 0;
}
}
@@ -2263,11 +2263,11 @@ static int mob_ai_sub_hard (struct block_list *bl, va_list ap)
if (mobskill_use (md, tick, -1))
return 0;
- // •ŕsˆ—
- if (mode & 1 && mob_can_move (md) && // ˆÚ“Ž‰Â”\MOB&“Ž‚Ż‚éó‘Ô‚É‚ ‚é
+ // 歩行処理
+ if (mode & 1 && mob_can_move (md) && // 移動可能MOB&動ける状態にある
(md->master_id == 0 || md->state.special_mob_ai
|| md->master_dist > 10))
- { //Žć‚芪‚ŤMOB‚ś‚á‚Č‚˘
+ { //取り巻きMOBじゃない
if (DIFF_TICK (md->next_walktime, tick) > +7000 &&
(md->walkpath.path_len == 0
@@ -2599,7 +2599,7 @@ int mob_damage (struct block_list *src, struct mob_data *md, int damage,
int drop_rate;
int skill, sp;
- nullpo_retr (0, md); //src‚ÍNULL‚ĹŒÄ‚Î‚ę‚éę‡‚ŕ‚ ‚é‚̂ŁA‘ź‚Ĺƒ`ƒFƒbƒN
+ nullpo_retr (0, md); //srcはNULLで呼ばれる場合もあるので、他でチェック
if (src && src->id == md->master_id
&& md->mode & MOB_MODE_TURNS_AGAINST_BAD_MASTER)
@@ -2818,7 +2818,7 @@ int mob_damage (struct block_list *src, struct mob_data *md, int damage,
skill_status_change_end (&md->bl, SC_CLOAKING, -1);
if (md->state.special_mob_ai == 2)
- { //ƒXƒtƒBƒA[ƒ}ƒCƒ“
+ { //スフィアーマイン
int skillidx = 0;
if ((skillidx =
@@ -2826,7 +2826,7 @@ int mob_damage (struct block_list *src, struct mob_data *md, int damage,
{
md->mode |= 0x1;
md->next_walktime = tick;
- mobskill_use_id (md, &md->bl, skillidx); //ŽŠ”š‰rĽŠJŽn
+ mobskill_use_id (md, &md->bl, skillidx); //自爆詠唱開始
md->state.special_mob_ai++;
}
}
@@ -2838,11 +2838,11 @@ int mob_damage (struct block_list *src, struct mob_data *md, int damage,
MAP_LOG ("MOB%d DEAD", md->bl.id);
- // ----- ‚ą‚ą‚Š‚玀–Sˆ— -----
+ // ----- ここから死亡処理 -----
map_freeblock_lock ();
mob_changestate (md, MS_DEAD, 0);
- mobskill_use (md, tick, -1); // Ž€–SŽžƒXƒLƒ‹
+ mobskill_use (md, tick, -1); // 死亡時スキル
memset (tmpsd, 0, sizeof (tmpsd));
memset (pt, 0, sizeof (pt));
@@ -2852,7 +2852,7 @@ int mob_damage (struct block_list *src, struct mob_data *md, int damage,
if (src && src->type == BL_MOB)
mob_unlocktarget ((struct mob_data *) src, tick);
- /* ƒ\ƒEƒ‹ƒhƒŒƒCƒ“ */
+ /* ソウルドレイン */
if (sd && (skill = pc_checkskill (sd, HW_SOULDRAIN)) > 0)
{
clif_skill_nodamage (src, &md->bl, HW_SOULDRAIN, skill, 1);
@@ -2863,8 +2863,8 @@ int mob_damage (struct block_list *src, struct mob_data *md, int damage,
clif_heal (sd->fd, SP_SP, sp);
}
- // mapŠO‚ɏÁ‚Ś‚˝l‚ÍŒvŽZ‚Š‚珜‚­‚Ě‚Ĺ
- // overkill•Ş‚Í–ł‚˘‚Ż‚Çsum‚Ímax_hp‚Ć‚Íˆá‚¤
+ // map外に消えた人は計算から除くので
+ // overkill分は無いけどsumはmax_hpとは違う
tdmg = 0;
for (i = 0, count = 0, mvp_damage = 0; i < DAMAGELOG_SIZE; i++)
@@ -2897,7 +2897,7 @@ int mob_damage (struct block_list *src, struct mob_data *md, int damage,
else
dmg_rate = 1;
- // ŒoŒą’l‚Ě•Ş”z
+ // 経験値の分配
for (i = 0; i < DAMAGELOG_SIZE; i++)
{
@@ -2953,13 +2953,13 @@ int mob_damage (struct block_list *src, struct mob_data *md, int damage,
job_exp = 0; // Added [Valaris]
if ((pid = tmpsd[i]->status.party_id) > 0)
- { // ƒp[ƒeƒB‚É“ü‚Á‚Ä‚˘‚é
+ { // パーティに入っている
int j = 0;
- for (j = 0; j < pnum; j++) // Œö•˝ƒp[ƒeƒBƒŠƒXƒg‚É‚˘‚é‚Š‚Ç‚¤‚Š
+ for (j = 0; j < pnum; j++) // 公平パーティリストにいるかどうか
if (pt[j].id == pid)
break;
if (j == pnum)
- { // ‚˘‚Č‚˘‚Ć‚Ť‚ÍŒö•˝‚Š‚Ç‚¤‚ŠŠm”F
+ { // いないときは公平かどうか確認
if ((p = party_search (pid)) != NULL && p->exp != 0)
{
pt[pnum].id = pid;
@@ -2971,16 +2971,16 @@ int mob_damage (struct block_list *src, struct mob_data *md, int damage,
}
}
else
- { // ‚˘‚é‚Ć‚Ť‚ÍŒö•˝
+ { // いるときは公平
pt[j].base_exp += base_exp;
pt[j].job_exp += job_exp;
flag = 0;
}
}
- if (flag) // ŠeŽŠŠ“ž
+ if (flag) // 各自所得
pc_gainexp (tmpsd[i], base_exp, job_exp);
}
- // Œö•˝•Ş”z
+ // 公平分配
for (i = 0; i < pnum; i++)
party_exp_share (pt[i].p, md->bl.m, pt[i].base_exp,
pt[i].job_exp);
@@ -3086,7 +3086,7 @@ int mob_damage (struct block_list *src, struct mob_data *md, int damage,
}
}
- // mvpˆ—
+ // mvp処理
if (mvp_sd && mob_db[md->class].mexp > 0)
{
int j;
@@ -3097,7 +3097,7 @@ int mob_damage (struct block_list *src, struct mob_data *md, int damage,
mexp = (temp > 2147483647.) ? 0x7fffffff : (int) temp;
if (mexp < 1)
mexp = 1;
- clif_mvp_effect (mvp_sd); // ƒGƒtƒFƒNƒg
+ clif_mvp_effect (mvp_sd); // エフェクト
clif_mvp_exp (mvp_sd, mexp);
pc_gainexp (mvp_sd, mexp, 0);
for (j = 0; j < 3; j++)
@@ -3145,7 +3145,7 @@ int mob_damage (struct block_list *src, struct mob_data *md, int damage,
guild_agit_break (md);
}
- // SCRIPTŽŔs
+ // SCRIPT実行
if (md->npc_event[0])
{
if (sd == NULL)
@@ -3265,7 +3265,7 @@ int mob_class_change (struct mob_data *md, int *value)
}
/*==========================================
- * mob‰ń•œ
+ * mob回復
*------------------------------------------
*/
int mob_heal (struct mob_data *md, int heal)
@@ -3338,7 +3338,7 @@ int mob_warpslave (struct mob_data *md, int x, int y)
}
/*==========================================
- * mobƒ[ƒv
+ * mobワープ
*------------------------------------------
*/
int mob_warp (struct mob_data *md, int m, int x, int y, int type)
@@ -3363,7 +3363,7 @@ int mob_warp (struct mob_data *md, int m, int x, int y, int type)
map_delblock (&md->bl);
if (bx > 0 && by > 0)
- { // ˆĘ’uŽw’č‚Ěę‡ŽüˆÍ‚XƒZƒ‹‚đ’Tő
+ { // 位置指定の場合周囲9セルを探索
xs = ys = 9;
}
@@ -3371,12 +3371,12 @@ int mob_warp (struct mob_data *md, int m, int x, int y, int type)
&& (i++) < 1000)
{
if (xs > 0 && ys > 0 && i < 250)
- { // Žw’čˆĘ’u•t‹ß‚Ě’Tő
+ { // 指定位置付近の探索
x = MPRAND (bx, xs) - xs / 2;
y = MPRAND (by, ys) - ys / 2;
}
else
- { // ŠŽ‘Sƒ‰ƒ“ƒ_ƒ€’Tő
+ { // 完全ランダム探索
x = MPRAND (1, (map[m].xs - 2));
y = MPRAND (1, (map[m].ys - 2));
}
@@ -3395,7 +3395,7 @@ int mob_warp (struct mob_data *md, int m, int x, int y, int type)
printf ("MOB %d warp failed, class = %d\n", md->bl.id, md->class);
}
- md->target_id = 0; // ƒ^ƒQ‚đ‰đœ‚ˇ‚é
+ md->target_id = 0; // タゲを解除する
md->state.targettype = NONE_ATTACKABLE;
md->attacked_id = 0;
md->state.skillstate = MSS_IDLE;
@@ -3419,7 +3419,7 @@ int mob_warp (struct mob_data *md, int m, int x, int y, int type)
}
/*==========================================
- * ‰ć–Ę“ŕ‚ĚŽć‚芪‚Ť‚̐”ŒvŽZ—p(foreachinarea)
+ * 画面内の取り巻きの数計算用(foreachinarea)
*------------------------------------------
*/
int mob_countslave_sub (struct block_list *bl, va_list ap)
@@ -3440,7 +3440,7 @@ int mob_countslave_sub (struct block_list *bl, va_list ap)
}
/*==========================================
- * ‰ć–Ę“ŕ‚ĚŽć‚芪‚Ť‚̐”ŒvŽZ
+ * 画面内の取り巻きの数計算
*------------------------------------------
*/
int mob_countslave (struct mob_data *md)
@@ -3456,7 +3456,7 @@ int mob_countslave (struct mob_data *md)
}
/*==========================================
- * Žč‰şMOB˘ŠŤ
+ * 手下MOB召喚
*------------------------------------------
*/
int mob_summonslave (struct mob_data *md2, int *value, int amount, int flag)
@@ -3471,7 +3471,7 @@ int mob_summonslave (struct mob_data *md2, int *value, int amount, int flag)
by = md2->bl.y;
m = md2->bl.m;
- if (value[0] <= 1000 || value[0] > 2000) // ’l‚ŞˆŮí‚Č‚ç˘ŠŤ‚đŽ~‚ß‚é
+ if (value[0] <= 1000 || value[0] > 2000) // 値が異常なら召喚を止める
return 0;
while (count < 5 && value[count] > 1000 && value[count] <= 2000)
count++;
@@ -3520,8 +3520,8 @@ int mob_summonslave (struct mob_data *md2, int *value, int amount, int flag)
md->xs = 0;
md->ys = 0;
md->stats[MOB_SPEED] = md2->stats[MOB_SPEED];
- md->spawndelay1 = -1; // ˆę“x‚Ě‚Ýƒtƒ‰ƒO
- md->spawndelay2 = -1; // ˆę“x‚Ě‚Ýƒtƒ‰ƒO
+ md->spawndelay1 = -1; // 一度のみフラグ
+ md->spawndelay2 = -1; // 一度のみフラグ
memset (md->npc_event, 0, sizeof (md->npc_event));
md->bl.type = BL_MOB;
@@ -3539,7 +3539,7 @@ int mob_summonslave (struct mob_data *md2, int *value, int amount, int flag)
}
/*==========================================
- * ŽŠ•Ş‚đƒƒbƒN‚ľ‚Ä‚˘‚éPC‚̐”‚𐔂Ś‚é(foreachclient)
+ * 自分をロックしているPCの数を数える(foreachclient)
*------------------------------------------
*/
static int mob_counttargeted_sub (struct block_list *bl, va_list ap)
@@ -3574,7 +3574,7 @@ static int mob_counttargeted_sub (struct block_list *bl, va_list ap)
}
/*==========================================
- * ŽŠ•Ş‚đƒƒbƒN‚ľ‚Ä‚˘‚éPC‚̐”‚𐔂Ś‚é
+ * 自分をロックしているPCの数を数える
*------------------------------------------
*/
int mob_counttargeted (struct mob_data *md, struct block_list *src,
@@ -3592,7 +3592,7 @@ int mob_counttargeted (struct mob_data *md, struct block_list *src,
}
/*==========================================
- *MOBskill‚Š‚çŠY“–skillid‚Ěskillidx‚đ•Ô‚ˇ
+ *MOBskillから該当skillidのskillidxを返す
*------------------------------------------
*/
int mob_skillid2skillidx (int class, int skillid)
@@ -3613,11 +3613,11 @@ int mob_skillid2skillidx (int class, int skillid)
}
//
-// MOBƒXƒLƒ‹
+// MOBスキル
//
/*==========================================
- * ƒXƒLƒ‹Žg—pi‰rĽŠŽ—šAIDŽw’čj
+ * スキル使用(詠唱完了、ID指定)
*------------------------------------------
*/
int mobskill_castend_id (int tid, unsigned int tick, int id, int data)
@@ -3627,7 +3627,7 @@ int mobskill_castend_id (int tid, unsigned int tick, int id, int data)
struct block_list *mbl;
int range;
- if ((mbl = map_id2bl (id)) == NULL) //‰rĽ‚ľ‚˝Mob‚Ş‚ŕ‚¤‚˘‚Č‚˘‚Ć‚˘‚¤‚Ě‚Í—Ç‚­‚ ‚鐳íˆ—
+ if ((mbl = map_id2bl (id)) == NULL) //詠唱したMobがもういないというのは良くある正常処理
return 0;
if ((md = (struct mob_data *) mbl) == NULL)
{
@@ -3636,30 +3636,30 @@ int mobskill_castend_id (int tid, unsigned int tick, int id, int data)
}
if (md->bl.type != BL_MOB || md->bl.prev == NULL)
return 0;
- if (md->skilltimer != tid) // ƒ^ƒCƒ}ID‚ĚŠm”F
+ if (md->skilltimer != tid) // タイマIDの確認
return 0;
md->skilltimer = -1;
- //’ž–Ů‚âó‘ÔˆŮí‚Č‚Ç
+ //沈黙や状態異常など
if (md->sc_data)
{
if (md->opt1 > 0 || md->sc_data[SC_DIVINA].timer != -1
|| md->sc_data[SC_ROKISWEIL].timer != -1
|| md->sc_data[SC_STEELBODY].timer != -1)
return 0;
- if (md->sc_data[SC_AUTOCOUNTER].timer != -1 && md->skillid != KN_AUTOCOUNTER) //ƒI[ƒgƒJƒEƒ“ƒ^[
+ if (md->sc_data[SC_AUTOCOUNTER].timer != -1 && md->skillid != KN_AUTOCOUNTER) //オートカウンター
return 0;
- if (md->sc_data[SC_BLADESTOP].timer != -1) //”’nŽć‚č
+ if (md->sc_data[SC_BLADESTOP].timer != -1) //白刃取り
return 0;
- if (md->sc_data[SC_BERSERK].timer != -1) //ƒo[ƒT[ƒN
+ if (md->sc_data[SC_BERSERK].timer != -1) //バーサーク
return 0;
}
if (md->skillid != NPC_EMOTION)
md->last_thinktime = tick + battle_get_adelay (&md->bl);
if ((bl = map_id2bl (md->skilltarget)) == NULL || bl->prev == NULL)
- { //ƒXƒLƒ‹ƒ^[ƒQƒbƒg‚Ş‘śÝ‚ľ‚Č‚˘
- //printf("mobskill_castend_id nullpo\n");//ƒ^[ƒQƒbƒg‚Ş‚˘‚Č‚˘‚Ć‚Ť‚Ínullpo‚ś‚á‚Č‚­‚Ä•’Ę‚ÉI—š
+ { //スキルターゲットが存在しない
+ //printf("mobskill_castend_id nullpo\n");//ターゲットがいないときはnullpoじゃなくて普通に終了
return 0;
}
if (md->bl.m != bl->m)
@@ -3682,7 +3682,7 @@ int mobskill_castend_id (int tid, unsigned int tick, int id, int data)
if (bl->type != BL_SKILL && (dist == 0 || map_check_dir (dir, t_dir)))
return 0;
}
- if (((skill_get_inf (md->skillid) & 1) || (skill_get_inf2 (md->skillid) & 4)) && // ”މä“G‘Ί֌Wƒ`ƒFƒbƒN
+ if (((skill_get_inf (md->skillid) & 1) || (skill_get_inf2 (md->skillid) & 4)) && // 彼我敵対関係チェック
battle_check_target (&md->bl, bl, BCT_ENEMY) <= 0)
return 0;
range = skill_get_range (md->skillid, md->skilllv);
@@ -3701,13 +3701,13 @@ int mobskill_castend_id (int tid, unsigned int tick, int id, int data)
switch (skill_get_nk (md->skillid))
{
- // UŒ‚Œn/‚Ť”ň‚΂ľŒn
+ // 攻撃系/吹き飛ばし系
case 0:
case 2:
skill_castend_damage_id (&md->bl, bl, md->skillid, md->skilllv,
tick, 0);
break;
- case 1: // Žx‰‡Œn
+ case 1: // 支援系
if (!mob_db[md->class].skill[md->skillidx].val[0] &&
(md->skillid == AL_HEAL
|| (md->skillid == ALL_RESURRECTION && bl->type != BL_PC))
@@ -3725,7 +3725,7 @@ int mobskill_castend_id (int tid, unsigned int tick, int id, int data)
}
/*==========================================
- * ƒXƒLƒ‹Žg—pi‰rĽŠŽ—šAęŠŽw’čj
+ * スキル使用(詠唱完了、場所指定)
*------------------------------------------
*/
int mobskill_castend_pos (int tid, unsigned int tick, int id, int data)
@@ -3734,7 +3734,7 @@ int mobskill_castend_pos (int tid, unsigned int tick, int id, int data)
struct block_list *bl;
int range, maxcount;
- //mobskill_castend_id“Ż—l‰rĽ‚ľ‚˝Mob‚މrĽŠŽ—šŽž‚É‚ŕ‚¤‚˘‚Č‚˘‚Ć‚˘‚¤‚Ě‚Í‚ ‚č‚ť‚¤‚Č‚Ě‚Ĺnullpo‚Š‚珜ŠO
+ //mobskill_castend_id同様詠唱したMobが詠唱完了時にもういないというのはありそうなのでnullpoから除外
if ((bl = map_id2bl (id)) == NULL)
return 0;
@@ -3743,7 +3743,7 @@ int mobskill_castend_pos (int tid, unsigned int tick, int id, int data)
if (md->bl.type != BL_MOB || md->bl.prev == NULL)
return 0;
- if (md->skilltimer != tid) // ƒ^ƒCƒ}ID‚ĚŠm”F
+ if (md->skilltimer != tid) // タイマIDの確認
return 0;
md->skilltimer = -1;
@@ -3753,11 +3753,11 @@ int mobskill_castend_pos (int tid, unsigned int tick, int id, int data)
|| md->sc_data[SC_ROKISWEIL].timer != -1
|| md->sc_data[SC_STEELBODY].timer != -1)
return 0;
- if (md->sc_data[SC_AUTOCOUNTER].timer != -1 && md->skillid != KN_AUTOCOUNTER) //ƒI[ƒgƒJƒEƒ“ƒ^[
+ if (md->sc_data[SC_AUTOCOUNTER].timer != -1 && md->skillid != KN_AUTOCOUNTER) //オートカウンター
return 0;
- if (md->sc_data[SC_BLADESTOP].timer != -1) //”’nŽć‚č
+ if (md->sc_data[SC_BLADESTOP].timer != -1) //白刃取り
return 0;
- if (md->sc_data[SC_BERSERK].timer != -1) //ƒo[ƒT[ƒN
+ if (md->sc_data[SC_BERSERK].timer != -1) //バーサーク
return 0;
}
@@ -3777,7 +3777,7 @@ int mobskill_castend_pos (int tid, unsigned int tick, int id, int data)
case HT_FREEZINGTRAP:
case HT_BLASTMINE:
case HT_CLAYMORETRAP:
- case PF_SPIDERWEB: /* ƒXƒpƒCƒ_[ƒEƒFƒbƒu */
+ case PF_SPIDERWEB: /* スパイダーウェッブ */
range = 0;
break;
case AL_PNEUMA:
@@ -3808,7 +3808,7 @@ int mobskill_castend_pos (int tid, unsigned int tick, int id, int data)
case HT_BLASTMINE:
case HT_CLAYMORETRAP:
case AM_DEMONSTRATION:
- case PF_SPIDERWEB: /* ƒXƒpƒCƒ_[ƒEƒFƒbƒu */
+ case PF_SPIDERWEB: /* スパイダーウェッブ */
range = 1;
break;
case AL_WARP:
@@ -3882,18 +3882,18 @@ int mobskill_use_id (struct mob_data *md, struct block_list *target,
skill_id = ms->skill_id;
skill_lv = ms->skill_lv;
- // ’ž–Ů‚âˆŮí
+ // 沈黙や異常
if (md->sc_data)
{
if (md->opt1 > 0 || md->sc_data[SC_DIVINA].timer != -1
|| md->sc_data[SC_ROKISWEIL].timer != -1
|| md->sc_data[SC_STEELBODY].timer != -1)
return 0;
- if (md->sc_data[SC_AUTOCOUNTER].timer != -1 && md->skillid != KN_AUTOCOUNTER) //ƒI[ƒgƒJƒEƒ“ƒ^[
+ if (md->sc_data[SC_AUTOCOUNTER].timer != -1 && md->skillid != KN_AUTOCOUNTER) //オートカウンター
return 0;
- if (md->sc_data[SC_BLADESTOP].timer != -1) //”’nŽć‚č
+ if (md->sc_data[SC_BLADESTOP].timer != -1) //白刃取り
return 0;
- if (md->sc_data[SC_BERSERK].timer != -1) //ƒo[ƒT[ƒN
+ if (md->sc_data[SC_BERSERK].timer != -1) //バーサーク
return 0;
}
@@ -3912,7 +3912,7 @@ int mobskill_use_id (struct mob_data *md, struct block_list *target,
if (skill_get_inf2 (skill_id) & 0x200 && md->bl.id == target->id)
return 0;
- // ŽË’ö‚ƏáŠQ•¨ƒ`ƒFƒbƒN
+ // 射程と障害物チェック
range = skill_get_range (skill_id, skill_lv);
if (range < 0)
range = battle_get_range (&md->bl) - (range + 1);
@@ -3927,19 +3927,19 @@ int mobskill_use_id (struct mob_data *md, struct block_list *target,
md->skilldelay[skill_idx] = gettick ();
switch (skill_id)
- { /* ‰˝‚Š“ÁŽę‚ȏˆ—‚Ş•K—v */
- case ALL_RESURRECTION: /* ƒŠƒUƒŒƒNƒVƒ‡ƒ“ */
+ { /* 何か特殊な処理が必要 */
+ case ALL_RESURRECTION: /* リザレクション */
if (target->type != BL_PC
&& battle_check_undead (battle_get_race (target),
battle_get_elem_type (target)))
- { /* “G‚ރAƒ“ƒfƒbƒh‚Č‚ç */
- forcecast = 1; /* ƒ^[ƒ“ƒAƒ“ƒfƒbƒg‚Ć“Ż‚ś‰rĽŽžŠÔ */
+ { /* 敵がアンデッドなら */
+ forcecast = 1; /* ターンアンデットと同じ詠唱時間 */
casttime =
skill_castfix (&md->bl,
skill_get_cast (PR_TURNUNDEAD, skill_lv));
}
break;
- case MO_EXTREMITYFIST: /*ˆ˘C—…”e–PŒ */
+ case MO_EXTREMITYFIST: /*阿修羅覇鳳拳 */
case SA_MAGICROD:
case SA_SPELLBREAKER:
forcecast = 1;
@@ -3952,12 +3952,12 @@ int mobskill_use_id (struct mob_data *md, struct block_list *target,
target->id, skill_id, skill_lv, casttime, md->class);
if (casttime > 0 || forcecast)
- { // ‰rĽ‚Ş•K—v
+ { // 詠唱が必要
// struct mob_data *md2;
clif_skillcasting (&md->bl,
md->bl.id, target->id, 0, 0, skill_id, casttime);
- // ‰rĽ”˝‰žƒ‚ƒ“ƒXƒ^[
+ // 詠唱反応モンスター
/* if( target->type==BL_MOB && mob_db[(md2=(struct mob_data *)target)->class].mode&0x10 &&
md2->state.state!=MS_ATTACK){
md2->target_id=md->bl.id;
@@ -3966,7 +3966,7 @@ int mobskill_use_id (struct mob_data *md, struct block_list *target,
}*/
}
- if (casttime <= 0) // ‰rĽ‚Ě–ł‚˘‚ŕ‚Ě‚ÍƒLƒƒƒ“ƒZƒ‹‚ł‚ę‚Č‚˘
+ if (casttime <= 0) // 詠唱の無いものはキャンセルされない
md->state.skillcastcancel = 0;
md->skilltarget = target->id;
@@ -3996,7 +3996,7 @@ int mobskill_use_id (struct mob_data *md, struct block_list *target,
}
/*==========================================
- * ƒXƒLƒ‹Žg—pięŠŽw’čj
+ * スキル使用(場所指定)
*------------------------------------------
*/
int mobskill_use_pos (struct mob_data *md,
@@ -4016,18 +4016,18 @@ int mobskill_use_pos (struct mob_data *md,
skill_id = ms->skill_id;
skill_lv = ms->skill_lv;
- //’ž–Ů‚âó‘ÔˆŮí‚Č‚Ç
+ //沈黙や状態異常など
if (md->sc_data)
{
if (md->opt1 > 0 || md->sc_data[SC_DIVINA].timer != -1
|| md->sc_data[SC_ROKISWEIL].timer != -1
|| md->sc_data[SC_STEELBODY].timer != -1)
return 0;
- if (md->sc_data[SC_AUTOCOUNTER].timer != -1 && md->skillid != KN_AUTOCOUNTER) //ƒI[ƒgƒJƒEƒ“ƒ^[
+ if (md->sc_data[SC_AUTOCOUNTER].timer != -1 && md->skillid != KN_AUTOCOUNTER) //オートカウンター
return 0;
- if (md->sc_data[SC_BLADESTOP].timer != -1) //”’nŽć‚č
+ if (md->sc_data[SC_BLADESTOP].timer != -1) //白刃取り
return 0;
- if (md->sc_data[SC_BERSERK].timer != -1) //ƒo[ƒT[ƒN
+ if (md->sc_data[SC_BERSERK].timer != -1) //バーサーク
return 0;
}
@@ -4040,7 +4040,7 @@ int mobskill_use_pos (struct mob_data *md,
|| skill_id == TF_BACKSLIDING))
return 0;
- // ŽË’ö‚ƏáŠQ•¨ƒ`ƒFƒbƒN
+ // 射程と障害物チェック
bl.type = BL_NUL;
bl.m = md->bl.m;
bl.x = skill_x;
@@ -4201,7 +4201,7 @@ int mobskill_use (struct mob_data *md, unsigned int tick, int event)
if (md->state.special_mob_ai)
return 0;
- if (md->sc_data[SC_SELFDESTRUCTION].timer != -1) //ŽŠ”š’†‚̓XƒLƒ‹‚đŽg‚í‚Č‚˘
+ if (md->sc_data[SC_SELFDESTRUCTION].timer != -1) //自爆中はスキルを使わない
return 0;
for (i = 0; i < mob_db[md->class].maxskill; i++)
@@ -4209,15 +4209,15 @@ int mobskill_use (struct mob_data *md, unsigned int tick, int event)
int c2 = ms[i].cond2, flag = 0;
struct mob_data *fmd = NULL;
- // ƒfƒBƒŒƒC’†
+ // ディレイ中
if (DIFF_TICK (tick, md->skilldelay[i]) < ms[i].delay)
continue;
- // ó‘Ô”ť’č
+ // 状態判定
if (ms[i].state >= 0 && ms[i].state != md->state.skillstate)
continue;
- // đŒ”ť’č
+ // 条件判定
flag = (event == ms[i].cond1);
if (!flag)
{
@@ -4278,13 +4278,13 @@ int mobskill_use (struct mob_data *md, unsigned int tick, int event)
}
}
- // Šm—Ś”ť’č
+ // 確率判定
if (flag && MRAND (10000) < ms[i].permillage)
{
if (skill_get_inf (ms[i].skill_id) & 2)
{
- // ęŠŽw’č
+ // 場所指定
struct block_list *bl = NULL;
int x = 0, y = 0;
if (ms[i].target <= MST_AROUND)
@@ -4313,7 +4313,7 @@ int mobskill_use (struct mob_data *md, unsigned int tick, int event)
}
if (x <= 0 || y <= 0)
continue;
- // ŽŠ•Ş‚ĚŽüˆÍ
+ // 自分の周囲
if (ms[i].target >= MST_AROUND1)
{
int bx = x, by = y, i = 0, c, m = bl->m, r =
@@ -4333,7 +4333,7 @@ int mobskill_use (struct mob_data *md, unsigned int tick, int event)
y = by;
}
}
- // ‘ŠŽč‚ĚŽüˆÍ
+ // 相手の周囲
if (ms[i].target >= MST_AROUND5)
{
int bx = x, by = y, i = 0, c, m = bl->m, r =
@@ -4368,7 +4368,7 @@ int mobskill_use (struct mob_data *md, unsigned int tick, int event)
if (bl && !mobskill_use_id (md, bl, i))
return 0;
}
- // IDŽw’č
+ // ID指定
if (ms[i].target <= MST_FRIEND)
{
struct block_list *bl = NULL;
@@ -4411,7 +4411,7 @@ int mobskill_event (struct mob_data *md, int flag)
}
/*==========================================
- * Mob‚ރGƒ“ƒyƒŠƒEƒ€‚Č‚Ç‚Ěę‡‚Ě”ť’č
+ * Mobがエンペリウムなどの場合の判定
*------------------------------------------
*/
int mob_gvmobcheck (struct map_session_data *sd, struct block_list *bl)
@@ -4429,14 +4429,14 @@ int mob_gvmobcheck (struct map_session_data *sd, struct block_list *bl)
struct guild *g = guild_search (sd->status.guild_id);
if (g == NULL && md->class == 1288)
- return 0; //ƒMƒ‹ƒh–˘‰Á“ü‚Č‚çƒ_ƒ[ƒW–ł‚ľ
+ return 0; //ギルド未加入ならダメージ無し
else if (gc != NULL && !map[sd->bl.m].flag.gvg)
- return 0; //Ô“ŕ‚ĹGv‚ś‚á‚Č‚˘‚Ć‚Ť‚̓_ƒ[ƒW‚Č‚ľ
+ return 0; //砦内でGvじゃないときはダメージなし
else if (g && gc != NULL && g->guild_id == gc->guild_id)
- return 0; //ŽŠč—ĚƒMƒ‹ƒh‚ĚƒGƒ“ƒy‚Č‚çƒ_ƒ[ƒW–ł‚ľ
+ return 0; //自占領ギルドのエンペならダメージ無し
else if (g && guild_checkskill (g, GD_APPROVAL) <= 0
&& md->class == 1288)
- return 0; //ł‹KƒMƒ‹ƒhł”F‚Ş‚Č‚˘‚Ćƒ_ƒ[ƒW–ł‚ľ
+ return 0; //正規ギルド承認がないとダメージ無し
}
@@ -4444,7 +4444,7 @@ int mob_gvmobcheck (struct map_session_data *sd, struct block_list *bl)
}
/*==========================================
- * ƒXƒLƒ‹—pƒ^ƒCƒ}[íœ
+ * スキル用タイマー削除
*------------------------------------------
*/
int mobskill_deltimer (struct mob_data *md)
@@ -4463,7 +4463,7 @@ int mobskill_deltimer (struct mob_data *md)
}
//
-// ‰Šú‰ť
+// 初期化
//
/*==========================================
* Since un-setting [ mob ] up was used, it is an initial provisional value setup.
@@ -4742,7 +4742,7 @@ static int mob_readdb_mobavail (void)
class = atoi (str[0]);
- if (class <= 1000 || class > 2000) // ’l‚ŞˆŮí‚Č‚çˆ—‚ľ‚Č‚˘B
+ if (class <= 1000 || class > 2000) // 値が異常なら処理しない。
continue;
k = atoi (str[1]);
if (k >= 0)
@@ -4792,7 +4792,7 @@ static int mob_read_randommonster (void)
for (i = 0; i < MAX_RANDOMMONSTER; i++)
{
- mob_db[0].summonper[i] = 1002; // Ý’č‚ľ–Y‚ę‚˝ę‡‚̓|ƒŠƒ“‚ޏo‚é‚悤‚É‚ľ‚Ä‚¨‚­
+ mob_db[0].summonper[i] = 1002; // 設定し忘れた場合はポリンが出るようにしておく
fp = fopen_ (mobfile[i], "r");
if (fp == NULL)
{
diff --git a/src/map/mob.h b/src/map/mob.h
index ec0352e..2463283 100644
--- a/src/map/mob.h
+++ b/src/map/mob.h
@@ -85,12 +85,12 @@ enum
enum
{
- MSS_IDLE, // ‘Ň‹@
- MSS_WALK, // ˆÚ“Ž
- MSS_ATTACK, // UŒ‚
- MSS_DEAD, // Ž€–S
- MSS_LOOT, // ƒ‹[ƒg
- MSS_CHASE, // “ËŒ‚
+ MSS_IDLE, // 待機
+ MSS_WALK, // 移動
+ MSS_ATTACK, // 攻撃
+ MSS_DEAD, // 歝亥
+ MSS_LOOT, // ネミト
+ MSS_CHASE, // 突撃
};
int mobdb_searchname (const char *str);
diff --git a/src/map/party.c b/src/map/party.c
index 3277edf..f87d390 100644
--- a/src/map/party.c
+++ b/src/map/party.c
@@ -21,13 +21,13 @@
#include "memwatch.h"
#endif
-#define PARTY_SEND_XYHP_INVERVAL 1000 // Ŕ•W‚â‚g‚o‘—M‚ĚŠÔŠu
+#define PARTY_SEND_XYHP_INVERVAL 1000 // 座標やHP送信の間隔
static struct dbt *party_db;
int party_send_xyhp_timer (int tid, unsigned int tick, int id, int data);
/*==========================================
- * I—š
+ * 終了
*------------------------------------------
*/
static int party_db_final (void *key, void *data, va_list ap)
@@ -42,7 +42,7 @@ void do_final_party (void)
numdb_final (party_db, party_db_final);
}
-// ‰Šú‰ť
+// 初期化
void do_init_party (void)
{
party_db = numdb_init ();
@@ -52,7 +52,7 @@ void do_init_party (void)
PARTY_SEND_XYHP_INVERVAL);
}
-// ŒŸő
+// 検索
struct party *party_search (int party_id)
{
return numdb_search (party_db, party_id);
@@ -69,7 +69,7 @@ int party_searchname_sub (void *key, void *data, va_list ap)
return 0;
}
-// ƒp[ƒeƒB–źŒŸő
+// パーティ名検索
struct party *party_searchname (char *str)
{
struct party *p = NULL;
@@ -135,13 +135,13 @@ int party_created (int account_id, int fail, int party_id, char *name)
return 0;
}
-// î•ń—v‹
+// 情報要求
int party_request_info (int party_id)
{
return intif_request_partyinfo (party_id);
}
-// Š‘ŽƒLƒƒƒ‰‚ĚŠm”F
+// 所属キャラの確認
int party_check_member (struct party *p)
{
int i;
@@ -157,13 +157,13 @@ int party_check_member (struct party *p)
{
int j, f = 1;
for (j = 0; j < MAX_PARTY; j++)
- { // ƒp[ƒeƒB‚Ƀf[ƒ^‚Ş‚ ‚é‚ŠŠm”F
+ { // パーティにデータがあるか確認
if (p->member[j].account_id == sd->status.account_id)
{
if (strcmp (p->member[j].name, sd->status.name) == 0)
- f = 0; // ƒf[ƒ^‚Ş‚ ‚é
+ f = 0; // データがある
else
- p->member[j].sd = NULL; // “ŻC•ĘƒLƒƒƒ‰‚ž‚Á‚˝
+ p->member[j].sd = NULL; // 同垢別キャラだった
}
}
if (f)
@@ -179,7 +179,7 @@ int party_check_member (struct party *p)
return 0;
}
-// î•ńŠ“žŽ¸”si‚ť‚ĚID‚ĚƒLƒƒƒ‰‚đ‘S•”–˘Š‘Ž‚É‚ˇ‚éj
+// 情報所得失敗(そのIDのキャラを全部未所属にする)
int party_recv_noinfo (int party_id)
{
int i;
@@ -195,7 +195,7 @@ int party_recv_noinfo (int party_id)
return 0;
}
-// î•ńŠ“ž
+// 情報所得
int party_recv_info (struct party *sp)
{
struct party *p;
@@ -208,13 +208,13 @@ int party_recv_info (struct party *sp)
p = (struct party *) aCalloc (1, sizeof (struct party));
numdb_insert (party_db, sp->party_id, p);
- // Ĺ‰‚Ěƒ[ƒh‚Č‚Ě‚Ĺƒ†[ƒU[‚Ěƒ`ƒFƒbƒN‚đs‚¤
+ // 最初のロードなのでユーザーのチェックを行う
party_check_member (sp);
}
memcpy (p, sp, sizeof (struct party));
for (i = 0; i < MAX_PARTY; i++)
- { // sd‚̐ݒč
+ { // sdの設定
struct map_session_data *sd = map_id2sd (p->member[i].account_id);
p->member[i].sd = (sd != NULL
&& sd->status.party_id == p->party_id) ? sd : NULL;
@@ -223,7 +223,7 @@ int party_recv_info (struct party *sp)
clif_party_info (p, -1);
for (i = 0; i < MAX_PARTY; i++)
- { // Ý’čî•ń‚Ě‘—M
+ { // 設定情報の送信
// struct map_session_data *sd = map_id2sd(p->member[i].account_id);
struct map_session_data *sd = p->member[i].sd;
if (sd != NULL && sd->party_sended == 0)
@@ -334,7 +334,7 @@ int party_reply_invite (struct map_session_data *sd, int account_id, int flag)
return 0;
}
-// ƒp[ƒeƒB‚ޒljÁ‚ł‚ę‚˝
+// パーティが追加された
int party_member_added (int party_id, int account_id, int flag)
{
struct map_session_data *sd = map_id2sd (account_id), *sd2;
@@ -347,7 +347,7 @@ int party_member_added (int party_id, int account_id, int flag)
if (battle_config.error_log)
printf ("party: member added error %d is not online\n",
account_id);
- intif_party_leave (party_id, account_id); // ƒLƒƒƒ‰‘¤‚É“o˜^‚Ĺ‚Ť‚Č‚Š‚Á‚˝‚˝‚ß’E‘Ţ—v‹‚đo‚ˇ
+ intif_party_leave (party_id, account_id); // キャラ側に登録できなかったため脱退要求を出す
}
return 0;
}
@@ -363,20 +363,20 @@ int party_member_added (int party_id, int account_id, int flag)
}
if (flag == 1)
- { // Ž¸”s
+ { // 失敗
if (sd2 != NULL)
clif_party_inviteack (sd2, sd->status.name, 0);
return 0;
}
- // ŹŒ÷
+ // 成功
sd->party_sended = 0;
sd->status.party_id = party_id;
if (sd2 != NULL)
clif_party_inviteack (sd2, sd->status.name, 2);
- // ‚˘‚ż‚¨‚¤‹Ł‡Šm”F
+ // いちおう競合確認
party_check_conflict (sd);
party_send_xy_clear (p);
@@ -384,7 +384,7 @@ int party_member_added (int party_id, int account_id, int flag)
return 0;
}
-// ƒp[ƒeƒBœ–ź—v‹
+// パーティ除名要求
int party_removemember (struct map_session_data *sd, int account_id,
char *name)
{
@@ -397,14 +397,14 @@ int party_removemember (struct map_session_data *sd, int account_id,
return 0;
for (i = 0; i < MAX_PARTY; i++)
- { // ƒŠ[ƒ_[‚Š‚Ç‚¤‚Šƒ`ƒFƒbƒN
+ { // リーダーかどうかチェック
if (p->member[i].account_id == sd->status.account_id)
if (p->member[i].leader == 0)
return 0;
}
for (i = 0; i < MAX_PARTY; i++)
- { // Š‘Ž‚ľ‚Ä‚˘‚é‚Š’˛‚ׂé
+ { // 所属しているか調べる
if (p->member[i].account_id == account_id)
{
intif_party_leave (p->party_id, account_id);
@@ -414,7 +414,7 @@ int party_removemember (struct map_session_data *sd, int account_id,
return 0;
}
-// ƒp[ƒeƒB’E‘Ţ—v‹
+// パーティ脱退要求
int party_leave (struct map_session_data *sd)
{
struct party *p;
@@ -426,7 +426,7 @@ int party_leave (struct map_session_data *sd)
return 0;
for (i = 0; i < MAX_PARTY; i++)
- { // Š‘Ž‚ľ‚Ä‚˘‚é‚Š
+ { // 所属しているか
if (p->member[i].account_id == sd->status.account_id)
{
intif_party_leave (p->party_id, sd->status.account_id);
@@ -436,7 +436,7 @@ int party_leave (struct map_session_data *sd)
return 0;
}
-// ƒp[ƒeƒBƒƒ“ƒo‚Ş’E‘Ţ‚ľ‚˝
+// パーティメンバが脱退した
int party_member_leaved (int party_id, int account_id, char *name)
{
struct map_session_data *sd = map_id2sd (account_id);
@@ -460,7 +460,7 @@ int party_member_leaved (int party_id, int account_id, char *name)
return 0;
}
-// ƒp[ƒeƒB‰đŽU’Ę’m
+// パーティ解散通知
int party_broken (int party_id)
{
struct party *p;
@@ -483,7 +483,7 @@ int party_broken (int party_id)
return 0;
}
-// ƒp[ƒeƒB‚̐ݒč•ĎX—v‹
+// パーティの設定変更要求
int party_changeoption (struct map_session_data *sd, int exp, int item)
{
struct party *p;
@@ -498,7 +498,7 @@ int party_changeoption (struct map_session_data *sd, int exp, int item)
return 0;
}
-// ƒp[ƒeƒB‚̐ݒč•ĎX’Ę’m
+// パーティの設定変更通知
int party_optionchanged (int party_id, int account_id, int exp, int item,
int flag)
{
@@ -515,7 +515,7 @@ int party_optionchanged (int party_id, int account_id, int exp, int item,
return 0;
}
-// ƒp[ƒeƒBƒƒ“ƒo‚ĚˆÚ“Ž’Ę’m
+// パーティメンバの移動通知
int party_recv_movemap (int party_id, int account_id, char *map, int online,
int lv)
{
@@ -548,19 +548,19 @@ int party_recv_movemap (int party_id, int account_id, char *map, int online,
}
for (i = 0; i < MAX_PARTY; i++)
- { // sdÄÝ’č
+ { // sd再設定
struct map_session_data *sd = map_id2sd (p->member[i].account_id);
p->member[i].sd = (sd != NULL
&& sd->status.party_id == p->party_id) ? sd : NULL;
}
- party_send_xy_clear (p); // Ŕ•WÄ’Ę’m—vż
+ party_send_xy_clear (p); // 座標再通知要請
clif_party_info (p, -1);
return 0;
}
-// ƒp[ƒeƒBƒƒ“ƒo‚ĚˆÚ“Ž
+// パーティメンバの移動
int party_send_movemap (struct map_session_data *sd)
{
struct party *p;
@@ -571,16 +571,16 @@ int party_send_movemap (struct map_session_data *sd)
return 0;
intif_party_changemap (sd, 1);
- if (sd->party_sended != 0) // ‚ŕ‚¤ƒp[ƒeƒBƒf[ƒ^‚Í‘—MĎ‚Ý
+ if (sd->party_sended != 0) // もうパーティデータは送信済み
return 0;
- // ‹Ł‡Šm”F
+ // 競合確認
party_check_conflict (sd);
- // ‚ ‚é‚Č‚çƒp[ƒeƒBî•ń‘—M
+ // あるならパーティ情報送信
if ((p = party_search (sd->status.party_id)) != NULL)
{
- party_check_member (p); // Š‘Ž‚đŠm”F‚ˇ‚é
+ party_check_member (p); // 所属を確認する
if (sd->status.party_id == p->party_id)
{
clif_party_info (p, sd->fd);
@@ -592,7 +592,7 @@ int party_send_movemap (struct map_session_data *sd)
return 0;
}
-// ƒp[ƒeƒBƒƒ“ƒo‚ĚƒƒOƒAƒEƒg
+// パーティメンバのログアウト
int party_send_logout (struct map_session_data *sd)
{
struct party *p;
@@ -602,7 +602,7 @@ int party_send_logout (struct map_session_data *sd)
if (sd->status.party_id > 0)
intif_party_changemap (sd, 0);
- // sd‚Ş–łŒř‚É‚Č‚é‚Ě‚Ĺƒp[ƒeƒBî•ń‚Š‚çíœ
+ // sdが無効になるのでパーティ情報から削除
if ((p = party_search (sd->status.party_id)) != NULL)
{
int i;
@@ -614,7 +614,7 @@ int party_send_logout (struct map_session_data *sd)
return 0;
}
-// ƒp[ƒeƒBƒƒbƒZ[ƒW‘—M
+// パーティメッセージ送信
int party_send_message (struct map_session_data *sd, char *mes, int len)
{
if (sd->status.party_id == 0)
@@ -624,7 +624,7 @@ int party_send_message (struct map_session_data *sd, char *mes, int len)
return 0;
}
-// ƒp[ƒeƒBƒƒbƒZ[ƒWŽóM
+// パーティメッセージ受信
int party_recv_message (int party_id, int account_id, char *mes, int len)
{
struct party *p;
@@ -634,7 +634,7 @@ int party_recv_message (int party_id, int account_id, char *mes, int len)
return 0;
}
-// ƒp[ƒeƒB‹Ł‡Šm”F
+// パーティ競合確認
int party_check_conflict (struct map_session_data *sd)
{
nullpo_retr (0, sd);
@@ -644,7 +644,7 @@ int party_check_conflict (struct map_session_data *sd)
return 0;
}
-// ˆĘ’u‚â‚g‚o’Ę’m—p
+// 位置やHP通知用
int party_send_xyhp_timer_sub (void *key, void *data, va_list ap)
{
struct party *p = (struct party *) data;
@@ -657,14 +657,14 @@ int party_send_xyhp_timer_sub (void *key, void *data, va_list ap)
struct map_session_data *sd;
if ((sd = p->member[i].sd) != NULL)
{
- // Ŕ•W’Ę’m
+ // 座標通知
if (sd->party_x != sd->bl.x || sd->party_y != sd->bl.y)
{
clif_party_xy (p, sd);
sd->party_x = sd->bl.x;
sd->party_y = sd->bl.y;
}
- // ‚g‚o’Ę’m
+ // HP通知
if (sd->party_hp != sd->status.hp)
{
clif_party_hp (p, sd);
@@ -676,14 +676,14 @@ int party_send_xyhp_timer_sub (void *key, void *data, va_list ap)
return 0;
}
-// ˆĘ’u‚â‚g‚o’Ę’m
+// 位置やHP通知
int party_send_xyhp_timer (int tid, unsigned int tick, int id, int data)
{
numdb_foreach (party_db, party_send_xyhp_timer_sub, tick);
return 0;
}
-// ˆĘ’u’Ę’mƒNƒŠƒA
+// 位置通知クリア
int party_send_xy_clear (struct party *p)
{
int i;
@@ -703,7 +703,7 @@ int party_send_xy_clear (struct party *p)
return 0;
}
-// HP’Ę’m‚Ě•K—vŤŒŸ¸—pimap_foreachinmovearea‚Š‚çŒÄ‚΂ę‚éj
+// HP通知の必要性検査用(map_foreachinmoveareaから呼ばれる)
int party_send_hp_check (struct block_list *bl, va_list ap)
{
int party_id;
@@ -725,7 +725,7 @@ int party_send_hp_check (struct block_list *bl, va_list ap)
return 0;
}
-// ŒoŒą’lŒö•˝•Ş”z
+// 経験値公平分配
int party_exp_share (struct party *p, int map, int base_exp, int job_exp)
{
struct map_session_data *sd;
@@ -744,9 +744,9 @@ int party_exp_share (struct party *p, int map, int base_exp, int job_exp)
return 0;
}
-// “Ż‚śƒ}ƒbƒv‚Ěƒp[ƒeƒBƒƒ“ƒo[‘S‘Ě‚Éˆ—‚đ‚Š‚Ż‚é
-// type==0 “Ż‚śƒ}ƒbƒv
-// !=0 ‰ć–Ę“ŕ
+// 同じマップのパーティメンバー全体に処理をかける
+// type==0 同じマップ
+// !=0 画面内
void party_foreachsamemap (int (*func) (struct block_list *, va_list),
struct map_session_data *sd, int type, ...)
{
@@ -784,13 +784,13 @@ void party_foreachsamemap (int (*func) (struct block_list *, va_list),
}
}
- map_freeblock_lock (); // ƒƒ‚ƒŠ‚Š‚ç‚̉đ•ú‚đ‹ÖŽ~‚ˇ‚é
+ map_freeblock_lock (); // メモリからの解放を禁止する
for (i = 0; i < blockcount; i++)
- if (list[i]->prev) // —LŒř‚Š‚Ç‚¤‚Šƒ`ƒFƒbƒN
+ if (list[i]->prev) // 有効かどうかチェック
func (list[i], ap);
- map_freeblock_unlock (); // ‰đ•ú‚đ‹–‰Â‚ˇ‚é
+ map_freeblock_unlock (); // 解放を許可する
va_end (ap);
}
diff --git a/src/map/path.c b/src/map/path.c
index a6e7535..93ce960 100644
--- a/src/map/path.c
+++ b/src/map/path.c
@@ -22,7 +22,7 @@ struct tmp_path
#define calc_index(x,y) (((x)+(y)*MAX_WALKPATH) & (MAX_WALKPATH*MAX_WALKPATH-1))
/*==========================================
- * Œo˜H’Tő•â•heap push
+ * 経路探索補助heap push
*------------------------------------------
*/
static void push_heap_path (int *heap, struct tmp_path *tp, int index)
@@ -44,8 +44,8 @@ static void push_heap_path (int *heap, struct tmp_path *tp, int index)
}
/*==========================================
- * Œo˜H’Tő•â•heap update
- * cost‚ŞŒ¸‚Á‚˝‚Ě‚ĹŞ‚Ě•ű‚ÖˆÚ“Ž
+ * 経路探索補助heap update
+ * costが減ったので根の方へ移動
*------------------------------------------
*/
static void update_heap_path (int *heap, struct tmp_path *tp, int index)
@@ -70,7 +70,7 @@ static void update_heap_path (int *heap, struct tmp_path *tp, int index)
}
/*==========================================
- * Œo˜H’Tő•â•heap pop
+ * 経路探索補助heap pop
*------------------------------------------
*/
static int pop_heap_path (int *heap, struct tmp_path *tp)
@@ -105,7 +105,7 @@ static int pop_heap_path (int *heap, struct tmp_path *tp)
}
/*==========================================
- * ŒťÝ‚Ě“_‚ĚcostŒvŽZ
+ * 現在の点のcost計算
*------------------------------------------
*/
static int calc_cost (struct tmp_path *p, int x1, int y1)
@@ -124,7 +124,7 @@ static int calc_cost (struct tmp_path *p, int x1, int y1)
}
/*==========================================
- * •K—v‚Č‚çpath‚đ’ljÁ/Cł‚ˇ‚é
+ * 必要ならpathを追加/修正する
*------------------------------------------
*/
static int add_path (int *heap, struct tmp_path *tp, int x, int y, int dist,
@@ -170,8 +170,8 @@ static int add_path (int *heap, struct tmp_path *tp, int x, int y, int dist,
}
/*==========================================
- * (x,y)‚ވړŽ•s‰Â”\’n‘Ń‚Š‚Ç‚¤‚Š
- * flag 0x10000 ‰“‹——ŁUŒ‚”ť’č
+ * (x,y)が移動不可能地帯かどうか
+ * flag 0x10000 遠距離攻撃判定
*------------------------------------------
*/
static int can_place (struct map_data *m, int x, int y, int flag)
@@ -190,7 +190,7 @@ static int can_place (struct map_data *m, int x, int y, int flag)
}
/*==========================================
- * (x0,y0)‚Š‚ç(x1,y1)‚Ö1•ŕ‚ĹˆÚ“Ž‰Â”\‚ŠŒvŽZ
+ * (x0,y0)から(x1,y1)へ1歩で移動可能か計算
*------------------------------------------
*/
static int can_move (struct map_data *m, int x0, int y0, int x1, int y1,
@@ -214,8 +214,8 @@ static int can_move (struct map_data *m, int x0, int y0, int x1, int y1,
}
/*==========================================
- * (x0,y0)‚Š‚ç(dx,dy)•űŒü‚ÖcountƒZƒ‹•Ş
- * ‚Ť”ň‚΂ľ‚˝‚ ‚Ć‚ĚŔ•W‚đŠ“ž
+ * (x0,y0)から(dx,dy)方向へcountセル分
+ * 吹き飛ばしたあとの座標を所得
*------------------------------------------
*/
int path_blownpos (int m, int x0, int y0, int dx, int dy, int count)
@@ -227,7 +227,7 @@ int path_blownpos (int m, int x0, int y0, int dx, int dy, int count)
md = &map[m];
if (count > 15)
- { // Ĺ‘ĺ10ƒ}ƒX‚ɐ§ŒŔ
+ { // 最大10マスに制限
if (battle_config.error_log)
printf ("path_blownpos: count too many %d !\n", count);
count = 15;
@@ -265,7 +265,7 @@ int path_blownpos (int m, int x0, int y0, int dx, int dy, int count)
}
/*==========================================
- * path’Tő (x0,y0)->(x1,y1)
+ * path探索 (x0,y0)->(x1,y1)
*------------------------------------------
*/
int path_search (struct walkpath_data *wpd, int m, int x0, int y0, int x1,
@@ -408,7 +408,7 @@ char gat[64][64] = {
struct map_data map[1];
/*==========================================
- * Œo˜H’Tőƒ‹[ƒ`ƒ“’P‘ĚƒeƒXƒg—pmainŠÖ”
+ * 経路探索ルーチン単体テスト用main関数
*------------------------------------------
*/
void main (int argc, char *argv[])
diff --git a/src/map/pc.h b/src/map/pc.h
index ec5afb9..20ae26e 100644
--- a/src/map/pc.h
+++ b/src/map/pc.h
@@ -182,12 +182,12 @@ void pc_cleanup (struct map_session_data *sd); // [Fate] Clean up after a logge
struct pc_base_job
{
- int job; //E‹ĆA‚˝‚ž‚ľ“]śE‚â—{ŽqE‚Ěę‡‚ÍŒł‚̐E‹Ć‚đ•Ô‚ˇ(”pƒvƒŠ¨ƒvƒŠ)
- int type; //ƒmƒr 0, ˆęŽŸE 1, “ńŽŸE 2, ƒXƒpƒmƒr 3
- int upper; //’ʏí 0, “]ś 1, —{Žq 2
+ int job; //職業、ただし転生職や養子職の場合は元の職業を返す(廃プリ→プリ)
+ int type; //ノビ 0, 一次職 1, 二次職 2, スパノビ 3
+ int upper; //通常 0, 転生 1, 養子 2
};
-struct pc_base_job pc_calc_base_job (int b_class); //“]ś‚â—{ŽqE‚ĚŒł‚̐E‹Ć‚đ•Ô‚ˇ
+struct pc_base_job pc_calc_base_job (int b_class); //転生や養子職の元の職業を返す
int pc_read_gm_account (int fd);
int pc_setinvincibletimer (struct map_session_data *sd, int);
diff --git a/src/map/skill.h b/src/map/skill.h
index 2361f87..08f2e18 100644
--- a/src/map/skill.h
+++ b/src/map/skill.h
@@ -14,7 +14,7 @@
#define SKILL_POOL_ACTIVE 0x2 // is an active pool skill
#define SKILL_POOL_ACTIVATED 0x4 // pool skill has been activated (used for clif)
-// ƒXƒLƒ‹ƒf[ƒ^ƒx[ƒX
+// スキルデータベース
struct skill_db
{
int range[MAX_SKILL_LEVEL], hit, inf, pl, nk, max, stat, poolflags, max_raise; // `max' is the global max, `max_raise' is the maximum attainable via skill-ups
@@ -48,7 +48,7 @@ struct skill_unit_group;
int do_init_skill (void);
-// ƒXƒLƒ‹ƒf[ƒ^ƒx[ƒX‚Ö‚ĚƒAƒNƒZƒT
+// スキルデータベースへのアクセサ
int skill_get_hit (int id);
int skill_get_inf (int id);
int skill_get_pl (int id);
@@ -72,7 +72,7 @@ int skill_get_inf2 (int id);
int skill_get_maxcount (int id);
int skill_get_blewcount (int id, int lv);
-// ƒXƒLƒ‹‚ĚŽg—p
+// スキルの使用
int skill_use_id (struct map_session_data *sd, int target_id,
int skill_num, int skill_lv);
int skill_use_pos (struct map_session_data *sd,
@@ -86,12 +86,12 @@ int skill_addtimerskill (struct block_list *src, unsigned int tick,
int target, int x, int y, int skill_id,
int skill_lv, int type, int flag);
-// ’ljÁŒř‰Ę
+// 追加効果
int skill_additional_effect (struct block_list *src, struct block_list *bl,
int skillid, int skilllv, int attack_type,
unsigned int tick);
-// ƒ†ƒjƒbƒgƒXƒLƒ‹
+// ユニットスキル
struct skill_unit *skill_initunit (struct skill_unit_group *group, int idx,
int x, int y);
int skill_delunit (struct skill_unit *unit);
@@ -123,7 +123,7 @@ int skill_unit_move_unit_group (struct skill_unit_group *group, int m,
struct skill_unit_group *skill_check_dancing (struct block_list *src);
void skill_stop_dancing (struct block_list *src, int flag);
-// ‰rĽƒLƒƒƒ“ƒZƒ‹
+// 詠唱キャンセル
int skill_castcancel (struct block_list *bl, int type);
int skill_gangsterparadise (struct map_session_data *sd, int type);
@@ -138,11 +138,11 @@ void skill_devotion_end (struct map_session_data *md,
#define skill_calc_heal(bl,skill_lv) (( battle_get_lv(bl)+battle_get_int(bl) )/8 *(4+ skill_lv*8))
-// ‚ť‚Ě‘ź
+// その他
int skill_check_cloaking (struct block_list *bl);
int skill_is_danceskill (int id);
-// ƒXƒe[ƒ^ƒXˆŮí
+// ステータス異常
int skill_status_effect (struct block_list *bl, int type, int val1, int val2,
int val3, int val4, int tick, int flag,
int spell_invocation);
@@ -155,7 +155,7 @@ int skill_encchant_eremental_end (struct block_list *bl, int type);
int skill_status_change_end (struct block_list *bl, int type, int tid);
int skill_status_change_clear (struct block_list *bl, int type);
-// mobƒXƒLƒ‹‚Ě‚˝‚ß
+// mobスキルのため
int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl,
int skillid, int skilllv, unsigned int tick,
int flag);
@@ -165,7 +165,7 @@ int skill_castend_damage_id (struct block_list *src, struct block_list *bl,
int skill_castend_pos2 (struct block_list *src, int x, int y, int skillid,
int skilllv, unsigned int tick, int flag);
-// ƒXƒLƒ‹UŒ‚ˆęŠ‡ˆ—
+// スキル攻撃一括処理
int skill_attack (int attack_type, struct block_list *src,
struct block_list *dsrc, struct block_list *bl,
int skillid, int skilllv, unsigned int tick, int flag);
@@ -182,7 +182,7 @@ enum
};
enum
-{ // struct map_session_data ‚Ě status_change‚Ě”Ô†ƒe[ƒuƒ‹
+{ // struct map_session_data の status_changeの番号テーブル
SC_SENDMAX = 256,
SC_PROVOKE = 0,
SC_ENDURE = 1,
diff --git a/src/map/storage.c b/src/map/storage.c
index 9a3f366..84dedb3 100644
--- a/src/map/storage.c
+++ b/src/map/storage.c
@@ -23,7 +23,7 @@ static struct dbt *storage_db;
static struct dbt *guild_storage_db;
/*==========================================
- * ‘qŒÉ“ŕƒAƒCƒeƒ€ƒ\[ƒg
+ * 倉庫内アイテムソート
*------------------------------------------
*/
int storage_comp_item (const void *_i1, const void *_i2)
@@ -69,10 +69,10 @@ void sortage_gsortitem (struct guild_storage *gstor)
}
/*==========================================
- * ‰Šú‰ť‚Ć‚Š
+ * 初期化とか
*------------------------------------------
*/
-int do_init_storage (void) // map.c::do_init()‚Š‚çŒÄ‚΂ę‚é
+int do_init_storage (void) // map.c::do_init()から呼ばれる
{
storage_db = numdb_init ();
guild_storage_db = numdb_init ();
@@ -144,7 +144,7 @@ int storage_delete (int account_id)
}
/*==========================================
- * ƒJƒvƒ‰‘qŒÉ‚đŠJ‚­
+ * カプラ倉庫を開く
*------------------------------------------
*/
int storage_storageopen (struct map_session_data *sd)
diff --git a/src/map/trade.c b/src/map/trade.c
index 40a762b..664d2fa 100644
--- a/src/map/trade.c
+++ b/src/map/trade.c
@@ -12,7 +12,7 @@
#include "nullpo.h"
/*==========================================
- * Žćˆř—vż‚đ‘ŠŽč‚É‘—‚é
+ * 取引要請を相手に送る
*------------------------------------------
*/
void trade_traderequest (struct map_session_data *sd, int target_id)
@@ -27,7 +27,7 @@ void trade_traderequest (struct map_session_data *sd, int target_id)
{
if (target_sd->guild_invite > 0 || target_sd->party_invite > 0)
{
- clif_tradestart (sd, 2); // ‘ŠŽč‚ÍPT—vż’†‚ŠGuild—vż’†
+ clif_tradestart (sd, 2); // 相手はPT要請中かGuild要請中
return;
}
}
@@ -66,7 +66,7 @@ void trade_traderequest (struct map_session_data *sd, int target_id)
}
/*==========================================
- * Žćˆř—vż
+ * 取引要請
*------------------------------------------
*/
void trade_tradeack (struct map_session_data *sd, int type)
@@ -99,7 +99,7 @@ void trade_tradeack (struct map_session_data *sd, int type)
}
/*==========================================
- * ƒAƒCƒeƒ€’ljÁ
+ * アイテム追加
*------------------------------------------
*/
void trade_tradeadditem (struct map_session_data *sd, int index, int amount)
@@ -222,7 +222,7 @@ void trade_tradeadditem (struct map_session_data *sd, int index, int amount)
}
/*==========================================
- * ƒAƒCƒeƒ€’ljÁŠŽ—š(ok‰Ÿ‚ľ)
+ * アイテム追加完了(ok押し)
*------------------------------------------
*/
void trade_tradeok (struct map_session_data *sd)
@@ -254,7 +254,7 @@ void trade_tradeok (struct map_session_data *sd)
}
/*==========================================
- * ŽćˆřƒLƒƒƒ“ƒZƒ‹
+ * 取引キャンセル
*------------------------------------------
*/
void trade_tradecancel (struct map_session_data *sd)
@@ -306,7 +306,7 @@ void trade_tradecancel (struct map_session_data *sd)
#define MAP_LOG_PC(sd, fmt, args...) MAP_LOG("PC%d %d:%d,%d " fmt, sd->status.char_id, sd->bl.m, sd->bl.x, sd->bl.y, ## args)
/*==========================================
- * Žćˆř‹–‘ř(trade‰Ÿ‚ľ)
+ * 取引許諾(trade押し)
*------------------------------------------
*/
void trade_tradecommit (struct map_session_data *sd)
diff --git a/src/tool/backup b/src/tool/backup
index 939c7ee..bde63b5 100644
--- a/src/tool/backup
+++ b/src/tool/backup
@@ -1,47 +1,47 @@
#!/usr/bin/perl
##########################################################################
-# Athena—pƒf[ƒ^ƒoƒbƒNƒAƒbƒvƒc[ƒ‹
+# Athena用データバックアップツール
#
-# @Athena‚ĚŠeŽíƒf[ƒ^ƒtƒ@ƒCƒ‹*.txt‚đƒoƒbƒNƒAƒbƒv‚ˇ‚éƒc[ƒ‹
+#  Athenaの各種データファイル*.txtをバックアップするツール
#
#-------------------------------------------------------------------------
-# Ý’č•ű–@
-# @ŽŔs‚ˇ‚鎞‚ĚƒJƒŒƒ“ƒgƒtƒHƒ‹ƒ_‚Š‚ç‚Ěƒf[ƒ^‚Ö‚ĚƒpƒXAƒtƒ@ƒCƒ‹‚ĚƒŠƒXƒg‚đ
-# @ł‚ľ‚­Ý’č‚ľ‚Ü‚ˇBƒoƒbƒNƒAƒbƒvć‚ĚƒtƒHƒ‹ƒ_‚ÍŽŠ“ŽěŹ‚ł‚ę‚Č‚˘‚̂ŁA
-# @ŽŠ•Ş‚ō쐬‚ľ‚Ä‚¨‚­•K—v‚Ş‚ ‚č‚Ü‚ˇB
-# @ƒtƒHƒ‹ƒ_‚ĚĹŒă‚́u/v‚ÍČ—Ş‚Ĺ‚Ť‚Ü‚š‚ńB
+# 設定方法
+#  実行する時のカレントフォルダからのデータへのパス、ファイルのリストを
+#  正しく設定します。バックアップ先のフォルダは自動作成されないので、
+#  自分で作成しておく必要があります。
+#  フォルダの最後の「/」は省略できません。
#
-# @ƒtƒHƒ‹ƒ_‚͈ř”‚Ĺ‚ŕŽw’č‚Ĺ‚Ť‚Ü‚ˇB—၄./backup ../save/ ./backup_data/
-# @ƒtƒHƒ‹ƒ_‚ĚĹŒă‚́u/v‚ÍČ—Ş‚Ĺ‚Ť‚Ü‚š‚ńB
+#  フォルダは引数でも指定できます。例>./backup ../save/ ./backup_data/
+#  フォルダの最後の「/」は省略できません。
#
-# @ŽŔs‚ˇ‚é‚ĆƒoƒbƒNƒAƒbƒvć‚ĚƒtƒHƒ‹ƒ_‚ցAƒtƒ@ƒCƒ‹–ź‚ÉŒťÝ‚Ě“ú•t‚ĆŽž‚đ
-# @‚‚Ż‚ătƒ@ƒCƒ‹‚đƒRƒs[‚ľ‚Ü‚ˇB
+#  実行するとバックアップ先のフォルダへ、ファイル名に現在の日付と時刻を
+#  つけてファイルをコピーします。
#
-# * toolƒtƒHƒ‹ƒ_“ŕ‚Ébackup_dataƒtƒHƒ‹ƒ_‚đěŹ‚ľA
-# @ athena.sh‚Ě’†‚Ɂu./tool/backup ./save/ ./tool/backup_data/v
-# ‚Ć‚˘‚¤s‚đ’ljÁ‚ˇ‚é‚ƁAathena‚đ‹N“Ž‚ˇ‚é‚˝‚Ń‚ÉƒoƒbƒNƒAƒbƒv‚ŞŽć‚ę‚Ü‚ˇ
+# * toolフォルダ内にbackup_dataフォルダを作成し、
+#   athena.shの中に「./tool/backup ./save/ ./tool/backup_data/」
+# という行を追加すると、athenaを起動するたびにバックアップが取れます
#
-# •œŒł‚ˇ‚é‚Ć‚Ť‚͈ř”‚Ɂu-r “ú•t‚ĆŽžv‚đŽw’č‚ľ‚Ü‚ˇB
-# @‚Ü‚˝‚ť‚ĚŒă‚ë‚ɃtƒHƒ‹ƒ_‚đŽw’股‚é‚ą‚Ć‚ŕo—ˆ‚Ü‚ˇ
-# @—á‚P„ ./backup -r 200309191607
-# @—á‚Q„ ./backup -r 200309191607 ../save ./backup_data/
-# @‚ą‚Ě—á‚Ĺ‚Í2003/09/19‚Ě16:07•Ş‚ɃoƒbƒNƒAƒbƒv‚ľ‚˝ƒf[ƒ^‚đ•œŒł‚ľ‚Ä‚˘‚Ü‚ˇ
+# 復元するときは引数に「-r 日付と時刻」を指定します。
+#  またその後ろにフォルダを指定することも出来ます
+#  例1> ./backup -r 200309191607
+#  例2> ./backup -r 200309191607 ../save ./backup_data/
+#  この例では2003/09/19の16:07分にバックアップしたデータを復元しています
#
-# @•œŒł‚ˇ‚é‚Ć‚ŤAAthenaƒfƒBƒŒƒNƒgƒŠ‚É‚ ‚éƒf[ƒ^‚Í *.bak ‚É–ź‘O‚đ•ĎX‚ľ‚Ä
-# @Žc‚ľ‚Ä‚˘‚é‚̂ŁA‚˘‚ç‚Č‚˘ę‡‚Í rm *.bak ‚Č‚Ç‚ĹÁ‚ľ‚Ä‚­‚ž‚ł‚˘B
+#  復元するとき、Athenaディレクトリにあるデータは *.bak に名前を変更して
+#  残しているので、いらない場合は rm *.bak などで消してください。
#
##########################################################################
-$sdir="../save/"; #ƒoƒbƒNƒAƒbƒvŒł(Athena‚ĚƒfƒBƒŒƒNƒgƒŠ/save/)
-$tdir="./backup_data/"; #ƒoƒbƒNƒAƒbƒvć
+$sdir="../save/"; #バックアップ元(Athenaのディレクトリ/save/)
+$tdir="./backup_data/"; #バックアップ先
-@files=( #ƒtƒ@ƒCƒ‹‚ĚƒŠƒXƒg
+@files=( #ファイルのリスト
"account","athena","storage","party","guild","castle","pet"
);
-#-------------------------------Ý’č‚ą‚ą‚Ü‚Ĺ-----------------------------
+#-------------------------------設定ここまで-----------------------------
@@ -54,7 +54,7 @@ $tdir="./backup_data/"; #ƒoƒbƒNƒAƒbƒvć
if($ARGV[0]=~/^\-r$/i || $ARGV[0]=~/\-\-(recover|restore)/i){
- #•œŒłˆ—
+ #復元処理
$file=$ARGV[1];
$sdir=$ARGV[2]||$sdir;
@@ -63,7 +63,7 @@ if($ARGV[0]=~/^\-r$/i || $ARGV[0]=~/\-\-(recover|restore)/i){
exit(0);
}
-#ƒoƒbƒNƒAƒbƒvˆ—
+#バックアップ処理
$sdir=$ARGV[0]||$sdir;
$tdir=$ARGV[1]||$tdir;
diff --git a/src/tool/cgi/addaccount.cgi b/src/tool/cgi/addaccount.cgi
index 7d1788c..009f30f 100644
--- a/src/tool/cgi/addaccount.cgi
+++ b/src/tool/cgi/addaccount.cgi
@@ -2,35 +2,35 @@
#=========================================================================
# addaccount.cgi ver.1.00
-# ladmin‚đƒ‰ƒbƒv‚ľ‚˝AƒAƒJƒEƒ“ƒg‚đěŹ‚ˇ‚éCGIB
-# ladmin ver.1.04‚Ĺ‚Ě“Žě‚đŠm”FB
+# ladminをラップした、アカウントを作成するCGI。
+# ladmin ver.1.04での動作を確認。
#
-# ** Ý’č•ű–@ **
+# ** 設定方法 **
#
-# - ‰ş‚Ě$ladmin•Ď”‚Éladmin‚Ö‚ĚƒpƒX‚đÝ’股‚é‚ą‚ƁB
-# - UNIXŒnOS‚ĹŽg—p‚ˇ‚éę‡‚Íladmin‚Ć‹¤‚ɉüsƒR[ƒh‚đ•ĎŠˇ‚ˇ‚é‚ą‚ƁA‚Ü‚˝
-# ƒtƒ@ƒCƒ‹ć“ލs‚đperl‚̐ł‚ľ‚˘ƒpƒX‚É‚ˇ‚é‚ą‚ƁB—á> $ which perl
-# - ƒT[ƒo[ƒvƒƒOƒ‰ƒ€‚âƒuƒ‰ƒEƒU‚É‚ć‚Á‚Ä‚Í $cgiuri ‚É‚ą‚Ěƒtƒ@ƒCƒ‹‚Ö‚Ě
-# ŠŽ‘S‚ČURI‚đƒZƒbƒg‚ľ‚Č‚Ż‚ę‚΂Ȃç‚Č‚˘ę‡‚ŕ‚ ‚éB
-# - perl‚ɃpƒX‚Ş’Ę‚Á‚Ä‚˘‚Č‚˘ę‡‚Í $perl ‚đperl‚ւ̐ł‚ľ‚˘ƒpƒX‚É‚ˇ‚é‚ą‚ƁB
-# - ‘ź‚Í•’Ę‚ĚCGI‚Ć“Ż‚ś‚Ĺ‚ˇBiŽŔsŒ ‚âcgi-binƒtƒHƒ‹ƒ_‚Ȃǁj
+# - 下の$ladmin変数にladminへのパスを設定すること。
+# - UNIX系OSで使用する場合はladminと共に改行コードを変換すること、また
+# ファイル先頭行をperlの正しいパスにすること。例> $ which perl
+# - サーバープログラムやブラウザによっては $cgiuri にこのファイルへの
+# 完全なURIをセットしなければならない場合もある。
+# - perlにパスが通っていない場合は $perl をperlへの正しいパスにすること。
+# - 他は普通のCGIと同じです。(実行権やcgi-binフォルダなど)
#
-# ** ‚ť‚Ě‘ź **
-# addaccount.cgi ‚đƒuƒ‰ƒEƒU‚ĹŠJ‚­‚ĆƒTƒ“ƒvƒ‹HTMLi‚ť‚Ě‚Ü‚ÜŽg‚Ś‚Ü‚ˇj‚Ş
-# ŠJ‚Ť‚Ü‚ˇB‚Ü‚˝A‚ą‚Ěcgi‚̓uƒ‰ƒEƒU‚Š‚ç‘—‚ç‚ę‚éAccept-Language‚Ş
-# ja‚ĹŽn‚Ü‚Á‚Ä‚˘‚ę‚΃ƒbƒZ[ƒW‚Ěˆę•”‚đ“ú–{Œę‚É•ĎŠˇ‚ľ‚Ü‚ˇB
-# (IE‚Č‚çƒCƒ“ƒ^[ƒlƒbƒgƒIƒvƒVƒ‡ƒ“‚ĚŒžŒęÝ’č‚Ĺˆę”ԏă‚É“ú–{Œę‚đ’u‚­)
-# ‚ť‚ęˆČŠO‚Ěę‡‚͉pŒę‚Ě‚Ü‚Üo—Í‚ľ‚Ü‚ˇB
+# ** その他 **
+# addaccount.cgi をブラウザで開くとサンプルHTML(そのまま使えます)が
+# 開きます。また、このcgiはブラウザから送られるAccept-Languageが
+# jaで始まっていればメッセージの一部を日本語に変換します。
+# (IEならインターネットオプションの言語設定で一番上に日本語を置く)
+# それ以外の場合は英語のまま出力します。
#-------------------------------------------------------------------------
-my($ladmin) = "../ladmin"; # ladmin‚ĚƒpƒX(‚¨‚ť‚ç‚­•ĎX‚Ş•K—v)
+my($ladmin) = "../ladmin"; # ladminのパス(おそらく変更が必要)
-my($cgiuri) = "./addaccount.cgi"; # ‚ą‚Ěƒtƒ@ƒCƒ‹‚ĚURI
-my($perl) = "perl"; # perl‚ĚƒRƒ}ƒ“ƒh–ź
+my($cgiuri) = "./addaccount.cgi"; # このファイルのURI
+my($perl) = "perl"; # perlのコマンド名
-#--------------------------- Ý’č‚ą‚ą‚Ü‚Ĺ --------------------------------
+#--------------------------- 設定ここまで --------------------------------
@@ -46,47 +46,47 @@ my(%langconv)=(
'logged on.*' => '',
);
-# ----- “ú–{ŒęŠÂ‹Ť‚Č‚ç•ĎŠˇƒe[ƒuƒ‹‚đƒZƒbƒg -----
+# ----- 日本語環境なら変換テーブルをセット -----
if($ENV{'HTTP_ACCEPT_LANGUAGE'}=~/^ja/){
my(%tmp)=(
'Account \[(.+)\] is successfully created.*'
- => 'ƒAƒJƒEƒ“ƒg "$1" ‚đěŹ‚ľ‚Ü‚ľ‚˝.',
+ => 'アカウント "$1" を作成しました.',
'Account \[(.+)\] creation failed\. same account exists.*'
- => 'ƒAƒJƒEƒ“ƒg "$1" ‚ÍŠů‚É‘śÝ‚ľ‚Ü‚ˇ.',
+ => 'アカウント "$1" は既に存在します.',
'Illeagal charactor found in UserID.*'
- => 'ID‚Ě’†‚É•sł‚Č•śŽš‚Ş‚ ‚č‚Ü‚ˇ.',
+ => 'IDの中に不正な文字があります.',
'Illeagal charactor found in Password.*'
- => 'Password‚Ě’†‚É•sł‚Č•śŽš‚Ş‚ ‚č‚Ü‚ˇ.',
+ => 'Passwordの中に不正な文字があります.',
'input UserID 4-24 bytes.'
- => 'ID‚Í”źŠp4`24•śŽš‚Ĺ“ü—Í‚ľ‚Ä‚­‚ž‚ł‚˘.',
+ => 'IDは半角4〜24文字で入力してください.',
'input Password 4-24 bytes.'
- => 'Password‚Í”źŠp4`24•śŽš‚Ĺ“ü—Í‚ľ‚Ä‚­‚ž‚ł‚˘.',
+ => 'Passwordは半角4〜24文字で入力してください.',
'Illeagal gender.*'
- => 'Ť•Ę‚Ş‚¨‚Š‚ľ‚˘‚Ĺ‚ˇ.',
+ => '性別がおかしいです.',
'Cant connect to login server.*'
- => 'ƒƒOƒCƒ“ƒT[ƒo[‚ɐڑą‚Ĺ‚Ť‚Ü‚š‚ń.',
+ => 'ログインサーバーに接続できません.',
'login error.*'
- => 'ƒƒOƒCƒ“ƒT[ƒo[‚Ö‚ĚŠÇ—ŽŇŒ ŒŔƒƒOƒCƒ“‚ÉŽ¸”s‚ľ‚Ü‚ľ‚˝',
+ => 'ログインサーバーへの管理者権限ログインに失敗しました',
"Can't execute ladmin.*"
- => 'ladmin‚ĚŽŔs‚ÉŽ¸”s‚ľ‚Ü‚ľ‚˝',
+ => 'ladminの実行に失敗しました',
'UserID "(.+)" is already used.*'
- => 'ID "$1" ‚ÍŠů‚ÉŽg—p‚ł‚ę‚Ä‚˘‚Ü‚ˇ.',
+ => 'ID "$1" は既に使用されています.',
'You can use UserID \"(.+)\".*'
- => 'ID "$1" ‚ÍŽg—p‰Â”\‚Ĺ‚ˇ.',
+ => 'ID "$1" は使用可能です.',
- 'account making' =>'ƒAƒJƒEƒ“ƒgěŹ',
- '\>UserID' =>'>‚h‚c',
- '\>Password' =>'>ƒpƒXƒ[ƒh',
- '\>Gender' =>'>Ť•Ę',
- '\>Male' =>'>’jŤ',
- '\>Female' =>'>—Ť',
- '\"Make Account\"' =>'"ƒAƒJƒEƒ“ƒgěŹ"',
- '\"Check UserID\"' =>'"ID‚Ěƒ`ƒFƒbƒN"',
+ 'account making' =>'アカウント作成',
+ '\>UserID' =>'>',
+ '\>Password' =>'>パスワード',
+ '\>Gender' =>'>性別',
+ '\>Male' =>'>男性',
+ '\>Female' =>'>女性',
+ '\"Make Account\"' =>'"アカウント作成"',
+ '\"Check UserID\"' =>'"IDのチェック"',
);
map { $langconv{$_}=$tmp{$_}; } keys (%tmp);
}
-# ----- ’ljÁ -----
+# ----- 追加 -----
if( $cgi->param("addaccount") ){
my($userid)= $cgi->param("userid");
my($passwd)= $cgi->param("passwd");
@@ -112,7 +112,7 @@ if( $cgi->param("addaccount") ){
close PIPE;
HttpMsg(@msg);
}
-# ----- ‘śÝƒ`ƒFƒbƒN -----
+# ----- 存在チェック -----
elsif( $cgi->param("check") ){
my($userid)= $cgi->param("userid");
if(length($userid)<4 || length($userid)>24){
@@ -133,7 +133,7 @@ elsif( $cgi->param("check") ){
HttpError("ladmin error ?\n---output---\n",@msg);
}
-# ----- ƒtƒH[ƒ€ -----
+# ----- フォーム -----
else{
print LangConv( <<"EOM" );
Content-type: text/html\n
diff --git a/src/tool/convert.c b/src/tool/convert.c
index 154b154..8436ebb 100644
--- a/src/tool/convert.c
+++ b/src/tool/convert.c
@@ -164,7 +164,7 @@ int mmo_char_fromstr (char *str, struct mmo_charstatus *p)
if (set != 41)
return 0;
if (str[next] == '\n' || str[next] == '\r')
- return 1; // V‹Kƒf[ƒ^
+ return 1; // 新規データ
next++;
for (i = 0; str[next] && str[next] != '\t'; i++)
{
@@ -245,7 +245,7 @@ int mmo_char_fromstr (char *str, struct mmo_charstatus *p)
for (i = 0;
str[next] && str[next] != '\t' && str[next] != '\n'
&& str[next] != '\r'; i++)
- { //global_regŽŔ‘•ˆČ‘O‚Ěathena.txtŒÝŠˇ‚Ě‚˝‚ßˆę‰ž'\n'ƒ`ƒFƒbƒN
+ { //global_reg実装以前のathena.txt互換のため一応'\n'チェック
set = sscanf (str + next, "%[^,],%d%n",
p->global_reg[i].str, &p->global_reg[i].value, &len);
if (set != 2)
diff --git a/src/txt-converter/common/mmo.h b/src/txt-converter/common/mmo.h
index b9939fd..0295f6b 100644
--- a/src/txt-converter/common/mmo.h
+++ b/src/txt-converter/common/mmo.h
@@ -6,10 +6,10 @@
#include <time.h>
#ifdef CYGWIN
-// txt‚âlog‚Č‚Ç‚Ě‘‚Ťo‚ˇƒtƒ@ƒCƒ‹‚̉üsƒR[ƒh
-#define RETCODE "\r\n" // (CR/LFFWindowsŒn)
+// txtやlogなどの書き出すファイルの改行コード
+#define RETCODE "\r\n" // (CR/LF:Windows系)
#else
-#define RETCODE "\n" // (LFFUnixŒnj
+#define RETCODE "\n" // (LF:Unix系)
#endif
#define FIFOSIZE_SERVERLINK 128*1024
@@ -274,13 +274,13 @@ struct square
enum
{
- GBI_EXP = 1, // ƒMƒ‹ƒh‚ĚEXP
- GBI_GUILDLV = 2, // ƒMƒ‹ƒh‚ĚLv
- GBI_SKILLPOINT = 3, // ƒMƒ‹ƒh‚ĚƒXƒLƒ‹ƒ|ƒCƒ“ƒg
- GBI_SKILLLV = 4, // ƒMƒ‹ƒhƒXƒLƒ‹Lv
+ GBI_EXP = 1, // ギルドのEXP
+ GBI_GUILDLV = 2, // ギルドのLv
+ GBI_SKILLPOINT = 3, // ギルドのスキルポイント
+ GBI_SKILLLV = 4, // ギルドスキルLv
- GMI_POSITION = 0, // ƒƒ“ƒo[‚Ě–đE•ĎX
- GMI_EXP = 1, // ƒƒ“ƒo[‚ĚEXP
+ GMI_POSITION = 0, // メンバーの役職変更
+ GMI_EXP = 1, // ュンバミぎEXP
};
diff --git a/src/txt-converter/login/login-converter.c b/src/txt-converter/login/login-converter.c
index 2836866..477a0cc 100644
--- a/src/txt-converter/login/login-converter.c
+++ b/src/txt-converter/login/login-converter.c
@@ -204,7 +204,7 @@ int mmo_auth_init (void)
return 0;
}
-// ƒAƒJƒEƒ“ƒgƒf??ƒx?ƒX‚̏‘‚Ťž‚Ý
+// アカウントデ??ベ?スの書き込み
void nowork (void)
{
//null