* Condensed the documentation on the "Import" folder, it should be more reader-friendly now (conf\readme.txt)

* Deleted doc\pccommand_list.txt, it's outdated and its contents are already (better) explained in doc\script_commands.txt
* Other misc cleaning...

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@16453 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
euphyy 2012-07-19 18:46:56 +00:00
parent e804ae16ef
commit e780ab2f51
10 changed files with 168 additions and 405 deletions

View File

@ -1,33 +1,22 @@
What is the import folder for?
-------------------------------------------------------------------------------
Most people don't know the real use of the import folder. After you do, you will wonder
what you ever did without it.
The main thing it does, is provide a way for you to change your config settings without
having to update the files every time you update your server. You store your changes, and
the rest are updated with rAthena (usually though SVN).
The folder provides way for you to change your config settings without having
to update the files every time you update your server. You store your changes,
and the rest is updated with rAthena (usually though SVN).
How does this work?
-------------------------------------------------------------------------------
Well, you place only the settings you have changed in the import files. I'll use
battle_athena.conf and battle_conf.txt for my example. Everytime you update you conf
folder, using the normal method, you have to go and edit the configs again. So, you have to
redo your rates, redo your ip addresses, you have to redo it all. Well, not with the import
system.
Place only the settings you have changed in the import files.
For example, if you want to change a value in /battle/exp.conf:
Say you want to change your base experience rate from the default (100)to 7x (700). Well
then you would place this in your import/battle_conf.txt:
// Rate at which exp. is given. (Note 2)
base_exp_rate: 700
// Rate at which exp. is given. (Note 2)
base_exp_rate: 700
You could instead copy the setting into /import/battle_conf.txt,
and you'll eliminate any problems updating in the future.
You don't need the comment (duh, it's a commnet), but I usually leave them for clarity
sake.
Neat, isn't it?
So, now this new setting take place over the setting in battle_athena.conf. You just keep
this file everytime you update, and your setting will always be there. Neat, isn't it?
So, yeah, that's what the import folder is for. I hope to see a lot more people use it, to
make my life as a managed server runer better.
Semi-guide by Ajarn
- Semi-guide by Ajarn / Euphy

View File

@ -1,169 +0,0 @@
---> PC Command List
------> Here's a list of scripts that can be triggered by PC actions and what they do.
------> Configuration is found at conf/script_athena.conf
------> There are two methods to define the script to be use (event_script_type)
------> 0 - By NPC. There has to be an NPC named in the same manner as the event
------> 1 - By Label. Every label from every NPC with the event name will be
executed (note that in this case the event HAS to start with the
word 'On', eg: 'OnPCBaseLvUpEvent:')
+ PCCommand: OnPCLoginEvent
+ Code by: (davidsiaw)
+ How it works:
When a player logs in, the NPC will run as if he just clicked it. Which means
if the script is like this:
+ Sample:
prontera,0,0,0 script OnPCLoginEvent -1,{
mes "lmao";
close;
}
+ Explaination:
every player who logs in will receive a message 'lmao' in their face as soon
as they can see the map.
+ Note:
1) The name of the NPC has to match the one specified in scripts_athena.conf
2) I made it invisible because you don't need to see it. Its an abstract NPC
3) If you don't want it, simply delete it
4) If you have more than one only the first found will be execute (when using
event_script_type 0)
5) You can put this script in ANY file.
6) I put an end; there because that just makes it do nothing.
7) Modify this script to your liking and give your players a surprise
8) Remember: IT RUNS LIKE A NORMAL NPC. BUT THE ONLY WAY TO 'CLICK' IT IS BY
LOGGING ON
9) There are 2 ways to use this - check the examples below!
-----------------------------------------------------------------------------
+ PCCommand: OnPcBaseLvUpEvent
+ Code by: lordalfa
+ How it works:
When a player Base level increases, the NPC will run as if he just clicked it. Which means
if the script is like this:
+ Sample:
- Script OnPCBaseLvUpEvent -1,{
mes "zomfg....";
close;
}
+ Explanation:
whenever a player level ups his/her base level, the words zomfg will pop up
in his face.
+ Note:
1) This script runs every moment the player gains a level. It is adviced if
you want to repeatedly use this script, to use a sort of filter.
2) If a player gains multiple levels from a single kill, the script will be
only called once at the end.
-----------------------------------------------------------------------------
+ PCCommand: OnPcJobLvUpEvent
+ Code by: lordalfa
+ How it works:
It's exactly the same as OnPcBaseLvUpEvent, except it triggers when leveling job.
-----------------------------------------------------------------------------
+ PCCommand: OnOnNPCKillEvent
+ Code by: lordalfa
+ How it works:
When a player kills a monster, the NPC will run as if he just clicked it. Which means
if the script is like this:
+ Sample:
- script OnNPCKillEvent -1,{
mes "Holy shit";
close;
}
+ Explaination:
whenever a player kills a monster on the map, the words "Holy Shit" will appear
on the guy's face.
+ Note:
1) This script runs everytime a player kills a monster It is adviced if
you want to repeatedly use this script, to use a sort of filter.
2) The var "KilledRid" is set on the killer, this can be used in
strmobinfo to find out info about the Monster that was killed
-----------------------------------------------------------------------------
+ PCCommand: OnPCKillEvent
+ Code by: zbuffer aka Lance
+ How it works:
It is exactly the same as OnNPCKillEvent, except it triggers when a player kills another player.
-----------------------------------------------------------------------------
+ PCCommand: OnPCLoadMapEvent
+ Code by: zbuffer aka Lance
+ How it works:
When a player logs in on the map, the NPC will run as if he just clicked it. Which means
if the script is like this:
+ Sample:
prontera,159,192,2 script OnPCLoadMapEvent 101,{
mes "Holy shit";
close;
}
----or--->
OnPCLoadMapEvent:
announce " " strcharinfo(0) + " has changed map!", 16;
end;
+ Note:
1) Both types will execute regardless of map.
2) The event will only trigger on maps where you enable the 'loadevent' mapflag.
-----------------------------------------------------------------------------
+ PCCommand: OnPCDieEvent
+ Code by: Unknown
+ How it works:
When a player dies, the event will be run as if a npc were clicked. The RID of the person killed
will be attached. Simple. It can to be used as a floating npc or as a npc placed on a map.
Notice that this event is server-wide if used as a floating npc, so if you try running it for
more than one map, and want to make a single npc, you'll have to use some sort of filter, which
can be getmapxy, something like this:
- script PCDieEvent -1,{
if (getmapxy(@mapname$,@mapx,@mapy,0) == -1) goto L_Finish;
if (@mapname$ == "valkyrie") || (@mapname$ == "amatsu") {
killmonster "valkyrie","All";
announce "Deep Voice: You have failed.... you have another opportunity though...",bc_self,0x660033;
if (killtest != 0) enablenpc "Outern Voices";
if (killedonce == 1) end;
set killedonce,1;
} else
end;
L_Finish:
end;
}
----or---->
OnPCDieEvent:
if (getmapxy(@mapname$,@mapx,@mapy,0) == -1) goto L_Finish;
if (@mapname$ == "valkyrie") || (@mapname$ == "amatsu") {
killmonster "valkyrie","All";
announce "Deep Voice: You have failed.... you have another opportunity though...",bc_self,0x660033;
if (killtest != 0) enablenpc "Outern Voices";
if (killedonce == 1) end;
set killedonce,1;
} else
end;
L_Finish:
end;
We're using getmapxy to obtain the mapname, then adjust our commands and actions depending on the
map. We could also use the command to find if the player died inside a wished area.
-----------------------------------------------------------------------------

View File

@ -1,4 +1,3 @@
//===== rAthena Script =======================================
//===== By: ==================================================
//= Lupus
//= Shows your HAT's slots IDs

View File

@ -27,6 +27,4 @@ prontera,218,211,4 shop Pet Groomer 125,537:2500,643:3000,10013:1500,10014:2000
izlude,164,138,4 shop Pet Groomer 124,537:2500,643:3000,10013:1500,10014:2000
morocc,269,167,4 shop Pet Groomer 125,537:2500,643:3000,10013:1500,10014:2000
geffen,193,152,4 shop Pet Groomer 124,537:2500,643:3000,10013:1500,10014:2000
payon,142,104,4 shop Pet Groomer 124,537:2500,643:3000,10013:1500,10014:2000
// EOF //
payon,142,104,4 shop Pet Groomer 124,537:2500,643:3000,10013:1500,10014:2000

View File

@ -36,7 +36,7 @@
mes "- Currently you're carrying -";
mes "- too many items with you. -";
mes "- Please try again -";
mes "- after you loose some weight. -";
mes "- after you lose some weight. -";
close;
}
mes "[Seiyablem]";

View File

@ -17,11 +17,11 @@
- script Leablem#dummy::SocketEnchant2 -1,{
if (checkweight(1201,1) == 0)
{
mes "- Wait a seconds !! -";
mes "- You have carried too many items -";
mes "- so, you can't get more items. -";
mes "- Make your weight as low -";
mes "- after then try it again. -";
mes "- Wait a minute !! -";
mes "- Currently you're carrying -";
mes "- too many items with you. -";
mes "- Please try again -";
mes "- after you lose some weight. -";
close;
}
mes "[Leablem]";

View File

@ -300,7 +300,6 @@ ra_in01,384,246,3 script Vincent#ra_in01 47,{
close;
}
else if (lost_boy == 8) {
mes "[Vincent]";
mes "The gem is very special...";
@ -340,7 +339,6 @@ ra_in01,384,246,3 script Vincent#ra_in01 47,{
close;
}
else if (lost_boy == 9) {
mes "[Vincent]";
mes "You came back!";
@ -6990,13 +6988,11 @@ ra_temin,134,134,3 duplicate(raofficeguard) Pope's Office Guard#2ra 926
ra_temin,134,131,0 script gyoin1#rachel 45,1,1,{
OnTouch:
if (ra_tem_q == 16) {
if (ra_tem_q == 16)
warp "ra_temin",276,239;
}
else if ((ra_tem_q > 16) || (MISC_QUEST & 8192)){
if ((aru_em == 15) || (aru_em == 21)) {
if ((aru_em == 15) || (aru_em == 21))
warp "ra_temin",276,239;
}
else {
mes "[Pope's Office Guard]";
mes "I'm sorry, but the pope";
@ -7281,7 +7277,6 @@ OnTouch:
warp "ra_temin",300,153;
end;
}
end;
}
@ -7532,73 +7527,73 @@ OnTouch:
}
que_san04,119,203,0 script imir3#rachel -1,7,7,{
OnTouch:
if (ra_tem_q == 21) {
mes "^3355FFNo wonder this object";
mes "in the water seems so";
mes "familiar: it's a Ymir's";
mes "Heart Piece! In fact, there's";
mes "dozens of them just lying here.^000000";
next;
mes "^3355FFWhy would so many of these";
mes "powerful artifacts be here";
mes "in the Holy Ground? Perhaps";
mes "this is the secret that the";
mes "priests are trying to keep.^000000";
next;
hideoffnpc "High Priestess Niren#r2";
cutin "ra_gwoman",2;
mes "[High Priestess Niren]";
mes "How dare you intrude";
mes "the Holy Ground! Identify";
mes "yourself! I'll have you tried!";
next;
cutin "ra_gwoman2",2;
mes "[High Priestess Niren]";
mes "O-oh! It's you, the";
mes "adventurer recommended";
mes "by Bekento. Hm. I apologize";
mes "for snapping at you like";
mes "that. Didn't you know that";
mes "no one's allowed here?";
next;
cutin "ra_gwoman",2;
mes "[High Priestess Niren]";
mes "Hmm. Well, you Rune-Midgarts";
mes "adventurers are famous for your";
mes "skills and abilities, but this";
mes "was not expected. I mean, we";
mes "made sure this place was";
mes "absolutely secure.";
next;
cutin "ra_gwoman2",2;
mes "[High Priestess Niren]";
mes "What's done is done...";
mes "I warned Bekento that he";
mes "might cause trouble for you,";
mes "but it seems that you've";
mes "caused trouble for him.";
next;
mes "[High Priestess Niren]";
mes "Understand this:";
mes "most intruders are";
mes "severely punished, but";
mes "because of my friendship";
mes "with Bekento, I'm letting";
mes "you off easy. Remember that.";
next;
sc_start SC_Blind,600000,0;
mes "^3355FFNiren began to chant";
mes "in a low voice, and your";
mes "eyelids grow heavier as you";
mes "grow drowsier and sleepier...^000000";
set ra_tem_q,22;
close2;
hideonnpc "High Priestess Niren#r2";
warp "rachel",163,152;
end;
}
OnTouch:
if (ra_tem_q == 21) {
mes "^3355FFNo wonder this object";
mes "in the water seems so";
mes "familiar: it's a Ymir's";
mes "Heart Piece! In fact, there's";
mes "dozens of them just lying here.^000000";
next;
mes "^3355FFWhy would so many of these";
mes "powerful artifacts be here";
mes "in the Holy Ground? Perhaps";
mes "this is the secret that the";
mes "priests are trying to keep.^000000";
next;
hideoffnpc "High Priestess Niren#r2";
cutin "ra_gwoman",2;
mes "[High Priestess Niren]";
mes "How dare you intrude";
mes "the Holy Ground! Identify";
mes "yourself! I'll have you tried!";
next;
cutin "ra_gwoman2",2;
mes "[High Priestess Niren]";
mes "O-oh! It's you, the";
mes "adventurer recommended";
mes "by Bekento. Hm. I apologize";
mes "for snapping at you like";
mes "that. Didn't you know that";
mes "no one's allowed here?";
next;
cutin "ra_gwoman",2;
mes "[High Priestess Niren]";
mes "Hmm. Well, you Rune-Midgarts";
mes "adventurers are famous for your";
mes "skills and abilities, but this";
mes "was not expected. I mean, we";
mes "made sure this place was";
mes "absolutely secure.";
next;
cutin "ra_gwoman2",2;
mes "[High Priestess Niren]";
mes "What's done is done...";
mes "I warned Bekento that he";
mes "might cause trouble for you,";
mes "but it seems that you've";
mes "caused trouble for him.";
next;
mes "[High Priestess Niren]";
mes "Understand this:";
mes "most intruders are";
mes "severely punished, but";
mes "because of my friendship";
mes "with Bekento, I'm letting";
mes "you off easy. Remember that.";
next;
sc_start SC_Blind,600000,0;
mes "^3355FFNiren began to chant";
mes "in a low voice, and your";
mes "eyelids grow heavier as you";
mes "grow drowsier and sleepier...^000000";
set ra_tem_q,22;
close2;
hideonnpc "High Priestess Niren#r2";
warp "rachel",163,152;
end;
}
end;
}
que_san04,122,200,4 script High Priestess Niren#r2 915,{
@ -7634,13 +7629,12 @@ OnTouch:
set ra_tem_q,23;
close;
}
end;
}
//rachel,142,167,5 script Seeking Follower#rachel 917,6,6,{
rachel,142,167,5 script Seeking Follower#rachel 916,6,6,{
if ((lost_boy == 13) && (ra_tem_q == 20)) {
L_Mes:
mes "[Arunafeltz Follower]";
mes "Excuse me, but";
mes "are you "+strcharinfo(0)+"?";
@ -7661,7 +7655,6 @@ rachel,142,167,5 script Seeking Follower#rachel 916,6,6,{
mes "right room of the temple.";
close;
}
else {
mes "[Arunafeltz Follower]";
mes "May Freya bless you";
@ -7670,28 +7663,8 @@ rachel,142,167,5 script Seeking Follower#rachel 916,6,6,{
}
OnTouch:
if ((lost_boy == 13) && (ra_tem_q == 20)) {
mes "[Arunafeltz Follower]";
mes "Excuse me, but";
mes "are you "+strcharinfo(0)+"?";
next;
select("Yes.");
mes "[Arunafeltz Follower]";
mes "High Priest Zhed";
mes "would like to see";
mes "you right away, "+strcharinfo(0)+".";
next;
select("May ask why?");
mes "[Arunafeltz Follower]";
mes "Well, I actually have no";
mes "idea. I'm only supposed to";
mes "inform you that he's looking";
mes "for you. Please visit High";
mes "Priest Zhed in the second";
mes "right room of the temple.";
close;
}
if ((lost_boy == 13) && (ra_tem_q == 20)) goto L_Mes;
end;
}
// End of Donation Lottery/High Priest quest

View File

@ -36,7 +36,7 @@
mes "- Currently you're carrying -";
mes "- too many items with you. -";
mes "- Please try again -";
mes "- after you loose some weight. -";
mes "- after you lose some weight. -";
close;
}
mes "[Seiyablem]";

View File

@ -17,11 +17,11 @@
- script Leablem#dummy::SocketEnchant2 -1,{
if (checkweight(1201,1) == 0)
{
mes "- Wait a seconds !! -";
mes "- You have carried too many items -";
mes "- so, you can't get more items. -";
mes "- Make your weight as low -";
mes "- after then try it again. -";
mes "- Wait a minute !! -";
mes "- Currently you're carrying -";
mes "- too many items with you. -";
mes "- Please try again -";
mes "- after you lose some weight. -";
close;
}
mes "[Leablem]";

View File

@ -300,7 +300,6 @@ ra_in01,384,246,3 script Vincent#ra_in01 47,{
close;
}
else if (lost_boy == 8) {
mes "[Vincent]";
mes "The gem is very special...";
@ -340,7 +339,6 @@ ra_in01,384,246,3 script Vincent#ra_in01 47,{
close;
}
else if (lost_boy == 9) {
mes "[Vincent]";
mes "You came back!";
@ -6990,13 +6988,11 @@ ra_temin,134,134,3 duplicate(raofficeguard) Pope's Office Guard#2ra 926
ra_temin,134,131,0 script gyoin1#rachel 45,1,1,{
OnTouch:
if (ra_tem_q == 16) {
if (ra_tem_q == 16)
warp "ra_temin",276,239;
}
else if ((ra_tem_q > 16) || (MISC_QUEST & 8192)){
if ((aru_em == 15) || (aru_em == 21)) {
if ((aru_em == 15) || (aru_em == 21))
warp "ra_temin",276,239;
}
else {
mes "[Pope's Office Guard]";
mes "I'm sorry, but the pope";
@ -7281,7 +7277,6 @@ OnTouch:
warp "ra_temin",300,153;
end;
}
end;
}
@ -7532,73 +7527,73 @@ OnTouch:
}
que_san04,119,203,0 script imir3#rachel -1,7,7,{
OnTouch:
if (ra_tem_q == 21) {
mes "^3355FFNo wonder this object";
mes "in the water seems so";
mes "familiar: it's a Ymir's";
mes "Heart Piece! In fact, there's";
mes "dozens of them just lying here.^000000";
next;
mes "^3355FFWhy would so many of these";
mes "powerful artifacts be here";
mes "in the Holy Ground? Perhaps";
mes "this is the secret that the";
mes "priests are trying to keep.^000000";
next;
hideoffnpc "High Priestess Niren#r2";
cutin "ra_gwoman",2;
mes "[High Priestess Niren]";
mes "How dare you intrude";
mes "the Holy Ground! Identify";
mes "yourself! I'll have you tried!";
next;
cutin "ra_gwoman2",2;
mes "[High Priestess Niren]";
mes "O-oh! It's you, the";
mes "adventurer recommended";
mes "by Bekento. Hm. I apologize";
mes "for snapping at you like";
mes "that. Didn't you know that";
mes "no one's allowed here?";
next;
cutin "ra_gwoman",2;
mes "[High Priestess Niren]";
mes "Hmm. Well, you Rune-Midgarts";
mes "adventurers are famous for your";
mes "skills and abilities, but this";
mes "was not expected. I mean, we";
mes "made sure this place was";
mes "absolutely secure.";
next;
cutin "ra_gwoman2",2;
mes "[High Priestess Niren]";
mes "What's done is done...";
mes "I warned Bekento that he";
mes "might cause trouble for you,";
mes "but it seems that you've";
mes "caused trouble for him.";
next;
mes "[High Priestess Niren]";
mes "Understand this:";
mes "most intruders are";
mes "severely punished, but";
mes "because of my friendship";
mes "with Bekento, I'm letting";
mes "you off easy. Remember that.";
next;
sc_start SC_Blind,600000,0;
mes "^3355FFNiren began to chant";
mes "in a low voice, and your";
mes "eyelids grow heavier as you";
mes "grow drowsier and sleepier...^000000";
set ra_tem_q,22;
close2;
hideonnpc "High Priestess Niren#r2";
warp "rachel",163,152;
end;
}
OnTouch:
if (ra_tem_q == 21) {
mes "^3355FFNo wonder this object";
mes "in the water seems so";
mes "familiar: it's a Ymir's";
mes "Heart Piece! In fact, there's";
mes "dozens of them just lying here.^000000";
next;
mes "^3355FFWhy would so many of these";
mes "powerful artifacts be here";
mes "in the Holy Ground? Perhaps";
mes "this is the secret that the";
mes "priests are trying to keep.^000000";
next;
hideoffnpc "High Priestess Niren#r2";
cutin "ra_gwoman",2;
mes "[High Priestess Niren]";
mes "How dare you intrude";
mes "the Holy Ground! Identify";
mes "yourself! I'll have you tried!";
next;
cutin "ra_gwoman2",2;
mes "[High Priestess Niren]";
mes "O-oh! It's you, the";
mes "adventurer recommended";
mes "by Bekento. Hm. I apologize";
mes "for snapping at you like";
mes "that. Didn't you know that";
mes "no one's allowed here?";
next;
cutin "ra_gwoman",2;
mes "[High Priestess Niren]";
mes "Hmm. Well, you Rune-Midgarts";
mes "adventurers are famous for your";
mes "skills and abilities, but this";
mes "was not expected. I mean, we";
mes "made sure this place was";
mes "absolutely secure.";
next;
cutin "ra_gwoman2",2;
mes "[High Priestess Niren]";
mes "What's done is done...";
mes "I warned Bekento that he";
mes "might cause trouble for you,";
mes "but it seems that you've";
mes "caused trouble for him.";
next;
mes "[High Priestess Niren]";
mes "Understand this:";
mes "most intruders are";
mes "severely punished, but";
mes "because of my friendship";
mes "with Bekento, I'm letting";
mes "you off easy. Remember that.";
next;
sc_start SC_Blind,600000,0;
mes "^3355FFNiren began to chant";
mes "in a low voice, and your";
mes "eyelids grow heavier as you";
mes "grow drowsier and sleepier...^000000";
set ra_tem_q,22;
close2;
hideonnpc "High Priestess Niren#r2";
warp "rachel",163,152;
end;
}
end;
}
que_san04,122,200,4 script High Priestess Niren#r2 915,{
@ -7634,13 +7629,12 @@ OnTouch:
set ra_tem_q,23;
close;
}
end;
}
//rachel,142,167,5 script Seeking Follower#rachel 917,6,6,{
rachel,142,167,5 script Seeking Follower#rachel 916,6,6,{
if ((lost_boy == 13) && (ra_tem_q == 20)) {
L_Mes:
mes "[Arunafeltz Follower]";
mes "Excuse me, but";
mes "are you "+strcharinfo(0)+"?";
@ -7661,7 +7655,6 @@ rachel,142,167,5 script Seeking Follower#rachel 916,6,6,{
mes "right room of the temple.";
close;
}
else {
mes "[Arunafeltz Follower]";
mes "May Freya bless you";
@ -7670,28 +7663,8 @@ rachel,142,167,5 script Seeking Follower#rachel 916,6,6,{
}
OnTouch:
if ((lost_boy == 13) && (ra_tem_q == 20)) {
mes "[Arunafeltz Follower]";
mes "Excuse me, but";
mes "are you "+strcharinfo(0)+"?";
next;
select("Yes.");
mes "[Arunafeltz Follower]";
mes "High Priest Zhed";
mes "would like to see";
mes "you right away, "+strcharinfo(0)+".";
next;
select("May ask why?");
mes "[Arunafeltz Follower]";
mes "Well, I actually have no";
mes "idea. I'm only supposed to";
mes "inform you that he's looking";
mes "for you. Please visit High";
mes "Priest Zhed in the second";
mes "right room of the temple.";
close;
}
if ((lost_boy == 13) && (ra_tem_q == 20)) goto L_Mes;
end;
}
// End of Donation Lottery/High Priest quest