Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local libs = {
- event="event",
- ecs="ECSAPI",
- com="component",
- pc="computer",
- files="files"
- }
- local coms={
- rs="redstone",
- cmd="command_block",
- gpu="gpu",
- modem="modem"
- }
- for lib in libs do
- if not _G[lib] then
- _G[lib]=require(libs[lib])
- end
- end
- libs=nil
- for comp in coms do
- if not _G[comp] then
- _G[comp]=com[comp]
- end
- end
- coms=nil
- cfg = files.loadTableFromFile("serverItemsList.cfg")
- function wait(ms)
- os.sleep(ms/1000)
- end
- function runCmd(cmd, ret)
- cmd.setCommand(cmd)
- cmd.executeCommand()
- if ret then
- wait(100)
- return rs.getInput(0)
- end
- end
- function log(str)
- gpu.setBackground(0x101010)
- gpu.setForeground(0x55AAFF)
- print(str)
- local file=io.open("ServerLog.log", "w") --Падди все *****
- file:write(str.."\n")
- file:close()
- end
- function playerHaveEnoughMoney(user, money)
- return runCmd("/testfor @a[name="..user..",score_coins_min="..money.."]", true)
- end
- function buyItem(user, sysid, amnt)
- amnt = amnt or 1
- if not user then return end
- if playerHaveEnoughMoney(user, amnt*cfg.items[sysid].cost) then
- runCmd("/give "..user.." "..cfg.items.[sysid].id.." "..amnt.." "..cfg.items[sysid].meta.." "..cfg.items[sysid].data)
- runCmd("/scoreboard players remove "..user.." coins "..amnt*cfg.items[sysid].cost)
- log("User "..user.." buyed "..cfg.items[sysid].readableID.."x"..amnt.." ("..amnt*cfg.items[sysid].cost.."credits)")
- else
- runCmd("/tellraw "..user.." {\"text\":\"\\u00a74[Shop]: \\u00a7cYou don't have enough money!\\n\\u00a7cYou needs \""..amnt*cfg.items[sysid].cost.."credits to buy it!\"}")
- log("User "..user.." has tried to buy item "..cfg.items[sysid].readableID)
- end
- end
- function buyEffect(user, sysid, duration, amplifier)
- duration = duration or 30
- amplifier = amplifier or 0
- if not user then return end
- if playerHaveEnoughMoney(user, duration/10*(amplifier+1)*cfg.effects[sysid].cost) then
- runCmd("/effect "..user.." "..cfg.effects[sysid].id.." "..duration.." "..amplifier)
- runCmd("/scoreboard players remove "..user.." coins "..duration/10*(amplifier+1)*cfg.effects[sysid].cost)
- 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)")
- else
- 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!\"}")
- log("User "..user.." has tried to buy effect "..cfg.effects[sysid].readableID)
- end
- end
- while true do --main code!!!
- modem.open(256)
- modem.broadcast(256, "terminalWakeUp")
- local e = {event.pull()}
- if e[1]=="modem_message" then
- if e[2]=="buyEffect" then
- buyEffect(e[3], e[4], e[5], e[6])
- else if e[2]=="buyItem" then
- buyItem(e[3], e[4], e[5])
- else if e[2]=="log" then
- log("["..e[3].."]: "..e[4])
- end
- end
- end
- --[[
- ОПИСАНИЕ
- Сервер для магазина на OpenComputers. Требует для работы коммандный блок и IO редстоун блок.
- Из компонентов лучше взять:
- [ Интернет плата ] [Процессор с GPU lvl IV (creative)] [ HDD lvl3 ]
- [EEPROM (Lua BIOS)] [Плата беспр. сети] [ Оперативная память 3.5 ] [ HDD lvl3 ]
- [ Сетевая плата ] [ Оперативная память 3.5 ] [MineOS floppy]
- ]]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement