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