- Joined
- Jun 30, 2008
- Messages
- 580
JASS:
library CounterSys initializer Init
globals
private hashtable Data = InitHashtable()
private integer array UnitID[18]
endglobals
struct PlayerData
integer array Kills[18]
integer array Deaths[18]
integer array KillsUnit[342]
integer array DeathsUnit[342]
endstruct
private function Setup takes nothing returns nothing
local integer i = 0
local PlayerData pdat
set UnitID[1] = 'hfoo' //Rifleman
set UnitID[2] = 'hkni' //Marine
set UnitID[3] = 'hrif' //Major
set UnitID[4] = 'h002' //Marine Major
set UnitID[5] = 'h008' //Priest
set UnitID[6] = 'h00d' //Medic
set UnitID[7] = 'h007' //sniper
set UnitID[8] = 'h009' //Tank A
set UnitID[9] = 'h00b' //Tank B
set UnitID[10] = 'h00c' //Tank C
set UnitID[11] = 'h00n' //Ship A
set UnitID[12] = 'h00p' //Ship B
set UnitID[13] = 'h00q' //Ship C
set UnitID[14] = 'h00o' //Ship S
set UnitID[15] = 'h00m' // Ship SS
set UnitID[16] = 'hbar' //City
set UnitID[17] = 'h00k' //Port
set UnitID[18] = 'h00r' //Transport
loop
set pdat = PlayerData.create()
call SaveInteger(Data, i, 1, pdat)
set i = i+1
exitwhen i > 12
endloop
set i = 0
endfunction
function GetCount takes integer IDindex, integer IPlayer, integer KD returns integer i
local PlayerData pdat = LoadInteger(Data, IPlayer, 1)
local integer i = 0
local integer ii = KD
if ii == 1 then
set i = pdat.Kills[IDindex]
elseif ii == 2 then
set i = pdat.Deaths[IDindex]
endif
return i
endfunction
function GetUnitCount takes integer KillIndex, integer IPlayer, integer DeathIndex, integer KD returns integer i
local PlayerData pdat = LoadInteger(Data, IPlayer, 1)
local integer i = 0
if KD == 1 then
set i = pdat.KillsUnit[KillIndex+(18*DeathIndex)]
elseif KD == 2 then
set i = pdat.DeathsUnit[KillIndex+(18*DeathIndex)]
endif
return i
endfunction
private function Count takes nothing returns nothing
local unit u = GetTriggerUnit()
local unit uu = GetKillingUnit()
local player p = GetOwningPlayer(u)
local player pp = GetOwningPlayer(uu)
local PlayerData pdat = LoadInteger(Data, GetPlayerId(p), 1)
local PlayerData pdatu = LoadInteger(Data, GetPlayerId(pp), 1)
local integer i = 0
local integer DieTrack = 0
local integer KillTrack = 0
loop
if GetUnitTypeId(GetTriggerUnit()) == UnitID[i] then
set pdat.Deaths[i] = pdat.Deaths[i]+1
set DieTrack = i
endif
if GetUnitTypeId(GetKillingUnit()) == UnitID[i] then
set pdatu.Kills[i] = pdatu.Kills[i]+1
set KillTrack = i
endif
if GetUnitTypeId(GetTriggerUnit()) == UnitID[i] or GetUnitTypeId(GetKillingUnit()) == UnitID[i] then
set pdatu.KillsUnit[KillTrack+(18*DieTrack)] = pdatu.KillsUnit[KillTrack+(18*DieTrack)]+1
set pdat.DeathsUnit[KillTrack+(18*DieTrack)] = pdat.DeathsUnit[KillTrack+(18*DieTrack)]+1
endif
set i = i+1
exitwhen i > 18
endloop
set i = 0
endfunction
private function Display takes nothing returns nothing
local integer i = 1
local integer kill = 0
local integer death = 0
loop
set kill = GetCount(i, GetPlayerId(GetTriggerPlayer()), 1)
set death = GetCount(i, GetPlayerId(GetTriggerPlayer()), 2)
call DisplayTextToPlayer(GetTriggerPlayer(), 0, 0, I2S(i) +" "+ I2S(kill) + " / " + I2S(death))
set i = i+1
exitwhen i > 4
endloop
endfunction
private function Init takes nothing returns nothing
local trigger t = CreateTrigger()
local integer i = 0
call TriggerRegisterAnyUnitEventBJ(t, EVENT_PLAYER_UNIT_DEATH)
call TriggerAddAction(t, function Count)
set t = CreateTrigger()
call TriggerAddAction(t, function Setup)
set t = CreateTrigger()
loop
call TriggerRegisterPlayerEventEndCinematic( t, Player(i) )
set i = i+1
exitwhen i > 12
endloop
set i = 0
call TriggerAddAction(t, function Display)
endfunction
endlibrary