summaryrefslogtreecommitdiff
path: root/doc/pccommand_list.txt
blob: 5690941a3e5a382f69d512f14882f588cb6f9fa4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
---> 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.

-----------------------------------------------------------------------------