  		OperatingSystem_t getOperatingSystem() const {return operatingSystem;}
  		void setOperatingSystem(OperatingSystem_t os) {operatingSystem = os;}
  		uint32_t getClientVersion() const {return clientVersion;}
-@@ -400,7 +401,7 @@ class Player : public Creature, public Cylinder
- 			onSell = saleCallback;
- 			return shopOwner;
- 		}
--		
-+
- 		//Quest functions
- 		void onUpdateQuest();
- 
 @@ -580,6 +581,9 @@ class Player : public Creature, public Cylinder
  		void sendSpellGroupCooldown(SpellGroup_t groupId, uint32_t cooldown)
  			{if(client) client->sendSpellGroupCooldown(groupId, cooldown);}

 			case 0x64: // move with steps
 				parseAutoWalk(msg);
 				break;
@@ -2411,7 +2424,7 @@ void ProtocolGame::sendMarketDetail(uint16_t itemId)
 	}
 	else
 		msg->put<char>(0x00);
-	
+
 	if((statistics = IOMarket::getInstance()->getSaleStatistics(itemId)))
 	{
 		msg->put<char>(0x01);
@@ -3705,3 +3718,28 @@ void ProtocolGame::AddShopItem(NetworkMessage_ptr msg, const ShopInfo& item)
 	msg->put<uint32_t>(item.buyPrice);
 	msg->put<uint32_t>(item.sellPrice);

+
+	<event type="extendedopcode" name="ExtendedOpcode" event="script" value="extendedopcode.lua"/>
 </creaturescripts>
diff --git a/data/creaturescripts/scripts/extendedopcode.lua b/data/creaturescripts/scripts/extendedopcode.lua
new file mode 100644
index 0000000..c488a4d
--- /dev/null
+++ b/data/creaturescripts/scripts/extendedopcode.lua
@@ -0,0 +1,13 @@
+OPCODE_LANGUAGE = 1
+
+function onExtendedOpcode(cid, opcode, buffer)
+	if opcode == OPCODE_LANGUAGE then
+	  -- otclient language
+	  if buffer == 'en' or buffer == 'pt' then
+		  -- example, setting player language, because otclient is multi-language...
+		  --doCreatureSetStorage(cid, CREATURE_STORAGE_LANGUAGE, buffer)
+	  end
+	else
+	  -- other opcodes can be ignored, and the server will just work fine...
+	end
+end
diff --git a/game.cpp b/game.cpp
index 2e4dc2c..7508591 100644
--- a/game.cpp
