@name MoneyLogs @inputs [Egp]:wirelink [User]:entity @outputs @persist [O Active]:entity [Logs]:gtable [TempLogs]:table [OID]:string Money MenuState @persist TargetIndex CurrentIndex MaxLogs @trigger if(dupefinished()) { reset() } if(first()) { function string returnTime() { local Time = time() local Date = date(Time) return format("%02d:%02d:%02d",Date["hour",number],Date["min",number],Date["sec",number]) } function number wirelink:egpButton(Idx:number,Ply:entity){ local TL = This:egpPos(Idx) - This:egpSize(Idx) / 2 local BR = This:egpPos(Idx) + This:egpSize(Idx) / 2 local Cur = This:egpCursor(Ply) return inrange(Cur,TL,BR) } function string comma(Amount:number) { local Formatted = toString(Amount) while(1) { local New = Formatted:replaceRE("^(-?%d+)(%d%d%d)", "%1,%2") local Old = Formatted Formatted = New if(New == Old) { break } } return Formatted } O = owner() OID = O:steamID() Logs = gTable("MoneyLogs",2) MaxLogs = 102 if(Logs[OID,table]["Registered",number] == 0) { Logs[OID,table] = table( "Logs" = table(), "StartTime" = returnTime(), "StartMoney" = getMoney(), "CurrentMoney" = getMoney(), "Registered" = 1 ) } function mainMenu() { Egp:egpClear() Egp:egpBox(1,vec2(256,256),vec2(512,512)) Egp:egpColor(1,vec(60,80,130)) Egp:egpMaterial(1,"gui/gradient_down") Egp:egpBox(2,vec2(256,256),vec2(512,512)) Egp:egpColor(2,vec(60,0,120)) Egp:egpMaterial(2,"gui/gradient_up") Egp:egpBox(3,vec2(256,256),vec2(420,420)) Egp:egpColor(3,vec(0,0,0)) Egp:egpAlpha(3,204) Egp:egpText(11,"Tryk 'E' for at starte",vec2(256,256)) Egp:egpColor(11,vec(255,255,255)) Egp:egpAlign(11,1,1) Egp:egpSize(11,30) MenuState = 1 } function moneyMenu() { local SteamID = Active:steamID() Egp:egpClear() Egp:egpBox(1,vec2(256,256),vec2(512,512)) Egp:egpColor(1,vec(60,80,130)) Egp:egpMaterial(1,"gui/gradient_down") Egp:egpBox(2,vec2(256,256),vec2(512,512)) Egp:egpColor(2,vec(60,0,120)) Egp:egpMaterial(2,"gui/gradient_up") Egp:egpBox(3,vec2(256,256),vec2(420,420)) Egp:egpColor(3,vec(0,0,0)) Egp:egpAlpha(3,204) Egp:egpText(4,Active:name(),vec2(256,15)) Egp:egpColor(4,vec(255,255,255)) Egp:egpAlign(4,1,1) Egp:egpBox(10,vec2(166,131),vec2(120,80)) Egp:egpColor(10,vec(0,0,0)) Egp:egpAlpha(10,204) Egp:egpText(11,"Tjent",vec2(166,116)) Egp:egpColor(11,vec(255,255,255)) Egp:egpAlign(11,1,1) Egp:egpText(12,"",vec2(166,146)) Egp:egpColor(12,vec(255,255,255)) Egp:egpAlign(12,1,1) Egp:egpBox(20,vec2(346,131),vec2(120,80)) Egp:egpColor(20,vec(0,0,0)) Egp:egpAlpha(20,204) Egp:egpText(21,"Logs",vec2(346,131)) Egp:egpColor(21,vec(255,255,255)) Egp:egpAlign(21,1,1) Egp:egpBox(30,vec2(166,256),vec2(120,80)) Egp:egpColor(30,vec(0,0,0)) Egp:egpAlpha(30,204) Egp:egpText(31,"Penge start",vec2(166,241)) Egp:egpColor(31,vec(255,255,255)) Egp:egpAlign(31,1,1) Egp:egpText(32,comma(Logs[SteamID,table]["StartMoney",number]),vec2(166,271)) Egp:egpColor(32,vec(255,255,255)) Egp:egpAlign(32,1,1) Egp:egpBox(40,vec2(346,256),vec2(120,80)) Egp:egpColor(40,vec(0,0,0)) Egp:egpAlpha(40,204) Egp:egpText(41,"Tid start",vec2(346,241)) Egp:egpColor(41,vec(255,255,255)) Egp:egpAlign(41,1,1) Egp:egpText(42,Logs[SteamID,table]["StartTime",string],vec2(346,271)) Egp:egpColor(42,vec(255,255,255)) Egp:egpAlign(42,1,1) Egp:egpBox(50,vec2(166,381),vec2(120,80)) Egp:egpColor(50,vec(0,0,0)) Egp:egpAlpha(50,204) Egp:egpText(51,"Penge nu",vec2(166,366)) Egp:egpColor(51,vec(255,255,255)) Egp:egpAlign(51,1,1) Egp:egpText(52,"",vec2(166,396)) Egp:egpColor(52,vec(255,255,255)) Egp:egpAlign(52,1,1) Egp:egpBox(60,vec2(346,381),vec2(120,80)) Egp:egpColor(60,vec(0,0,0)) Egp:egpAlpha(60,204) Egp:egpText(61,"Tid nu",vec2(346,366)) Egp:egpColor(61,vec(255,255,255)) Egp:egpAlign(61,1,1) Egp:egpText(62,"",vec2(346,396)) Egp:egpColor(62,vec(255,255,255)) Egp:egpAlign(62,1,1) MenuState = 2 } function logsMenu() { local SteamID = Active:steamID() Egp:egpClear() Egp:egpBox(1,vec2(256,256),vec2(512,512)) Egp:egpColor(1,vec(60,80,130)) Egp:egpMaterial(1,"gui/gradient_down") Egp:egpBox(2,vec2(256,256),vec2(512,512)) Egp:egpColor(2,vec(60,0,120)) Egp:egpMaterial(2,"gui/gradient_up") Egp:egpBox(3,vec2(256,256),vec2(420,420)) Egp:egpColor(3,vec(0,0,0)) Egp:egpAlpha(3,204) Egp:egpText(4,Active:name(),vec2(256,15)) Egp:egpColor(4,vec(255,255,255)) Egp:egpAlign(4,1,1) MenuState = 3 } mainMenu() timer("update",1000) } if(clk("interval")) { Money = getMoney() local Delta = $Money if(Delta) { if(Delta != Money) { Logs[OID,table]["Logs",table]:unshiftTable(table( "Time" = returnTime(), "Amount" = Delta, "String" = comma(Delta) )) if(Logs[OID,table]["Logs",table]:count() > MaxLogs) { Logs[OID,table]["Logs",table]:popTable() } } } Logs[OID,table]["CurrentMoney",number] = Money } if(clk("update")) { if(MenuState == 2) { local SteamID = Active:steamID() local Start = Logs[SteamID,table]["StartMoney",number] local Current = Logs[SteamID,table]["CurrentMoney",number] Egp:egpSetText(52,comma(Current)) Egp:egpSetText(62,returnTime()) local Difference = Current-Start if(Difference < 0) { Egp:egpColor(12,vec(127,0,0)) }else{ Egp:egpColor(12,vec(0,127,0)) } Egp:egpSetText(12,comma(Difference)) } timer("update",1000) } if(cpuUsage() < 0.000065) { if(~User & User) { local SteamID = User:steamID() if(Logs[SteamID,table]["Registered",number]) { if(MenuState == 1) { Active = User moneyMenu() }elseif(MenuState == 2) { if(Egp:egpButton(20,User)) { local ActiveID = Active:steamID() logsMenu() TempLogs = Logs[ActiveID,table]["Logs",table]:clone() TargetIndex = min(MaxLogs,TempLogs:count()) CurrentIndex = 1 }else { Active = noentity() mainMenu() } }elseif(MenuState == 3) { moneyMenu() } } } if(MenuState == 3) { if(TargetIndex & CurrentIndex <= TargetIndex) { local Log = TempLogs[CurrentIndex,table] if(Log) { if(CurrentIndex > 68) { Egp:egpText(20+CurrentIndex,Log["Time",string],vec2(322.66,46+12*(CurrentIndex-68))) Egp:egpSize(20+CurrentIndex,12) Egp:egpAlign(20+CurrentIndex,0,1) Egp:egpText(20+MaxLogs+CurrentIndex,Log["String",string],vec2(389.33,46+12*(CurrentIndex-68))) Egp:egpSize(20+MaxLogs+CurrentIndex,12) Egp:egpAlign(20+MaxLogs+CurrentIndex,0,1) }elseif(CurrentIndex > 34) { Egp:egpText(20+CurrentIndex,Log["Time",string],vec2(189.33,46+12*(CurrentIndex-34))) Egp:egpSize(20+CurrentIndex,12) Egp:egpAlign(20+CurrentIndex,0,1) Egp:egpText(20+MaxLogs+CurrentIndex,Log["String",string],vec2(256,46+12*(CurrentIndex-34))) Egp:egpSize(20+MaxLogs+CurrentIndex,12) Egp:egpAlign(20+MaxLogs+CurrentIndex,0,1) }else { Egp:egpText(20+CurrentIndex,Log["Time",string],vec2(56,46+12*CurrentIndex)) Egp:egpSize(20+CurrentIndex,12) Egp:egpAlign(20+CurrentIndex,0,1) Egp:egpText(20+MaxLogs+CurrentIndex,Log["String",string],vec2(122.66,46+12*CurrentIndex)) Egp:egpSize(20+MaxLogs+CurrentIndex,12) Egp:egpAlign(20+MaxLogs+CurrentIndex,0,1) } if(Log["Amount",number] < 0) { Egp:egpColor(20+MaxLogs+CurrentIndex,vec(127,0,0)) }else{ Egp:egpColor(20+MaxLogs+CurrentIndex,vec(0,127,0)) } } CurrentIndex++ } } } interval(200)