Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @persist [Safes Players Guards]:array Zoom Count Money Used Rate Menu ButtonCD
- @inputs EGP:wirelink EGPUser:entity MoneyPot:wirelink User:entity
- @outputs [Safes Players Guards]:array ScreenTarget:entity Ops
- @trigger all
- interval(450)
- MoneyPot["SpawnAmount",number]=0
- #[findByClass("player")
- findSortByDistance(EGP:entity():pos())
- if(EGP:entity():pos():distance(findResult(1):pos())<100) { ScreenTarget=findResult(1) }else{ ScreenTarget=noentity() }]#
- findInSphere(EGP:entity():pos(),50)
- findClipToClass("player")
- ScreenTarget=findResult(1)
- if(first()) {
- Rate=1.4
- timer("scansafes",1)
- timer("scanguard",1)
- function number wirelink:egpIsHovering(Entity:entity, Index:number) {
- local BisectedObject = This:egpSize(Index) / 2
- return (inrange(This:egpCursor(Entity),EGP:egpPos(Index) - BisectedObject,EGP:egpPos(Index) + BisectedObject) ? 1 : 0)
- }
- function array names(Safe) {
- return Players[Safe,string]:explode("`")[2,string]:explode("#")
- }
- function number safeTimeCreated(Safe) {
- return Players[Safe,string]:explode("`")[1,string]:toNumber()
- }
- function number getSafe(String:string) {
- Allowed=0
- for(I=1,Players:count()) {
- for(X=1,names(I):count()) {
- if(String==names(I)[X,string]) {
- Allowed=I
- #break
- }
- }
- }
- return Allowed
- }
- function number emptySafe() {
- ToReturn=0
- for(I=1,Safes:count()) {
- Names=Players[I,string]:explode("`")[2,string]:explode("#")
- if(Names[1,string]=="empty") {
- ToReturn=I
- break
- }
- }
- return ToReturn
- }
- function number addSafe(Name:string,Safe) {
- Players[Safe,string]=round(realtime())+"`"+Name
- }
- function number getTime(Safe) {
- return Players[Safe,string]:explode("`")[1,string]:toNumber()
- }
- function number getCredits(Safe) {
- return Players[Safe,string]:explode("`")[3,string]:toNumber()
- }
- function number canOpen(Safe) {
- Credits=getCredits(Safe)
- Time=realtime()-getTime(Safe)
- Time=round(getCredits(Safe)-Time)/120
- if(Time<=0) {
- return 0
- }else{
- return round(Time,2)
- }
- }
- function number shareSafe(Name:string,Safe) {
- Names=names(Safe)
- Names:pushString(Name)
- Players[Safe,string]=getTime(Safe)+"`"+Names:concat("#")+"`"+getCredits(Safe)
- }
- function number unshareSafe(Name:string) {
- Safe=getSafe(Name)
- CreditsPrev=Players[Safe,string]:explode("`")[3,string]:toNumber()
- if(Safe!=0) {
- Owner=Players[Safe,string]:explode("`")[2,string]:explode("#")[1,string]
- Str=safeTimeCreated(Safe)+"`"+Owner+"`"+CreditsPrev
- Players[Safe,string]=Str
- }
- }
- function void addTime(Safe,Credits) {
- if(Safe!=0) {
- local CreditsPrev=getCredits(Safe)
- local Str=safeTimeCreated(Safe)+"`"+names(Safe):concat("#",1)+"`"+(CreditsPrev+Credits):toString()
- Players[Safe,string]=Str
- print("Added "+Credits+" credits to safe "+Safe+" ("+names(Safe):concat(",",1)+") (Total: "+canOpen(Safe)+" mins)")
- }
- }
- function sexybg(Scr:wirelink) {
- Scr:egpClear()
- Scr:egpBox(300,vec2(256),vec2(512))
- Scr:egpColor(300,vec(64))
- local Lines=5
- local Dist=512/Lines
- CurSelection=0
- for (I=1, Lines+2) {
- Scr:egpLine(I+200,vec2(Dist*(I-2),-5),vec2(Dist*I,517))
- Scr:egpSize(I+200,30)
- Scr:egpMaterial(I+200,"gui/gradient_down")
- Scr:egpColor(I+200,vec(32))
- }
- }
- function number pIR(Num:number) {
- local O=EGP:egpCursor(ScreenTarget)
- local Diff=EGP:egpSize(Num)/2
- local Pos=EGP:egpPos(Num)
- return inrange(O,Pos-Diff,Pos+Diff)
- }
- function void wirelink:egpHideMinMax(Minimum:number, Maximum:number)
- {
- for(I = Minimum, Maximum)
- {
- EGP:egpAlpha(I,0)
- }
- }
- function void wirelink:egpShowMinMax(Minimum:number, Maximum:number)
- {
- for(I = Minimum, Maximum)
- {
- EGP:egpAlpha(I,255)
- }
- }
- runOnChat(1)
- EGP:egpClear()
- EGP:egpResolution(vec2(0,0),vec2(512,512))
- sexybg(EGP)
- EGP:egpText(2,"Kgwilson's Bank",vec2(256,40))
- EGP:egpAlign(2,1,1)
- EGP:egpColor(2,vec(150,150,150))
- EGP:egpSize(2,28)
- EGP:egpText(3,"Time until lock:",vec2(256,100))
- EGP:egpAlign(3,1,1)
- EGP:egpAlpha(3,0)
- EGP:egpText(4,"500",vec2(256,130))
- EGP:egpAlpha(4,0)
- EGP:egpAlign(4,1,1)
- EGP:egpSize(4,30)
- EGP:egpText(5,"Safe shared with:",vec2(256,170))
- EGP:egpAlign(5,1,1)
- EGP:egpAlpha(5,0)
- EGP:egpText(6,"",vec2(256,200))
- EGP:egpAlpha(6,0)
- EGP:egpAlign(6,1,1)
- EGP:egpSize(6,20)
- EGP:egpBox(22,vec2(256,206 + (34 * 1.5)),vec2(194,34))
- EGP:egpColor(21,vec(35,35,35))
- EGP:egpBox(23,vec2(256,206 + (34 * 1.5)),vec2(192,32))
- EGP:egpColor(22,vec(0,0,0))
- EGP:egpBox(24,vec2(256,206 + (34 * 1.5)),vec2(192,32))
- EGP:egpColor(23,vec(35,35,35))
- EGP:egpMaterial(23,"gui/center_gradient")
- EGP:egpTextLayout(24,"Deposit Credits",vec2(256-(192/2),206+(34*1.5)-16),vec2(192,32))
- EGP:egpAlign(24,1,1)
- EGP:egpBox(27,vec2(256, 250 + (34 * 1.5)),vec2(194,34))
- EGP:egpColor(26,vec(35,35,35))
- EGP:egpBox(28,vec2(256,250 + (34 * 1.5)),vec2(192,32))
- EGP:egpColor(27,vec(0,0,0))
- EGP:egpBox(29,vec2(256,250+ (34 * 1.5)),vec2(192,32))
- EGP:egpColor(28,vec(35,35,35))
- EGP:egpMaterial(28,"gui/center_gradient")
- EGP:egpTextLayout(29,"Unshare Safe",vec2(256-(192/2),206+(34*1.5)-16),vec2(192,120))
- EGP:egpAlign(29,1,1)
- EGP:egpBox(37,vec2(256, 100 + (34 * 1.5)),vec2(194,94))
- EGP:egpColor(36,vec(35,35,35))
- EGP:egpBox(38,vec2(256,100 + (34 * 1.5)),vec2(192,92))
- EGP:egpColor(37,vec(0,0,0))
- EGP:egpBox(39,vec2(256,100+ (34 * 1.5)),vec2(192,92))
- EGP:egpColor(38,vec(35,35,35))
- EGP:egpMaterial(38,"gui/center_gradient")
- EGP:egpTextLayout(39,"Purchase Safe",vec2(256-(192/2),100+(34*1.5)-16),vec2(192,20))
- EGP:egpTextLayout(40,"ifmoney",vec2(256-(192/2),100+(34*1.5)-16),vec2(192,55))
- EGP:egpAlign(39,1,1)
- EGP:egpAlign(40,1,1)
- EGP:egpHideMinMax(22,29)
- }
- User=EGPUser
- Use=User:keyUse()
- Use=changed(Use) & Use
- Zoom=owner():keyZoom()
- Used=User:keyUse()
- Count=Safes:count()
- Money=MoneyPot["StoredAmount",number]
- for(I=1,Safes:count()) {
- if(Players[I,string]!="0`empty`0") {
- # Names=names(I)
- WL=Safes[I,entity]:wirelink()
- findInSphere(Safes[I,entity]:pos(),11)
- findClipToClass("player")
- Target=findResult(1)
- if(Target:isPlayer()&Target:isAlive()) {
- Safe=getSafe(Target:name())
- if((getSafe(Target:name())==I&canOpen(Safe))|Target==owner()) {
- WL["Fade",number]=1
- break
- }else{
- WL["Fade",number]=0
- }
- }else{
- WL["Fade",number]=0
- }
- }
- }
- if(($Zoom&Zoom)==1) {
- if(owner():aimEntity():type()=="prop_physics") {
- for(I=1,Safes:count()) {
- Already=0
- if(owner():aimEntity()==Safes[I,entity]) {
- print("Already found")
- Already=1
- break
- }
- }
- if(Already==0) {
- print("Added")
- Safes:pushEntity(owner():aimEntity())
- Players:pushString("0`empty`0")
- }
- }else{
- print("Aim at a prop")
- }
- }
- if(chatClk(owner())) {
- A=owner():lastSaid():explode(" ")
- if(A[1,string]=="!add") {
- hideChat(1)
- if(findPlayerByName(A[2,string]):isPlayer()) {
- if(A[3,string]&A[3,string]:toNumber()<=Players:count()) {
- addSafe(findPlayerByName(A[2,string]):name(),A[3,string]:toNumber())
- print("Added "+A[2,string]+" to safe "+A[3,string])
- }else{
- print("Added "+A[2,string]+" to free safe "+emptySafe())
- addSafe(findPlayerByName(A[2,string]):name(),emptySafe())
- }
- }
- }
- if(A[1,string]=="!rem") {
- hideChat(1)
- Players[A[2,string]:toNumber(),string]="0`empty`0"
- print("Removed safe "+A[2,string])
- }
- if(A[1,string]=="!credit") {
- hideChat(1)
- Ply=findPlayerByName(A[2,string])
- if(Ply:isValid()) {
- if(getSafe(Ply:name())!=0|A[2,string]:toNumber()<=Safes:count()) {
- if(A[3,string]) {
- addTime(getSafe(Ply:name()),(A[3,string]:toNumber()/Rate))
- }else{
- print("!credit Name Time(mins)")
- }
- }else{
- print("Player has no safe here.")
- }
- }
- }
- if(A[1,string]=="!guard") {
- hideChat(1)
- Already=0
- Ply=findPlayerByName(A[2,string])
- for(I=1,Guards:count()) {
- if(Ply==Guards[I,entity]) {
- Already=1
- break
- }
- }
- if(Already==0) {
- print("Added guard to list")
- Guards:pushEntity(findPlayerByName(A[2,string]))
- }else{
- print("Guard already exists. ("+Guards:concat(",",1)+")")
- }
- }
- if(A[1,string]=="!remguard") {
- hideChat(1)
- Guards:clear()
- print("Cleared guards.")
- }
- if(A[1,string]=="!share") {
- hideChat(1)
- if(A[3,string]) {
- Num=A[3,string]:toNumber()
- Ply=findPlayerByName(A[2,string])
- shareSafe(Ply:name(),Num)
- }
- }
- }
- if(ScreenTarget:isPlayer()&ScreenTarget:isAlive()) {
- if(getSafe(ScreenTarget:name())!=0) {
- Menu=1
- }elseif(emptySafe()!=0){
- Menu=2
- }else{
- Menu=4
- }
- }else{
- Menu=3
- }
- if(ops()<1000) {
- if($Menu|clk("screen")|Use==1|changed(Money)) {
- EGP:egpSetText(2,"Kgwilson's Bank")
- if(Menu==1) {
- Safe=getSafe(ScreenTarget:name())
- EGP:egpSetText(2,"Welcome, "+ScreenTarget:name()+" (Safe #"+Safe+")")
- EGP:egpColor(2,vec(255))
- EGP:egpPos(2,vec2(256,20))
- EGP:egpAlpha(3,255)
- EGP:egpAlpha(4,255)
- EGP:egpShowMinMax(4,29)
- EGP:egpHideMinMax(37,40)
- EGP:egpSetText(4,canOpen(Safe):toString()+" minutes")
- EGP:egpColor(22,pIR(22)? Money? vec(0,255,0) : vec(255,0,0) : vec(0))
- if(!Money) {
- EGP:egpSetText(24,"Deposit $ for more credits")
- }else{
- EGP:egpSetText(24,"Purchase "+round(((Money/Rate)/120),2)+" mins")
- }
- if(pIR(22)&Use==1&ScreenTarget==User&ButtonCD==0) {
- if(Money) {
- ButtonCD=1
- timer("buttoncd",2000)
- addTime(Safe,(Money/Rate))
- MoneyPot["SpawnAmount",number]=Money
- }
- }
- if(names(Safe):count()==1) {
- EGP:egpSetText(5,"PM KG to share your safe with a friend.")
- EGP:egpSetText(6,"")
- EGP:egpHideMinMax(27,29)
- }else{
- EGP:egpSetText(5,"Safe shared with:")
- EGP:egpSetText(6,names(Safe):concat(", ",1))
- EGP:egpColor(27,pIR(27)? vec(0,255,0) : vec(0))
- if(pIR(27)&Use==1) {
- unshareSafe(User:name())
- }
- }
- }
- if(Menu==2) {
- EGP:egpHideMinMax(22,36)
- EGP:egpShowMinMax(37,40)
- EGP:egpPos(2,vec2(256,20))
- EGP:egpSetText(39,Money:toString()=="0"? "Insert Money" : "Confirm")
- EGP:egpSetText(40,Money:toString()=="0"? "to Purchase Credits" : "("+(round((Money/Rate)/120,2)+" minutes)"))
- EGP:egpColor(37,pIR(37)&Money? vec(0,255,0) : vec(0))
- if(Use&Money&pIR(37)&ScreenTarget==User&ButtonCD==0) {
- ButtonCD=1
- timer("buttoncd",2000)
- print("Adding account "+User:name()+" to safe "+emptySafe())
- addSafe(User:name(),emptySafe())
- addTime(getSafe(User:name()),(Money/Rate))
- MoneyPot["SpawnAmount",number]=Money
- }
- }
- if(Menu==3) {
- EGP:egpPos(2,vec2(256,256))
- EGP:egpHideMinMax(3,40)
- }
- if(Menu==4) {
- EGP:egpHideMinMax(4,40)
- EGP:egpSetText(2,"No empty safes!")
- }
- if(ScreenTarget) { timer("screen",1300) }
- }
- if(clk("buttoncd")) {
- ButtonCD=0
- }
- if(clk("scanguard")) {
- for(I=1,Guards:count()) {if(!Guards[I,entity]:isPlayer()) { Guards:remove(I) print("Guard removed.") } }
- timer("scanguard",10000)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement