Advertisement
NoNickNameTriggers

ShopServer main file

Mar 23rd, 2017
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.46 KB | None | 0 0
  1. local libs = {
  2.     event="event",
  3.     ecs="ECSAPI",
  4.     com="component",
  5.     pc="computer",
  6.     files="files"
  7. }
  8. local coms={
  9.     rs="redstone",
  10.     cmd="command_block",
  11.     gpu="gpu",
  12.     modem="modem"
  13. }
  14. for lib in libs do
  15.     if not _G[lib] then
  16.         _G[lib]=require(libs[lib])
  17.     end
  18. end
  19. libs=nil
  20. for comp in coms do
  21.     if not _G[comp] then
  22.         _G[comp]=com[comp]
  23.     end
  24. end
  25. coms=nil
  26.  
  27. cfg = files.loadTableFromFile("serverItemsList.cfg")
  28.  
  29. function wait(ms)
  30.     os.sleep(ms/1000)
  31. end
  32. function runCmd(cmd, ret)
  33.     cmd.setCommand(cmd)
  34.     cmd.executeCommand()
  35.     if ret then
  36.         wait(100)
  37.         return rs.getInput(0)
  38.     end
  39. end
  40. function log(str)
  41.     gpu.setBackground(0x101010)
  42.     gpu.setForeground(0x55AAFF)
  43.     print(str)
  44.     local file=io.open("ServerLog.log", "w")  --Падди все *****
  45.     file:write(str.."\n")
  46.     file:close()
  47. end
  48. function playerHaveEnoughMoney(user, money)
  49.     return runCmd("/testfor @a[name="..user..",score_coins_min="..money.."]", true)
  50. end
  51. function buyItem(user, sysid, amnt)
  52.     amnt = amnt or 1
  53.     if not user then return end
  54.     if playerHaveEnoughMoney(user, amnt*cfg.items[sysid].cost) then
  55.         runCmd("/give "..user.." "..cfg.items.[sysid].id.." "..amnt.." "..cfg.items[sysid].meta.." "..cfg.items[sysid].data)
  56.         runCmd("/scoreboard players remove "..user.." coins "..amnt*cfg.items[sysid].cost)
  57.         log("User "..user.." buyed "..cfg.items[sysid].readableID.."x"..amnt.." ("..amnt*cfg.items[sysid].cost.."credits)")
  58.     else
  59.         runCmd("/tellraw "..user.." {\"text\":\"\\u00a74[Shop]: \\u00a7cYou don't have enough money!\\n\\u00a7cYou needs \""..amnt*cfg.items[sysid].cost.."credits to buy it!\"}")
  60.         log("User "..user.." has tried to buy item "..cfg.items[sysid].readableID)
  61.     end
  62. end
  63. function buyEffect(user, sysid, duration, amplifier)
  64.     duration = duration or 30
  65.     amplifier = amplifier or 0
  66.     if not user then return end
  67.     if playerHaveEnoughMoney(user, duration/10*(amplifier+1)*cfg.effects[sysid].cost) then
  68.         runCmd("/effect "..user.." "..cfg.effects[sysid].id.." "..duration.." "..amplifier)
  69.         runCmd("/scoreboard players remove "..user.." coins "..duration/10*(amplifier+1)*cfg.effects[sysid].cost)
  70.         log("User "..user.." has buyed effect \""..cfg.effects[sysid].readableID.."\" for "..duration.."s at "..amplifier.." level ("..duration/10*(amplifier+1)*cfg.effects[sysid].cost.."credits)")
  71.     else
  72.         runCmd("/tellraw "..user.." {\"text\":\"\\u00a74[Shop]: \\u00a7cYou don't have enough money!\\n\\u00a7cYou needs \""..duration/10*(amplifier+1)*cfg.effects[sysid].cost.."credits to buy it!\"}")
  73.         log("User "..user.." has tried to buy effect "..cfg.effects[sysid].readableID)
  74.     end
  75. end
  76.  
  77. while true do --main code!!!
  78. modem.open(256)
  79. modem.broadcast(256, "terminalWakeUp")
  80. local e = {event.pull()}
  81. if e[1]=="modem_message" then
  82.     if e[2]=="buyEffect" then
  83.         buyEffect(e[3], e[4], e[5], e[6])
  84.     else if e[2]=="buyItem" then
  85.         buyItem(e[3], e[4], e[5])
  86.     else if e[2]=="log" then
  87.         log("["..e[3].."]: "..e[4])
  88.     end
  89. end
  90. end
  91.  
  92.  
  93.  
  94.  
  95.  
  96. --[[
  97.     ОПИСАНИЕ
  98. Сервер для магазина на OpenComputers. Требует для работы коммандный блок и IO редстоун блок.
  99. Из компонентов лучше взять:
  100.  
  101.                         [ Интернет плата  ]    [Процессор с GPU lvl IV (creative)]   [   HDD lvl3  ]
  102. [EEPROM (Lua BIOS)]     [Плата беспр. сети]   [   Оперативная память 3.5        ]    [   HDD lvl3  ]
  103.                         [  Сетевая плата  ] [   Оперативная память 3.5        ]    [MineOS floppy]
  104.  
  105.  
  106.  
  107. ]]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement