- Added svn:eol-style native for some conf/css/html/pl/sql/txt files.
- Added svn:executable property for several batch/shell scripts. git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13972 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
d88c759c6f
commit
9cc789d234
680
LICENCE
680
LICENCE
@ -1,340 +1,340 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
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.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
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.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
||||
|
832
LICENCE_JA
832
LICENCE_JA
@ -1,416 +1,416 @@
|
||||
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
|
||||
この利用許諾契約書を、一字一句そのままに複製し頒布することは許可する。
|
||||
しかし変更は認めない。
|
||||
|
||||
This is an unofficial translation of the GNU General Public License
|
||||
into Japanese. It was not published by the Free Software Foundation,
|
||||
and does not legally state the distribution terms for software that
|
||||
uses the GNU GPL--only the original English text of the GNU GPL does
|
||||
that. However, we hope that this translation will help Japanese
|
||||
speakers understand the GNU GPL better.
|
||||
|
||||
(訳: 以下は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 一般公衆利用許諾契約書
|
||||
複製、頒布、改変に関する条件と制約
|
||||
|
||||
0. この利用許諾契約書は、そのプログラム(またはその他の著作物)をこの一
|
||||
般公衆利用許諾契約書の定める条件の下で頒布できるという告知が著作権者に
|
||||
よって記載されたプログラムまたはその他の著作物全般に適用される。以下で
|
||||
は、「『プログラム』」とはそのようにしてこの契約書が適用されたプログラ
|
||||
ムや著作物全般を意味し、また「『プログラム』を基にした著作物」とは『プ
|
||||
ログラム』やその他著作権法の下で派生物と見なされるもの全般を指す。すな
|
||||
わち、『プログラム』かその一部を、全く同一のままか、改変を加えたか、あ
|
||||
るいは他の言語に翻訳された形で含む著作物のことである(「改変」という語
|
||||
の本来の意味からはずれるが、以下では翻訳も改変の一種と見なす)。それぞ
|
||||
れの契約者は「あなた」と表現される。
|
||||
|
||||
複製や頒布、改変以外の活動はこの契約書ではカバーされない。それらはこの
|
||||
契約書の対象外である。『プログラム』を実行する行為自体に制限はない。ま
|
||||
た、そのような『プログラム』の出力結果は、その内容が『プログラム』を基
|
||||
にした著作物を構成する場合のみこの契約書によって保護される(『プログラ
|
||||
ム』を実行したことによって作成されたということとは無関係である)。この
|
||||
ような線引きの妥当性は、『プログラム』が何をするのかに依存する。
|
||||
|
||||
1. それぞれの複製物において適切な著作権表示と保証の否認声明(disclaimer
|
||||
of warranty)を目立つよう適切に掲載し、またこの契約書および一切の保証の
|
||||
不在に触れた告知すべてをそのまま残し、そしてこの契約書の複製物を『プロ
|
||||
グラム』のいかなる受領者にも『プログラム』と共に頒布する限り、あなたは
|
||||
『プログラム』のソースコードの複製物を、あなたが受け取った通りの形で複
|
||||
製または頒布することができる。媒体は問わない。
|
||||
|
||||
あなたは、物理的に複製物を譲渡するという行為に関して手数料を課しても良
|
||||
いし、希望によっては手数料を取って交換における保護の保証を提供しても良
|
||||
い。
|
||||
|
||||
2. あなたは自分の『プログラム』の複製物かその一部を改変して『プログラ
|
||||
ム』を基にした著作物を形成し、そのような改変点や著作物を上記第1節の定
|
||||
める条件の下で複製または頒布することができる。ただし、そのためには以下
|
||||
の条件すべてを満たしていなければならない:
|
||||
|
||||
a) あなたがそれらのファイルを変更したということと変更した日時が良
|
||||
く分かるよう、改変されたファイルに告示しなければならない。
|
||||
|
||||
b) 『プログラム』またはその一部を含む著作物、あるいは『プログラム』
|
||||
かその一部から派生した著作物を頒布あるいは発表する場合には、その全
|
||||
体をこの契約書の条件に従って第三者へ無償で利用許諾しなければならな
|
||||
い。
|
||||
|
||||
c) 改変されたプログラムが、通常実行する際に対話的にコマンドを読む
|
||||
ようになっているならば、そのプログラムを最も一般的な方法で対話的に
|
||||
実行する際、適切な著作権表示、無保証であること(あるいはあなたが保
|
||||
証を提供するということ)、ユーザがプログラムをこの契約書で述べた条
|
||||
件の下で頒布することができるということ、そしてこの契約書の複製物を
|
||||
閲覧するにはどうしたらよいかというユーザへの説明を含む告知が印刷さ
|
||||
れるか、あるいは画面に表示されるようにしなければならない(例外とし
|
||||
て、『プログラム』そのものは対話的であっても通常そのような告知を印
|
||||
刷しない場合には、『プログラム』を基にしたあなたの著作物にそのよう
|
||||
な告知を印刷させる必要はない)。
|
||||
|
||||
以上の必要条件は全体としての改変された著作物に適用される。著作物の一部
|
||||
が『プログラム』から派生したものではないと確認でき、それら自身別の独立
|
||||
した著作物であると合理的に考えられるならば、あなたがそれらを別の著作物
|
||||
として分けて頒布する場合、そういった部分にはこの契約書とその条件は
|
||||
適用されない。しかし、あなたが同じ部分を『プログラム』を基にした著作物
|
||||
全体の一部として頒布するならば、全体としての頒布物は、この契約書が
|
||||
課す条件に従わなければならない。というのは、この契約書が他の契約者
|
||||
に与える許可は『プログラム』丸ごと全体に及び、誰が書いたかは関係なく各
|
||||
部分のすべてを保護するからである。
|
||||
|
||||
よって、すべてあなたによって書かれた著作物に対し、権利を主張したりあな
|
||||
たの権利に異議を申し立てることはこの節の意図するところではない。むしろ、
|
||||
その趣旨は『プログラム』を基にした派生物ないし集合著作物の頒布を管理す
|
||||
る権利を行使するということにある。
|
||||
|
||||
また、『プログラム』を基にしていないその他の著作物を『プログラム』(あ
|
||||
るいは『プログラム』を基にした著作物)と一緒に集めただけのものを一巻の
|
||||
保管装置ないし頒布媒体に収めても、その他の著作物までこの契約書が保
|
||||
護する対象になるということにはならない。
|
||||
|
||||
3. あなたは上記第1節および2節の条件に従い、『プログラム』(あるいは第2
|
||||
節における派生物)をオブジェクトコードないし実行形式で複製または頒布す
|
||||
ることができる。ただし、その場合あなたは以下のうちどれか一つを実施しな
|
||||
ければならない:
|
||||
|
||||
a) 著作物に、『プログラム』に対応した完全かつ機械で読み取り可能な
|
||||
ソースコードを添付する。ただし、ソースコードは上記第1節および2節の
|
||||
条件に従いソフトウェアの交換で習慣的に使われる媒体で頒布しなければ
|
||||
ならない。あるいは、
|
||||
|
||||
b) 著作物に、いかなる第三者に対しても、『プログラム』に対応した完
|
||||
全かつ機械で読み取り可能なソースコードを、頒布に要する物理的コスト
|
||||
を上回らない程度の手数料と引き換えに提供する旨述べた少なくとも3年
|
||||
間は有効な書面になった申し出を添える。ただし、ソースコードは上記第
|
||||
1節および2節の条件に従いソフトウェアの交換で習慣的に使われる媒体で
|
||||
頒布しなければならない。あるいは、
|
||||
|
||||
c) 対応するソースコード頒布の申し出に際して、あなたが得た情報を一
|
||||
緒に引き渡す(この選択肢は、営利を目的としない頒布であって、かつあ
|
||||
なたが上記小節bで指定されているような申し出と共にオブジェクトコー
|
||||
ドあるいは実行形式のプログラムしか入手していない場合に限り許可され
|
||||
る)。
|
||||
|
||||
著作物のソースコードとは、それに対して改変を加える上で好ましいとされる
|
||||
著作物の形式を意味する。ある実行形式の著作物にとって完全なソースコード
|
||||
とは、それが含むモジュールすべてのソースコード全部に加え、関連するイン
|
||||
ターフェース定義ファイルのすべてとライブラリのコンパイルやインストール
|
||||
を制御するために使われるスクリプトをも加えたものを意味する。しかし特別
|
||||
な例外として、そのコンポーネント自体が実行形式に付随するのでは無い限り、
|
||||
頒布されるものの中に、実行形式が実行されるオペレーティングシステムの主
|
||||
要なコンポーネント(コンパイラやカーネル等)と通常一緒に(ソースかバイナ
|
||||
リ形式のどちらかで)頒布されるものを含んでいる必要はないとする。
|
||||
|
||||
実行形式またはオブジェクトコードの頒布が、指定された場所からコピーする
|
||||
ためのアクセス手段を提供することで為されるとして、その上でソースコード
|
||||
も同等のアクセス手段によって同じ場所からコピーできるようになっているな
|
||||
らば、第三者がオブジェクトコードと一緒にソースも強制的にコピーさせられ
|
||||
るようになっていなくてもソースコード頒布の条件を満たしているものとする。
|
||||
|
||||
4. あなたは『プログラム』を、この契約書において明確に提示された行
|
||||
為を除き複製や改変、サブライセンス、あるいは頒布してはならない。他に
|
||||
『プログラム』を複製や改変、サブライセンス、あるいは頒布する企てはすべ
|
||||
て無効であり、この契約書の下でのあなたの権利を自動的に終結させるこ
|
||||
とになろう。しかし、複製物や権利をこの契約書に従ってあなたから得た
|
||||
人々に関しては、そのような人々がこの契約書に完全に従っている限り彼
|
||||
らのライセンスまで終結することはない。
|
||||
|
||||
5. あなたはこの契約書を受諾する必要は無い。というのは、あなたはこ
|
||||
れに署名していないからである。しかし、この契約書以外にあなたに対し
|
||||
て『プログラム』やその派生物を変更、頒布する許可を与えるものは存在しな
|
||||
い。これらの行為は、あなたがこの契約書を受け入れない限り法によって
|
||||
禁じられている。そこで、『プログラム』(あるいは『プログラム』を基にし
|
||||
た著作物のすべて)を改変ないし頒布することにより、あなたは自分がそのよ
|
||||
うな行為を行うためにこの契約書を受諾したということ、そして『プログ
|
||||
ラム』とそれに基づく著作物の複製や頒布、改変についてこの契約書が課
|
||||
す制約と条件をすべて受け入れたということを示したものと見なす。
|
||||
|
||||
6. あなたが『プログラム』(または『プログラム』を基にした著作物全般)を
|
||||
再頒布するたびに、その受領者は元々のライセンス許可者から、この契約書で
|
||||
指定された条件と制約の下で『プログラム』を複製や頒布、あるいは改変する
|
||||
許可を自動的に得るものとする。あなたは、受領者がここで認められた権利を
|
||||
行使することに関してこれ以上他のいかなる制限も課すことができない。あな
|
||||
たには、第三者がこの契約書に従うことを強制する責任はない。
|
||||
|
||||
7. 特許侵害あるいはその他の理由(特許関係に限らない)から、裁判所の判決
|
||||
あるいは申し立ての結果としてあなたに(裁判所命令や契約などにより)この契
|
||||
約書の条件と矛盾する制約が課された場合でも、あなたがこの契約書の条件を
|
||||
免除されるわけではない。もしこの契約書の下であなたに課せられた責任と他
|
||||
の関連する責任を同時に満たすような形で頒布できないならば、結果としてあ
|
||||
なたは『プログラム』を頒布することが全くできないということである。例え
|
||||
ば特許ライセンスが、あなたから直接間接を問わずコピーを受け取った人が誰
|
||||
でも『プログラム』を使用料無料で再頒布することを認めていない場合、あな
|
||||
たがその制約とこの契約書を両方とも満たすには『プログラム』の頒布を完全
|
||||
に中止するしかないだろう。
|
||||
|
||||
この節の一部分が特定の状況の下で無効ないし実施不可能な場合でも、節の残
|
||||
りの部分は適用されるよう意図されている。その他の状況では節が全体として
|
||||
適用されるよう意図されている。
|
||||
|
||||
特許やその他の財産権を侵害したり、そのような権利の主張の効力に異議を唱
|
||||
えたりするようあなたを誘惑することがこの節の目的ではない。この節には、
|
||||
人々によってライセンス慣行として実現されてきた、フリーソフトウェア頒布
|
||||
のシステムの完全性を護るという目的しかない。多くの人々が、フリーソフト
|
||||
ウェアの頒布システムが首尾一貫して適用されているという信頼に基づき、こ
|
||||
のシステムを通じて頒布される多様なソフトウェアに寛大な貢献をしてきたの
|
||||
は事実であるが、人がどのようなシステムを通じてソフトウェアを頒布したい
|
||||
と思うかはあくまでも作者/寄与者次第であり、あなたが選択を押しつけるこ
|
||||
とはできない。
|
||||
|
||||
この節は、この契約書のこの節以外の部分の一帰結になると考えられるケー
|
||||
スを徹底的に明らかにすることを目的としている。
|
||||
|
||||
8. 『プログラム』の頒布や利用が、ある国においては特許または著作権が主
|
||||
張されたインターフェースのいずれかによって制限されている場合、『プログ
|
||||
ラム』にこの契約書を適用した元の著作権者は、そういった国々を排除し
|
||||
た明確な地理的頒布制限を加え、そこで排除されていない国の中やそれらの国々
|
||||
の間でのみ頒布が許可されるようにしても構わない。その場合、そのような制
|
||||
限はこの契約書本文で書かれているのと同様に見なされる。
|
||||
|
||||
9. フリーソフトウェア財団は、時によって改訂または新版の一般公衆利用許
|
||||
諾書を発表することができる。そのような新版は現在のバージョンとその精神
|
||||
においては似たものになるだろうが、新たな問題や懸念を解決するため細部で
|
||||
は異なる可能性がある。
|
||||
|
||||
それぞれのバージョンには、見分けが付くようにバージョン番号が振られてい
|
||||
る。『プログラム』においてそれに適用されるこの契約書のバージョン番号が
|
||||
指定されていて、更に「それ以降のいかなるバージョン」も適用して良いとなっ
|
||||
ていた場合、あなたは従う条件と制約として、指定のバージョンか、フリーソ
|
||||
フトウェア財団によって発行された指定のバージョン以降の版のどれか一つの
|
||||
どちらかを選ぶことが出来る。『プログラム』でライセンスのバージョン番号
|
||||
が指定されていないならば、あなたは今までにフリーソフトウェア財団から発
|
||||
行されたバージョンの中から好きに選んで構わない。
|
||||
|
||||
10. もしあなたが『プログラム』の一部を、その頒布条件がこの契約書と
|
||||
異なる他のフリーなプログラムと統合したいならば、作者に連絡して許可を求
|
||||
めよ。フリーソフトウェア財団が著作権を保有するソフトウェアについては、
|
||||
フリーソフトウェア財団に連絡せよ。私たちは、このような場合のために特別
|
||||
な例外を設けることもある。私たちが決定を下すにあたっては、私たちのフリー
|
||||
ソフトウェアの派生物すべてがフリーな状態に保たれるということと、一般的
|
||||
にソフトウェアの共有と再利用を促進するという二つの目標を規準に検討され
|
||||
るであろう。
|
||||
無保証について
|
||||
|
||||
11. 『プログラム』は代価無しに利用が許可されるので、適切な法が認める限
|
||||
りにおいて、『プログラム』に関するいかなる保証も存在しない。書面で別に
|
||||
述べる場合を除いて、著作権者、またはその他の団体は、『プログラム』を、
|
||||
表明されたか言外にかは問わず、商業的適性を保証するほのめかしやある特定
|
||||
の目的への適合性(に限られない)を含む一切の保証無しに「あるがまま」で提
|
||||
供する。『プログラム』の質と性能に関するリスクのすべてはあなたに帰属す
|
||||
る。『プログラム』に欠陥があると判明した場合、あなたは必要な保守点検や
|
||||
補修、修正に要するコストのすべてを引き受けることになる。
|
||||
|
||||
12. 適切な法か書面での同意によって命ぜられない限り、著作権者、または上
|
||||
記で許可されている通りに『プログラム』を改変または再頒布したその他の団
|
||||
体は、あなたに対して『プログラム』の利用ないし利用不能で生じた一般的、
|
||||
特別的、偶然的、必然的な損害(データの消失や不正確な処理、あなたか第三
|
||||
者が被った損失、あるいは『プログラム』が他のソフトウェアと一緒に動作し
|
||||
ないという不具合などを含むがそれらに限らない)に一切の責任を負わない。
|
||||
そのような損害が生ずる可能性について彼らが忠告されていたとしても同様で
|
||||
ある。
|
||||
|
||||
条件と制約終わり
|
||||
|
||||
以上の条項をあなたの新しいプログラムに適用する方法
|
||||
|
||||
あなたが新しいプログラムを開発したとして、公衆によってそれが利用される
|
||||
可能性を最大にしたいなら、そのプログラムをこの契約書の条項に従って
|
||||
誰でも再頒布あるいは変更できるようフリーソフトウェアにするのが最善です。
|
||||
|
||||
そのためには、プログラムに以下のような表示を添付してください。その場合、
|
||||
保証が排除されているということを最も効果的に伝えるために、それぞれのソー
|
||||
スファイルの冒頭に表示を添付すれば最も安全です。少なくとも、「著作権表
|
||||
示」という行と全文がある場所へのポインタだけは各ファイルに含めて置いて
|
||||
ください。
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
(訳:
|
||||
|
||||
<プログラムの名前と、それが何をするかについての簡単な説明。>
|
||||
Copyright (C) <西暦年> <作者の名前>
|
||||
|
||||
このプログラムはフリーソフトウェアです。あなたはこれを、フリーソフ
|
||||
トウェア財団によって発行された GNU 一般公衆利用許諾契約書(バージョ
|
||||
ン2か、希望によってはそれ以降のバージョンのうちどれか)の定める条件
|
||||
の下で再頒布または改変することができます。
|
||||
|
||||
このプログラムは有用であることを願って頒布されますが、*全くの無保
|
||||
証* です。商業可能性の保証や特定の目的への適合性は、言外に示された
|
||||
ものも含め全く存在しません。詳しくはGNU 一般公衆利用許諾契約書をご
|
||||
覧ください。
|
||||
|
||||
あなたはこのプログラムと共に、GNU 一般公衆利用許諾契約書の複製物を
|
||||
一部受け取ったはずです。もし受け取っていなければ、フリーソフトウェ
|
||||
ア財団まで請求してください(宛先は the Free Software Foundation,
|
||||
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA)。
|
||||
|
||||
)
|
||||
|
||||
電子ないし紙のメールであなたに問い合わせる方法についての情報も書き加え
|
||||
ましょう。
|
||||
|
||||
プログラムが対話的なものならば、対話モードで起動した際に出力として以下
|
||||
のような短い告知が表示されるようにしてください:
|
||||
|
||||
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 バージョン 69, Copyright (C) 年 作者の名前
|
||||
Gnomovision は*全くの無保証*で提供されます。詳しくは「show w」
|
||||
とタイプして下さい。これはフリーソフトウェアであり、ある条件の下で
|
||||
再頒布することが奨励されています。詳しくは「show c」とタイプして下
|
||||
さい。
|
||||
|
||||
)
|
||||
|
||||
ここで、仮想的なコマンド「show w」と「show c」は一般公衆利用許諾契約書
|
||||
の適切な部分を表示するようになっていなければなりません。もちろん、あな
|
||||
たが使うコマンドを「show w」や「show c」と呼ぶ必然性はありませんので、
|
||||
あなたのプログラムに合わせてマウスのクリックやメニューのアイテムにして
|
||||
も結構です。
|
||||
|
||||
またあなたは、必要ならば(プログラマーとして働いていたら)あなたの雇用主、
|
||||
あるいは場合によっては学校から、そのプログラムに関する「著作権放棄声明
|
||||
(copyright disclaimer)」に署名してもらうべきです。以下は例ですので、名
|
||||
前を変えてください:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
(訳:
|
||||
|
||||
Yoyodyne社はここに、James Hackerによって書かれたプログラム
|
||||
「Gnomovision」(コンパイラへ通すプログラム)に関する一切の著作権の利
|
||||
益を放棄します。
|
||||
|
||||
<Ty Coon氏の署名>、1989年4月1日
|
||||
Ty Coon、副社長
|
||||
|
||||
)
|
||||
|
||||
この一般公衆利用許諾契約書では、あなたのプログラムを独占的なプログラム
|
||||
に統合することを認めていません。あなたのプログラムがサブルーチンライブ
|
||||
ラリならば、独占的なアプリケーションとあなたのライブラリをリンクするこ
|
||||
とを許可したほうがより便利であると考えるかもしれません。もしこれがあな
|
||||
たの望むことならば、この契約書の代わりにGNU ライブラリ一般公衆利用許諾
|
||||
契約書を適用してください。
|
||||
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
|
||||
この利用許諾契約書を、一字一句そのままに複製し頒布することは許可する。
|
||||
しかし変更は認めない。
|
||||
|
||||
This is an unofficial translation of the GNU General Public License
|
||||
into Japanese. It was not published by the Free Software Foundation,
|
||||
and does not legally state the distribution terms for software that
|
||||
uses the GNU GPL--only the original English text of the GNU GPL does
|
||||
that. However, we hope that this translation will help Japanese
|
||||
speakers understand the GNU GPL better.
|
||||
|
||||
(訳: 以下は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 一般公衆利用許諾契約書
|
||||
複製、頒布、改変に関する条件と制約
|
||||
|
||||
0. この利用許諾契約書は、そのプログラム(またはその他の著作物)をこの一
|
||||
般公衆利用許諾契約書の定める条件の下で頒布できるという告知が著作権者に
|
||||
よって記載されたプログラムまたはその他の著作物全般に適用される。以下で
|
||||
は、「『プログラム』」とはそのようにしてこの契約書が適用されたプログラ
|
||||
ムや著作物全般を意味し、また「『プログラム』を基にした著作物」とは『プ
|
||||
ログラム』やその他著作権法の下で派生物と見なされるもの全般を指す。すな
|
||||
わち、『プログラム』かその一部を、全く同一のままか、改変を加えたか、あ
|
||||
るいは他の言語に翻訳された形で含む著作物のことである(「改変」という語
|
||||
の本来の意味からはずれるが、以下では翻訳も改変の一種と見なす)。それぞ
|
||||
れの契約者は「あなた」と表現される。
|
||||
|
||||
複製や頒布、改変以外の活動はこの契約書ではカバーされない。それらはこの
|
||||
契約書の対象外である。『プログラム』を実行する行為自体に制限はない。ま
|
||||
た、そのような『プログラム』の出力結果は、その内容が『プログラム』を基
|
||||
にした著作物を構成する場合のみこの契約書によって保護される(『プログラ
|
||||
ム』を実行したことによって作成されたということとは無関係である)。この
|
||||
ような線引きの妥当性は、『プログラム』が何をするのかに依存する。
|
||||
|
||||
1. それぞれの複製物において適切な著作権表示と保証の否認声明(disclaimer
|
||||
of warranty)を目立つよう適切に掲載し、またこの契約書および一切の保証の
|
||||
不在に触れた告知すべてをそのまま残し、そしてこの契約書の複製物を『プロ
|
||||
グラム』のいかなる受領者にも『プログラム』と共に頒布する限り、あなたは
|
||||
『プログラム』のソースコードの複製物を、あなたが受け取った通りの形で複
|
||||
製または頒布することができる。媒体は問わない。
|
||||
|
||||
あなたは、物理的に複製物を譲渡するという行為に関して手数料を課しても良
|
||||
いし、希望によっては手数料を取って交換における保護の保証を提供しても良
|
||||
い。
|
||||
|
||||
2. あなたは自分の『プログラム』の複製物かその一部を改変して『プログラ
|
||||
ム』を基にした著作物を形成し、そのような改変点や著作物を上記第1節の定
|
||||
める条件の下で複製または頒布することができる。ただし、そのためには以下
|
||||
の条件すべてを満たしていなければならない:
|
||||
|
||||
a) あなたがそれらのファイルを変更したということと変更した日時が良
|
||||
く分かるよう、改変されたファイルに告示しなければならない。
|
||||
|
||||
b) 『プログラム』またはその一部を含む著作物、あるいは『プログラム』
|
||||
かその一部から派生した著作物を頒布あるいは発表する場合には、その全
|
||||
体をこの契約書の条件に従って第三者へ無償で利用許諾しなければならな
|
||||
い。
|
||||
|
||||
c) 改変されたプログラムが、通常実行する際に対話的にコマンドを読む
|
||||
ようになっているならば、そのプログラムを最も一般的な方法で対話的に
|
||||
実行する際、適切な著作権表示、無保証であること(あるいはあなたが保
|
||||
証を提供するということ)、ユーザがプログラムをこの契約書で述べた条
|
||||
件の下で頒布することができるということ、そしてこの契約書の複製物を
|
||||
閲覧するにはどうしたらよいかというユーザへの説明を含む告知が印刷さ
|
||||
れるか、あるいは画面に表示されるようにしなければならない(例外とし
|
||||
て、『プログラム』そのものは対話的であっても通常そのような告知を印
|
||||
刷しない場合には、『プログラム』を基にしたあなたの著作物にそのよう
|
||||
な告知を印刷させる必要はない)。
|
||||
|
||||
以上の必要条件は全体としての改変された著作物に適用される。著作物の一部
|
||||
が『プログラム』から派生したものではないと確認でき、それら自身別の独立
|
||||
した著作物であると合理的に考えられるならば、あなたがそれらを別の著作物
|
||||
として分けて頒布する場合、そういった部分にはこの契約書とその条件は
|
||||
適用されない。しかし、あなたが同じ部分を『プログラム』を基にした著作物
|
||||
全体の一部として頒布するならば、全体としての頒布物は、この契約書が
|
||||
課す条件に従わなければならない。というのは、この契約書が他の契約者
|
||||
に与える許可は『プログラム』丸ごと全体に及び、誰が書いたかは関係なく各
|
||||
部分のすべてを保護するからである。
|
||||
|
||||
よって、すべてあなたによって書かれた著作物に対し、権利を主張したりあな
|
||||
たの権利に異議を申し立てることはこの節の意図するところではない。むしろ、
|
||||
その趣旨は『プログラム』を基にした派生物ないし集合著作物の頒布を管理す
|
||||
る権利を行使するということにある。
|
||||
|
||||
また、『プログラム』を基にしていないその他の著作物を『プログラム』(あ
|
||||
るいは『プログラム』を基にした著作物)と一緒に集めただけのものを一巻の
|
||||
保管装置ないし頒布媒体に収めても、その他の著作物までこの契約書が保
|
||||
護する対象になるということにはならない。
|
||||
|
||||
3. あなたは上記第1節および2節の条件に従い、『プログラム』(あるいは第2
|
||||
節における派生物)をオブジェクトコードないし実行形式で複製または頒布す
|
||||
ることができる。ただし、その場合あなたは以下のうちどれか一つを実施しな
|
||||
ければならない:
|
||||
|
||||
a) 著作物に、『プログラム』に対応した完全かつ機械で読み取り可能な
|
||||
ソースコードを添付する。ただし、ソースコードは上記第1節および2節の
|
||||
条件に従いソフトウェアの交換で習慣的に使われる媒体で頒布しなければ
|
||||
ならない。あるいは、
|
||||
|
||||
b) 著作物に、いかなる第三者に対しても、『プログラム』に対応した完
|
||||
全かつ機械で読み取り可能なソースコードを、頒布に要する物理的コスト
|
||||
を上回らない程度の手数料と引き換えに提供する旨述べた少なくとも3年
|
||||
間は有効な書面になった申し出を添える。ただし、ソースコードは上記第
|
||||
1節および2節の条件に従いソフトウェアの交換で習慣的に使われる媒体で
|
||||
頒布しなければならない。あるいは、
|
||||
|
||||
c) 対応するソースコード頒布の申し出に際して、あなたが得た情報を一
|
||||
緒に引き渡す(この選択肢は、営利を目的としない頒布であって、かつあ
|
||||
なたが上記小節bで指定されているような申し出と共にオブジェクトコー
|
||||
ドあるいは実行形式のプログラムしか入手していない場合に限り許可され
|
||||
る)。
|
||||
|
||||
著作物のソースコードとは、それに対して改変を加える上で好ましいとされる
|
||||
著作物の形式を意味する。ある実行形式の著作物にとって完全なソースコード
|
||||
とは、それが含むモジュールすべてのソースコード全部に加え、関連するイン
|
||||
ターフェース定義ファイルのすべてとライブラリのコンパイルやインストール
|
||||
を制御するために使われるスクリプトをも加えたものを意味する。しかし特別
|
||||
な例外として、そのコンポーネント自体が実行形式に付随するのでは無い限り、
|
||||
頒布されるものの中に、実行形式が実行されるオペレーティングシステムの主
|
||||
要なコンポーネント(コンパイラやカーネル等)と通常一緒に(ソースかバイナ
|
||||
リ形式のどちらかで)頒布されるものを含んでいる必要はないとする。
|
||||
|
||||
実行形式またはオブジェクトコードの頒布が、指定された場所からコピーする
|
||||
ためのアクセス手段を提供することで為されるとして、その上でソースコード
|
||||
も同等のアクセス手段によって同じ場所からコピーできるようになっているな
|
||||
らば、第三者がオブジェクトコードと一緒にソースも強制的にコピーさせられ
|
||||
るようになっていなくてもソースコード頒布の条件を満たしているものとする。
|
||||
|
||||
4. あなたは『プログラム』を、この契約書において明確に提示された行
|
||||
為を除き複製や改変、サブライセンス、あるいは頒布してはならない。他に
|
||||
『プログラム』を複製や改変、サブライセンス、あるいは頒布する企てはすべ
|
||||
て無効であり、この契約書の下でのあなたの権利を自動的に終結させるこ
|
||||
とになろう。しかし、複製物や権利をこの契約書に従ってあなたから得た
|
||||
人々に関しては、そのような人々がこの契約書に完全に従っている限り彼
|
||||
らのライセンスまで終結することはない。
|
||||
|
||||
5. あなたはこの契約書を受諾する必要は無い。というのは、あなたはこ
|
||||
れに署名していないからである。しかし、この契約書以外にあなたに対し
|
||||
て『プログラム』やその派生物を変更、頒布する許可を与えるものは存在しな
|
||||
い。これらの行為は、あなたがこの契約書を受け入れない限り法によって
|
||||
禁じられている。そこで、『プログラム』(あるいは『プログラム』を基にし
|
||||
た著作物のすべて)を改変ないし頒布することにより、あなたは自分がそのよ
|
||||
うな行為を行うためにこの契約書を受諾したということ、そして『プログ
|
||||
ラム』とそれに基づく著作物の複製や頒布、改変についてこの契約書が課
|
||||
す制約と条件をすべて受け入れたということを示したものと見なす。
|
||||
|
||||
6. あなたが『プログラム』(または『プログラム』を基にした著作物全般)を
|
||||
再頒布するたびに、その受領者は元々のライセンス許可者から、この契約書で
|
||||
指定された条件と制約の下で『プログラム』を複製や頒布、あるいは改変する
|
||||
許可を自動的に得るものとする。あなたは、受領者がここで認められた権利を
|
||||
行使することに関してこれ以上他のいかなる制限も課すことができない。あな
|
||||
たには、第三者がこの契約書に従うことを強制する責任はない。
|
||||
|
||||
7. 特許侵害あるいはその他の理由(特許関係に限らない)から、裁判所の判決
|
||||
あるいは申し立ての結果としてあなたに(裁判所命令や契約などにより)この契
|
||||
約書の条件と矛盾する制約が課された場合でも、あなたがこの契約書の条件を
|
||||
免除されるわけではない。もしこの契約書の下であなたに課せられた責任と他
|
||||
の関連する責任を同時に満たすような形で頒布できないならば、結果としてあ
|
||||
なたは『プログラム』を頒布することが全くできないということである。例え
|
||||
ば特許ライセンスが、あなたから直接間接を問わずコピーを受け取った人が誰
|
||||
でも『プログラム』を使用料無料で再頒布することを認めていない場合、あな
|
||||
たがその制約とこの契約書を両方とも満たすには『プログラム』の頒布を完全
|
||||
に中止するしかないだろう。
|
||||
|
||||
この節の一部分が特定の状況の下で無効ないし実施不可能な場合でも、節の残
|
||||
りの部分は適用されるよう意図されている。その他の状況では節が全体として
|
||||
適用されるよう意図されている。
|
||||
|
||||
特許やその他の財産権を侵害したり、そのような権利の主張の効力に異議を唱
|
||||
えたりするようあなたを誘惑することがこの節の目的ではない。この節には、
|
||||
人々によってライセンス慣行として実現されてきた、フリーソフトウェア頒布
|
||||
のシステムの完全性を護るという目的しかない。多くの人々が、フリーソフト
|
||||
ウェアの頒布システムが首尾一貫して適用されているという信頼に基づき、こ
|
||||
のシステムを通じて頒布される多様なソフトウェアに寛大な貢献をしてきたの
|
||||
は事実であるが、人がどのようなシステムを通じてソフトウェアを頒布したい
|
||||
と思うかはあくまでも作者/寄与者次第であり、あなたが選択を押しつけるこ
|
||||
とはできない。
|
||||
|
||||
この節は、この契約書のこの節以外の部分の一帰結になると考えられるケー
|
||||
スを徹底的に明らかにすることを目的としている。
|
||||
|
||||
8. 『プログラム』の頒布や利用が、ある国においては特許または著作権が主
|
||||
張されたインターフェースのいずれかによって制限されている場合、『プログ
|
||||
ラム』にこの契約書を適用した元の著作権者は、そういった国々を排除し
|
||||
た明確な地理的頒布制限を加え、そこで排除されていない国の中やそれらの国々
|
||||
の間でのみ頒布が許可されるようにしても構わない。その場合、そのような制
|
||||
限はこの契約書本文で書かれているのと同様に見なされる。
|
||||
|
||||
9. フリーソフトウェア財団は、時によって改訂または新版の一般公衆利用許
|
||||
諾書を発表することができる。そのような新版は現在のバージョンとその精神
|
||||
においては似たものになるだろうが、新たな問題や懸念を解決するため細部で
|
||||
は異なる可能性がある。
|
||||
|
||||
それぞれのバージョンには、見分けが付くようにバージョン番号が振られてい
|
||||
る。『プログラム』においてそれに適用されるこの契約書のバージョン番号が
|
||||
指定されていて、更に「それ以降のいかなるバージョン」も適用して良いとなっ
|
||||
ていた場合、あなたは従う条件と制約として、指定のバージョンか、フリーソ
|
||||
フトウェア財団によって発行された指定のバージョン以降の版のどれか一つの
|
||||
どちらかを選ぶことが出来る。『プログラム』でライセンスのバージョン番号
|
||||
が指定されていないならば、あなたは今までにフリーソフトウェア財団から発
|
||||
行されたバージョンの中から好きに選んで構わない。
|
||||
|
||||
10. もしあなたが『プログラム』の一部を、その頒布条件がこの契約書と
|
||||
異なる他のフリーなプログラムと統合したいならば、作者に連絡して許可を求
|
||||
めよ。フリーソフトウェア財団が著作権を保有するソフトウェアについては、
|
||||
フリーソフトウェア財団に連絡せよ。私たちは、このような場合のために特別
|
||||
な例外を設けることもある。私たちが決定を下すにあたっては、私たちのフリー
|
||||
ソフトウェアの派生物すべてがフリーな状態に保たれるということと、一般的
|
||||
にソフトウェアの共有と再利用を促進するという二つの目標を規準に検討され
|
||||
るであろう。
|
||||
無保証について
|
||||
|
||||
11. 『プログラム』は代価無しに利用が許可されるので、適切な法が認める限
|
||||
りにおいて、『プログラム』に関するいかなる保証も存在しない。書面で別に
|
||||
述べる場合を除いて、著作権者、またはその他の団体は、『プログラム』を、
|
||||
表明されたか言外にかは問わず、商業的適性を保証するほのめかしやある特定
|
||||
の目的への適合性(に限られない)を含む一切の保証無しに「あるがまま」で提
|
||||
供する。『プログラム』の質と性能に関するリスクのすべてはあなたに帰属す
|
||||
る。『プログラム』に欠陥があると判明した場合、あなたは必要な保守点検や
|
||||
補修、修正に要するコストのすべてを引き受けることになる。
|
||||
|
||||
12. 適切な法か書面での同意によって命ぜられない限り、著作権者、または上
|
||||
記で許可されている通りに『プログラム』を改変または再頒布したその他の団
|
||||
体は、あなたに対して『プログラム』の利用ないし利用不能で生じた一般的、
|
||||
特別的、偶然的、必然的な損害(データの消失や不正確な処理、あなたか第三
|
||||
者が被った損失、あるいは『プログラム』が他のソフトウェアと一緒に動作し
|
||||
ないという不具合などを含むがそれらに限らない)に一切の責任を負わない。
|
||||
そのような損害が生ずる可能性について彼らが忠告されていたとしても同様で
|
||||
ある。
|
||||
|
||||
条件と制約終わり
|
||||
|
||||
以上の条項をあなたの新しいプログラムに適用する方法
|
||||
|
||||
あなたが新しいプログラムを開発したとして、公衆によってそれが利用される
|
||||
可能性を最大にしたいなら、そのプログラムをこの契約書の条項に従って
|
||||
誰でも再頒布あるいは変更できるようフリーソフトウェアにするのが最善です。
|
||||
|
||||
そのためには、プログラムに以下のような表示を添付してください。その場合、
|
||||
保証が排除されているということを最も効果的に伝えるために、それぞれのソー
|
||||
スファイルの冒頭に表示を添付すれば最も安全です。少なくとも、「著作権表
|
||||
示」という行と全文がある場所へのポインタだけは各ファイルに含めて置いて
|
||||
ください。
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
(訳:
|
||||
|
||||
<プログラムの名前と、それが何をするかについての簡単な説明。>
|
||||
Copyright (C) <西暦年> <作者の名前>
|
||||
|
||||
このプログラムはフリーソフトウェアです。あなたはこれを、フリーソフ
|
||||
トウェア財団によって発行された GNU 一般公衆利用許諾契約書(バージョ
|
||||
ン2か、希望によってはそれ以降のバージョンのうちどれか)の定める条件
|
||||
の下で再頒布または改変することができます。
|
||||
|
||||
このプログラムは有用であることを願って頒布されますが、*全くの無保
|
||||
証* です。商業可能性の保証や特定の目的への適合性は、言外に示された
|
||||
ものも含め全く存在しません。詳しくはGNU 一般公衆利用許諾契約書をご
|
||||
覧ください。
|
||||
|
||||
あなたはこのプログラムと共に、GNU 一般公衆利用許諾契約書の複製物を
|
||||
一部受け取ったはずです。もし受け取っていなければ、フリーソフトウェ
|
||||
ア財団まで請求してください(宛先は the Free Software Foundation,
|
||||
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA)。
|
||||
|
||||
)
|
||||
|
||||
電子ないし紙のメールであなたに問い合わせる方法についての情報も書き加え
|
||||
ましょう。
|
||||
|
||||
プログラムが対話的なものならば、対話モードで起動した際に出力として以下
|
||||
のような短い告知が表示されるようにしてください:
|
||||
|
||||
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 バージョン 69, Copyright (C) 年 作者の名前
|
||||
Gnomovision は*全くの無保証*で提供されます。詳しくは「show w」
|
||||
とタイプして下さい。これはフリーソフトウェアであり、ある条件の下で
|
||||
再頒布することが奨励されています。詳しくは「show c」とタイプして下
|
||||
さい。
|
||||
|
||||
)
|
||||
|
||||
ここで、仮想的なコマンド「show w」と「show c」は一般公衆利用許諾契約書
|
||||
の適切な部分を表示するようになっていなければなりません。もちろん、あな
|
||||
たが使うコマンドを「show w」や「show c」と呼ぶ必然性はありませんので、
|
||||
あなたのプログラムに合わせてマウスのクリックやメニューのアイテムにして
|
||||
も結構です。
|
||||
|
||||
またあなたは、必要ならば(プログラマーとして働いていたら)あなたの雇用主、
|
||||
あるいは場合によっては学校から、そのプログラムに関する「著作権放棄声明
|
||||
(copyright disclaimer)」に署名してもらうべきです。以下は例ですので、名
|
||||
前を変えてください:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
(訳:
|
||||
|
||||
Yoyodyne社はここに、James Hackerによって書かれたプログラム
|
||||
「Gnomovision」(コンパイラへ通すプログラム)に関する一切の著作権の利
|
||||
益を放棄します。
|
||||
|
||||
<Ty Coon氏の署名>、1989年4月1日
|
||||
Ty Coon、副社長
|
||||
|
||||
)
|
||||
|
||||
この一般公衆利用許諾契約書では、あなたのプログラムを独占的なプログラム
|
||||
に統合することを認めていません。あなたのプログラムがサブルーチンライブ
|
||||
ラリならば、独占的なアプリケーションとあなたのライブラリをリンクするこ
|
||||
とを許可したほうがより便利であると考えるかもしれません。もしこれがあな
|
||||
たの望むことならば、この契約書の代わりにGNU ライブラリ一般公衆利用許諾
|
||||
契約書を適用してください。
|
||||
|
@ -1,44 +1,44 @@
|
||||
// ______ __ __
|
||||
// /\ _ \/\ \__/\ \
|
||||
// __\ \ \L\ \ \ ,_\ \ \___ __ ___ __
|
||||
// /'__`\ \ __ \ \ \/\ \ _ `\ /'__`\/' _ `\ /'__`\
|
||||
///\ __/\ \ \/\ \ \ \_\ \ \ \ \/\ __//\ \/\ \/\ \L\.\_
|
||||
//\ \____\\ \_\ \_\ \__\\ \_\ \_\ \____\ \_\ \_\ \__/.\_\
|
||||
// \/____/ \/_/\/_/\/__/ \/_/\/_/\/____/\/_/\/_/\/__/\/_/
|
||||
// _ _ _ _ _ _ _ _ _ _ _ _ _
|
||||
// / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \
|
||||
//( e | n | g | l | i | s | h ) ( A | t | h | e | n | a )
|
||||
// \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/
|
||||
//
|
||||
//--------------------------------------------------------------
|
||||
// eAthena Battle Configuration File
|
||||
// Originally Translated by Peter Kieser <pfak@telus.net>
|
||||
// Made in to plainer English by Ancyker
|
||||
//--------------------------------------------------------------
|
||||
// Note 1: Value is a config switch (on/off, yes/no or 1/0)
|
||||
// Note 2: Value is in percents (100 means 100%)
|
||||
// Note 3: Value is a bit field. If no description is given,
|
||||
// assume unit types (1: Pc, 2: Mob, 4: Pet, 8: Homun)
|
||||
//--------------------------------------------------------------
|
||||
|
||||
// Melee damage adjustments (non skills) for Battleground maps (Note 2)
|
||||
bg_short_attack_damage_rate: 80
|
||||
|
||||
// Ranged damage adjustments (non skills) for Battleground maps (Note 2)
|
||||
bg_long_attack_damage_rate: 80
|
||||
|
||||
// Weapon skills damage adjustments for Battleground maps (Note 2)
|
||||
bg_weapon_attack_damage_rate: 60
|
||||
|
||||
// Magic skills damage adjustments for Battleground maps (Note 2)
|
||||
bg_magic_attack_damage_rate: 60
|
||||
|
||||
// Misc skills damage adjustments for Battleground maps (Note 2)
|
||||
bg_misc_attack_damage_rate: 60
|
||||
|
||||
// Flee penalty on BG grounds.
|
||||
// NOTE: It's %, not absolute, so 20 is -20% of your total flee
|
||||
bg_flee_penalty: 20
|
||||
|
||||
// Interval before updating the bg-member map mini-dots (milliseconds)
|
||||
bg_update_interval: 1000
|
||||
// ______ __ __
|
||||
// /\ _ \/\ \__/\ \
|
||||
// __\ \ \L\ \ \ ,_\ \ \___ __ ___ __
|
||||
// /'__`\ \ __ \ \ \/\ \ _ `\ /'__`\/' _ `\ /'__`\
|
||||
///\ __/\ \ \/\ \ \ \_\ \ \ \ \/\ __//\ \/\ \/\ \L\.\_
|
||||
//\ \____\\ \_\ \_\ \__\\ \_\ \_\ \____\ \_\ \_\ \__/.\_\
|
||||
// \/____/ \/_/\/_/\/__/ \/_/\/_/\/____/\/_/\/_/\/__/\/_/
|
||||
// _ _ _ _ _ _ _ _ _ _ _ _ _
|
||||
// / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \
|
||||
//( e | n | g | l | i | s | h ) ( A | t | h | e | n | a )
|
||||
// \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/
|
||||
//
|
||||
//--------------------------------------------------------------
|
||||
// eAthena Battle Configuration File
|
||||
// Originally Translated by Peter Kieser <pfak@telus.net>
|
||||
// Made in to plainer English by Ancyker
|
||||
//--------------------------------------------------------------
|
||||
// Note 1: Value is a config switch (on/off, yes/no or 1/0)
|
||||
// Note 2: Value is in percents (100 means 100%)
|
||||
// Note 3: Value is a bit field. If no description is given,
|
||||
// assume unit types (1: Pc, 2: Mob, 4: Pet, 8: Homun)
|
||||
//--------------------------------------------------------------
|
||||
|
||||
// Melee damage adjustments (non skills) for Battleground maps (Note 2)
|
||||
bg_short_attack_damage_rate: 80
|
||||
|
||||
// Ranged damage adjustments (non skills) for Battleground maps (Note 2)
|
||||
bg_long_attack_damage_rate: 80
|
||||
|
||||
// Weapon skills damage adjustments for Battleground maps (Note 2)
|
||||
bg_weapon_attack_damage_rate: 60
|
||||
|
||||
// Magic skills damage adjustments for Battleground maps (Note 2)
|
||||
bg_magic_attack_damage_rate: 60
|
||||
|
||||
// Misc skills damage adjustments for Battleground maps (Note 2)
|
||||
bg_misc_attack_damage_rate: 60
|
||||
|
||||
// Flee penalty on BG grounds.
|
||||
// NOTE: It's %, not absolute, so 20 is -20% of your total flee
|
||||
bg_flee_penalty: 20
|
||||
|
||||
// Interval before updating the bg-member map mini-dots (milliseconds)
|
||||
bg_update_interval: 1000
|
||||
|
@ -1,39 +1,39 @@
|
||||
//ID,Sprite_Name,Name,LV,HP,SP,Range1,ATK1,ATK2,DEF,MDEF,STR,AGI,VIT,INT,DEX,LUK,Range2,Range3,Scale,Race,Element,Speed,aDelay,aMotion,dMotion
|
||||
// Monster Mercenaries
|
||||
1191,MIMIC,Mimic,51,6120,100,2,150,900,10,40,44,121,1,60,75,110,10,12,1,0,60,100,972,500,288
|
||||
1506,DISGUISE,Disguise,55,7543,100,2,279,546,18,29,0,72,45,35,48,65,10,12,1,6,82,147,516,768,384
|
||||
1275,ALICE,Alice,62,10000,100,2,550,700,5,5,64,64,42,85,100,130,10,12,1,7,60,200,502,2304,480
|
||||
1965,M_WILD_ROSE,Wild Rose,38,2980,130,2,315,360,0,15,65,85,15,35,65,80,10,12,0,2,24,100,964,864,288
|
||||
1966,M_DOPPELGANGER,Doppelganger,72,249000,200,2,1340,1590,60,35,88,90,30,35,125,65,10,12,1,6,67,100,480,480,288
|
||||
1967,M_YGNIZEM,Egnigem Cenia,58,11200,320,2,823,1212,35,8,60,35,52,18,79,20,10,12,1,7,43,145,576,432,288
|
||||
// Normal Mercenaries
|
||||
6017,MER_ARCHER01,Mina,20,256,200,10,170,85,7,5,1,16,5,1,28,8,10,0,0,7,20,150,700,432,300
|
||||
6018,MER_ARCHER02,Dororu,30,457,70,10,228,114,11,7,1,18,8,1,40,11,10,0,0,7,20,150,700,432,300
|
||||
6019,MER_ARCHER03,Nami,40,732,93,10,260,130,15,9,3,21,12,4,52,17,10,0,0,7,20,150,700,432,300
|
||||
6020,MER_ARCHER04,Elfin,50,1092,116,10,310,155,18,11,5,33,17,6,60,23,10,0,0,7,20,150,575,432,300
|
||||
6021,MER_ARCHER05,Clara,60,2212,280,10,360,180,20,13,5,41,17,12,75,30,10,0,0,7,20,150,575,432,300
|
||||
6022,MER_ARCHER06,Dali,70,3098,353,10,424,212,21,15,11,46,24,22,83,37,10,0,0,7,20,150,575,432,300
|
||||
6023,MER_ARCHER07,Karaya,80,4051,415,10,468,234,22,16,14,55,27,26,91,44,10,0,0,7,20,150,450,432,300
|
||||
6024,MER_ARCHER08,Hiyori,90,5039,469,10,482,241,24,18,19,65,27,27,103,49,10,0,0,7,20,150,450,432,300
|
||||
6025,MER_ARCHER09,Kero,95,5572,499,10,500,250,25,20,20,71,27,28,110,51,10,0,0,7,20,150,450,432,300
|
||||
6026,MER_ARCHER10,Sukye,99,7381,642,10,816,308,49,49,21,83,27,28,123,52,10,0,0,7,20,150,450,432,300
|
||||
6027,MER_LANCER01,David,22,2071,100,2,168,84,30,1,27,1,4,1,30,2,10,0,0,7,20,150,700,432,300
|
||||
6028,MER_LANCER02,Ellen,34,2523,131,2,208,104,33,1,37,1,4,1,37,4,10,0,0,7,20,150,700,432,300
|
||||
6029,MER_LANCER03,Luise,41,3397,161,2,248,124,36,5,45,1,22,1,40,6,10,0,0,7,20,150,700,432,300
|
||||
6030,MER_LANCER04,Frank,55,4580,191,2,300,150,39,5,55,2,35,1,50,8,10,0,0,7,20,150,575,432,300
|
||||
6031,MER_LANCER05,Ryan,60,5899,221,2,350,160,42,10,65,2,39,1,60,10,10,0,0,7,20,150,575,432,300
|
||||
6032,MER_LANCER06,Paolo,72,7874,252,2,370,185,46,10,75,3,15,77,61,12,10,0,0,7,20,150,575,432,300
|
||||
6033,MER_LANCER07,Jens,81,10260,330,2,380,190,50,15,85,3,63,20,61,14,10,0,0,7,20,150,450,432,300
|
||||
6034,MER_LANCER08,Thierry,90,13167,366,2,400,200,55,20,95,20,74,20,63,16,10,0,0,7,20,150,450,432,300
|
||||
6035,MER_LANCER09,Steven,95,14648,398,2,440,220,60,25,100,25,77,25,63,18,10,0,0,7,20,150,450,432,300
|
||||
6036,MER_LANCER10,Wayne,99,18000,413,2,700,250,70,30,120,30,90,30,70,30,10,0,0,7,20,150,450,432,300
|
||||
6037,MER_SWORDMAN01,Rodin,20,502,70,2,174,87,26,0,21,27,5,1,30,3,10,0,0,7,20,150,700,432,300
|
||||
6038,MER_SWORDMAN02,Lancer,30,979,99,2,258,129,31,0,26,38,6,1,35,3,10,0,0,7,20,150,700,432,300
|
||||
6039,MER_SWORDMAN03,Nathan,40,1555,134,2,326,163,36,3,31,45,7,6,40,6,10,0,0,7,20,150,700,432,300
|
||||
6040,MER_SWORDMAN04,Roan,50,2397,162,2,382,191,39,5,37,59,8,6,40,6,10,0,0,7,20,150,575,432,300
|
||||
6041,MER_SWORDMAN05,Orizaro,60,3387,195,2,406,203,42,7,48,68,9,6,45,9,10,0,0,7,20,150,575,432,300
|
||||
6042,MER_SWORDMAN06,Thyla,70,4495,241,2,436,218,45,12,53,79,10,12,50,9,10,0,0,7,20,150,575,432,300
|
||||
6043,MER_SWORDMAN07,Ben,80,5889,279,2,468,234,47,15,59,88,11,12,55,12,10,0,0,7,20,150,450,432,300
|
||||
6044,MER_SWORDMAN08,Pinaka,90,7520,325,2,500,250,49,18,70,95,12,18,60,15,10,0,0,7,20,150,450,432,300
|
||||
6045,MER_SWORDMAN09,Kuhlmann,95,9052,348,2,524,262,51,22,80,95,18,18,60,15,10,0,0,7,20,150,450,432,300
|
||||
6046,MER_SWORDMAN10,Roux,99,12355,451,2,760,280,64,30,99,105,30,30,60,30,10,0,0,7,20,150,450,432,300
|
||||
//ID,Sprite_Name,Name,LV,HP,SP,Range1,ATK1,ATK2,DEF,MDEF,STR,AGI,VIT,INT,DEX,LUK,Range2,Range3,Scale,Race,Element,Speed,aDelay,aMotion,dMotion
|
||||
// Monster Mercenaries
|
||||
1191,MIMIC,Mimic,51,6120,100,2,150,900,10,40,44,121,1,60,75,110,10,12,1,0,60,100,972,500,288
|
||||
1506,DISGUISE,Disguise,55,7543,100,2,279,546,18,29,0,72,45,35,48,65,10,12,1,6,82,147,516,768,384
|
||||
1275,ALICE,Alice,62,10000,100,2,550,700,5,5,64,64,42,85,100,130,10,12,1,7,60,200,502,2304,480
|
||||
1965,M_WILD_ROSE,Wild Rose,38,2980,130,2,315,360,0,15,65,85,15,35,65,80,10,12,0,2,24,100,964,864,288
|
||||
1966,M_DOPPELGANGER,Doppelganger,72,249000,200,2,1340,1590,60,35,88,90,30,35,125,65,10,12,1,6,67,100,480,480,288
|
||||
1967,M_YGNIZEM,Egnigem Cenia,58,11200,320,2,823,1212,35,8,60,35,52,18,79,20,10,12,1,7,43,145,576,432,288
|
||||
// Normal Mercenaries
|
||||
6017,MER_ARCHER01,Mina,20,256,200,10,170,85,7,5,1,16,5,1,28,8,10,0,0,7,20,150,700,432,300
|
||||
6018,MER_ARCHER02,Dororu,30,457,70,10,228,114,11,7,1,18,8,1,40,11,10,0,0,7,20,150,700,432,300
|
||||
6019,MER_ARCHER03,Nami,40,732,93,10,260,130,15,9,3,21,12,4,52,17,10,0,0,7,20,150,700,432,300
|
||||
6020,MER_ARCHER04,Elfin,50,1092,116,10,310,155,18,11,5,33,17,6,60,23,10,0,0,7,20,150,575,432,300
|
||||
6021,MER_ARCHER05,Clara,60,2212,280,10,360,180,20,13,5,41,17,12,75,30,10,0,0,7,20,150,575,432,300
|
||||
6022,MER_ARCHER06,Dali,70,3098,353,10,424,212,21,15,11,46,24,22,83,37,10,0,0,7,20,150,575,432,300
|
||||
6023,MER_ARCHER07,Karaya,80,4051,415,10,468,234,22,16,14,55,27,26,91,44,10,0,0,7,20,150,450,432,300
|
||||
6024,MER_ARCHER08,Hiyori,90,5039,469,10,482,241,24,18,19,65,27,27,103,49,10,0,0,7,20,150,450,432,300
|
||||
6025,MER_ARCHER09,Kero,95,5572,499,10,500,250,25,20,20,71,27,28,110,51,10,0,0,7,20,150,450,432,300
|
||||
6026,MER_ARCHER10,Sukye,99,7381,642,10,816,308,49,49,21,83,27,28,123,52,10,0,0,7,20,150,450,432,300
|
||||
6027,MER_LANCER01,David,22,2071,100,2,168,84,30,1,27,1,4,1,30,2,10,0,0,7,20,150,700,432,300
|
||||
6028,MER_LANCER02,Ellen,34,2523,131,2,208,104,33,1,37,1,4,1,37,4,10,0,0,7,20,150,700,432,300
|
||||
6029,MER_LANCER03,Luise,41,3397,161,2,248,124,36,5,45,1,22,1,40,6,10,0,0,7,20,150,700,432,300
|
||||
6030,MER_LANCER04,Frank,55,4580,191,2,300,150,39,5,55,2,35,1,50,8,10,0,0,7,20,150,575,432,300
|
||||
6031,MER_LANCER05,Ryan,60,5899,221,2,350,160,42,10,65,2,39,1,60,10,10,0,0,7,20,150,575,432,300
|
||||
6032,MER_LANCER06,Paolo,72,7874,252,2,370,185,46,10,75,3,15,77,61,12,10,0,0,7,20,150,575,432,300
|
||||
6033,MER_LANCER07,Jens,81,10260,330,2,380,190,50,15,85,3,63,20,61,14,10,0,0,7,20,150,450,432,300
|
||||
6034,MER_LANCER08,Thierry,90,13167,366,2,400,200,55,20,95,20,74,20,63,16,10,0,0,7,20,150,450,432,300
|
||||
6035,MER_LANCER09,Steven,95,14648,398,2,440,220,60,25,100,25,77,25,63,18,10,0,0,7,20,150,450,432,300
|
||||
6036,MER_LANCER10,Wayne,99,18000,413,2,700,250,70,30,120,30,90,30,70,30,10,0,0,7,20,150,450,432,300
|
||||
6037,MER_SWORDMAN01,Rodin,20,502,70,2,174,87,26,0,21,27,5,1,30,3,10,0,0,7,20,150,700,432,300
|
||||
6038,MER_SWORDMAN02,Lancer,30,979,99,2,258,129,31,0,26,38,6,1,35,3,10,0,0,7,20,150,700,432,300
|
||||
6039,MER_SWORDMAN03,Nathan,40,1555,134,2,326,163,36,3,31,45,7,6,40,6,10,0,0,7,20,150,700,432,300
|
||||
6040,MER_SWORDMAN04,Roan,50,2397,162,2,382,191,39,5,37,59,8,6,40,6,10,0,0,7,20,150,575,432,300
|
||||
6041,MER_SWORDMAN05,Orizaro,60,3387,195,2,406,203,42,7,48,68,9,6,45,9,10,0,0,7,20,150,575,432,300
|
||||
6042,MER_SWORDMAN06,Thyla,70,4495,241,2,436,218,45,12,53,79,10,12,50,9,10,0,0,7,20,150,575,432,300
|
||||
6043,MER_SWORDMAN07,Ben,80,5889,279,2,468,234,47,15,59,88,11,12,55,12,10,0,0,7,20,150,450,432,300
|
||||
6044,MER_SWORDMAN08,Pinaka,90,7520,325,2,500,250,49,18,70,95,12,18,60,15,10,0,0,7,20,150,450,432,300
|
||||
6045,MER_SWORDMAN09,Kuhlmann,95,9052,348,2,524,262,51,22,80,95,18,18,60,15,10,0,0,7,20,150,450,432,300
|
||||
6046,MER_SWORDMAN10,Roux,99,12355,451,2,760,280,64,30,99,105,30,30,60,30,10,0,0,7,20,150,450,432,300
|
||||
|
@ -1,118 +1,118 @@
|
||||
//MercenryID,SkillID,SkillLevel
|
||||
// Archer Mercenaries Level 1-10.
|
||||
// MER_ARCHER01
|
||||
6017,8207,2 //MA_DOUBLE
|
||||
6017,8233,1 //MER_AUTOBERSERK
|
||||
// MER_ARCHER02
|
||||
6018,8208,2 //MA_SHOWER
|
||||
6018,8224,1 //MER_SIGHT
|
||||
// MER_ARCHER03
|
||||
6019,8214,1 //MA_CHARGEARROW
|
||||
6019,8223,1 //MER_QUICKEN
|
||||
// MER_ARCHER04
|
||||
6020,8237,1 //MER_ESTIMATION
|
||||
6020,8222,1 //MER_MAGNIFICAT
|
||||
6020,8227,1 //MER_TENDER
|
||||
// MER_ARCHER05
|
||||
6021,8207,5 //MA_DOUBLE
|
||||
6021,8232,1 //MER_PROVOKE
|
||||
6021,8213,1 //MA_REMOVETRAP
|
||||
// MER_ARCHER06
|
||||
6022,8207,7 //MA_DOUBLE
|
||||
6022,8209,3 //MA_SKIDTRAP
|
||||
6022,8234,1 //MER_DECAGI
|
||||
// MER_ARCHER07
|
||||
6023,8208,10 //MA_SHOWER
|
||||
6023,8230,1 //MER_MENTALCURE
|
||||
6023,8212,2 //MA_FREEZINGTRAP
|
||||
// MER_ARCHER08
|
||||
6024,8223,2 //MER_QUICKEN
|
||||
6024,8232,3 //MER_PROVOKE
|
||||
6024,8211,3 //MA_SANDMAN
|
||||
// MER_ARCHER09
|
||||
6025,8207,10 //MA_DOUBLE
|
||||
6025,8214,1 //MA_CHARGEARROW
|
||||
6025,8210,5 //MA_LANDMINE
|
||||
// MER_ARCHER10
|
||||
6026,8214,1 //MA_CHARGEARROW
|
||||
6026,8215,5 //MA_SHARPSHOOTING
|
||||
6026,8223,5 //MER_QUICKEN
|
||||
6026,8233,1 //MER_AUTOBERSERK
|
||||
// Lancer Mercenaries Level 1-10.
|
||||
// MER_LANCER01
|
||||
6027,8216,1 //ML_PIERCE
|
||||
6027,8226,1 //MER_REGAIN
|
||||
// MER_LANCER02
|
||||
6028,8217,2 //ML_BRANDISH
|
||||
6028,8236,1 //MER_LEXDIVINA
|
||||
// MER_LANCER03
|
||||
6029,8216,2 //ML_PIERCE
|
||||
6029,8221,1 //ML_DEVOTION
|
||||
6029,8229,1 //MER_RECUPERATE
|
||||
// MER_LANCER04
|
||||
6030,8219,1 //ML_DEFENDER
|
||||
6030,8225,4 //MER_CRASH
|
||||
// MER_LANCER05
|
||||
6031,8216,5 //ML_PIERCE
|
||||
6031,8220,3 //ML_AUTOGUARD
|
||||
// MER_LANCER06
|
||||
6032,8223,2 //MER_QUICKEN
|
||||
6032,8217,5 //ML_BRANDISH
|
||||
// MER_LANCER07
|
||||
6033,8221,1 //ML_DEVOTION
|
||||
6033,8233,1 //MER_AUTOBERSERK
|
||||
// MER_LANCER08
|
||||
6034,8235,1 //MER_SCAPEGOAT
|
||||
6034,8216,10 //ML_PIERCE
|
||||
6034,8232,5 //MER_PROVOKE
|
||||
// MER_LANCER09
|
||||
6035,8217,10 //ML_BRANDISH
|
||||
6035,8220,7 //ML_AUTOGUARD
|
||||
6035,8219,3 //ML_DEFENDER
|
||||
// MER_LANCER10
|
||||
6036,8223,5 //MER_QUICKEN
|
||||
6036,8220,10 //ML_AUTOGUARD
|
||||
6036,8221,3 //ML_DEVOTION
|
||||
6036,8218,5 //ML_SPIRALPIERCE
|
||||
// Swordman Mercenaries Level 1-10.
|
||||
// MER_SWORDMAN01
|
||||
6037,8201,1 //MS_BASH
|
||||
6037,8234,1 //MER_DECAGI
|
||||
// MER_SWORDMAN02
|
||||
6038,8232,5 //MER_PROVOKE
|
||||
6038,8202,3 //MS_MAGNUM
|
||||
// MER_SWORDMAN03
|
||||
6039,8223,1 //MER_QUICKEN
|
||||
6039,8228,1 //MER_BENEDICTION
|
||||
// MER_SWORDMAN04
|
||||
6040,8225,1 //MER_CRASH
|
||||
6040,8202,5 //MS_MAGNUM
|
||||
// MER_SWORDMAN05
|
||||
6041,8201,5 //MS_BASH
|
||||
6041,8225,4 //MER_CRASH
|
||||
6041,8228,1 //MER_BENEDICTION
|
||||
// MER_SWORDMAN06
|
||||
6042,8223,5 //MER_QUICKEN
|
||||
6042,8237,1 //MER_ESTIMATION
|
||||
6042,8234,3 //MER_DECAGI
|
||||
// MER_SWORDMAN07
|
||||
6043,8201,10 //MS_BASH
|
||||
6043,8233,1 //MER_AUTOBERSERK
|
||||
6043,8235,1 //MER_SCAPEGOAT
|
||||
// MER_SWORDMAN08
|
||||
6044,8223,10 //MER_QUICKEN
|
||||
6044,8203,5 //MS_BOWLINGABASH
|
||||
6044,8231,1 //MER_COMPRESS
|
||||
6044,8204,4 //MS_PARRYING
|
||||
// MER_SWORDMAN09
|
||||
6045,8203,8 //MS_BOWLINGABASH
|
||||
6045,8225,3 //MER_CRASH
|
||||
6045,8205,5 //MS_REFLECTSHIELD
|
||||
// MER_SWORDMAN10
|
||||
6046,8223,10 //MER_QUICKEN
|
||||
6046,8203,10 //MS_BOWLINGABASH
|
||||
6046,8201,10 //MS_BASH
|
||||
6046,8206,1 //MS_BERSERK
|
||||
// Monster Mercenaries
|
||||
// Wild Rose
|
||||
1965,8201,5 //MS_BASH
|
||||
//MercenryID,SkillID,SkillLevel
|
||||
// Archer Mercenaries Level 1-10.
|
||||
// MER_ARCHER01
|
||||
6017,8207,2 //MA_DOUBLE
|
||||
6017,8233,1 //MER_AUTOBERSERK
|
||||
// MER_ARCHER02
|
||||
6018,8208,2 //MA_SHOWER
|
||||
6018,8224,1 //MER_SIGHT
|
||||
// MER_ARCHER03
|
||||
6019,8214,1 //MA_CHARGEARROW
|
||||
6019,8223,1 //MER_QUICKEN
|
||||
// MER_ARCHER04
|
||||
6020,8237,1 //MER_ESTIMATION
|
||||
6020,8222,1 //MER_MAGNIFICAT
|
||||
6020,8227,1 //MER_TENDER
|
||||
// MER_ARCHER05
|
||||
6021,8207,5 //MA_DOUBLE
|
||||
6021,8232,1 //MER_PROVOKE
|
||||
6021,8213,1 //MA_REMOVETRAP
|
||||
// MER_ARCHER06
|
||||
6022,8207,7 //MA_DOUBLE
|
||||
6022,8209,3 //MA_SKIDTRAP
|
||||
6022,8234,1 //MER_DECAGI
|
||||
// MER_ARCHER07
|
||||
6023,8208,10 //MA_SHOWER
|
||||
6023,8230,1 //MER_MENTALCURE
|
||||
6023,8212,2 //MA_FREEZINGTRAP
|
||||
// MER_ARCHER08
|
||||
6024,8223,2 //MER_QUICKEN
|
||||
6024,8232,3 //MER_PROVOKE
|
||||
6024,8211,3 //MA_SANDMAN
|
||||
// MER_ARCHER09
|
||||
6025,8207,10 //MA_DOUBLE
|
||||
6025,8214,1 //MA_CHARGEARROW
|
||||
6025,8210,5 //MA_LANDMINE
|
||||
// MER_ARCHER10
|
||||
6026,8214,1 //MA_CHARGEARROW
|
||||
6026,8215,5 //MA_SHARPSHOOTING
|
||||
6026,8223,5 //MER_QUICKEN
|
||||
6026,8233,1 //MER_AUTOBERSERK
|
||||
// Lancer Mercenaries Level 1-10.
|
||||
// MER_LANCER01
|
||||
6027,8216,1 //ML_PIERCE
|
||||
6027,8226,1 //MER_REGAIN
|
||||
// MER_LANCER02
|
||||
6028,8217,2 //ML_BRANDISH
|
||||
6028,8236,1 //MER_LEXDIVINA
|
||||
// MER_LANCER03
|
||||
6029,8216,2 //ML_PIERCE
|
||||
6029,8221,1 //ML_DEVOTION
|
||||
6029,8229,1 //MER_RECUPERATE
|
||||
// MER_LANCER04
|
||||
6030,8219,1 //ML_DEFENDER
|
||||
6030,8225,4 //MER_CRASH
|
||||
// MER_LANCER05
|
||||
6031,8216,5 //ML_PIERCE
|
||||
6031,8220,3 //ML_AUTOGUARD
|
||||
// MER_LANCER06
|
||||
6032,8223,2 //MER_QUICKEN
|
||||
6032,8217,5 //ML_BRANDISH
|
||||
// MER_LANCER07
|
||||
6033,8221,1 //ML_DEVOTION
|
||||
6033,8233,1 //MER_AUTOBERSERK
|
||||
// MER_LANCER08
|
||||
6034,8235,1 //MER_SCAPEGOAT
|
||||
6034,8216,10 //ML_PIERCE
|
||||
6034,8232,5 //MER_PROVOKE
|
||||
// MER_LANCER09
|
||||
6035,8217,10 //ML_BRANDISH
|
||||
6035,8220,7 //ML_AUTOGUARD
|
||||
6035,8219,3 //ML_DEFENDER
|
||||
// MER_LANCER10
|
||||
6036,8223,5 //MER_QUICKEN
|
||||
6036,8220,10 //ML_AUTOGUARD
|
||||
6036,8221,3 //ML_DEVOTION
|
||||
6036,8218,5 //ML_SPIRALPIERCE
|
||||
// Swordman Mercenaries Level 1-10.
|
||||
// MER_SWORDMAN01
|
||||
6037,8201,1 //MS_BASH
|
||||
6037,8234,1 //MER_DECAGI
|
||||
// MER_SWORDMAN02
|
||||
6038,8232,5 //MER_PROVOKE
|
||||
6038,8202,3 //MS_MAGNUM
|
||||
// MER_SWORDMAN03
|
||||
6039,8223,1 //MER_QUICKEN
|
||||
6039,8228,1 //MER_BENEDICTION
|
||||
// MER_SWORDMAN04
|
||||
6040,8225,1 //MER_CRASH
|
||||
6040,8202,5 //MS_MAGNUM
|
||||
// MER_SWORDMAN05
|
||||
6041,8201,5 //MS_BASH
|
||||
6041,8225,4 //MER_CRASH
|
||||
6041,8228,1 //MER_BENEDICTION
|
||||
// MER_SWORDMAN06
|
||||
6042,8223,5 //MER_QUICKEN
|
||||
6042,8237,1 //MER_ESTIMATION
|
||||
6042,8234,3 //MER_DECAGI
|
||||
// MER_SWORDMAN07
|
||||
6043,8201,10 //MS_BASH
|
||||
6043,8233,1 //MER_AUTOBERSERK
|
||||
6043,8235,1 //MER_SCAPEGOAT
|
||||
// MER_SWORDMAN08
|
||||
6044,8223,10 //MER_QUICKEN
|
||||
6044,8203,5 //MS_BOWLINGABASH
|
||||
6044,8231,1 //MER_COMPRESS
|
||||
6044,8204,4 //MS_PARRYING
|
||||
// MER_SWORDMAN09
|
||||
6045,8203,8 //MS_BOWLINGABASH
|
||||
6045,8225,3 //MER_CRASH
|
||||
6045,8205,5 //MS_REFLECTSHIELD
|
||||
// MER_SWORDMAN10
|
||||
6046,8223,10 //MER_QUICKEN
|
||||
6046,8203,10 //MS_BOWLINGABASH
|
||||
6046,8201,10 //MS_BASH
|
||||
6046,8206,1 //MS_BERSERK
|
||||
// Monster Mercenaries
|
||||
// Wild Rose
|
||||
1965,8201,5 //MS_BASH
|
||||
|
@ -1,67 +1,67 @@
|
||||
//===== Athena Doc ========================================
|
||||
//= eAthena Map Cache Builder and Format Documentation
|
||||
//===== By ================================================
|
||||
//= DracoRPG
|
||||
//===== Version ===========================================
|
||||
//= 1.0
|
||||
//=========================================================
|
||||
//= 0.1 - Short howto for the initial builder version
|
||||
//= 1.0 - Complete manual covering the improved version
|
||||
//===== Description =======================================
|
||||
//= A complete manual for eAthena's map cache generator
|
||||
//= as well as a reference on the map cache format used
|
||||
//=========================================================
|
||||
|
||||
Preface:
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Since SVN revision ~10000, the map-server does not know how to read RO client files anymore. It reads maps from a
|
||||
"map cache" file that contains all and only the useful data about the maps. A map cache containing every official
|
||||
kRO Sakray map currently supported by eAthena is provided as a default.
|
||||
If you have custom maps or want to minimize the size of your map cache because your server does not load all of them
|
||||
(multi-map-server or light test server), you can use the map cache builder to generate a new one fitting your needs.
|
||||
|
||||
Map cache builder manual:
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
The source code for the map cache builder is located in src/tool/. It can be built using "make tools" if you use the Makefile
|
||||
or using the "mapcache" project under Visual Studio. Named "mapcache", the executable will be in your eAthena main folder.
|
||||
The map cache builder needs 3 file paths : one is a list of GRFs and/or data directory containing the maps, the second
|
||||
is the list of maps to add to the map cache, and the last one is the path of the map cache to generate. Default values for
|
||||
those paths are "tools/mapcache/grf_files.txt", "db/map_index.txt" and "db/map_cache.dat".
|
||||
The list of GRF and/or data directory must follow the format and indication of the default file: as many "grf:" entries as
|
||||
you wish and optionally one only "data_dir:" entry with trailing backslash included. // comments are supported as usual.
|
||||
In fact, any file with one map name per line can be used as a map list, that's why the map index list is used as a default:
|
||||
we are sure it contains every map supported by the server. Anything after the map name is ignored, // comments are supported
|
||||
and if the first word on the line is "map:" then the second word is used as the map name instead: that allows using
|
||||
maps_athena.conf as your map list, which is handy if you want to generate a minimal map cache for each of your multiple
|
||||
map-servers.
|
||||
The map cache file path can point to an already existing file, as the builder adds a map only if it's not already cached.
|
||||
This way, you can add custom maps to the base map cache without even needing kRO Sakray maps. If you wish to rebuild the
|
||||
entire map cache, though, you can either provide a path to a non-existing file, or force the rebuild mode.
|
||||
|
||||
Here are the command-line arguments you can provide to the map cache builder to customize its behavior:
|
||||
-grf path/to/grf/list
|
||||
Allows to specify the file containing the list of GRFs and/or data directory
|
||||
-list path/to/map/list
|
||||
Allows to specify the file containing the list of maps to add to the map cache
|
||||
-cache path/to/map/cache
|
||||
Allows to specify the path to the generated map cache
|
||||
-rebuild
|
||||
Allows to force the rebuild mode (map cache will be overwritten even if it already exists)
|
||||
|
||||
|
||||
Map cache format reference:
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
The file is written as little-endian, even on big-endian systems, for cross-compatibility reasons. Appropriate conversions
|
||||
are done when generating it, so don't worry about it.
|
||||
The first 6 bytes are a main header:
|
||||
<unsigned long> file size
|
||||
<unsigned short> number of maps
|
||||
Then maps are stored one right after another:
|
||||
<12-characters-long string> map name
|
||||
<short> X size
|
||||
<short> Y size
|
||||
<long> compressed cell data length
|
||||
<variable> compressed cell data
|
||||
//===== Athena Doc ========================================
|
||||
//= eAthena Map Cache Builder and Format Documentation
|
||||
//===== By ================================================
|
||||
//= DracoRPG
|
||||
//===== Version ===========================================
|
||||
//= 1.0
|
||||
//=========================================================
|
||||
//= 0.1 - Short howto for the initial builder version
|
||||
//= 1.0 - Complete manual covering the improved version
|
||||
//===== Description =======================================
|
||||
//= A complete manual for eAthena's map cache generator
|
||||
//= as well as a reference on the map cache format used
|
||||
//=========================================================
|
||||
|
||||
Preface:
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Since SVN revision ~10000, the map-server does not know how to read RO client files anymore. It reads maps from a
|
||||
"map cache" file that contains all and only the useful data about the maps. A map cache containing every official
|
||||
kRO Sakray map currently supported by eAthena is provided as a default.
|
||||
If you have custom maps or want to minimize the size of your map cache because your server does not load all of them
|
||||
(multi-map-server or light test server), you can use the map cache builder to generate a new one fitting your needs.
|
||||
|
||||
Map cache builder manual:
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
The source code for the map cache builder is located in src/tool/. It can be built using "make tools" if you use the Makefile
|
||||
or using the "mapcache" project under Visual Studio. Named "mapcache", the executable will be in your eAthena main folder.
|
||||
The map cache builder needs 3 file paths : one is a list of GRFs and/or data directory containing the maps, the second
|
||||
is the list of maps to add to the map cache, and the last one is the path of the map cache to generate. Default values for
|
||||
those paths are "tools/mapcache/grf_files.txt", "db/map_index.txt" and "db/map_cache.dat".
|
||||
The list of GRF and/or data directory must follow the format and indication of the default file: as many "grf:" entries as
|
||||
you wish and optionally one only "data_dir:" entry with trailing backslash included. // comments are supported as usual.
|
||||
In fact, any file with one map name per line can be used as a map list, that's why the map index list is used as a default:
|
||||
we are sure it contains every map supported by the server. Anything after the map name is ignored, // comments are supported
|
||||
and if the first word on the line is "map:" then the second word is used as the map name instead: that allows using
|
||||
maps_athena.conf as your map list, which is handy if you want to generate a minimal map cache for each of your multiple
|
||||
map-servers.
|
||||
The map cache file path can point to an already existing file, as the builder adds a map only if it's not already cached.
|
||||
This way, you can add custom maps to the base map cache without even needing kRO Sakray maps. If you wish to rebuild the
|
||||
entire map cache, though, you can either provide a path to a non-existing file, or force the rebuild mode.
|
||||
|
||||
Here are the command-line arguments you can provide to the map cache builder to customize its behavior:
|
||||
-grf path/to/grf/list
|
||||
Allows to specify the file containing the list of GRFs and/or data directory
|
||||
-list path/to/map/list
|
||||
Allows to specify the file containing the list of maps to add to the map cache
|
||||
-cache path/to/map/cache
|
||||
Allows to specify the path to the generated map cache
|
||||
-rebuild
|
||||
Allows to force the rebuild mode (map cache will be overwritten even if it already exists)
|
||||
|
||||
|
||||
Map cache format reference:
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
The file is written as little-endian, even on big-endian systems, for cross-compatibility reasons. Appropriate conversions
|
||||
are done when generating it, so don't worry about it.
|
||||
The first 6 bytes are a main header:
|
||||
<unsigned long> file size
|
||||
<unsigned short> number of maps
|
||||
Then maps are stored one right after another:
|
||||
<12-characters-long string> map name
|
||||
<short> X size
|
||||
<short> Y size
|
||||
<long> compressed cell data length
|
||||
<variable> compressed cell data
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,453 +1,453 @@
|
||||
// ==============================================================================
|
||||
// BattleGround System - Flavius 1
|
||||
// ==============================================================================
|
||||
|
||||
// Registration NPC's
|
||||
// *********************************************************************
|
||||
|
||||
bat_room,253,97,4 script Registration::Fl1R_Guillaume 418,{
|
||||
end;
|
||||
OnInit:
|
||||
waitingroom "Battle Station 10 Players",10,"Flavius_BG1::OnGuillaumeJoin",1;
|
||||
end;
|
||||
OnEnterBG:
|
||||
set $@FlaviusBG1_id1, waitingroom2bg("bat_b01",390,10,"Flavius_BG1::OnGuillaumeQuit","");
|
||||
end;
|
||||
}
|
||||
|
||||
bat_room,253,74,0 script Registration::Fl1R_Croix 414,{
|
||||
end;
|
||||
OnInit:
|
||||
waitingroom "Battle Station 10 Players",10,"Flavius_BG1::OnCroixJoin",1;
|
||||
end;
|
||||
OnEnterBG:
|
||||
set $@FlaviusBG1_id2, waitingroom2bg("bat_b01",10,290,"Flavius_BG1::OnCroixQuit","");
|
||||
end;
|
||||
}
|
||||
|
||||
// Battleground Engine
|
||||
// *********************************************************************
|
||||
|
||||
- script Flavius_BG1 -1,{
|
||||
end;
|
||||
|
||||
OnInit:
|
||||
disablenpc "Guillaume Vintenar#fl1";
|
||||
disablenpc "Croix Vintenar#fl1";
|
||||
disablenpc "Therapist in battle#fl11";
|
||||
disablenpc "Therapist in battle#fl12";
|
||||
end;
|
||||
|
||||
OnGuillaumeQuit:
|
||||
OnCroixQuit:
|
||||
set BG_Delay_Tick, gettimetick(2) + 1200;
|
||||
end;
|
||||
|
||||
OnGuillaumeJoin:
|
||||
OnCroixJoin:
|
||||
if( $@FlaviusBG1 == 0 )
|
||||
donpcevent "Flavius_BG1::OnReadyCheck";
|
||||
end;
|
||||
|
||||
OnReadyCheck:
|
||||
if( $@FlaviusBG1 )
|
||||
end;
|
||||
set .@Guillaume, getwaitingroomstate(0,"Fl1R_Guillaume");
|
||||
set .@Croix, getwaitingroomstate(0,"Fl1R_Croix");
|
||||
|
||||
if( .@Guillaume < 10 || .@Croix < 10 )
|
||||
{
|
||||
mapannounce "bat_room","Battleground -- Flavius [80-99] G: " + .@Guillaume + "/10, C: " + .@Croix + "/10",1,0x006400;
|
||||
end;
|
||||
}
|
||||
|
||||
// BG Variables
|
||||
set $@FlaviusBG1, 1;
|
||||
set $@FlaviusBG1_Victory, 0;
|
||||
set .Guillaume_Score, 0;
|
||||
set .Guillaume_Loss, 0;
|
||||
set .Croix_Score, 0;
|
||||
set .Croix_Loss, 0;
|
||||
set .Match, 0;
|
||||
// Prepare NPC
|
||||
donpcevent "#gfl1_respawn::OnBGStart";
|
||||
donpcevent "#cfl1_respawn::OnBGStart";
|
||||
enablenpc "Therapist in battle#fl11";
|
||||
enablenpc "Therapist in battle#fl12";
|
||||
disablenpc "Guillaume Vintenar#fl1";
|
||||
disablenpc "Croix Vintenar#fl1";
|
||||
// Build and Warp Teams
|
||||
donpcevent "Fl1R_Guillaume::OnEnterBG";
|
||||
donpcevent "Fl1R_Croix::OnEnterBG";
|
||||
announce "Battleground -- Flavius [80-99] has started!",0,0x006400;
|
||||
initnpctimer;
|
||||
// Start Match!!
|
||||
|
||||
OnRoundStart:
|
||||
sleep 2000;
|
||||
if( $@FlaviusBG1 != 1 ) end;
|
||||
|
||||
areapercentheal "bat_b01",382,2,397,17,100,100;
|
||||
areapercentheal "bat_b01",2,282,17,297,100,100;
|
||||
bg_warp $@FlaviusBG1_id1,"bat_b01",311,224;
|
||||
bg_warp $@FlaviusBG1_id2,"bat_b01",87,75;
|
||||
|
||||
sleep 2000;
|
||||
if( $@FlaviusBG1 != 1 ) end;
|
||||
|
||||
set .Match, .Match + 1;
|
||||
// Crystal Spawn
|
||||
set .Guillaume_Crystal, bg_monster($@FlaviusBG1_id1,"bat_b01",328,150,"Crystal Guillaume",1914,"Flavius_BG1::OnGuillaumeBreak");
|
||||
setwall "bat_b01",327,149,2,6,0,"gui_wall1-1";
|
||||
setwall "bat_b01",329,149,2,0,0,"gui_wall1-2";
|
||||
setwall "bat_b01",329,151,2,2,0,"gui_wall1-3";
|
||||
setwall "bat_b01",327,151,2,4,0,"gui_wall1-4";
|
||||
|
||||
set .Croix_Crystal, bg_monster($@FlaviusBG1_id2,"bat_b01",62,150,"Crystal Croix",1915,"Flavius_BG1::OnCroixBreak");
|
||||
setwall "bat_b01",61,149,2,6,0,"cro_wall1-1";
|
||||
setwall "bat_b01",63,149,2,0,0,"cro_wall1-2";
|
||||
setwall "bat_b01",63,151,2,2,0,"cro_wall1-3";
|
||||
setwall "bat_b01",61,151,2,4,0,"cro_wall1-4";
|
||||
|
||||
// Guardian Spawns
|
||||
bg_monster $@FlaviusBG1_id1,"bat_b01",328,160,"Guillaume Guardian",1949,"Flavius_BG1::OnGuiGuardian";
|
||||
bg_monster $@FlaviusBG1_id1,"bat_b01",328,140,"Guillaume Guardian",1950,"Flavius_BG1::OnGuiGuardian";
|
||||
set .Guillaume_Guardian, 2;
|
||||
bg_monster $@FlaviusBG1_id2,"bat_b01",62,160,"Croix Guardian",1949,"Flavius_BG1::OnCroGuardian";
|
||||
bg_monster $@FlaviusBG1_id2,"bat_b01",61,140,"Croix Guardian",1950,"Flavius_BG1::OnCroGuardian";
|
||||
set .Croix_Guardian, 2;
|
||||
// Announces
|
||||
mapannounce "bat_b01","The Battle of Flavius [ " + .Match + " ] Round has begun!!",1,0x006400;
|
||||
end;
|
||||
|
||||
OnRoundStop:
|
||||
// Remove Monsters
|
||||
killmonster "bat_b01","Flavius_BG1::OnGuiGuardian";
|
||||
killmonster "bat_b01","Flavius_BG1::OnCroGuardian";
|
||||
delwall "gui_wall1-1";
|
||||
delwall "gui_wall1-2";
|
||||
delwall "gui_wall1-3";
|
||||
delwall "gui_wall1-4";
|
||||
killmonster "bat_b01","Flavius_BG1::OnGuillaumeBreak";
|
||||
delwall "cro_wall1-1";
|
||||
delwall "cro_wall1-2";
|
||||
delwall "cro_wall1-3";
|
||||
delwall "cro_wall1-4";
|
||||
killmonster "bat_b01","Flavius_BG1::OnCroixBreak";
|
||||
end;
|
||||
|
||||
OnGuiGuardian:
|
||||
if( set(.Guillaume_Guardian, .Guillaume_Guardian - 1) <= 0 )
|
||||
{
|
||||
delwall "gui_wall1-1";
|
||||
delwall "gui_wall1-2";
|
||||
delwall "gui_wall1-3";
|
||||
delwall "gui_wall1-4";
|
||||
mapannounce "bat_b01","The Guillaume Crystal is vulnerable to attack!",1,0x0000FF;
|
||||
}
|
||||
end;
|
||||
|
||||
OnCroGuardian:
|
||||
if( set(.Croix_Guardian, .Croix_Guardian - 1) <= 0 )
|
||||
{
|
||||
delwall "cro_wall1-1";
|
||||
delwall "cro_wall1-2";
|
||||
delwall "cro_wall1-3";
|
||||
delwall "cro_wall1-4";
|
||||
mapannounce "bat_b01","The Croix Crystal is vulnerable to attack!",1,0xFF0000;
|
||||
}
|
||||
end;
|
||||
|
||||
OnGuillaumeBreak:
|
||||
donpcevent "Flavius_BG1::OnRoundStop";
|
||||
set .Guillaume_Loss, .Guillaume_Loss + 1;
|
||||
if( set(.Croix_Score, .Croix_Score + 1) < 2 )
|
||||
{
|
||||
bg_updatescore "bat_b01",.Guillaume_Score,.Croix_Score;
|
||||
mapannounce "bat_b01","The Guillaume Crystal has been destroyed!",1,0x0000FF;
|
||||
donpcevent "Flavius_BG1::OnRoundStart";
|
||||
}
|
||||
else
|
||||
{
|
||||
bg_updatescore "bat_b01",.Guillaume_Score,.Croix_Score;
|
||||
mapannounce "bat_b01","The Croix army has won the Battle of Flavius!",1,0xFF0000;
|
||||
set $@FlaviusBG1_Victory, 2;
|
||||
donpcevent "Flavius_BG1::OnMatchEnd";
|
||||
}
|
||||
end;
|
||||
|
||||
OnCroixBreak:
|
||||
donpcevent "Flavius_BG1::OnRoundStop";
|
||||
set .Croix_Loss, .Croix_Loss + 1;
|
||||
if( set(.Guillaume_Score, .Guillaume_Score + 1) < 2 )
|
||||
{
|
||||
bg_updatescore "bat_b01",.Guillaume_Score,.Croix_Score;
|
||||
mapannounce "bat_b01","The Croix Crystal has been destroyed!",1,0xFF0000;
|
||||
donpcevent "Flavius_BG1::OnRoundStart";
|
||||
}
|
||||
else
|
||||
{
|
||||
bg_updatescore "bat_b01",.Guillaume_Score,.Croix_Score;
|
||||
mapannounce "bat_b01","The Guillaume army has won the Battle of Flavius!",1,0x0000FF;
|
||||
set $@FlaviusBG1_Victory, 1;
|
||||
donpcevent "Flavius_BG1::OnMatchEnd";
|
||||
}
|
||||
end;
|
||||
|
||||
OnTimer2400000:
|
||||
mapannounce "bat_b01","Battle of Flavius will ends in 5 minutes",1,0x006400;
|
||||
end;
|
||||
OnTimer2640000:
|
||||
mapannounce "bat_b01","Battle of Flavius will ends in 1 minute",1,0x006400;
|
||||
end;
|
||||
|
||||
OnTimer2700000:
|
||||
if( .Croix_Score > .Guillaume_Score )
|
||||
{
|
||||
mapannounce "bat_b01","The Croix army has won the Battle of Flavius!",1,0xFF0000;
|
||||
set $@FlaviusBG1_Victory, 2;
|
||||
}
|
||||
else if( .Croix_Score < .Guillaume_Score )
|
||||
{
|
||||
mapannounce "bat_b01","The Guillaume army has won the Battle of Flavius!",1,0x0000FF;
|
||||
set $@FlaviusBG1_Victory, 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
mapannounce "bat_b01","The Battle of Flavius is over. The time is out, this is a Tie",1,0x006400;
|
||||
set $@FlaviusBG1_Victory, 3;
|
||||
}
|
||||
|
||||
OnMatchEnd:
|
||||
set $@FlaviusBG1, 2;
|
||||
stopnpctimer;
|
||||
donpcevent "#gfl1_respawn::OnBGStop";
|
||||
donpcevent "#cfl1_respawn::OnBGStop";
|
||||
disablenpc "Therapist in battle#fl11";
|
||||
disablenpc "Therapist in battle#fl12";
|
||||
enablenpc "Guillaume Vintenar#fl1";
|
||||
enablenpc "Croix Vintenar#fl1";
|
||||
sleep 2000;
|
||||
bg_warp $@FlaviusBG1_id1,"bat_b01",390,10;
|
||||
bg_warp $@FlaviusBG1_id2,"bat_b01",10,290;
|
||||
sleep 3000;
|
||||
mapannounce "bat_b01","Battle of Flavius will close in 1 minute!",1,0x006400;
|
||||
initnpctimer;
|
||||
end;
|
||||
|
||||
OnTimer30000:
|
||||
if( $@FlaviusBG1 == 2 )
|
||||
mapannounce "bat_b01","Battle of Flavius will close in 30 seconds!",1,0x006400;
|
||||
end;
|
||||
OnTimer50000:
|
||||
if( $@FlaviusBG1 == 2 )
|
||||
mapannounce "bat_b01","Battle of Flavius will close in 10 seconds!",1,0x006400;
|
||||
end;
|
||||
|
||||
OnTimer60000:
|
||||
if( $@FlaviusBG1 != 2 )
|
||||
end;
|
||||
OnReset:
|
||||
stopnpctimer;
|
||||
donpcevent "Flavius_BG1::OnRoundStop";
|
||||
set .Guillaume_Score, 0;
|
||||
set .Guillaume_Crystal, 0;
|
||||
set .Guillaume_Loss, 0;
|
||||
set .Croix_Score, 0;
|
||||
set .Croix_Crystal, 0;
|
||||
set .Croix_Loss, 0;
|
||||
set .Match, 0;
|
||||
set $@FlaviusBG1_Victory, 0;
|
||||
// NPC's
|
||||
disablenpc "Guillaume Vintenar#fl1";
|
||||
disablenpc "Croix Vintenar#fl1";
|
||||
disablenpc "Therapist in battle#fl11";
|
||||
disablenpc "Therapist in battle#fl12";
|
||||
|
||||
if( $@FlaviusBG1_id1 ) { bg_destroy $@FlaviusBG1_id1; set $@FlaviusBG1_id1, 0; }
|
||||
if( $@FlaviusBG1_id2 ) { bg_destroy $@FlaviusBG1_id2; set $@FlaviusBG1_id2, 0; }
|
||||
sleep 1000;
|
||||
mapwarp "bat_b01","bat_room",155,150;
|
||||
sleep 2000;
|
||||
maprespawnguildid "bat_b01",0,3; // Just in case someone else
|
||||
sleep 2000;
|
||||
bg_updatescore "bat_b01",0,0;
|
||||
set $@FlaviusBG1, 0;
|
||||
donpcevent "Flavius_BG1::OnReadyCheck";
|
||||
end;
|
||||
}
|
||||
|
||||
// Battleground rewards
|
||||
// *********************************************************************
|
||||
|
||||
bat_b01,390,13,5 script Guillaume Vintenar#fl1 419,{
|
||||
if( $@FlaviusBG1_Victory )
|
||||
{
|
||||
if( $@FlaviusBG1_Victory == Bat_Team )
|
||||
{ // Victory
|
||||
mes "[Swandery]";
|
||||
mes "Blessed Guillaume!!";
|
||||
mes "Let's enjoy our glorious victory!";
|
||||
mes "" + strcharinfo(0) + ", its a sign reflecting victory";
|
||||
close2;
|
||||
set .@Reward, 9;
|
||||
}
|
||||
else
|
||||
{ //
|
||||
mes "[Swandery]";
|
||||
mes "You lost, but you're dedicated to this battle.";
|
||||
mes "This is a reward for your great dedication by Guillaume Marollo!";
|
||||
mes "Just take this defeat a lesson, and later you would definitely learn.";
|
||||
close2;
|
||||
set .@Reward, 3;
|
||||
}
|
||||
|
||||
set Flavius_BG_Tick, gettimetick(2) + 300;
|
||||
getitem 7829, .@Reward;
|
||||
bg_leave;
|
||||
warp "bat_room",155,150;
|
||||
end;
|
||||
}
|
||||
end;
|
||||
}
|
||||
|
||||
bat_b01,10,293,5 script Croix Vintenar#fl1 415,{
|
||||
if( $@FlaviusBG1_Victory )
|
||||
{
|
||||
if( $@FlaviusBG1_Victory == Bat_Team )
|
||||
{ // Victory
|
||||
mes "[Swandery]";
|
||||
mes "Blessed Croax!!";
|
||||
mes "Let's enjoy our glorious victory!";
|
||||
mes "" + strcharinfo(0) + ", its a sign reflecting victory";
|
||||
close2;
|
||||
set .@Reward, 9;
|
||||
}
|
||||
else
|
||||
{ //
|
||||
mes "[Swandery]";
|
||||
mes "Oh, " + strcharinfo(0) + ". Don't be sad.";
|
||||
mes "Even though we didn't win, we did our best.";
|
||||
mes "This is a Royal gift from Croix, and please don't forget this battle. We can win the next.";
|
||||
close2;
|
||||
set .@Reward, 3;
|
||||
}
|
||||
|
||||
set Flavius_BG_Tick, gettimetick(2) + 300;
|
||||
getitem 7829, .@Reward;
|
||||
bg_leave;
|
||||
warp "bat_room",155,150;
|
||||
end;
|
||||
}
|
||||
end;
|
||||
}
|
||||
|
||||
// Battleground Therapist
|
||||
// *********************************************************************
|
||||
|
||||
bat_b01,390,13,5 script Therapist in battle#fl12 95,{
|
||||
mes "[Therapist in battle]";
|
||||
mes "Just close your eyes, and take a deep breathe.";
|
||||
mes "You can be free from pain.";
|
||||
specialeffect2 312;
|
||||
close;
|
||||
}
|
||||
|
||||
bat_b01,10,293,5 script Therapist in battle#fl11 95,{
|
||||
mes "[Therapist in battle]";
|
||||
mes "Just close your eyes, and take a deep breathe.";
|
||||
mes "You can be free from pain.";
|
||||
specialeffect2 312;
|
||||
close;
|
||||
}
|
||||
|
||||
// Battleground Respawn
|
||||
// *********************************************************************
|
||||
|
||||
bat_b01,390,10,0 script #gfl1_respawn 139,{
|
||||
end;
|
||||
|
||||
OnBGStart:
|
||||
initnpctimer;
|
||||
end;
|
||||
|
||||
OnBGStop:
|
||||
stopnpctimer;
|
||||
end;
|
||||
|
||||
OnTimer24000:
|
||||
misceffect 83;
|
||||
end;
|
||||
|
||||
OnTimer25000:
|
||||
areapercentheal "bat_b01",382,2,397,17,100,100;
|
||||
areawarp "bat_b01",382,2,397,17,"bat_b01",311,224;
|
||||
initnpctimer;
|
||||
end;
|
||||
}
|
||||
|
||||
bat_b01,10,290,0 script #cfl1_respawn 139,{
|
||||
end;
|
||||
|
||||
OnBGStart:
|
||||
initnpctimer;
|
||||
end;
|
||||
|
||||
OnBGStop:
|
||||
stopnpctimer;
|
||||
end;
|
||||
|
||||
OnTimer24000:
|
||||
misceffect 83;
|
||||
end;
|
||||
|
||||
OnTimer25000:
|
||||
areapercentheal "bat_b01",2,282,17,297,100,100;
|
||||
areawarp "bat_b01",2,282,17,297,"bat_b01",87,75;
|
||||
initnpctimer;
|
||||
end;
|
||||
}
|
||||
|
||||
// Flags
|
||||
// *********************************************************************
|
||||
|
||||
bat_b01,304,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat1 973
|
||||
bat_b01,319,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat2 973
|
||||
bat_b01,304,218,1 duplicate(Guillaume camp#bat) Guillaume camp#bat3 973
|
||||
bat_b01,319,218,1 duplicate(Guillaume camp#bat) Guillaume camp#bat4 973
|
||||
bat_b01,304,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat5 973
|
||||
bat_b01,304,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat6 973
|
||||
bat_b01,335,142,1 duplicate(Guillaume camp#bat) Guillaume camp#bat7 973
|
||||
bat_b01,335,157,1 duplicate(Guillaume camp#bat) Guillaume camp#bat8 973
|
||||
bat_b01,390,16,1 duplicate(Guillaume camp#bat) Guillaume camp#bat9 973
|
||||
bat_b01,292,163,1 duplicate(Guillaume camp#bat) Guillaume camp#bat19 973
|
||||
bat_b01,292,136,1 duplicate(Guillaume camp#bat) Guillaume camp#bat20 973
|
||||
bat_b01,241,185,1 duplicate(Guillaume camp#bat) Guillaume camp#bat21 973
|
||||
bat_b01,247,179,1 duplicate(Guillaume camp#bat) Guillaume camp#bat22 973
|
||||
|
||||
bat_b01,96,81,1 duplicate(Croix camp#bat) Croix camp#bat1 974
|
||||
bat_b01,96,68,1 duplicate(Croix camp#bat) Croix camp#bat2 974
|
||||
bat_b01,79,81,1 duplicate(Croix camp#bat) Croix camp#bat3 974
|
||||
bat_b01,79,68,1 duplicate(Croix camp#bat) Croix camp#bat4 974
|
||||
bat_b01,96,81,1 duplicate(Croix camp#bat) Croix camp#bat5 974
|
||||
bat_b01,96,81,1 duplicate(Croix camp#bat) Croix camp#bat6 974
|
||||
bat_b01,59,164,1 duplicate(Croix camp#bat) Croix camp#bat7 974
|
||||
bat_b01,59,137,1 duplicate(Croix camp#bat) Croix camp#bat8 974
|
||||
bat_b01,10,296,1 duplicate(Croix camp#bat) Croix camp#bat9 974
|
||||
bat_b01,110,162,1 duplicate(Croix camp#bat) Croix camp#bat18 974
|
||||
bat_b01,110,137,1 duplicate(Croix camp#bat) Croix camp#bat19 974
|
||||
bat_b01,152,120,1 duplicate(Croix camp#bat) Croix camp#bat20 974
|
||||
bat_b01,158,114,1 duplicate(Croix camp#bat) Croix camp#bat21 974
|
||||
|
||||
// MapFlags
|
||||
// *********************************************************************
|
||||
|
||||
bat_b01 mapflag battleground 2
|
||||
bat_b01 mapflag nomemo
|
||||
bat_b01 mapflag nosave SavePoint
|
||||
bat_b01 mapflag noteleport
|
||||
bat_b01 mapflag nowarp
|
||||
bat_b01 mapflag nowarpto
|
||||
bat_b01 mapflag noreturn
|
||||
bat_b01 mapflag nobranch
|
||||
bat_b01 mapflag nopenalty
|
||||
// ==============================================================================
|
||||
// BattleGround System - Flavius 1
|
||||
// ==============================================================================
|
||||
|
||||
// Registration NPC's
|
||||
// *********************************************************************
|
||||
|
||||
bat_room,253,97,4 script Registration::Fl1R_Guillaume 418,{
|
||||
end;
|
||||
OnInit:
|
||||
waitingroom "Battle Station 10 Players",10,"Flavius_BG1::OnGuillaumeJoin",1;
|
||||
end;
|
||||
OnEnterBG:
|
||||
set $@FlaviusBG1_id1, waitingroom2bg("bat_b01",390,10,"Flavius_BG1::OnGuillaumeQuit","");
|
||||
end;
|
||||
}
|
||||
|
||||
bat_room,253,74,0 script Registration::Fl1R_Croix 414,{
|
||||
end;
|
||||
OnInit:
|
||||
waitingroom "Battle Station 10 Players",10,"Flavius_BG1::OnCroixJoin",1;
|
||||
end;
|
||||
OnEnterBG:
|
||||
set $@FlaviusBG1_id2, waitingroom2bg("bat_b01",10,290,"Flavius_BG1::OnCroixQuit","");
|
||||
end;
|
||||
}
|
||||
|
||||
// Battleground Engine
|
||||
// *********************************************************************
|
||||
|
||||
- script Flavius_BG1 -1,{
|
||||
end;
|
||||
|
||||
OnInit:
|
||||
disablenpc "Guillaume Vintenar#fl1";
|
||||
disablenpc "Croix Vintenar#fl1";
|
||||
disablenpc "Therapist in battle#fl11";
|
||||
disablenpc "Therapist in battle#fl12";
|
||||
end;
|
||||
|
||||
OnGuillaumeQuit:
|
||||
OnCroixQuit:
|
||||
set BG_Delay_Tick, gettimetick(2) + 1200;
|
||||
end;
|
||||
|
||||
OnGuillaumeJoin:
|
||||
OnCroixJoin:
|
||||
if( $@FlaviusBG1 == 0 )
|
||||
donpcevent "Flavius_BG1::OnReadyCheck";
|
||||
end;
|
||||
|
||||
OnReadyCheck:
|
||||
if( $@FlaviusBG1 )
|
||||
end;
|
||||
set .@Guillaume, getwaitingroomstate(0,"Fl1R_Guillaume");
|
||||
set .@Croix, getwaitingroomstate(0,"Fl1R_Croix");
|
||||
|
||||
if( .@Guillaume < 10 || .@Croix < 10 )
|
||||
{
|
||||
mapannounce "bat_room","Battleground -- Flavius [80-99] G: " + .@Guillaume + "/10, C: " + .@Croix + "/10",1,0x006400;
|
||||
end;
|
||||
}
|
||||
|
||||
// BG Variables
|
||||
set $@FlaviusBG1, 1;
|
||||
set $@FlaviusBG1_Victory, 0;
|
||||
set .Guillaume_Score, 0;
|
||||
set .Guillaume_Loss, 0;
|
||||
set .Croix_Score, 0;
|
||||
set .Croix_Loss, 0;
|
||||
set .Match, 0;
|
||||
// Prepare NPC
|
||||
donpcevent "#gfl1_respawn::OnBGStart";
|
||||
donpcevent "#cfl1_respawn::OnBGStart";
|
||||
enablenpc "Therapist in battle#fl11";
|
||||
enablenpc "Therapist in battle#fl12";
|
||||
disablenpc "Guillaume Vintenar#fl1";
|
||||
disablenpc "Croix Vintenar#fl1";
|
||||
// Build and Warp Teams
|
||||
donpcevent "Fl1R_Guillaume::OnEnterBG";
|
||||
donpcevent "Fl1R_Croix::OnEnterBG";
|
||||
announce "Battleground -- Flavius [80-99] has started!",0,0x006400;
|
||||
initnpctimer;
|
||||
// Start Match!!
|
||||
|
||||
OnRoundStart:
|
||||
sleep 2000;
|
||||
if( $@FlaviusBG1 != 1 ) end;
|
||||
|
||||
areapercentheal "bat_b01",382,2,397,17,100,100;
|
||||
areapercentheal "bat_b01",2,282,17,297,100,100;
|
||||
bg_warp $@FlaviusBG1_id1,"bat_b01",311,224;
|
||||
bg_warp $@FlaviusBG1_id2,"bat_b01",87,75;
|
||||
|
||||
sleep 2000;
|
||||
if( $@FlaviusBG1 != 1 ) end;
|
||||
|
||||
set .Match, .Match + 1;
|
||||
// Crystal Spawn
|
||||
set .Guillaume_Crystal, bg_monster($@FlaviusBG1_id1,"bat_b01",328,150,"Crystal Guillaume",1914,"Flavius_BG1::OnGuillaumeBreak");
|
||||
setwall "bat_b01",327,149,2,6,0,"gui_wall1-1";
|
||||
setwall "bat_b01",329,149,2,0,0,"gui_wall1-2";
|
||||
setwall "bat_b01",329,151,2,2,0,"gui_wall1-3";
|
||||
setwall "bat_b01",327,151,2,4,0,"gui_wall1-4";
|
||||
|
||||
set .Croix_Crystal, bg_monster($@FlaviusBG1_id2,"bat_b01",62,150,"Crystal Croix",1915,"Flavius_BG1::OnCroixBreak");
|
||||
setwall "bat_b01",61,149,2,6,0,"cro_wall1-1";
|
||||
setwall "bat_b01",63,149,2,0,0,"cro_wall1-2";
|
||||
setwall "bat_b01",63,151,2,2,0,"cro_wall1-3";
|
||||
setwall "bat_b01",61,151,2,4,0,"cro_wall1-4";
|
||||
|
||||
// Guardian Spawns
|
||||
bg_monster $@FlaviusBG1_id1,"bat_b01",328,160,"Guillaume Guardian",1949,"Flavius_BG1::OnGuiGuardian";
|
||||
bg_monster $@FlaviusBG1_id1,"bat_b01",328,140,"Guillaume Guardian",1950,"Flavius_BG1::OnGuiGuardian";
|
||||
set .Guillaume_Guardian, 2;
|
||||
bg_monster $@FlaviusBG1_id2,"bat_b01",62,160,"Croix Guardian",1949,"Flavius_BG1::OnCroGuardian";
|
||||
bg_monster $@FlaviusBG1_id2,"bat_b01",61,140,"Croix Guardian",1950,"Flavius_BG1::OnCroGuardian";
|
||||
set .Croix_Guardian, 2;
|
||||
// Announces
|
||||
mapannounce "bat_b01","The Battle of Flavius [ " + .Match + " ] Round has begun!!",1,0x006400;
|
||||
end;
|
||||
|
||||
OnRoundStop:
|
||||
// Remove Monsters
|
||||
killmonster "bat_b01","Flavius_BG1::OnGuiGuardian";
|
||||
killmonster "bat_b01","Flavius_BG1::OnCroGuardian";
|
||||
delwall "gui_wall1-1";
|
||||
delwall "gui_wall1-2";
|
||||
delwall "gui_wall1-3";
|
||||
delwall "gui_wall1-4";
|
||||
killmonster "bat_b01","Flavius_BG1::OnGuillaumeBreak";
|
||||
delwall "cro_wall1-1";
|
||||
delwall "cro_wall1-2";
|
||||
delwall "cro_wall1-3";
|
||||
delwall "cro_wall1-4";
|
||||
killmonster "bat_b01","Flavius_BG1::OnCroixBreak";
|
||||
end;
|
||||
|
||||
OnGuiGuardian:
|
||||
if( set(.Guillaume_Guardian, .Guillaume_Guardian - 1) <= 0 )
|
||||
{
|
||||
delwall "gui_wall1-1";
|
||||
delwall "gui_wall1-2";
|
||||
delwall "gui_wall1-3";
|
||||
delwall "gui_wall1-4";
|
||||
mapannounce "bat_b01","The Guillaume Crystal is vulnerable to attack!",1,0x0000FF;
|
||||
}
|
||||
end;
|
||||
|
||||
OnCroGuardian:
|
||||
if( set(.Croix_Guardian, .Croix_Guardian - 1) <= 0 )
|
||||
{
|
||||
delwall "cro_wall1-1";
|
||||
delwall "cro_wall1-2";
|
||||
delwall "cro_wall1-3";
|
||||
delwall "cro_wall1-4";
|
||||
mapannounce "bat_b01","The Croix Crystal is vulnerable to attack!",1,0xFF0000;
|
||||
}
|
||||
end;
|
||||
|
||||
OnGuillaumeBreak:
|
||||
donpcevent "Flavius_BG1::OnRoundStop";
|
||||
set .Guillaume_Loss, .Guillaume_Loss + 1;
|
||||
if( set(.Croix_Score, .Croix_Score + 1) < 2 )
|
||||
{
|
||||
bg_updatescore "bat_b01",.Guillaume_Score,.Croix_Score;
|
||||
mapannounce "bat_b01","The Guillaume Crystal has been destroyed!",1,0x0000FF;
|
||||
donpcevent "Flavius_BG1::OnRoundStart";
|
||||
}
|
||||
else
|
||||
{
|
||||
bg_updatescore "bat_b01",.Guillaume_Score,.Croix_Score;
|
||||
mapannounce "bat_b01","The Croix army has won the Battle of Flavius!",1,0xFF0000;
|
||||
set $@FlaviusBG1_Victory, 2;
|
||||
donpcevent "Flavius_BG1::OnMatchEnd";
|
||||
}
|
||||
end;
|
||||
|
||||
OnCroixBreak:
|
||||
donpcevent "Flavius_BG1::OnRoundStop";
|
||||
set .Croix_Loss, .Croix_Loss + 1;
|
||||
if( set(.Guillaume_Score, .Guillaume_Score + 1) < 2 )
|
||||
{
|
||||
bg_updatescore "bat_b01",.Guillaume_Score,.Croix_Score;
|
||||
mapannounce "bat_b01","The Croix Crystal has been destroyed!",1,0xFF0000;
|
||||
donpcevent "Flavius_BG1::OnRoundStart";
|
||||
}
|
||||
else
|
||||
{
|
||||
bg_updatescore "bat_b01",.Guillaume_Score,.Croix_Score;
|
||||
mapannounce "bat_b01","The Guillaume army has won the Battle of Flavius!",1,0x0000FF;
|
||||
set $@FlaviusBG1_Victory, 1;
|
||||
donpcevent "Flavius_BG1::OnMatchEnd";
|
||||
}
|
||||
end;
|
||||
|
||||
OnTimer2400000:
|
||||
mapannounce "bat_b01","Battle of Flavius will ends in 5 minutes",1,0x006400;
|
||||
end;
|
||||
OnTimer2640000:
|
||||
mapannounce "bat_b01","Battle of Flavius will ends in 1 minute",1,0x006400;
|
||||
end;
|
||||
|
||||
OnTimer2700000:
|
||||
if( .Croix_Score > .Guillaume_Score )
|
||||
{
|
||||
mapannounce "bat_b01","The Croix army has won the Battle of Flavius!",1,0xFF0000;
|
||||
set $@FlaviusBG1_Victory, 2;
|
||||
}
|
||||
else if( .Croix_Score < .Guillaume_Score )
|
||||
{
|
||||
mapannounce "bat_b01","The Guillaume army has won the Battle of Flavius!",1,0x0000FF;
|
||||
set $@FlaviusBG1_Victory, 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
mapannounce "bat_b01","The Battle of Flavius is over. The time is out, this is a Tie",1,0x006400;
|
||||
set $@FlaviusBG1_Victory, 3;
|
||||
}
|
||||
|
||||
OnMatchEnd:
|
||||
set $@FlaviusBG1, 2;
|
||||
stopnpctimer;
|
||||
donpcevent "#gfl1_respawn::OnBGStop";
|
||||
donpcevent "#cfl1_respawn::OnBGStop";
|
||||
disablenpc "Therapist in battle#fl11";
|
||||
disablenpc "Therapist in battle#fl12";
|
||||
enablenpc "Guillaume Vintenar#fl1";
|
||||
enablenpc "Croix Vintenar#fl1";
|
||||
sleep 2000;
|
||||
bg_warp $@FlaviusBG1_id1,"bat_b01",390,10;
|
||||
bg_warp $@FlaviusBG1_id2,"bat_b01",10,290;
|
||||
sleep 3000;
|
||||
mapannounce "bat_b01","Battle of Flavius will close in 1 minute!",1,0x006400;
|
||||
initnpctimer;
|
||||
end;
|
||||
|
||||
OnTimer30000:
|
||||
if( $@FlaviusBG1 == 2 )
|
||||
mapannounce "bat_b01","Battle of Flavius will close in 30 seconds!",1,0x006400;
|
||||
end;
|
||||
OnTimer50000:
|
||||
if( $@FlaviusBG1 == 2 )
|
||||
mapannounce "bat_b01","Battle of Flavius will close in 10 seconds!",1,0x006400;
|
||||
end;
|
||||
|
||||
OnTimer60000:
|
||||
if( $@FlaviusBG1 != 2 )
|
||||
end;
|
||||
OnReset:
|
||||
stopnpctimer;
|
||||
donpcevent "Flavius_BG1::OnRoundStop";
|
||||
set .Guillaume_Score, 0;
|
||||
set .Guillaume_Crystal, 0;
|
||||
set .Guillaume_Loss, 0;
|
||||
set .Croix_Score, 0;
|
||||
set .Croix_Crystal, 0;
|
||||
set .Croix_Loss, 0;
|
||||
set .Match, 0;
|
||||
set $@FlaviusBG1_Victory, 0;
|
||||
// NPC's
|
||||
disablenpc "Guillaume Vintenar#fl1";
|
||||
disablenpc "Croix Vintenar#fl1";
|
||||
disablenpc "Therapist in battle#fl11";
|
||||
disablenpc "Therapist in battle#fl12";
|
||||
|
||||
if( $@FlaviusBG1_id1 ) { bg_destroy $@FlaviusBG1_id1; set $@FlaviusBG1_id1, 0; }
|
||||
if( $@FlaviusBG1_id2 ) { bg_destroy $@FlaviusBG1_id2; set $@FlaviusBG1_id2, 0; }
|
||||
sleep 1000;
|
||||
mapwarp "bat_b01","bat_room",155,150;
|
||||
sleep 2000;
|
||||
maprespawnguildid "bat_b01",0,3; // Just in case someone else
|
||||
sleep 2000;
|
||||
bg_updatescore "bat_b01",0,0;
|
||||
set $@FlaviusBG1, 0;
|
||||
donpcevent "Flavius_BG1::OnReadyCheck";
|
||||
end;
|
||||
}
|
||||
|
||||
// Battleground rewards
|
||||
// *********************************************************************
|
||||
|
||||
bat_b01,390,13,5 script Guillaume Vintenar#fl1 419,{
|
||||
if( $@FlaviusBG1_Victory )
|
||||
{
|
||||
if( $@FlaviusBG1_Victory == Bat_Team )
|
||||
{ // Victory
|
||||
mes "[Swandery]";
|
||||
mes "Blessed Guillaume!!";
|
||||
mes "Let's enjoy our glorious victory!";
|
||||
mes "" + strcharinfo(0) + ", its a sign reflecting victory";
|
||||
close2;
|
||||
set .@Reward, 9;
|
||||
}
|
||||
else
|
||||
{ //
|
||||
mes "[Swandery]";
|
||||
mes "You lost, but you're dedicated to this battle.";
|
||||
mes "This is a reward for your great dedication by Guillaume Marollo!";
|
||||
mes "Just take this defeat a lesson, and later you would definitely learn.";
|
||||
close2;
|
||||
set .@Reward, 3;
|
||||
}
|
||||
|
||||
set Flavius_BG_Tick, gettimetick(2) + 300;
|
||||
getitem 7829, .@Reward;
|
||||
bg_leave;
|
||||
warp "bat_room",155,150;
|
||||
end;
|
||||
}
|
||||
end;
|
||||
}
|
||||
|
||||
bat_b01,10,293,5 script Croix Vintenar#fl1 415,{
|
||||
if( $@FlaviusBG1_Victory )
|
||||
{
|
||||
if( $@FlaviusBG1_Victory == Bat_Team )
|
||||
{ // Victory
|
||||
mes "[Swandery]";
|
||||
mes "Blessed Croax!!";
|
||||
mes "Let's enjoy our glorious victory!";
|
||||
mes "" + strcharinfo(0) + ", its a sign reflecting victory";
|
||||
close2;
|
||||
set .@Reward, 9;
|
||||
}
|
||||
else
|
||||
{ //
|
||||
mes "[Swandery]";
|
||||
mes "Oh, " + strcharinfo(0) + ". Don't be sad.";
|
||||
mes "Even though we didn't win, we did our best.";
|
||||
mes "This is a Royal gift from Croix, and please don't forget this battle. We can win the next.";
|
||||
close2;
|
||||
set .@Reward, 3;
|
||||
}
|
||||
|
||||
set Flavius_BG_Tick, gettimetick(2) + 300;
|
||||
getitem 7829, .@Reward;
|
||||
bg_leave;
|
||||
warp "bat_room",155,150;
|
||||
end;
|
||||
}
|
||||
end;
|
||||
}
|
||||
|
||||
// Battleground Therapist
|
||||
// *********************************************************************
|
||||
|
||||
bat_b01,390,13,5 script Therapist in battle#fl12 95,{
|
||||
mes "[Therapist in battle]";
|
||||
mes "Just close your eyes, and take a deep breathe.";
|
||||
mes "You can be free from pain.";
|
||||
specialeffect2 312;
|
||||
close;
|
||||
}
|
||||
|
||||
bat_b01,10,293,5 script Therapist in battle#fl11 95,{
|
||||
mes "[Therapist in battle]";
|
||||
mes "Just close your eyes, and take a deep breathe.";
|
||||
mes "You can be free from pain.";
|
||||
specialeffect2 312;
|
||||
close;
|
||||
}
|
||||
|
||||
// Battleground Respawn
|
||||
// *********************************************************************
|
||||
|
||||
bat_b01,390,10,0 script #gfl1_respawn 139,{
|
||||
end;
|
||||
|
||||
OnBGStart:
|
||||
initnpctimer;
|
||||
end;
|
||||
|
||||
OnBGStop:
|
||||
stopnpctimer;
|
||||
end;
|
||||
|
||||
OnTimer24000:
|
||||
misceffect 83;
|
||||
end;
|
||||
|
||||
OnTimer25000:
|
||||
areapercentheal "bat_b01",382,2,397,17,100,100;
|
||||
areawarp "bat_b01",382,2,397,17,"bat_b01",311,224;
|
||||
initnpctimer;
|
||||
end;
|
||||
}
|
||||
|
||||
bat_b01,10,290,0 script #cfl1_respawn 139,{
|
||||
end;
|
||||
|
||||
OnBGStart:
|
||||
initnpctimer;
|
||||
end;
|
||||
|
||||
OnBGStop:
|
||||
stopnpctimer;
|
||||
end;
|
||||
|
||||
OnTimer24000:
|
||||
misceffect 83;
|
||||
end;
|
||||
|
||||
OnTimer25000:
|
||||
areapercentheal "bat_b01",2,282,17,297,100,100;
|
||||
areawarp "bat_b01",2,282,17,297,"bat_b01",87,75;
|
||||
initnpctimer;
|
||||
end;
|
||||
}
|
||||
|
||||
// Flags
|
||||
// *********************************************************************
|
||||
|
||||
bat_b01,304,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat1 973
|
||||
bat_b01,319,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat2 973
|
||||
bat_b01,304,218,1 duplicate(Guillaume camp#bat) Guillaume camp#bat3 973
|
||||
bat_b01,319,218,1 duplicate(Guillaume camp#bat) Guillaume camp#bat4 973
|
||||
bat_b01,304,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat5 973
|
||||
bat_b01,304,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat6 973
|
||||
bat_b01,335,142,1 duplicate(Guillaume camp#bat) Guillaume camp#bat7 973
|
||||
bat_b01,335,157,1 duplicate(Guillaume camp#bat) Guillaume camp#bat8 973
|
||||
bat_b01,390,16,1 duplicate(Guillaume camp#bat) Guillaume camp#bat9 973
|
||||
bat_b01,292,163,1 duplicate(Guillaume camp#bat) Guillaume camp#bat19 973
|
||||
bat_b01,292,136,1 duplicate(Guillaume camp#bat) Guillaume camp#bat20 973
|
||||
bat_b01,241,185,1 duplicate(Guillaume camp#bat) Guillaume camp#bat21 973
|
||||
bat_b01,247,179,1 duplicate(Guillaume camp#bat) Guillaume camp#bat22 973
|
||||
|
||||
bat_b01,96,81,1 duplicate(Croix camp#bat) Croix camp#bat1 974
|
||||
bat_b01,96,68,1 duplicate(Croix camp#bat) Croix camp#bat2 974
|
||||
bat_b01,79,81,1 duplicate(Croix camp#bat) Croix camp#bat3 974
|
||||
bat_b01,79,68,1 duplicate(Croix camp#bat) Croix camp#bat4 974
|
||||
bat_b01,96,81,1 duplicate(Croix camp#bat) Croix camp#bat5 974
|
||||
bat_b01,96,81,1 duplicate(Croix camp#bat) Croix camp#bat6 974
|
||||
bat_b01,59,164,1 duplicate(Croix camp#bat) Croix camp#bat7 974
|
||||
bat_b01,59,137,1 duplicate(Croix camp#bat) Croix camp#bat8 974
|
||||
bat_b01,10,296,1 duplicate(Croix camp#bat) Croix camp#bat9 974
|
||||
bat_b01,110,162,1 duplicate(Croix camp#bat) Croix camp#bat18 974
|
||||
bat_b01,110,137,1 duplicate(Croix camp#bat) Croix camp#bat19 974
|
||||
bat_b01,152,120,1 duplicate(Croix camp#bat) Croix camp#bat20 974
|
||||
bat_b01,158,114,1 duplicate(Croix camp#bat) Croix camp#bat21 974
|
||||
|
||||
// MapFlags
|
||||
// *********************************************************************
|
||||
|
||||
bat_b01 mapflag battleground 2
|
||||
bat_b01 mapflag nomemo
|
||||
bat_b01 mapflag nosave SavePoint
|
||||
bat_b01 mapflag noteleport
|
||||
bat_b01 mapflag nowarp
|
||||
bat_b01 mapflag nowarpto
|
||||
bat_b01 mapflag noreturn
|
||||
bat_b01 mapflag nobranch
|
||||
bat_b01 mapflag nopenalty
|
||||
|
@ -1,453 +1,453 @@
|
||||
// ==============================================================================
|
||||
// BattleGround System - Flavius 2
|
||||
// ==============================================================================
|
||||
|
||||
// Registration NPC's
|
||||
// *********************************************************************
|
||||
|
||||
bat_room,57,97,4 script Registration::Fl2R_Guillaume 418,{
|
||||
end;
|
||||
OnInit:
|
||||
waitingroom "Battle Station 10 Players",10,"Flavius_BG2::OnGuillaumeJoin",1;
|
||||
end;
|
||||
OnEnterBG:
|
||||
set $@FlaviusBG2_id1, waitingroom2bg("bat_b02",390,10,"Flavius_BG2::OnGuillaumeQuit","");
|
||||
end;
|
||||
}
|
||||
|
||||
bat_room,57,74,0 script Registration::Fl2R_Croix 414,{
|
||||
end;
|
||||
OnInit:
|
||||
waitingroom "Battle Station 10 Players",10,"Flavius_BG2::OnCroixJoin",1;
|
||||
end;
|
||||
OnEnterBG:
|
||||
set $@FlaviusBG2_id2, waitingroom2bg("bat_b02",10,290,"Flavius_BG2::OnCroixQuit","");
|
||||
end;
|
||||
}
|
||||
|
||||
// Battleground Engine
|
||||
// *********************************************************************
|
||||
|
||||
- script Flavius_BG2 -1,{
|
||||
end;
|
||||
|
||||
OnInit:
|
||||
disablenpc "Guillaume Vintenar#fl2";
|
||||
disablenpc "Croix Vintenar#fl2";
|
||||
disablenpc "Therapist in battle#fl21";
|
||||
disablenpc "Therapist in battle#fl22";
|
||||
end;
|
||||
|
||||
OnGuillaumeQuit:
|
||||
OnCroixQuit:
|
||||
set BG_Delay_Tick, gettimetick(2) + 1200;
|
||||
end;
|
||||
|
||||
OnGuillaumeJoin:
|
||||
OnCroixJoin:
|
||||
if( $@FlaviusBG2 == 0 )
|
||||
donpcevent "Flavius_BG2::OnReadyCheck";
|
||||
end;
|
||||
|
||||
OnReadyCheck:
|
||||
if( $@FlaviusBG2 )
|
||||
end;
|
||||
set .@Guillaume, getwaitingroomstate(0,"Fl2R_Guillaume");
|
||||
set .@Croix, getwaitingroomstate(0,"Fl2R_Croix");
|
||||
|
||||
if( .@Guillaume < 10 || .@Croix < 10 )
|
||||
{
|
||||
mapannounce "bat_room","Battleground -- Flavius [80-99] G: " + .@Guillaume + "/10, C: " + .@Croix + "/10",1,0x808000;
|
||||
end;
|
||||
}
|
||||
|
||||
// BG Variables
|
||||
set $@FlaviusBG2, 1;
|
||||
set $@FlaviusBG2_Victory, 0;
|
||||
set .Guillaume_Score, 0;
|
||||
set .Guillaume_Loss, 0;
|
||||
set .Croix_Score, 0;
|
||||
set .Croix_Loss, 0;
|
||||
set .Match, 0;
|
||||
// Prepare NPC
|
||||
donpcevent "#gfl2_respawn::OnBGStart";
|
||||
donpcevent "#cfl2_respawn::OnBGStart";
|
||||
enablenpc "Therapist in battle#fl21";
|
||||
enablenpc "Therapist in battle#fl22";
|
||||
disablenpc "Guillaume Vintenar#fl2";
|
||||
disablenpc "Croix Vintenar#fl2";
|
||||
// Build and Warp Teams
|
||||
donpcevent "Fl2R_Guillaume::OnEnterBG";
|
||||
donpcevent "Fl2R_Croix::OnEnterBG";
|
||||
announce "Battleground -- Flavius [80-99] has started!",0,0x808000;
|
||||
initnpctimer;
|
||||
// Start Match!!
|
||||
|
||||
OnRoundStart:
|
||||
sleep 2000;
|
||||
if( $@FlaviusBG2 != 1 ) end;
|
||||
|
||||
areapercentheal "bat_b02",382,2,397,17,100,100;
|
||||
areapercentheal "bat_b02",2,282,17,297,100,100;
|
||||
bg_warp $@FlaviusBG2_id1,"bat_b02",311,224;
|
||||
bg_warp $@FlaviusBG2_id2,"bat_b02",87,75;
|
||||
|
||||
sleep 2000;
|
||||
if( $@FlaviusBG2 != 1 ) end;
|
||||
|
||||
set .Match, .Match + 1;
|
||||
// Crystal Spawn
|
||||
set .Guillaume_Crystal, bg_monster($@FlaviusBG2_id1,"bat_b02",328,150,"Crystal Guillaume",1914,"Flavius_BG2::OnGuillaumeBreak");
|
||||
setwall "bat_b02",327,149,2,6,0,"gui_wall2-1";
|
||||
setwall "bat_b02",329,149,2,0,0,"gui_wall2-2";
|
||||
setwall "bat_b02",329,151,2,2,0,"gui_wall2-3";
|
||||
setwall "bat_b02",327,151,2,4,0,"gui_wall2-4";
|
||||
|
||||
set .Croix_Crystal, bg_monster($@FlaviusBG2_id2,"bat_b02",62,150,"Crystal Croix",1915,"Flavius_BG2::OnCroixBreak");
|
||||
setwall "bat_b02",61,149,2,6,0,"cro_wall2-1";
|
||||
setwall "bat_b02",63,149,2,0,0,"cro_wall2-2";
|
||||
setwall "bat_b02",63,151,2,2,0,"cro_wall2-3";
|
||||
setwall "bat_b02",61,151,2,4,0,"cro_wall2-4";
|
||||
|
||||
// Guardian Spawns
|
||||
bg_monster $@FlaviusBG2_id1,"bat_b02",328,160,"Guillaume Guardian",1949,"Flavius_BG2::OnGuiGuardian";
|
||||
bg_monster $@FlaviusBG2_id1,"bat_b02",328,140,"Guillaume Guardian",1950,"Flavius_BG2::OnGuiGuardian";
|
||||
set .Guillaume_Guardian, 2;
|
||||
bg_monster $@FlaviusBG2_id2,"bat_b02",62,160,"Croix Guardian",1949,"Flavius_BG2::OnCroGuardian";
|
||||
bg_monster $@FlaviusBG2_id2,"bat_b02",61,140,"Croix Guardian",1950,"Flavius_BG2::OnCroGuardian";
|
||||
set .Croix_Guardian, 2;
|
||||
// Announces
|
||||
mapannounce "bat_b02","The Battle of Flavius [ " + .Match + " ] Round has begun!!",1,0x808000;
|
||||
end;
|
||||
|
||||
OnRoundStop:
|
||||
// Remove Monsters
|
||||
killmonster "bat_b02","Flavius_BG2::OnGuiGuardian";
|
||||
killmonster "bat_b02","Flavius_BG2::OnCroGuardian";
|
||||
delwall "gui_wall2-1";
|
||||
delwall "gui_wall2-2";
|
||||
delwall "gui_wall2-3";
|
||||
delwall "gui_wall2-4";
|
||||
killmonster "bat_b02","Flavius_BG2::OnGuillaumeBreak";
|
||||
delwall "cro_wall2-1";
|
||||
delwall "cro_wall2-2";
|
||||
delwall "cro_wall2-3";
|
||||
delwall "cro_wall2-4";
|
||||
killmonster "bat_b02","Flavius_BG2::OnCroixBreak";
|
||||
end;
|
||||
|
||||
OnGuiGuardian:
|
||||
if( set(.Guillaume_Guardian, .Guillaume_Guardian - 1) <= 0 )
|
||||
{
|
||||
delwall "gui_wall2-1";
|
||||
delwall "gui_wall2-2";
|
||||
delwall "gui_wall2-3";
|
||||
delwall "gui_wall2-4";
|
||||
mapannounce "bat_b02","The Guillaume Crystal is vulnerable to attack!",1,0x0000FF;
|
||||
}
|
||||
end;
|
||||
|
||||
OnCroGuardian:
|
||||
if( set(.Croix_Guardian, .Croix_Guardian - 1) <= 0 )
|
||||
{
|
||||
delwall "cro_wall2-1";
|
||||
delwall "cro_wall2-2";
|
||||
delwall "cro_wall2-3";
|
||||
delwall "cro_wall2-4";
|
||||
mapannounce "bat_b02","The Croix Crystal is vulnerable to attack!",1,0xFF0000;
|
||||
}
|
||||
end;
|
||||
|
||||
OnGuillaumeBreak:
|
||||
donpcevent "Flavius_BG2::OnRoundStop";
|
||||
set .Guillaume_Loss, .Guillaume_Loss + 1;
|
||||
if( set(.Croix_Score, .Croix_Score + 1) < 2 )
|
||||
{
|
||||
bg_updatescore "bat_b02",.Guillaume_Score,.Croix_Score;
|
||||
mapannounce "bat_b02","The Guillaume Crystal has been destroyed!",1,0x0000FF;
|
||||
donpcevent "Flavius_BG2::OnRoundStart";
|
||||
}
|
||||
else
|
||||
{
|
||||
bg_updatescore "bat_b02",.Guillaume_Score,.Croix_Score;
|
||||
mapannounce "bat_b02","The Croix army has won the Battle of Flavius!",1,0xFF0000;
|
||||
set $@FlaviusBG2_Victory, 2;
|
||||
donpcevent "Flavius_BG2::OnMatchEnd";
|
||||
}
|
||||
end;
|
||||
|
||||
OnCroixBreak:
|
||||
donpcevent "Flavius_BG2::OnRoundStop";
|
||||
set .Croix_Loss, .Croix_Loss + 1;
|
||||
if( set(.Guillaume_Score, .Guillaume_Score + 1) < 2 )
|
||||
{
|
||||
bg_updatescore "bat_b02",.Guillaume_Score,.Croix_Score;
|
||||
mapannounce "bat_b02","The Croix Crystal has been destroyed!",1,0xFF0000;
|
||||
donpcevent "Flavius_BG2::OnRoundStart";
|
||||
}
|
||||
else
|
||||
{
|
||||
bg_updatescore "bat_b02",.Guillaume_Score,.Croix_Score;
|
||||
mapannounce "bat_b02","The Guillaume army has won the Battle of Flavius!",1,0x0000FF;
|
||||
set $@FlaviusBG2_Victory, 1;
|
||||
donpcevent "Flavius_BG2::OnMatchEnd";
|
||||
}
|
||||
end;
|
||||
|
||||
OnTimer2400000:
|
||||
mapannounce "bat_b02","Battle of Flavius will ends in 5 minutes",1,0x808000;
|
||||
end;
|
||||
OnTimer2640000:
|
||||
mapannounce "bat_b02","Battle of Flavius will ends in 1 minute",1,0x808000;
|
||||
end;
|
||||
|
||||
OnTimer2700000:
|
||||
if( .Croix_Score > .Guillaume_Score )
|
||||
{
|
||||
mapannounce "bat_b02","The Croix army has won the Battle of Flavius!",1,0xFF0000;
|
||||
set $@FlaviusBG2_Victory, 2;
|
||||
}
|
||||
else if( .Croix_Score < .Guillaume_Score )
|
||||
{
|
||||
mapannounce "bat_b02","The Guillaume army has won the Battle of Flavius!",1,0x0000FF;
|
||||
set $@FlaviusBG2_Victory, 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
mapannounce "bat_b02","The Battle of Flavius is over. The time is out, this is a Tie",1,0x808000;
|
||||
set $@FlaviusBG2_Victory, 3;
|
||||
}
|
||||
|
||||
OnMatchEnd:
|
||||
set $@FlaviusBG2, 2;
|
||||
stopnpctimer;
|
||||
donpcevent "#gfl2_respawn::OnBGStop";
|
||||
donpcevent "#cfl2_respawn::OnBGStop";
|
||||
disablenpc "Therapist in battle#fl21";
|
||||
disablenpc "Therapist in battle#fl22";
|
||||
enablenpc "Guillaume Vintenar#fl2";
|
||||
enablenpc "Croix Vintenar#fl2";
|
||||
sleep 2000;
|
||||
bg_warp $@FlaviusBG2_id1,"bat_b02",390,10;
|
||||
bg_warp $@FlaviusBG2_id2,"bat_b02",10,290;
|
||||
sleep 3000;
|
||||
mapannounce "bat_b02","Battle of Flavius will close in 1 minute!",1,0x808000;
|
||||
initnpctimer;
|
||||
end;
|
||||
|
||||
OnTimer30000:
|
||||
if( $@FlaviusBG2 == 2 )
|
||||
mapannounce "bat_b02","Battle of Flavius will close in 30 seconds!",1,0x808000;
|
||||
end;
|
||||
OnTimer50000:
|
||||
if( $@FlaviusBG2 == 2 )
|
||||
mapannounce "bat_b02","Battle of Flavius will close in 10 seconds!",1,0x808000;
|
||||
end;
|
||||
|
||||
OnTimer60000:
|
||||
if( $@FlaviusBG2 != 2 )
|
||||
end;
|
||||
OnReset:
|
||||
stopnpctimer;
|
||||
donpcevent "Flavius_BG2::OnRoundStop";
|
||||
set .Guillaume_Score, 0;
|
||||
set .Guillaume_Crystal, 0;
|
||||
set .Guillaume_Loss, 0;
|
||||
set .Croix_Score, 0;
|
||||
set .Croix_Crystal, 0;
|
||||
set .Croix_Loss, 0;
|
||||
set .Match, 0;
|
||||
set $@FlaviusBG2_Victory, 0;
|
||||
// NPC's
|
||||
disablenpc "Guillaume Vintenar#fl2";
|
||||
disablenpc "Croix Vintenar#fl2";
|
||||
disablenpc "Therapist in battle#fl21";
|
||||
disablenpc "Therapist in battle#fl22";
|
||||
|
||||
if( $@FlaviusBG2_id1 ) { bg_destroy $@FlaviusBG2_id1; set $@FlaviusBG2_id1, 0; }
|
||||
if( $@FlaviusBG2_id2 ) { bg_destroy $@FlaviusBG2_id2; set $@FlaviusBG2_id2, 0; }
|
||||
sleep 1000;
|
||||
mapwarp "bat_b02","bat_room",155,150;
|
||||
sleep 2000;
|
||||
maprespawnguildid "bat_b02",0,3; // Just in case someone else
|
||||
sleep 2000;
|
||||
bg_updatescore "bat_b02",0,0;
|
||||
set $@FlaviusBG2, 0;
|
||||
donpcevent "Flavius_BG2::OnReadyCheck";
|
||||
end;
|
||||
}
|
||||
|
||||
// Battleground rewards
|
||||
// *********************************************************************
|
||||
|
||||
bat_b02,390,13,5 script Guillaume Vintenar#fl2 419,{
|
||||
if( $@FlaviusBG2_Victory )
|
||||
{
|
||||
if( $@FlaviusBG2_Victory == Bat_Team )
|
||||
{ // Victory
|
||||
mes "[Swandery]";
|
||||
mes "Blessed Guillaume!!";
|
||||
mes "Let's enjoy our glorious victory!";
|
||||
mes "" + strcharinfo(0) + ", its a sign reflecting victory";
|
||||
close2;
|
||||
set .@Reward, 9;
|
||||
}
|
||||
else
|
||||
{ //
|
||||
mes "[Swandery]";
|
||||
mes "You lost, but you're dedicated to this battle.";
|
||||
mes "This is a reward for your great dedication by Guillaume Marollo!";
|
||||
mes "Just take this defeat a lesson, and later you would definitely learn.";
|
||||
close2;
|
||||
set .@Reward, 3;
|
||||
}
|
||||
|
||||
set Flavius_BG_Tick, gettimetick(2) + 300;
|
||||
getitem 7829, .@Reward;
|
||||
bg_leave;
|
||||
warp "bat_room",155,150;
|
||||
end;
|
||||
}
|
||||
end;
|
||||
}
|
||||
|
||||
bat_b02,10,293,5 script Croix Vintenar#fl2 415,{
|
||||
if( $@FlaviusBG2_Victory )
|
||||
{
|
||||
if( $@FlaviusBG2_Victory == Bat_Team )
|
||||
{ // Victory
|
||||
mes "[Swandery]";
|
||||
mes "Blessed Croax!!";
|
||||
mes "Let's enjoy our glorious victory!";
|
||||
mes "" + strcharinfo(0) + ", its a sign reflecting victory";
|
||||
close2;
|
||||
set .@Reward, 9;
|
||||
}
|
||||
else
|
||||
{ //
|
||||
mes "[Swandery]";
|
||||
mes "Oh, " + strcharinfo(0) + ". Don't be sad.";
|
||||
mes "Even though we didn't win, we did our best.";
|
||||
mes "This is a Royal gift from Croix, and please don't forget this battle. We can win the next.";
|
||||
close2;
|
||||
set .@Reward, 3;
|
||||
}
|
||||
|
||||
set Flavius_BG_Tick, gettimetick(2) + 300;
|
||||
getitem 7829, .@Reward;
|
||||
bg_leave;
|
||||
warp "bat_room",155,150;
|
||||
end;
|
||||
}
|
||||
end;
|
||||
}
|
||||
|
||||
// Battleground Therapist
|
||||
// *********************************************************************
|
||||
|
||||
bat_b02,390,13,5 script Therapist in battle#fl22 95,{
|
||||
mes "[Therapist in battle]";
|
||||
mes "Just close your eyes, and take a deep breathe.";
|
||||
mes "You can be free from pain.";
|
||||
specialeffect2 312;
|
||||
close;
|
||||
}
|
||||
|
||||
bat_b02,10,293,5 script Therapist in battle#fl21 95,{
|
||||
mes "[Therapist in battle]";
|
||||
mes "Just close your eyes, and take a deep breathe.";
|
||||
mes "You can be free from pain.";
|
||||
specialeffect2 312;
|
||||
close;
|
||||
}
|
||||
|
||||
// Battleground Respawn
|
||||
// *********************************************************************
|
||||
|
||||
bat_b02,390,10,0 script #gfl2_respawn 139,{
|
||||
end;
|
||||
|
||||
OnBGStart:
|
||||
initnpctimer;
|
||||
end;
|
||||
|
||||
OnBGStop:
|
||||
stopnpctimer;
|
||||
end;
|
||||
|
||||
OnTimer24000:
|
||||
misceffect 83;
|
||||
end;
|
||||
|
||||
OnTimer25000:
|
||||
areapercentheal "bat_b02",382,2,397,17,100,100;
|
||||
areawarp "bat_b02",382,2,397,17,"bat_b02",311,224;
|
||||
initnpctimer;
|
||||
end;
|
||||
}
|
||||
|
||||
bat_b02,10,290,0 script #cfl2_respawn 139,{
|
||||
end;
|
||||
|
||||
OnBGStart:
|
||||
initnpctimer;
|
||||
end;
|
||||
|
||||
OnBGStop:
|
||||
stopnpctimer;
|
||||
end;
|
||||
|
||||
OnTimer24000:
|
||||
misceffect 83;
|
||||
end;
|
||||
|
||||
OnTimer25000:
|
||||
areapercentheal "bat_b02",2,282,17,297,100,100;
|
||||
areawarp "bat_b02",2,282,17,297,"bat_b02",87,75;
|
||||
initnpctimer;
|
||||
end;
|
||||
}
|
||||
|
||||
// Flags
|
||||
// *********************************************************************
|
||||
|
||||
bat_b02,304,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat32 973
|
||||
bat_b02,319,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat33 973
|
||||
bat_b02,304,218,1 duplicate(Guillaume camp#bat) Guillaume camp#bat34 973
|
||||
bat_b02,319,218,1 duplicate(Guillaume camp#bat) Guillaume camp#bat35 973
|
||||
bat_b02,304,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat36 973
|
||||
bat_b02,304,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat37 973
|
||||
bat_b02,335,142,1 duplicate(Guillaume camp#bat) Guillaume camp#bat38 973
|
||||
bat_b02,335,157,1 duplicate(Guillaume camp#bat) Guillaume camp#bat39 973
|
||||
bat_b02,390,16,1 duplicate(Guillaume camp#bat) Guillaume camp#bat40 973
|
||||
bat_b02,292,163,1 duplicate(Guillaume camp#bat) Guillaume camp#bat41 973
|
||||
bat_b02,292,136,1 duplicate(Guillaume camp#bat) Guillaume camp#bat42 973
|
||||
bat_b02,241,185,1 duplicate(Guillaume camp#bat) Guillaume camp#bat43 973
|
||||
bat_b02,247,179,1 duplicate(Guillaume camp#bat) Guillaume camp#bat44 973
|
||||
|
||||
bat_b02,96,81,1 duplicate(Croix camp#bat) Croix camp#bat30 974
|
||||
bat_b02,96,68,1 duplicate(Croix camp#bat) Croix camp#bat31 974
|
||||
bat_b02,79,81,1 duplicate(Croix camp#bat) Croix camp#bat32 974
|
||||
bat_b02,79,68,1 duplicate(Croix camp#bat) Croix camp#bat33 974
|
||||
bat_b02,96,81,1 duplicate(Croix camp#bat) Croix camp#bat34 974
|
||||
bat_b02,96,81,1 duplicate(Croix camp#bat) Croix camp#bat35 974
|
||||
bat_b02,59,164,1 duplicate(Croix camp#bat) Croix camp#bat36 974
|
||||
bat_b02,59,137,1 duplicate(Croix camp#bat) Croix camp#bat37 974
|
||||
bat_b02,10,296,1 duplicate(Croix camp#bat) Croix camp#bat38 974
|
||||
bat_b02,110,162,1 duplicate(Croix camp#bat) Croix camp#bat39 974
|
||||
bat_b02,110,137,1 duplicate(Croix camp#bat) Croix camp#bat40 974
|
||||
bat_b02,152,120,1 duplicate(Croix camp#bat) Croix camp#bat41 974
|
||||
bat_b02,158,114,1 duplicate(Croix camp#bat) Croix camp#bat42 974
|
||||
|
||||
// MapFlags
|
||||
// *********************************************************************
|
||||
|
||||
bat_b02 mapflag battleground
|
||||
bat_b02 mapflag nomemo
|
||||
bat_b02 mapflag nosave SavePoint
|
||||
bat_b02 mapflag noteleport
|
||||
bat_b02 mapflag nowarp
|
||||
bat_b02 mapflag nowarpto
|
||||
bat_b02 mapflag noreturn
|
||||
bat_b02 mapflag nobranch
|
||||
bat_b02 mapflag nopenalty
|
||||
// ==============================================================================
|
||||
// BattleGround System - Flavius 2
|
||||
// ==============================================================================
|
||||
|
||||
// Registration NPC's
|
||||
// *********************************************************************
|
||||
|
||||
bat_room,57,97,4 script Registration::Fl2R_Guillaume 418,{
|
||||
end;
|
||||
OnInit:
|
||||
waitingroom "Battle Station 10 Players",10,"Flavius_BG2::OnGuillaumeJoin",1;
|
||||
end;
|
||||
OnEnterBG:
|
||||
set $@FlaviusBG2_id1, waitingroom2bg("bat_b02",390,10,"Flavius_BG2::OnGuillaumeQuit","");
|
||||
end;
|
||||
}
|
||||
|
||||
bat_room,57,74,0 script Registration::Fl2R_Croix 414,{
|
||||
end;
|
||||
OnInit:
|
||||
waitingroom "Battle Station 10 Players",10,"Flavius_BG2::OnCroixJoin",1;
|
||||
end;
|
||||
OnEnterBG:
|
||||
set $@FlaviusBG2_id2, waitingroom2bg("bat_b02",10,290,"Flavius_BG2::OnCroixQuit","");
|
||||
end;
|
||||
}
|
||||
|
||||
// Battleground Engine
|
||||
// *********************************************************************
|
||||
|
||||
- script Flavius_BG2 -1,{
|
||||
end;
|
||||
|
||||
OnInit:
|
||||
disablenpc "Guillaume Vintenar#fl2";
|
||||
disablenpc "Croix Vintenar#fl2";
|
||||
disablenpc "Therapist in battle#fl21";
|
||||
disablenpc "Therapist in battle#fl22";
|
||||
end;
|
||||
|
||||
OnGuillaumeQuit:
|
||||
OnCroixQuit:
|
||||
set BG_Delay_Tick, gettimetick(2) + 1200;
|
||||
end;
|
||||
|
||||
OnGuillaumeJoin:
|
||||
OnCroixJoin:
|
||||
if( $@FlaviusBG2 == 0 )
|
||||
donpcevent "Flavius_BG2::OnReadyCheck";
|
||||
end;
|
||||
|
||||
OnReadyCheck:
|
||||
if( $@FlaviusBG2 )
|
||||
end;
|
||||
set .@Guillaume, getwaitingroomstate(0,"Fl2R_Guillaume");
|
||||
set .@Croix, getwaitingroomstate(0,"Fl2R_Croix");
|
||||
|
||||
if( .@Guillaume < 10 || .@Croix < 10 )
|
||||
{
|
||||
mapannounce "bat_room","Battleground -- Flavius [80-99] G: " + .@Guillaume + "/10, C: " + .@Croix + "/10",1,0x808000;
|
||||
end;
|
||||
}
|
||||
|
||||
// BG Variables
|
||||
set $@FlaviusBG2, 1;
|
||||
set $@FlaviusBG2_Victory, 0;
|
||||
set .Guillaume_Score, 0;
|
||||
set .Guillaume_Loss, 0;
|
||||
set .Croix_Score, 0;
|
||||
set .Croix_Loss, 0;
|
||||
set .Match, 0;
|
||||
// Prepare NPC
|
||||
donpcevent "#gfl2_respawn::OnBGStart";
|
||||
donpcevent "#cfl2_respawn::OnBGStart";
|
||||
enablenpc "Therapist in battle#fl21";
|
||||
enablenpc "Therapist in battle#fl22";
|
||||
disablenpc "Guillaume Vintenar#fl2";
|
||||
disablenpc "Croix Vintenar#fl2";
|
||||
// Build and Warp Teams
|
||||
donpcevent "Fl2R_Guillaume::OnEnterBG";
|
||||
donpcevent "Fl2R_Croix::OnEnterBG";
|
||||
announce "Battleground -- Flavius [80-99] has started!",0,0x808000;
|
||||
initnpctimer;
|
||||
// Start Match!!
|
||||
|
||||
OnRoundStart:
|
||||
sleep 2000;
|
||||
if( $@FlaviusBG2 != 1 ) end;
|
||||
|
||||
areapercentheal "bat_b02",382,2,397,17,100,100;
|
||||
areapercentheal "bat_b02",2,282,17,297,100,100;
|
||||
bg_warp $@FlaviusBG2_id1,"bat_b02",311,224;
|
||||
bg_warp $@FlaviusBG2_id2,"bat_b02",87,75;
|
||||
|
||||
sleep 2000;
|
||||
if( $@FlaviusBG2 != 1 ) end;
|
||||
|
||||
set .Match, .Match + 1;
|
||||
// Crystal Spawn
|
||||
set .Guillaume_Crystal, bg_monster($@FlaviusBG2_id1,"bat_b02",328,150,"Crystal Guillaume",1914,"Flavius_BG2::OnGuillaumeBreak");
|
||||
setwall "bat_b02",327,149,2,6,0,"gui_wall2-1";
|
||||
setwall "bat_b02",329,149,2,0,0,"gui_wall2-2";
|
||||
setwall "bat_b02",329,151,2,2,0,"gui_wall2-3";
|
||||
setwall "bat_b02",327,151,2,4,0,"gui_wall2-4";
|
||||
|
||||
set .Croix_Crystal, bg_monster($@FlaviusBG2_id2,"bat_b02",62,150,"Crystal Croix",1915,"Flavius_BG2::OnCroixBreak");
|
||||
setwall "bat_b02",61,149,2,6,0,"cro_wall2-1";
|
||||
setwall "bat_b02",63,149,2,0,0,"cro_wall2-2";
|
||||
setwall "bat_b02",63,151,2,2,0,"cro_wall2-3";
|
||||
setwall "bat_b02",61,151,2,4,0,"cro_wall2-4";
|
||||
|
||||
// Guardian Spawns
|
||||
bg_monster $@FlaviusBG2_id1,"bat_b02",328,160,"Guillaume Guardian",1949,"Flavius_BG2::OnGuiGuardian";
|
||||
bg_monster $@FlaviusBG2_id1,"bat_b02",328,140,"Guillaume Guardian",1950,"Flavius_BG2::OnGuiGuardian";
|
||||
set .Guillaume_Guardian, 2;
|
||||
bg_monster $@FlaviusBG2_id2,"bat_b02",62,160,"Croix Guardian",1949,"Flavius_BG2::OnCroGuardian";
|
||||
bg_monster $@FlaviusBG2_id2,"bat_b02",61,140,"Croix Guardian",1950,"Flavius_BG2::OnCroGuardian";
|
||||
set .Croix_Guardian, 2;
|
||||
// Announces
|
||||
mapannounce "bat_b02","The Battle of Flavius [ " + .Match + " ] Round has begun!!",1,0x808000;
|
||||
end;
|
||||
|
||||
OnRoundStop:
|
||||
// Remove Monsters
|
||||
killmonster "bat_b02","Flavius_BG2::OnGuiGuardian";
|
||||
killmonster "bat_b02","Flavius_BG2::OnCroGuardian";
|
||||
delwall "gui_wall2-1";
|
||||
delwall "gui_wall2-2";
|
||||
delwall "gui_wall2-3";
|
||||
delwall "gui_wall2-4";
|
||||
killmonster "bat_b02","Flavius_BG2::OnGuillaumeBreak";
|
||||
delwall "cro_wall2-1";
|
||||
delwall "cro_wall2-2";
|
||||
delwall "cro_wall2-3";
|
||||
delwall "cro_wall2-4";
|
||||
killmonster "bat_b02","Flavius_BG2::OnCroixBreak";
|
||||
end;
|
||||
|
||||
OnGuiGuardian:
|
||||
if( set(.Guillaume_Guardian, .Guillaume_Guardian - 1) <= 0 )
|
||||
{
|
||||
delwall "gui_wall2-1";
|
||||
delwall "gui_wall2-2";
|
||||
delwall "gui_wall2-3";
|
||||
delwall "gui_wall2-4";
|
||||
mapannounce "bat_b02","The Guillaume Crystal is vulnerable to attack!",1,0x0000FF;
|
||||
}
|
||||
end;
|
||||
|
||||
OnCroGuardian:
|
||||
if( set(.Croix_Guardian, .Croix_Guardian - 1) <= 0 )
|
||||
{
|
||||
delwall "cro_wall2-1";
|
||||
delwall "cro_wall2-2";
|
||||
delwall "cro_wall2-3";
|
||||
delwall "cro_wall2-4";
|
||||
mapannounce "bat_b02","The Croix Crystal is vulnerable to attack!",1,0xFF0000;
|
||||
}
|
||||
end;
|
||||
|
||||
OnGuillaumeBreak:
|
||||
donpcevent "Flavius_BG2::OnRoundStop";
|
||||
set .Guillaume_Loss, .Guillaume_Loss + 1;
|
||||
if( set(.Croix_Score, .Croix_Score + 1) < 2 )
|
||||
{
|
||||
bg_updatescore "bat_b02",.Guillaume_Score,.Croix_Score;
|
||||
mapannounce "bat_b02","The Guillaume Crystal has been destroyed!",1,0x0000FF;
|
||||
donpcevent "Flavius_BG2::OnRoundStart";
|
||||
}
|
||||
else
|
||||
{
|
||||
bg_updatescore "bat_b02",.Guillaume_Score,.Croix_Score;
|
||||
mapannounce "bat_b02","The Croix army has won the Battle of Flavius!",1,0xFF0000;
|
||||
set $@FlaviusBG2_Victory, 2;
|
||||
donpcevent "Flavius_BG2::OnMatchEnd";
|
||||
}
|
||||
end;
|
||||
|
||||
OnCroixBreak:
|
||||
donpcevent "Flavius_BG2::OnRoundStop";
|
||||
set .Croix_Loss, .Croix_Loss + 1;
|
||||
if( set(.Guillaume_Score, .Guillaume_Score + 1) < 2 )
|
||||
{
|
||||
bg_updatescore "bat_b02",.Guillaume_Score,.Croix_Score;
|
||||
mapannounce "bat_b02","The Croix Crystal has been destroyed!",1,0xFF0000;
|
||||
donpcevent "Flavius_BG2::OnRoundStart";
|
||||
}
|
||||
else
|
||||
{
|
||||
bg_updatescore "bat_b02",.Guillaume_Score,.Croix_Score;
|
||||
mapannounce "bat_b02","The Guillaume army has won the Battle of Flavius!",1,0x0000FF;
|
||||
set $@FlaviusBG2_Victory, 1;
|
||||
donpcevent "Flavius_BG2::OnMatchEnd";
|
||||
}
|
||||
end;
|
||||
|
||||
OnTimer2400000:
|
||||
mapannounce "bat_b02","Battle of Flavius will ends in 5 minutes",1,0x808000;
|
||||
end;
|
||||
OnTimer2640000:
|
||||
mapannounce "bat_b02","Battle of Flavius will ends in 1 minute",1,0x808000;
|
||||
end;
|
||||
|
||||
OnTimer2700000:
|
||||
if( .Croix_Score > .Guillaume_Score )
|
||||
{
|
||||
mapannounce "bat_b02","The Croix army has won the Battle of Flavius!",1,0xFF0000;
|
||||
set $@FlaviusBG2_Victory, 2;
|
||||
}
|
||||
else if( .Croix_Score < .Guillaume_Score )
|
||||
{
|
||||
mapannounce "bat_b02","The Guillaume army has won the Battle of Flavius!",1,0x0000FF;
|
||||
set $@FlaviusBG2_Victory, 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
mapannounce "bat_b02","The Battle of Flavius is over. The time is out, this is a Tie",1,0x808000;
|
||||
set $@FlaviusBG2_Victory, 3;
|
||||
}
|
||||
|
||||
OnMatchEnd:
|
||||
set $@FlaviusBG2, 2;
|
||||
stopnpctimer;
|
||||
donpcevent "#gfl2_respawn::OnBGStop";
|
||||
donpcevent "#cfl2_respawn::OnBGStop";
|
||||
disablenpc "Therapist in battle#fl21";
|
||||
disablenpc "Therapist in battle#fl22";
|
||||
enablenpc "Guillaume Vintenar#fl2";
|
||||
enablenpc "Croix Vintenar#fl2";
|
||||
sleep 2000;
|
||||
bg_warp $@FlaviusBG2_id1,"bat_b02",390,10;
|
||||
bg_warp $@FlaviusBG2_id2,"bat_b02",10,290;
|
||||
sleep 3000;
|
||||
mapannounce "bat_b02","Battle of Flavius will close in 1 minute!",1,0x808000;
|
||||
initnpctimer;
|
||||
end;
|
||||
|
||||
OnTimer30000:
|
||||
if( $@FlaviusBG2 == 2 )
|
||||
mapannounce "bat_b02","Battle of Flavius will close in 30 seconds!",1,0x808000;
|
||||
end;
|
||||
OnTimer50000:
|
||||
if( $@FlaviusBG2 == 2 )
|
||||
mapannounce "bat_b02","Battle of Flavius will close in 10 seconds!",1,0x808000;
|
||||
end;
|
||||
|
||||
OnTimer60000:
|
||||
if( $@FlaviusBG2 != 2 )
|
||||
end;
|
||||
OnReset:
|
||||
stopnpctimer;
|
||||
donpcevent "Flavius_BG2::OnRoundStop";
|
||||
set .Guillaume_Score, 0;
|
||||
set .Guillaume_Crystal, 0;
|
||||
set .Guillaume_Loss, 0;
|
||||
set .Croix_Score, 0;
|
||||
set .Croix_Crystal, 0;
|
||||
set .Croix_Loss, 0;
|
||||
set .Match, 0;
|
||||
set $@FlaviusBG2_Victory, 0;
|
||||
// NPC's
|
||||
disablenpc "Guillaume Vintenar#fl2";
|
||||
disablenpc "Croix Vintenar#fl2";
|
||||
disablenpc "Therapist in battle#fl21";
|
||||
disablenpc "Therapist in battle#fl22";
|
||||
|
||||
if( $@FlaviusBG2_id1 ) { bg_destroy $@FlaviusBG2_id1; set $@FlaviusBG2_id1, 0; }
|
||||
if( $@FlaviusBG2_id2 ) { bg_destroy $@FlaviusBG2_id2; set $@FlaviusBG2_id2, 0; }
|
||||
sleep 1000;
|
||||
mapwarp "bat_b02","bat_room",155,150;
|
||||
sleep 2000;
|
||||
maprespawnguildid "bat_b02",0,3; // Just in case someone else
|
||||
sleep 2000;
|
||||
bg_updatescore "bat_b02",0,0;
|
||||
set $@FlaviusBG2, 0;
|
||||
donpcevent "Flavius_BG2::OnReadyCheck";
|
||||
end;
|
||||
}
|
||||
|
||||
// Battleground rewards
|
||||
// *********************************************************************
|
||||
|
||||
bat_b02,390,13,5 script Guillaume Vintenar#fl2 419,{
|
||||
if( $@FlaviusBG2_Victory )
|
||||
{
|
||||
if( $@FlaviusBG2_Victory == Bat_Team )
|
||||
{ // Victory
|
||||
mes "[Swandery]";
|
||||
mes "Blessed Guillaume!!";
|
||||
mes "Let's enjoy our glorious victory!";
|
||||
mes "" + strcharinfo(0) + ", its a sign reflecting victory";
|
||||
close2;
|
||||
set .@Reward, 9;
|
||||
}
|
||||
else
|
||||
{ //
|
||||
mes "[Swandery]";
|
||||
mes "You lost, but you're dedicated to this battle.";
|
||||
mes "This is a reward for your great dedication by Guillaume Marollo!";
|
||||
mes "Just take this defeat a lesson, and later you would definitely learn.";
|
||||
close2;
|
||||
set .@Reward, 3;
|
||||
}
|
||||
|
||||
set Flavius_BG_Tick, gettimetick(2) + 300;
|
||||
getitem 7829, .@Reward;
|
||||
bg_leave;
|
||||
warp "bat_room",155,150;
|
||||
end;
|
||||
}
|
||||
end;
|
||||
}
|
||||
|
||||
bat_b02,10,293,5 script Croix Vintenar#fl2 415,{
|
||||
if( $@FlaviusBG2_Victory )
|
||||
{
|
||||
if( $@FlaviusBG2_Victory == Bat_Team )
|
||||
{ // Victory
|
||||
mes "[Swandery]";
|
||||
mes "Blessed Croax!!";
|
||||
mes "Let's enjoy our glorious victory!";
|
||||
mes "" + strcharinfo(0) + ", its a sign reflecting victory";
|
||||
close2;
|
||||
set .@Reward, 9;
|
||||
}
|
||||
else
|
||||
{ //
|
||||
mes "[Swandery]";
|
||||
mes "Oh, " + strcharinfo(0) + ". Don't be sad.";
|
||||
mes "Even though we didn't win, we did our best.";
|
||||
mes "This is a Royal gift from Croix, and please don't forget this battle. We can win the next.";
|
||||
close2;
|
||||
set .@Reward, 3;
|
||||
}
|
||||
|
||||
set Flavius_BG_Tick, gettimetick(2) + 300;
|
||||
getitem 7829, .@Reward;
|
||||
bg_leave;
|
||||
warp "bat_room",155,150;
|
||||
end;
|
||||
}
|
||||
end;
|
||||
}
|
||||
|
||||
// Battleground Therapist
|
||||
// *********************************************************************
|
||||
|
||||
bat_b02,390,13,5 script Therapist in battle#fl22 95,{
|
||||
mes "[Therapist in battle]";
|
||||
mes "Just close your eyes, and take a deep breathe.";
|
||||
mes "You can be free from pain.";
|
||||
specialeffect2 312;
|
||||
close;
|
||||
}
|
||||
|
||||
bat_b02,10,293,5 script Therapist in battle#fl21 95,{
|
||||
mes "[Therapist in battle]";
|
||||
mes "Just close your eyes, and take a deep breathe.";
|
||||
mes "You can be free from pain.";
|
||||
specialeffect2 312;
|
||||
close;
|
||||
}
|
||||
|
||||
// Battleground Respawn
|
||||
// *********************************************************************
|
||||
|
||||
bat_b02,390,10,0 script #gfl2_respawn 139,{
|
||||
end;
|
||||
|
||||
OnBGStart:
|
||||
initnpctimer;
|
||||
end;
|
||||
|
||||
OnBGStop:
|
||||
stopnpctimer;
|
||||
end;
|
||||
|
||||
OnTimer24000:
|
||||
misceffect 83;
|
||||
end;
|
||||
|
||||
OnTimer25000:
|
||||
areapercentheal "bat_b02",382,2,397,17,100,100;
|
||||
areawarp "bat_b02",382,2,397,17,"bat_b02",311,224;
|
||||
initnpctimer;
|
||||
end;
|
||||
}
|
||||
|
||||
bat_b02,10,290,0 script #cfl2_respawn 139,{
|
||||
end;
|
||||
|
||||
OnBGStart:
|
||||
initnpctimer;
|
||||
end;
|
||||
|
||||
OnBGStop:
|
||||
stopnpctimer;
|
||||
end;
|
||||
|
||||
OnTimer24000:
|
||||
misceffect 83;
|
||||
end;
|
||||
|
||||
OnTimer25000:
|
||||
areapercentheal "bat_b02",2,282,17,297,100,100;
|
||||
areawarp "bat_b02",2,282,17,297,"bat_b02",87,75;
|
||||
initnpctimer;
|
||||
end;
|
||||
}
|
||||
|
||||
// Flags
|
||||
// *********************************************************************
|
||||
|
||||
bat_b02,304,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat32 973
|
||||
bat_b02,319,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat33 973
|
||||
bat_b02,304,218,1 duplicate(Guillaume camp#bat) Guillaume camp#bat34 973
|
||||
bat_b02,319,218,1 duplicate(Guillaume camp#bat) Guillaume camp#bat35 973
|
||||
bat_b02,304,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat36 973
|
||||
bat_b02,304,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat37 973
|
||||
bat_b02,335,142,1 duplicate(Guillaume camp#bat) Guillaume camp#bat38 973
|
||||
bat_b02,335,157,1 duplicate(Guillaume camp#bat) Guillaume camp#bat39 973
|
||||
bat_b02,390,16,1 duplicate(Guillaume camp#bat) Guillaume camp#bat40 973
|
||||
bat_b02,292,163,1 duplicate(Guillaume camp#bat) Guillaume camp#bat41 973
|
||||
bat_b02,292,136,1 duplicate(Guillaume camp#bat) Guillaume camp#bat42 973
|
||||
bat_b02,241,185,1 duplicate(Guillaume camp#bat) Guillaume camp#bat43 973
|
||||
bat_b02,247,179,1 duplicate(Guillaume camp#bat) Guillaume camp#bat44 973
|
||||
|
||||
bat_b02,96,81,1 duplicate(Croix camp#bat) Croix camp#bat30 974
|
||||
bat_b02,96,68,1 duplicate(Croix camp#bat) Croix camp#bat31 974
|
||||
bat_b02,79,81,1 duplicate(Croix camp#bat) Croix camp#bat32 974
|
||||
bat_b02,79,68,1 duplicate(Croix camp#bat) Croix camp#bat33 974
|
||||
bat_b02,96,81,1 duplicate(Croix camp#bat) Croix camp#bat34 974
|
||||
bat_b02,96,81,1 duplicate(Croix camp#bat) Croix camp#bat35 974
|
||||
bat_b02,59,164,1 duplicate(Croix camp#bat) Croix camp#bat36 974
|
||||
bat_b02,59,137,1 duplicate(Croix camp#bat) Croix camp#bat37 974
|
||||
bat_b02,10,296,1 duplicate(Croix camp#bat) Croix camp#bat38 974
|
||||
bat_b02,110,162,1 duplicate(Croix camp#bat) Croix camp#bat39 974
|
||||
bat_b02,110,137,1 duplicate(Croix camp#bat) Croix camp#bat40 974
|
||||
bat_b02,152,120,1 duplicate(Croix camp#bat) Croix camp#bat41 974
|
||||
bat_b02,158,114,1 duplicate(Croix camp#bat) Croix camp#bat42 974
|
||||
|
||||
// MapFlags
|
||||
// *********************************************************************
|
||||
|
||||
bat_b02 mapflag battleground
|
||||
bat_b02 mapflag nomemo
|
||||
bat_b02 mapflag nosave SavePoint
|
||||
bat_b02 mapflag noteleport
|
||||
bat_b02 mapflag nowarp
|
||||
bat_b02 mapflag nowarpto
|
||||
bat_b02 mapflag noreturn
|
||||
bat_b02 mapflag nobranch
|
||||
bat_b02 mapflag nopenalty
|
||||
|
@ -1,488 +1,488 @@
|
||||
// ==============================================================================
|
||||
// BattleGround System - Tierra Valley 1
|
||||
// ==============================================================================
|
||||
|
||||
// Registration NPC's
|
||||
// *********************************************************************
|
||||
|
||||
bat_room,85,227,4 script Registration::TV1R_Guillaume 418,{
|
||||
end;
|
||||
OnInit:
|
||||
waitingroom "Battle Station 10 Players",10,"Tierra_BG1::OnGuillaumeJoin",1;
|
||||
end;
|
||||
OnEnterBG:
|
||||
set $@TierraBG1_id1, waitingroom2bg("bat_a01",50,374,"Tierra_BG1::OnGuillaumeQuit","");
|
||||
end;
|
||||
}
|
||||
|
||||
bat_room,85,204,0 script Registration::TV1R_Croix 414,{
|
||||
end;
|
||||
OnInit:
|
||||
waitingroom "Battle Station 10 Players",10,"Tierra_BG1::OnCroixJoin",1;
|
||||
end;
|
||||
OnEnterBG:
|
||||
set $@TierraBG1_id2, waitingroom2bg("bat_a01",42,16,"Tierra_BG1::OnCroixQuit","");
|
||||
end;
|
||||
}
|
||||
|
||||
// Battleground Engine
|
||||
// *********************************************************************
|
||||
|
||||
- script Tierra_BG1 -1,{
|
||||
end;
|
||||
|
||||
OnInit:
|
||||
disablenpc "Croix Vintenar#tv1";
|
||||
disablenpc "Guillaume Vintenar#tv1";
|
||||
disablenpc "Therapist in battle#tv11";
|
||||
disablenpc "Therapist in battle#tv12";
|
||||
end;
|
||||
|
||||
OnGuillaumeQuit:
|
||||
OnCroixQuit:
|
||||
set BG_Delay_Tick, gettimetick(2) + 1200;
|
||||
end;
|
||||
|
||||
OnGuillaumeJoin:
|
||||
OnCroixJoin:
|
||||
if( $@TierraBG1 == 0 )
|
||||
donpcevent "Tierra_BG1::OnReadyCheck";
|
||||
end;
|
||||
|
||||
OnReadyCheck:
|
||||
if( $@TierraBG1 )
|
||||
end;
|
||||
set .@Guillaume, getwaitingroomstate(0,"TV1R_Guillaume");
|
||||
set .@Croix, getwaitingroomstate(0,"TV1R_Croix");
|
||||
|
||||
if( .@Guillaume < 10 || .@Croix < 10 )
|
||||
{
|
||||
mapannounce "bat_room","Battleground -- Tierra Valley [80-99] G: " + .@Guillaume + "/10, C: " + .@Croix + "/10",1,0xFFA500;
|
||||
end;
|
||||
}
|
||||
|
||||
set $@TierraBG1, 1;
|
||||
donpcevent "TV1R_Croix::OnEnterBG";
|
||||
donpcevent "TV1R_Guillaume::OnEnterBG";
|
||||
donpcevent "Guillaume_TV1B::OnBuild";
|
||||
donpcevent "Croix_TV1B::OnBuild";
|
||||
bg_monster $@TierraBG1_id1,"bat_a01",176,345,"Food Depot",1909,"Tierra_BG1::OnGuillaumeBreak";
|
||||
bg_monster $@TierraBG1_id2,"bat_a01",167,50,"Food Storage",1910,"Tierra_BG1::OnCroixBreak";
|
||||
bg_monster 0,"bat_a01",273,204,"Neutrality Flag",1911,"Tierra_BG1::OnNeutralBreak";
|
||||
|
||||
set .Neutral_Base, 0;
|
||||
set $@TierraBG1_Victory, 0;
|
||||
|
||||
set .Guardian_1, 0;
|
||||
set .Guardian_2, 0;
|
||||
set .Guardian_3, 0;
|
||||
|
||||
enablenpc "Therapist in battle#tv11";
|
||||
enablenpc "Therapist in battle#tv12";
|
||||
disablenpc "Croix Vintenar#tv1";
|
||||
disablenpc "Guillaume Vintenar#tv1";
|
||||
// Respawner
|
||||
donpcevent "#gtv1_respawn::OnBGStart";
|
||||
donpcevent "#ctv1_respawn::OnBGStart";
|
||||
donpcevent "#ntv1_respawn::OnBGStart";
|
||||
// Warp Teams
|
||||
announce "Battleground -- Tierra Valley [80-99] has started!",0,0xFFA500;
|
||||
bg_warp $@TierraBG1_id1,"bat_a01",353,344;
|
||||
bg_warp $@TierraBG1_id2,"bat_a01",353,52;
|
||||
// Final Messages
|
||||
sleep 6000;
|
||||
mapannounce "bat_a01","Guillaume Vintenar Axl Rose : Let's attack to burn down Croix's food storage",1,0x0000FF;
|
||||
sleep 2000;
|
||||
mapannounce "bat_a01","Croix Vintenar Swandery : Master of Valhalla! Let us be gifted with unfailing faith and courage",1,0xFF0000;
|
||||
|
||||
initnpctimer;
|
||||
end;
|
||||
|
||||
OnNeutralBreak:
|
||||
if( getcharid(4) == $@TierraBG1_id1 )
|
||||
{
|
||||
mapannounce "bat_a01","Guillaume obtained a neurality banner, so they have an advantage.",1,0x0000FF;
|
||||
bg_team_setxy $@TierraBG1_id2,42,16;
|
||||
areawarp "bat_a01",52,208,61,217,"bat_a01",42,16;
|
||||
}
|
||||
else if( getcharid(4) == $@TierraBG1_id2 )
|
||||
{
|
||||
mapannounce "bat_a01","Croix obtained a neutrality banner, so they have an advantage.",1,0xFF0000;
|
||||
bg_team_setxy $@TierraBG1_id1,50,374;
|
||||
areawarp "bat_a01",52,208,61,217,"bat_a01",50,374;
|
||||
}
|
||||
else end;
|
||||
|
||||
set .Neutral_Base, getcharid(4);
|
||||
bg_team_setxy .Neutral_Base,56,212;
|
||||
|
||||
if( .Guardian_1 == 0 )
|
||||
set .Guardian_1, bg_monster(.Neutral_Base,"bat_a01",280,233,"Guardian",1949,"Tierra_BG1::OnGuardian1");
|
||||
else
|
||||
bg_monster_set_team .Guardian_1, .Neutral_Base;
|
||||
|
||||
if( .Guardian_2 == 0 )
|
||||
set .Guardian_2, bg_monster(.Neutral_Base,"bat_a01",287,203,"Guardian",1950,"Tierra_BG1::OnGuardian2");
|
||||
else
|
||||
bg_monster_set_team .Guardian_2, .Neutral_Base;
|
||||
|
||||
if( .Guardian_3 == 0 )
|
||||
set .Guardian_3, bg_monster(.Neutral_Base,"bat_a01",268,204,"Guardian",1949,"Tierra_BG1::OnGuardian3");
|
||||
else
|
||||
bg_monster_set_team .Guardian_3, .Neutral_Base;
|
||||
|
||||
sleep 10000;
|
||||
if( $@TierraBG1 != 1 ) end;
|
||||
|
||||
if( .Neutral_Base == $@TierraBG1_id1 )
|
||||
bg_monster .Neutral_Base,"bat_a01",273,204,"Guillaume Flag",1912,"Tierra_BG1::OnNeutralBreak";
|
||||
else if( .Neutral_Base == $@TierraBG1_id2 )
|
||||
bg_monster .Neutral_Base,"bat_a01",273,204,"Croix Flag",1913,"Tierra_BG1::OnNeutralBreak";
|
||||
end;
|
||||
|
||||
OnGuardian1: set .Guardian_1, 0; end;
|
||||
OnGuardian2: set .Guardian_2, 0; end;
|
||||
OnGuardian3: set .Guardian_3, 0; end;
|
||||
|
||||
OnGuillaumeBreak:
|
||||
set $@TierraBG1_Victory, 2;
|
||||
mapannounce "bat_a01","Croix Vintenar Swandery: We destroyed Guillaume's food storehause. We won that! Wow!",1,0xFF0000;
|
||||
donpcevent "Tierra_BG1::OnStop";
|
||||
end;
|
||||
|
||||
OnCroixBreak:
|
||||
set $@TierraBG1_Victory, 1;
|
||||
mapannounce "bat_a01","Guillaume Vintenar Axl Rose: We destroyed Croix's food storehause. We won that! Wow!",1,0x0000FF;
|
||||
donpcevent "Tierra_BG1::OnStop";
|
||||
end;
|
||||
|
||||
OnTimer2400000:
|
||||
mapannounce "bat_a01","Battle of Tierra Gorge will ends in 5 minutes",1,0xFFA500;
|
||||
end;
|
||||
OnTimer2640000:
|
||||
mapannounce "bat_a01","Battle of Tierra Gorge will ends in 1 minute",1,0xFFA500;
|
||||
end;
|
||||
|
||||
OnTimer2700000:
|
||||
set $@TierraBG1_Victory, 3; // Draw Game
|
||||
mapannounce "bat_a01","Battle of Tierra Gorge is over. The time is out, this is a Tie",1,0xFFA500;
|
||||
donpcevent "Tierra_BG1::OnStop";
|
||||
end;
|
||||
|
||||
OnStop:
|
||||
set $@TierraBG1, 2;
|
||||
disablenpc "Therapist in battle#tv11";
|
||||
disablenpc "Therapist in battle#tv12";
|
||||
donpcevent "#gtv1_respawn::OnBGStop";
|
||||
donpcevent "#ctv1_respawn::OnBGStop";
|
||||
donpcevent "#ntv1_respawn::OnBGStop";
|
||||
enablenpc "Croix Vintenar#tv1";
|
||||
enablenpc "Guillaume Vintenar#tv1";
|
||||
killmonster "bat_a01","Tierra_BG1::OnGuillaumeBreak";
|
||||
killmonster "bat_a01","Tierra_BG1::OnCroixBreak";
|
||||
killmonster "bat_a01","Tierra_BG1::OnNeutralBreak";
|
||||
killmonster "bat_a01","Tierra_BG1::OnGuardian1";
|
||||
killmonster "bat_a01","Tierra_BG1::OnGuardian2";
|
||||
killmonster "bat_a01","Tierra_BG1::OnGuardian3";
|
||||
stopnpctimer;
|
||||
sleep 3000;
|
||||
bg_warp $@TierraBG1_id1,"bat_a01",50,374;
|
||||
bg_warp $@TierraBG1_id2,"bat_a01",42,16;
|
||||
sleep 3000;
|
||||
mapannounce "bat_a01","Battle of Tierra Gorge will close in 1 minute!",1,0xFFA500;
|
||||
initnpctimer;
|
||||
end;
|
||||
|
||||
OnTimer30000:
|
||||
if( $@TierraBG1 == 2 )
|
||||
mapannounce "bat_a01","Battle of Tierra Valley will close in 30 seconds!",1,0xFFA500;
|
||||
end;
|
||||
OnTimer50000:
|
||||
if( $@TierraBG1 == 2 )
|
||||
mapannounce "bat_a01","Battle of Tierra Valley will close in 10 seconds!",1,0xFFA500;
|
||||
end;
|
||||
|
||||
OnTimer60000:
|
||||
if( $@TierraBG1 != 2 )
|
||||
end;
|
||||
OnReset:
|
||||
stopnpctimer;
|
||||
set .Neutral_Base, 0;
|
||||
disablenpc "Croix Vintenar#tv1";
|
||||
disablenpc "Guillaume Vintenar#tv1";
|
||||
disablenpc "Therapist in battle#tv11";
|
||||
disablenpc "Therapist in battle#tv12";
|
||||
donpcevent "#gtv1_respawn::OnBGStop";
|
||||
donpcevent "#ctv1_respawn::OnBGStop";
|
||||
donpcevent "#ntv1_respawn::OnBGStop";
|
||||
|
||||
killmonster "bat_a01","Tierra_BG1::OnGuillaumeBreak";
|
||||
killmonster "bat_a01","Tierra_BG1::OnCroixBreak";
|
||||
killmonster "bat_a01","Tierra_BG1::OnNeutralBreak";
|
||||
killmonster "bat_a01","Tierra_BG1::OnGuardian1";
|
||||
killmonster "bat_a01","Tierra_BG1::OnGuardian2";
|
||||
killmonster "bat_a01","Tierra_BG1::OnGuardian3";
|
||||
donpcevent "Guillaume_TV1B::OnDestroy";
|
||||
donpcevent "Croix_TV1B::OnDestroy";
|
||||
|
||||
set $@TierraBG1_Victory, 0;
|
||||
if( $@TierraBG1_id1 ) { bg_destroy $@TierraBG1_id1; set $@TierraBG1_id1, 0; }
|
||||
if( $@TierraBG1_id2 ) { bg_destroy $@TierraBG1_id2; set $@TierraBG1_id2, 0; }
|
||||
sleep 1000;
|
||||
mapwarp "bat_a01","bat_room",155,150;
|
||||
sleep 2000;
|
||||
maprespawnguildid "bat_a01",0,3; // Just in case someone else
|
||||
sleep 2000;
|
||||
set $@TierraBG1, 0;
|
||||
donpcevent "Tierra_BG1::OnReadyCheck"; // Maybe a game is ready to start
|
||||
end;
|
||||
}
|
||||
|
||||
// MapFlags
|
||||
// *********************************************************************
|
||||
|
||||
bat_a01 mapflag battleground
|
||||
bat_a01 mapflag nomemo
|
||||
bat_a01 mapflag nosave SavePoint
|
||||
bat_a01 mapflag noteleport
|
||||
bat_a01 mapflag nowarp
|
||||
bat_a01 mapflag nowarpto
|
||||
bat_a01 mapflag noreturn
|
||||
bat_a01 mapflag nobranch
|
||||
bat_a01 mapflag nopenalty
|
||||
|
||||
// Other Flags
|
||||
// *********************************************************************
|
||||
|
||||
bat_a01,148,85,1 duplicate(Croix camp#bat) Croix camp#bat10 974
|
||||
bat_a01,155,85,1 duplicate(Croix camp#bat) Croix camp#bat11 974
|
||||
bat_a01,357,75,1 duplicate(Croix camp#bat) Croix camp#bat12 974
|
||||
bat_a01,348,74,1 duplicate(Croix camp#bat) Croix camp#bat13 974
|
||||
bat_a01,199,49,1 duplicate(Croix camp#bat) Croix camp#bat14 974
|
||||
bat_a01,168,16,1 duplicate(Croix camp#bat) Croix camp#bat15 974
|
||||
bat_a01,138,12,1 duplicate(Croix camp#bat) Croix camp#bat16 974
|
||||
bat_a01,108,35,1 duplicate(Croix camp#bat) Croix camp#bat17 974
|
||||
bat_a01,164,308,1 duplicate(Guillaume camp#bat) Guillaume camp#bat10 973
|
||||
bat_a01,157,308,1 duplicate(Guillaume camp#bat) Guillaume camp#bat11 973
|
||||
bat_a01,359,327,1 duplicate(Guillaume camp#bat) Guillaume camp#bat12 973
|
||||
bat_a01,350,326,1 duplicate(Guillaume camp#bat) Guillaume camp#bat13 973
|
||||
bat_a01,209,344,1 duplicate(Guillaume camp#bat) Guillaume camp#bat14 973
|
||||
bat_a01,173,380,1 duplicate(Guillaume camp#bat) Guillaume camp#bat15 973
|
||||
bat_a01,150,380,1 duplicate(Guillaume camp#bat) Guillaume camp#bat16 973
|
||||
bat_a01,118,357,1 duplicate(Guillaume camp#bat) Guillaume camp#bat17 973
|
||||
bat_a01,119,336,1 duplicate(Guillaume camp#bat) Guillaume camp#bat18 973
|
||||
|
||||
// Barricades
|
||||
// *********************************************************************
|
||||
|
||||
- script Guillaume_TV1B -1,{
|
||||
end;
|
||||
|
||||
OnBuild:
|
||||
for( set .@i, 0; .@i < 16; set .@i, .@i + 1 )
|
||||
bg_monster 0,"bat_a01",170+.@i,130,"Barricade",1906,"Guillaume_TV1B::OnWall";
|
||||
|
||||
setwall "bat_a01",170,130,16,6,1,"bat_a01_g1";
|
||||
set .MyMobCount,16;
|
||||
end;
|
||||
|
||||
OnDestroy:
|
||||
killmonster "bat_a01","Guillaume_TV1B::OnWall";
|
||||
delwall "bat_a01_g1";
|
||||
set .MyMobCount,0;
|
||||
end;
|
||||
|
||||
OnWall:
|
||||
if( set(.MyMobCount,.MyMobCount - 1) < 1 )
|
||||
{
|
||||
delwall "bat_a01_g1";
|
||||
mapannounce "bat_a01","South Gate : The Gate has been Destroy!!",1,0xFFA500;
|
||||
}
|
||||
end;
|
||||
}
|
||||
|
||||
- script Croix_TV1B -1,{
|
||||
end;
|
||||
|
||||
OnBuild:
|
||||
for( set .@i, 0; .@i < 16; set .@i, .@i + 1 )
|
||||
bg_monster 0,"bat_a01",186+.@i,266,"Barricade",1906,"Croix_TV1B::OnWall";
|
||||
|
||||
setwall "bat_a01",186,266,16,6,1,"bat_a01_c1";
|
||||
set .MyMobCount,16;
|
||||
end;
|
||||
|
||||
OnDestroy:
|
||||
killmonster "bat_a01","Croix_TV1B::OnWall";
|
||||
delwall "bat_a01_c1";
|
||||
set .MyMobCount,0;
|
||||
end;
|
||||
|
||||
OnWall:
|
||||
if( set(.MyMobCount,.MyMobCount - 1) < 1 )
|
||||
{
|
||||
delwall "bat_a01_c1";
|
||||
mapannounce "bat_a01","North Gate : A Gate has been Destroy!!",1,0xFFA500;
|
||||
}
|
||||
end;
|
||||
}
|
||||
|
||||
// Battleground rewards
|
||||
// *********************************************************************
|
||||
|
||||
bat_a01,45,19,3 script Croix Vintenar#tv1 415,{
|
||||
if( $@TierraBG1_Victory )
|
||||
{
|
||||
if( $@TierraBG1_Victory == Bat_Team )
|
||||
{ // Victory
|
||||
set .@Reward, 3;
|
||||
mes "[Swandery]";
|
||||
mes "Blessed Croax!!";
|
||||
mes "Let's enjoy our glorious victory!";
|
||||
mes "" + strcharinfo(0) + ", its a sign reflecting victory";
|
||||
close2;
|
||||
}
|
||||
else
|
||||
{ //
|
||||
set .@Reward, 1;
|
||||
mes "[Swandery]";
|
||||
mes "Oh, " + strcharinfo(0) + ". Don't be sad.";
|
||||
mes "Even though we didn't win, we did our best.";
|
||||
mes "This is a Royal gift from Croix, and please don't forget this battle. We can win the next.";
|
||||
close2;
|
||||
}
|
||||
|
||||
set Tierra_BG_Tick, gettimetick(2) + 300;
|
||||
getitem 7828, .@Reward;
|
||||
bg_leave;
|
||||
warp "bat_room",155,150;
|
||||
end;
|
||||
}
|
||||
end;
|
||||
}
|
||||
|
||||
bat_a01,53,377,3 script Guillaume Vintenar#tv1 419,{
|
||||
if( $@TierraBG1_Victory )
|
||||
{
|
||||
if( $@TierraBG1_Victory == Bat_Team )
|
||||
{ // Victory
|
||||
set .@Reward, 3;
|
||||
mes "[Swandery]";
|
||||
mes "Blessed Guillaume!!";
|
||||
mes "Let's enjoy our glorious victory!";
|
||||
mes "" + strcharinfo(0) + ", its a sign reflecting victory";
|
||||
close2;
|
||||
}
|
||||
else
|
||||
{ //
|
||||
set .@Reward, 1;
|
||||
mes "[Swandery]";
|
||||
mes "You lost, but you're dedicated to this battle.";
|
||||
mes "This is a reward for your great dedication by Guillaume Marollo!";
|
||||
mes "Just take this defeat a lesson, and later you would definitely learn.";
|
||||
close2;
|
||||
}
|
||||
|
||||
set Tierra_BG_Tick, gettimetick(2) + 300;
|
||||
getitem 7828, .@Reward;
|
||||
bg_leave;
|
||||
warp "bat_room",155,150;
|
||||
end;
|
||||
}
|
||||
end;
|
||||
}
|
||||
|
||||
// Battleground Therapist
|
||||
// *********************************************************************
|
||||
|
||||
bat_a01,60,216,3 script Ghost#tv13 950,{
|
||||
mes "[Ghost in valley]";
|
||||
mes "Boo...Boo...";
|
||||
specialeffect2 312;
|
||||
close;
|
||||
}
|
||||
|
||||
bat_a01,53,377,3 script Therapist in battle#tv12 95,{
|
||||
mes "[Therapist in battle]";
|
||||
mes "Just close your eyes, and take a deep breathe.";
|
||||
mes "You can be free from pain.";
|
||||
specialeffect2 312;
|
||||
close;
|
||||
}
|
||||
|
||||
bat_a01,45,18,3 script Therapist in battle#tv11 95,{
|
||||
mes "[Therapist in battle]";
|
||||
mes "Just close your eyes, and take a deep breathe.";
|
||||
mes "You can be free from pain.";
|
||||
specialeffect2 312;
|
||||
close;
|
||||
}
|
||||
|
||||
// Battleground Respawn
|
||||
// *********************************************************************
|
||||
|
||||
bat_a01,57,213,0 script #ntv1_respawn 139,{
|
||||
end;
|
||||
|
||||
OnBGStart:
|
||||
initnpctimer;
|
||||
end;
|
||||
|
||||
OnBGStop:
|
||||
stopnpctimer;
|
||||
end;
|
||||
|
||||
OnTimer19000:
|
||||
misceffect 83;
|
||||
end;
|
||||
|
||||
OnTimer20000:
|
||||
areapercentheal "bat_a01",52,208,61,217,100,100;
|
||||
areawarp "bat_a01",52,208,61,217,"bat_a01",301,208;
|
||||
initnpctimer;
|
||||
end;
|
||||
}
|
||||
|
||||
bat_a01,50,374,0 script #gtv1_respawn 139,{
|
||||
end;
|
||||
|
||||
OnBGStart:
|
||||
initnpctimer;
|
||||
end;
|
||||
|
||||
OnBGStop:
|
||||
stopnpctimer;
|
||||
end;
|
||||
|
||||
OnTimer24000:
|
||||
misceffect 83;
|
||||
end;
|
||||
|
||||
OnTimer25000:
|
||||
areapercentheal "bat_a01",46,370,54,378,100,100;
|
||||
areawarp "bat_a01",46,370,54,378,"bat_a01",354,340;
|
||||
initnpctimer;
|
||||
end;
|
||||
}
|
||||
|
||||
bat_a01,42,16,0 script #ctv1_respawn 139,{
|
||||
end;
|
||||
|
||||
OnBGStart:
|
||||
initnpctimer;
|
||||
end;
|
||||
|
||||
OnBGStop:
|
||||
stopnpctimer;
|
||||
end;
|
||||
|
||||
OnTimer24000:
|
||||
misceffect 83;
|
||||
end;
|
||||
|
||||
OnTimer25000:
|
||||
areapercentheal "bat_a01",38,12,47,21,100,100;
|
||||
areawarp "bat_a01",38,12,47,21,"bat_a01",354,57;
|
||||
initnpctimer;
|
||||
end;
|
||||
}
|
||||
// ==============================================================================
|
||||
// BattleGround System - Tierra Valley 1
|
||||
// ==============================================================================
|
||||
|
||||
// Registration NPC's
|
||||
// *********************************************************************
|
||||
|
||||
bat_room,85,227,4 script Registration::TV1R_Guillaume 418,{
|
||||
end;
|
||||
OnInit:
|
||||
waitingroom "Battle Station 10 Players",10,"Tierra_BG1::OnGuillaumeJoin",1;
|
||||
end;
|
||||
OnEnterBG:
|
||||
set $@TierraBG1_id1, waitingroom2bg("bat_a01",50,374,"Tierra_BG1::OnGuillaumeQuit","");
|
||||
end;
|
||||
}
|
||||
|
||||
bat_room,85,204,0 script Registration::TV1R_Croix 414,{
|
||||
end;
|
||||
OnInit:
|
||||
waitingroom "Battle Station 10 Players",10,"Tierra_BG1::OnCroixJoin",1;
|
||||
end;
|
||||
OnEnterBG:
|
||||
set $@TierraBG1_id2, waitingroom2bg("bat_a01",42,16,"Tierra_BG1::OnCroixQuit","");
|
||||
end;
|
||||
}
|
||||
|
||||
// Battleground Engine
|
||||
// *********************************************************************
|
||||
|
||||
- script Tierra_BG1 -1,{
|
||||
end;
|
||||
|
||||
OnInit:
|
||||
disablenpc "Croix Vintenar#tv1";
|
||||
disablenpc "Guillaume Vintenar#tv1";
|
||||
disablenpc "Therapist in battle#tv11";
|
||||
disablenpc "Therapist in battle#tv12";
|
||||
end;
|
||||
|
||||
OnGuillaumeQuit:
|
||||
OnCroixQuit:
|
||||
set BG_Delay_Tick, gettimetick(2) + 1200;
|
||||
end;
|
||||
|
||||
OnGuillaumeJoin:
|
||||
OnCroixJoin:
|
||||
if( $@TierraBG1 == 0 )
|
||||
donpcevent "Tierra_BG1::OnReadyCheck";
|
||||
end;
|
||||
|
||||
OnReadyCheck:
|
||||
if( $@TierraBG1 )
|
||||
end;
|
||||
set .@Guillaume, getwaitingroomstate(0,"TV1R_Guillaume");
|
||||
set .@Croix, getwaitingroomstate(0,"TV1R_Croix");
|
||||
|
||||
if( .@Guillaume < 10 || .@Croix < 10 )
|
||||
{
|
||||
mapannounce "bat_room","Battleground -- Tierra Valley [80-99] G: " + .@Guillaume + "/10, C: " + .@Croix + "/10",1,0xFFA500;
|
||||
end;
|
||||
}
|
||||
|
||||
set $@TierraBG1, 1;
|
||||
donpcevent "TV1R_Croix::OnEnterBG";
|
||||
donpcevent "TV1R_Guillaume::OnEnterBG";
|
||||
donpcevent "Guillaume_TV1B::OnBuild";
|
||||
donpcevent "Croix_TV1B::OnBuild";
|
||||
bg_monster $@TierraBG1_id1,"bat_a01",176,345,"Food Depot",1909,"Tierra_BG1::OnGuillaumeBreak";
|
||||
bg_monster $@TierraBG1_id2,"bat_a01",167,50,"Food Storage",1910,"Tierra_BG1::OnCroixBreak";
|
||||
bg_monster 0,"bat_a01",273,204,"Neutrality Flag",1911,"Tierra_BG1::OnNeutralBreak";
|
||||
|
||||
set .Neutral_Base, 0;
|
||||
set $@TierraBG1_Victory, 0;
|
||||
|
||||
set .Guardian_1, 0;
|
||||
set .Guardian_2, 0;
|
||||
set .Guardian_3, 0;
|
||||
|
||||
enablenpc "Therapist in battle#tv11";
|
||||
enablenpc "Therapist in battle#tv12";
|
||||
disablenpc "Croix Vintenar#tv1";
|
||||
disablenpc "Guillaume Vintenar#tv1";
|
||||
// Respawner
|
||||
donpcevent "#gtv1_respawn::OnBGStart";
|
||||
donpcevent "#ctv1_respawn::OnBGStart";
|
||||
donpcevent "#ntv1_respawn::OnBGStart";
|
||||
// Warp Teams
|
||||
announce "Battleground -- Tierra Valley [80-99] has started!",0,0xFFA500;
|
||||
bg_warp $@TierraBG1_id1,"bat_a01",353,344;
|
||||
bg_warp $@TierraBG1_id2,"bat_a01",353,52;
|
||||
// Final Messages
|
||||
sleep 6000;
|
||||
mapannounce "bat_a01","Guillaume Vintenar Axl Rose : Let's attack to burn down Croix's food storage",1,0x0000FF;
|
||||
sleep 2000;
|
||||
mapannounce "bat_a01","Croix Vintenar Swandery : Master of Valhalla! Let us be gifted with unfailing faith and courage",1,0xFF0000;
|
||||
|
||||
initnpctimer;
|
||||
end;
|
||||
|
||||
OnNeutralBreak:
|
||||
if( getcharid(4) == $@TierraBG1_id1 )
|
||||
{
|
||||
mapannounce "bat_a01","Guillaume obtained a neurality banner, so they have an advantage.",1,0x0000FF;
|
||||
bg_team_setxy $@TierraBG1_id2,42,16;
|
||||
areawarp "bat_a01",52,208,61,217,"bat_a01",42,16;
|
||||
}
|
||||
else if( getcharid(4) == $@TierraBG1_id2 )
|
||||
{
|
||||
mapannounce "bat_a01","Croix obtained a neutrality banner, so they have an advantage.",1,0xFF0000;
|
||||
bg_team_setxy $@TierraBG1_id1,50,374;
|
||||
areawarp "bat_a01",52,208,61,217,"bat_a01",50,374;
|
||||
}
|
||||
else end;
|
||||
|
||||
set .Neutral_Base, getcharid(4);
|
||||
bg_team_setxy .Neutral_Base,56,212;
|
||||
|
||||
if( .Guardian_1 == 0 )
|
||||
set .Guardian_1, bg_monster(.Neutral_Base,"bat_a01",280,233,"Guardian",1949,"Tierra_BG1::OnGuardian1");
|
||||
else
|
||||
bg_monster_set_team .Guardian_1, .Neutral_Base;
|
||||
|
||||
if( .Guardian_2 == 0 )
|
||||
set .Guardian_2, bg_monster(.Neutral_Base,"bat_a01",287,203,"Guardian",1950,"Tierra_BG1::OnGuardian2");
|
||||
else
|
||||
bg_monster_set_team .Guardian_2, .Neutral_Base;
|
||||
|
||||
if( .Guardian_3 == 0 )
|
||||
set .Guardian_3, bg_monster(.Neutral_Base,"bat_a01",268,204,"Guardian",1949,"Tierra_BG1::OnGuardian3");
|
||||
else
|
||||
bg_monster_set_team .Guardian_3, .Neutral_Base;
|
||||
|
||||
sleep 10000;
|
||||
if( $@TierraBG1 != 1 ) end;
|
||||
|
||||
if( .Neutral_Base == $@TierraBG1_id1 )
|
||||
bg_monster .Neutral_Base,"bat_a01",273,204,"Guillaume Flag",1912,"Tierra_BG1::OnNeutralBreak";
|
||||
else if( .Neutral_Base == $@TierraBG1_id2 )
|
||||
bg_monster .Neutral_Base,"bat_a01",273,204,"Croix Flag",1913,"Tierra_BG1::OnNeutralBreak";
|
||||
end;
|
||||
|
||||
OnGuardian1: set .Guardian_1, 0; end;
|
||||
OnGuardian2: set .Guardian_2, 0; end;
|
||||
OnGuardian3: set .Guardian_3, 0; end;
|
||||
|
||||
OnGuillaumeBreak:
|
||||
set $@TierraBG1_Victory, 2;
|
||||
mapannounce "bat_a01","Croix Vintenar Swandery: We destroyed Guillaume's food storehause. We won that! Wow!",1,0xFF0000;
|
||||
donpcevent "Tierra_BG1::OnStop";
|
||||
end;
|
||||
|
||||
OnCroixBreak:
|
||||
set $@TierraBG1_Victory, 1;
|
||||
mapannounce "bat_a01","Guillaume Vintenar Axl Rose: We destroyed Croix's food storehause. We won that! Wow!",1,0x0000FF;
|
||||
donpcevent "Tierra_BG1::OnStop";
|
||||
end;
|
||||
|
||||
OnTimer2400000:
|
||||
mapannounce "bat_a01","Battle of Tierra Gorge will ends in 5 minutes",1,0xFFA500;
|
||||
end;
|
||||
OnTimer2640000:
|
||||
mapannounce "bat_a01","Battle of Tierra Gorge will ends in 1 minute",1,0xFFA500;
|
||||
end;
|
||||
|
||||
OnTimer2700000:
|
||||
set $@TierraBG1_Victory, 3; // Draw Game
|
||||
mapannounce "bat_a01","Battle of Tierra Gorge is over. The time is out, this is a Tie",1,0xFFA500;
|
||||
donpcevent "Tierra_BG1::OnStop";
|
||||
end;
|
||||
|
||||
OnStop:
|
||||
set $@TierraBG1, 2;
|
||||
disablenpc "Therapist in battle#tv11";
|
||||
disablenpc "Therapist in battle#tv12";
|
||||
donpcevent "#gtv1_respawn::OnBGStop";
|
||||
donpcevent "#ctv1_respawn::OnBGStop";
|
||||
donpcevent "#ntv1_respawn::OnBGStop";
|
||||
enablenpc "Croix Vintenar#tv1";
|
||||
enablenpc "Guillaume Vintenar#tv1";
|
||||
killmonster "bat_a01","Tierra_BG1::OnGuillaumeBreak";
|
||||
killmonster "bat_a01","Tierra_BG1::OnCroixBreak";
|
||||
killmonster "bat_a01","Tierra_BG1::OnNeutralBreak";
|
||||
killmonster "bat_a01","Tierra_BG1::OnGuardian1";
|
||||
killmonster "bat_a01","Tierra_BG1::OnGuardian2";
|
||||
killmonster "bat_a01","Tierra_BG1::OnGuardian3";
|
||||
stopnpctimer;
|
||||
sleep 3000;
|
||||
bg_warp $@TierraBG1_id1,"bat_a01",50,374;
|
||||
bg_warp $@TierraBG1_id2,"bat_a01",42,16;
|
||||
sleep 3000;
|
||||
mapannounce "bat_a01","Battle of Tierra Gorge will close in 1 minute!",1,0xFFA500;
|
||||
initnpctimer;
|
||||
end;
|
||||
|
||||
OnTimer30000:
|
||||
if( $@TierraBG1 == 2 )
|
||||
mapannounce "bat_a01","Battle of Tierra Valley will close in 30 seconds!",1,0xFFA500;
|
||||
end;
|
||||
OnTimer50000:
|
||||
if( $@TierraBG1 == 2 )
|
||||
mapannounce "bat_a01","Battle of Tierra Valley will close in 10 seconds!",1,0xFFA500;
|
||||
end;
|
||||
|
||||
OnTimer60000:
|
||||
if( $@TierraBG1 != 2 )
|
||||
end;
|
||||
OnReset:
|
||||
stopnpctimer;
|
||||
set .Neutral_Base, 0;
|
||||
disablenpc "Croix Vintenar#tv1";
|
||||
disablenpc "Guillaume Vintenar#tv1";
|
||||
disablenpc "Therapist in battle#tv11";
|
||||
disablenpc "Therapist in battle#tv12";
|
||||
donpcevent "#gtv1_respawn::OnBGStop";
|
||||
donpcevent "#ctv1_respawn::OnBGStop";
|
||||
donpcevent "#ntv1_respawn::OnBGStop";
|
||||
|
||||
killmonster "bat_a01","Tierra_BG1::OnGuillaumeBreak";
|
||||
killmonster "bat_a01","Tierra_BG1::OnCroixBreak";
|
||||
killmonster "bat_a01","Tierra_BG1::OnNeutralBreak";
|
||||
killmonster "bat_a01","Tierra_BG1::OnGuardian1";
|
||||
killmonster "bat_a01","Tierra_BG1::OnGuardian2";
|
||||
killmonster "bat_a01","Tierra_BG1::OnGuardian3";
|
||||
donpcevent "Guillaume_TV1B::OnDestroy";
|
||||
donpcevent "Croix_TV1B::OnDestroy";
|
||||
|
||||
set $@TierraBG1_Victory, 0;
|
||||
if( $@TierraBG1_id1 ) { bg_destroy $@TierraBG1_id1; set $@TierraBG1_id1, 0; }
|
||||
if( $@TierraBG1_id2 ) { bg_destroy $@TierraBG1_id2; set $@TierraBG1_id2, 0; }
|
||||
sleep 1000;
|
||||
mapwarp "bat_a01","bat_room",155,150;
|
||||
sleep 2000;
|
||||
maprespawnguildid "bat_a01",0,3; // Just in case someone else
|
||||
sleep 2000;
|
||||
set $@TierraBG1, 0;
|
||||
donpcevent "Tierra_BG1::OnReadyCheck"; // Maybe a game is ready to start
|
||||
end;
|
||||
}
|
||||
|
||||
// MapFlags
|
||||
// *********************************************************************
|
||||
|
||||
bat_a01 mapflag battleground
|
||||
bat_a01 mapflag nomemo
|
||||
bat_a01 mapflag nosave SavePoint
|
||||
bat_a01 mapflag noteleport
|
||||
bat_a01 mapflag nowarp
|
||||
bat_a01 mapflag nowarpto
|
||||
bat_a01 mapflag noreturn
|
||||
bat_a01 mapflag nobranch
|
||||
bat_a01 mapflag nopenalty
|
||||
|
||||
// Other Flags
|
||||
// *********************************************************************
|
||||
|
||||
bat_a01,148,85,1 duplicate(Croix camp#bat) Croix camp#bat10 974
|
||||
bat_a01,155,85,1 duplicate(Croix camp#bat) Croix camp#bat11 974
|
||||
bat_a01,357,75,1 duplicate(Croix camp#bat) Croix camp#bat12 974
|
||||
bat_a01,348,74,1 duplicate(Croix camp#bat) Croix camp#bat13 974
|
||||
bat_a01,199,49,1 duplicate(Croix camp#bat) Croix camp#bat14 974
|
||||
bat_a01,168,16,1 duplicate(Croix camp#bat) Croix camp#bat15 974
|
||||
bat_a01,138,12,1 duplicate(Croix camp#bat) Croix camp#bat16 974
|
||||
bat_a01,108,35,1 duplicate(Croix camp#bat) Croix camp#bat17 974
|
||||
bat_a01,164,308,1 duplicate(Guillaume camp#bat) Guillaume camp#bat10 973
|
||||
bat_a01,157,308,1 duplicate(Guillaume camp#bat) Guillaume camp#bat11 973
|
||||
bat_a01,359,327,1 duplicate(Guillaume camp#bat) Guillaume camp#bat12 973
|
||||
bat_a01,350,326,1 duplicate(Guillaume camp#bat) Guillaume camp#bat13 973
|
||||
bat_a01,209,344,1 duplicate(Guillaume camp#bat) Guillaume camp#bat14 973
|
||||
bat_a01,173,380,1 duplicate(Guillaume camp#bat) Guillaume camp#bat15 973
|
||||
bat_a01,150,380,1 duplicate(Guillaume camp#bat) Guillaume camp#bat16 973
|
||||
bat_a01,118,357,1 duplicate(Guillaume camp#bat) Guillaume camp#bat17 973
|
||||
bat_a01,119,336,1 duplicate(Guillaume camp#bat) Guillaume camp#bat18 973
|
||||
|
||||
// Barricades
|
||||
// *********************************************************************
|
||||
|
||||
- script Guillaume_TV1B -1,{
|
||||
end;
|
||||
|
||||
OnBuild:
|
||||
for( set .@i, 0; .@i < 16; set .@i, .@i + 1 )
|
||||
bg_monster 0,"bat_a01",170+.@i,130,"Barricade",1906,"Guillaume_TV1B::OnWall";
|
||||
|
||||
setwall "bat_a01",170,130,16,6,1,"bat_a01_g1";
|
||||
set .MyMobCount,16;
|
||||
end;
|
||||
|
||||
OnDestroy:
|
||||
killmonster "bat_a01","Guillaume_TV1B::OnWall";
|
||||
delwall "bat_a01_g1";
|
||||
set .MyMobCount,0;
|
||||
end;
|
||||
|
||||
OnWall:
|
||||
if( set(.MyMobCount,.MyMobCount - 1) < 1 )
|
||||
{
|
||||
delwall "bat_a01_g1";
|
||||
mapannounce "bat_a01","South Gate : The Gate has been Destroy!!",1,0xFFA500;
|
||||
}
|
||||
end;
|
||||
}
|
||||
|
||||
- script Croix_TV1B -1,{
|
||||
end;
|
||||
|
||||
OnBuild:
|
||||
for( set .@i, 0; .@i < 16; set .@i, .@i + 1 )
|
||||
bg_monster 0,"bat_a01",186+.@i,266,"Barricade",1906,"Croix_TV1B::OnWall";
|
||||
|
||||
setwall "bat_a01",186,266,16,6,1,"bat_a01_c1";
|
||||
set .MyMobCount,16;
|
||||
end;
|
||||
|
||||
OnDestroy:
|
||||
killmonster "bat_a01","Croix_TV1B::OnWall";
|
||||
delwall "bat_a01_c1";
|
||||
set .MyMobCount,0;
|
||||
end;
|
||||
|
||||
OnWall:
|
||||
if( set(.MyMobCount,.MyMobCount - 1) < 1 )
|
||||
{
|
||||
delwall "bat_a01_c1";
|
||||
mapannounce "bat_a01","North Gate : A Gate has been Destroy!!",1,0xFFA500;
|
||||
}
|
||||
end;
|
||||
}
|
||||
|
||||
// Battleground rewards
|
||||
// *********************************************************************
|
||||
|
||||
bat_a01,45,19,3 script Croix Vintenar#tv1 415,{
|
||||
if( $@TierraBG1_Victory )
|
||||
{
|
||||
if( $@TierraBG1_Victory == Bat_Team )
|
||||
{ // Victory
|
||||
set .@Reward, 3;
|
||||
mes "[Swandery]";
|
||||
mes "Blessed Croax!!";
|
||||
mes "Let's enjoy our glorious victory!";
|
||||
mes "" + strcharinfo(0) + ", its a sign reflecting victory";
|
||||
close2;
|
||||
}
|
||||
else
|
||||
{ //
|
||||
set .@Reward, 1;
|
||||
mes "[Swandery]";
|
||||
mes "Oh, " + strcharinfo(0) + ". Don't be sad.";
|
||||
mes "Even though we didn't win, we did our best.";
|
||||
mes "This is a Royal gift from Croix, and please don't forget this battle. We can win the next.";
|
||||
close2;
|
||||
}
|
||||
|
||||
set Tierra_BG_Tick, gettimetick(2) + 300;
|
||||
getitem 7828, .@Reward;
|
||||
bg_leave;
|
||||
warp "bat_room",155,150;
|
||||
end;
|
||||
}
|
||||
end;
|
||||
}
|
||||
|
||||
bat_a01,53,377,3 script Guillaume Vintenar#tv1 419,{
|
||||
if( $@TierraBG1_Victory )
|
||||
{
|
||||
if( $@TierraBG1_Victory == Bat_Team )
|
||||
{ // Victory
|
||||
set .@Reward, 3;
|
||||
mes "[Swandery]";
|
||||
mes "Blessed Guillaume!!";
|
||||
mes "Let's enjoy our glorious victory!";
|
||||
mes "" + strcharinfo(0) + ", its a sign reflecting victory";
|
||||
close2;
|
||||
}
|
||||
else
|
||||
{ //
|
||||
set .@Reward, 1;
|
||||
mes "[Swandery]";
|
||||
mes "You lost, but you're dedicated to this battle.";
|
||||
mes "This is a reward for your great dedication by Guillaume Marollo!";
|
||||
mes "Just take this defeat a lesson, and later you would definitely learn.";
|
||||
close2;
|
||||
}
|
||||
|
||||
set Tierra_BG_Tick, gettimetick(2) + 300;
|
||||
getitem 7828, .@Reward;
|
||||
bg_leave;
|
||||
warp "bat_room",155,150;
|
||||
end;
|
||||
}
|
||||
end;
|
||||
}
|
||||
|
||||
// Battleground Therapist
|
||||
// *********************************************************************
|
||||
|
||||
bat_a01,60,216,3 script Ghost#tv13 950,{
|
||||
mes "[Ghost in valley]";
|
||||
mes "Boo...Boo...";
|
||||
specialeffect2 312;
|
||||
close;
|
||||
}
|
||||
|
||||
bat_a01,53,377,3 script Therapist in battle#tv12 95,{
|
||||
mes "[Therapist in battle]";
|
||||
mes "Just close your eyes, and take a deep breathe.";
|
||||
mes "You can be free from pain.";
|
||||
specialeffect2 312;
|
||||
close;
|
||||
}
|
||||
|
||||
bat_a01,45,18,3 script Therapist in battle#tv11 95,{
|
||||
mes "[Therapist in battle]";
|
||||
mes "Just close your eyes, and take a deep breathe.";
|
||||
mes "You can be free from pain.";
|
||||
specialeffect2 312;
|
||||
close;
|
||||
}
|
||||
|
||||
// Battleground Respawn
|
||||
// *********************************************************************
|
||||
|
||||
bat_a01,57,213,0 script #ntv1_respawn 139,{
|
||||
end;
|
||||
|
||||
OnBGStart:
|
||||
initnpctimer;
|
||||
end;
|
||||
|
||||
OnBGStop:
|
||||
stopnpctimer;
|
||||
end;
|
||||
|
||||
OnTimer19000:
|
||||
misceffect 83;
|
||||
end;
|
||||
|
||||
OnTimer20000:
|
||||
areapercentheal "bat_a01",52,208,61,217,100,100;
|
||||
areawarp "bat_a01",52,208,61,217,"bat_a01",301,208;
|
||||
initnpctimer;
|
||||
end;
|
||||
}
|
||||
|
||||
bat_a01,50,374,0 script #gtv1_respawn 139,{
|
||||
end;
|
||||
|
||||
OnBGStart:
|
||||
initnpctimer;
|
||||
end;
|
||||
|
||||
OnBGStop:
|
||||
stopnpctimer;
|
||||
end;
|
||||
|
||||
OnTimer24000:
|
||||
misceffect 83;
|
||||
end;
|
||||
|
||||
OnTimer25000:
|
||||
areapercentheal "bat_a01",46,370,54,378,100,100;
|
||||
areawarp "bat_a01",46,370,54,378,"bat_a01",354,340;
|
||||
initnpctimer;
|
||||
end;
|
||||
}
|
||||
|
||||
bat_a01,42,16,0 script #ctv1_respawn 139,{
|
||||
end;
|
||||
|
||||
OnBGStart:
|
||||
initnpctimer;
|
||||
end;
|
||||
|
||||
OnBGStop:
|
||||
stopnpctimer;
|
||||
end;
|
||||
|
||||
OnTimer24000:
|
||||
misceffect 83;
|
||||
end;
|
||||
|
||||
OnTimer25000:
|
||||
areapercentheal "bat_a01",38,12,47,21,100,100;
|
||||
areawarp "bat_a01",38,12,47,21,"bat_a01",354,57;
|
||||
initnpctimer;
|
||||
end;
|
||||
}
|
||||
|
@ -1,488 +1,488 @@
|
||||
// ==============================================================================
|
||||
// BattleGround System - Tierra Valley 2
|
||||
// ==============================================================================
|
||||
|
||||
// Registration NPC's
|
||||
// *********************************************************************
|
||||
|
||||
bat_room,85,97,4 script Registration::TV2R_Guillaume 418,{
|
||||
end;
|
||||
OnInit:
|
||||
waitingroom "Battle Station 10 Players",10,"Tierra_BG2::OnGuillaumeJoin",1;
|
||||
end;
|
||||
OnEnterBG:
|
||||
set $@TierraBG2_id1, waitingroom2bg("bat_a02",50,374,"Tierra_BG2::OnGuillaumeQuit","");
|
||||
end;
|
||||
}
|
||||
|
||||
bat_room,85,74,0 script Registration::TV2R_Croix 414,{
|
||||
end;
|
||||
OnInit:
|
||||
waitingroom "Battle Station 10 Players",10,"Tierra_BG2::OnCroixJoin",1;
|
||||
end;
|
||||
OnEnterBG:
|
||||
set $@TierraBG2_id2, waitingroom2bg("bat_a02",42,16,"Tierra_BG2::OnCroixQuit","");
|
||||
end;
|
||||
}
|
||||
|
||||
// Battleground Engine
|
||||
// *********************************************************************
|
||||
|
||||
- script Tierra_BG2 -1,{
|
||||
end;
|
||||
|
||||
OnInit:
|
||||
disablenpc "Croix Vintenar#tv2";
|
||||
disablenpc "Guillaume Vintenar#tv2";
|
||||
disablenpc "Therapist in battle#tv21";
|
||||
disablenpc "Therapist in battle#tv22";
|
||||
end;
|
||||
|
||||
OnGuillaumeQuit:
|
||||
OnCroixQuit:
|
||||
set BG_Delay_Tick, gettimetick(2) + 1200;
|
||||
end;
|
||||
|
||||
OnGuillaumeJoin:
|
||||
OnCroixJoin:
|
||||
if( $@TierraBG2 == 0 )
|
||||
donpcevent "Tierra_BG2::OnReadyCheck";
|
||||
end;
|
||||
|
||||
OnReadyCheck:
|
||||
if( $@TierraBG2 )
|
||||
end;
|
||||
set .@Guillaume, getwaitingroomstate(0,"TV2R_Guillaume");
|
||||
set .@Croix, getwaitingroomstate(0,"TV2R_Croix");
|
||||
|
||||
if( .@Guillaume < 10 || .@Croix < 10 )
|
||||
{
|
||||
mapannounce "bat_room","Battleground -- Tierra Valley [80-99] G: " + .@Guillaume + "/10, C: " + .@Croix + "/10",1,0xF4A460;
|
||||
end;
|
||||
}
|
||||
|
||||
set $@TierraBG2, 1;
|
||||
donpcevent "TV2R_Croix::OnEnterBG";
|
||||
donpcevent "TV2R_Guillaume::OnEnterBG";
|
||||
donpcevent "Guillaume_TV2B::OnBuild";
|
||||
donpcevent "Croix_TV2B::OnBuild";
|
||||
bg_monster $@TierraBG2_id1,"bat_a02",176,345,"Food Depot",1909,"Tierra_BG2::OnGuillaumeBreak";
|
||||
bg_monster $@TierraBG2_id2,"bat_a02",167,50,"Food Storage",1910,"Tierra_BG2::OnCroixBreak";
|
||||
bg_monster 0,"bat_a02",273,204,"Neutrality Flag",1911,"Tierra_BG2::OnNeutralBreak";
|
||||
|
||||
set .Neutral_Base, 0;
|
||||
set $@TierraBG2_Victory, 0;
|
||||
|
||||
set .Guardian_1, 0;
|
||||
set .Guardian_2, 0;
|
||||
set .Guardian_3, 0;
|
||||
|
||||
enablenpc "Therapist in battle#tv21";
|
||||
enablenpc "Therapist in battle#tv22";
|
||||
disablenpc "Croix Vintenar#tv2";
|
||||
disablenpc "Guillaume Vintenar#tv2";
|
||||
// Respawner
|
||||
donpcevent "#gtv2_respawn::OnBGStart";
|
||||
donpcevent "#ctv2_respawn::OnBGStart";
|
||||
donpcevent "#ntv2_respawn::OnBGStart";
|
||||
// Warp Teams
|
||||
announce "Battleground -- Tierra Valley [80-99] has started!",0,0xF4A460;
|
||||
bg_warp $@TierraBG2_id1,"bat_a02",353,344;
|
||||
bg_warp $@TierraBG2_id2,"bat_a02",353,52;
|
||||
// Final Messages
|
||||
sleep 6000;
|
||||
mapannounce "bat_a02","Guillaume Vintenar Axl Rose : Let's attack to burn down Croix's food storage",1,0x0000FF;
|
||||
sleep 2000;
|
||||
mapannounce "bat_a02","Croix Vintenar Swandery : Master of Valhalla! Let us be gifted with unfailing faith and courage",1,0xFF0000;
|
||||
|
||||
initnpctimer;
|
||||
end;
|
||||
|
||||
OnNeutralBreak:
|
||||
if( getcharid(4) == $@TierraBG2_id1 )
|
||||
{
|
||||
mapannounce "bat_a02","Guillaume obtained a neurality banner, so they have an advantage.",1,0x0000FF;
|
||||
bg_team_setxy $@TierraBG2_id2,42,16;
|
||||
areawarp "bat_a02",52,208,61,217,"bat_a02",42,16;
|
||||
}
|
||||
else if( getcharid(4) == $@TierraBG2_id2 )
|
||||
{
|
||||
mapannounce "bat_a02","Croix obtained a neutrality banner, so they have an advantage.",1,0xFF0000;
|
||||
bg_team_setxy $@TierraBG2_id1,50,374;
|
||||
areawarp "bat_a02",52,208,61,217,"bat_a02",50,374;
|
||||
}
|
||||
else end;
|
||||
|
||||
set .Neutral_Base, getcharid(4);
|
||||
bg_team_setxy .Neutral_Base,56,212;
|
||||
|
||||
if( .Guardian_1 == 0 )
|
||||
set .Guardian_1, bg_monster(.Neutral_Base,"bat_a02",280,233,"Guardian",1949,"Tierra_BG2::OnGuardian1");
|
||||
else
|
||||
bg_monster_set_team .Guardian_1, .Neutral_Base;
|
||||
|
||||
if( .Guardian_2 == 0 )
|
||||
set .Guardian_2, bg_monster(.Neutral_Base,"bat_a02",287,203,"Guardian",1950,"Tierra_BG2::OnGuardian2");
|
||||
else
|
||||
bg_monster_set_team .Guardian_2, .Neutral_Base;
|
||||
|
||||
if( .Guardian_3 == 0 )
|
||||
set .Guardian_3, bg_monster(.Neutral_Base,"bat_a02",268,204,"Guardian",1949,"Tierra_BG2::OnGuardian3");
|
||||
else
|
||||
bg_monster_set_team .Guardian_3, .Neutral_Base;
|
||||
|
||||
sleep 10000;
|
||||
if( $@TierraBG2 != 1 ) end;
|
||||
|
||||
if( .Neutral_Base == $@TierraBG2_id1 )
|
||||
bg_monster .Neutral_Base,"bat_a02",273,204,"Guillaume Flag",1912,"Tierra_BG2::OnNeutralBreak";
|
||||
else if( .Neutral_Base == $@TierraBG2_id2 )
|
||||
bg_monster .Neutral_Base,"bat_a02",273,204,"Croix Flag",1913,"Tierra_BG2::OnNeutralBreak";
|
||||
end;
|
||||
|
||||
OnGuardian1: set .Guardian_1, 0; end;
|
||||
OnGuardian2: set .Guardian_2, 0; end;
|
||||
OnGuardian3: set .Guardian_3, 0; end;
|
||||
|
||||
OnGuillaumeBreak:
|
||||
set $@TierraBG2_Victory, 2;
|
||||
mapannounce "bat_a02","Croix Vintenar Swandery: We destroyed Guillaume's food storehause. We won that! Wow!",1,0xFF0000;
|
||||
donpcevent "Tierra_BG2::OnStop";
|
||||
end;
|
||||
|
||||
OnCroixBreak:
|
||||
set $@TierraBG2_Victory, 1;
|
||||
mapannounce "bat_a02","Guillaume Vintenar Axl Rose: We destroyed Croix's food storehause. We won that! Wow!",1,0x0000FF;
|
||||
donpcevent "Tierra_BG2::OnStop";
|
||||
end;
|
||||
|
||||
OnTimer2400000:
|
||||
mapannounce "bat_a02","Battle of Tierra Gorge will ends in 5 minutes",1,0xF4A460;
|
||||
end;
|
||||
OnTimer2640000:
|
||||
mapannounce "bat_a02","Battle of Tierra Gorge will ends in 1 minute",1,0xF4A460;
|
||||
end;
|
||||
|
||||
OnTimer2700000:
|
||||
set $@TierraBG2_Victory, 3; // Draw Game
|
||||
mapannounce "bat_a02","Battle of Tierra Gorge is over. The time is out, this is a Tie",1,0xF4A460;
|
||||
donpcevent "Tierra_BG2::OnStop";
|
||||
end;
|
||||
|
||||
OnStop:
|
||||
set $@TierraBG2, 2;
|
||||
disablenpc "Therapist in battle#tv21";
|
||||
disablenpc "Therapist in battle#tv22";
|
||||
donpcevent "#gtv2_respawn::OnBGStop";
|
||||
donpcevent "#ctv2_respawn::OnBGStop";
|
||||
donpcevent "#ntv2_respawn::OnBGStop";
|
||||
enablenpc "Croix Vintenar#tv2";
|
||||
enablenpc "Guillaume Vintenar#tv2";
|
||||
killmonster "bat_a02","Tierra_BG2::OnGuillaumeBreak";
|
||||
killmonster "bat_a02","Tierra_BG2::OnCroixBreak";
|
||||
killmonster "bat_a02","Tierra_BG2::OnNeutralBreak";
|
||||
killmonster "bat_a02","Tierra_BG2::OnGuardian1";
|
||||
killmonster "bat_a02","Tierra_BG2::OnGuardian2";
|
||||
killmonster "bat_a02","Tierra_BG2::OnGuardian3";
|
||||
stopnpctimer;
|
||||
sleep 3000;
|
||||
bg_warp $@TierraBG2_id1,"bat_a02",50,374;
|
||||
bg_warp $@TierraBG2_id2,"bat_a02",42,16;
|
||||
sleep 3000;
|
||||
mapannounce "bat_a02","Battle of Tierra Gorge will close in 1 minute!",1,0xF4A460;
|
||||
initnpctimer;
|
||||
end;
|
||||
|
||||
OnTimer30000:
|
||||
if( $@TierraBG2 == 2 )
|
||||
mapannounce "bat_a02","Battle of Tierra Valley will close in 30 seconds!",1,0xF4A460;
|
||||
end;
|
||||
OnTimer50000:
|
||||
if( $@TierraBG2 == 2 )
|
||||
mapannounce "bat_a02","Battle of Tierra Valley will close in 10 seconds!",1,0xF4A460;
|
||||
end;
|
||||
|
||||
OnTimer60000:
|
||||
if( $@TierraBG2 != 2 )
|
||||
end;
|
||||
OnReset:
|
||||
stopnpctimer;
|
||||
set .Neutral_Base, 0;
|
||||
disablenpc "Croix Vintenar#tv2";
|
||||
disablenpc "Guillaume Vintenar#tv2";
|
||||
disablenpc "Therapist in battle#tv21";
|
||||
disablenpc "Therapist in battle#tv22";
|
||||
donpcevent "#gtv2_respawn::OnBGStop";
|
||||
donpcevent "#gtv2_respawn::OnBGStop";
|
||||
donpcevent "#ctv2_respawn::OnBGStop";
|
||||
|
||||
killmonster "bat_a02","Tierra_BG2::OnGuillaumeBreak";
|
||||
killmonster "bat_a02","Tierra_BG2::OnCroixBreak";
|
||||
killmonster "bat_a02","Tierra_BG2::OnNeutralBreak";
|
||||
killmonster "bat_a02","Tierra_BG2::OnGuardian1";
|
||||
killmonster "bat_a02","Tierra_BG2::OnGuardian2";
|
||||
killmonster "bat_a02","Tierra_BG2::OnGuardian3";
|
||||
donpcevent "Guillaume_TV2B::OnDestroy";
|
||||
donpcevent "Croix_TV2B::OnDestroy";
|
||||
|
||||
set $@TierraBG2_Victory, 0;
|
||||
if( $@TierraBG2_id1 ) { bg_destroy $@TierraBG2_id1; set $@TierraBG2_id1, 0; }
|
||||
if( $@TierraBG2_id2 ) { bg_destroy $@TierraBG2_id2; set $@TierraBG2_id2, 0; }
|
||||
sleep 1000;
|
||||
mapwarp "bat_a02","bat_room",155,150;
|
||||
sleep 2000;
|
||||
maprespawnguildid "bat_a02",0,3; // Just in case someone else
|
||||
sleep 2000;
|
||||
set $@TierraBG2, 0;
|
||||
donpcevent "Tierra_BG2::OnReadyCheck"; // Maybe a game is ready to start
|
||||
end;
|
||||
}
|
||||
|
||||
// MapFlags
|
||||
// *********************************************************************
|
||||
|
||||
bat_a02 mapflag battleground
|
||||
bat_a02 mapflag nomemo
|
||||
bat_a02 mapflag nosave SavePoint
|
||||
bat_a02 mapflag noteleport
|
||||
bat_a02 mapflag nowarp
|
||||
bat_a02 mapflag nowarpto
|
||||
bat_a02 mapflag noreturn
|
||||
bat_a02 mapflag nobranch
|
||||
bat_a02 mapflag nopenalty
|
||||
|
||||
// Other Flags
|
||||
// *********************************************************************
|
||||
|
||||
bat_a02,148,85,1 duplicate(Croix camp#bat) Croix camp#bat22 974
|
||||
bat_a02,155,85,1 duplicate(Croix camp#bat) Croix camp#bat23 974
|
||||
bat_a02,357,75,1 duplicate(Croix camp#bat) Croix camp#bat24 974
|
||||
bat_a02,348,74,1 duplicate(Croix camp#bat) Croix camp#bat25 974
|
||||
bat_a02,199,49,1 duplicate(Croix camp#bat) Croix camp#bat26 974
|
||||
bat_a02,168,16,1 duplicate(Croix camp#bat) Croix camp#bat27 974
|
||||
bat_a02,138,12,1 duplicate(Croix camp#bat) Croix camp#bat28 974
|
||||
bat_a02,108,35,1 duplicate(Croix camp#bat) Croix camp#bat29 974
|
||||
bat_a02,164,308,1 duplicate(Guillaume camp#bat) Guillaume camp#bat23 973
|
||||
bat_a02,157,308,1 duplicate(Guillaume camp#bat) Guillaume camp#bat24 973
|
||||
bat_a02,359,327,1 duplicate(Guillaume camp#bat) Guillaume camp#bat25 973
|
||||
bat_a02,350,326,1 duplicate(Guillaume camp#bat) Guillaume camp#bat26 973
|
||||
bat_a02,209,344,1 duplicate(Guillaume camp#bat) Guillaume camp#bat27 973
|
||||
bat_a02,173,380,1 duplicate(Guillaume camp#bat) Guillaume camp#bat28 973
|
||||
bat_a02,150,380,1 duplicate(Guillaume camp#bat) Guillaume camp#bat29 973
|
||||
bat_a02,118,357,1 duplicate(Guillaume camp#bat) Guillaume camp#bat30 973
|
||||
bat_a02,119,336,1 duplicate(Guillaume camp#bat) Guillaume camp#bat31 973
|
||||
|
||||
// Barricades
|
||||
// *********************************************************************
|
||||
|
||||
- script Guillaume_TV2B -1,{
|
||||
end;
|
||||
|
||||
OnBuild:
|
||||
for( set .@i, 0; .@i < 16; set .@i, .@i + 1 )
|
||||
bg_monster 0,"bat_a02",170+.@i,130,"Barricade",1906,"Guillaume_TV2B::OnWall";
|
||||
|
||||
setwall "bat_a02",170,130,16,6,1,"bat_a02_g1";
|
||||
set .MyMobCount,16;
|
||||
end;
|
||||
|
||||
OnDestroy:
|
||||
killmonster "bat_a02","Guillaume_TV2B::OnWall";
|
||||
delwall "bat_a02_g1";
|
||||
set .MyMobCount,0;
|
||||
end;
|
||||
|
||||
OnWall:
|
||||
if( set(.MyMobCount,.MyMobCount - 1) < 1 )
|
||||
{
|
||||
delwall "bat_a02_g1";
|
||||
mapannounce "bat_a02","South Gate : The Gate has been Destroy!!",1,0xF4A460;
|
||||
}
|
||||
end;
|
||||
}
|
||||
|
||||
- script Croix_TV2B -1,{
|
||||
end;
|
||||
|
||||
OnBuild:
|
||||
for( set .@i, 0; .@i < 16; set .@i, .@i + 1 )
|
||||
bg_monster 0,"bat_a02",186+.@i,266,"Barricade",1906,"Croix_TV2B::OnWall";
|
||||
|
||||
setwall "bat_a02",186,266,16,6,1,"bat_a02_c1";
|
||||
set .MyMobCount,16;
|
||||
end;
|
||||
|
||||
OnDestroy:
|
||||
killmonster "bat_a02","Croix_TV2B::OnWall";
|
||||
delwall "bat_a02_c1";
|
||||
set .MyMobCount,0;
|
||||
end;
|
||||
|
||||
OnWall:
|
||||
if( set(.MyMobCount,.MyMobCount - 1) < 1 )
|
||||
{
|
||||
delwall "bat_a02_c1";
|
||||
mapannounce "bat_a02","North Gate : A Gate has been Destroy!!",1,0xF4A460;
|
||||
}
|
||||
end;
|
||||
}
|
||||
|
||||
// Battleground rewards
|
||||
// *********************************************************************
|
||||
|
||||
bat_a02,45,19,3 script Croix Vintenar#tv2 415,{
|
||||
if( $@TierraBG2_Victory )
|
||||
{
|
||||
if( $@TierraBG2_Victory == Bat_Team )
|
||||
{ // Victory
|
||||
set .@Reward, 3;
|
||||
mes "[Swandery]";
|
||||
mes "Blessed Croax!!";
|
||||
mes "Let's enjoy our glorious victory!";
|
||||
mes "" + strcharinfo(0) + ", its a sign reflecting victory";
|
||||
close2;
|
||||
}
|
||||
else
|
||||
{ //
|
||||
set .@Reward, 1;
|
||||
mes "[Swandery]";
|
||||
mes "Oh, " + strcharinfo(0) + ". Don't be sad.";
|
||||
mes "Even though we didn't win, we did our best.";
|
||||
mes "This is a Royal gift from Croix, and please don't forget this battle. We can win the next.";
|
||||
close2;
|
||||
}
|
||||
|
||||
set Tierra_BG_Tick, gettimetick(2) + 300;
|
||||
getitem 7828, .@Reward;
|
||||
bg_leave;
|
||||
warp "bat_room",155,150;
|
||||
end;
|
||||
}
|
||||
end;
|
||||
}
|
||||
|
||||
bat_a02,53,377,3 script Guillaume Vintenar#tv2 419,{
|
||||
if( $@TierraBG2_Victory )
|
||||
{
|
||||
if( $@TierraBG2_Victory == Bat_Team )
|
||||
{ // Victory
|
||||
set .@Reward, 3;
|
||||
mes "[Swandery]";
|
||||
mes "Blessed Guillaume!!";
|
||||
mes "Let's enjoy our glorious victory!";
|
||||
mes "" + strcharinfo(0) + ", its a sign reflecting victory";
|
||||
close2;
|
||||
}
|
||||
else
|
||||
{ //
|
||||
set .@Reward, 1;
|
||||
mes "[Swandery]";
|
||||
mes "You lost, but you're dedicated to this battle.";
|
||||
mes "This is a reward for your great dedication by Guillaume Marollo!";
|
||||
mes "Just take this defeat a lesson, and later you would definitely learn.";
|
||||
close2;
|
||||
}
|
||||
|
||||
set Tierra_BG_Tick, gettimetick(2) + 300;
|
||||
getitem 7828, .@Reward;
|
||||
bg_leave;
|
||||
warp "bat_room",155,150;
|
||||
end;
|
||||
}
|
||||
end;
|
||||
}
|
||||
|
||||
// Battleground Therapist
|
||||
// *********************************************************************
|
||||
|
||||
bat_a02,60,216,3 script Ghost#tv23 950,{
|
||||
mes "[Ghost in valley]";
|
||||
mes "Boo...Boo...";
|
||||
specialeffect2 312;
|
||||
close;
|
||||
}
|
||||
|
||||
bat_a02,53,377,3 script Therapist in battle#tv22 95,{
|
||||
mes "[Therapist in battle]";
|
||||
mes "Just close your eyes, and take a deep breathe.";
|
||||
mes "You can be free from pain.";
|
||||
specialeffect2 312;
|
||||
close;
|
||||
}
|
||||
|
||||
bat_a02,45,18,3 script Therapist in battle#tv21 95,{
|
||||
mes "[Therapist in battle]";
|
||||
mes "Just close your eyes, and take a deep breathe.";
|
||||
mes "You can be free from pain.";
|
||||
specialeffect2 312;
|
||||
close;
|
||||
}
|
||||
|
||||
// Battleground Respawn
|
||||
// *********************************************************************
|
||||
|
||||
bat_a02,57,213,0 script #ntv2_respawn 139,{
|
||||
end;
|
||||
|
||||
OnBGStart:
|
||||
initnpctimer;
|
||||
end;
|
||||
|
||||
OnBGStop:
|
||||
stopnpctimer;
|
||||
end;
|
||||
|
||||
OnTimer19000:
|
||||
misceffect 83;
|
||||
end;
|
||||
|
||||
OnTimer20000:
|
||||
areapercentheal "bat_a02",52,208,61,217,100,100;
|
||||
areawarp "bat_a02",52,208,61,217,"bat_a02",301,208;
|
||||
initnpctimer;
|
||||
end;
|
||||
}
|
||||
|
||||
bat_a02,50,374,0 script #gtv2_respawn 139,{
|
||||
end;
|
||||
|
||||
OnBGStart:
|
||||
initnpctimer;
|
||||
end;
|
||||
|
||||
OnBGStop:
|
||||
stopnpctimer;
|
||||
end;
|
||||
|
||||
OnTimer24000:
|
||||
misceffect 83;
|
||||
end;
|
||||
|
||||
OnTimer25000:
|
||||
areapercentheal "bat_a02",46,370,54,378,100,100;
|
||||
areawarp "bat_a02",46,370,54,378,"bat_a02",354,340;
|
||||
initnpctimer;
|
||||
end;
|
||||
}
|
||||
|
||||
bat_a02,42,16,0 script #ctv2_respawn 139,{
|
||||
end;
|
||||
|
||||
OnBGStart:
|
||||
initnpctimer;
|
||||
end;
|
||||
|
||||
OnBGStop:
|
||||
stopnpctimer;
|
||||
end;
|
||||
|
||||
OnTimer24000:
|
||||
misceffect 83;
|
||||
end;
|
||||
|
||||
OnTimer25000:
|
||||
areapercentheal "bat_a02",38,12,47,21,100,100;
|
||||
areawarp "bat_a02",38,12,47,21,"bat_a02",354,57;
|
||||
initnpctimer;
|
||||
end;
|
||||
}
|
||||
// ==============================================================================
|
||||
// BattleGround System - Tierra Valley 2
|
||||
// ==============================================================================
|
||||
|
||||
// Registration NPC's
|
||||
// *********************************************************************
|
||||
|
||||
bat_room,85,97,4 script Registration::TV2R_Guillaume 418,{
|
||||
end;
|
||||
OnInit:
|
||||
waitingroom "Battle Station 10 Players",10,"Tierra_BG2::OnGuillaumeJoin",1;
|
||||
end;
|
||||
OnEnterBG:
|
||||
set $@TierraBG2_id1, waitingroom2bg("bat_a02",50,374,"Tierra_BG2::OnGuillaumeQuit","");
|
||||
end;
|
||||
}
|
||||
|
||||
bat_room,85,74,0 script Registration::TV2R_Croix 414,{
|
||||
end;
|
||||
OnInit:
|
||||
waitingroom "Battle Station 10 Players",10,"Tierra_BG2::OnCroixJoin",1;
|
||||
end;
|
||||
OnEnterBG:
|
||||
set $@TierraBG2_id2, waitingroom2bg("bat_a02",42,16,"Tierra_BG2::OnCroixQuit","");
|
||||
end;
|
||||
}
|
||||
|
||||
// Battleground Engine
|
||||
// *********************************************************************
|
||||
|
||||
- script Tierra_BG2 -1,{
|
||||
end;
|
||||
|
||||
OnInit:
|
||||
disablenpc "Croix Vintenar#tv2";
|
||||
disablenpc "Guillaume Vintenar#tv2";
|
||||
disablenpc "Therapist in battle#tv21";
|
||||
disablenpc "Therapist in battle#tv22";
|
||||
end;
|
||||
|
||||
OnGuillaumeQuit:
|
||||
OnCroixQuit:
|
||||
set BG_Delay_Tick, gettimetick(2) + 1200;
|
||||
end;
|
||||
|
||||
OnGuillaumeJoin:
|
||||
OnCroixJoin:
|
||||
if( $@TierraBG2 == 0 )
|
||||
donpcevent "Tierra_BG2::OnReadyCheck";
|
||||
end;
|
||||
|
||||
OnReadyCheck:
|
||||
if( $@TierraBG2 )
|
||||
end;
|
||||
set .@Guillaume, getwaitingroomstate(0,"TV2R_Guillaume");
|
||||
set .@Croix, getwaitingroomstate(0,"TV2R_Croix");
|
||||
|
||||
if( .@Guillaume < 10 || .@Croix < 10 )
|
||||
{
|
||||
mapannounce "bat_room","Battleground -- Tierra Valley [80-99] G: " + .@Guillaume + "/10, C: " + .@Croix + "/10",1,0xF4A460;
|
||||
end;
|
||||
}
|
||||
|
||||
set $@TierraBG2, 1;
|
||||
donpcevent "TV2R_Croix::OnEnterBG";
|
||||
donpcevent "TV2R_Guillaume::OnEnterBG";
|
||||
donpcevent "Guillaume_TV2B::OnBuild";
|
||||
donpcevent "Croix_TV2B::OnBuild";
|
||||
bg_monster $@TierraBG2_id1,"bat_a02",176,345,"Food Depot",1909,"Tierra_BG2::OnGuillaumeBreak";
|
||||
bg_monster $@TierraBG2_id2,"bat_a02",167,50,"Food Storage",1910,"Tierra_BG2::OnCroixBreak";
|
||||
bg_monster 0,"bat_a02",273,204,"Neutrality Flag",1911,"Tierra_BG2::OnNeutralBreak";
|
||||
|
||||
set .Neutral_Base, 0;
|
||||
set $@TierraBG2_Victory, 0;
|
||||
|
||||
set .Guardian_1, 0;
|
||||
set .Guardian_2, 0;
|
||||
set .Guardian_3, 0;
|
||||
|
||||
enablenpc "Therapist in battle#tv21";
|
||||
enablenpc "Therapist in battle#tv22";
|
||||
disablenpc "Croix Vintenar#tv2";
|
||||
disablenpc "Guillaume Vintenar#tv2";
|
||||
// Respawner
|
||||
donpcevent "#gtv2_respawn::OnBGStart";
|
||||
donpcevent "#ctv2_respawn::OnBGStart";
|
||||
donpcevent "#ntv2_respawn::OnBGStart";
|
||||
// Warp Teams
|
||||
announce "Battleground -- Tierra Valley [80-99] has started!",0,0xF4A460;
|
||||
bg_warp $@TierraBG2_id1,"bat_a02",353,344;
|
||||
bg_warp $@TierraBG2_id2,"bat_a02",353,52;
|
||||
// Final Messages
|
||||
sleep 6000;
|
||||
mapannounce "bat_a02","Guillaume Vintenar Axl Rose : Let's attack to burn down Croix's food storage",1,0x0000FF;
|
||||
sleep 2000;
|
||||
mapannounce "bat_a02","Croix Vintenar Swandery : Master of Valhalla! Let us be gifted with unfailing faith and courage",1,0xFF0000;
|
||||
|
||||
initnpctimer;
|
||||
end;
|
||||
|
||||
OnNeutralBreak:
|
||||
if( getcharid(4) == $@TierraBG2_id1 )
|
||||
{
|
||||
mapannounce "bat_a02","Guillaume obtained a neurality banner, so they have an advantage.",1,0x0000FF;
|
||||
bg_team_setxy $@TierraBG2_id2,42,16;
|
||||
areawarp "bat_a02",52,208,61,217,"bat_a02",42,16;
|
||||
}
|
||||
else if( getcharid(4) == $@TierraBG2_id2 )
|
||||
{
|
||||
mapannounce "bat_a02","Croix obtained a neutrality banner, so they have an advantage.",1,0xFF0000;
|
||||
bg_team_setxy $@TierraBG2_id1,50,374;
|
||||
areawarp "bat_a02",52,208,61,217,"bat_a02",50,374;
|
||||
}
|
||||
else end;
|
||||
|
||||
set .Neutral_Base, getcharid(4);
|
||||
bg_team_setxy .Neutral_Base,56,212;
|
||||
|
||||
if( .Guardian_1 == 0 )
|
||||
set .Guardian_1, bg_monster(.Neutral_Base,"bat_a02",280,233,"Guardian",1949,"Tierra_BG2::OnGuardian1");
|
||||
else
|
||||
bg_monster_set_team .Guardian_1, .Neutral_Base;
|
||||
|
||||
if( .Guardian_2 == 0 )
|
||||
set .Guardian_2, bg_monster(.Neutral_Base,"bat_a02",287,203,"Guardian",1950,"Tierra_BG2::OnGuardian2");
|
||||
else
|
||||
bg_monster_set_team .Guardian_2, .Neutral_Base;
|
||||
|
||||
if( .Guardian_3 == 0 )
|
||||
set .Guardian_3, bg_monster(.Neutral_Base,"bat_a02",268,204,"Guardian",1949,"Tierra_BG2::OnGuardian3");
|
||||
else
|
||||
bg_monster_set_team .Guardian_3, .Neutral_Base;
|
||||
|
||||
sleep 10000;
|
||||
if( $@TierraBG2 != 1 ) end;
|
||||
|
||||
if( .Neutral_Base == $@TierraBG2_id1 )
|
||||
bg_monster .Neutral_Base,"bat_a02",273,204,"Guillaume Flag",1912,"Tierra_BG2::OnNeutralBreak";
|
||||
else if( .Neutral_Base == $@TierraBG2_id2 )
|
||||
bg_monster .Neutral_Base,"bat_a02",273,204,"Croix Flag",1913,"Tierra_BG2::OnNeutralBreak";
|
||||
end;
|
||||
|
||||
OnGuardian1: set .Guardian_1, 0; end;
|
||||
OnGuardian2: set .Guardian_2, 0; end;
|
||||
OnGuardian3: set .Guardian_3, 0; end;
|
||||
|
||||
OnGuillaumeBreak:
|
||||
set $@TierraBG2_Victory, 2;
|
||||
mapannounce "bat_a02","Croix Vintenar Swandery: We destroyed Guillaume's food storehause. We won that! Wow!",1,0xFF0000;
|
||||
donpcevent "Tierra_BG2::OnStop";
|
||||
end;
|
||||
|
||||
OnCroixBreak:
|
||||
set $@TierraBG2_Victory, 1;
|
||||
mapannounce "bat_a02","Guillaume Vintenar Axl Rose: We destroyed Croix's food storehause. We won that! Wow!",1,0x0000FF;
|
||||
donpcevent "Tierra_BG2::OnStop";
|
||||
end;
|
||||
|
||||
OnTimer2400000:
|
||||
mapannounce "bat_a02","Battle of Tierra Gorge will ends in 5 minutes",1,0xF4A460;
|
||||
end;
|
||||
OnTimer2640000:
|
||||
mapannounce "bat_a02","Battle of Tierra Gorge will ends in 1 minute",1,0xF4A460;
|
||||
end;
|
||||
|
||||
OnTimer2700000:
|
||||
set $@TierraBG2_Victory, 3; // Draw Game
|
||||
mapannounce "bat_a02","Battle of Tierra Gorge is over. The time is out, this is a Tie",1,0xF4A460;
|
||||
donpcevent "Tierra_BG2::OnStop";
|
||||
end;
|
||||
|
||||
OnStop:
|
||||
set $@TierraBG2, 2;
|
||||
disablenpc "Therapist in battle#tv21";
|
||||
disablenpc "Therapist in battle#tv22";
|
||||
donpcevent "#gtv2_respawn::OnBGStop";
|
||||
donpcevent "#ctv2_respawn::OnBGStop";
|
||||
donpcevent "#ntv2_respawn::OnBGStop";
|
||||
enablenpc "Croix Vintenar#tv2";
|
||||
enablenpc "Guillaume Vintenar#tv2";
|
||||
killmonster "bat_a02","Tierra_BG2::OnGuillaumeBreak";
|
||||
killmonster "bat_a02","Tierra_BG2::OnCroixBreak";
|
||||
killmonster "bat_a02","Tierra_BG2::OnNeutralBreak";
|
||||
killmonster "bat_a02","Tierra_BG2::OnGuardian1";
|
||||
killmonster "bat_a02","Tierra_BG2::OnGuardian2";
|
||||
killmonster "bat_a02","Tierra_BG2::OnGuardian3";
|
||||
stopnpctimer;
|
||||
sleep 3000;
|
||||
bg_warp $@TierraBG2_id1,"bat_a02",50,374;
|
||||
bg_warp $@TierraBG2_id2,"bat_a02",42,16;
|
||||
sleep 3000;
|
||||
mapannounce "bat_a02","Battle of Tierra Gorge will close in 1 minute!",1,0xF4A460;
|
||||
initnpctimer;
|
||||
end;
|
||||
|
||||
OnTimer30000:
|
||||
if( $@TierraBG2 == 2 )
|
||||
mapannounce "bat_a02","Battle of Tierra Valley will close in 30 seconds!",1,0xF4A460;
|
||||
end;
|
||||
OnTimer50000:
|
||||
if( $@TierraBG2 == 2 )
|
||||
mapannounce "bat_a02","Battle of Tierra Valley will close in 10 seconds!",1,0xF4A460;
|
||||
end;
|
||||
|
||||
OnTimer60000:
|
||||
if( $@TierraBG2 != 2 )
|
||||
end;
|
||||
OnReset:
|
||||
stopnpctimer;
|
||||
set .Neutral_Base, 0;
|
||||
disablenpc "Croix Vintenar#tv2";
|
||||
disablenpc "Guillaume Vintenar#tv2";
|
||||
disablenpc "Therapist in battle#tv21";
|
||||
disablenpc "Therapist in battle#tv22";
|
||||
donpcevent "#gtv2_respawn::OnBGStop";
|
||||
donpcevent "#gtv2_respawn::OnBGStop";
|
||||
donpcevent "#ctv2_respawn::OnBGStop";
|
||||
|
||||
killmonster "bat_a02","Tierra_BG2::OnGuillaumeBreak";
|
||||
killmonster "bat_a02","Tierra_BG2::OnCroixBreak";
|
||||
killmonster "bat_a02","Tierra_BG2::OnNeutralBreak";
|
||||
killmonster "bat_a02","Tierra_BG2::OnGuardian1";
|
||||
killmonster "bat_a02","Tierra_BG2::OnGuardian2";
|
||||
killmonster "bat_a02","Tierra_BG2::OnGuardian3";
|
||||
donpcevent "Guillaume_TV2B::OnDestroy";
|
||||
donpcevent "Croix_TV2B::OnDestroy";
|
||||
|
||||
set $@TierraBG2_Victory, 0;
|
||||
if( $@TierraBG2_id1 ) { bg_destroy $@TierraBG2_id1; set $@TierraBG2_id1, 0; }
|
||||
if( $@TierraBG2_id2 ) { bg_destroy $@TierraBG2_id2; set $@TierraBG2_id2, 0; }
|
||||
sleep 1000;
|
||||
mapwarp "bat_a02","bat_room",155,150;
|
||||
sleep 2000;
|
||||
maprespawnguildid "bat_a02",0,3; // Just in case someone else
|
||||
sleep 2000;
|
||||
set $@TierraBG2, 0;
|
||||
donpcevent "Tierra_BG2::OnReadyCheck"; // Maybe a game is ready to start
|
||||
end;
|
||||
}
|
||||
|
||||
// MapFlags
|
||||
// *********************************************************************
|
||||
|
||||
bat_a02 mapflag battleground
|
||||
bat_a02 mapflag nomemo
|
||||
bat_a02 mapflag nosave SavePoint
|
||||
bat_a02 mapflag noteleport
|
||||
bat_a02 mapflag nowarp
|
||||
bat_a02 mapflag nowarpto
|
||||
bat_a02 mapflag noreturn
|
||||
bat_a02 mapflag nobranch
|
||||
bat_a02 mapflag nopenalty
|
||||
|
||||
// Other Flags
|
||||
// *********************************************************************
|
||||
|
||||
bat_a02,148,85,1 duplicate(Croix camp#bat) Croix camp#bat22 974
|
||||
bat_a02,155,85,1 duplicate(Croix camp#bat) Croix camp#bat23 974
|
||||
bat_a02,357,75,1 duplicate(Croix camp#bat) Croix camp#bat24 974
|
||||
bat_a02,348,74,1 duplicate(Croix camp#bat) Croix camp#bat25 974
|
||||
bat_a02,199,49,1 duplicate(Croix camp#bat) Croix camp#bat26 974
|
||||
bat_a02,168,16,1 duplicate(Croix camp#bat) Croix camp#bat27 974
|
||||
bat_a02,138,12,1 duplicate(Croix camp#bat) Croix camp#bat28 974
|
||||
bat_a02,108,35,1 duplicate(Croix camp#bat) Croix camp#bat29 974
|
||||
bat_a02,164,308,1 duplicate(Guillaume camp#bat) Guillaume camp#bat23 973
|
||||
bat_a02,157,308,1 duplicate(Guillaume camp#bat) Guillaume camp#bat24 973
|
||||
bat_a02,359,327,1 duplicate(Guillaume camp#bat) Guillaume camp#bat25 973
|
||||
bat_a02,350,326,1 duplicate(Guillaume camp#bat) Guillaume camp#bat26 973
|
||||
bat_a02,209,344,1 duplicate(Guillaume camp#bat) Guillaume camp#bat27 973
|
||||
bat_a02,173,380,1 duplicate(Guillaume camp#bat) Guillaume camp#bat28 973
|
||||
bat_a02,150,380,1 duplicate(Guillaume camp#bat) Guillaume camp#bat29 973
|
||||
bat_a02,118,357,1 duplicate(Guillaume camp#bat) Guillaume camp#bat30 973
|
||||
bat_a02,119,336,1 duplicate(Guillaume camp#bat) Guillaume camp#bat31 973
|
||||
|
||||
// Barricades
|
||||
// *********************************************************************
|
||||
|
||||
- script Guillaume_TV2B -1,{
|
||||
end;
|
||||
|
||||
OnBuild:
|
||||
for( set .@i, 0; .@i < 16; set .@i, .@i + 1 )
|
||||
bg_monster 0,"bat_a02",170+.@i,130,"Barricade",1906,"Guillaume_TV2B::OnWall";
|
||||
|
||||
setwall "bat_a02",170,130,16,6,1,"bat_a02_g1";
|
||||
set .MyMobCount,16;
|
||||
end;
|
||||
|
||||
OnDestroy:
|
||||
killmonster "bat_a02","Guillaume_TV2B::OnWall";
|
||||
delwall "bat_a02_g1";
|
||||
set .MyMobCount,0;
|
||||
end;
|
||||
|
||||
OnWall:
|
||||
if( set(.MyMobCount,.MyMobCount - 1) < 1 )
|
||||
{
|
||||
delwall "bat_a02_g1";
|
||||
mapannounce "bat_a02","South Gate : The Gate has been Destroy!!",1,0xF4A460;
|
||||
}
|
||||
end;
|
||||
}
|
||||
|
||||
- script Croix_TV2B -1,{
|
||||
end;
|
||||
|
||||
OnBuild:
|
||||
for( set .@i, 0; .@i < 16; set .@i, .@i + 1 )
|
||||
bg_monster 0,"bat_a02",186+.@i,266,"Barricade",1906,"Croix_TV2B::OnWall";
|
||||
|
||||
setwall "bat_a02",186,266,16,6,1,"bat_a02_c1";
|
||||
set .MyMobCount,16;
|
||||
end;
|
||||
|
||||
OnDestroy:
|
||||
killmonster "bat_a02","Croix_TV2B::OnWall";
|
||||
delwall "bat_a02_c1";
|
||||
set .MyMobCount,0;
|
||||
end;
|
||||
|
||||
OnWall:
|
||||
if( set(.MyMobCount,.MyMobCount - 1) < 1 )
|
||||
{
|
||||
delwall "bat_a02_c1";
|
||||
mapannounce "bat_a02","North Gate : A Gate has been Destroy!!",1,0xF4A460;
|
||||
}
|
||||
end;
|
||||
}
|
||||
|
||||
// Battleground rewards
|
||||
// *********************************************************************
|
||||
|
||||
bat_a02,45,19,3 script Croix Vintenar#tv2 415,{
|
||||
if( $@TierraBG2_Victory )
|
||||
{
|
||||
if( $@TierraBG2_Victory == Bat_Team )
|
||||
{ // Victory
|
||||
set .@Reward, 3;
|
||||
mes "[Swandery]";
|
||||
mes "Blessed Croax!!";
|
||||
mes "Let's enjoy our glorious victory!";
|
||||
mes "" + strcharinfo(0) + ", its a sign reflecting victory";
|
||||
close2;
|
||||
}
|
||||
else
|
||||
{ //
|
||||
set .@Reward, 1;
|
||||
mes "[Swandery]";
|
||||
mes "Oh, " + strcharinfo(0) + ". Don't be sad.";
|
||||
mes "Even though we didn't win, we did our best.";
|
||||
mes "This is a Royal gift from Croix, and please don't forget this battle. We can win the next.";
|
||||
close2;
|
||||
}
|
||||
|
||||
set Tierra_BG_Tick, gettimetick(2) + 300;
|
||||
getitem 7828, .@Reward;
|
||||
bg_leave;
|
||||
warp "bat_room",155,150;
|
||||
end;
|
||||
}
|
||||
end;
|
||||
}
|
||||
|
||||
bat_a02,53,377,3 script Guillaume Vintenar#tv2 419,{
|
||||
if( $@TierraBG2_Victory )
|
||||
{
|
||||
if( $@TierraBG2_Victory == Bat_Team )
|
||||
{ // Victory
|
||||
set .@Reward, 3;
|
||||
mes "[Swandery]";
|
||||
mes "Blessed Guillaume!!";
|
||||
mes "Let's enjoy our glorious victory!";
|
||||
mes "" + strcharinfo(0) + ", its a sign reflecting victory";
|
||||
close2;
|
||||
}
|
||||
else
|
||||
{ //
|
||||
set .@Reward, 1;
|
||||
mes "[Swandery]";
|
||||
mes "You lost, but you're dedicated to this battle.";
|
||||
mes "This is a reward for your great dedication by Guillaume Marollo!";
|
||||
mes "Just take this defeat a lesson, and later you would definitely learn.";
|
||||
close2;
|
||||
}
|
||||
|
||||
set Tierra_BG_Tick, gettimetick(2) + 300;
|
||||
getitem 7828, .@Reward;
|
||||
bg_leave;
|
||||
warp "bat_room",155,150;
|
||||
end;
|
||||
}
|
||||
end;
|
||||
}
|
||||
|
||||
// Battleground Therapist
|
||||
// *********************************************************************
|
||||
|
||||
bat_a02,60,216,3 script Ghost#tv23 950,{
|
||||
mes "[Ghost in valley]";
|
||||
mes "Boo...Boo...";
|
||||
specialeffect2 312;
|
||||
close;
|
||||
}
|
||||
|
||||
bat_a02,53,377,3 script Therapist in battle#tv22 95,{
|
||||
mes "[Therapist in battle]";
|
||||
mes "Just close your eyes, and take a deep breathe.";
|
||||
mes "You can be free from pain.";
|
||||
specialeffect2 312;
|
||||
close;
|
||||
}
|
||||
|
||||
bat_a02,45,18,3 script Therapist in battle#tv21 95,{
|
||||
mes "[Therapist in battle]";
|
||||
mes "Just close your eyes, and take a deep breathe.";
|
||||
mes "You can be free from pain.";
|
||||
specialeffect2 312;
|
||||
close;
|
||||
}
|
||||
|
||||
// Battleground Respawn
|
||||
// *********************************************************************
|
||||
|
||||
bat_a02,57,213,0 script #ntv2_respawn 139,{
|
||||
end;
|
||||
|
||||
OnBGStart:
|
||||
initnpctimer;
|
||||
end;
|
||||
|
||||
OnBGStop:
|
||||
stopnpctimer;
|
||||
end;
|
||||
|
||||
OnTimer19000:
|
||||
misceffect 83;
|
||||
end;
|
||||
|
||||
OnTimer20000:
|
||||
areapercentheal "bat_a02",52,208,61,217,100,100;
|
||||
areawarp "bat_a02",52,208,61,217,"bat_a02",301,208;
|
||||
initnpctimer;
|
||||
end;
|
||||
}
|
||||
|
||||
bat_a02,50,374,0 script #gtv2_respawn 139,{
|
||||
end;
|
||||
|
||||
OnBGStart:
|
||||
initnpctimer;
|
||||
end;
|
||||
|
||||
OnBGStop:
|
||||
stopnpctimer;
|
||||
end;
|
||||
|
||||
OnTimer24000:
|
||||
misceffect 83;
|
||||
end;
|
||||
|
||||
OnTimer25000:
|
||||
areapercentheal "bat_a02",46,370,54,378,100,100;
|
||||
areawarp "bat_a02",46,370,54,378,"bat_a02",354,340;
|
||||
initnpctimer;
|
||||
end;
|
||||
}
|
||||
|
||||
bat_a02,42,16,0 script #ctv2_respawn 139,{
|
||||
end;
|
||||
|
||||
OnBGStart:
|
||||
initnpctimer;
|
||||
end;
|
||||
|
||||
OnBGStop:
|
||||
stopnpctimer;
|
||||
end;
|
||||
|
||||
OnTimer24000:
|
||||
misceffect 83;
|
||||
end;
|
||||
|
||||
OnTimer25000:
|
||||
areapercentheal "bat_a02",38,12,47,21,100,100;
|
||||
areawarp "bat_a02",38,12,47,21,"bat_a02",354,57;
|
||||
initnpctimer;
|
||||
end;
|
||||
}
|
||||
|
@ -1,136 +1,136 @@
|
||||
//===== eAthena Script =======================================
|
||||
//= Moscovia Town
|
||||
//===== By: ==================================================
|
||||
//= Kisuka
|
||||
//===== Current Version: =====================================
|
||||
//= 1.1
|
||||
//===== Compatible With: =====================================
|
||||
//= eAthena SVN
|
||||
//===== Description: =========================================
|
||||
//= Moscovia Town Script
|
||||
//===== Additional Comments: =================================
|
||||
//= 1.0 First Version. [Kisuka]
|
||||
//= 1.1 Removed villagers (they are part of a quest). [Kisuka]
|
||||
//============================================================
|
||||
|
||||
// Moscovia Transportation
|
||||
//============================================================
|
||||
alberta,245,66,4 script Moscovia P.R. Officer#1 960,{
|
||||
mes "[Moscovia P.R. Officer]";
|
||||
mes "Moscovia! Do you know Moscovia?";
|
||||
mes "the paradise spreading on the endless seas...";
|
||||
mes "Welcome to Moscovia";
|
||||
mes "It's adventurous and mystic.";
|
||||
next;
|
||||
switch(select("About Moscovia...:Go to Moscovia.:Cancel")) {
|
||||
case 1:
|
||||
mes "[Moscovia P.R. Officer]";
|
||||
mes "Moscovia is a beautiful kingdom";
|
||||
mes "on an island located north of Rune";
|
||||
mes "Midgarts.";
|
||||
next;
|
||||
mes "[Moscovia P.R. Officer]";
|
||||
mes "I'm sure that you will be";
|
||||
mes "absolutely fascinated";
|
||||
mes "by Moscovia's beautiful scenery";
|
||||
mes "and gorgeous palace.";
|
||||
next;
|
||||
mes "[Moscovia P.R. Officer]";
|
||||
mes "Now that our long winter has";
|
||||
mes "passed,";
|
||||
mes "I'm happy that I can now show you";
|
||||
mes "our gorgeous hometown.";
|
||||
next;
|
||||
mes "[Moscovia P.R. Officer]";
|
||||
mes "If you feel like visiting Moscovia";
|
||||
mes "take the chance now!";
|
||||
mes "I'll help you to have a nice trip";
|
||||
mes "to Moscovia!";
|
||||
close;
|
||||
|
||||
case 2:
|
||||
mes "[Moscovia P.R. Officer]";
|
||||
mes "Ok then, let us start now.";
|
||||
mes "You should pay me 10,000 zeny";
|
||||
mes "to go to Moscovia.";
|
||||
mes "But when you come back,";
|
||||
mes "you don't have to pay.";
|
||||
next;
|
||||
mes "[Moscovia P.R. Officer]";
|
||||
mes "Can we leave now?";
|
||||
next;
|
||||
if (select("Let's go!:Cancel") == 2) {
|
||||
mes "[Moscovia P.R. Officer]";
|
||||
mes "If you're too busy now,";
|
||||
mes "please tell me again whenever you want.";
|
||||
mes "I'm always ready to guide anyone to Moscovia.";
|
||||
close;
|
||||
}
|
||||
if (Zeny < 10000) {
|
||||
mes "[Moscovia P.R. Officer]";
|
||||
mes "I'm sorry but you don't have";
|
||||
mes "enough zeny now";
|
||||
mes "You need 10,000 zeny";
|
||||
mes "to go to Moscovia";
|
||||
mes "Thank you.";
|
||||
close;
|
||||
}else{
|
||||
mes "[Moscovia P.R. Officer]";
|
||||
mes "Ok then, we're leaving now.";
|
||||
close2;
|
||||
set Zeny,Zeny - 10000;
|
||||
warp "moscovia",163,55;
|
||||
end;
|
||||
}
|
||||
case 3:
|
||||
mes "[Moscovia P.R. Officer]";
|
||||
mes "If you're too busy now,";
|
||||
mes "please tell me again whenever you want.";
|
||||
mes "I'm always ready to guide anyone to Moscovia.";
|
||||
close;
|
||||
}
|
||||
}
|
||||
|
||||
moscovia,166,53,4 script Moscovia P.R. Officer#2 960,{
|
||||
mes "[Moscovia P.R. Officer]";
|
||||
mes "How was your trip?";
|
||||
mes "Do you have good memories from Moscovia?";
|
||||
mes "A ship is now leaving";
|
||||
mes "for Rune Midgarts.";
|
||||
next;
|
||||
if (select("Return to Alberta:Cancel") == 2) {
|
||||
mes "[Moscovia P.R. Officer]";
|
||||
mes "If you want to see more";
|
||||
mes "please take your time.";
|
||||
close;
|
||||
}
|
||||
mes "[Moscovia P.R. Officer]";
|
||||
mes "Please come and visit soon.";
|
||||
mes "Ok then, Let's get going.";
|
||||
close2;
|
||||
warp "alberta",243,67;
|
||||
end;
|
||||
}
|
||||
|
||||
// Generic Moscovia NPCs
|
||||
//============================================================
|
||||
moscovia,253,166,4 script Soldier#mosk1 966,{
|
||||
mes "[Soldier]";
|
||||
mes "Our dear Csar Alexsay III is in the palace.";
|
||||
mes "He rules over Moscovia.";
|
||||
mes "Please be careful not to cause him any trouble.";
|
||||
close;
|
||||
}
|
||||
|
||||
// Moscovia Palace
|
||||
//============================================================
|
||||
- script Soldier#mosk::MoscSoldier 966,{
|
||||
mes "[Soldier]";
|
||||
mes "Please be silent or the Csar will be angry.";
|
||||
close;
|
||||
}
|
||||
|
||||
mosk_in,118,66,5 duplicate(MoscSoldier) Soldier#mosk02 966
|
||||
mosk_in,133,110,3 duplicate(MoscSoldier) Soldier#mosk03 966
|
||||
mosk_in,133,73,3 duplicate(MoscSoldier) Soldier#mosk04 966
|
||||
//===== eAthena Script =======================================
|
||||
//= Moscovia Town
|
||||
//===== By: ==================================================
|
||||
//= Kisuka
|
||||
//===== Current Version: =====================================
|
||||
//= 1.1
|
||||
//===== Compatible With: =====================================
|
||||
//= eAthena SVN
|
||||
//===== Description: =========================================
|
||||
//= Moscovia Town Script
|
||||
//===== Additional Comments: =================================
|
||||
//= 1.0 First Version. [Kisuka]
|
||||
//= 1.1 Removed villagers (they are part of a quest). [Kisuka]
|
||||
//============================================================
|
||||
|
||||
// Moscovia Transportation
|
||||
//============================================================
|
||||
alberta,245,66,4 script Moscovia P.R. Officer#1 960,{
|
||||
mes "[Moscovia P.R. Officer]";
|
||||
mes "Moscovia! Do you know Moscovia?";
|
||||
mes "the paradise spreading on the endless seas...";
|
||||
mes "Welcome to Moscovia";
|
||||
mes "It's adventurous and mystic.";
|
||||
next;
|
||||
switch(select("About Moscovia...:Go to Moscovia.:Cancel")) {
|
||||
case 1:
|
||||
mes "[Moscovia P.R. Officer]";
|
||||
mes "Moscovia is a beautiful kingdom";
|
||||
mes "on an island located north of Rune";
|
||||
mes "Midgarts.";
|
||||
next;
|
||||
mes "[Moscovia P.R. Officer]";
|
||||
mes "I'm sure that you will be";
|
||||
mes "absolutely fascinated";
|
||||
mes "by Moscovia's beautiful scenery";
|
||||
mes "and gorgeous palace.";
|
||||
next;
|
||||
mes "[Moscovia P.R. Officer]";
|
||||
mes "Now that our long winter has";
|
||||
mes "passed,";
|
||||
mes "I'm happy that I can now show you";
|
||||
mes "our gorgeous hometown.";
|
||||
next;
|
||||
mes "[Moscovia P.R. Officer]";
|
||||
mes "If you feel like visiting Moscovia";
|
||||
mes "take the chance now!";
|
||||
mes "I'll help you to have a nice trip";
|
||||
mes "to Moscovia!";
|
||||
close;
|
||||
|
||||
case 2:
|
||||
mes "[Moscovia P.R. Officer]";
|
||||
mes "Ok then, let us start now.";
|
||||
mes "You should pay me 10,000 zeny";
|
||||
mes "to go to Moscovia.";
|
||||
mes "But when you come back,";
|
||||
mes "you don't have to pay.";
|
||||
next;
|
||||
mes "[Moscovia P.R. Officer]";
|
||||
mes "Can we leave now?";
|
||||
next;
|
||||
if (select("Let's go!:Cancel") == 2) {
|
||||
mes "[Moscovia P.R. Officer]";
|
||||
mes "If you're too busy now,";
|
||||
mes "please tell me again whenever you want.";
|
||||
mes "I'm always ready to guide anyone to Moscovia.";
|
||||
close;
|
||||
}
|
||||
if (Zeny < 10000) {
|
||||
mes "[Moscovia P.R. Officer]";
|
||||
mes "I'm sorry but you don't have";
|
||||
mes "enough zeny now";
|
||||
mes "You need 10,000 zeny";
|
||||
mes "to go to Moscovia";
|
||||
mes "Thank you.";
|
||||
close;
|
||||
}else{
|
||||
mes "[Moscovia P.R. Officer]";
|
||||
mes "Ok then, we're leaving now.";
|
||||
close2;
|
||||
set Zeny,Zeny - 10000;
|
||||
warp "moscovia",163,55;
|
||||
end;
|
||||
}
|
||||
case 3:
|
||||
mes "[Moscovia P.R. Officer]";
|
||||
mes "If you're too busy now,";
|
||||
mes "please tell me again whenever you want.";
|
||||
mes "I'm always ready to guide anyone to Moscovia.";
|
||||
close;
|
||||
}
|
||||
}
|
||||
|
||||
moscovia,166,53,4 script Moscovia P.R. Officer#2 960,{
|
||||
mes "[Moscovia P.R. Officer]";
|
||||
mes "How was your trip?";
|
||||
mes "Do you have good memories from Moscovia?";
|
||||
mes "A ship is now leaving";
|
||||
mes "for Rune Midgarts.";
|
||||
next;
|
||||
if (select("Return to Alberta:Cancel") == 2) {
|
||||
mes "[Moscovia P.R. Officer]";
|
||||
mes "If you want to see more";
|
||||
mes "please take your time.";
|
||||
close;
|
||||
}
|
||||
mes "[Moscovia P.R. Officer]";
|
||||
mes "Please come and visit soon.";
|
||||
mes "Ok then, Let's get going.";
|
||||
close2;
|
||||
warp "alberta",243,67;
|
||||
end;
|
||||
}
|
||||
|
||||
// Generic Moscovia NPCs
|
||||
//============================================================
|
||||
moscovia,253,166,4 script Soldier#mosk1 966,{
|
||||
mes "[Soldier]";
|
||||
mes "Our dear Csar Alexsay III is in the palace.";
|
||||
mes "He rules over Moscovia.";
|
||||
mes "Please be careful not to cause him any trouble.";
|
||||
close;
|
||||
}
|
||||
|
||||
// Moscovia Palace
|
||||
//============================================================
|
||||
- script Soldier#mosk::MoscSoldier 966,{
|
||||
mes "[Soldier]";
|
||||
mes "Please be silent or the Csar will be angry.";
|
||||
close;
|
||||
}
|
||||
|
||||
mosk_in,118,66,5 duplicate(MoscSoldier) Soldier#mosk02 966
|
||||
mosk_in,133,110,3 duplicate(MoscSoldier) Soldier#mosk03 966
|
||||
mosk_in,133,73,3 duplicate(MoscSoldier) Soldier#mosk04 966
|
||||
mosk_in,113,124,5 duplicate(MoscSoldier) Soldier#mosk05 966
|
File diff suppressed because it is too large
Load Diff
@ -1,86 +1,86 @@
|
||||
//===== eAthena Script =======================================
|
||||
//= Children Week Event
|
||||
//===== By: ==================================================
|
||||
//= Samuray22
|
||||
//===== Current Version: =====================================
|
||||
//= 1.1
|
||||
//===== Compatible With: =====================================
|
||||
//= eAthena SVN
|
||||
//===== Description: =========================================
|
||||
//= [Aegis Conversion]
|
||||
//= Indian Ro: Children Week Event
|
||||
//===== Additional Comments: =================================
|
||||
//= 1.1 First Beta. [Samuray22]
|
||||
//============================================================
|
||||
|
||||
prontera,146,91,5 script Pandit chacha#child07 61,{
|
||||
if(BaseLevel > 50) {
|
||||
mes "[Pandit chacha]";
|
||||
mes "Hahaha.";
|
||||
mes "It is special day, comes only one time in a year.";
|
||||
mes "If you see little adventurers around you send to me~";
|
||||
mes "I will give the special gift.";
|
||||
close;
|
||||
} else if(BaseLevel < 20) {
|
||||
mes "[Pandit chacha]";
|
||||
mes "Hahaha.";
|
||||
mes "You are a baby adventurer not little adventurer.";
|
||||
mes "When you more grow up, come back again. hahaha.";
|
||||
close;
|
||||
} else if(oversea_event9 < 1) {
|
||||
mes "[Pandit chacha]";
|
||||
mes "Hahaha.";
|
||||
mes "Welcome, little adventurers!";
|
||||
mes "Today is special day, isn't it~?";
|
||||
mes "I would like to give the small gift to little adventurer...";
|
||||
mes "What about you? Do you want to take it?";
|
||||
next;
|
||||
if(select("No. I will take it later.","Sure, i want.") == 1) {
|
||||
mes "[Pandit chacha]";
|
||||
mes "That's too bad.... hum...";
|
||||
mes "I gathered some stuffs from far a way world to make it....";
|
||||
mes "Whenever come back again if you want it...";
|
||||
close;
|
||||
}
|
||||
set oversea_event9,1;
|
||||
getitem 11705,10; //Children's Potion
|
||||
mes "[Pandit chacha]";
|
||||
mes "Look. This is a child Potion.";
|
||||
mes "The weight is just 1 but recover much HP.";
|
||||
mes "If you want to get more, bring the 1 Wedding Bouquet and 1 Witherless Rose.";
|
||||
close;
|
||||
} else if(oversea_event9 == 1) {
|
||||
if(countitem(745) > 0 && countitem(748) > 0) {
|
||||
mes "[Pandit chacha]";
|
||||
mes "Ahha!!";
|
||||
mes "You have remembered my beautiful composition.";
|
||||
mes "You did good work.";
|
||||
mes "Could you give me 1 Wedding Bouquet and 1 Witherless Rose? ";
|
||||
next;
|
||||
if(select("Not yet.","Sure, take it.") == 1) {
|
||||
mes "[Pandit chacha]";
|
||||
mes "If you are not prepared yet, call me when you ready.";
|
||||
close;
|
||||
}
|
||||
mes "[Pandit chacha]";
|
||||
mes "Hahaha.";
|
||||
mes "Oh~ you get it.";
|
||||
mes "Here, I will exchange to the 50 child potion.";
|
||||
mes "Once you get this 50 child potion, I won't give any more.";
|
||||
close2;
|
||||
delitem 745,1; //Wedding Bouquet
|
||||
delitem 748,1; //Witherless Rose
|
||||
set oversea_event9,2;
|
||||
getitem 11705,50; //Children's Potion
|
||||
end;
|
||||
}
|
||||
mes "[Pandit chacha]";
|
||||
mes "Little adventurers, you should bring the 1 Wedding Bouquet and 1 Witherless Rose.";
|
||||
mes "If you bring these stuffs I will exchange them for child Potion. ";
|
||||
close;
|
||||
}
|
||||
mes "[Pandit chacha]";
|
||||
mes "Hahaha.";
|
||||
mes "Are you enjoying children week~? ";
|
||||
close;
|
||||
//===== eAthena Script =======================================
|
||||
//= Children Week Event
|
||||
//===== By: ==================================================
|
||||
//= Samuray22
|
||||
//===== Current Version: =====================================
|
||||
//= 1.1
|
||||
//===== Compatible With: =====================================
|
||||
//= eAthena SVN
|
||||
//===== Description: =========================================
|
||||
//= [Aegis Conversion]
|
||||
//= Indian Ro: Children Week Event
|
||||
//===== Additional Comments: =================================
|
||||
//= 1.1 First Beta. [Samuray22]
|
||||
//============================================================
|
||||
|
||||
prontera,146,91,5 script Pandit chacha#child07 61,{
|
||||
if(BaseLevel > 50) {
|
||||
mes "[Pandit chacha]";
|
||||
mes "Hahaha.";
|
||||
mes "It is special day, comes only one time in a year.";
|
||||
mes "If you see little adventurers around you send to me~";
|
||||
mes "I will give the special gift.";
|
||||
close;
|
||||
} else if(BaseLevel < 20) {
|
||||
mes "[Pandit chacha]";
|
||||
mes "Hahaha.";
|
||||
mes "You are a baby adventurer not little adventurer.";
|
||||
mes "When you more grow up, come back again. hahaha.";
|
||||
close;
|
||||
} else if(oversea_event9 < 1) {
|
||||
mes "[Pandit chacha]";
|
||||
mes "Hahaha.";
|
||||
mes "Welcome, little adventurers!";
|
||||
mes "Today is special day, isn't it~?";
|
||||
mes "I would like to give the small gift to little adventurer...";
|
||||
mes "What about you? Do you want to take it?";
|
||||
next;
|
||||
if(select("No. I will take it later.","Sure, i want.") == 1) {
|
||||
mes "[Pandit chacha]";
|
||||
mes "That's too bad.... hum...";
|
||||
mes "I gathered some stuffs from far a way world to make it....";
|
||||
mes "Whenever come back again if you want it...";
|
||||
close;
|
||||
}
|
||||
set oversea_event9,1;
|
||||
getitem 11705,10; //Children's Potion
|
||||
mes "[Pandit chacha]";
|
||||
mes "Look. This is a child Potion.";
|
||||
mes "The weight is just 1 but recover much HP.";
|
||||
mes "If you want to get more, bring the 1 Wedding Bouquet and 1 Witherless Rose.";
|
||||
close;
|
||||
} else if(oversea_event9 == 1) {
|
||||
if(countitem(745) > 0 && countitem(748) > 0) {
|
||||
mes "[Pandit chacha]";
|
||||
mes "Ahha!!";
|
||||
mes "You have remembered my beautiful composition.";
|
||||
mes "You did good work.";
|
||||
mes "Could you give me 1 Wedding Bouquet and 1 Witherless Rose? ";
|
||||
next;
|
||||
if(select("Not yet.","Sure, take it.") == 1) {
|
||||
mes "[Pandit chacha]";
|
||||
mes "If you are not prepared yet, call me when you ready.";
|
||||
close;
|
||||
}
|
||||
mes "[Pandit chacha]";
|
||||
mes "Hahaha.";
|
||||
mes "Oh~ you get it.";
|
||||
mes "Here, I will exchange to the 50 child potion.";
|
||||
mes "Once you get this 50 child potion, I won't give any more.";
|
||||
close2;
|
||||
delitem 745,1; //Wedding Bouquet
|
||||
delitem 748,1; //Witherless Rose
|
||||
set oversea_event9,2;
|
||||
getitem 11705,50; //Children's Potion
|
||||
end;
|
||||
}
|
||||
mes "[Pandit chacha]";
|
||||
mes "Little adventurers, you should bring the 1 Wedding Bouquet and 1 Witherless Rose.";
|
||||
mes "If you bring these stuffs I will exchange them for child Potion. ";
|
||||
close;
|
||||
}
|
||||
mes "[Pandit chacha]";
|
||||
mes "Hahaha.";
|
||||
mes "Are you enjoying children week~? ";
|
||||
close;
|
||||
}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,91 +1,91 @@
|
||||
//===== eAthena Script =======================================
|
||||
//= Moscovia Guides
|
||||
//===== By: ==================================================
|
||||
//= Kisuka
|
||||
//===== Current Version: =====================================
|
||||
//= 1.0
|
||||
//===== Compatible With: =====================================
|
||||
//= eAthena SVN
|
||||
//===== Description: =========================================
|
||||
//= Guides for the town of Moscovia.
|
||||
//===== Additional Comments: =================================
|
||||
//= 1.0 First Version. [Kisuka]
|
||||
//============================================================
|
||||
|
||||
moscovia,161,76,4 script Moscovia Guide#mosk 959,{
|
||||
mes "[Moscovia Guide]";
|
||||
mes "Welcome to Moscovia";
|
||||
mes "Here is the paradise spreading on";
|
||||
mes "the endless seas";
|
||||
mes "You'll be happy with the beautiful";
|
||||
mes "scenery and the sunlight!";
|
||||
next;
|
||||
mes "[Moscovia Guide]";
|
||||
mes "I was sent from Moscovia Palace";
|
||||
mes "to guide tourists and to give them";
|
||||
mes "information on this town.";
|
||||
mes "If you have some questions, please ask me.";
|
||||
next;
|
||||
switch(select("Ask where you can go.:Delete all the marks on the mini-map.:Cancel.")) {
|
||||
case 1:
|
||||
mes "[Moscovia Guide]";
|
||||
mes "Where would you like to go?";
|
||||
next;
|
||||
switch(select("The Palace:Armor Shop:Tool Shop:An Inn:Cancel")) {
|
||||
case 1:
|
||||
mes "[Moscovia Guide]";
|
||||
mes "The Palace can be found ^ff0000+^000000 at the";
|
||||
mes "end of the North sea from";
|
||||
mes "Rune-Midgarts.";
|
||||
mes "There resides our Lord the Czar of";
|
||||
mes "Moscovia and his retainers.";
|
||||
close2;
|
||||
viewpoint 1,257,138,1,0xFF0000;
|
||||
end;
|
||||
case 2:
|
||||
viewpoint 1,185,187,2,0x00FF00;
|
||||
mes "[Moscovia Guide]";
|
||||
mes "The Armor Shop is located at the";
|
||||
mes "southwest corner of town..";
|
||||
mes "You can buy armor made by the best";
|
||||
mes "craftsmen of Moscovia there.";
|
||||
close;
|
||||
case 3:
|
||||
mes "[Moscovia Guide]";
|
||||
mes "The Tool Shop is located just south";
|
||||
mes "from the center of town.";
|
||||
mes "You can find all sorts of things";
|
||||
mes "you need for your travels.";
|
||||
close2;
|
||||
viewpoint 1,223,174,3,0x00FF00;
|
||||
end;
|
||||
case 4:
|
||||
mes "[Moscovia Guide]";
|
||||
mes "The Inn 'Sticky Herb Tree' is just";
|
||||
mes "north from the center of town.";
|
||||
mes "If you need to rest, there is no";
|
||||
mes "better place to stay.";
|
||||
close2;
|
||||
viewpoint 1,229,208,4,0x3355FF;
|
||||
end;
|
||||
case 5:
|
||||
close;
|
||||
}
|
||||
case 2:
|
||||
mes "[Moscovia Guide]";
|
||||
mes "I've deleted all marks on the mini-map.";
|
||||
mes "Whenever you'd like to put marks";
|
||||
mes "there, you can ask me.";
|
||||
viewpoint 2,257,138,1,0xFF0000;
|
||||
viewpoint 2,185,187,2,0x00FF00;
|
||||
viewpoint 2,223,174,3,0x00FF00;
|
||||
viewpoint 2,229,208,4,0x3355FF;
|
||||
close;
|
||||
|
||||
case 3:
|
||||
mes "[Moscovia Guide]";
|
||||
mes "It'd be great to walk about alone.";
|
||||
mes "Take care.";
|
||||
close;
|
||||
}
|
||||
//===== eAthena Script =======================================
|
||||
//= Moscovia Guides
|
||||
//===== By: ==================================================
|
||||
//= Kisuka
|
||||
//===== Current Version: =====================================
|
||||
//= 1.0
|
||||
//===== Compatible With: =====================================
|
||||
//= eAthena SVN
|
||||
//===== Description: =========================================
|
||||
//= Guides for the town of Moscovia.
|
||||
//===== Additional Comments: =================================
|
||||
//= 1.0 First Version. [Kisuka]
|
||||
//============================================================
|
||||
|
||||
moscovia,161,76,4 script Moscovia Guide#mosk 959,{
|
||||
mes "[Moscovia Guide]";
|
||||
mes "Welcome to Moscovia";
|
||||
mes "Here is the paradise spreading on";
|
||||
mes "the endless seas";
|
||||
mes "You'll be happy with the beautiful";
|
||||
mes "scenery and the sunlight!";
|
||||
next;
|
||||
mes "[Moscovia Guide]";
|
||||
mes "I was sent from Moscovia Palace";
|
||||
mes "to guide tourists and to give them";
|
||||
mes "information on this town.";
|
||||
mes "If you have some questions, please ask me.";
|
||||
next;
|
||||
switch(select("Ask where you can go.:Delete all the marks on the mini-map.:Cancel.")) {
|
||||
case 1:
|
||||
mes "[Moscovia Guide]";
|
||||
mes "Where would you like to go?";
|
||||
next;
|
||||
switch(select("The Palace:Armor Shop:Tool Shop:An Inn:Cancel")) {
|
||||
case 1:
|
||||
mes "[Moscovia Guide]";
|
||||
mes "The Palace can be found ^ff0000+^000000 at the";
|
||||
mes "end of the North sea from";
|
||||
mes "Rune-Midgarts.";
|
||||
mes "There resides our Lord the Czar of";
|
||||
mes "Moscovia and his retainers.";
|
||||
close2;
|
||||
viewpoint 1,257,138,1,0xFF0000;
|
||||
end;
|
||||
case 2:
|
||||
viewpoint 1,185,187,2,0x00FF00;
|
||||
mes "[Moscovia Guide]";
|
||||
mes "The Armor Shop is located at the";
|
||||
mes "southwest corner of town..";
|
||||
mes "You can buy armor made by the best";
|
||||
mes "craftsmen of Moscovia there.";
|
||||
close;
|
||||
case 3:
|
||||
mes "[Moscovia Guide]";
|
||||
mes "The Tool Shop is located just south";
|
||||
mes "from the center of town.";
|
||||
mes "You can find all sorts of things";
|
||||
mes "you need for your travels.";
|
||||
close2;
|
||||
viewpoint 1,223,174,3,0x00FF00;
|
||||
end;
|
||||
case 4:
|
||||
mes "[Moscovia Guide]";
|
||||
mes "The Inn 'Sticky Herb Tree' is just";
|
||||
mes "north from the center of town.";
|
||||
mes "If you need to rest, there is no";
|
||||
mes "better place to stay.";
|
||||
close2;
|
||||
viewpoint 1,229,208,4,0x3355FF;
|
||||
end;
|
||||
case 5:
|
||||
close;
|
||||
}
|
||||
case 2:
|
||||
mes "[Moscovia Guide]";
|
||||
mes "I've deleted all marks on the mini-map.";
|
||||
mes "Whenever you'd like to put marks";
|
||||
mes "there, you can ask me.";
|
||||
viewpoint 2,257,138,1,0xFF0000;
|
||||
viewpoint 2,185,187,2,0x00FF00;
|
||||
viewpoint 2,223,174,3,0x00FF00;
|
||||
viewpoint 2,229,208,4,0x3355FF;
|
||||
close;
|
||||
|
||||
case 3:
|
||||
mes "[Moscovia Guide]";
|
||||
mes "It'd be great to walk about alone.";
|
||||
mes "Take care.";
|
||||
close;
|
||||
}
|
||||
}
|
@ -1,153 +1,153 @@
|
||||
//===== eAthena Script =======================================
|
||||
//= Moscovia Kafras
|
||||
//===== By: ==================================================
|
||||
//= Kisuka
|
||||
//===== Current Version: =====================================
|
||||
//= 1.0
|
||||
//===== Compatible With: =====================================
|
||||
//= eAthena SVN
|
||||
//===== Description: =========================================
|
||||
//= Kafras for the town of Moscovia.
|
||||
//===== Additional Comments: =================================
|
||||
//= 1.0 First Version. [Kisuka]
|
||||
//============================================================
|
||||
|
||||
moscovia,223,191,4 script Kafra Staff#mosk 114,{
|
||||
cutin "kafra_04",2;
|
||||
mes "[Kafra Staff]";
|
||||
mes "Welcome to the";
|
||||
mes "Kafra Corporation.";
|
||||
mes "The Kafra services";
|
||||
mes "are always on your side.";
|
||||
mes "How may I assist you?";
|
||||
next;
|
||||
switch(select("Save:Use Storage:Rent a Pushcart:Check Other Information:Cancel")) {
|
||||
case 1:
|
||||
mes "[Kafra Staff]";
|
||||
mes "Your Respawn Point has";
|
||||
mes "been saved in the city of";
|
||||
mes "Moscovia. Thank you for";
|
||||
mes "using the Kafra Service.";
|
||||
savepoint "moscovia",221,194;
|
||||
close2;
|
||||
cutin "", 255;
|
||||
end;
|
||||
case 2:
|
||||
if(basicskillcheck() && getskilllv("NV_BASIC") < 6){
|
||||
mes "[Kafra Staff]";
|
||||
mes "I'm sorry, but you";
|
||||
mes "need the Novice's";
|
||||
mes "Basic Skill Level 6 to";
|
||||
mes "use the Storage Service.";
|
||||
close2;
|
||||
cutin "", 255;
|
||||
end;
|
||||
}
|
||||
if(countitem(7059)) delitem 7059,1;
|
||||
else {
|
||||
if(Zeny<80){
|
||||
mes "[Kafra Staff]";
|
||||
mes "I'm sorry, but you don't";
|
||||
mes "have enough zeny to use";
|
||||
mes "the Storage Service. Our";
|
||||
mes "Storage access fee is 80 zeny.";
|
||||
close2;
|
||||
cutin "", 255;
|
||||
end;
|
||||
}
|
||||
set Zeny, Zeny-80;
|
||||
set RESRVPTS, RESRVPTS + (80/5);
|
||||
}
|
||||
mes "[Kafra Staff]";
|
||||
mes "Here, let me open";
|
||||
mes "your Storage for you.";
|
||||
mes "Thank you for using";
|
||||
mes "the Kafra Service.";
|
||||
|
||||
callfunc("F_CheckKafCode"); //check your storage password, if set
|
||||
|
||||
close2;
|
||||
openstorage;
|
||||
cutin "", 255;
|
||||
end;
|
||||
case 3:
|
||||
if(baseClass != Job_Merchant){
|
||||
mes "[Kafra Staff]";
|
||||
mes "I'm sorry, but the";
|
||||
mes "Pushcart rental service";
|
||||
mes "is only available to Merchants,";
|
||||
mes "Blacksmiths, Master Smiths,";
|
||||
mes "Alchemists and Biochemists.";
|
||||
close2;
|
||||
cutin "", 255;
|
||||
end;
|
||||
}
|
||||
|
||||
else if(checkcart() == 1){
|
||||
mes "[Kafra Staff]";
|
||||
mes "You already have";
|
||||
mes "a Pushcart equipped.";
|
||||
mes "Unfortunately, we can't";
|
||||
mes "rent more than one to";
|
||||
mes "each customer at a time.";
|
||||
close2;
|
||||
cutin "", 255;
|
||||
end;
|
||||
}
|
||||
|
||||
if(countitem(7061) > 0) delitem 7061,1;
|
||||
else {
|
||||
mes "[Kafra Staff]";
|
||||
mes "The Pushcart rental";
|
||||
mes "fee is 700 zeny. Would";
|
||||
mes "you like to rent a Pushcart?";
|
||||
next;
|
||||
if(select("Rent a Pushcart.:Cancel.") == 1) {
|
||||
if(Zeny<700){
|
||||
mes "[Kafra Staff]";
|
||||
mes "I'm sorry, but you";
|
||||
mes "don't have enough";
|
||||
mes "zeny to pay the Pushcart";
|
||||
mes "rental fee of 700 zeny.";
|
||||
close2;
|
||||
cutin "", 255;
|
||||
end;
|
||||
}
|
||||
set Zeny,Zeny-700;
|
||||
set RESRVPTS, RESRVPTS + 48;
|
||||
}else{
|
||||
close2;
|
||||
cutin "", 255;
|
||||
end;
|
||||
}
|
||||
}
|
||||
setcart;
|
||||
close2;
|
||||
cutin "", 255;
|
||||
end;
|
||||
case 4:
|
||||
if(select("Check Special Reserve Points.:Cancel") == 2) {
|
||||
cutin "", 255;
|
||||
close;
|
||||
}
|
||||
mes "[Kafra Staff]";
|
||||
mes strcharinfo(0) + ", you have a total of";
|
||||
mes RESRVPTS+ " Special Reserve Points.";
|
||||
next;
|
||||
mes "[Kafra Staff]";
|
||||
mes "You can exchange your";
|
||||
mes "Special Reserve Points for";
|
||||
mes "rewards at the Kafra Main Office in Al De Baran. Please use our";
|
||||
mes "convenient services to see the benefits of our rewards program.";
|
||||
close2;
|
||||
cutin "", 255;
|
||||
end;
|
||||
case 5:
|
||||
mes "[Kafra Staff]";
|
||||
mes "We, here at Kafra Corporation,";
|
||||
mes "are always endeavoring to provide you with the best services. We hope that we meet your adventuring needs and standards of excellence.";
|
||||
close2;
|
||||
cutin "", 255;
|
||||
end;
|
||||
}
|
||||
//===== eAthena Script =======================================
|
||||
//= Moscovia Kafras
|
||||
//===== By: ==================================================
|
||||
//= Kisuka
|
||||
//===== Current Version: =====================================
|
||||
//= 1.0
|
||||
//===== Compatible With: =====================================
|
||||
//= eAthena SVN
|
||||
//===== Description: =========================================
|
||||
//= Kafras for the town of Moscovia.
|
||||
//===== Additional Comments: =================================
|
||||
//= 1.0 First Version. [Kisuka]
|
||||
//============================================================
|
||||
|
||||
moscovia,223,191,4 script Kafra Staff#mosk 114,{
|
||||
cutin "kafra_04",2;
|
||||
mes "[Kafra Staff]";
|
||||
mes "Welcome to the";
|
||||
mes "Kafra Corporation.";
|
||||
mes "The Kafra services";
|
||||
mes "are always on your side.";
|
||||
mes "How may I assist you?";
|
||||
next;
|
||||
switch(select("Save:Use Storage:Rent a Pushcart:Check Other Information:Cancel")) {
|
||||
case 1:
|
||||
mes "[Kafra Staff]";
|
||||
mes "Your Respawn Point has";
|
||||
mes "been saved in the city of";
|
||||
mes "Moscovia. Thank you for";
|
||||
mes "using the Kafra Service.";
|
||||
savepoint "moscovia",221,194;
|
||||
close2;
|
||||
cutin "", 255;
|
||||
end;
|
||||
case 2:
|
||||
if(basicskillcheck() && getskilllv("NV_BASIC") < 6){
|
||||
mes "[Kafra Staff]";
|
||||
mes "I'm sorry, but you";
|
||||
mes "need the Novice's";
|
||||
mes "Basic Skill Level 6 to";
|
||||
mes "use the Storage Service.";
|
||||
close2;
|
||||
cutin "", 255;
|
||||
end;
|
||||
}
|
||||
if(countitem(7059)) delitem 7059,1;
|
||||
else {
|
||||
if(Zeny<80){
|
||||
mes "[Kafra Staff]";
|
||||
mes "I'm sorry, but you don't";
|
||||
mes "have enough zeny to use";
|
||||
mes "the Storage Service. Our";
|
||||
mes "Storage access fee is 80 zeny.";
|
||||
close2;
|
||||
cutin "", 255;
|
||||
end;
|
||||
}
|
||||
set Zeny, Zeny-80;
|
||||
set RESRVPTS, RESRVPTS + (80/5);
|
||||
}
|
||||
mes "[Kafra Staff]";
|
||||
mes "Here, let me open";
|
||||
mes "your Storage for you.";
|
||||
mes "Thank you for using";
|
||||
mes "the Kafra Service.";
|
||||
|
||||
callfunc("F_CheckKafCode"); //check your storage password, if set
|
||||
|
||||
close2;
|
||||
openstorage;
|
||||
cutin "", 255;
|
||||
end;
|
||||
case 3:
|
||||
if(baseClass != Job_Merchant){
|
||||
mes "[Kafra Staff]";
|
||||
mes "I'm sorry, but the";
|
||||
mes "Pushcart rental service";
|
||||
mes "is only available to Merchants,";
|
||||
mes "Blacksmiths, Master Smiths,";
|
||||
mes "Alchemists and Biochemists.";
|
||||
close2;
|
||||
cutin "", 255;
|
||||
end;
|
||||
}
|
||||
|
||||
else if(checkcart() == 1){
|
||||
mes "[Kafra Staff]";
|
||||
mes "You already have";
|
||||
mes "a Pushcart equipped.";
|
||||
mes "Unfortunately, we can't";
|
||||
mes "rent more than one to";
|
||||
mes "each customer at a time.";
|
||||
close2;
|
||||
cutin "", 255;
|
||||
end;
|
||||
}
|
||||
|
||||
if(countitem(7061) > 0) delitem 7061,1;
|
||||
else {
|
||||
mes "[Kafra Staff]";
|
||||
mes "The Pushcart rental";
|
||||
mes "fee is 700 zeny. Would";
|
||||
mes "you like to rent a Pushcart?";
|
||||
next;
|
||||
if(select("Rent a Pushcart.:Cancel.") == 1) {
|
||||
if(Zeny<700){
|
||||
mes "[Kafra Staff]";
|
||||
mes "I'm sorry, but you";
|
||||
mes "don't have enough";
|
||||
mes "zeny to pay the Pushcart";
|
||||
mes "rental fee of 700 zeny.";
|
||||
close2;
|
||||
cutin "", 255;
|
||||
end;
|
||||
}
|
||||
set Zeny,Zeny-700;
|
||||
set RESRVPTS, RESRVPTS + 48;
|
||||
}else{
|
||||
close2;
|
||||
cutin "", 255;
|
||||
end;
|
||||
}
|
||||
}
|
||||
setcart;
|
||||
close2;
|
||||
cutin "", 255;
|
||||
end;
|
||||
case 4:
|
||||
if(select("Check Special Reserve Points.:Cancel") == 2) {
|
||||
cutin "", 255;
|
||||
close;
|
||||
}
|
||||
mes "[Kafra Staff]";
|
||||
mes strcharinfo(0) + ", you have a total of";
|
||||
mes RESRVPTS+ " Special Reserve Points.";
|
||||
next;
|
||||
mes "[Kafra Staff]";
|
||||
mes "You can exchange your";
|
||||
mes "Special Reserve Points for";
|
||||
mes "rewards at the Kafra Main Office in Al De Baran. Please use our";
|
||||
mes "convenient services to see the benefits of our rewards program.";
|
||||
close2;
|
||||
cutin "", 255;
|
||||
end;
|
||||
case 5:
|
||||
mes "[Kafra Staff]";
|
||||
mes "We, here at Kafra Corporation,";
|
||||
mes "are always endeavoring to provide you with the best services. We hope that we meet your adventuring needs and standards of excellence.";
|
||||
close2;
|
||||
cutin "", 255;
|
||||
end;
|
||||
}
|
||||
}
|
698
readme.html
698
readme.html
@ -1,349 +1,349 @@
|
||||
<html><head><link rel="stylesheet" type="text/css" href="./readme/readme.css"><title>eAthena - Introduction</title></head>
|
||||
|
||||
<body>
|
||||
<div id="dleftbg">
|
||||
</div>
|
||||
<div id="drightbg">
|
||||
</div>
|
||||
<div id="canvas" align="center">
|
||||
<table cellspacing="0" cellpadding="0" border="0" id="ea" align="center">
|
||||
<tr>
|
||||
<td id="leftborder" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td id="leftborderspacer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<img src="./readme/images/leftborder.gif">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td id="middle" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0" valign="top">
|
||||
<tr>
|
||||
<td id="logo" valign="top">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="100%">
|
||||
<tr>
|
||||
<td rowspan="4">
|
||||
<img src="./readme/images/chara.gif" width="366" height="274">
|
||||
</td>
|
||||
<td rowspan="4" width="129">
|
||||
</td>
|
||||
<td colspan="2" width="305" height="51" align="right">
|
||||
<img src="./readme/images/banner.gif" width="305" height="51">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="title" colspan="2" align="right">
|
||||
Introduction
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="81" colspan="2">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="navi" align="right">
|
||||
Introduction<br>
|
||||
<a href="./readme/changelog.html">Changelog</a><br>
|
||||
<a href="./readme/features.html">Features</a><br>
|
||||
<a href="./readme/npcfeatures.html">NPC Features</a>
|
||||
|
||||
</td>
|
||||
<td class="navi" align="right">
|
||||
<a href="./readme/setup.html">Setup</a><br>
|
||||
<a href="./readme/gmcommands.html">GM Commands</a><br>
|
||||
<a href="./readme/faq.html">FAQ</a><br>
|
||||
<a href="./readme/resources.html">Resources</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="btmborder">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="2">
|
||||
<tr>
|
||||
<td id="leftbtmborder"">
|
||||
</td>
|
||||
<td id="midbtmborder"">
|
||||
<img src="./readme/images/btmborder.gif" width="44" height="2">
|
||||
</td>
|
||||
<td id="rightbtmborder">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="content">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="100%">
|
||||
<tr>
|
||||
<td id="lefttext" valign="top">
|
||||
<h1>eAthena SVN series</h1>
|
||||
eAthena is an open-source Ragnarok Online server emulator. It's written in C, but we are working on a C++ version. Although it is cross-platform, we only officially support Win32 and Linux.
|
||||
<br>
|
||||
<br>eAthena is licensed under the GPL, so please give us credit if you use our code.
|
||||
<br>Our SVN (<a href="http://tortoisesvn.tigris.org/download.html">You may download TortoiseSVN here to access our SVN</a>) is located at <a href="http://66.118.142.23:8080/svn/ea/">http://66.118.142.23:8080/svn/ea/</a>. SVN stands for Subversion, which is similar to the commonly used CVS.
|
||||
<br>
|
||||
<br>P.S. If you had a hard time loading this readme, please use <a href="http://www.getfirefox.com">Firefox</a>.
|
||||
|
||||
</td>
|
||||
<td id="midtext">
|
||||
</td>
|
||||
<td id="righttext" valign="top">
|
||||
<h1>The eAthena Team</h1>
|
||||
Here are our current developers. We have had many past developers, and if you come across this, please let us know ^_^.<br>
|
||||
|
||||
<b>Developers</b>
|
||||
<table class="right">
|
||||
<tr>
|
||||
<td>
|
||||
Wallex
|
||||
</td>
|
||||
<td>
|
||||
Lupus
|
||||
</td>
|
||||
<td>
|
||||
DracoRPG
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
MasterOfMuppets
|
||||
</td>
|
||||
|
||||
<td>
|
||||
Fredzilla
|
||||
</td>
|
||||
<td>
|
||||
Kayla
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Kevin
|
||||
</td>
|
||||
<td>
|
||||
Shinomori
|
||||
</td>
|
||||
<td>
|
||||
Clownphobia(Cuteboi)
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LuzZza
|
||||
</td>
|
||||
<td>
|
||||
Evera
|
||||
</td>
|
||||
<td>
|
||||
Nexon
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Celest
|
||||
</td>
|
||||
<td>
|
||||
Wizputer
|
||||
</td>
|
||||
<td>
|
||||
Valaris
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Lance
|
||||
</td>
|
||||
<td>
|
||||
Komurka
|
||||
</td>
|
||||
<td>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<b>Mods/Admins</b>
|
||||
<table class="right">
|
||||
<tr>
|
||||
<td>
|
||||
Massdriller
|
||||
</td>
|
||||
<td>
|
||||
Deviant
|
||||
</td>
|
||||
<td>
|
||||
Delta
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Manipulator
|
||||
</td>
|
||||
<td>
|
||||
SantaPoring
|
||||
</td>
|
||||
<td>
|
||||
Davidchak
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Valaris
|
||||
</td><td></td><td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<b>Ex-Developers and Honorable Mentions</b>
|
||||
<table class="right">
|
||||
<tr>
|
||||
<td>
|
||||
RoVeRT
|
||||
</td>
|
||||
<td>
|
||||
AppleGirl
|
||||
</td>
|
||||
<td>
|
||||
Akaru/Hikaru
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Darkchild
|
||||
</td>
|
||||
<td>
|
||||
Kalaspuff
|
||||
</td>
|
||||
<td>
|
||||
Ajarn
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Fritz
|
||||
</td>
|
||||
<td>
|
||||
Aria
|
||||
</td>
|
||||
<td>
|
||||
Mass Zero
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Nana
|
||||
</td>
|
||||
<td>
|
||||
Shinigami
|
||||
</td>
|
||||
<td>
|
||||
Moonsoul
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Kobra_k88
|
||||
</td>
|
||||
<td>
|
||||
Codemaster
|
||||
</td>
|
||||
<td>
|
||||
Davidsiaw
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
MC_Cameri
|
||||
</td>
|
||||
<td>
|
||||
Spira
|
||||
</td>
|
||||
<td>
|
||||
Lord
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Yor
|
||||
</td>
|
||||
<td>
|
||||
Sara-chan
|
||||
</td>
|
||||
<td>
|
||||
Mikage
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Ajs15822
|
||||
</td>
|
||||
<td>
|
||||
Cyberghost
|
||||
</td>
|
||||
<td>
|
||||
Azndragon
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Nasedo
|
||||
</td>
|
||||
<td>
|
||||
Sirius
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
<br />
|
||||
</strong>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
© Content Copyright 2005 eAthena Development Team/Evera<br>
|
||||
© Design Copyright 2005 Evera
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</table>
|
||||
<td id="rightborder" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td id="rightborderspacer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<img src="./readme/images/rightborder.gif">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
<html><head><link rel="stylesheet" type="text/css" href="./readme/readme.css"><title>eAthena - Introduction</title></head>
|
||||
|
||||
<body>
|
||||
<div id="dleftbg">
|
||||
</div>
|
||||
<div id="drightbg">
|
||||
</div>
|
||||
<div id="canvas" align="center">
|
||||
<table cellspacing="0" cellpadding="0" border="0" id="ea" align="center">
|
||||
<tr>
|
||||
<td id="leftborder" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td id="leftborderspacer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<img src="./readme/images/leftborder.gif">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td id="middle" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0" valign="top">
|
||||
<tr>
|
||||
<td id="logo" valign="top">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="100%">
|
||||
<tr>
|
||||
<td rowspan="4">
|
||||
<img src="./readme/images/chara.gif" width="366" height="274">
|
||||
</td>
|
||||
<td rowspan="4" width="129">
|
||||
</td>
|
||||
<td colspan="2" width="305" height="51" align="right">
|
||||
<img src="./readme/images/banner.gif" width="305" height="51">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="title" colspan="2" align="right">
|
||||
Introduction
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="81" colspan="2">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="navi" align="right">
|
||||
Introduction<br>
|
||||
<a href="./readme/changelog.html">Changelog</a><br>
|
||||
<a href="./readme/features.html">Features</a><br>
|
||||
<a href="./readme/npcfeatures.html">NPC Features</a>
|
||||
|
||||
</td>
|
||||
<td class="navi" align="right">
|
||||
<a href="./readme/setup.html">Setup</a><br>
|
||||
<a href="./readme/gmcommands.html">GM Commands</a><br>
|
||||
<a href="./readme/faq.html">FAQ</a><br>
|
||||
<a href="./readme/resources.html">Resources</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="btmborder">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="2">
|
||||
<tr>
|
||||
<td id="leftbtmborder"">
|
||||
</td>
|
||||
<td id="midbtmborder"">
|
||||
<img src="./readme/images/btmborder.gif" width="44" height="2">
|
||||
</td>
|
||||
<td id="rightbtmborder">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="content">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="100%">
|
||||
<tr>
|
||||
<td id="lefttext" valign="top">
|
||||
<h1>eAthena SVN series</h1>
|
||||
eAthena is an open-source Ragnarok Online server emulator. It's written in C, but we are working on a C++ version. Although it is cross-platform, we only officially support Win32 and Linux.
|
||||
<br>
|
||||
<br>eAthena is licensed under the GPL, so please give us credit if you use our code.
|
||||
<br>Our SVN (<a href="http://tortoisesvn.tigris.org/download.html">You may download TortoiseSVN here to access our SVN</a>) is located at <a href="http://66.118.142.23:8080/svn/ea/">http://66.118.142.23:8080/svn/ea/</a>. SVN stands for Subversion, which is similar to the commonly used CVS.
|
||||
<br>
|
||||
<br>P.S. If you had a hard time loading this readme, please use <a href="http://www.getfirefox.com">Firefox</a>.
|
||||
|
||||
</td>
|
||||
<td id="midtext">
|
||||
</td>
|
||||
<td id="righttext" valign="top">
|
||||
<h1>The eAthena Team</h1>
|
||||
Here are our current developers. We have had many past developers, and if you come across this, please let us know ^_^.<br>
|
||||
|
||||
<b>Developers</b>
|
||||
<table class="right">
|
||||
<tr>
|
||||
<td>
|
||||
Wallex
|
||||
</td>
|
||||
<td>
|
||||
Lupus
|
||||
</td>
|
||||
<td>
|
||||
DracoRPG
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
MasterOfMuppets
|
||||
</td>
|
||||
|
||||
<td>
|
||||
Fredzilla
|
||||
</td>
|
||||
<td>
|
||||
Kayla
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Kevin
|
||||
</td>
|
||||
<td>
|
||||
Shinomori
|
||||
</td>
|
||||
<td>
|
||||
Clownphobia(Cuteboi)
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LuzZza
|
||||
</td>
|
||||
<td>
|
||||
Evera
|
||||
</td>
|
||||
<td>
|
||||
Nexon
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Celest
|
||||
</td>
|
||||
<td>
|
||||
Wizputer
|
||||
</td>
|
||||
<td>
|
||||
Valaris
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Lance
|
||||
</td>
|
||||
<td>
|
||||
Komurka
|
||||
</td>
|
||||
<td>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<b>Mods/Admins</b>
|
||||
<table class="right">
|
||||
<tr>
|
||||
<td>
|
||||
Massdriller
|
||||
</td>
|
||||
<td>
|
||||
Deviant
|
||||
</td>
|
||||
<td>
|
||||
Delta
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Manipulator
|
||||
</td>
|
||||
<td>
|
||||
SantaPoring
|
||||
</td>
|
||||
<td>
|
||||
Davidchak
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Valaris
|
||||
</td><td></td><td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<b>Ex-Developers and Honorable Mentions</b>
|
||||
<table class="right">
|
||||
<tr>
|
||||
<td>
|
||||
RoVeRT
|
||||
</td>
|
||||
<td>
|
||||
AppleGirl
|
||||
</td>
|
||||
<td>
|
||||
Akaru/Hikaru
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Darkchild
|
||||
</td>
|
||||
<td>
|
||||
Kalaspuff
|
||||
</td>
|
||||
<td>
|
||||
Ajarn
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Fritz
|
||||
</td>
|
||||
<td>
|
||||
Aria
|
||||
</td>
|
||||
<td>
|
||||
Mass Zero
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Nana
|
||||
</td>
|
||||
<td>
|
||||
Shinigami
|
||||
</td>
|
||||
<td>
|
||||
Moonsoul
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Kobra_k88
|
||||
</td>
|
||||
<td>
|
||||
Codemaster
|
||||
</td>
|
||||
<td>
|
||||
Davidsiaw
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
MC_Cameri
|
||||
</td>
|
||||
<td>
|
||||
Spira
|
||||
</td>
|
||||
<td>
|
||||
Lord
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Yor
|
||||
</td>
|
||||
<td>
|
||||
Sara-chan
|
||||
</td>
|
||||
<td>
|
||||
Mikage
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Ajs15822
|
||||
</td>
|
||||
<td>
|
||||
Cyberghost
|
||||
</td>
|
||||
<td>
|
||||
Azndragon
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Nasedo
|
||||
</td>
|
||||
<td>
|
||||
Sirius
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
<br />
|
||||
</strong>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
© Content Copyright 2005 eAthena Development Team/Evera<br>
|
||||
© Design Copyright 2005 Evera
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</table>
|
||||
<td id="rightborder" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td id="rightborderspacer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<img src="./readme/images/rightborder.gif">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
@ -1,136 +1,136 @@
|
||||
<html><head><title>eAthena - Changelog</title><head>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="./readme.css">
|
||||
|
||||
<body>
|
||||
<div id="dleftbg">
|
||||
</div>
|
||||
<div id="drightbg">
|
||||
</div>
|
||||
<div id="canvas" align="center">
|
||||
<table cellspacing="0" cellpadding="0" border="0" id="ea" align="center">
|
||||
<tr>
|
||||
<td id="leftborder" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td id="leftborderspacer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<img src="./images/leftborder.gif">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td id="middle" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0" valign="top">
|
||||
<tr>
|
||||
<td id="logo" valign="top">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="100%">
|
||||
<tr>
|
||||
<td rowspan="4">
|
||||
<img src="./images/chara.gif" width="366" height="274">
|
||||
</td>
|
||||
<td rowspan="4" width="129">
|
||||
</td>
|
||||
<td colspan="2" width="305" height="51" align="right">
|
||||
<img src="./images/banner.gif" width="305" height="51">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="title" colspan="2" align="right">
|
||||
Changelog
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="81" colspan="2">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="navi" align="right">
|
||||
<a href="../readme.html">Introduction</a><br>
|
||||
Changelog<br>
|
||||
<a href="./features.html">Features</a><br>
|
||||
<a href="./npcfeatures.html">NPC Features</a>
|
||||
|
||||
</td>
|
||||
<td class="navi" align="right">
|
||||
<a href="./setup.html">Setup</a><br>
|
||||
<a href="./gmcommands.html">GM Commands</a><br>
|
||||
<a href="./faq.html">FAQ</a><br>
|
||||
<a href="./resources.html">Resources</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="btmborder">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="2">
|
||||
<tr>
|
||||
<td id="leftbtmborder"">
|
||||
</td>
|
||||
<td id="midbtmborder"">
|
||||
<img src="./images/btmborder.gif" width="44" height="2">
|
||||
</td>
|
||||
<td id="rightbtmborder">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="content">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="100%">
|
||||
<tr>
|
||||
<td id="lefttext" valign="top">
|
||||
<h1>Changelog</h1>
|
||||
This is our current changelog. Please note this isn't our <i>complete</i> changelog.
|
||||
<br>
|
||||
|
||||
|
||||
</td>
|
||||
<td id="midtext">
|
||||
</td>
|
||||
<td id="righttext" valign="top">
|
||||
<iframe src="../Changelog-Trunk.txt" name="Changelog" title="eAthena SVN Changelog" marginwidth="10" marginheight="10" frameborder="0" height="500" width="100%"></iframe>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
© Content Copyright 2005 eAthena Development Team/Evera<br>
|
||||
© Design Copyright 2005 Evera
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td id="rightborder" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td id="rightborderspacer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<img src="./images/rightborder.gif">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<html><head><title>eAthena - Changelog</title><head>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="./readme.css">
|
||||
|
||||
<body>
|
||||
<div id="dleftbg">
|
||||
</div>
|
||||
<div id="drightbg">
|
||||
</div>
|
||||
<div id="canvas" align="center">
|
||||
<table cellspacing="0" cellpadding="0" border="0" id="ea" align="center">
|
||||
<tr>
|
||||
<td id="leftborder" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td id="leftborderspacer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<img src="./images/leftborder.gif">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td id="middle" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0" valign="top">
|
||||
<tr>
|
||||
<td id="logo" valign="top">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="100%">
|
||||
<tr>
|
||||
<td rowspan="4">
|
||||
<img src="./images/chara.gif" width="366" height="274">
|
||||
</td>
|
||||
<td rowspan="4" width="129">
|
||||
</td>
|
||||
<td colspan="2" width="305" height="51" align="right">
|
||||
<img src="./images/banner.gif" width="305" height="51">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="title" colspan="2" align="right">
|
||||
Changelog
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="81" colspan="2">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="navi" align="right">
|
||||
<a href="../readme.html">Introduction</a><br>
|
||||
Changelog<br>
|
||||
<a href="./features.html">Features</a><br>
|
||||
<a href="./npcfeatures.html">NPC Features</a>
|
||||
|
||||
</td>
|
||||
<td class="navi" align="right">
|
||||
<a href="./setup.html">Setup</a><br>
|
||||
<a href="./gmcommands.html">GM Commands</a><br>
|
||||
<a href="./faq.html">FAQ</a><br>
|
||||
<a href="./resources.html">Resources</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="btmborder">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="2">
|
||||
<tr>
|
||||
<td id="leftbtmborder"">
|
||||
</td>
|
||||
<td id="midbtmborder"">
|
||||
<img src="./images/btmborder.gif" width="44" height="2">
|
||||
</td>
|
||||
<td id="rightbtmborder">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="content">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="100%">
|
||||
<tr>
|
||||
<td id="lefttext" valign="top">
|
||||
<h1>Changelog</h1>
|
||||
This is our current changelog. Please note this isn't our <i>complete</i> changelog.
|
||||
<br>
|
||||
|
||||
|
||||
</td>
|
||||
<td id="midtext">
|
||||
</td>
|
||||
<td id="righttext" valign="top">
|
||||
<iframe src="../Changelog-Trunk.txt" name="Changelog" title="eAthena SVN Changelog" marginwidth="10" marginheight="10" frameborder="0" height="500" width="100%"></iframe>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
© Content Copyright 2005 eAthena Development Team/Evera<br>
|
||||
© Design Copyright 2005 Evera
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td id="rightborder" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td id="rightborderspacer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<img src="./images/rightborder.gif">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
302
readme/faq.html
302
readme/faq.html
@ -1,151 +1,151 @@
|
||||
<html><head><title>eAthena - FAQ</title><head>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="./readme.css">
|
||||
|
||||
<body>
|
||||
<div id="dleftbg">
|
||||
</div>
|
||||
<div id="drightbg">
|
||||
</div>
|
||||
<div id="canvas" align="center">
|
||||
<table cellspacing="0" cellpadding="0" border="0" id="ea" align="center">
|
||||
<tr>
|
||||
<td id="leftborder" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td id="leftborderspacer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<img src="./images/leftborder.gif">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td id="middle" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0" valign="top">
|
||||
<tr>
|
||||
<td id="logo" valign="top">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="100%">
|
||||
<tr>
|
||||
<td rowspan="4">
|
||||
<img src="./images/chara.gif" width="366" height="274">
|
||||
</td>
|
||||
<td rowspan="4" width="129">
|
||||
</td>
|
||||
<td colspan="2" width="305" height="51" align="right">
|
||||
<img src="./images/banner.gif" width="305" height="51">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="title" colspan="2" align="right">
|
||||
FAQ
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="81" colspan="2">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="navi" align="right">
|
||||
<a href="../readme.html">Introduction</a><br>
|
||||
<a href="./changelog.html">Changelog</a><br>
|
||||
Features<br>
|
||||
<a href="./npcfeatures.html">NPC Features</a>
|
||||
|
||||
</td>
|
||||
<td class="navi" align="right">
|
||||
<a href="./setup.html">Setup</a><br>
|
||||
<a href="./gmcommands.html">GM Commands</a><br>
|
||||
<a href="./faq.html">FAQ</a><br>
|
||||
<a href="./resources.html">Resources</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="btmborder">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="2">
|
||||
<tr>
|
||||
<td id="leftbtmborder"">
|
||||
</td>
|
||||
<td id="midbtmborder"">
|
||||
<img src="./images/btmborder.gif" width="44" height="2">
|
||||
</td>
|
||||
<td id="rightbtmborder">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="content">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="100%">
|
||||
<tr>
|
||||
<td id="lefttext" valign="top">
|
||||
<h1>FAQ</h1>
|
||||
<b>Q: I get the error message "This application has failed to start because cygwin1.dll was not found. Re-installing the application may fix this problem."</b><br>
|
||||
A: You're missing the cygwin dlls. Please get the latest dll at: http://www.cygwin.com/snapshot. If you're unsure, asking around in our IRC chatroom will get you around too, but always remember - use common sense and search before asking.<br><br>
|
||||
<b>Q: My map-server won't load! It appears to be loading things before it dissapeared suddenly! HELP!</b><br>
|
||||
A: Use command line to load map-server. It should tell you the error. If you're missing a map, update your kRO Sakray or comment the map from map_athena.conf. If you have an errornous NPC, fix it or comment it off. Anything other than that, feel free to ask around<br><br>
|
||||
<b>Q: My map-server failed to load 'adata.grf'! Where do I find this adata.grf? My map-server won't load without it!</b><br>
|
||||
A: The error that caused the map-server to not load is not the adata.grf. adata.grf is NOT a requirement for the map-server to load. The error is probably related to something else.<br><br>
|
||||
</td>
|
||||
<td id="midtext">
|
||||
</td>
|
||||
<td id="righttext" valign="top">
|
||||
<b>Q: All 3 of the servers are loaded, but I am still having problems accessing it! What do I do?</b><br>
|
||||
A: First, check the IPs in map_athena.conf and char_athena.conf. If those are correct, check the ports to make sure they match. If that's correct too, you probably cannot handle the server load. Lower the monster spawning rate using mob_count in battle_athena.conf and it should be fine.<br><br>
|
||||
<b>Q: How do I start Guild Wars/War of Emperium??? HELP!!!</b><br>
|
||||
A: Read the GM Command page for full list of commands that GMs can use, including the command for this.<br><br>
|
||||
<b>Q: My Ragnarok Online crashed while playing with eAthena! What do I do now?</b><br>
|
||||
A: Well, if your Ragnarok crashes, it's most probably not anything to do with eAthena. Something is wrong with your Ragnarok installation. Try reinstalling or updating.<br><br>
|
||||
<b>Q: Is eAthena compatible with mySQL? Can I use mySQL as the DB instead of using text files?</b><br>
|
||||
A: Yes, eAthena is compatible with mySQL. A tutorial on how to setup this is coming soon.<br><br>
|
||||
<b>Q: Is eAthena compatible with msSQL? Can I use msSQL as the DB instead of using text files?</b><br>
|
||||
A: No, eAthena is not compatible with msSQL. You cannot use msSQL with eAthena.<br><br>
|
||||
<b>Q: I found a bug! Where do I report it?</b><br>
|
||||
A: Drop the developers a line at the IRC chatroom. Or just post it in the bug report forum. We check them out too. :)<br><br>
|
||||
<b>Q: I know alot of C and I'm able to help improve eAthena and add new features. How can I join your development team?</b><br>
|
||||
A: Try talking to one of the current developers in the eAthena channel.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
© Content Copyright 2005 eAthena Development Team/Evera<br>
|
||||
© Design Copyright 2005 Evera
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td id="rightborder" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td id="rightborderspacer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<img src="./images/rightborder.gif">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<html><head><title>eAthena - FAQ</title><head>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="./readme.css">
|
||||
|
||||
<body>
|
||||
<div id="dleftbg">
|
||||
</div>
|
||||
<div id="drightbg">
|
||||
</div>
|
||||
<div id="canvas" align="center">
|
||||
<table cellspacing="0" cellpadding="0" border="0" id="ea" align="center">
|
||||
<tr>
|
||||
<td id="leftborder" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td id="leftborderspacer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<img src="./images/leftborder.gif">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td id="middle" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0" valign="top">
|
||||
<tr>
|
||||
<td id="logo" valign="top">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="100%">
|
||||
<tr>
|
||||
<td rowspan="4">
|
||||
<img src="./images/chara.gif" width="366" height="274">
|
||||
</td>
|
||||
<td rowspan="4" width="129">
|
||||
</td>
|
||||
<td colspan="2" width="305" height="51" align="right">
|
||||
<img src="./images/banner.gif" width="305" height="51">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="title" colspan="2" align="right">
|
||||
FAQ
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="81" colspan="2">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="navi" align="right">
|
||||
<a href="../readme.html">Introduction</a><br>
|
||||
<a href="./changelog.html">Changelog</a><br>
|
||||
Features<br>
|
||||
<a href="./npcfeatures.html">NPC Features</a>
|
||||
|
||||
</td>
|
||||
<td class="navi" align="right">
|
||||
<a href="./setup.html">Setup</a><br>
|
||||
<a href="./gmcommands.html">GM Commands</a><br>
|
||||
<a href="./faq.html">FAQ</a><br>
|
||||
<a href="./resources.html">Resources</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="btmborder">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="2">
|
||||
<tr>
|
||||
<td id="leftbtmborder"">
|
||||
</td>
|
||||
<td id="midbtmborder"">
|
||||
<img src="./images/btmborder.gif" width="44" height="2">
|
||||
</td>
|
||||
<td id="rightbtmborder">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="content">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="100%">
|
||||
<tr>
|
||||
<td id="lefttext" valign="top">
|
||||
<h1>FAQ</h1>
|
||||
<b>Q: I get the error message "This application has failed to start because cygwin1.dll was not found. Re-installing the application may fix this problem."</b><br>
|
||||
A: You're missing the cygwin dlls. Please get the latest dll at: http://www.cygwin.com/snapshot. If you're unsure, asking around in our IRC chatroom will get you around too, but always remember - use common sense and search before asking.<br><br>
|
||||
<b>Q: My map-server won't load! It appears to be loading things before it dissapeared suddenly! HELP!</b><br>
|
||||
A: Use command line to load map-server. It should tell you the error. If you're missing a map, update your kRO Sakray or comment the map from map_athena.conf. If you have an errornous NPC, fix it or comment it off. Anything other than that, feel free to ask around<br><br>
|
||||
<b>Q: My map-server failed to load 'adata.grf'! Where do I find this adata.grf? My map-server won't load without it!</b><br>
|
||||
A: The error that caused the map-server to not load is not the adata.grf. adata.grf is NOT a requirement for the map-server to load. The error is probably related to something else.<br><br>
|
||||
</td>
|
||||
<td id="midtext">
|
||||
</td>
|
||||
<td id="righttext" valign="top">
|
||||
<b>Q: All 3 of the servers are loaded, but I am still having problems accessing it! What do I do?</b><br>
|
||||
A: First, check the IPs in map_athena.conf and char_athena.conf. If those are correct, check the ports to make sure they match. If that's correct too, you probably cannot handle the server load. Lower the monster spawning rate using mob_count in battle_athena.conf and it should be fine.<br><br>
|
||||
<b>Q: How do I start Guild Wars/War of Emperium??? HELP!!!</b><br>
|
||||
A: Read the GM Command page for full list of commands that GMs can use, including the command for this.<br><br>
|
||||
<b>Q: My Ragnarok Online crashed while playing with eAthena! What do I do now?</b><br>
|
||||
A: Well, if your Ragnarok crashes, it's most probably not anything to do with eAthena. Something is wrong with your Ragnarok installation. Try reinstalling or updating.<br><br>
|
||||
<b>Q: Is eAthena compatible with mySQL? Can I use mySQL as the DB instead of using text files?</b><br>
|
||||
A: Yes, eAthena is compatible with mySQL. A tutorial on how to setup this is coming soon.<br><br>
|
||||
<b>Q: Is eAthena compatible with msSQL? Can I use msSQL as the DB instead of using text files?</b><br>
|
||||
A: No, eAthena is not compatible with msSQL. You cannot use msSQL with eAthena.<br><br>
|
||||
<b>Q: I found a bug! Where do I report it?</b><br>
|
||||
A: Drop the developers a line at the IRC chatroom. Or just post it in the bug report forum. We check them out too. :)<br><br>
|
||||
<b>Q: I know alot of C and I'm able to help improve eAthena and add new features. How can I join your development team?</b><br>
|
||||
A: Try talking to one of the current developers in the eAthena channel.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
© Content Copyright 2005 eAthena Development Team/Evera<br>
|
||||
© Design Copyright 2005 Evera
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td id="rightborder" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td id="rightborderspacer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<img src="./images/rightborder.gif">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
@ -1,160 +1,160 @@
|
||||
<html><head><title>eAthena - Features</title><head>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="./readme.css">
|
||||
|
||||
<body>
|
||||
<div id="dleftbg">
|
||||
</div>
|
||||
<div id="drightbg">
|
||||
</div>
|
||||
<div id="canvas" align="center">
|
||||
<table cellspacing="0" cellpadding="0" border="0" id="ea" align="center">
|
||||
<tr>
|
||||
<td id="leftborder" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td id="leftborderspacer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<img src="./images/leftborder.gif">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td id="middle" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0" valign="top">
|
||||
<tr>
|
||||
<td id="logo" valign="top">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="100%">
|
||||
<tr>
|
||||
<td rowspan="4">
|
||||
<img src="./images/chara.gif" width="366" height="274">
|
||||
</td>
|
||||
<td rowspan="4" width="129">
|
||||
</td>
|
||||
<td colspan="2" width="305" height="51" align="right">
|
||||
<img src="./images/banner.gif" width="305" height="51">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="title" colspan="2" align="right">
|
||||
Features
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="81" colspan="2">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="navi" align="right">
|
||||
<a href="../readme.html">Introduction</a><br>
|
||||
<a href="./changelog.html">Changelog</a><br>
|
||||
Features<br>
|
||||
<a href="./npcfeatures.html">NPC Features</a>
|
||||
|
||||
</td>
|
||||
<td class="navi" align="right">
|
||||
<a href="./setup.html">Setup</a><br>
|
||||
<a href="./gmcommands.html">GM Commands</a><br>
|
||||
<a href="./faq.html">FAQ</a><br>
|
||||
<a href="./resources.html">Resources</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="btmborder">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="2">
|
||||
<tr>
|
||||
<td id="leftbtmborder"">
|
||||
</td>
|
||||
<td id="midbtmborder"">
|
||||
<img src="./images/btmborder.gif" width="44" height="2">
|
||||
</td>
|
||||
<td id="rightbtmborder">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="content">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="100%">
|
||||
<tr>
|
||||
<td id="lefttext" valign="top">
|
||||
<h1>Features</h1>
|
||||
eAthena tries to keep up with kRO (Korean Ragnarok Online, an official server) in terms of features. Many of the features we have
|
||||
are re-coded versions of official onces. We also have many eAthena exclusive features, such as various NPC commands. We also
|
||||
have all of the RO server emu goodies, like open-source modification and custom sprites/items. We are currently on <i>feature-lock</i>,
|
||||
so we will focus mainly on stability for the time being, not new features.
|
||||
|
||||
|
||||
</td>
|
||||
<td id="midtext">
|
||||
</td>
|
||||
<td id="righttext" valign="top">
|
||||
<ul>
|
||||
<li>PVP (Player Vs. Player)</li>
|
||||
<li>Adoption System</li>
|
||||
<li>Dynamic monster spawning system</li>
|
||||
<li>GVG (Guild Vs. Guild)</li>
|
||||
<li>qPets (Cute Pets)</li>
|
||||
<li>Monster Skills</li>
|
||||
<li>2-2 Jobs (Alternate 2nd Jobs)</li>
|
||||
<li>Super Novice (Alternate 1st Job)</li>
|
||||
<li>WoE (War of Emperium)</li>
|
||||
<li>Remote administration of accounts (ladmin)</li>
|
||||
<li>Weddings</li>
|
||||
<li>Pet equipped mobs</li>
|
||||
<li>Management of day/night</li>
|
||||
<li>Mob Disguises</li>
|
||||
<li>Weather and other special effects</li>
|
||||
<li>"Rebirth/Transcendent" Classes</li>
|
||||
<li>Room for custom sprites/items</li>
|
||||
<li>Open source, allowing for your own personal modifications</li>
|
||||
<li>Two different storage systems, TXT and SQL</li>
|
||||
<li>Stability</li>
|
||||
<li>Many other various features</li>
|
||||
</ul>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
© Content Copyright 2005 eAthena Development Team/Evera<br>
|
||||
© Design Copyright 2005 Evera
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td id="rightborder" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td id="rightborderspacer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<img src="./images/rightborder.gif">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<html><head><title>eAthena - Features</title><head>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="./readme.css">
|
||||
|
||||
<body>
|
||||
<div id="dleftbg">
|
||||
</div>
|
||||
<div id="drightbg">
|
||||
</div>
|
||||
<div id="canvas" align="center">
|
||||
<table cellspacing="0" cellpadding="0" border="0" id="ea" align="center">
|
||||
<tr>
|
||||
<td id="leftborder" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td id="leftborderspacer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<img src="./images/leftborder.gif">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td id="middle" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0" valign="top">
|
||||
<tr>
|
||||
<td id="logo" valign="top">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="100%">
|
||||
<tr>
|
||||
<td rowspan="4">
|
||||
<img src="./images/chara.gif" width="366" height="274">
|
||||
</td>
|
||||
<td rowspan="4" width="129">
|
||||
</td>
|
||||
<td colspan="2" width="305" height="51" align="right">
|
||||
<img src="./images/banner.gif" width="305" height="51">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="title" colspan="2" align="right">
|
||||
Features
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="81" colspan="2">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="navi" align="right">
|
||||
<a href="../readme.html">Introduction</a><br>
|
||||
<a href="./changelog.html">Changelog</a><br>
|
||||
Features<br>
|
||||
<a href="./npcfeatures.html">NPC Features</a>
|
||||
|
||||
</td>
|
||||
<td class="navi" align="right">
|
||||
<a href="./setup.html">Setup</a><br>
|
||||
<a href="./gmcommands.html">GM Commands</a><br>
|
||||
<a href="./faq.html">FAQ</a><br>
|
||||
<a href="./resources.html">Resources</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="btmborder">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="2">
|
||||
<tr>
|
||||
<td id="leftbtmborder"">
|
||||
</td>
|
||||
<td id="midbtmborder"">
|
||||
<img src="./images/btmborder.gif" width="44" height="2">
|
||||
</td>
|
||||
<td id="rightbtmborder">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="content">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="100%">
|
||||
<tr>
|
||||
<td id="lefttext" valign="top">
|
||||
<h1>Features</h1>
|
||||
eAthena tries to keep up with kRO (Korean Ragnarok Online, an official server) in terms of features. Many of the features we have
|
||||
are re-coded versions of official onces. We also have many eAthena exclusive features, such as various NPC commands. We also
|
||||
have all of the RO server emu goodies, like open-source modification and custom sprites/items. We are currently on <i>feature-lock</i>,
|
||||
so we will focus mainly on stability for the time being, not new features.
|
||||
|
||||
|
||||
</td>
|
||||
<td id="midtext">
|
||||
</td>
|
||||
<td id="righttext" valign="top">
|
||||
<ul>
|
||||
<li>PVP (Player Vs. Player)</li>
|
||||
<li>Adoption System</li>
|
||||
<li>Dynamic monster spawning system</li>
|
||||
<li>GVG (Guild Vs. Guild)</li>
|
||||
<li>qPets (Cute Pets)</li>
|
||||
<li>Monster Skills</li>
|
||||
<li>2-2 Jobs (Alternate 2nd Jobs)</li>
|
||||
<li>Super Novice (Alternate 1st Job)</li>
|
||||
<li>WoE (War of Emperium)</li>
|
||||
<li>Remote administration of accounts (ladmin)</li>
|
||||
<li>Weddings</li>
|
||||
<li>Pet equipped mobs</li>
|
||||
<li>Management of day/night</li>
|
||||
<li>Mob Disguises</li>
|
||||
<li>Weather and other special effects</li>
|
||||
<li>"Rebirth/Transcendent" Classes</li>
|
||||
<li>Room for custom sprites/items</li>
|
||||
<li>Open source, allowing for your own personal modifications</li>
|
||||
<li>Two different storage systems, TXT and SQL</li>
|
||||
<li>Stability</li>
|
||||
<li>Many other various features</li>
|
||||
</ul>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
© Content Copyright 2005 eAthena Development Team/Evera<br>
|
||||
© Design Copyright 2005 Evera
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td id="rightborder" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td id="rightborderspacer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<img src="./images/rightborder.gif">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
@ -1,139 +1,139 @@
|
||||
<html><head><title>eAthena - GM Commands</title><head>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="./readme.css">
|
||||
|
||||
<body>
|
||||
<div id="dleftbg">
|
||||
</div>
|
||||
<div id="drightbg">
|
||||
</div>
|
||||
<div id="canvas" align="center">
|
||||
<table cellspacing="0" cellpadding="0" border="0" id="ea" align="center">
|
||||
<tr>
|
||||
<td id="leftborder" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td id="leftborderspacer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<img src="./images/leftborder.gif">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td id="middle" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0" valign="top">
|
||||
<tr>
|
||||
<td id="logo" valign="top">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="100%">
|
||||
<tr>
|
||||
<td rowspan="4">
|
||||
<img src="./images/chara.gif" width="366" height="274">
|
||||
</td>
|
||||
<td rowspan="4" width="129">
|
||||
</td>
|
||||
<td colspan="2" width="305" height="51" align="right">
|
||||
<img src="./images/banner.gif" width="305" height="51">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="title" colspan="2" align="right">
|
||||
GM Commands
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="81" colspan="2">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="navi" align="right">
|
||||
<a href="../readme.html">Introduction</a><br>
|
||||
<a href="./changelog.html">Changelog</a><br>
|
||||
<a href="./features.html">Features</a><br>
|
||||
<a href="./npcfeatures.html">NPC Features</a>
|
||||
|
||||
</td>
|
||||
<td class="navi" align="right">
|
||||
<a href="./setup.html">Setup</a><br>
|
||||
GM Commands<br>
|
||||
<a href="./faq.html">FAQ</a><br>
|
||||
<a href="./resources.html">Resources</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="btmborder">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="2">
|
||||
<tr>
|
||||
<td id="leftbtmborder"">
|
||||
</td>
|
||||
<td id="midbtmborder"">
|
||||
<img src="./images/btmborder.gif" width="44" height="2">
|
||||
</td>
|
||||
<td id="rightbtmborder">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="content">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="100%">
|
||||
<tr>
|
||||
<td id="lefttext" valign="top">
|
||||
<h1>GM Commands</h1>
|
||||
A GM, or Game Master, on eAthena has access to certain codes to administer the server. A GM is appointed by the server owner, and can not
|
||||
be gained normally through the game. These commands start with the @ symbol, a well-recognized sign of an Athena server. Many of our current
|
||||
commands are broken and don't work properly.
|
||||
</td>
|
||||
<td id="midtext">
|
||||
</td>
|
||||
<td id="righttext" valign="top">
|
||||
<iframe src="../conf-tmpl/help.txt" name="Help" title="eAthena Gm Commands" marginwidth="10" marginheight="10" frameborder="0" height="500" width="100%"></iframe>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
© Content Copyright 2005 eAthena Development Team/Evera<br>
|
||||
© Design Copyright 2005 Evera
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td id="rightborder" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td id="rightborderspacer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<img src="./images/rightborder.gif">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<html><head><title>eAthena - GM Commands</title><head>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="./readme.css">
|
||||
|
||||
<body>
|
||||
<div id="dleftbg">
|
||||
</div>
|
||||
<div id="drightbg">
|
||||
</div>
|
||||
<div id="canvas" align="center">
|
||||
<table cellspacing="0" cellpadding="0" border="0" id="ea" align="center">
|
||||
<tr>
|
||||
<td id="leftborder" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td id="leftborderspacer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<img src="./images/leftborder.gif">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td id="middle" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0" valign="top">
|
||||
<tr>
|
||||
<td id="logo" valign="top">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="100%">
|
||||
<tr>
|
||||
<td rowspan="4">
|
||||
<img src="./images/chara.gif" width="366" height="274">
|
||||
</td>
|
||||
<td rowspan="4" width="129">
|
||||
</td>
|
||||
<td colspan="2" width="305" height="51" align="right">
|
||||
<img src="./images/banner.gif" width="305" height="51">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="title" colspan="2" align="right">
|
||||
GM Commands
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="81" colspan="2">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="navi" align="right">
|
||||
<a href="../readme.html">Introduction</a><br>
|
||||
<a href="./changelog.html">Changelog</a><br>
|
||||
<a href="./features.html">Features</a><br>
|
||||
<a href="./npcfeatures.html">NPC Features</a>
|
||||
|
||||
</td>
|
||||
<td class="navi" align="right">
|
||||
<a href="./setup.html">Setup</a><br>
|
||||
GM Commands<br>
|
||||
<a href="./faq.html">FAQ</a><br>
|
||||
<a href="./resources.html">Resources</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="btmborder">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="2">
|
||||
<tr>
|
||||
<td id="leftbtmborder"">
|
||||
</td>
|
||||
<td id="midbtmborder"">
|
||||
<img src="./images/btmborder.gif" width="44" height="2">
|
||||
</td>
|
||||
<td id="rightbtmborder">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="content">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="100%">
|
||||
<tr>
|
||||
<td id="lefttext" valign="top">
|
||||
<h1>GM Commands</h1>
|
||||
A GM, or Game Master, on eAthena has access to certain codes to administer the server. A GM is appointed by the server owner, and can not
|
||||
be gained normally through the game. These commands start with the @ symbol, a well-recognized sign of an Athena server. Many of our current
|
||||
commands are broken and don't work properly.
|
||||
</td>
|
||||
<td id="midtext">
|
||||
</td>
|
||||
<td id="righttext" valign="top">
|
||||
<iframe src="../conf-tmpl/help.txt" name="Help" title="eAthena Gm Commands" marginwidth="10" marginheight="10" frameborder="0" height="500" width="100%"></iframe>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
© Content Copyright 2005 eAthena Development Team/Evera<br>
|
||||
© Design Copyright 2005 Evera
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td id="rightborder" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td id="rightborderspacer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<img src="./images/rightborder.gif">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
@ -1,262 +1,262 @@
|
||||
<html><head><title>eAthena - NPC Features</title><head>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="./readme.css">
|
||||
|
||||
<body>
|
||||
<div id="dleftbg">
|
||||
</div>
|
||||
<div id="drightbg">
|
||||
</div>
|
||||
<div id="canvas" align="center">
|
||||
<table cellspacing="0" cellpadding="0" border="0" id="ea" align="center">
|
||||
<tr>
|
||||
<td id="leftborder" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td id="leftborderspacer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<img src="./images/leftborder.gif">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td id="middle" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0" valign="top">
|
||||
<tr>
|
||||
<td id="logo" valign="top">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="100%">
|
||||
<tr>
|
||||
<td rowspan="4">
|
||||
<img src="./images/chara.gif" width="366" height="274">
|
||||
</td>
|
||||
<td rowspan="4" width="129">
|
||||
</td>
|
||||
<td colspan="2" width="305" height="51" align="right">
|
||||
<img src="./images/banner.gif" width="305" height="51">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="title" colspan="2" align="right">
|
||||
NPC Features
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="81" colspan="2">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="navi" align="right">
|
||||
<a href="../readme.html">Introduction</a><br>
|
||||
<a href="./changelog.html">Changelog</a><br>
|
||||
<a href="./features.html">Features</a><br>
|
||||
NPC Features
|
||||
|
||||
</td>
|
||||
<td class="navi" align="right">
|
||||
<a href="./setup.html">Setup</a><br>
|
||||
<a href="./gmcommands.html">GM Commands</a><br>
|
||||
<a href="./faq.html">FAQ</a><br>
|
||||
<a href="./resources.html">Resources</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="btmborder">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="2">
|
||||
<tr>
|
||||
<td id="leftbtmborder"">
|
||||
</td>
|
||||
<td id="midbtmborder"">
|
||||
<img src="./images/btmborder.gif" width="44" height="2">
|
||||
</td>
|
||||
<td id="rightbtmborder">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="content">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="100%">
|
||||
<tr>
|
||||
<td id="lefttext" valign="top">
|
||||
<h1>NPC Features</h1>
|
||||
One of the best aspects of eAthena is the NPC system. As a base, we have most of the official kRO NPC scripts, and if they are in
|
||||
iRO, we have their correct translations. You can put any of your custom NPCs on top of these, using our extremely easy-to-learn
|
||||
scripting language. We also have a wide variety of custom NPCs available in /npc/custom/ and for download in the forums to
|
||||
maximize your players' experiences.
|
||||
|
||||
|
||||
</td>
|
||||
<td id="midtext">
|
||||
</td>
|
||||
<td id="righttext" valign="top">
|
||||
<ul>
|
||||
<li><strong>Town Npcs</strong> (11/17)</li>
|
||||
<ul><li> Alberta - 100%</li></ul>
|
||||
<ul><li> Al de Baran - 100%</li></ul>
|
||||
<ul><li> Amatsu - 100%</li></ul>
|
||||
<ul><li> Ayothaya - 75%</li></ul>
|
||||
<ul><li> Comodo - 100%</li></ul>
|
||||
<ul><li> Einbech - 90%</li></ul>
|
||||
<ul><li> Einbroch - 75%</li></ul>
|
||||
<ul><li> Geffen - 100%</li></ul>
|
||||
<ul><li> Gonryun - 60%</li></ul>
|
||||
<ul><li> Izlude - 100%</li></ul>
|
||||
<ul><li> Louyang - 75%</li></ul>
|
||||
<ul><li> Lutie - 100%</li></ul>
|
||||
<ul><li> Morocc - 100%</li></ul>
|
||||
<ul><li> Niflheim - 100%</li></ul>
|
||||
<ul><li> Payon(New Maps) - 99%</li></ul>
|
||||
<ul><li> Prontera - 100%</li></ul>
|
||||
<ul><li> Umbala - 100%</li></ul>
|
||||
|
||||
<li><strong>Job Quests</strong> (16/33)</li>
|
||||
<ul><li> Novice Class (2/2)</li></ul>
|
||||
<ul><ul><li> Novice - 100%</li></ul></ul>
|
||||
<ul><ul><li> Super Novice - 100%</li></ul></ul>
|
||||
<ul><li> 1-1 Class (6/6)</li></ul>
|
||||
<ul><ul><li> Swordman - 100%</li></ul></ul>
|
||||
<ul><ul><li> Mage - 100%</li></ul></ul>
|
||||
|
||||
|
||||
<ul><ul><li> Archer - 100%</li></ul></ul>
|
||||
|
||||
<ul><ul><li> Acolyte - 100%</li></ul></ul>
|
||||
<ul><ul><li> Merchant - 100%</li></ul></ul>
|
||||
<ul><ul><li> Thief - 100%</li></ul></ul>
|
||||
<ul><li> 2-1 Class (6/6)</li></ul>
|
||||
<ul><ul><li> Knight - 100%</li></ul></ul>
|
||||
|
||||
<ul><ul><li> Priest - 100%</li></ul></ul>
|
||||
<ul><ul><li> Wizard - 100%</li></ul></ul>
|
||||
|
||||
<ul><ul><li> Blacksmith - 100%</li></ul></ul>
|
||||
<ul><ul><li> Hunter - 100%</li></ul></ul>
|
||||
|
||||
<ul><ul><li> Assassin - 100%</li></ul></ul>
|
||||
|
||||
<ul><li> 2-2 Class (2/7)</li></ul>
|
||||
<ul><ul><li> Crusader - 0%</li></ul></ul>
|
||||
<ul><ul><li> Monk - 0% (Soon)</li></ul></ul>
|
||||
<ul><ul><li> Sage - 0% (Soon)</li></ul></ul>
|
||||
<ul><ul><li> Rogue - 100%</li></ul></ul>
|
||||
|
||||
<ul><ul><li> Alchemist - 100%</li></ul></ul>
|
||||
|
||||
<ul><ul><li> Bard - 0%</li></ul></ul>
|
||||
<ul><ul><li> Dancer - 100%</li></ul></ul>
|
||||
|
||||
<ul><li> 2-1-1 Class (0/6)</li></ul>
|
||||
<ul><li> 2-2-1 Class (0/6)</li></ul>
|
||||
<li><strong>Kafras</strong> - 100%</li>
|
||||
|
||||
<li><strong>Guides</strong> - 100%</li>
|
||||
|
||||
<li> <strong>War Of Emperium</strong> (4/5)</li>
|
||||
<ul><li> Prontera - 100%</li></ul>
|
||||
<ul><li> Geffen - 100%</li></ul>
|
||||
|
||||
<ul><li> Payon - 100%</li></ul>
|
||||
<ul><li> Al De Baran - 100%</li></ul>
|
||||
|
||||
<ul><li> Novice - 0%</li></ul>
|
||||
<li><strong>Quests</strong> (24/25)</li>
|
||||
|
||||
<ul><li> Skill Quests (7/7)</li></ul>
|
||||
|
||||
<ul><ul><li> Novice - 100%</li></ul></ul>
|
||||
<ul><ul><li> Swordman - 100%</li></ul></ul>
|
||||
<ul><ul><li> Mage - 100%</li></ul></ul>
|
||||
<ul><ul><li> Archer - 100%</li></ul></ul>
|
||||
<ul><ul><li> Acolyte - 100%</li></ul></ul>
|
||||
<ul><ul><li> Merchant - 100%</li></ul></ul>
|
||||
|
||||
<ul><ul><li> Thief - 100%</li></ul></ul>
|
||||
|
||||
<ul><li>Town Quests (9/10)</li></ul>
|
||||
<ul><ul><li> Prontera - 100%</li></ul></ul>
|
||||
<ul><ul><li> Morocc - 100%</li></ul></ul>
|
||||
<ul><ul><li> Geffen - 100%</li></ul></ul>
|
||||
|
||||
<ul><ul><li> Izlude - 100%</li></ul></ul>
|
||||
<ul><ul><li> Alberta - 100%</li></ul></ul>
|
||||
<ul><ul><li> Al De Baran - 100%</li></ul></ul>
|
||||
<ul><ul><li> Yuno - 100%</li></ul></ul>
|
||||
|
||||
<ul><ul><li> Lutie - 100%</li></ul></ul>
|
||||
<ul><ul><li> Comodo - 100%</li></ul></ul>
|
||||
|
||||
<ul><ul><li> Payon - 20%</li></ul></ul>
|
||||
<ul><li>Other Quests (9/9)</li></ul>
|
||||
<ul><ul><li> Dye - 100%</li></ul></ul>
|
||||
<ul><ul><li> MrSmile - 100%</li></ul></ul>
|
||||
<ul><ul><li> Juice Making - 100%</li></ul></ul>
|
||||
<ul><ul><li> Doomed Swords - 100%</li></ul></ul>
|
||||
|
||||
<ul><ul><li> Bongun Taming - 100%</li></ul></ul>
|
||||
|
||||
<ul><ul><li> Munak Taming - 100%</li></ul></ul>
|
||||
<ul><ul><li> Tamking - 100%</li></ul></ul>
|
||||
<ul><ul><li> Bongun Sword - 100%</li></ul></ul>
|
||||
<ul><ul><li> The lvl 4 Weapon Quest - 100%</li></ul></ul>
|
||||
<ul><li>Other (7/10)</li></ul>
|
||||
<ul><ul><li> Card Remover - 100%</li></ul></ul>
|
||||
|
||||
<ul><ul><li> PvP (old) - 100%</li></ul></ul>
|
||||
<ul><ul><li> Time Arena - 100%</li></ul></ul>
|
||||
<ul><ul><li> Bank - 100%</li></ul></ul>
|
||||
|
||||
<ul><ul><li> Wedding - 80%</li></ul></ul>
|
||||
|
||||
<ul><ul><li> Valkyrie - 10%</li></ul></ul>
|
||||
|
||||
<ul><ul><li> Gefenia - 10%</li></ul></ul>
|
||||
<ul><ul><li> Heal Npc - 100%</li></ul></ul>
|
||||
<ul><ul><li> Warp Npc - 100%</li></ul></ul>
|
||||
<ul><ul><li> Jobchange - 100%</li></ul></ul>
|
||||
</ul>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
© Content Copyright 2005 eAthena Development Team/Evera<br>
|
||||
© Design Copyright 2005 Evera
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td id="rightborder" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td id="rightborderspacer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<img src="./images/rightborder.gif">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<html><head><title>eAthena - NPC Features</title><head>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="./readme.css">
|
||||
|
||||
<body>
|
||||
<div id="dleftbg">
|
||||
</div>
|
||||
<div id="drightbg">
|
||||
</div>
|
||||
<div id="canvas" align="center">
|
||||
<table cellspacing="0" cellpadding="0" border="0" id="ea" align="center">
|
||||
<tr>
|
||||
<td id="leftborder" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td id="leftborderspacer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<img src="./images/leftborder.gif">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td id="middle" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0" valign="top">
|
||||
<tr>
|
||||
<td id="logo" valign="top">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="100%">
|
||||
<tr>
|
||||
<td rowspan="4">
|
||||
<img src="./images/chara.gif" width="366" height="274">
|
||||
</td>
|
||||
<td rowspan="4" width="129">
|
||||
</td>
|
||||
<td colspan="2" width="305" height="51" align="right">
|
||||
<img src="./images/banner.gif" width="305" height="51">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="title" colspan="2" align="right">
|
||||
NPC Features
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="81" colspan="2">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="navi" align="right">
|
||||
<a href="../readme.html">Introduction</a><br>
|
||||
<a href="./changelog.html">Changelog</a><br>
|
||||
<a href="./features.html">Features</a><br>
|
||||
NPC Features
|
||||
|
||||
</td>
|
||||
<td class="navi" align="right">
|
||||
<a href="./setup.html">Setup</a><br>
|
||||
<a href="./gmcommands.html">GM Commands</a><br>
|
||||
<a href="./faq.html">FAQ</a><br>
|
||||
<a href="./resources.html">Resources</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="btmborder">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="2">
|
||||
<tr>
|
||||
<td id="leftbtmborder"">
|
||||
</td>
|
||||
<td id="midbtmborder"">
|
||||
<img src="./images/btmborder.gif" width="44" height="2">
|
||||
</td>
|
||||
<td id="rightbtmborder">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="content">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="100%">
|
||||
<tr>
|
||||
<td id="lefttext" valign="top">
|
||||
<h1>NPC Features</h1>
|
||||
One of the best aspects of eAthena is the NPC system. As a base, we have most of the official kRO NPC scripts, and if they are in
|
||||
iRO, we have their correct translations. You can put any of your custom NPCs on top of these, using our extremely easy-to-learn
|
||||
scripting language. We also have a wide variety of custom NPCs available in /npc/custom/ and for download in the forums to
|
||||
maximize your players' experiences.
|
||||
|
||||
|
||||
</td>
|
||||
<td id="midtext">
|
||||
</td>
|
||||
<td id="righttext" valign="top">
|
||||
<ul>
|
||||
<li><strong>Town Npcs</strong> (11/17)</li>
|
||||
<ul><li> Alberta - 100%</li></ul>
|
||||
<ul><li> Al de Baran - 100%</li></ul>
|
||||
<ul><li> Amatsu - 100%</li></ul>
|
||||
<ul><li> Ayothaya - 75%</li></ul>
|
||||
<ul><li> Comodo - 100%</li></ul>
|
||||
<ul><li> Einbech - 90%</li></ul>
|
||||
<ul><li> Einbroch - 75%</li></ul>
|
||||
<ul><li> Geffen - 100%</li></ul>
|
||||
<ul><li> Gonryun - 60%</li></ul>
|
||||
<ul><li> Izlude - 100%</li></ul>
|
||||
<ul><li> Louyang - 75%</li></ul>
|
||||
<ul><li> Lutie - 100%</li></ul>
|
||||
<ul><li> Morocc - 100%</li></ul>
|
||||
<ul><li> Niflheim - 100%</li></ul>
|
||||
<ul><li> Payon(New Maps) - 99%</li></ul>
|
||||
<ul><li> Prontera - 100%</li></ul>
|
||||
<ul><li> Umbala - 100%</li></ul>
|
||||
|
||||
<li><strong>Job Quests</strong> (16/33)</li>
|
||||
<ul><li> Novice Class (2/2)</li></ul>
|
||||
<ul><ul><li> Novice - 100%</li></ul></ul>
|
||||
<ul><ul><li> Super Novice - 100%</li></ul></ul>
|
||||
<ul><li> 1-1 Class (6/6)</li></ul>
|
||||
<ul><ul><li> Swordman - 100%</li></ul></ul>
|
||||
<ul><ul><li> Mage - 100%</li></ul></ul>
|
||||
|
||||
|
||||
<ul><ul><li> Archer - 100%</li></ul></ul>
|
||||
|
||||
<ul><ul><li> Acolyte - 100%</li></ul></ul>
|
||||
<ul><ul><li> Merchant - 100%</li></ul></ul>
|
||||
<ul><ul><li> Thief - 100%</li></ul></ul>
|
||||
<ul><li> 2-1 Class (6/6)</li></ul>
|
||||
<ul><ul><li> Knight - 100%</li></ul></ul>
|
||||
|
||||
<ul><ul><li> Priest - 100%</li></ul></ul>
|
||||
<ul><ul><li> Wizard - 100%</li></ul></ul>
|
||||
|
||||
<ul><ul><li> Blacksmith - 100%</li></ul></ul>
|
||||
<ul><ul><li> Hunter - 100%</li></ul></ul>
|
||||
|
||||
<ul><ul><li> Assassin - 100%</li></ul></ul>
|
||||
|
||||
<ul><li> 2-2 Class (2/7)</li></ul>
|
||||
<ul><ul><li> Crusader - 0%</li></ul></ul>
|
||||
<ul><ul><li> Monk - 0% (Soon)</li></ul></ul>
|
||||
<ul><ul><li> Sage - 0% (Soon)</li></ul></ul>
|
||||
<ul><ul><li> Rogue - 100%</li></ul></ul>
|
||||
|
||||
<ul><ul><li> Alchemist - 100%</li></ul></ul>
|
||||
|
||||
<ul><ul><li> Bard - 0%</li></ul></ul>
|
||||
<ul><ul><li> Dancer - 100%</li></ul></ul>
|
||||
|
||||
<ul><li> 2-1-1 Class (0/6)</li></ul>
|
||||
<ul><li> 2-2-1 Class (0/6)</li></ul>
|
||||
<li><strong>Kafras</strong> - 100%</li>
|
||||
|
||||
<li><strong>Guides</strong> - 100%</li>
|
||||
|
||||
<li> <strong>War Of Emperium</strong> (4/5)</li>
|
||||
<ul><li> Prontera - 100%</li></ul>
|
||||
<ul><li> Geffen - 100%</li></ul>
|
||||
|
||||
<ul><li> Payon - 100%</li></ul>
|
||||
<ul><li> Al De Baran - 100%</li></ul>
|
||||
|
||||
<ul><li> Novice - 0%</li></ul>
|
||||
<li><strong>Quests</strong> (24/25)</li>
|
||||
|
||||
<ul><li> Skill Quests (7/7)</li></ul>
|
||||
|
||||
<ul><ul><li> Novice - 100%</li></ul></ul>
|
||||
<ul><ul><li> Swordman - 100%</li></ul></ul>
|
||||
<ul><ul><li> Mage - 100%</li></ul></ul>
|
||||
<ul><ul><li> Archer - 100%</li></ul></ul>
|
||||
<ul><ul><li> Acolyte - 100%</li></ul></ul>
|
||||
<ul><ul><li> Merchant - 100%</li></ul></ul>
|
||||
|
||||
<ul><ul><li> Thief - 100%</li></ul></ul>
|
||||
|
||||
<ul><li>Town Quests (9/10)</li></ul>
|
||||
<ul><ul><li> Prontera - 100%</li></ul></ul>
|
||||
<ul><ul><li> Morocc - 100%</li></ul></ul>
|
||||
<ul><ul><li> Geffen - 100%</li></ul></ul>
|
||||
|
||||
<ul><ul><li> Izlude - 100%</li></ul></ul>
|
||||
<ul><ul><li> Alberta - 100%</li></ul></ul>
|
||||
<ul><ul><li> Al De Baran - 100%</li></ul></ul>
|
||||
<ul><ul><li> Yuno - 100%</li></ul></ul>
|
||||
|
||||
<ul><ul><li> Lutie - 100%</li></ul></ul>
|
||||
<ul><ul><li> Comodo - 100%</li></ul></ul>
|
||||
|
||||
<ul><ul><li> Payon - 20%</li></ul></ul>
|
||||
<ul><li>Other Quests (9/9)</li></ul>
|
||||
<ul><ul><li> Dye - 100%</li></ul></ul>
|
||||
<ul><ul><li> MrSmile - 100%</li></ul></ul>
|
||||
<ul><ul><li> Juice Making - 100%</li></ul></ul>
|
||||
<ul><ul><li> Doomed Swords - 100%</li></ul></ul>
|
||||
|
||||
<ul><ul><li> Bongun Taming - 100%</li></ul></ul>
|
||||
|
||||
<ul><ul><li> Munak Taming - 100%</li></ul></ul>
|
||||
<ul><ul><li> Tamking - 100%</li></ul></ul>
|
||||
<ul><ul><li> Bongun Sword - 100%</li></ul></ul>
|
||||
<ul><ul><li> The lvl 4 Weapon Quest - 100%</li></ul></ul>
|
||||
<ul><li>Other (7/10)</li></ul>
|
||||
<ul><ul><li> Card Remover - 100%</li></ul></ul>
|
||||
|
||||
<ul><ul><li> PvP (old) - 100%</li></ul></ul>
|
||||
<ul><ul><li> Time Arena - 100%</li></ul></ul>
|
||||
<ul><ul><li> Bank - 100%</li></ul></ul>
|
||||
|
||||
<ul><ul><li> Wedding - 80%</li></ul></ul>
|
||||
|
||||
<ul><ul><li> Valkyrie - 10%</li></ul></ul>
|
||||
|
||||
<ul><ul><li> Gefenia - 10%</li></ul></ul>
|
||||
<ul><ul><li> Heal Npc - 100%</li></ul></ul>
|
||||
<ul><ul><li> Warp Npc - 100%</li></ul></ul>
|
||||
<ul><ul><li> Jobchange - 100%</li></ul></ul>
|
||||
</ul>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
© Content Copyright 2005 eAthena Development Team/Evera<br>
|
||||
© Design Copyright 2005 Evera
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td id="rightborder" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td id="rightborderspacer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<img src="./images/rightborder.gif">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
@ -1,227 +1,227 @@
|
||||
/* Go away, Troll */
|
||||
|
||||
A,
|
||||
A:link,
|
||||
A:visited,
|
||||
A:active,
|
||||
A:hover {
|
||||
|
||||
color: #000;
|
||||
|
||||
text-decoration: underline;
|
||||
|
||||
background-color : inherit;
|
||||
|
||||
}
|
||||
|
||||
|
||||
html {
|
||||
|
||||
margin: 0px;
|
||||
|
||||
padding: 0px;
|
||||
|
||||
}
|
||||
|
||||
body {
|
||||
|
||||
background: url(./images/bg.gif);
|
||||
|
||||
margin: 0px 0px 0px 0px;
|
||||
|
||||
padding: 0px 0px 0px 0px;
|
||||
|
||||
font: 14px Arial, arial;
|
||||
|
||||
color: #000;
|
||||
|
||||
}
|
||||
|
||||
h1 {
|
||||
|
||||
width : 100%;
|
||||
|
||||
height : 40px;
|
||||
|
||||
text-align : bottom;
|
||||
|
||||
font : 30px Arial Black, arial black, helvetica, sans-serif;
|
||||
|
||||
}
|
||||
|
||||
.w800 {
|
||||
|
||||
width: 800px;
|
||||
|
||||
}
|
||||
|
||||
#dleftbg,
|
||||
#drightbg {
|
||||
|
||||
position: absolute;
|
||||
|
||||
width: 50%;
|
||||
|
||||
overflow: hidden;
|
||||
|
||||
height: 69px;
|
||||
|
||||
z-index: 0;
|
||||
|
||||
}
|
||||
|
||||
#dleftbg {
|
||||
|
||||
top: 66px;
|
||||
|
||||
left: 0px;
|
||||
|
||||
background: url(./images/leftbg.gif);
|
||||
|
||||
}
|
||||
|
||||
#drightbg {
|
||||
|
||||
top: 105px;
|
||||
|
||||
right: 0px;
|
||||
|
||||
background: url(./images/rightbg.gif);
|
||||
|
||||
}
|
||||
|
||||
#canvas {
|
||||
|
||||
position: absolute;
|
||||
|
||||
z-index: 1;
|
||||
|
||||
width: 100%;
|
||||
|
||||
height: 100%;
|
||||
|
||||
}
|
||||
|
||||
#ea {
|
||||
|
||||
height: 100%;
|
||||
|
||||
}
|
||||
|
||||
|
||||
#leftborderspacer,
|
||||
#leftbgspacer {
|
||||
|
||||
height: 66px;
|
||||
|
||||
}
|
||||
|
||||
#rightborderspacer {
|
||||
|
||||
height: 106px;
|
||||
|
||||
}
|
||||
|
||||
|
||||
#leftborder,
|
||||
#rightborder {
|
||||
|
||||
background: #000;
|
||||
|
||||
width: 1px;
|
||||
|
||||
}
|
||||
|
||||
.vspacer {
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
#middle {
|
||||
|
||||
background: url(./images/textbg.gif);
|
||||
|
||||
width: 800px;
|
||||
|
||||
height: 100%;
|
||||
|
||||
}
|
||||
|
||||
#logo {
|
||||
|
||||
background: url(./images/logo.gif) no-repeat top left;
|
||||
|
||||
height: 100%;
|
||||
|
||||
}
|
||||
|
||||
#title {
|
||||
|
||||
font : 30px Arial Black, arial black, helvetica, sans-serif;
|
||||
|
||||
height: 54px;
|
||||
|
||||
}
|
||||
|
||||
.navi {
|
||||
|
||||
font : 14px Arial Black, arial black, helvetica, sans-serif;
|
||||
|
||||
height: 88px;
|
||||
|
||||
}
|
||||
|
||||
#btmborder {
|
||||
|
||||
background: url(./images/btmborderbg.gif);
|
||||
|
||||
height: 2px;
|
||||
|
||||
}
|
||||
|
||||
.left,
|
||||
#lefttext,
|
||||
#leftbtmborder {
|
||||
|
||||
width: 327px;
|
||||
|
||||
}
|
||||
|
||||
#midtext,
|
||||
#midbtmborder {
|
||||
|
||||
width: 44px;
|
||||
|
||||
}
|
||||
|
||||
.right,
|
||||
#righttext,
|
||||
#rightbtmborder {
|
||||
|
||||
width: 429px;
|
||||
|
||||
}
|
||||
|
||||
#content {
|
||||
|
||||
height: 100px;
|
||||
|
||||
}
|
||||
|
||||
#lefttext,
|
||||
#righttext {
|
||||
|
||||
background: url(./images/textbg.gif);
|
||||
|
||||
height: 100%;
|
||||
|
||||
}
|
||||
|
||||
#midtext {
|
||||
|
||||
background: url(./images/logobtm.gif);
|
||||
|
||||
height: 100%;
|
||||
|
||||
/* Go away, Troll */
|
||||
|
||||
A,
|
||||
A:link,
|
||||
A:visited,
|
||||
A:active,
|
||||
A:hover {
|
||||
|
||||
color: #000;
|
||||
|
||||
text-decoration: underline;
|
||||
|
||||
background-color : inherit;
|
||||
|
||||
}
|
||||
|
||||
|
||||
html {
|
||||
|
||||
margin: 0px;
|
||||
|
||||
padding: 0px;
|
||||
|
||||
}
|
||||
|
||||
body {
|
||||
|
||||
background: url(./images/bg.gif);
|
||||
|
||||
margin: 0px 0px 0px 0px;
|
||||
|
||||
padding: 0px 0px 0px 0px;
|
||||
|
||||
font: 14px Arial, arial;
|
||||
|
||||
color: #000;
|
||||
|
||||
}
|
||||
|
||||
h1 {
|
||||
|
||||
width : 100%;
|
||||
|
||||
height : 40px;
|
||||
|
||||
text-align : bottom;
|
||||
|
||||
font : 30px Arial Black, arial black, helvetica, sans-serif;
|
||||
|
||||
}
|
||||
|
||||
.w800 {
|
||||
|
||||
width: 800px;
|
||||
|
||||
}
|
||||
|
||||
#dleftbg,
|
||||
#drightbg {
|
||||
|
||||
position: absolute;
|
||||
|
||||
width: 50%;
|
||||
|
||||
overflow: hidden;
|
||||
|
||||
height: 69px;
|
||||
|
||||
z-index: 0;
|
||||
|
||||
}
|
||||
|
||||
#dleftbg {
|
||||
|
||||
top: 66px;
|
||||
|
||||
left: 0px;
|
||||
|
||||
background: url(./images/leftbg.gif);
|
||||
|
||||
}
|
||||
|
||||
#drightbg {
|
||||
|
||||
top: 105px;
|
||||
|
||||
right: 0px;
|
||||
|
||||
background: url(./images/rightbg.gif);
|
||||
|
||||
}
|
||||
|
||||
#canvas {
|
||||
|
||||
position: absolute;
|
||||
|
||||
z-index: 1;
|
||||
|
||||
width: 100%;
|
||||
|
||||
height: 100%;
|
||||
|
||||
}
|
||||
|
||||
#ea {
|
||||
|
||||
height: 100%;
|
||||
|
||||
}
|
||||
|
||||
|
||||
#leftborderspacer,
|
||||
#leftbgspacer {
|
||||
|
||||
height: 66px;
|
||||
|
||||
}
|
||||
|
||||
#rightborderspacer {
|
||||
|
||||
height: 106px;
|
||||
|
||||
}
|
||||
|
||||
|
||||
#leftborder,
|
||||
#rightborder {
|
||||
|
||||
background: #000;
|
||||
|
||||
width: 1px;
|
||||
|
||||
}
|
||||
|
||||
.vspacer {
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
#middle {
|
||||
|
||||
background: url(./images/textbg.gif);
|
||||
|
||||
width: 800px;
|
||||
|
||||
height: 100%;
|
||||
|
||||
}
|
||||
|
||||
#logo {
|
||||
|
||||
background: url(./images/logo.gif) no-repeat top left;
|
||||
|
||||
height: 100%;
|
||||
|
||||
}
|
||||
|
||||
#title {
|
||||
|
||||
font : 30px Arial Black, arial black, helvetica, sans-serif;
|
||||
|
||||
height: 54px;
|
||||
|
||||
}
|
||||
|
||||
.navi {
|
||||
|
||||
font : 14px Arial Black, arial black, helvetica, sans-serif;
|
||||
|
||||
height: 88px;
|
||||
|
||||
}
|
||||
|
||||
#btmborder {
|
||||
|
||||
background: url(./images/btmborderbg.gif);
|
||||
|
||||
height: 2px;
|
||||
|
||||
}
|
||||
|
||||
.left,
|
||||
#lefttext,
|
||||
#leftbtmborder {
|
||||
|
||||
width: 327px;
|
||||
|
||||
}
|
||||
|
||||
#midtext,
|
||||
#midbtmborder {
|
||||
|
||||
width: 44px;
|
||||
|
||||
}
|
||||
|
||||
.right,
|
||||
#righttext,
|
||||
#rightbtmborder {
|
||||
|
||||
width: 429px;
|
||||
|
||||
}
|
||||
|
||||
#content {
|
||||
|
||||
height: 100px;
|
||||
|
||||
}
|
||||
|
||||
#lefttext,
|
||||
#righttext {
|
||||
|
||||
background: url(./images/textbg.gif);
|
||||
|
||||
height: 100%;
|
||||
|
||||
}
|
||||
|
||||
#midtext {
|
||||
|
||||
background: url(./images/logobtm.gif);
|
||||
|
||||
height: 100%;
|
||||
|
||||
}
|
@ -1,150 +1,150 @@
|
||||
<html><head><title>eAthena - Resources</title><head>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="./readme.css">
|
||||
|
||||
<body>
|
||||
<div id="dleftbg">
|
||||
</div>
|
||||
<div id="drightbg">
|
||||
</div>
|
||||
<div id="canvas" align="center">
|
||||
<table cellspacing="0" cellpadding="0" border="0" id="ea" align="center">
|
||||
<tr>
|
||||
<td id="leftborder" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td id="leftborderspacer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<img src="./images/leftborder.gif">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td id="middle" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0" valign="top">
|
||||
<tr>
|
||||
<td id="logo" valign="top">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="100%">
|
||||
<tr>
|
||||
<td rowspan="4">
|
||||
<img src="./images/chara.gif" width="366" height="274">
|
||||
</td>
|
||||
<td rowspan="4" width="129">
|
||||
</td>
|
||||
<td colspan="2" width="305" height="51" align="right">
|
||||
<img src="./images/banner.gif" width="305" height="51">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="title" colspan="2" align="right">
|
||||
Resources
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="81" colspan="2">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="navi" align="right">
|
||||
<a href="../readme.html">Introduction</a><br>
|
||||
<a href="./changelog.html">Changelog</a><br>
|
||||
<a href="./features.html">Features</a><br>
|
||||
<a href="./npcfeatures.html">NPC Features</a>
|
||||
|
||||
</td>
|
||||
<td class="navi" align="right">
|
||||
<a href="./setup.html">Setup</a><br>
|
||||
<a href="./gmcommands.html">GM Commands</a><br>
|
||||
<a href="./faq.html">FAQ</a><br>
|
||||
Resources
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="btmborder">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="2">
|
||||
<tr>
|
||||
<td id="leftbtmborder"">
|
||||
</td>
|
||||
<td id="midbtmborder"">
|
||||
<img src="./images/btmborder.gif" width="44" height="2">
|
||||
</td>
|
||||
<td id="rightbtmborder">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="content">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="100%">
|
||||
<tr>
|
||||
<td id="lefttext" valign="top">
|
||||
<h1>Official Sources</h1>
|
||||
<b><a href="http://eathena.deltaanime.net">http://eathena.deltaanime.net</a></b>
|
||||
Our Official Webpage.<br>
|
||||
<b><a href="http://forum.asb-sakray.net">http://forum.asb-sakray.net</a></b>
|
||||
Aegis Support Board.<br>
|
||||
Please take note, you are adviced to search in the forums
|
||||
first before requesting for help to be made toward you.<br>
|
||||
<br>
|
||||
<b>IRC Channel:</b><br>
|
||||
|
||||
<b><a href="irc://irc.deltaanime.net">irc.deltaanime.net</a></b>
|
||||
#athena (Please make sure to check both forums before coming into
|
||||
the channel to ask questions, or else we will not only ignore you,
|
||||
but laugh at you too.)
|
||||
</td>
|
||||
<td id="midtext">
|
||||
</td>
|
||||
<td id="righttext" valign="top">
|
||||
<h1>Other Sources</h1>
|
||||
<b><a href="http://kalen.s79.xrea.com/npc/">http://kalen.s79.xrea.com/npc/</a></b>
|
||||
NPC Factory (Lists NPC/number)<br>
|
||||
<br>
|
||||
If you want your site to be featured here, please tell a dev ^_^.
|
||||
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
© Content Copyright 2005 eAthena Development Team/Evera<br>
|
||||
© Design Copyright 2005 Evera
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td id="rightborder" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td id="rightborderspacer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<img src="./images/rightborder.gif">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<html><head><title>eAthena - Resources</title><head>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="./readme.css">
|
||||
|
||||
<body>
|
||||
<div id="dleftbg">
|
||||
</div>
|
||||
<div id="drightbg">
|
||||
</div>
|
||||
<div id="canvas" align="center">
|
||||
<table cellspacing="0" cellpadding="0" border="0" id="ea" align="center">
|
||||
<tr>
|
||||
<td id="leftborder" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td id="leftborderspacer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<img src="./images/leftborder.gif">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td id="middle" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0" valign="top">
|
||||
<tr>
|
||||
<td id="logo" valign="top">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="100%">
|
||||
<tr>
|
||||
<td rowspan="4">
|
||||
<img src="./images/chara.gif" width="366" height="274">
|
||||
</td>
|
||||
<td rowspan="4" width="129">
|
||||
</td>
|
||||
<td colspan="2" width="305" height="51" align="right">
|
||||
<img src="./images/banner.gif" width="305" height="51">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="title" colspan="2" align="right">
|
||||
Resources
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="81" colspan="2">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="navi" align="right">
|
||||
<a href="../readme.html">Introduction</a><br>
|
||||
<a href="./changelog.html">Changelog</a><br>
|
||||
<a href="./features.html">Features</a><br>
|
||||
<a href="./npcfeatures.html">NPC Features</a>
|
||||
|
||||
</td>
|
||||
<td class="navi" align="right">
|
||||
<a href="./setup.html">Setup</a><br>
|
||||
<a href="./gmcommands.html">GM Commands</a><br>
|
||||
<a href="./faq.html">FAQ</a><br>
|
||||
Resources
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="btmborder">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="2">
|
||||
<tr>
|
||||
<td id="leftbtmborder"">
|
||||
</td>
|
||||
<td id="midbtmborder"">
|
||||
<img src="./images/btmborder.gif" width="44" height="2">
|
||||
</td>
|
||||
<td id="rightbtmborder">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="content">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="100%">
|
||||
<tr>
|
||||
<td id="lefttext" valign="top">
|
||||
<h1>Official Sources</h1>
|
||||
<b><a href="http://eathena.deltaanime.net">http://eathena.deltaanime.net</a></b>
|
||||
Our Official Webpage.<br>
|
||||
<b><a href="http://forum.asb-sakray.net">http://forum.asb-sakray.net</a></b>
|
||||
Aegis Support Board.<br>
|
||||
Please take note, you are adviced to search in the forums
|
||||
first before requesting for help to be made toward you.<br>
|
||||
<br>
|
||||
<b>IRC Channel:</b><br>
|
||||
|
||||
<b><a href="irc://irc.deltaanime.net">irc.deltaanime.net</a></b>
|
||||
#athena (Please make sure to check both forums before coming into
|
||||
the channel to ask questions, or else we will not only ignore you,
|
||||
but laugh at you too.)
|
||||
</td>
|
||||
<td id="midtext">
|
||||
</td>
|
||||
<td id="righttext" valign="top">
|
||||
<h1>Other Sources</h1>
|
||||
<b><a href="http://kalen.s79.xrea.com/npc/">http://kalen.s79.xrea.com/npc/</a></b>
|
||||
NPC Factory (Lists NPC/number)<br>
|
||||
<br>
|
||||
If you want your site to be featured here, please tell a dev ^_^.
|
||||
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
© Content Copyright 2005 eAthena Development Team/Evera<br>
|
||||
© Design Copyright 2005 Evera
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td id="rightborder" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td id="rightborderspacer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<img src="./images/rightborder.gif">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
@ -1,144 +1,144 @@
|
||||
<html><head><title>eAthena - Setup</title><head>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="./readme.css">
|
||||
|
||||
<body>
|
||||
<div id="dleftbg">
|
||||
</div>
|
||||
<div id="drightbg">
|
||||
</div>
|
||||
<div id="canvas" align="center">
|
||||
<table cellspacing="0" cellpadding="0" border="0" id="ea" align="center">
|
||||
<tr>
|
||||
<td id="leftborder" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td id="leftborderspacer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<img src="./images/leftborder.gif">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td id="middle" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0" valign="top">
|
||||
<tr>
|
||||
<td id="logo" valign="top">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="100%">
|
||||
<tr>
|
||||
<td rowspan="4">
|
||||
<img src="./images/chara.gif" width="366" height="274">
|
||||
</td>
|
||||
<td rowspan="4" width="129">
|
||||
</td>
|
||||
<td colspan="2" width="305" height="51" align="right">
|
||||
<img src="./images/banner.gif" width="305" height="51">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="title" colspan="2" align="right">
|
||||
Setup
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="81" colspan="2">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="navi" align="right">
|
||||
<a href="../readme.html">Introduction</a><br>
|
||||
<a href="./changelog.html">Changelog</a><br>
|
||||
<a href="./features.html">Features</a><br>
|
||||
<a href="./npcfeatures.html">NPC Features</a>
|
||||
|
||||
</td>
|
||||
<td class="navi" align="right">
|
||||
Setup<br>
|
||||
<a href="./gmcommands.html">GM Commands</a><br>
|
||||
<a href="./faq.html">FAQ</a><br>
|
||||
<a href="./resources.html">Resources</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="btmborder">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="2">
|
||||
<tr>
|
||||
<td id="leftbtmborder"">
|
||||
</td>
|
||||
<td id="midbtmborder"">
|
||||
<img src="./images/btmborder.gif" width="44" height="2">
|
||||
</td>
|
||||
<td id="rightbtmborder">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="content">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="100%">
|
||||
<tr>
|
||||
<td id="lefttext" valign="top">
|
||||
<h1>Fresh Install</h1>
|
||||
It's extremely easy to set up eAthena, just follow these simple steps.
|
||||
<ol>
|
||||
<li>Edit motd.txt, grf-files.txt and the .conf files in your /conf/ folder as you see fit</li>
|
||||
<li>If you want to add a user, run adduser.exe in the main eAthena directory before starting the server.</li>
|
||||
<li>Run runserver.bat or runserver-sql.bat (depending on which storage system you're using, or you could run login-server.exe, char-server.exe, and map-server.exe manually)</li>
|
||||
<li>Give people your IP address (can be found at <a href="http://www.whatismyip.com">http://www.whatismyip.com</a>) to people to add in their sclientinfo.xml</li>
|
||||
<li>You're done!</li>
|
||||
</td>
|
||||
<td id="midtext">
|
||||
</td>
|
||||
<td id="righttext" valign="top">
|
||||
<h1>Upgrading</h1>
|
||||
When you're changing versions of eAthena, it is important to keep your saved files in tact. Locate the files (/save/ in TXT, your SQL databse in SQL) and make a back up.
|
||||
You also might want to back up any changes you did to eAthena, such as custom sprites/items, open-source changes.
|
||||
After backing it up, change motd.txt, grf-files.txt, and the .conf files in the /conf/ folder to your old settings. It is
|
||||
important that you use a fresh eAthena, as it changes in structure and many files will have different formats over time.
|
||||
Put your backed up files back in, and run eAthena like you normally would.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
© Content Copyright 2005 eAthena Development Team/Evera<br>
|
||||
© Design Copyright 2005 Evera
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td id="rightborder" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td id="rightborderspacer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<img src="./images/rightborder.gif">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<html><head><title>eAthena - Setup</title><head>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="./readme.css">
|
||||
|
||||
<body>
|
||||
<div id="dleftbg">
|
||||
</div>
|
||||
<div id="drightbg">
|
||||
</div>
|
||||
<div id="canvas" align="center">
|
||||
<table cellspacing="0" cellpadding="0" border="0" id="ea" align="center">
|
||||
<tr>
|
||||
<td id="leftborder" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td id="leftborderspacer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<img src="./images/leftborder.gif">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td id="middle" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0" valign="top">
|
||||
<tr>
|
||||
<td id="logo" valign="top">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="100%">
|
||||
<tr>
|
||||
<td rowspan="4">
|
||||
<img src="./images/chara.gif" width="366" height="274">
|
||||
</td>
|
||||
<td rowspan="4" width="129">
|
||||
</td>
|
||||
<td colspan="2" width="305" height="51" align="right">
|
||||
<img src="./images/banner.gif" width="305" height="51">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="title" colspan="2" align="right">
|
||||
Setup
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="81" colspan="2">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="navi" align="right">
|
||||
<a href="../readme.html">Introduction</a><br>
|
||||
<a href="./changelog.html">Changelog</a><br>
|
||||
<a href="./features.html">Features</a><br>
|
||||
<a href="./npcfeatures.html">NPC Features</a>
|
||||
|
||||
</td>
|
||||
<td class="navi" align="right">
|
||||
Setup<br>
|
||||
<a href="./gmcommands.html">GM Commands</a><br>
|
||||
<a href="./faq.html">FAQ</a><br>
|
||||
<a href="./resources.html">Resources</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="btmborder">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="2">
|
||||
<tr>
|
||||
<td id="leftbtmborder"">
|
||||
</td>
|
||||
<td id="midbtmborder"">
|
||||
<img src="./images/btmborder.gif" width="44" height="2">
|
||||
</td>
|
||||
<td id="rightbtmborder">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="content">
|
||||
<table class="w800" cellspacing="0" cellpadding="0" border="0" height="100%">
|
||||
<tr>
|
||||
<td id="lefttext" valign="top">
|
||||
<h1>Fresh Install</h1>
|
||||
It's extremely easy to set up eAthena, just follow these simple steps.
|
||||
<ol>
|
||||
<li>Edit motd.txt, grf-files.txt and the .conf files in your /conf/ folder as you see fit</li>
|
||||
<li>If you want to add a user, run adduser.exe in the main eAthena directory before starting the server.</li>
|
||||
<li>Run runserver.bat or runserver-sql.bat (depending on which storage system you're using, or you could run login-server.exe, char-server.exe, and map-server.exe manually)</li>
|
||||
<li>Give people your IP address (can be found at <a href="http://www.whatismyip.com">http://www.whatismyip.com</a>) to people to add in their sclientinfo.xml</li>
|
||||
<li>You're done!</li>
|
||||
</td>
|
||||
<td id="midtext">
|
||||
</td>
|
||||
<td id="righttext" valign="top">
|
||||
<h1>Upgrading</h1>
|
||||
When you're changing versions of eAthena, it is important to keep your saved files in tact. Locate the files (/save/ in TXT, your SQL databse in SQL) and make a back up.
|
||||
You also might want to back up any changes you did to eAthena, such as custom sprites/items, open-source changes.
|
||||
After backing it up, change motd.txt, grf-files.txt, and the .conf files in the /conf/ folder to your old settings. It is
|
||||
important that you use a fresh eAthena, as it changes in structure and many files will have different formats over time.
|
||||
Put your backed up files back in, and run eAthena like you normally would.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
© Content Copyright 2005 eAthena Development Team/Evera<br>
|
||||
© Design Copyright 2005 Evera
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td id="rightborder" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td id="rightborderspacer">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<img src="./images/rightborder.gif">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
@ -1,3 +1,3 @@
|
||||
ALTER TABLE `quest_objective` ADD COLUMN `char_id` INTEGER UNSIGNED NOT NULL AFTER `num`,
|
||||
DROP PRIMARY KEY,
|
||||
ALTER TABLE `quest_objective` ADD COLUMN `char_id` INTEGER UNSIGNED NOT NULL AFTER `num`,
|
||||
DROP PRIMARY KEY,
|
||||
ADD PRIMARY KEY USING BTREE(`quest_id`, `num`, `char_id`);
|
@ -1,24 +1,24 @@
|
||||
START TRANSACTION;
|
||||
|
||||
-- delete columns
|
||||
ALTER TABLE `login` DROP `error_message`;
|
||||
ALTER TABLE `login` DROP `memo`;
|
||||
|
||||
-- rename columns
|
||||
ALTER TABLE `login` CHANGE `connect_until` `expiration_time` INT( 11 ) UNSIGNED NOT NULL DEFAULT '0';
|
||||
ALTER TABLE `login` CHANGE `ban_until` `unban_time` INT( 11 ) UNSIGNED NOT NULL DEFAULT '0';
|
||||
|
||||
-- reorder columns
|
||||
ALTER TABLE `login` MODIFY `sex` enum('M','F','S') NOT NULL default 'M' AFTER `user_pass`;
|
||||
ALTER TABLE `login` MODIFY `email` varchar(39) NOT NULL default '' AFTER `sex`;
|
||||
ALTER TABLE `login` MODIFY `level` tinyint(3) NOT NULL default '0' AFTER `email`;
|
||||
ALTER TABLE `login` MODIFY `state` int(11) unsigned NOT NULL default '0' AFTER `level`;
|
||||
ALTER TABLE `login` MODIFY `unban_time` int(11) unsigned NOT NULL default '0' AFTER `state`;
|
||||
ALTER TABLE `login` MODIFY `expiration_time` int(11) unsigned NOT NULL default '0' AFTER `unban_time`;
|
||||
ALTER TABLE `login` MODIFY `logincount` mediumint(9) unsigned NOT NULL default '0' AFTER `expiration_time`;
|
||||
|
||||
-- change ip format
|
||||
ALTER TABLE `loginlog` CHANGE `ip` `ip` VARCHAR( 15 ) NOT NULL default '';
|
||||
UPDATE `loginlog` SET `ip` = inet_ntoa(`ip`);
|
||||
|
||||
COMMIT;
|
||||
START TRANSACTION;
|
||||
|
||||
-- delete columns
|
||||
ALTER TABLE `login` DROP `error_message`;
|
||||
ALTER TABLE `login` DROP `memo`;
|
||||
|
||||
-- rename columns
|
||||
ALTER TABLE `login` CHANGE `connect_until` `expiration_time` INT( 11 ) UNSIGNED NOT NULL DEFAULT '0';
|
||||
ALTER TABLE `login` CHANGE `ban_until` `unban_time` INT( 11 ) UNSIGNED NOT NULL DEFAULT '0';
|
||||
|
||||
-- reorder columns
|
||||
ALTER TABLE `login` MODIFY `sex` enum('M','F','S') NOT NULL default 'M' AFTER `user_pass`;
|
||||
ALTER TABLE `login` MODIFY `email` varchar(39) NOT NULL default '' AFTER `sex`;
|
||||
ALTER TABLE `login` MODIFY `level` tinyint(3) NOT NULL default '0' AFTER `email`;
|
||||
ALTER TABLE `login` MODIFY `state` int(11) unsigned NOT NULL default '0' AFTER `level`;
|
||||
ALTER TABLE `login` MODIFY `unban_time` int(11) unsigned NOT NULL default '0' AFTER `state`;
|
||||
ALTER TABLE `login` MODIFY `expiration_time` int(11) unsigned NOT NULL default '0' AFTER `unban_time`;
|
||||
ALTER TABLE `login` MODIFY `logincount` mediumint(9) unsigned NOT NULL default '0' AFTER `expiration_time`;
|
||||
|
||||
-- change ip format
|
||||
ALTER TABLE `loginlog` CHANGE `ip` `ip` VARCHAR( 15 ) NOT NULL default '';
|
||||
UPDATE `loginlog` SET `ip` = inet_ntoa(`ip`);
|
||||
|
||||
COMMIT;
|
||||
|
@ -1,20 +1,20 @@
|
||||
-- NOTE: change `ragnarok` and `log` to whatever your database names are.
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
CREATE TABLE `log`.`loginlog` (
|
||||
`time` datetime NOT NULL default '0000-00-00 00:00:00',
|
||||
`ip` varchar( 15 ) NOT NULL ,
|
||||
`user` varchar( 23 ) NOT NULL default '',
|
||||
`rcode` tinyint( 4 ) NOT NULL default '0',
|
||||
`log` varchar( 255 ) NOT NULL default '',
|
||||
KEY `ip` ( `ip` )
|
||||
) ENGINE = MYISAM;
|
||||
|
||||
INSERT INTO `log`.`loginlog`
|
||||
SELECT *
|
||||
FROM `ragnarok`.`loginlog` ;
|
||||
|
||||
DROP TABLE `ragnarok`.`loginlog` ;
|
||||
|
||||
COMMIT;
|
||||
-- NOTE: change `ragnarok` and `log` to whatever your database names are.
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
CREATE TABLE `log`.`loginlog` (
|
||||
`time` datetime NOT NULL default '0000-00-00 00:00:00',
|
||||
`ip` varchar( 15 ) NOT NULL ,
|
||||
`user` varchar( 23 ) NOT NULL default '',
|
||||
`rcode` tinyint( 4 ) NOT NULL default '0',
|
||||
`log` varchar( 255 ) NOT NULL default '',
|
||||
KEY `ip` ( `ip` )
|
||||
) ENGINE = MYISAM;
|
||||
|
||||
INSERT INTO `log`.`loginlog`
|
||||
SELECT *
|
||||
FROM `ragnarok`.`loginlog` ;
|
||||
|
||||
DROP TABLE `ragnarok`.`loginlog` ;
|
||||
|
||||
COMMIT;
|
||||
|
@ -1,17 +1,17 @@
|
||||
-- The statements below will create a 'view' (virtual table) that mimics
|
||||
-- the previous `login` table layout. You can use this hack to make your db
|
||||
-- compatible with older eathena servers or control panels.
|
||||
-- Note: also adjust the account.sql.account_db setting in login_athena.conf.
|
||||
-- Note: if your CP does not have a config setting for the `login` table name
|
||||
-- you'll have to either modify its code or do some table renaming.
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
-- create dummy columns, needed to make the view insertable
|
||||
ALTER TABLE `login` ADD `error_message` SMALLINT UNSIGNED NOT NULL DEFAULT '0';
|
||||
ALTER TABLE `login` ADD `memo` SMALLINT UNSIGNED NOT NULL DEFAULT '0';
|
||||
|
||||
-- create the view
|
||||
CREATE VIEW `login_view` ( `account_id`, `userid`, `user_pass`, `lastlogin`, `sex`, `logincount`, `email`, `level`, `error_message`, `connect_until`, `last_ip`, `memo`, `ban_until`, `state` ) AS SELECT `account_id`, `userid`, `user_pass`, `lastlogin`, `sex`, `logincount`, `email`, `level`, `error_message`, `expiration_time`, `last_ip`, `memo`, `unban_time`, `state` FROM `login`;
|
||||
|
||||
COMMIT;
|
||||
-- The statements below will create a 'view' (virtual table) that mimics
|
||||
-- the previous `login` table layout. You can use this hack to make your db
|
||||
-- compatible with older eathena servers or control panels.
|
||||
-- Note: also adjust the account.sql.account_db setting in login_athena.conf.
|
||||
-- Note: if your CP does not have a config setting for the `login` table name
|
||||
-- you'll have to either modify its code or do some table renaming.
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
-- create dummy columns, needed to make the view insertable
|
||||
ALTER TABLE `login` ADD `error_message` SMALLINT UNSIGNED NOT NULL DEFAULT '0';
|
||||
ALTER TABLE `login` ADD `memo` SMALLINT UNSIGNED NOT NULL DEFAULT '0';
|
||||
|
||||
-- create the view
|
||||
CREATE VIEW `login_view` ( `account_id`, `userid`, `user_pass`, `lastlogin`, `sex`, `logincount`, `email`, `level`, `error_message`, `connect_until`, `last_ip`, `memo`, `ban_until`, `state` ) AS SELECT `account_id`, `userid`, `user_pass`, `lastlogin`, `sex`, `logincount`, `email`, `level`, `error_message`, `expiration_time`, `last_ip`, `memo`, `unban_time`, `state` FROM `login`;
|
||||
|
||||
COMMIT;
|
||||
|
@ -1,5 +1,5 @@
|
||||
START TRANSACTION;
|
||||
|
||||
ALTER TABLE `zenylog` MODIFY COLUMN `type` enum('M','T','V','S','N','A','E') NOT NULL default 'S';
|
||||
|
||||
COMMIT;
|
||||
START TRANSACTION;
|
||||
|
||||
ALTER TABLE `zenylog` MODIFY COLUMN `type` enum('M','T','V','S','N','A','E') NOT NULL default 'S';
|
||||
|
||||
COMMIT;
|
||||
|
@ -1,14 +1,14 @@
|
||||
--
|
||||
-- Table structure for table `mercenary`
|
||||
--
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `mercenary` (
|
||||
`mer_id` int(11) unsigned NOT NULL auto_increment,
|
||||
`char_id` int(11) NOT NULL,
|
||||
`class` mediumint(9) unsigned NOT NULL default '0',
|
||||
`hp` int(12) NOT NULL default '1',
|
||||
`sp` int(12) NOT NULL default '1',
|
||||
`kill_counter` int(11) NOT NULL,
|
||||
`life_time` int(11) NOT NULL default '0',
|
||||
PRIMARY KEY (`mer_id`)
|
||||
) ENGINE=MyISAM;
|
||||
--
|
||||
-- Table structure for table `mercenary`
|
||||
--
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `mercenary` (
|
||||
`mer_id` int(11) unsigned NOT NULL auto_increment,
|
||||
`char_id` int(11) NOT NULL,
|
||||
`class` mediumint(9) unsigned NOT NULL default '0',
|
||||
`hp` int(12) NOT NULL default '1',
|
||||
`sp` int(12) NOT NULL default '1',
|
||||
`kill_counter` int(11) NOT NULL,
|
||||
`life_time` int(11) NOT NULL default '0',
|
||||
PRIMARY KEY (`mer_id`)
|
||||
) ENGINE=MyISAM;
|
||||
|
@ -1,21 +1,21 @@
|
||||
-- Removes mer_id from Char DB
|
||||
|
||||
ALTER TABLE `char` DROP COLUMN `mer_id`;
|
||||
|
||||
-- Clean mercenary DB
|
||||
|
||||
TRUNCATE TABLE `mercenary`;
|
||||
|
||||
-- Table structure for table `mercenary_owner`
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `mercenary_owner` (
|
||||
`char_id` int(11) NOT NULL,
|
||||
`merc_id` int(11) NOT NULL default '0',
|
||||
`arch_calls` int(11) NOT NULL default '0',
|
||||
`arch_faith` int(11) NOT NULL default '0',
|
||||
`spear_calls` int(11) NOT NULL default '0',
|
||||
`spear_faith` int(11) NOT NULL default '0',
|
||||
`sword_calls` int(11) NOT NULL default '0',
|
||||
`sword_faith` int(11) NOT NULL default '0',
|
||||
PRIMARY KEY (`char_id`)
|
||||
) ENGINE=MyISAM;
|
||||
-- Removes mer_id from Char DB
|
||||
|
||||
ALTER TABLE `char` DROP COLUMN `mer_id`;
|
||||
|
||||
-- Clean mercenary DB
|
||||
|
||||
TRUNCATE TABLE `mercenary`;
|
||||
|
||||
-- Table structure for table `mercenary_owner`
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `mercenary_owner` (
|
||||
`char_id` int(11) NOT NULL,
|
||||
`merc_id` int(11) NOT NULL default '0',
|
||||
`arch_calls` int(11) NOT NULL default '0',
|
||||
`arch_faith` int(11) NOT NULL default '0',
|
||||
`spear_calls` int(11) NOT NULL default '0',
|
||||
`spear_faith` int(11) NOT NULL default '0',
|
||||
`sword_calls` int(11) NOT NULL default '0',
|
||||
`sword_faith` int(11) NOT NULL default '0',
|
||||
PRIMARY KEY (`char_id`)
|
||||
) ENGINE=MyISAM;
|
||||
|
@ -1,6 +1,6 @@
|
||||
-- Creates expire_time column on Inventory
|
||||
|
||||
ALTER TABLE `inventory` ADD COLUMN `expire_time` INT(11) UNSIGNED NOT NULL DEFAULT '0';
|
||||
ALTER TABLE `cart_inventory` ADD COLUMN `expire_time` INT(11) UNSIGNED NOT NULL DEFAULT '0';
|
||||
ALTER TABLE `storage` ADD COLUMN `expire_time` INT(11) UNSIGNED NOT NULL DEFAULT '0';
|
||||
ALTER TABLE `guild_storage` ADD COLUMN `expire_time` INT(11) UNSIGNED NOT NULL DEFAULT '0';
|
||||
-- Creates expire_time column on Inventory
|
||||
|
||||
ALTER TABLE `inventory` ADD COLUMN `expire_time` INT(11) UNSIGNED NOT NULL DEFAULT '0';
|
||||
ALTER TABLE `cart_inventory` ADD COLUMN `expire_time` INT(11) UNSIGNED NOT NULL DEFAULT '0';
|
||||
ALTER TABLE `storage` ADD COLUMN `expire_time` INT(11) UNSIGNED NOT NULL DEFAULT '0';
|
||||
ALTER TABLE `guild_storage` ADD COLUMN `expire_time` INT(11) UNSIGNED NOT NULL DEFAULT '0';
|
||||
|
@ -1 +1 @@
|
||||
DELETE FROM `global_reg_value` WHERE `str`='COOKING_ATTEMPT';
|
||||
DELETE FROM `global_reg_value` WHERE `str`='COOKING_ATTEMPT';
|
||||
|
@ -1,20 +1,20 @@
|
||||
--
|
||||
-- Table structure for table `questlog`
|
||||
--
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `questlog` (
|
||||
`char_id` int(11) unsigned NOT NULL default '0',
|
||||
`quest_id` int(10) unsigned NOT NULL,
|
||||
`state` enum('2','1','0') NOT NULL default '0',
|
||||
`time` int(11) unsigned NOT NULL default '0',
|
||||
`mob1` mediumint(9) unsigned NOT NULL default '0',
|
||||
`count1` mediumint(8) unsigned NOT NULL default '0',
|
||||
`mob2` mediumint(9) unsigned NOT NULL default '0',
|
||||
`count2` mediumint(8) unsigned NOT NULL default '0',
|
||||
`mob3` mediumint(9) unsigned NOT NULL default '0',
|
||||
`count3` mediumint(8) unsigned NOT NULL default '0',
|
||||
PRIMARY KEY USING BTREE (`char_id`,`quest_id`)
|
||||
) ENGINE=MyISAM;
|
||||
|
||||
DROP TABLE `quest_objective`;
|
||||
--
|
||||
-- Table structure for table `questlog`
|
||||
--
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `questlog` (
|
||||
`char_id` int(11) unsigned NOT NULL default '0',
|
||||
`quest_id` int(10) unsigned NOT NULL,
|
||||
`state` enum('2','1','0') NOT NULL default '0',
|
||||
`time` int(11) unsigned NOT NULL default '0',
|
||||
`mob1` mediumint(9) unsigned NOT NULL default '0',
|
||||
`count1` mediumint(8) unsigned NOT NULL default '0',
|
||||
`mob2` mediumint(9) unsigned NOT NULL default '0',
|
||||
`count2` mediumint(8) unsigned NOT NULL default '0',
|
||||
`mob3` mediumint(9) unsigned NOT NULL default '0',
|
||||
`count3` mediumint(8) unsigned NOT NULL default '0',
|
||||
PRIMARY KEY USING BTREE (`char_id`,`quest_id`)
|
||||
) ENGINE=MyISAM;
|
||||
|
||||
DROP TABLE `quest_objective`;
|
||||
DROP TABLE `quest`;
|
200
tools/backup → tools/backup.pl
Normal file → Executable file
200
tools/backup → tools/backup.pl
Normal file → Executable file
@ -1,100 +1,100 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
##########################################################################
|
||||
# Athena用データバックアップツール
|
||||
#
|
||||
# Athenaの各種データファイル*.txtをバックアップするツール
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
# 設定方法
|
||||
# 実行する時のカレントフォルダからのデータへのパス、ファイルのリストを
|
||||
# 正しく設定します。バックアップ先のフォルダは自動作成されないので、
|
||||
# 自分で作成しておく必要があります。
|
||||
# フォルダの最後の「/」は省略できません。
|
||||
#
|
||||
# フォルダは引数でも指定できます。例>./backup ../save/ ./backup_data/
|
||||
# フォルダの最後の「/」は省略できません。
|
||||
#
|
||||
# 実行するとバックアップ先のフォルダへ、ファイル名に現在の日付と時刻を
|
||||
# つけてファイルをコピーします。
|
||||
#
|
||||
# * toolフォルダ内にbackup_dataフォルダを作成し、
|
||||
# athena.shの中に「./tool/backup ./save/ ./tool/backup_data/」
|
||||
# という行を追加すると、athenaを起動するたびにバックアップが取れます
|
||||
#
|
||||
# 復元するときは引数に「-r 日付と時刻」を指定します。
|
||||
# またその後ろにフォルダを指定することも出来ます
|
||||
# 例1> ./backup -r 200309191607
|
||||
# 例2> ./backup -r 200309191607 ../save ./backup_data/
|
||||
# この例では2003/09/19の16:07分にバックアップしたデータを復元しています
|
||||
#
|
||||
# 復元するとき、Athenaディレクトリにあるデータは *.bak に名前を変更して
|
||||
# 残しているので、いらない場合は rm *.bak などで消してください。
|
||||
#
|
||||
##########################################################################
|
||||
|
||||
$sdir="../save/"; #バックアップ元(Athenaのディレクトリ/save/)
|
||||
$tdir="./backup_data/"; #バックアップ先
|
||||
|
||||
@files=( #ファイルのリスト
|
||||
"account","athena","storage","party","guild","castle","pet"
|
||||
);
|
||||
|
||||
|
||||
#-------------------------------設定ここまで-----------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if($ARGV[0]=~/^\-r$/i || $ARGV[0]=~/\-\-(recover|restore)/i){
|
||||
#復元処理
|
||||
|
||||
$file=$ARGV[1];
|
||||
$sdir=$ARGV[2]||$sdir;
|
||||
$tdir=$ARGV[3]||$tdir;
|
||||
&restorecopy($_) foreach @files;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
#バックアップ処理
|
||||
$sdir=$ARGV[0]||$sdir;
|
||||
$tdir=$ARGV[1]||$tdir;
|
||||
|
||||
unless( -d $tdir ){
|
||||
print "$0: \"$tdir\" : No such directory\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
(undef,$min,$hour,$day,$month,$year)=localtime;
|
||||
|
||||
$file=sprintf("%04d%02d%02d%02d%02d",
|
||||
$year+1900, $month+1, $day, $hour, $min );
|
||||
|
||||
&backupcopy($_) foreach @files;
|
||||
exit(0);
|
||||
|
||||
sub backupcopy {
|
||||
my($name)= @_;
|
||||
system("cp $sdir$name.txt $tdir$name$file.txt");
|
||||
}
|
||||
|
||||
sub restorecopy {
|
||||
my($name)= @_;
|
||||
unless( -f "$sdir$name.txt" ){
|
||||
printf("$0: \"$sdir$name.txt\" not found!\n");
|
||||
return 0;
|
||||
}
|
||||
unless( -f "$tdir$name$file.txt" ){
|
||||
printf("$0: \"$tdir$name$file.txt\" not found!\n");
|
||||
return 0;
|
||||
}
|
||||
rename "$sdir$name.txt","$sdir$name.bak";
|
||||
system("cp $tdir$name$file.txt $sdir$name.txt");
|
||||
}
|
||||
#!/usr/bin/perl
|
||||
|
||||
##########################################################################
|
||||
# Athena用データバックアップツール
|
||||
#
|
||||
# Athenaの各種データファイル*.txtをバックアップするツール
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
# 設定方法
|
||||
# 実行する時のカレントフォルダからのデータへのパス、ファイルのリストを
|
||||
# 正しく設定します。バックアップ先のフォルダは自動作成されないので、
|
||||
# 自分で作成しておく必要があります。
|
||||
# フォルダの最後の「/」は省略できません。
|
||||
#
|
||||
# フォルダは引数でも指定できます。例>./backup ../save/ ./backup_data/
|
||||
# フォルダの最後の「/」は省略できません。
|
||||
#
|
||||
# 実行するとバックアップ先のフォルダへ、ファイル名に現在の日付と時刻を
|
||||
# つけてファイルをコピーします。
|
||||
#
|
||||
# * toolフォルダ内にbackup_dataフォルダを作成し、
|
||||
# athena.shの中に「./tool/backup ./save/ ./tool/backup_data/」
|
||||
# という行を追加すると、athenaを起動するたびにバックアップが取れます
|
||||
#
|
||||
# 復元するときは引数に「-r 日付と時刻」を指定します。
|
||||
# またその後ろにフォルダを指定することも出来ます
|
||||
# 例1> ./backup -r 200309191607
|
||||
# 例2> ./backup -r 200309191607 ../save ./backup_data/
|
||||
# この例では2003/09/19の16:07分にバックアップしたデータを復元しています
|
||||
#
|
||||
# 復元するとき、Athenaディレクトリにあるデータは *.bak に名前を変更して
|
||||
# 残しているので、いらない場合は rm *.bak などで消してください。
|
||||
#
|
||||
##########################################################################
|
||||
|
||||
$sdir="../save/"; #バックアップ元(Athenaのディレクトリ/save/)
|
||||
$tdir="./backup_data/"; #バックアップ先
|
||||
|
||||
@files=( #ファイルのリスト
|
||||
"account","athena","storage","party","guild","castle","pet"
|
||||
);
|
||||
|
||||
|
||||
#-------------------------------設定ここまで-----------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if($ARGV[0]=~/^\-r$/i || $ARGV[0]=~/\-\-(recover|restore)/i){
|
||||
#復元処理
|
||||
|
||||
$file=$ARGV[1];
|
||||
$sdir=$ARGV[2]||$sdir;
|
||||
$tdir=$ARGV[3]||$tdir;
|
||||
&restorecopy($_) foreach @files;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
#バックアップ処理
|
||||
$sdir=$ARGV[0]||$sdir;
|
||||
$tdir=$ARGV[1]||$tdir;
|
||||
|
||||
unless( -d $tdir ){
|
||||
print "$0: \"$tdir\" : No such directory\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
(undef,$min,$hour,$day,$month,$year)=localtime;
|
||||
|
||||
$file=sprintf("%04d%02d%02d%02d%02d",
|
||||
$year+1900, $month+1, $day, $hour, $min );
|
||||
|
||||
&backupcopy($_) foreach @files;
|
||||
exit(0);
|
||||
|
||||
sub backupcopy {
|
||||
my($name)= @_;
|
||||
system("cp $sdir$name.txt $tdir$name$file.txt");
|
||||
}
|
||||
|
||||
sub restorecopy {
|
||||
my($name)= @_;
|
||||
unless( -f "$sdir$name.txt" ){
|
||||
printf("$0: \"$sdir$name.txt\" not found!\n");
|
||||
return 0;
|
||||
}
|
||||
unless( -f "$tdir$name$file.txt" ){
|
||||
printf("$0: \"$tdir$name$file.txt\" not found!\n");
|
||||
return 0;
|
||||
}
|
||||
rename "$sdir$name.txt","$sdir$name.bak";
|
||||
system("cp $tdir$name$file.txt $sdir$name.txt");
|
||||
}
|
170
tools/checkversion → tools/checkversion.pl
Normal file → Executable file
170
tools/checkversion → tools/checkversion.pl
Normal file → Executable file
@ -1,85 +1,85 @@
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
##########################################################################
|
||||
# INFORMATION TOOL ABOUT THE SERVERS VERSION OF ATHENA
|
||||
#
|
||||
# By connection on a server, this software display the version of the
|
||||
# designed server.
|
||||
#-------------------------------------------------------------------------
|
||||
# Usages:
|
||||
# ./checkversion IP:port
|
||||
# ./checkversion IP port
|
||||
# perl checkversion IP:port
|
||||
# perl checkversion IP port
|
||||
#
|
||||
# note: default port: 6900
|
||||
#
|
||||
# When successfull, the software return the value 0.
|
||||
#
|
||||
##########################################################################
|
||||
|
||||
#------------------------- start of configuration ------------------------
|
||||
|
||||
$connecttimeout = 10; # Connection Timeout (in seconds)
|
||||
|
||||
#-------------------------- End of configuration -------------------------
|
||||
|
||||
use IO::Socket;
|
||||
|
||||
unless($ARGV[0]) {
|
||||
print "USAGE: $0 server_ip:port\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
$server = $ARGV[0];
|
||||
$port = $ARGV[1];
|
||||
$port = $1 if ($server =~ s/:(\d+)//);
|
||||
$port ||= 6900;
|
||||
|
||||
# Connection to the server
|
||||
my($so,$er) = ();
|
||||
eval{
|
||||
$so = IO::Socket::INET->new(
|
||||
PeerAddr=> $server,
|
||||
PeerPort=> $port,
|
||||
Proto => "tcp",
|
||||
Timeout => $connecttimeout) or $er = 1;
|
||||
};
|
||||
|
||||
if($er || $@) {
|
||||
print "Can't not connect to server [$server:$port] !\n";
|
||||
exit(2);
|
||||
}
|
||||
|
||||
# Request for the server version
|
||||
print $so pack("v",30000); # 0x7530
|
||||
$so->flush();
|
||||
|
||||
# Receiving of the answer of the server
|
||||
if (read($so,$buf,10) < 10) {
|
||||
print "Invalid answer. It isn't an athena server or it is a too old version.\n";
|
||||
exit(5);
|
||||
}
|
||||
|
||||
# Sending end of connection to the server
|
||||
print $so pack("v",30002); # 0x7532
|
||||
$so->flush();
|
||||
|
||||
# Analyse of the answer
|
||||
my($ret,$maver,$miver,$rev,$dev,$mod,$type,$mdver) = unpack("v c6 v",$buf);
|
||||
|
||||
if ($ret != 30001) { # 0x7531
|
||||
print "Invalid answer. It isn't an athena server or it is a too old version.\n";
|
||||
exit(6);
|
||||
}
|
||||
|
||||
my(@stype) = ();
|
||||
foreach $i(0..3) {
|
||||
push @stype,(("login","char","inter","map")[$i]) if( $type & (1<<$i) );
|
||||
}
|
||||
print " ".join("/",@stype)." server [$server:$port].\n";
|
||||
printf " Athena version %s-%d.%d", ("stable","dev")[$dev], $maver,$miver;
|
||||
printf " revision %d",$rev if $rev;
|
||||
printf "%s%d\n",("","-mod")[$mod],$mdver;
|
||||
|
||||
exit(0);
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
##########################################################################
|
||||
# INFORMATION TOOL ABOUT THE SERVERS VERSION OF ATHENA
|
||||
#
|
||||
# By connection on a server, this software display the version of the
|
||||
# designed server.
|
||||
#-------------------------------------------------------------------------
|
||||
# Usages:
|
||||
# ./checkversion.pl IP:port
|
||||
# ./checkversion.pl IP port
|
||||
# perl checkversion.pl IP:port
|
||||
# perl checkversion.pl IP port
|
||||
#
|
||||
# note: default port: 6900
|
||||
#
|
||||
# When successfull, the software return the value 0.
|
||||
#
|
||||
##########################################################################
|
||||
|
||||
#------------------------- start of configuration ------------------------
|
||||
|
||||
$connecttimeout = 10; # Connection Timeout (in seconds)
|
||||
|
||||
#-------------------------- End of configuration -------------------------
|
||||
|
||||
use IO::Socket;
|
||||
|
||||
unless($ARGV[0]) {
|
||||
print "USAGE: $0 server_ip:port\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
$server = $ARGV[0];
|
||||
$port = $ARGV[1];
|
||||
$port = $1 if ($server =~ s/:(\d+)//);
|
||||
$port ||= 6900;
|
||||
|
||||
# Connection to the server
|
||||
my($so,$er) = ();
|
||||
eval{
|
||||
$so = IO::Socket::INET->new(
|
||||
PeerAddr=> $server,
|
||||
PeerPort=> $port,
|
||||
Proto => "tcp",
|
||||
Timeout => $connecttimeout) or $er = 1;
|
||||
};
|
||||
|
||||
if($er || $@) {
|
||||
print "Can't not connect to server [$server:$port] !\n";
|
||||
exit(2);
|
||||
}
|
||||
|
||||
# Request for the server version
|
||||
print $so pack("v",30000); # 0x7530
|
||||
$so->flush();
|
||||
|
||||
# Receiving of the answer of the server
|
||||
if (read($so,$buf,10) < 10) {
|
||||
print "Invalid answer. It isn't an athena server or it is a too old version.\n";
|
||||
exit(5);
|
||||
}
|
||||
|
||||
# Sending end of connection to the server
|
||||
print $so pack("v",30002); # 0x7532
|
||||
$so->flush();
|
||||
|
||||
# Analyse of the answer
|
||||
my($ret,$maver,$miver,$rev,$dev,$mod,$type,$mdver) = unpack("v c6 v",$buf);
|
||||
|
||||
if ($ret != 30001) { # 0x7531
|
||||
print "Invalid answer. It isn't an athena server or it is a too old version.\n";
|
||||
exit(6);
|
||||
}
|
||||
|
||||
my(@stype) = ();
|
||||
foreach $i(0..3) {
|
||||
push @stype,(("login","char","inter","map")[$i]) if( $type & (1<<$i) );
|
||||
}
|
||||
print " ".join("/",@stype)." server [$server:$port].\n";
|
||||
printf " Athena version %s-%d.%d", ("stable","dev")[$dev], $maver,$miver;
|
||||
printf " revision %d",$rev if $rev;
|
||||
printf "%s%d\n",("","-mod")[$mod],$mdver;
|
||||
|
||||
exit(0);
|
244
tools/getlogincount → tools/getlogincount.pl
Normal file → Executable file
244
tools/getlogincount → tools/getlogincount.pl
Normal file → Executable file
@ -1,122 +1,122 @@
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
##########################################################################
|
||||
# INFORMATION TOOL ABOUT THE # OF ONLINE PLAYERS ON ATHENA SERVERS
|
||||
#
|
||||
# By connection on the athena login-server, this software displays the
|
||||
# number of online players.
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
# Software usage:
|
||||
# Configure the IP, the port and a valid account of the server.
|
||||
# After, use at your choice:
|
||||
# ./getlogincount - display the number of online players on all servers.
|
||||
# ./getlogincount --premier or
|
||||
# ./getlogincount --first -- display the number of online players of the
|
||||
# first server in the received list.
|
||||
# ./getlogincount [servername] -- display the number of online players
|
||||
# of the specified server.
|
||||
#
|
||||
# If successfull, the software return the value 0.
|
||||
#
|
||||
##########################################################################
|
||||
|
||||
#------------------------------ CONFIGURATION ----------------------------
|
||||
|
||||
$loginserverip = "127.0.0.1"; # IP of the login-server
|
||||
$loginserverport = 6900; # port of the login-server
|
||||
$loginaccount = "s1"; # a valid account name
|
||||
$loginpasswd = "p1"; # the password of the valid account name
|
||||
|
||||
$connecttimeout = 10; # Connection timeout (in seconds)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
|
||||
use IO::Socket;
|
||||
|
||||
my($sname) = $ARGV[0];
|
||||
if (!defined($sname)) {
|
||||
$sname = "";
|
||||
}
|
||||
|
||||
# Connection to the login-server
|
||||
my($so,$er) = ();
|
||||
eval{
|
||||
$so = IO::Socket::INET->new(
|
||||
PeerAddr=> $loginserverip,
|
||||
PeerPort=> $loginserverport,
|
||||
Proto => "tcp",
|
||||
Timeout => $connecttimeout) or $er=1;
|
||||
};
|
||||
if($er || $@){
|
||||
print "Can't not connect to the login-server [${loginserverip}:$loginserverport] !\n";
|
||||
exit(2);
|
||||
}
|
||||
|
||||
# Request to connect on login-server
|
||||
print $so pack("v V a24 a24 C",0x0064,9,$loginaccount,$loginpasswd,3);
|
||||
$so->flush();
|
||||
|
||||
# Fail to connect
|
||||
if(unpack("v", &soread(\$so,2)) != 0x0069) {
|
||||
print "Login error.\n";
|
||||
exit(3);
|
||||
}
|
||||
|
||||
# Get length of the received packet
|
||||
my($plen) = unpack("v",&soread(\$so,2))-4;
|
||||
|
||||
# Suppress information of the account (we need only information about the servers)
|
||||
&soread(\$so,43);
|
||||
$plen -= 43;
|
||||
|
||||
# Check about the number of online servers
|
||||
if ($plen < 32) {
|
||||
printf "No server is connected to login-server.\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
# Read information of the servers
|
||||
my(@slist) = ();
|
||||
for(;$plen > 0;$plen -= 32) {
|
||||
my($name,$count) = unpack("x6 a20 V",&soread(\$so,32));
|
||||
$name = substr($name,0,index($name,"\0"));
|
||||
push @slist, [ $name, $count ];
|
||||
}
|
||||
|
||||
# Display the result
|
||||
if($sname eq "--first" || $sname eq "--premier") { # If we ask only for the first server
|
||||
printf "%-20s : %5d\n",$slist[0][0],$slist[0][1];
|
||||
} elsif ($sname eq "") { # If we ask for all servers
|
||||
foreach $i(@slist) {
|
||||
printf "%-20s : %5d\n",$i->[0],$i->[1];
|
||||
}
|
||||
} else { # If we ask for a specified server (by its name)
|
||||
my($flag) = 1;
|
||||
foreach $i(@slist) {
|
||||
if($i->[0] eq $sname) {
|
||||
printf "%-20s : %5d\n",$i->[0],$i->[1];
|
||||
$flag = 0;
|
||||
}
|
||||
}
|
||||
if($flag) { # If the server doesn't exist
|
||||
printf "The server [$sname] doesn't exist.\n";
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
# End of the software
|
||||
$so->shutdown(2);
|
||||
$so->close();
|
||||
exit(0);
|
||||
|
||||
# Sub-function: get data from the socket
|
||||
sub soread {
|
||||
my($so,$len) = @_;
|
||||
my($sobuf);
|
||||
if(read($$so,$sobuf,$len) < $len) {
|
||||
print "Socket read error.\n";
|
||||
exit(5);
|
||||
}
|
||||
return $sobuf;
|
||||
};
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
##########################################################################
|
||||
# INFORMATION TOOL ABOUT THE # OF ONLINE PLAYERS ON ATHENA SERVERS
|
||||
#
|
||||
# By connection on the athena login-server, this software displays the
|
||||
# number of online players.
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
# Software usage:
|
||||
# Configure the IP, the port and a valid account of the server.
|
||||
# After, use at your choice:
|
||||
# ./getlogincount.pl - display the number of online players on all servers.
|
||||
# ./getlogincount.pl --premier or
|
||||
# ./getlogincount.pl --first -- display the number of online players of the
|
||||
# first server in the received list.
|
||||
# ./getlogincount.pl [servername] -- display the number of online players
|
||||
# of the specified server.
|
||||
#
|
||||
# If successfull, the software return the value 0.
|
||||
#
|
||||
##########################################################################
|
||||
|
||||
#------------------------------ CONFIGURATION ----------------------------
|
||||
|
||||
$loginserverip = "127.0.0.1"; # IP of the login-server
|
||||
$loginserverport = 6900; # port of the login-server
|
||||
$loginaccount = "s1"; # a valid account name
|
||||
$loginpasswd = "p1"; # the password of the valid account name
|
||||
|
||||
$connecttimeout = 10; # Connection timeout (in seconds)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
|
||||
use IO::Socket;
|
||||
|
||||
my($sname) = $ARGV[0];
|
||||
if (!defined($sname)) {
|
||||
$sname = "";
|
||||
}
|
||||
|
||||
# Connection to the login-server
|
||||
my($so,$er) = ();
|
||||
eval{
|
||||
$so = IO::Socket::INET->new(
|
||||
PeerAddr=> $loginserverip,
|
||||
PeerPort=> $loginserverport,
|
||||
Proto => "tcp",
|
||||
Timeout => $connecttimeout) or $er=1;
|
||||
};
|
||||
if($er || $@){
|
||||
print "Can't not connect to the login-server [${loginserverip}:$loginserverport] !\n";
|
||||
exit(2);
|
||||
}
|
||||
|
||||
# Request to connect on login-server
|
||||
print $so pack("v V a24 a24 C",0x0064,9,$loginaccount,$loginpasswd,3);
|
||||
$so->flush();
|
||||
|
||||
# Fail to connect
|
||||
if(unpack("v", &soread(\$so,2)) != 0x0069) {
|
||||
print "Login error.\n";
|
||||
exit(3);
|
||||
}
|
||||
|
||||
# Get length of the received packet
|
||||
my($plen) = unpack("v",&soread(\$so,2))-4;
|
||||
|
||||
# Suppress information of the account (we need only information about the servers)
|
||||
&soread(\$so,43);
|
||||
$plen -= 43;
|
||||
|
||||
# Check about the number of online servers
|
||||
if ($plen < 32) {
|
||||
printf "No server is connected to login-server.\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
# Read information of the servers
|
||||
my(@slist) = ();
|
||||
for(;$plen > 0;$plen -= 32) {
|
||||
my($name,$count) = unpack("x6 a20 V",&soread(\$so,32));
|
||||
$name = substr($name,0,index($name,"\0"));
|
||||
push @slist, [ $name, $count ];
|
||||
}
|
||||
|
||||
# Display the result
|
||||
if($sname eq "--first" || $sname eq "--premier") { # If we ask only for the first server
|
||||
printf "%-20s : %5d\n",$slist[0][0],$slist[0][1];
|
||||
} elsif ($sname eq "") { # If we ask for all servers
|
||||
foreach $i(@slist) {
|
||||
printf "%-20s : %5d\n",$i->[0],$i->[1];
|
||||
}
|
||||
} else { # If we ask for a specified server (by its name)
|
||||
my($flag) = 1;
|
||||
foreach $i(@slist) {
|
||||
if($i->[0] eq $sname) {
|
||||
printf "%-20s : %5d\n",$i->[0],$i->[1];
|
||||
$flag = 0;
|
||||
}
|
||||
}
|
||||
if($flag) { # If the server doesn't exist
|
||||
printf "The server [$sname] doesn't exist.\n";
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
# End of the software
|
||||
$so->shutdown(2);
|
||||
$so->close();
|
||||
exit(0);
|
||||
|
||||
# Sub-function: get data from the socket
|
||||
sub soread {
|
||||
my($so,$len) = @_;
|
||||
my($sobuf);
|
||||
if(read($$so,$sobuf,$len) < $len) {
|
||||
print "Socket read error.\n";
|
||||
exit(5);
|
||||
}
|
||||
return $sobuf;
|
||||
};
|
66
tools/mapcheck.sh
Normal file → Executable file
66
tools/mapcheck.sh
Normal file → Executable file
@ -1,34 +1,34 @@
|
||||
#!/bin/sh
|
||||
echo "============================================"
|
||||
echo "= map server status checker... ="
|
||||
echo "============================================"
|
||||
./map-server.exe &
|
||||
sleep 40
|
||||
|
||||
while [ 0 ]
|
||||
do
|
||||
pcpu=` top -n 1| grep map-server | awk '{print $9}' | awk 'BEGIN{FS="."} {print $1}' `
|
||||
if [ "$pcpu" -gt 80 ];then
|
||||
echo "============================================"
|
||||
echo "map server is more than 80% (now $pcpu%)"
|
||||
echo "============================================"
|
||||
ppid=` ps -a | grep map-server | awk '{print $1}' `
|
||||
kill $ppid
|
||||
./map-server.exe &
|
||||
sleep 40
|
||||
else
|
||||
pmapct=` ps -a| grep map-server | wc -l `
|
||||
if [ "$pmapct" -eq 0 ];then
|
||||
echo "============================================"
|
||||
echo "map server is not running..."
|
||||
echo "restart map server..."
|
||||
echo "============================================"
|
||||
./map-server.exe &
|
||||
sleep 40
|
||||
#echo "test"
|
||||
else
|
||||
echo "map server is ok (now $pcpu%)..."
|
||||
sleep 5
|
||||
fi
|
||||
fi
|
||||
#!/bin/sh
|
||||
echo "============================================"
|
||||
echo "= map server status checker... ="
|
||||
echo "============================================"
|
||||
./map-server.exe &
|
||||
sleep 40
|
||||
|
||||
while [ 0 ]
|
||||
do
|
||||
pcpu=` top -n 1| grep map-server | awk '{print $9}' | awk 'BEGIN{FS="."} {print $1}' `
|
||||
if [ "$pcpu" -gt 80 ];then
|
||||
echo "============================================"
|
||||
echo "map server is more than 80% (now $pcpu%)"
|
||||
echo "============================================"
|
||||
ppid=` ps -a | grep map-server | awk '{print $1}' `
|
||||
kill $ppid
|
||||
./map-server.exe &
|
||||
sleep 40
|
||||
else
|
||||
pmapct=` ps -a| grep map-server | wc -l `
|
||||
if [ "$pmapct" -eq 0 ];then
|
||||
echo "============================================"
|
||||
echo "map server is not running..."
|
||||
echo "restart map server..."
|
||||
echo "============================================"
|
||||
./map-server.exe &
|
||||
sleep 40
|
||||
#echo "test"
|
||||
else
|
||||
echo "map server is ok (now $pcpu%)..."
|
||||
sleep 5
|
||||
fi
|
||||
fi
|
||||
done
|
112
tools/mapchecker.sh
Normal file → Executable file
112
tools/mapchecker.sh
Normal file → Executable file
@ -1,56 +1,56 @@
|
||||
#!/bin/bash
|
||||
|
||||
athena_dir="/home/athena/658/"
|
||||
|
||||
while [ true ] ; do
|
||||
|
||||
if [ ` ps fauxw | grep map-server | grep -v grep | wc -l ` -eq 0 ];then
|
||||
#echo `date` " -- map-server crashed - restarting"
|
||||
echo `date` " -- map-server crashed - restarting" >> /var/log/athena_status.log
|
||||
killall -9 map-server
|
||||
cd $athena_dir
|
||||
nohup ./map-server ./conf/map_athena.conf ./inter_athena.conf &
|
||||
sleep 240
|
||||
#sleep 40 #for fast pc's remove the "#" at the beginning of the line and delete the line above
|
||||
fi
|
||||
|
||||
|
||||
if [ ` ps fauxw | grep map-server | grep -v grep | awk '{print $3}' | awk 'BEGIN{FS="."} {print $1}' ` -gt 10 ];then
|
||||
#echo `date` " -- mapserver cpuload over 10 - restarting"
|
||||
echo `date` " -- mapserver cpuload over 10 - restarting" >> /var/log/athena_status.log
|
||||
killall -9 map-server
|
||||
cd $athena_dir
|
||||
nohup ./map-server ./conf/map_athena.conf ./inter_athena.conf &
|
||||
sleep 240
|
||||
#sleep 40 #for fast pc's remove the "#" at the beginning of the line and delete the line above
|
||||
#echo `date` " -- restarted"
|
||||
echo `date` " -- restarted" >> /var/log/athena_status.log
|
||||
fi
|
||||
|
||||
if [ ` ps fauxw | grep char-server | grep -v grep | wc -l ` -eq 0 ];then
|
||||
#echo `date` " -- char server crashed - restarting"
|
||||
echo `date` " -- char server crashed - restarting" >> /var/log/athena_status.log
|
||||
killall -9 char-server
|
||||
cd $athena_dir
|
||||
nohup ./char-server ./conf/char_athena.conf ./conf/inter_athena.conf &
|
||||
#echo `date` " -- restarted"
|
||||
echo `date` " -- restarted" >> /var/log/athena_status.log
|
||||
|
||||
fi
|
||||
|
||||
if [ ` ps fauxw | grep login-server | grep -v grep | wc -l ` -eq 0 ];then
|
||||
#echo `date` " -- login server crashed - restarting"
|
||||
echo `date` " -- login server crashed - restarting" >> /var/log/athena_status.log
|
||||
killall -9 login-server
|
||||
cd $athena_dir
|
||||
nohup ./login-server ./conf/login_athena.conf &
|
||||
#echo `date` " -- restarted"
|
||||
echo `date` " -- restarted" >> /var/log/athena_status.log
|
||||
|
||||
fi
|
||||
|
||||
|
||||
#echo `date` " -- everything is fine"
|
||||
echo `date` " -- everything is fine" >> /var/log/athena_status.log
|
||||
sleep 30
|
||||
done
|
||||
#!/bin/bash
|
||||
|
||||
athena_dir="/home/athena/658/"
|
||||
|
||||
while [ true ] ; do
|
||||
|
||||
if [ ` ps fauxw | grep map-server | grep -v grep | wc -l ` -eq 0 ];then
|
||||
#echo `date` " -- map-server crashed - restarting"
|
||||
echo `date` " -- map-server crashed - restarting" >> /var/log/athena_status.log
|
||||
killall -9 map-server
|
||||
cd $athena_dir
|
||||
nohup ./map-server ./conf/map_athena.conf ./inter_athena.conf &
|
||||
sleep 240
|
||||
#sleep 40 #for fast pc's remove the "#" at the beginning of the line and delete the line above
|
||||
fi
|
||||
|
||||
|
||||
if [ ` ps fauxw | grep map-server | grep -v grep | awk '{print $3}' | awk 'BEGIN{FS="."} {print $1}' ` -gt 10 ];then
|
||||
#echo `date` " -- mapserver cpuload over 10 - restarting"
|
||||
echo `date` " -- mapserver cpuload over 10 - restarting" >> /var/log/athena_status.log
|
||||
killall -9 map-server
|
||||
cd $athena_dir
|
||||
nohup ./map-server ./conf/map_athena.conf ./inter_athena.conf &
|
||||
sleep 240
|
||||
#sleep 40 #for fast pc's remove the "#" at the beginning of the line and delete the line above
|
||||
#echo `date` " -- restarted"
|
||||
echo `date` " -- restarted" >> /var/log/athena_status.log
|
||||
fi
|
||||
|
||||
if [ ` ps fauxw | grep char-server | grep -v grep | wc -l ` -eq 0 ];then
|
||||
#echo `date` " -- char server crashed - restarting"
|
||||
echo `date` " -- char server crashed - restarting" >> /var/log/athena_status.log
|
||||
killall -9 char-server
|
||||
cd $athena_dir
|
||||
nohup ./char-server ./conf/char_athena.conf ./conf/inter_athena.conf &
|
||||
#echo `date` " -- restarted"
|
||||
echo `date` " -- restarted" >> /var/log/athena_status.log
|
||||
|
||||
fi
|
||||
|
||||
if [ ` ps fauxw | grep login-server | grep -v grep | wc -l ` -eq 0 ];then
|
||||
#echo `date` " -- login server crashed - restarting"
|
||||
echo `date` " -- login server crashed - restarting" >> /var/log/athena_status.log
|
||||
killall -9 login-server
|
||||
cd $athena_dir
|
||||
nohup ./login-server ./conf/login_athena.conf &
|
||||
#echo `date` " -- restarted"
|
||||
echo `date` " -- restarted" >> /var/log/athena_status.log
|
||||
|
||||
fi
|
||||
|
||||
|
||||
#echo `date` " -- everything is fine"
|
||||
echo `date` " -- everything is fine" >> /var/log/athena_status.log
|
||||
sleep 30
|
||||
done
|
||||
|
Loading…
x
Reference in New Issue
Block a user