mirror of
				https://github.com/ErikasKontenis/SabrehavenServer.git
				synced 2025-10-30 19:56:22 +01:00 
			
		
		
		
	commit client
This commit is contained in:
		
							
								
								
									
										155
									
								
								SabrehavenOTClient/modules/game_protocol/protocol.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										155
									
								
								SabrehavenOTClient/modules/game_protocol/protocol.lua
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,155 @@ | ||||
| local registredOpcodes = nil | ||||
|  | ||||
| local ServerPackets = { | ||||
| 	DailyRewardCollectionState = 0xDE, | ||||
| 	OpenRewardWall = 0xE2, | ||||
| 	CloseRewardWall = 0xE3, | ||||
| 	DailyRewardBasic = 0xE4, | ||||
| 	DailyRewardHistory = 0xE5, | ||||
| 	RestingAreaState = 0xA9, | ||||
| 	BestiaryData = 0xd5, | ||||
| 	BestiaryOverview = 0xd6, | ||||
| 	BestiaryMonsterData = 0xd7, | ||||
| 	BestiaryCharmsData = 0xd8, | ||||
| 	BestiaryTracker = 0xd9, | ||||
| 	BestiaryTrackerTab = 0xB9   | ||||
| } | ||||
|  | ||||
| -- Server Types | ||||
| local DAILY_REWARD_TYPE_ITEM = 1 | ||||
| local DAILY_REWARD_TYPE_STORAGE = 2 | ||||
| local DAILY_REWARD_TYPE_PREY_REROLL = 3 | ||||
| local DAILY_REWARD_TYPE_XP_BOOST = 4 | ||||
|  | ||||
| -- Client Types | ||||
| local DAILY_REWARD_SYSTEM_SKIP = 1 | ||||
| local DAILY_REWARD_SYSTEM_TYPE_ONE = 1 | ||||
| local DAILY_REWARD_SYSTEM_TYPE_TWO = 2 | ||||
| local DAILY_REWARD_SYSTEM_TYPE_OTHER = 1 | ||||
| local DAILY_REWARD_SYSTEM_TYPE_PREY_REROLL = 2 | ||||
| local DAILY_REWARD_SYSTEM_TYPE_XP_BOOST = 3 | ||||
|  | ||||
| function init() | ||||
|   connect(g_game, { onEnterGame = registerProtocol, | ||||
|                     onPendingGame = registerProtocol, | ||||
|                     onGameEnd = unregisterProtocol }) | ||||
|   if g_game.isOnline() then | ||||
|     registerProtocol() | ||||
|   end | ||||
| end | ||||
|  | ||||
| function terminate() | ||||
|   disconnect(g_game, { onEnterGame = registerProtocol, | ||||
|                     onPendingGame = registerProtocol, | ||||
|                     onGameEnd = unregisterProtocol }) | ||||
|                      | ||||
|   unregisterProtocol() | ||||
| end | ||||
|  | ||||
| function registerProtocol() | ||||
|   local protocolGame = g_game.getProtocolGame() | ||||
| 	if protocolGame then | ||||
| 	local myValue = math.random(1, 2) | ||||
| 	protocolGame:sendExtendedOpcode(227, myValue) | ||||
| 	error("1") | ||||
| 	end | ||||
|  | ||||
|   if registredOpcodes ~= nil or not g_game.getFeature(GameTibia12Protocol) then | ||||
|     return | ||||
|   end | ||||
|    | ||||
|   registredOpcodes = {} | ||||
|  | ||||
|   registerOpcode(ServerPackets.OpenRewardWall, function(protocol, msg) | ||||
|     msg:getU8() | ||||
|     msg:getU32() | ||||
|     msg:getU8() | ||||
|     local taken = msg:getU8() | ||||
|     if taken > 0 then | ||||
|       msg:getString() | ||||
|     end | ||||
|     msg:getU32() | ||||
|     msg:getU16() | ||||
|     msg:getU16() | ||||
|   end) | ||||
|  | ||||
|   registerOpcode(ServerPackets.CloseRewardWall, function(protocol, msg) | ||||
|  | ||||
|   end) | ||||
|  | ||||
|   registerOpcode(ServerPackets.DailyRewardBasic, function(protocol, msg) | ||||
|     local count = msg:getU8() | ||||
|     for i = 1, count do | ||||
|       readDailyReward(msg) | ||||
|       readDailyReward(msg) | ||||
|     end | ||||
|     local maxBonus = msg:getU8() | ||||
|     for i = 1, maxBonus do | ||||
|       msg:getString() | ||||
|       msg:getU8() | ||||
|     end | ||||
|     msg:getU8() | ||||
|   end) | ||||
|  | ||||
|   registerOpcode(ServerPackets.DailyRewardHistory, function(protocol, msg) | ||||
|     local count = msg:getU8() | ||||
|     for i=1,count do | ||||
|       msg:getU32() | ||||
|       msg:getU8() | ||||
|       msg:getString() | ||||
|       msg:getU16() | ||||
|     end | ||||
|   end) | ||||
|    | ||||
|   registerOpcode(ServerPackets.BestiaryTrackerTab, function(protocol, msg) | ||||
|     local count = msg:getU8() | ||||
|     for i = 1, count do | ||||
|       msg:getU16() | ||||
|       msg:getU32() | ||||
|       msg:getU16() | ||||
|       msg:getU16() | ||||
|       msg:getU16() | ||||
|       msg:getU8() | ||||
|     end | ||||
|   end) | ||||
| end | ||||
|  | ||||
| function unregisterProtocol() | ||||
|   if registredOpcodes == nil then | ||||
|     return | ||||
|   end | ||||
|   for _, opcode in ipairs(registredOpcodes) do | ||||
|     ProtocolGame.unregisterOpcode(opcode) | ||||
|   end | ||||
|   registredOpcodes = nil | ||||
| end | ||||
|  | ||||
| function registerOpcode(code, func) | ||||
|   if registredOpcodes[code] ~= nil then | ||||
|     error("Duplicated registed opcode: " .. code) | ||||
|   end | ||||
|   registredOpcodes[code] = func | ||||
|   ProtocolGame.registerOpcode(code, func) | ||||
| end | ||||
|  | ||||
| function readDailyReward(msg) | ||||
| 	local systemType = msg:getU8() | ||||
| 	if (systemType == 1) then | ||||
|     msg:getU8() | ||||
|     local count = msg:getU8() | ||||
|     for i = 1, count do | ||||
|       msg:getU16() | ||||
|       msg:getString()				 | ||||
|       msg:getU32() | ||||
|     end | ||||
| 	elseif (systemType == 2) then | ||||
|     msg:getU8() | ||||
|     local type = msg:getU8() | ||||
|      | ||||
| 		if (type == DAILY_REWARD_SYSTEM_TYPE_PREY_REROLL) then | ||||
|       msg:getU8() | ||||
| 		elseif (type == DAILY_REWARD_SYSTEM_TYPE_XP_BOOST) then | ||||
|       msg:getU16() | ||||
| 		end | ||||
| 	end | ||||
| end | ||||
							
								
								
									
										11
									
								
								SabrehavenOTClient/modules/game_protocol/protocol.otmod
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								SabrehavenOTClient/modules/game_protocol/protocol.otmod
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| Module | ||||
|   name: game_protocol | ||||
|   description: Game protocol | ||||
|   author: otclientv8 | ||||
|   website: http://otclient.ovh | ||||
|   scripts: [ protocol ] | ||||
|   sandboxed: true | ||||
|   autoload: true | ||||
|   autoload-priority: 500 | ||||
|   @onLoad: init() | ||||
|   @onUnload: terminate() | ||||
		Reference in New Issue
	
	Block a user
	 ErikasKontenis
					ErikasKontenis