//===== 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;
}