summaryrefslogtreecommitdiff
path: root/doc/sample/localized_npc.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/sample/localized_npc.txt')
-rw-r--r--doc/sample/localized_npc.txt151
1 files changed, 151 insertions, 0 deletions
diff --git a/doc/sample/localized_npc.txt b/doc/sample/localized_npc.txt
new file mode 100644
index 000000000..3a721d108
--- /dev/null
+++ b/doc/sample/localized_npc.txt
@@ -0,0 +1,151 @@
+//===== eAthena Script =======================================
+//= Sample localized NPC
+//===== By: ==================================================
+//= eAthena Dev Team
+//===== Current Version: =====================================
+//= v1.0
+//===== Compatible With: =====================================
+//= eAthena with setd, getd
+//===== 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 {
+ 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,155,183,4 script LocalizedNPC 705,{
+ // Get text for specific languages
+ set @menu1$, callfunc("getmes2","LNPC_lang",0);
+ set @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;
+} \ No newline at end of file