Advertisement
Thomads

Stavox - Smart Taxi

Dec 26th, 2018
645
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 11.64 KB | None | 0 0
  1. @name Smart Taxi
  2. @inputs [EGP,EGP2]:wirelink [User,User2]:entity
  3. @outputs
  4. @persist [Title,Driver,Bestil,MSGTag]:string [StartGebyr,Takst,Status,Time,Rabat]:number [Distance]:array [CurUser]:entity
  5. @trigger
  6.  
  7. if(first() | dupefinished()) {
  8.     EGP:egpClear()
  9.     runOnChat(1)
  10.    
  11.     Title = "Smart Taxi"
  12.     Driver = owner():name()
  13.     Bestil = "BESTIL"
  14.     MSGTag = "[Smart Taxi] "
  15.     Rabat = 0
  16.     StartGebyr = 750*(1-Rabat)
  17.     Takst = 50*(1-Rabat)
  18.    
  19.    
  20.     Time = 0
  21.     Status = 0
  22.    
  23.     print("Kommandoer:
  24.    !start Thomads   <- Starter en taxi tur med spilleren Thomads.
  25.    !start    <- Genstarter en iganv"+ae()+"rende taxi tur.
  26.    !pause    <- S"+ae()+"tter taximeteret p"+aa()+" pause.
  27.    !slut            <- Stopper en igangv"+ae()+"rende tur, og sender en pengeanmodning for taksten. ") print("
  28.    !takst 100       <- S"+ae()+"tter taksten pr. 10 sekund til 100 kr.
  29.    !startgebyr 3500 <- S"+ae()+"tter startgebyret til 3500 kr.
  30.    !rabat 50    <- S"+ae()+"tter rabatten til 50%. V"+ae()+"lg mellem 0-99.")
  31.    
  32.     function void oMSG(Text:string, Color:vector) {
  33.         printColor(vec(255,215,0),MSGTag,Color,Text)
  34.     }
  35.     function number egpClick(Index, Cursor:vector2){
  36.         EPos = EGP:egpPos(Index)
  37.         ESize = EGP:egpSize(Index)
  38.        
  39.         if(inrange(Cursor, (EPos - ESize/2), (EPos + ESize/2)) ){
  40.             return 1
  41.         }
  42.         return 0
  43.     }    
  44.    
  45.     function string wirelink:getStatus() {
  46.         if(Status == 0) {
  47.             This:egpSetText(11,"Ledig")
  48.             This:egpColor(11,vec(118,250,0))
  49.             This:egpColor(20,vec(255,255,255))
  50.             This:egpColor(21,vec(255,255,255))
  51.         }elseif(Status == 2) {
  52.             This:egpSetText(11,"Optaget")
  53.             This:egpColor(11,vec(250,60,0))
  54.             This:egpColor(20,vec(250,60,0))
  55.             This:egpColor(21,vec(250,60,0))
  56.         }
  57.     }
  58.    
  59.     function void wirelink:drawScreen() {
  60.         This:egpClear()
  61.         This:egpBox( 1,vec2(256,256),vec2(512,512) )
  62.         This:egpMaterial(1,"console/background06")    
  63.        
  64.         This:egpText(2,Title,vec2(256,10)) This:egpSize(2,55) This:egpAlign(2,1) This:egpFont(2,"Courier New")
  65.         This:egpBox(3,vec2(256,68),vec2(325,4))
  66.        
  67.         This:egpBox(7,vec2(130,158),vec2(190,70))    This:egpMaterial(7,"gui/center_gradient")    This:egpColor(7,vec4(50,50,50,200))
  68.         This:egpText(4,"Chauff"+oe()+"r",vec2(128,125)) This:egpSize(4,35) This:egpAlign(4,1) This:egpFont(4,"Courier New")
  69.         This:egpBox(5,vec2(128,160),vec2(200,3))
  70.         This:egpText(6,Driver,vec2(128,165)) This:egpSize(6,25) This:egpAlign(6,1) This:egpFont(6,"Courier New") This:egpColor(6,vec(118,250,0))
  71.        
  72.         This:egpBox(8,vec2(394,158),vec2(180,70))    This:egpMaterial(8,"gui/center_gradient")    This:egpColor(8,vec4(50,50,50,200))
  73.         This:egpText(9,"Status",vec2(384,125)) This:egpSize(9,35) This:egpAlign(9,1) This:egpFont(9,"Courier New")
  74.         This:egpBox(10,vec2(384,160),vec2(200,3))
  75.         This:egpText(11,"Ledig",vec2(384,165)) This:egpSize(11,25) This:egpAlign(11,1) This:egpFont(11,"Courier New") This:egpColor(11,vec(118,250,0))
  76.        
  77.         This:egpBox(12,vec2(138,268),vec2(180,70))    This:egpMaterial(12,"gui/center_gradient")    This:egpColor(12,vec4(50,50,50,200))
  78.         This:egpText(13,"Startgebyr",vec2(128,235)) This:egpSize(13,35) This:egpAlign(13,1) This:egpFont(13,"Courier New")
  79.         This:egpBox(14,vec2(128,270),vec2(200,3))
  80.         This:egpText(15,StartGebyr*(1-Rabat) + " kr.",vec2(128,275)) This:egpSize(15,25) This:egpAlign(15,1) This:egpFont(15,"Courier New") This:egpColor(15,vec(118,250,0))
  81.     }
  82.     function void wirelink:drawScreen2() {
  83.         This:egpBox(16,vec2(394,268),vec2(180,70))    This:egpMaterial(16,"gui/center_gradient")    This:egpColor(16,vec4(50,50,50,200))
  84.         This:egpText(17,"Takst",vec2(384,235)) This:egpSize(17,35) This:egpAlign(17,1) This:egpFont(17,"Courier New")
  85.         This:egpBox(18,vec2(384,270),vec2(200,3))
  86.         This:egpText(19,Takst*(1-Rabat) + " kr/10 sek.",vec2(384,275)) This:egpSize(19,25) This:egpAlign(19,1) This:egpFont(19,"Courier New") This:egpColor(19,vec(118,250,0))
  87.        
  88.         This:egpText(20,Bestil,vec2(256,360)) This:egpSize(20,55) This:egpAlign(20,1) This:egpFont(20,"Courier New")
  89.         This:egpBox(21,vec2(256,418),vec2(230,4))
  90.        
  91.         This:egpText(22,"Afventer bestilling",vec2(256,430)) This:egpSize(22,18) This:egpAlign(22,1) This:egpFont(22,"Courier New")
  92.         This:egpText(24,"Lavet af Thomads | v1",vec2(256,497)) This:egpSize(24,15) This:egpAlign(24,1) This:egpFont(24,"Courier New")
  93.        
  94.         This:egpBox(23,vec2(256,408),vec2(230,90)) This:egpColor(23,vec4(0,0,0,0))
  95.        
  96.         This:egpBox(25,vec2(470,70),vec2(250,35)) This:egpColor(25,vec4(225,225,0,0)) This:egpAngle(25,-45)
  97.         This:egpBoxOutline(26,vec2(470,70),vec2(250,35)) This:egpColor(26,vec4(255,255,255,0)) This:egpAngle(26,-45)
  98.         This:egpText(27,"SPAR 25%",vec2(466,45)) This:egpAngle(27,-45) This:egpSize(27,28) This:egpAlign(27,1)  This:egpColor(27,vec4(255,255,255,0))
  99.     }
  100.    
  101.     function void startTaxi(Ply:string) {
  102.         if(Status == 1 & findPlayerBySteamID(Ply):isPlayer()) {
  103.             On = 1
  104.             Time = 0
  105.             Status = 2
  106.             EGP:getStatus()
  107.             EGP2:getStatus()
  108.             CurUser = findPlayerBySteamID(Ply)
  109.             print(CurUser:name())
  110.             oMSG("Startede en tur med "+CurUser:name()+" med en takst p"+aa()+" " +Takst*(1-Rabat) + " kr / 10 sek.",vec(255,255,255))
  111.             timer("takst",10000)
  112.         }elseif(Status == 0){
  113.             oMSG("Anmoder "+findPlayerBySteamID(Ply):name()+" om startgebyr...",vec(200,0,0))
  114.             moneyRequest(findPlayerBySteamID(Ply), StartGebyr*(1-Rabat), "Startgebyr for taxi", 10)
  115.         }elseif(Status == 2){
  116.             oMSG("Du har allerde startet en tur. Skriv !slut for at starte forfra.",vec(200,0,0))
  117.         }
  118.     }
  119.    
  120.     function void genstartTaxi() {
  121.         if(Status == 3) {
  122.             timer("takst",10000)
  123.             oMSG("Taximeteret fors"+ae()+"tter nu fra sidst.",vec(0,255,0))
  124.             Status = 2
  125.         }else{
  126.             oMSG("Kunne ikke starte tur.",vec(200,0,0))
  127.         }
  128.     }
  129.    
  130.     function void pauseTaxi() {
  131.         if(Status == 2) {
  132.             Status = 3
  133.             stoptimer("takst")
  134.             oMSG("Satte taximeteret i bero. Brug !start for at t"+ae()+"nde det igen eller !slut for at afslutte turen.",vec(255,255,255))  
  135.         }else{
  136.             oMSG("Taximeteret er ikke i gang!",vec(200,0,0))
  137.         }
  138.     }
  139.    
  140.     function void slutTaxi() {
  141.         if(Status != 0) {
  142.             Status = 0
  143.             oMSG("Antal sekunder k"+oe()+"rt: " + Time*10 + " | Udregnet pris: " + (Time*Takst)*(1-Rabat) + "kr.",vec(255,255,255))
  144.             if(CurUser:isPlayer() & CurUser:isValid()) {
  145.                 moneyRequest(CurUser, (Time*Takst)*(1-Rabat), "Taxi takst", 10)
  146.             }else{
  147.                 oMSG("Kunne ikke sende anmodning til spiller.",vec(200,0,0))
  148.             }
  149.             EGP:egpSetText(22,"Afventer bestilling")
  150.             EGP2:egpSetText(22,"Afventer bestilling")
  151.             Time = 0
  152.             EGP:getStatus()
  153.             EGP2:getStatus()
  154.         }else {
  155.             oMSG("Der er ingen igangv"+ae()+"rende ture.",vec(200,0,0))
  156.         }
  157.     }
  158.    
  159.     function void wirelink:toggleDiscount() {
  160.         if(Rabat > 0) {
  161.             This:egpColor(25,vec4(255,255,0,255))
  162.             This:egpColor(26,vec4(255,255,255,255))
  163.             This:egpColor(27,vec4(0,0,0,255))
  164.             This:egpSetText(27,"SPAR "+Rabat*100+"%")
  165.             This:egpSetText(15,StartGebyr*(1-Rabat) + " kr.")
  166.             This:egpSetText(19,Takst*(1-Rabat) + " kr/10 sek.")
  167.         }else{
  168.             This:egpColor(25,vec4(225,225,0,0))
  169.             This:egpColor(26,vec4(255,255,255,0))
  170.             This:egpColor(27,vec4(255,255,255,0))
  171.             This:egpSetText(15,StartGebyr*(1-Rabat) + " kr.")
  172.             This:egpSetText(19,Takst*(1-Rabat) + " kr/10 sek.")
  173.         }
  174.     }
  175.    
  176.     EGP:drawScreen()
  177.     timer("drawSecond",2000)
  178. }
  179. if(Status > 0) {
  180.     Distance = (owner():pos():distance( EGP:entity():pos())/100):toString():explode(".")
  181.     Distance2 = (owner():pos():distance( EGP2:entity():pos())/100):toString():explode(".")
  182.     EGP:egpSetText(22,"Afstand fra taxi: " + Distance[1,string] + "m.")
  183.     EGP2:egpSetText(22,"Afstand fra taxi: " + Distance2[1,string] + "m.")
  184. }
  185.  
  186. if(chatClk() & chatClk(owner())){
  187.     A = owner():lastSaid():lower():explode(" ")
  188.     if(A[1,string]:lower()=="!start") {
  189.         hideChat(1)
  190.         if(A[2,string]=="") {
  191.             genstartTaxi()
  192.         }else{
  193.             startTaxi(findPlayerByName(A[2,string]):steamID())
  194.         }
  195.     }elseif(A[1,string]:lower()=="!pause") {
  196.         hideChat(1)
  197.         pauseTaxi()
  198.     }elseif(A[1,string]:lower()=="!slut") {
  199.         hideChat(1)
  200.         slutTaxi()
  201.     }elseif(A[1,string]:lower()=="!takst") {
  202.         hideChat(1)
  203.         if(A[2,string]:toNumber() > 0) {
  204.             Takst = round(A[2,string]:toNumber())
  205.             EGP:egpSetText(19,Takst*(1-Rabat) + " kr/10 sek.")
  206.             EGP2:egpSetText(19,Takst*(1-Rabat) + " kr/10 sek.")
  207.             oMSG("Satte takst til "+Takst+" kr.",vec(0,255,0))
  208.         }else{
  209.             oMSG("Ugyldig takst",vec(200,0,0))
  210.         }
  211.     }elseif(A[1,string]:lower()=="!startgebyr") {
  212.         hideChat(1)
  213.         if(A[2,string]:toNumber() > 0) {
  214.             StartGebyr = round(A[2,string]:toNumber())
  215.             EGP:egpSetText(15,StartGebyr*(1-Rabat) + " kr.")
  216.             EGP2:egpSetText(15,StartGebyr*(1-Rabat) + " kr.")
  217.             oMSG("Satte startgebyr til "+StartGebyr+" kr.",vec(0,255,0))
  218.         }else{
  219.             oMSG("Ugyldigt startgebyr",vec(200,0,0))
  220.         }
  221.     }elseif(A[1,string]:lower()=="!rabat") {
  222.         hideChat(1)
  223.         if(A[2,string]:toNumber() > 0 & A[2,string]:toNumber() < 100) {
  224.             Rabat = A[2,string]:toNumber()/100
  225.             oMSG("Satte rabatten til "+Rabat*100+"%",vec(0,255,0))
  226.             EGP:toggleDiscount()
  227.             EGP2:toggleDiscount()
  228.         }elseif(A[2,string]:toNumber() == 0){
  229.             Rabat = A[2,string]:toNumber()/100
  230.             oMSG("Fjernede rabat.",vec(0,255,0))
  231.             EGP:toggleDiscount()
  232.             EGP2:toggleDiscount()
  233.         }else{
  234.             oMSG("Ugyldig rabat. V"+ae()+"lg 0 for at fjerne rabatten, eller 1-99% rabat",vec(200,0,0))
  235.         }
  236.     }
  237. }
  238.  
  239. Cursor = EGP:egpCursor(User)
  240. Cursor2 = EGP2:egpCursor(User2)
  241. if(((~User & User:keyUse()) | (~User2 & User2:keyUse())) & ops()<100){
  242.     if((egpClick(23,Cursor) | egpClick(23,Cursor2)) & Status == 0) {
  243.         moneyRequest(User, StartGebyr*(1-Rabat), "Startgebyr for taxi", 10)
  244.         moneyRequest(User2, StartGebyr*(1-Rabat), "Startgebyr for taxi", 10)
  245.     }
  246. }
  247.  
  248. if(moneyClk("Startgebyr for taxi")) {
  249.     CurUser = moneyClkPlayer()
  250.     Status = 1
  251.     oMSG(CurUser:name() + " har bestilt en taxi.",vec(255,255,255))
  252.     concmd("say /pm "+ CurUser:steamID()+" Bliv st"+aa()+"ende og afvent venligst taxiens ankomst. Taximeteret er sat i gang.")
  253.     startTaxi(CurUser:steamID())
  254.    
  255. }elseif(moneyClk("Taxi takst")) {
  256.     oMSG(moneyClkPlayer():name() + " har betalt for sin taxi.",vec(0,255,0))
  257. }
  258.  
  259. if(moneyNoClk("Taxi takst") | moneyTimeout("Taxi takst")) {
  260.     oMSG(moneyNoClkPlayer():name() + " har IKKE betalt for sin taxi!",vec(255,0,0))  
  261. }
  262.  
  263. if(clk("takst")){
  264.     Time++
  265.     timer("takst",10000)
  266. }
  267. if(clk("drawSecond")) {
  268.     EGP:drawScreen2()
  269.     timer("drawSecond1",1000)
  270. }
  271. if(clk("drawSecond1")) {
  272.     EGP2:drawScreen()
  273.     timer("drawSecond2",1000)
  274. }
  275. if(clk("drawSecond2")) {
  276.     EGP2:drawScreen2()
  277. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement