Przeglądaj źródła

Fix for issue #476. Lua forced language change on learning new languages.

Devn00b 1 rok temu
rodzic
commit
6dd2e6680a

+ 2 - 2
EQ2/source/WorldServer/LuaFunctions.cpp

@@ -10102,7 +10102,7 @@ int EQ2Emu_lua_AddLanguage(lua_State* state) {
 	if (language)
 	{
 		((Player*)player)->AddLanguage(language->GetID(), language->GetName(), true);
-		((Player*)player)->GetClient()->SendLanguagesUpdate(language->GetID());
+		((Player*)player)->GetClient()->SendLanguagesUpdate(language->GetID(), 0);
 	}
 
 	return 0;
@@ -13468,4 +13468,4 @@ int EQ2Emu_lua_IsCastOnAggroComplete(lua_State* state) {
 	lua_interface->SetBooleanValue(state, result);
 
 	return 1;
-}
+}

+ 7 - 3
EQ2/source/WorldServer/client.cpp

@@ -9964,12 +9964,16 @@ void Client::SendUpdateTitles(sint32 prefix, sint32 suffix) {
 	current_zone->SendUpdateTitles(this, suffix_title, prefix_title);
 }
 
-void Client::SendLanguagesUpdate(int32 id) {
+void Client::SendLanguagesUpdate(int32 id, bool setlang) {
 	list<Language*>* languages = player->GetPlayerLanguages()->GetAllLanguages();
 	list<Language*>::iterator itr;
 	Language* language;
 	int32 i = 0;
-	GetPlayer()->SetCurrentLanguage(id);
+
+	if(setlang==1){
+	        GetPlayer()->SetCurrentLanguage(id);
+	}
+
 	PacketStruct* packet = configReader.getStruct("WS_Languages", GetVersion());
 	if (packet) {
 		packet->setArrayLengthByName("num_languages", languages->size());
@@ -11434,4 +11438,4 @@ void Client::HandleDialogSelectMsg(int32 conversation_id, int32 response_index)
 		else
 			CloseDialog(conversation_id);
 	}				
-}
+}

+ 1 - 1
EQ2/source/WorldServer/client.h

@@ -390,7 +390,7 @@ public:
 	void	SendRecipeList();
 	void	SendTitleUpdate();
 	void	SendUpdateTitles(sint32 prefix, sint32 suffix);
-	void	SendLanguagesUpdate(int32 id);
+	void	SendLanguagesUpdate(int32 id, bool setlang = 1);
 	void	SendAchievementsList();
 	void	SendAchievementUpdate(bool first_login = false);