<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="14">
  <CheatEntries/>
  <UserdefinedSymbols/>
  <LuaScript>-- ========================== VARIABLES ====================
title="LightBringer: Saviors of Raia"
credits="                          created by -a noob-                    03/02/2014"
blue="0x00F21200"
red1="0x000000FF"
red2="0x00000099"
white="0x00FFFFFF"
information1="Select browser. Make sure the game is loaded."

function setHack_Information()
  t =
  {


{'Rainbow Set Bonus',
[[LuaCall(Aobswap("d0 30 24 00 d7 20 80 ?? 63 05 20 80 ?? 63 06 20 80 ?? 63 07 24 00 63 04 10 15","d0 30 24 05 d7 20 80 ?? 63 05 20 80 ?? 63 06 20 80 ?? 63 07 24 00 63 04 10 15"))]],
[[All 8 Full Prism Set Bonus applied]]},

{'100% drop/Rage/Magnet',
[[
Aobscan(_addMax,0f 68 00 00 60 ?? ?? ?? 46 ?? ?? 00 60)
_addMax + 01:
db 00
Aobscan(_rduration,d0 30 d0 d0 66 ?? ?? ?? 24 01 d1 a0 a2 68 ?? ?? ?? 47)
_rduration + 09:
db 32
Aobscan(_magnet,02 75 d6 d2 d0 66 ?? ?? ?? 0d 06 00 00 d1 d0 4f)
_magnet + 0a:
db 00
Aobscan(_drop,d1 ae 2a 12 0a 00 00 29 5d ?? 62 04 46 ?? 01 d3 b0 12 09 00 00 5d ?? 62 04 46 ?? 01 73 d7 32 07 06 11 ca ff ff 08 07 08 06 d0 )
_drop :
db          73 d7
Aobscan(_loot,d0 66 ?? ?? ?? d3 66 ?? ?? ?? 80 ?? ?? 2a 63 05 12 08 00 00 d0 62 05 4f ?? ?? ?? 01)
alloc(mcode,256)
CreateThread(mcode)
mcode:
mov   esi,_loot
mov   edi,_drop
add   edi,02
mov   ecx,1c
rep   movsb
mov   edi,_drop
add   edi,29
mov   al,47
mov   [edi],al
ret
dealloc(mcode)
]],
[[100% drop : enemy drop all possible loot on kill.
Paragon Rage: Rage refill with one attack,
	and Duration extented
Loot Magnet : auto collect loot
]]}


}
end

-- ========================== MAIN GUI ====================
MainGUI     = {}
MainGUI[1]  = createForm(false)
MainGUI[2]  = createPanel(MainGUI[1])
MainGUI[4]  = createLabel(MainGUI[2])
MainGUI[5]  = createGroupBox(MainGUI[2])
MainGUI[6]  = createLabel(MainGUI[5])
MainGUI[7]  = createLabel(MainGUI[5])
MainGUI[8]  = createLabel(MainGUI[2])
MainGUI[9]  = createLabel(MainGUI[5])
MainGUI[10] = createComboBox(MainGUI[5])
MainGUI[11]  = createGroupBox(MainGUI[2])
MainGUI[12] = createButton(MainGUI[5])
MainGUI[13] = createLabel(MainGUI[2])
MainGUI[14]  = createLabel(MainGUI[11])
MainGUI[15] = createListBox(MainGUI[11])
MainGUI[16] = createButton(MainGUI[11])
MainGUI[17] = createButton(MainGUI[11])
MainGUI[18]  = createLabel(MainGUI[11])
MainGUI[19]  = createLabel(MainGUI[11])
-- =================== FONT PROPERTIES ================
setProperty(MainGUI[1] , "color", red2)
setProperty(MainGUI[1] , "ShowInTaskBar", 'stAlways')
setProperty(MainGUI[1] , "Position", "poScreenCenter")
setProperty(MainGUI[1] , "BorderIcons", "[biSystemMenu]")
setProperty(MainGUI[1] , "BiDiMode", "bdLeftToRight")
setProperty(MainGUI[2] , "BiDiMode", "bdLeftToRight")
setProperty(MainGUI[2] , "BiDiMode", "bdLeftToRight")
setProperty(MainGUI[10] , "ReadOnly", "True")
local FontHeight = getProperty(MainGUI[4] , "Font")
setProperty(FontHeight , "Style", "[fsBold, fsitalic]")
setProperty(FontHeight , "Height", "26")
setProperty(FontHeight , "Color", white)
local FontHeight = getProperty(MainGUI[5] , "Font")
setProperty(FontHeight , "Height", "18")
local FontHeight = getProperty(MainGUI[6] , "Font")
setProperty(FontHeight , "Height", "18")
setProperty(FontHeight , "Color", white)
local FontHeight = getProperty(MainGUI[8] , "Font")
setProperty(FontHeight , "Style", "[fsBold, fsitalic]")
setProperty(FontHeight , "Height", "26")
setProperty(FontHeight , "Color", white)
local FontHeight = getProperty(MainGUI[9] , "Font")
setProperty(FontHeight , "Height", "16")
setProperty(FontHeight , "Color", white)
setProperty(FontHeight , "Style", "[fsBold]")
local FontHeight = getProperty(MainGUI[10] , "Font")
setProperty(FontHeight , "Height", "18")
local FontHeight = getProperty(MainGUI[12] , "Font")
setProperty(FontHeight , "Height", "13")
local FontHeight = getProperty(MainGUI[13] , "Font")
setProperty(FontHeight , "Style", "[fsBold, fsitalic]")
setProperty(FontHeight , "Height", "16")
setProperty(FontHeight , "Color", white)
setProperty(MainGUI[13], "Cursor", "-21")
local FontHeight = getProperty(MainGUI[14] , "Font")
setProperty(FontHeight , "Height", "18")
setProperty(FontHeight , "Color", white)
local FontHeight = getProperty(MainGUI[15] , "Font")
setProperty(FontHeight , "Height", "18")
local FontHeight = getProperty(MainGUI[18] , "Font")
setProperty(FontHeight , "Style", "[fsBold]")
setProperty(FontHeight , "Height", "18")
setProperty(FontHeight , "Color", white)
local FontHeight = getProperty(MainGUI[19] , "Font")
setProperty(FontHeight , "Height", "18")
setProperty(FontHeight , "Color", white)
  -- =================== SIZE + POS ================
control_setSize(MainGUI[1], 425, 482)
x,y = control_getSize(MainGUI[1])
control_setSize(MainGUI[2], x,y)
control_setSize(MainGUI[5], 404, 129)
control_setSize(MainGUI[10], 255, 21)
control_setSize(MainGUI[11], 404, 249)
control_setSize(MainGUI[12], 107, 28)
control_setSize(MainGUI[15], 255, 76)
control_setSize(MainGUI[16], 107, 30)
control_setSize(MainGUI[17], 107, 30)
control_setPosition(MainGUI[4], 15, 10)
control_setPosition(MainGUI[5], 10, 35)
control_setPosition(MainGUI[6], 10, 5)
control_setPosition(MainGUI[8], 15, 175)
control_setPosition(MainGUI[9], 10, 75)
control_setPosition(MainGUI[10], 10, 35)
control_setPosition(MainGUI[11], 10, 205)
control_setPosition(MainGUI[12], 280, 35)
control_setPosition(MainGUI[13], 12, 460)
control_setPosition(MainGUI[14], 10, 5)
control_setPosition(MainGUI[15], 10, 35)
control_setPosition(MainGUI[16], 280, 35)
control_setPosition(MainGUI[17], 280, 82)
control_setPosition(MainGUI[18], 10, 125)
control_setPosition(MainGUI[19], 11, 150)
-- =================== Text ================
control_setCaption(MainGUI[1], title..", trainer")
control_setCaption(MainGUI[4], title..", trainer")
control_setCaption(MainGUI[6], information1)
control_setCaption(MainGUI[8],  "Available hacks for this game")
control_setCaption(MainGUI[9], "Attached to PID: waiting...")
control_setCaption(MainGUI[12],"Select")
control_setCaption(MainGUI[13], " KongHack.com " ..credits)
control_setCaption(MainGUI[14],  "Enable before starting a new game.")
control_setCaption(MainGUI[16], 'Enable selected')
control_setCaption(MainGUI[17], 'Enable all')
control_setCaption(MainGUI[18],"Description:")
control_setCaption(MainGUI[19],"no hack selected")
control_setEnabled(MainGUI[16], false)
control_setEnabled(MainGUI[17], false)
-- =================== PROGRSSBAR  ================
MainGUI[20] = createProgressBar(MainGUI[11])
control_setPosition(MainGUI[20], 11, 150)
control_setSize(MainGUI[20], 255, 14)
control_setVisible(MainGUI[20], false)
MainGUI[21]  = createLabel(MainGUI[11])
local FontHeight = getProperty(MainGUI[21] , "Font")
setProperty(FontHeight , "Style", "[fsBold]")
setProperty(FontHeight , "Height", "18")
setProperty(FontHeight , "Color", white)
control_setPosition(MainGUI[21], 10, 125)
control_setVisible(MainGUI[21], false)
MainGUI[22]  = createLabel(MainGUI[11])
local FontHeight = getProperty(MainGUI[22] , "Font")
setProperty(FontHeight , "Style", "[fsBold]")
setProperty(FontHeight , "Height", "18")
control_setPosition(MainGUI[22], 10, 175)
control_setVisible(MainGUI[22], false)
-- ========================== COMBOBOX CONTENT ====================
setHack_Information()
al = combobox_getItems(MainGUI[10])
strings_clear(al)
strings_add(al, 'Browser list...')
strings_add(al, 'Firefox')
strings_add(al, 'Google Chrome')
strings_add(al, 'Internex Explorer')
setProperty(MainGUI[10] , "ItemIndex", "0")
all_enabled = 0
success = 1
TeL = listbox_getItems(MainGUI[15])
TempSave = {}
strings_clear(TeL)
check = 0
i = 0
repeat
if t[i+1]==nil then
  check = 1
else
  i = i+1
  strings_add(TeL, t[i][1])
  TempSave[i] = {}
  TempSave[i][1] = t[i][1]
  TempSave[i][2] = t[i][2]
  TempSave[i][3] = t[i][3]
  TempSave[i][4] = 2
  TempSave[i][5] = 0
  check = 0
end
until check == 1

function checkProcessMajor()
  reinitializeSymbolhandler()
  if getAddress("pepflashplayer.dll")~=0 or getAddress("AdobeCPGetAPI") ~=0 then
    return true
  end
  return false
end

errorOnLookupFailure(false)
alreadycheckedPIDS={}
openNextProcTimer = createTimer(nil,false)
timer_setInterval(openNextProcTimer, 1000)
timer_onTimer(openNextProcTimer,
function(sender)
  local tempPIDtable = getPids()
  if #tempPIDtable == 0 then return end
  timer_setEnabled(sender,false)
  openProcess(tempPIDtable[1])
end)

function getPids()
  local SL=createStringlist()
        getProcesslist(SL)
  local tempPIDtable={}
  for i=0,strings_getCount(SL)-1 do
    local entry = strings_getString(SL,i)
    local processname = entry:sub(10,255)
    local PID = tonumber('0x'..entry:sub(1,8))
    if processname == "chrome.exe" then
      if alreadycheckedPIDS[PID]~=true then
        table.insert(tempPIDtable,PID)
      end
    end
  end
  object_destroy(SL)
  return tempPIDtable
end

function checkProcess(sender)
  timer_setEnabled(sender,false)
  alreadycheckedPIDS[getOpenedProcessID()]=true
  if checkProcessMajor() then
    timer_setEnabled(openNextProcTimer,false)
    alreadycheckedPIDS={}
    enableHacks()
  else
    timer_setEnabled(openNextProcTimer,true)
  end
end

checkProcessTimer = createTimer(nil,false)
timer_setInterval(checkProcessTimer, 100)
timer_onTimer(checkProcessTimer, checkProcess)

function onOpenProcess()
   if success == 1 then return end
   timer_setEnabled(checkProcessTimer,true)
end

function BrowserScan()
	  AttachItems = combobox_getItems(MainGUI[10])
	  AttachIndex = combobox_getItemIndex(MainGUI[10])
	  setProperty(getProperty(MainGUI[9] , "Font"), "Color", white)
	  control_setCaption(MainGUI[9], "Attached to PID: " .. "Scanning Process...")
	  if AttachIndex == -1 then return end
	  if AttachIndex == 0 then
		control_setCaption(MainGUI[9], "Attached to PID: " .. "no Browser selected.")
        control_setEnabled(MainGUI[16], false)
        control_setEnabled(MainGUI[17], false)
		return
	 end
	  local check = strings_getString(AttachItems,AttachIndex)
	  if check == 'Google Chrome' then
		success = 0
		local test = openProcess("chrome.exe")
		if test == nil then
			setProperty(getProperty(MainGUI[9] , "Font") , "Color", red1)
			control_setCaption(MainGUI[9], "Attached to PID: " .. "Chrome not found.")
			control_setEnabled(MainGUI[16], false)
            control_setEnabled(MainGUI[17], false)
			timer_setEnabled(openNextProcTimer,false)
			return
		end
		strings_add(getAutoAttachList(),"chrome.exe")
		timer_setEnabled(openNextProcTimer,true)
		return
	  end
	  if check == 'Firefox' or check == 'Internet Explorer' then openProcess("FlashPlayerPlugin") end
	  errorOnLookupFailure(false)
	  reinitializeSymbolhandler()
	  err=getAddress("kernel32.dll")==0
	  if err==true then
		setProperty(getProperty(MainGUI[9] , "Font") , "Color", red1)
		control_setCaption(MainGUI[9], "Attached to PID: " .. "Flash player plugin not found")
	  else
		local PID=getOpenedProcessID()
		 setProperty(getProperty(MainGUI[9] , "Font"), "Color", white)
		 control_setCaption(MainGUI[9], "Attached to PID: " .. PID .. " - flash player plugin")
		 control_setEnabled(MainGUI[16], true)
         control_setEnabled(MainGUI[17], true)
	  end
end

function enableHacks()
	setProperty(getProperty(MainGUI[9] , "Font"), "Color", white)
	local PID=getOpenedProcessID()
	local check = strings_getString(AttachItems,AttachIndex)
	if check == 'Firefox' or check == 'Internet Explorer' then
		control_setCaption(MainGUI[9], "Attached to PID: " .. PID .. " - flash player plugin")
	elseif check == 'Google Chrome' then
		control_setCaption(MainGUI[9], "Attached to PID: " .. PID .. " - chrome.exe")
	end
	success = 1
    control_setEnabled(MainGUI[16], true)
    control_setEnabled(MainGUI[17], true)
end


function ExecuteHacks()
    HLS = listbox_getItemIndex(MainGUI[15])
    LIST = listbox_getItems(MainGUI[15])
    if HLS == -1 then return end
    i = HLS+1
    font=getProperty(MainGUI[21], 'Font')
    control_setVisible(MainGUI[18], false)
    control_setVisible(MainGUI[19], false)
    control_setVisible(MainGUI[20], false)
    control_setVisible(MainGUI[21], true)
    if t[i][2]==nil then
         setProperty(font, 'Color', white)
         control_setCaption(MainGUI[21], "You allready enabled this hack !")
         return
    end
    control_setEnabled(MainGUI[16], false)
    control_setEnabled(MainGUI[17], false)
    control_setCaption(MainGUI[21], "Executing hack...")
    control_setVisible(MainGUI[22], true)
    control_setCaption(MainGUI[22], '')
    control_setPosition(MainGUI[22], 10, 155)
    strings_setString(LIST, HLS, t[i][1])
    processMessages()
    if TempSave[i][4] == 2 then
      Asm = autoAssemble(t[i][2])
      font=getProperty(MainGUI[22], 'Font')
      control_setCaption(MainGUI[21], "Executing hack. Finished.")
      if AobSwapCheck~=true then
        TempText = t[i][1]..' - Failed'
        TempSave[i][5] = t[i][1]..' - Failed'
        strings_setString(LIST, HLS, TempText)
        setProperty(font, 'Color', red1)
        control_setCaption(MainGUI[22], 'Failed to enable !\nGame not loaded or game was updated.')
      else
        TempText = t[i][1]..' - Enabled'
        TempSave[i][5] = t[i][1]..' - Enabled'
        strings_setString(LIST, HLS, TempText)
        setProperty(font, 'Color', white)
        control_setCaption(MainGUI[22], 'Hack enabled. Enjoy it !')
        t[i][2] = nil
        TempSave[i][4] = 1
      end
    end
    if TempSave[i][4] == 0 then TempSave[i][4] = 2 end
    control_setEnabled(MainGUI[16], true)
    control_setEnabled(MainGUI[17], true)
end

function ExecuteAllHacks()
     font=getProperty(MainGUI[21], 'Font')
     if all_enabled == 1 then
        control_setVisible(MainGUI[18], false)
        control_setVisible(MainGUI[19], false)
        control_setVisible(MainGUI[20], false)
        control_setVisible(MainGUI[21], true)
        control_setVisible(MainGUI[22], false)
        setProperty(font, 'Color', white)
        control_setCaption(MainGUI[21], "You allready enabled all hacks !")
        return
     end
     lb = listbox_getItems(MainGUI[15])
     LIST = listbox_getItems(MainGUI[15])
     control_setEnabled(MainGUI[16], false)
     control_setEnabled(MainGUI[17], false)
     show_progressbar()
     progressbar_setMax(MainGUI[20], strings_getCount(lb))
     for i = 1, strings_getCount(lb) do
         strings_setString(LIST, i-1, t[i][1])
     end
     processMessages()
	 count = 0
     for i = 1, strings_getCount(lb) do
          control_setCaption(MainGUI[21], "Executing hack "..i.."/"..strings_getCount(lb))
          processMessages()
		  if TempSave[i][4] == 2 then
		        Asm = autoAssemble(t[i][2])
				if AobSwapCheck~=true then
                    TempSave[i][5] = t[i][1]..' - Failed'
                    strings_setString(LIST, i-1, TempSave[i][5])
 				else
	                TempSave[i][5] = t[i][1]..' - Enabled'
                    strings_setString(LIST, i-1, TempSave[i][5])
	                t[i][2] = nil
					TempSave[i][4] = 1
					count = count + 1
				 end
		   else
  				count = count + 1
                 TempSave[i][5] = t[i][1]..' - Enabled'
                 strings_setString(LIST, i-1, TempSave[i][5])
		   end
		if TempSave[i][4] == 0 then TempSave[i][4] = 2 end
        progressbar_setPosition(MainGUI[20], i )
        processMessages()
	end
    control_setEnabled(MainGUI[16], true)
    control_setEnabled(MainGUI[17], true)
    control_setCaption(MainGUI[21], "Executing hack "..strings_getCount(lb).."/"..strings_getCount(lb).. ". Finished.")
    font=getProperty(MainGUI[22], 'Font')
	if count == strings_getCount(lb) then
		setProperty(font, 'Color', white)
        control_setCaption(MainGUI[22], 'All hacks enabled. Enjoy it !')
        all_enabled = 1
	else
		diff = strings_getCount(lb) - count
        if diff == 1 then
           text = "hack"
        else
           text = "hacks"
        end
        setProperty(font, 'Color', red1)
	    control_setCaption(MainGUI[22], 'Failed to enable ' .. diff .. ' ' .. text .. ' !')
	end
end

function show_progressbar()
     control_setPosition(MainGUI[22], 10, 175)
     control_setCaption(MainGUI[22], '')
     control_setVisible(MainGUI[18], false)
     control_setVisible(MainGUI[19], false)
     control_setVisible(MainGUI[20], true)
     control_setVisible(MainGUI[21], true)
     control_setVisible(MainGUI[22], true)
     progressbar_setPosition(MainGUI[20], 0)
end
function hide_progressbar()
     control_setVisible(MainGUI[20], false)
     control_setVisible(MainGUI[21], false)
     control_setVisible(MainGUI[22], false)
     control_setVisible(MainGUI[18], true)
     control_setVisible(MainGUI[19], true)
end


function DEC_HEX(IN)
    local B,K,OUT,I,D=16,"0123456789ABCDEF","",0
     if IN&lt;1 then
    OUT=0
    return OUT
  end
  while IN&gt;0 do
    I=I+1
    IN,D=math.floor(IN/B),math.mod(IN,B)+1
    OUT=string.sub(K,D,D)..OUT
    end
    return OUT
end

function Aobswap(search, change)
     aobs = AOBScan(search, "+W")
     if(aobs == nil) then AobSwapCheck=false else
     j = stringlist_getCount(aobs)
     for i = 1, j do
     address=stringlist_getString(aobs,i-1)
     for i = 1, string.len(change), 3 do
     z = string.sub(change, i, i+2)
     x, y = string.find(z, "%?+")
      if (x == nil) then
     script=[[
     ]]..address.."+"..(DEC_HEX((i-1)/3))..[[:
     db ]]..z..[[
     ]]
     autoAssemble(script)
     end
     end
     end
     object_destroy(aobs);
     aobs=nil
     AobSwapCheck=true
    end
end

function HackDescriptionsChange()
    hide_progressbar()
    HLS = listbox_getItemIndex(MainGUI[15])
    if HLS == -1 then return end
    i = HLS+1
    if t[i][3]~='' and t[i][3]~=nil then
      control_setCaption(MainGUI[19] ,t[i][3])
    else
      control_setCaption(MainGUI[19], "no description available.")
    end
end


function OpenKonghack()
	shellExecute("http://konghack.com/")
end

function CloseTrainer()
  form_hide(MainGUI[1])
  closeCE()
end

-- ========================== ONCLICK EVENTS ====================
control_onClick(MainGUI[12], BrowserScan)
control_onClick(MainGUI[13], OpenKonghack)
control_onClick(MainGUI[16],  ExecuteHacks)
control_onClick(MainGUI[17],ExecuteAllHacks)
setMethodProperty(MainGUI[15], 'OnSelectionChange', HackDescriptionsChange)
form_onClose(MainGUI[1], CloseTrainer)
form_show(MainGUI[1])
</LuaScript>
</CheatTable>
