Advertisement
MagmaLP

Mall, trading System

Dec 31st, 2021 (edited)
845
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- A working version of this program is on the Minecraft (Modpack Tekkit Lite) server.
  2. -- IP: server.lycodon.com
  3. -- /warp mall
  4. -- coordinates x:-930 z:505
  5.  
  6.  
  7.  
  8. term.setBackgroundColor(32768)
  9. term.clear()
  10. rs.setOutput("top", true)
  11. sleep(0.5)
  12.  
  13.  
  14. function calc_color(color)
  15.     return math.pow(2, color - 1)
  16. end
  17.  
  18. function msg(gap, line, color, groundb, text)
  19.     term.setBackgroundColor(calc_color(groundb))
  20.     term.setCursorPos(gap,line)
  21.     term.setTextColor(calc_color(color))
  22.     text = term.write(text)
  23. end  
  24.  
  25. function neueracc()
  26.     term.setBackgroundColor(32768)
  27.     term.clear()
  28.     msg(01,02,04,16,"Neuen Account erstellen - create a new account")
  29.  
  30.     msg(01,05,04,16,"Wie soll dein Name sein - What should your name be")
  31.     msg(01,06,04,16,"---------------------------------------------------")
  32.     msg(02,07,06,16,"")
  33.     local name = read()
  34.     if fs.exists("benutzer/" ..name) == true then      
  35.         msg(02,07,15,16,"Dieser Name ist schon vergeben")
  36.         sleep(1)
  37.         neueracc()
  38.     end
  39.  
  40.     msg(02,10,04,16,"Wie soll dein PW sein - What should your PW be")
  41.     msg(01,11,04,16,"---------------------------------------------------")
  42.     msg(02,12,06,16,"")
  43.     local passwort1 = read("*")
  44.  
  45.     msg(02,15,04,16,"Bitte PW wiederholen - please repeat PW")
  46.     msg(01,16,04,16,"---------------------------------------------------")
  47.     msg(02,17,06,16,"")
  48.     local passwort2 = read("*")
  49.     if passwort1 ~= passwort2 then
  50.         msg(02,17,15,16,"Das PW ist nicht gleich - PW is not the same")
  51.         sleep(1)
  52.         neueracc()
  53.     else
  54.         local file = fs.open("benutzer/" ..name.. "/", "w")
  55.         file.write(passwort1)
  56.         file.close()
  57.         local file = fs.open("geld/" ..name.. "/", "w")
  58.         file.write(0.0)
  59.         file.close()
  60.     end
  61.     msg(02,17,06,16,"Account wird erstellt - Account is created ")
  62.     sleep(1)
  63.     start()
  64. end
  65.  
  66. function anmelden()
  67.     term.setBackgroundColor(32768)
  68.     term.clear()
  69.     msg(02,02,04,16,"Mit Account anmelden - login with account ")
  70.  
  71.     msg(02,05,04,16,"Wie lautet dein Name - What is your name")
  72.     msg(01,06,04,16,"---------------------------------------------------")
  73.     msg(02,07,06,16,"")
  74.     name = read()  
  75.     if fs.exists("benutzer/" ..name) == false then
  76.         msg(02,07,06,16,"Name existiern nicht - name does not exist ")
  77.         sleep(1)
  78.         start()
  79.     end
  80.  
  81.     msg(02,10,04,16,"Wie lautet dein PW - What is your PW")
  82.     msg(01,11,04,16,"---------------------------------------------------")
  83.     msg(02,12,06,16,"")
  84.     local passwort = read("*")
  85.     file = fs.open("benutzer/" ..name, "r")
  86.     local inhalt = file.readLine()
  87.     file.close()
  88.    
  89.     if passwort ~= inhalt then
  90.         msg(02,12,06,16,"PW falsch - PW wrong")
  91.         sleep(1)
  92.         start()
  93.     else
  94.         hauptbildschirm()
  95.     end              
  96. end
  97.  
  98. function hauptbildschirm()
  99.     term.setBackgroundColor(32768)
  100.     term.setCursorPos(1,1)
  101.     term.clear()
  102.    
  103.  
  104.     file = fs.open("geld/" ..name, "r")
  105.     local dollar = file.readLine()
  106.     file.close()
  107.  
  108.     msg(01,01,06,16,"< Account von "..name.." >")   msg(36,01,06,16," >  "..dollar.."$        ")
  109.     msg(01,02,04,16,"---------------------------------------------------")
  110.  
  111.     msg(06,07,01,15,"  Geld einzahlen  ")   msg(29,07,01,15,"  Geld auszahlen  ")
  112.     msg(06,08,01,15,"                  ")   msg(29,08,01,15,"                  ")
  113.     msg(06,09,01,15,"  deposit money   ")   msg(29,09,01,15,"  withdraw money  ")
  114.  
  115.     msg(16,14,01,15,"    Items kaufen     ")
  116.     msg(16,15,01,15,"                     ")
  117.     msg(16,16,01,15,"     buy items       ")
  118.    
  119.     msg(01,19,01,15," Logout ")
  120.  
  121.     local event, button, X, Y = os.pullEvent("mouse_click")
  122.     if X >= 06 and X <= 23 and Y >= 07 and Y <= 09 then
  123.         einzahlen()
  124.     elseif X >= 29 and X <= 46 and Y >= 07 and Y <= 09 then
  125.         setnull()
  126.     elseif X >= 16 and X <= 36 and Y >= 14 and Y <= 16 then
  127.         kaufen1()
  128.     elseif X >= 01 and X <= 08 and Y == 19 then
  129.         os.reboot()
  130.     else
  131.         hauptbildschirm()
  132.     end
  133. end
  134.    
  135. function einzahlen()
  136.     term.setBackgroundColor(32768)
  137.     term.clear()
  138.     file = fs.open("geld/" ..name, "r")
  139.     local dollar = file.readLine()
  140.     file.close()
  141.  
  142.     msg(01,01,06,16,"< Account von "..name.." >")   msg(36,01,06,16," >  "..dollar.."$        ")
  143.     msg(01,02,04,16,"---------------------------------------------------")
  144.     msg(01,05,04,16,"Tungsten links einwerfen - Throw in tungsten")
  145.     msg(01,06,04,16,"on the left - 1x Tungsten Ore = 42$")
  146.  
  147.     msg(01,08,04,16,"Danach hier bestätigen:")
  148.     msg(01,09,04,16,"Es können maximal 1024 Tungston Ore eingeworfen")
  149.     msg(01,10,04,16,"werden, der Rest wird wieder zurück gegeben.")
  150.  
  151.     msg(01,11,04,16,"---------------------------------------------------")
  152.     msg(06,13,01,15,"    Einzahlen     ")   msg(29,13,01,15,"    Abbrechen     ")
  153.     msg(06,14,01,15,"                  ")   msg(29,14,01,15,"                  ")
  154.     msg(06,15,01,15,"     deposit      ")   msg(29,15,01,15,"      abort       ")
  155.  
  156.     msg(01,19,01,15," Logout ")
  157.  
  158.     rs.setOutput("top", false)
  159.     sleep(0.5)
  160.  
  161.     local event, button, X, Y = os.pullEvent("mouse_click")
  162.     if X >= 29 and X <= 46 and Y >= 13 and Y <= 15 then
  163.         rs.setOutput("top", true)
  164.         hauptbildschirm()
  165.     elseif X >= 06 and X <= 23 and Y >= 13 and Y <= 15 then
  166.         msg(01,17,06,16,"Einzahlung läuft - deposit in progress")
  167.  
  168.         y = 1
  169.         rednet.open("bottom")
  170.         rednet.send(7955,y)
  171.         x, dollar2, z = rednet.receive()   
  172.         dollar = dollar + dollar2
  173.         local file = fs.open("geld/" ..name.. "/", "w")
  174.         file.write(dollar)
  175.         file.close()
  176.         rs.setOutput("top", true)
  177.         hauptbildschirm()  
  178.     elseif X >= 01 and X <= 08 and Y == 19 then
  179.         os.reboot()
  180.     else
  181.         einzahlen()
  182.     end
  183. end
  184.  
  185. function setnull()
  186.     auszahlmenge = 0.0
  187.     auszahlbetrag = 0.0
  188.     auszahlen()
  189. end
  190.  
  191. function auszahlen()
  192.     term.setBackgroundColor(32768)
  193.     term.clear()
  194.     file = fs.open("geld/" ..name, "r")
  195.     local dollar = file.readLine()
  196.     file.close()
  197.     dollar = tonumber(dollar)
  198.  
  199.     msg(01,01,06,16,"< Account von "..name.." >")   msg(36,01,06,16," >  "..dollar.."$        ")
  200.     msg(01,02,04,16,"---------------------------------------------------")
  201.  
  202.     msg(01,03,04,16,"Die Auszahlung findet in Tungston Ore statt.")
  203.     msg(01,04,04,16,"Payout in Tungsten Ore - 50$ = 1 Tungston Ore")
  204.     msg(01,05,04,16,"---------------------------------------------------")
  205.     msg(09,06,01,15,"       ")  msg(23,06,01,15,"       ")  msg(38,06,01,15,"       ")
  206.     msg(09,07,01,15,"  + 1  ")  msg(23,07,01,15,"  +10  ")  msg(38,07,01,15,"  +64  ")
  207.     msg(09,08,01,15,"       ")  msg(23,08,01,15,"       ")  msg(38,08,01,15,"       ")
  208.  
  209.     msg(09,10,01,15,"       ")  msg(23,10,01,15,"       ")  msg(38,10,01,15,"       ")
  210.     msg(09,11,01,15,"  - 1  ")  msg(23,11,01,15,"  -10  ")  msg(38,11,01,15,"  -64  ")
  211.     msg(09,12,01,15,"       ")  msg(23,12,01,15,"       ")  msg(38,12,01,15,"       ")
  212.  
  213.     msg(01,14,04,16,"Tungston Ore:")    msg(14,14,06,16," "..auszahlmenge.." ")
  214.     msg(23,14,04,16,"Abzug in Dollar:") msg(39,14,06,16," "..auszahlbetrag.." ")
  215.     msg(23,15,04,16,"dollars deducted")
  216.     msg(06,16,01,15,"  Auszahlen  ")    msg(23,16,01,15,"  Abbrechen   ")
  217.     msg(06,17,01,15,"             ")    msg(23,17,01,15,"              ")
  218.     msg(06,18,01,15,"   payout    ")    msg(23,18,01,15,"    abort     ")
  219.     msg(44,19,01,15," Logout ")
  220.  
  221.     local event, button, X, Y = os.pullEvent("mouse_click")
  222.     if X >= 09 and X <= 15 and Y >= 06 and Y <= 08 and auszahlmenge < 1024 then
  223.         auszahlmenge = auszahlmenge + 1
  224.         auszahlbetrag = auszahlbetrag + 50
  225.         auszahlen()
  226.     elseif X >= 23 and X <= 29 and Y >= 06 and Y <= 08 and auszahlmenge <= 1014 then
  227.         auszahlmenge = auszahlmenge + 10
  228.         auszahlbetrag = auszahlbetrag + 500
  229.         auszahlen()
  230.     elseif X >= 38 and X <= 44 and Y >= 06 and Y <= 08 and auszahlmenge <= 960 then
  231.         auszahlmenge = auszahlmenge + 64
  232.         auszahlbetrag = auszahlbetrag + 3200
  233.         auszahlen()
  234.  
  235.     elseif X >= 09 and X <= 15 and Y >= 10 and Y <= 12 and auszahlmenge > 0  then
  236.         auszahlmenge = auszahlmenge - 1
  237.         auszahlbetrag = auszahlbetrag - 50
  238.         auszahlen()
  239.     elseif X >= 23 and X <= 29 and Y >= 10 and Y <= 12 and auszahlmenge >= 10  then
  240.         auszahlmenge = auszahlmenge - 10
  241.         auszahlbetrag = auszahlbetrag - 500
  242.         auszahlen()
  243.     elseif X >= 38 and X <= 44 and Y >= 10 and Y <= 12 and auszahlmenge >= 64  then
  244.         auszahlmenge = auszahlmenge - 64
  245.         auszahlbetrag = auszahlbetrag - 3200
  246.         auszahlen()
  247.  
  248.     elseif X >= 06 and X <= 18 and Y >= 16 and Y <= 18 then
  249.         if auszahlbetrag <= dollar then
  250.             dollar = dollar - auszahlbetrag
  251.             local file = fs.open("geld/" ..name.. "/", "w")
  252.             file.write(dollar)
  253.             file.close()
  254.             rednet.open("bottom")
  255.             rednet.send(7957,auszahlmenge)
  256.             rs.setOutput("top", true)
  257.             hauptbildschirm()
  258.         else
  259.             msg(01,19,06,16,"Du hast zu wenig Geld - Not enought money")   
  260.             sleep(1)
  261.             auszahlen()
  262.         end
  263.     elseif X >= 23 and X <= 36 and Y >= 16 and Y <= 18 then
  264.             rs.setOutput("top", true)
  265.             hauptbildschirm()  
  266.     elseif X >= 44 and X <= 51 and Y == 19 then
  267.         os.reboot()
  268.     else
  269.         auszahlen()
  270.     end
  271. end
  272.  
  273. function reset1()
  274.     m0 = 0
  275.     m1 = 0
  276.     m2 = 0
  277.     m3 = 0
  278.     m4 = 0
  279.     m5 = 0
  280.     m6 = 0
  281.     m7 = 0
  282.     m8 = 0
  283.     m9 = 0
  284.     m10 = 0
  285.     m11 = 0
  286.     m12 = 0
  287.     m13 = 0
  288.     m14 = 0
  289.     m15 = 0
  290.     m16 = 0
  291.     m17 = 0
  292.     M = {m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17}
  293. end
  294.  
  295.  
  296.     b1 = 0
  297.     b2 = 0
  298.     b3 = 8000
  299.     b4 = 1000
  300.     b5 = 150
  301.     b6 = 126
  302.     b7 = 42
  303.     b8 = 84
  304.     b9 = 120
  305.     b10 = 120
  306.     b11 = 120
  307.     b12 = 333000
  308.     b13 = 190
  309.     b14 = 2500
  310.     b15 = 450
  311.     b16 = 500
  312.     b17 = 0
  313.     B = {b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17}
  314.  
  315.  
  316. function kaufen1()
  317.     reset1()
  318.     term.setBackgroundColor(32768)
  319.     term.clear()
  320.     file = fs.open("geld/" ..name, "r")
  321.     local dollar = file.readLine()
  322.     file.close()
  323.     betrag = 0
  324.     c = 0                                           --Errechneter Betrag
  325.  
  326.     msg(01,01,06,16,"< Account von "..name.." >")   msg(36,01,06,16," >  "..dollar.."$        ")
  327.     msg(01,02,04,16,"---------------------------------------------------")
  328.     msg(01,03,04,16,"| 8000$ HV Solar Panel")                   msg(51,03,04,16,"|")
  329.     msg(01,04,04,16,"| 1000$ MV Solar Panel")                   msg(51,04,04,16,"|")
  330.     msg(01,05,04,16,"|  150$ LV Solar Panel")                   msg(51,05,04,16,"|")
  331.     msg(01,06,04,16,"-  126$ Deep Storage Unit")                msg(51,06,04,16,"-")
  332.     msg(01,07,04,16,"|   42$ Autmatic Crafting Table MkII")     msg(51,07,04,16,"|")
  333.     msg(01,08,04,16,"|   84$ Igneus Extruder")                  msg(51,08,04,16,"|")
  334.     msg(01,09,04,16,"|  120$ Recycler")                         msg(51,09,04,16,"|")
  335.     msg(01,10,04,16,"-  120$ Electric Furnace")                 msg(51,10,04,16,"-")
  336.     msg(01,11,04,16,"|  120$ Macerator")                        msg(51,11,04,16,"|")
  337.     msg(01,12,04,16,"| 333k$ Adjustable Emitter")               msg(51,12,04,16,"|")
  338.     msg(01,13,04,16,"|  190$ MFSU")                             msg(51,13,04,16,"|")
  339.     msg(01,14,04,16,"- 2500$ Amaranthine Dust")                 msg(51,14,04,16,"-")
  340.     msg(01,15,04,16,"|  450$ Verdan Dust")                      msg(51,15,04,16,"|")
  341.     msg(01,16,04,16,"|  500$ Logic Matrix: Itentifier")         msg(51,16,04,16,"|")
  342.     msg(01,17,04,16,"|    0$ ")                                 msg(51,17,04,16,"|")
  343.     msg(01,18,04,16,"---------------------------------------------------")
  344.     msg(01,19,01,15,"  Buy   ") msg(11,19,01,15,"  Cancel   ")  msg(24,19,01,15," Logout ")
  345.     msg(34,19,04,16,"Amount:")  msg(42,19,06,16,""..c.."$")
  346.  
  347.     for i = 3,17 do
  348.         msg(40,i,01,15," + ")  
  349.     end
  350.     for i = 3,17 do
  351.         msg(44,i,04,16,"0")
  352.     end
  353.     for i = 3,17 do
  354.         msg(47,i,01,15," - ")
  355.     end
  356.     kaufen2()
  357. end
  358.  
  359. function kaufen2()
  360.     file = fs.open("geld/" ..name, "r")
  361.     local dollar = file.readLine()
  362.     file.close()
  363.     dollar = tonumber(dollar)
  364.  
  365.     local event, button, X, Y = os.pullEvent("mouse_click")
  366.     for i = 3,16 do
  367.         if X >= 40 and X <= 42 and Y == i then                  -- +1
  368.             if M[i] < 60 then                                   -- max 64
  369.                 M[i] = M[i] + 1
  370.                 c = c + B[i]
  371.                 msg(44,i,04,16,""..M[i].."")
  372.                 msg(42,19,06,16,""..c.."$")
  373.                 break
  374.             end
  375.         end
  376.         if X >= 47 and X <= 49 and Y == i then                  -- -1
  377.             if M[i] > 0 then
  378.                 M[i] = M[i] - 1
  379.                 c = c - B[i]
  380.                 msg(44,i,04,16,""..M[i].." ")
  381.                 msg(42,19,06,16,""..c.."$     ")
  382.                 break
  383.             end
  384.         end
  385.     end
  386.  
  387.     if X >= 11 and X <= 21 and Y == 19 then                 --Abbrechen
  388.         for i = 1,16 do
  389.             M[i] = 0
  390.         end
  391.         rs.setOutput("top", true)
  392.         hauptbildschirm()  
  393.  
  394.     elseif X >= 24 and X <= 31 and Y == 19 then
  395.         os.reboot()
  396.    
  397.     elseif X >= 01 and X <= 08 and Y == 19 then             --Kaufen
  398.         if c > dollar then                                  --aber zu wenig Geld
  399.             msg(41,19,01,15," "..c.."$ ")
  400.             sleep(0.25)
  401.             msg(41,19,06,16," "..c.."$ ")
  402.             sleep(0.25)
  403.             msg(41,19,01,15," "..c.."$ ")
  404.             sleep(0.25)
  405.             msg(41,19,06,16," "..c.."$ ")
  406.             sleep(0.5)
  407.             kaufen2()
  408.         elseif c <= dollar then
  409.             dollar = dollar - c
  410.             local file = fs.open("geld/" ..name.. "/", "w")
  411.             file.write(dollar)
  412.             file.close()
  413.  
  414.             package = {}
  415.             for i,amount in pairs(M) do
  416.                 local a = {}
  417.    
  418.                 if amount > 0 then
  419.                     a = {
  420.                         ["Slot"] = i - 2,
  421.                         ["Amount"] = amount
  422.                     }
  423.                     table.insert(package, a)
  424.                 end
  425.             end
  426.             rednet.open("bottom")
  427.             rednet.send(6415,textutils.serialize(package))
  428.             rs.setOutput("top", true)
  429.             hauptbildschirm()
  430.         end
  431.     end    
  432.     kaufen2()  
  433. end
  434.  
  435. function start()
  436.     term.setBackgroundColor(32768)
  437.     term.clear()
  438.     msg(03,03,04,16,"Neuen Account erstellen - create a new account")
  439.     msg(01,04,04,16,"---------------------------------------------------")
  440.     msg(15,05,15,15,"                     ")
  441.     msg(15,06,01,15,"     klick here      ")
  442.     msg(15,07,15,15,"                     ")
  443.     msg(01,08,04,16,"---------------------------------------------------")
  444.  
  445.     msg(05,12,04,16,"Mit Account anmelden - login with account")
  446.     msg(01,13,04,16,"---------------------------------------------------")
  447.     msg(15,14,15,15,"                     ")
  448.     msg(15,15,01,15,"     klick here      ")
  449.     msg(15,16,15,15,"                     ")
  450.     msg(01,17,04,16,"---------------------------------------------------")
  451.     msg(01,20,04,16," ")
  452.  
  453.     local event, button, X, Y = os.pullEvent("mouse_click")
  454.     if X >= 15 and X <= 34 and Y >= 05 and Y <= 07 then
  455.         neueracc()
  456.     elseif X >= 15 and X <= 34 and Y >= 14 and Y <= 16 then
  457.         anmelden()
  458.     else
  459.         start()
  460.     end
  461. end
  462.  
  463. start()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement