You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
149 lines
4.5 KiB
Plaintext
149 lines
4.5 KiB
Plaintext
4 months ago
|
//===== rAthena Script =======================================
|
||
|
//= Sample: Localized NPC
|
||
|
//===== By: ==================================================
|
||
|
//= rAthena Dev Team
|
||
|
//===== Last Updated: ========================================
|
||
|
//= 20140208
|
||
|
//===== 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(int langid)
|
||
|
//= - sets the player's language
|
||
|
//= int getlang(void)
|
||
|
//= - returns the player's language
|
||
|
//= void setmes2(string name,int langid,string text)
|
||
|
//= - sets the localized text for name
|
||
|
//= string getmes2(string name,int langid)
|
||
|
//= - returns the localized text of name
|
||
|
//= void mes2(string name)
|
||
|
//= - displays the localized text of name
|
||
|
//=
|
||
|
//===== Additional Comments: =================================
|
||
|
//= To use this globally, just put the functions in Global_Functions.txt
|
||
|
//============================================================
|
||
|
|
||
|
//////////////////////////////////////////////////////////////
|
||
|
/// Sets the language of the player account.
|
||
|
/// @param langid Languange identifier (0 for default)
|
||
|
function script setlang {
|
||
|
##_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 {
|
||
|
.@mes2_name$ = getarg(0);
|
||
|
.@mes2_langid = getarg(1);
|
||
|
.@mes2_text$ = getarg(2);
|
||
|
.@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 {
|
||
|
.@mes2_name$ = getarg(0);
|
||
|
.@mes2_langid = getarg(1);
|
||
|
.@mes2_var$ = "$@__"+ .@mes2_name$ +"_"+ .@mes2_langid +"$";
|
||
|
.@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 {
|
||
|
.@mes2_index$ = getarg(0);
|
||
|
|
||
|
if( getstrlen(.@mes2_index$) == 0 )
|
||
|
return; // invalid index
|
||
|
|
||
|
// print localized text
|
||
|
.@mes2_text$ = callfunc("getmes2",.@mes2_index$,##_langid_);
|
||
|
if( getstrlen(.@mes2_text$) == 0 ) {
|
||
|
if( ##_langid_ != 0 ) {
|
||
|
// revert to default language
|
||
|
.@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,155,183,4 script LocalizedNPC 705,{
|
||
|
// Get text for specific languages
|
||
|
.@menu1$ = callfunc("getmes2","LNPC_lang",0);
|
||
|
.@menu2$ = callfunc("getmes2","LNPC_lang",1);
|
||
|
do {
|
||
|
// get text that fallbacks to language 0
|
||
|
callfunc "mes2", "LNPC_name";
|
||
|
// localized mes
|
||
|
callfunc "mes2", "LNPC_lang";
|
||
|
callfunc "mes2", "LNPC_text";
|
||
|
next;
|
||
|
|
||
|
switch(select(.@menu1$,.@menu2$,"Cancel"))
|
||
|
{
|
||
|
case 1:
|
||
|
case 2:
|
||
|
// Set player language
|
||
|
callfunc "setlang",@menu-1;
|
||
|
break;
|
||
|
}
|
||
|
} while( @menu != 3 );
|
||
|
close;
|
||
|
end;
|
||
|
|
||
|
OnInterIfInitOnce:
|
||
|
// Load the localized text.
|
||
|
// This can be anywhere, as long as it's executed before the coresponding getmes2/mes2 calls
|
||
|
// 0 - English (default)
|
||
|
// 1 - Portuguese
|
||
|
callfunc "setmes2", "LNPC_name", 0, "[LocalizedNPC]";
|
||
|
callfunc "setmes2", "LNPC_lang", 0, "EN";
|
||
|
callfunc "setmes2", "LNPC_lang", 1, "PT";
|
||
|
callfunc "setmes2", "LNPC_text", 0, "Something in english";
|
||
|
callfunc "setmes2", "LNPC_text", 1, "Algo em português";
|
||
|
end;
|
||
|
}
|