SHARE
TWEET

Untitled

a guest Jun 21st, 2014 230 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. @persist [Safes Players Guards]:array Zoom Count Money Used Rate Menu ButtonCD
  2. @inputs EGP:wirelink EGPUser:entity MoneyPot:wirelink User:entity
  3. @outputs [Safes Players Guards]:array ScreenTarget:entity Ops
  4. @trigger all
  5. interval(450)
  6. MoneyPot["SpawnAmount",number]=0
  7. #[findByClass("player")
  8. findSortByDistance(EGP:entity():pos())
  9. if(EGP:entity():pos():distance(findResult(1):pos())<100) { ScreenTarget=findResult(1) }else{ ScreenTarget=noentity() }]#
  10. findInSphere(EGP:entity():pos(),50)
  11. findClipToClass("player")
  12. ScreenTarget=findResult(1)
  13. if(first()) {
  14.     Rate=1.4
  15.     timer("scansafes",1)
  16.     timer("scanguard",1)
  17.     function number wirelink:egpIsHovering(Entity:entity, Index:number) {
  18.         local BisectedObject = This:egpSize(Index) / 2
  19.         return (inrange(This:egpCursor(Entity),EGP:egpPos(Index) - BisectedObject,EGP:egpPos(Index) + BisectedObject) ? 1 : 0)
  20.     }
  21.     function array names(Safe) {
  22.         return Players[Safe,string]:explode("`")[2,string]:explode("#")
  23.     }
  24.     function number safeTimeCreated(Safe) {
  25.         return Players[Safe,string]:explode("`")[1,string]:toNumber()
  26.     }
  27.     function number getSafe(String:string) {
  28.         Allowed=0
  29.         for(I=1,Players:count()) {
  30.             for(X=1,names(I):count()) {
  31.                 if(String==names(I)[X,string]) {
  32.                     Allowed=I
  33.                     #break
  34.                 }
  35.             }
  36.         }
  37.         return Allowed
  38.     }
  39.     function number emptySafe() {
  40.         ToReturn=0
  41.         for(I=1,Safes:count()) {
  42.             Names=Players[I,string]:explode("`")[2,string]:explode("#")
  43.             if(Names[1,string]=="empty") {
  44.                 ToReturn=I
  45.                 break
  46.             }
  47.         }
  48.         return ToReturn
  49.     }
  50.     function number addSafe(Name:string,Safe) {
  51.         Players[Safe,string]=round(realtime())+"`"+Name
  52.     }
  53.     function number getTime(Safe) {
  54.         return Players[Safe,string]:explode("`")[1,string]:toNumber()
  55.     }
  56.  
  57.     function number getCredits(Safe) {
  58.         return Players[Safe,string]:explode("`")[3,string]:toNumber()
  59.     }
  60.     function number canOpen(Safe) {
  61.         Credits=getCredits(Safe)
  62.         Time=realtime()-getTime(Safe)
  63.         Time=round(getCredits(Safe)-Time)/120
  64.         if(Time<=0) {
  65.             return 0
  66.         }else{
  67.             return round(Time,2)
  68.         }
  69.     }
  70.     function number shareSafe(Name:string,Safe) {
  71.         Names=names(Safe)
  72.         Names:pushString(Name)
  73.         Players[Safe,string]=getTime(Safe)+"`"+Names:concat("#")+"`"+getCredits(Safe)
  74.        
  75.     }
  76.     function number unshareSafe(Name:string) {
  77.         Safe=getSafe(Name)
  78.         CreditsPrev=Players[Safe,string]:explode("`")[3,string]:toNumber()
  79.         if(Safe!=0) {
  80.            
  81.              Owner=Players[Safe,string]:explode("`")[2,string]:explode("#")[1,string]
  82.             Str=safeTimeCreated(Safe)+"`"+Owner+"`"+CreditsPrev
  83.             Players[Safe,string]=Str
  84.         }
  85.     }
  86.     function void addTime(Safe,Credits) {
  87.          if(Safe!=0) {
  88.             local CreditsPrev=getCredits(Safe)
  89.             local Str=safeTimeCreated(Safe)+"`"+names(Safe):concat("#",1)+"`"+(CreditsPrev+Credits):toString()
  90.             Players[Safe,string]=Str
  91.             print("Added "+Credits+" credits to safe "+Safe+" ("+names(Safe):concat(",",1)+") (Total: "+canOpen(Safe)+" mins)")
  92.         }
  93.     }
  94.     function sexybg(Scr:wirelink) {
  95.         Scr:egpClear()
  96.         Scr:egpBox(300,vec2(256),vec2(512))
  97.         Scr:egpColor(300,vec(64))
  98.         local Lines=5
  99.         local Dist=512/Lines
  100.         CurSelection=0
  101.         for (I=1, Lines+2) {
  102.             Scr:egpLine(I+200,vec2(Dist*(I-2),-5),vec2(Dist*I,517))
  103.             Scr:egpSize(I+200,30)
  104.             Scr:egpMaterial(I+200,"gui/gradient_down")
  105.             Scr:egpColor(I+200,vec(32))
  106.            
  107.         }
  108.     }
  109.     function number pIR(Num:number) {
  110.         local O=EGP:egpCursor(ScreenTarget)
  111.         local Diff=EGP:egpSize(Num)/2
  112.         local Pos=EGP:egpPos(Num)
  113.         return inrange(O,Pos-Diff,Pos+Diff)
  114.     }
  115.     function void wirelink:egpHideMinMax(Minimum:number, Maximum:number)
  116.     {
  117.         for(I = Minimum, Maximum)
  118.         {
  119.            EGP:egpAlpha(I,0)
  120.         }    
  121.     }
  122.    
  123.     function void wirelink:egpShowMinMax(Minimum:number, Maximum:number)
  124.     {
  125.         for(I = Minimum, Maximum)
  126.         {
  127.             EGP:egpAlpha(I,255)
  128.         }    
  129.     }
  130.     runOnChat(1)
  131.     EGP:egpClear()
  132.     EGP:egpResolution(vec2(0,0),vec2(512,512))
  133.     sexybg(EGP)
  134.    
  135.     EGP:egpText(2,"Kgwilson's Bank",vec2(256,40))
  136.     EGP:egpAlign(2,1,1)
  137.     EGP:egpColor(2,vec(150,150,150))  
  138.     EGP:egpSize(2,28)
  139.    
  140.     EGP:egpText(3,"Time until lock:",vec2(256,100))
  141.     EGP:egpAlign(3,1,1)
  142.     EGP:egpAlpha(3,0)
  143.    
  144.     EGP:egpText(4,"500",vec2(256,130))
  145.     EGP:egpAlpha(4,0)
  146.     EGP:egpAlign(4,1,1)
  147.     EGP:egpSize(4,30)
  148.    
  149.     EGP:egpText(5,"Safe shared with:",vec2(256,170))
  150.     EGP:egpAlign(5,1,1)
  151.     EGP:egpAlpha(5,0)
  152.    
  153.     EGP:egpText(6,"",vec2(256,200))
  154.     EGP:egpAlpha(6,0)
  155.     EGP:egpAlign(6,1,1)
  156.     EGP:egpSize(6,20)
  157.    
  158.     EGP:egpBox(22,vec2(256,206 + (34 * 1.5)),vec2(194,34))
  159.     EGP:egpColor(21,vec(35,35,35))
  160.     EGP:egpBox(23,vec2(256,206 + (34 * 1.5)),vec2(192,32))
  161.     EGP:egpColor(22,vec(0,0,0))
  162.     EGP:egpBox(24,vec2(256,206 + (34 * 1.5)),vec2(192,32))
  163.     EGP:egpColor(23,vec(35,35,35))
  164.     EGP:egpMaterial(23,"gui/center_gradient")
  165.     EGP:egpTextLayout(24,"Deposit Credits",vec2(256-(192/2),206+(34*1.5)-16),vec2(192,32))
  166.     EGP:egpAlign(24,1,1)
  167.    
  168.     EGP:egpBox(27,vec2(256, 250 + (34 * 1.5)),vec2(194,34))
  169.     EGP:egpColor(26,vec(35,35,35))
  170.     EGP:egpBox(28,vec2(256,250 + (34 * 1.5)),vec2(192,32))
  171.     EGP:egpColor(27,vec(0,0,0))
  172.     EGP:egpBox(29,vec2(256,250+ (34 * 1.5)),vec2(192,32))
  173.     EGP:egpColor(28,vec(35,35,35))
  174.     EGP:egpMaterial(28,"gui/center_gradient")
  175.     EGP:egpTextLayout(29,"Unshare Safe",vec2(256-(192/2),206+(34*1.5)-16),vec2(192,120))
  176.     EGP:egpAlign(29,1,1)
  177.     EGP:egpBox(37,vec2(256, 100 + (34 * 1.5)),vec2(194,94))
  178.     EGP:egpColor(36,vec(35,35,35))
  179.    
  180.     EGP:egpBox(38,vec2(256,100 + (34 * 1.5)),vec2(192,92))
  181.     EGP:egpColor(37,vec(0,0,0))
  182.    
  183.     EGP:egpBox(39,vec2(256,100+ (34 * 1.5)),vec2(192,92))
  184.     EGP:egpColor(38,vec(35,35,35))
  185.    
  186.     EGP:egpMaterial(38,"gui/center_gradient")
  187.     EGP:egpTextLayout(39,"Purchase Safe",vec2(256-(192/2),100+(34*1.5)-16),vec2(192,20))
  188.     EGP:egpTextLayout(40,"ifmoney",vec2(256-(192/2),100+(34*1.5)-16),vec2(192,55))
  189.     EGP:egpAlign(39,1,1)
  190.     EGP:egpAlign(40,1,1)
  191.     EGP:egpHideMinMax(22,29)
  192. }
  193. User=EGPUser
  194. Use=User:keyUse()
  195. Use=changed(Use) & Use
  196. Zoom=owner():keyZoom()
  197. Used=User:keyUse()
  198. Count=Safes:count()
  199. Money=MoneyPot["StoredAmount",number]
  200.     for(I=1,Safes:count()) {
  201.         if(Players[I,string]!="0`empty`0") {
  202.            # Names=names(I)
  203.             WL=Safes[I,entity]:wirelink()
  204.             findInSphere(Safes[I,entity]:pos(),11)
  205.             findClipToClass("player")
  206.             Target=findResult(1)
  207.             if(Target:isPlayer()&Target:isAlive()) {
  208.                 Safe=getSafe(Target:name())
  209.                 if((getSafe(Target:name())==I&canOpen(Safe))|Target==owner()) {
  210.                     WL["Fade",number]=1
  211.                     break
  212.                 }else{
  213.                     WL["Fade",number]=0
  214.                 }
  215.             }else{
  216.                 WL["Fade",number]=0
  217.             }
  218.         }  
  219.    
  220. }
  221. if(($Zoom&Zoom)==1) {
  222.     if(owner():aimEntity():type()=="prop_physics") {
  223.         for(I=1,Safes:count()) {
  224.             Already=0
  225.             if(owner():aimEntity()==Safes[I,entity]) {
  226.                 print("Already found")
  227.                 Already=1
  228.                 break
  229.             }
  230.         }
  231.         if(Already==0) {
  232.             print("Added")
  233.             Safes:pushEntity(owner():aimEntity())
  234.             Players:pushString("0`empty`0")
  235.            
  236.         }
  237.     }else{
  238.         print("Aim at a prop")
  239.     }
  240. }
  241. if(chatClk(owner())) {
  242.     A=owner():lastSaid():explode(" ")
  243.     if(A[1,string]=="!add") {
  244.         hideChat(1)
  245.         if(findPlayerByName(A[2,string]):isPlayer()) {
  246.             if(A[3,string]&A[3,string]:toNumber()<=Players:count()) {
  247.                 addSafe(findPlayerByName(A[2,string]):name(),A[3,string]:toNumber())
  248.                 print("Added "+A[2,string]+" to safe "+A[3,string])
  249.             }else{
  250.                 print("Added "+A[2,string]+" to free safe "+emptySafe())
  251.                 addSafe(findPlayerByName(A[2,string]):name(),emptySafe())
  252.            
  253.             }
  254.         }
  255.     }
  256.     if(A[1,string]=="!rem") {
  257.         hideChat(1)
  258.         Players[A[2,string]:toNumber(),string]="0`empty`0"
  259.         print("Removed safe "+A[2,string])
  260.     }
  261.     if(A[1,string]=="!credit") {
  262.         hideChat(1)
  263.         Ply=findPlayerByName(A[2,string])
  264.         if(Ply:isValid()) {
  265.             if(getSafe(Ply:name())!=0|A[2,string]:toNumber()<=Safes:count()) {
  266.                 if(A[3,string]) {
  267.                     addTime(getSafe(Ply:name()),(A[3,string]:toNumber()/Rate))
  268.                 }else{
  269.                     print("!credit Name Time(mins)")
  270.                 }
  271.             }else{
  272.                 print("Player has no safe here.")
  273.             }
  274.         }
  275.     }
  276.     if(A[1,string]=="!guard") {
  277.         hideChat(1)
  278.         Already=0
  279.         Ply=findPlayerByName(A[2,string])
  280.         for(I=1,Guards:count()) {
  281.             if(Ply==Guards[I,entity]) {
  282.                 Already=1
  283.                 break
  284.             }
  285.         }
  286.         if(Already==0) {
  287.             print("Added guard to list")
  288.             Guards:pushEntity(findPlayerByName(A[2,string]))
  289.         }else{
  290.             print("Guard already exists. ("+Guards:concat(",",1)+")")
  291.         }
  292.     }
  293.     if(A[1,string]=="!remguard") {
  294.         hideChat(1)
  295.         Guards:clear()
  296.         print("Cleared guards.")
  297.     }
  298.     if(A[1,string]=="!share") {
  299.         hideChat(1)
  300.             if(A[3,string]) {
  301.                 Num=A[3,string]:toNumber()
  302.                 Ply=findPlayerByName(A[2,string])
  303.                 shareSafe(Ply:name(),Num)
  304.             }
  305.         }
  306. }
  307. if(ScreenTarget:isPlayer()&ScreenTarget:isAlive()) {
  308.     if(getSafe(ScreenTarget:name())!=0) {
  309.         Menu=1
  310.     }elseif(emptySafe()!=0){
  311.         Menu=2
  312.     }else{
  313.         Menu=4
  314.     }
  315. }else{
  316.     Menu=3
  317. }
  318. if(ops()<1000) {
  319.     if($Menu|clk("screen")|Use==1|changed(Money)) {
  320.         EGP:egpSetText(2,"Kgwilson's Bank")
  321.         if(Menu==1) {
  322.             Safe=getSafe(ScreenTarget:name())
  323.             EGP:egpSetText(2,"Welcome, "+ScreenTarget:name()+" (Safe #"+Safe+")")
  324.             EGP:egpColor(2,vec(255))
  325.             EGP:egpPos(2,vec2(256,20))
  326.             EGP:egpAlpha(3,255)
  327.             EGP:egpAlpha(4,255)
  328.             EGP:egpShowMinMax(4,29)
  329.             EGP:egpHideMinMax(37,40)
  330.             EGP:egpSetText(4,canOpen(Safe):toString()+" minutes")
  331.             EGP:egpColor(22,pIR(22)? Money? vec(0,255,0) : vec(255,0,0) : vec(0))
  332.             if(!Money) {
  333.                 EGP:egpSetText(24,"Deposit $ for more credits")
  334.                
  335.             }else{
  336.                 EGP:egpSetText(24,"Purchase "+round(((Money/Rate)/120),2)+" mins")
  337.             }
  338.             if(pIR(22)&Use==1&ScreenTarget==User&ButtonCD==0) {
  339.                 if(Money) {
  340.                     ButtonCD=1
  341.                     timer("buttoncd",2000)
  342.                     addTime(Safe,(Money/Rate))
  343.                     MoneyPot["SpawnAmount",number]=Money
  344.                 }
  345.             }
  346.             if(names(Safe):count()==1) {
  347.                 EGP:egpSetText(5,"PM KG to share your safe with a friend.")
  348.                 EGP:egpSetText(6,"")
  349.                 EGP:egpHideMinMax(27,29)
  350.             }else{
  351.                 EGP:egpSetText(5,"Safe shared with:")
  352.                 EGP:egpSetText(6,names(Safe):concat(", ",1))
  353.                 EGP:egpColor(27,pIR(27)? vec(0,255,0) : vec(0))
  354.                 if(pIR(27)&Use==1) {
  355.                     unshareSafe(User:name())
  356.                 }
  357.             }
  358.         }
  359.         if(Menu==2) {
  360.             EGP:egpHideMinMax(22,36)
  361.             EGP:egpShowMinMax(37,40)
  362.             EGP:egpPos(2,vec2(256,20))
  363.             EGP:egpSetText(39,Money:toString()=="0"? "Insert Money" : "Confirm")
  364.             EGP:egpSetText(40,Money:toString()=="0"? "to Purchase Credits" : "("+(round((Money/Rate)/120,2)+" minutes)"))
  365.             EGP:egpColor(37,pIR(37)&Money? vec(0,255,0) : vec(0))
  366.             if(Use&Money&pIR(37)&ScreenTarget==User&ButtonCD==0) {
  367.                 ButtonCD=1
  368.                 timer("buttoncd",2000)
  369.                 print("Adding account "+User:name()+" to safe "+emptySafe())
  370.                 addSafe(User:name(),emptySafe())
  371.                 addTime(getSafe(User:name()),(Money/Rate))
  372.                 MoneyPot["SpawnAmount",number]=Money
  373.             }
  374.         }
  375.         if(Menu==3) {
  376.             EGP:egpPos(2,vec2(256,256))
  377.             EGP:egpHideMinMax(3,40)
  378.            
  379.         }
  380.         if(Menu==4) {
  381.             EGP:egpHideMinMax(4,40)
  382.             EGP:egpSetText(2,"No empty safes!")
  383.         }
  384.         if(ScreenTarget) { timer("screen",1300) }
  385.     }
  386.     if(clk("buttoncd")) {
  387.         ButtonCD=0
  388.     }
  389.     if(clk("scanguard")) {
  390.         for(I=1,Guards:count()) {if(!Guards[I,entity]:isPlayer()) { Guards:remove(I) print("Guard removed.") } }
  391.         timer("scanguard",10000)
  392.     }
  393. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top