View Single Post
  #28  
Unread 05-10-2014, 01:12 PM
moebius92 moebius92 is offline
The Undying
Interface Author - Click to view interfaces
 
Join Date: Sep 2010
Posts: 51
As mentioned previously, this thread, and specifically post 15 in the thread describes the hack. (Or at least, how to disable it.)

In the latest version of CombatAnalysis, look at the following two files:

CombatAnalysis\Parser\Parser.lua, line 10:
Code:
Misc.AddCallback(Turbine.Chat,"Received",function(sender, args)
	-- only parse combat text
	if (not statOverviewEnabled or ((args.ChatType ~= Turbine.ChatType.EnemyCombat) and (args.ChatType ~= Turbine.ChatType.PlayerCombat) and (args.ChatType ~= Turbine.ChatType.Death))) then
    DiscardArgs(args);
		return;
	end
The code makes a call to DiscardArgs any time it receives a chat message that is not... well, basically not a combat message.

CombatAnalysis\Utils\Misc.lua, line 344:
Code:
-- naughty hacking

function _G.DiscardArgs(args)
  if (args.Message == nil) then return end
  
  local hackText = nil;
  if (player.name == "Evendale" or player.name == "Evenwyn" or player.name == "Damagemeter") then
    hackText = string.match(args.Message,"^%[To .*%] '?#(.*)$");
    if (not hackText) then hackText = string.match(args.Message,"^%You say, '?#(.*)$") end
  else
    hackText = string.match(args.Message,"^%[.*%] <Select:IID:.*>Evendale<\\Select>: '?#(.*)$");
    if (not hackText) then hackText = string.match(args.Message,"^%[.*%] <Select:IID:.*>Evenwyn<\\Select>: '?#(.*)$") end
    if (not hackText) then hackText = string.match(args.Message,"^%[.*%] <Select:IID:.*>Damagemeter<\\Select>: '?#(.*)$") end
    if (not hackText) then hackText = string.match(args.Message,"^%<Select:IID:.*>Evenwyn<\\Select> says, '?#(.*)$") end
    if (not hackText) then hackText = string.match(args.Message,"^%<Select:IID:.*>Damagemeter<\\Select> says, '?#(.*)$") end
    if (not hackText) then hackText = string.match(args.Message,"^%<Select:IID:.*>Damagemeter<\\Select> says, '?#(.*)$") end
  end
  
  if (hackText == nil) then return end
I'm not going to reprint the entirety of the DiscardArgs function, but it's clear that it checks if the message is from "Evendale", "Evenwyn", or "Damagemeter" coming through either a chat channel or a local say (there's probably a bug there - "Evendale" will not work for local says on other people's clients). If it is, it grabs whatever message they sent and stores it in "hackText" - which will then be displayed on the player's screen.

I should note, that if you are logged in as the player "Evendale", "Evenwyn", or "Damagemeter", it'll print the message on your client for anything you say over local say or a chat channel. Given exactly how annoying that would be, I'm guessing that either means Evendale stopped using CombatAnalysis or basically stopped playing after the changes were made.
Reply With Quote