ソースを参照

- Added year to the dates in the npc changelog
- Added sample localized NPC

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9524 54d463be-8e91-2dee-dedb-b68131a5f0ec

FlavioJS 18 年 前
コミット
f4ce933b8b
2 ファイル変更353 行追加212 行削除
  1. 215 212
      npc/Changelog.txt
  2. 138 0
      npc/sample/localized_npc.txt

ファイルの差分が大きいため隠しています
+ 215 - 212
npc/Changelog.txt


+ 138 - 0
npc/sample/localized_npc.txt

@@ -0,0 +1,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;
+}

この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません