diff options
author | Ben Longbons <b.r.longbons@gmail.com> | 2011-03-02 13:52:33 -0800 |
---|---|---|
committer | Ben Longbons <b.r.longbons@gmail.com> | 2011-03-02 14:06:46 -0800 |
commit | a1a2711abfc594f2be1da51df95ddcd7071ddebd (patch) | |
tree | 9128237fc4794b917394a1c39221d08cc78c1b54 | |
parent | 877018d1296c984afe72b79f076265d6d27c3a7c (diff) | |
download | tmwa-a1a2711abfc594f2be1da51df95ddcd7071ddebd.tar.gz tmwa-a1a2711abfc594f2be1da51df95ddcd7071ddebd.tar.bz2 tmwa-a1a2711abfc594f2be1da51df95ddcd7071ddebd.tar.xz tmwa-a1a2711abfc594f2be1da51df95ddcd7071ddebd.zip |
Recode from SHIFT-JIS to unicode, then undo the conversion of backslashs and tildes.
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���ʼn��������B - 1�͕ǃ`�F�b�N�����A�X�L���g�p�ƍU���ʼn��������B - 2�͕͂ǃ`�F�b�N�L��A�X�L���g�p�ƍU���ʼn�������Ȃ��B - 2�͕͂ǃ`�F�b�N�����A�X�L���g�p�ƍU���ʼn�������Ȃ��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���ʼn��������B - 1�͕ǃ`�F�b�N�����A�X�L���g�p�ƍU���ʼn��������B - 2�͕͂ǃ`�F�b�N�L��A�X�L���g�p�ƍU���ʼn�������Ȃ��B - 2�͕͂ǃ`�F�b�N�����A�X�L���g�p�ƍU���ʼn�������Ȃ��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��|�������Ȃnjo���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�NJ����ׂ� + // 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, espal //---------------------------------------------------------- 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�NJ����ׂ� + // 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, espal //------------------------------------------------- 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�^�[���nj��_���[�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�^�[���nj��̃~�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, espal *------------------------------------------ */ 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' =>'>ID', + '\>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 |