Protocol 8.40-.42 fixes, closes #272
This commit is contained in:
		
							parent
							
								
									b9b9a32b83
								
							
						
					
					
						commit
						99500c9c91
					
				|  | @ -43,7 +43,7 @@ function init() | ||||||
|   reasonsTextList = ruleViolationWindow:getChildById('reasonList') |   reasonsTextList = ruleViolationWindow:getChildById('reasonList') | ||||||
|   actionsTextList = ruleViolationWindow:getChildById('actionList') |   actionsTextList = ruleViolationWindow:getChildById('actionList') | ||||||
| 
 | 
 | ||||||
|   g_keyboard.bindKeyDown('Ctrl+Y', show) |   g_keyboard.bindKeyDown('Ctrl+Y', function() show() end) | ||||||
| 
 | 
 | ||||||
|   if g_game.isOnline() then |   if g_game.isOnline() then | ||||||
|     loadReasons() |     loadReasons() | ||||||
|  | @ -63,6 +63,7 @@ end | ||||||
| 
 | 
 | ||||||
| function loadReasons() | function loadReasons() | ||||||
|   reasonsTextList:destroyChildren() |   reasonsTextList:destroyChildren() | ||||||
|  |   actionsTextList:destroyChildren() | ||||||
| 
 | 
 | ||||||
|   local actions = g_game.getGMActions() |   local actions = g_game.getGMActions() | ||||||
|   for reason, actionFlags in pairs(actions) do |   for reason, actionFlags in pairs(actions) do | ||||||
|  | @ -100,7 +101,7 @@ function onSelectReason(reasonLabel, focused) | ||||||
|   if reasonLabel.actionFlags and focused then |   if reasonLabel.actionFlags and focused then | ||||||
|     actionsTextList:destroyChildren() |     actionsTextList:destroyChildren() | ||||||
|     for actionBaseFlag = 0, #rvactions do |     for actionBaseFlag = 0, #rvactions do | ||||||
|       actionFlagString = rvactions[actionBaseFlag] |       local actionFlagString = rvactions[actionBaseFlag] | ||||||
|       if bit32.band(reasonLabel.actionFlags, math.pow(2, actionBaseFlag)) > 0 then |       if bit32.band(reasonLabel.actionFlags, math.pow(2, actionBaseFlag)) > 0 then | ||||||
|         local label = g_ui.createWidget('RVListLabel', actionsTextList) |         local label = g_ui.createWidget('RVListLabel', actionsTextList) | ||||||
|         label:setText(actionFlagString) |         label:setText(actionFlagString) | ||||||
|  | @ -111,9 +112,21 @@ function onSelectReason(reasonLabel, focused) | ||||||
| end | end | ||||||
| 
 | 
 | ||||||
| function report() | function report() | ||||||
|  |   local reasonLabel = reasonsTextList:getFocusedChild() | ||||||
|  |   if not reasonLabel then | ||||||
|  |     displayErrorBox(tr("Error"), tr("You must select a reason.")) | ||||||
|  |     return | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   local actionLabel = actionsTextList:getFocusedChild() | ||||||
|  |   if not actionLabel then | ||||||
|  |     displayErrorBox(tr("Error"), tr("You must select an action.")) | ||||||
|  |     return | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|   local target = ruleViolationWindow:getChildById('nameText'):getText() |   local target = ruleViolationWindow:getChildById('nameText'):getText() | ||||||
|   local reason = reasonsTextList:getFocusedChild().reasonId |   local reason = reasonLabel.reasonId | ||||||
|   local action = actionsTextList:getFocusedChild().actionId |   local action = actionLabel.actionId | ||||||
|   local comment = ruleViolationWindow:getChildById('commentText'):getText() |   local comment = ruleViolationWindow:getChildById('commentText'):getText() | ||||||
|   local statement = ruleViolationWindow:getChildById('statementText'):getText() |   local statement = ruleViolationWindow:getChildById('statementText'):getText() | ||||||
|   local statementId = 0 -- TODO: message unique id ? |   local statementId = 0 -- TODO: message unique id ? | ||||||
|  |  | ||||||
|  | @ -1468,16 +1468,13 @@ void Game::setProtocolVersion(int version) | ||||||
|         enableFeature(Otc::GameProtocolChecksum); |         enableFeature(Otc::GameProtocolChecksum); | ||||||
|         enableFeature(Otc::GameChallengeOnLogin); |         enableFeature(Otc::GameChallengeOnLogin); | ||||||
|         enableFeature(Otc::GameAccountNames); |         enableFeature(Otc::GameAccountNames); | ||||||
|  |         enableFeature(Otc::GameDoubleFreeCapacity); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     if(version >= 780 && version <= 854) {          // 780 might not be accurate
 |     if(version >= 780 && version <= 854) {          // 780 might not be accurate
 | ||||||
|         enableFeature(Otc::GameChargeableItems); |         enableFeature(Otc::GameChargeableItems); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     if(version >= 850) { |  | ||||||
|         enableFeature(Otc::GameDoubleFreeCapacity); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     if(version >= 854) { |     if(version >= 854) { | ||||||
|         enableFeature(Otc::GameCreatureEmblems); |         enableFeature(Otc::GameCreatureEmblems); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | @ -57,7 +57,7 @@ void buildMessageModesMap(int version) { | ||||||
|         messageModesMap[Otc::MessageFailure]                 = 20; |         messageModesMap[Otc::MessageFailure]                 = 20; | ||||||
|         messageModesMap[Otc::MessageBlue]                    = 21; |         messageModesMap[Otc::MessageBlue]                    = 21; | ||||||
|         messageModesMap[Otc::MessageRed]                     = 22; |         messageModesMap[Otc::MessageRed]                     = 22; | ||||||
|     } else if(version >= 850) { |     } else if(version >= 840) { | ||||||
|         messageModesMap[Otc::MessageNone]                    = 0; |         messageModesMap[Otc::MessageNone]                    = 0; | ||||||
|         messageModesMap[Otc::MessageSay]                     = 1; |         messageModesMap[Otc::MessageSay]                     = 1; | ||||||
|         messageModesMap[Otc::MessageWhisper]                 = 2; |         messageModesMap[Otc::MessageWhisper]                 = 2; | ||||||
|  |  | ||||||
|  | @ -407,7 +407,9 @@ void ProtocolGame::parseGMActions(const InputMessagePtr& msg) | ||||||
| 
 | 
 | ||||||
|     int numViolationReasons; |     int numViolationReasons; | ||||||
| 
 | 
 | ||||||
|     if(g_game.getProtocolVersion() >= 850) |     if(g_game.getProtocolVersion() >= 840) | ||||||
|  |         numViolationReasons = 23; | ||||||
|  |     else if(g_game.getProtocolVersion() >= 850) | ||||||
|         numViolationReasons = 20; |         numViolationReasons = 20; | ||||||
|     else |     else | ||||||
|         numViolationReasons = 32; |         numViolationReasons = 32; | ||||||
|  | @ -557,7 +559,7 @@ void ProtocolGame::parseTileAddThing(const InputMessagePtr& msg) | ||||||
|     Position pos = getPosition(msg); |     Position pos = getPosition(msg); | ||||||
|     int stackPos = -1; |     int stackPos = -1; | ||||||
| 
 | 
 | ||||||
|     if(g_game.getProtocolVersion() >= 850) |     if(g_game.getProtocolVersion() >= 841) | ||||||
|         stackPos = msg->getU8(); |         stackPos = msg->getU8(); | ||||||
| 
 | 
 | ||||||
|     ThingPtr thing = getThing(msg); |     ThingPtr thing = getThing(msg); | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Sam
						Sam