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
|
//===== eAthena Script =======================================
//= Sample localized NPC
//===== By: ==================================================
//= eAthena Dev Team
//===== Current Version: =====================================
//= v1.0
//===== Compatible With: =====================================
//= eAthena with setd, getd and npc variables '.'
//===== Description: =========================================
//= Example of a localized NPC.
//=
//= There are many ways to do it, this is just one option.
//= The player has a global account variable ##_langid_ that
//= identifies the it's language.
//=
//= The default language should always have langid 0.
//= When a message isn't found for the player's langid
//= (strlen = 0), the message from langid 0 is used instead.
//=
//= Each message is identified by a string that must only
//= contain valid variable name characters.
//=
//= void setlang(langid) - sets the player's langid
//= int getlang() - returns the player's langid
//= void setmes2(name,langid,text) - sets the localized text for name
//= string getmes2(name,langid) - returns the localized text of name
//= void mes2(name) - displays the localized text of name
//=
//===== Additional Comments: =================================
//= To use this just copy the functions to Global_Functions.txt
//============================================================
//////////////////////////////////////////////////////////////
/// Sets the language of the player account.
/// @param langid Languange identifier (0 for default)
function script setlang {
set ##_langid_, getarg(0);
return;
}
//////////////////////////////////////////////////////////////
/// Returns the language identifier of the player
function script getlang {
return ##_langid_;
}
//////////////////////////////////////////////////////////////
/// Sets a localized text entry.
/// Does not need a RID attached.
/// @param name Message identifier
/// @param langid Language identifier (0 for default)
/// @param text Text message
function script setmes2 {
set $@mes2_name$, getarg(0);
set $@mes2_langid, getarg(1);
set $@mes2_text$, getarg(2);
set $@mes2_var$, "$@__"+ $@mes2_name$ +"_"+ $@mes2_langid +"$";
//debugmes "setmes2 \""+ $@mes2_var$ +"\", \""+ $@mes2_text$ +"\";";
// set the localized text
setd $@mes2_var$, $@mes2_text$;
return;
}
//////////////////////////////////////////////////////////////
/// Sets a localized text entry.
/// Does not need a RID attached.
/// @param name Message identifier
/// @param langid Language identifier (0 for default)
/// @return Text message
function script getmes2 {
set $@mes2_name$, getarg(0);
set $@mes2_langid, getarg(1);
set $@mes2_var$, "$@__"+ $@mes2_name$ +"_"+ $@mes2_langid +"$";
set $@mes2_text$, getd($@mes2_var$);
//debugmes "getmes2(\""+ $@mes2_var$ +"\")=\""+ $@mes2_text$ +"\"";
return $@mes2_text$;
}
//////////////////////////////////////////////////////////////
/// mes for localized text.
/// index should be a unique string, made up only of characters
/// that are valis as a variable name
/// @param index Message identifier
function script mes2 {
set .@mes2_index$, getarg(0);
if( getstrlen(.@mes2_index$) == 0 )
return; // invalid index
// print localized text
set .@mes2_text$, callfunc("getmes2",.@mes2_index$,##_langid_);
if( getstrlen(.@mes2_text$) == 0 )
{
if( ##_langid_ != 0 )
{// revert to default language
set .@mes2_text$, callfunc("getmes2",.@mes2_index$,0);
if( getstrlen(.@mes2_text$) != 0 )
mes .@mes2_text$; // default text
}
} else
mes .@mes2_text$; // localized text
return;
}
//////////////////////////////////////////////////////////////
/// Sample localized NPC
prontera.gat,155,183,4 script LocalizedNPC 705,{
set .@menu1$, callfunc("getmes2","LNPC_lang",0);
set .@menu2$, callfunc("getmes2","LNPC_lang",1);
do {
callfunc "mes2", "LNPC_name";
callfunc "mes2", "LNPC_lang";
callfunc "mes2", "LNPC_langname";
next;
switch(select(.@menu1$,.@menu2$,"Cancel"))
{
case 1:
case 2:
callfunc "setlang",@menu-1;
break;
}
} while( @menu != 3 );
close;
end;
OnInterIfInitOnce:
callfunc "setmes2", "LNPC_name", 0, "[LocalizedNPC]";
callfunc "setmes2", "LNPC_lang", 0, "EN";
callfunc "setmes2", "LNPC_lang", 1, "PT";
callfunc "setmes2", "LNPC_langname", 0, "English";
callfunc "setmes2", "LNPC_langname", 1, "Portugu�s";
end;
}
|