Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- ___ _ _ ___ _ _
- -- | _ \ __ _ (_) | | / __| | |_ __ _ | |_ _ _ ___
- -- | / / _` | | | | | \__ \ | _| / _` | | _| | +| | (_-<
- -- |_|_\ \__,_| _|_|_ _|_|_ |___/ _\__| \__,_| _\__| \_,_| /__/_
- -- _|"""""|_|"""""|_|"""""|_|"""""|_|"""""|_|"""""|_|"""""|_|"""""|_|"""""|_|"""""|
- -- "`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'
- --
- -- RailStatus : IG Client
- --
- -- La seconde génération de RailStatus (http://pastebin.com/js3pN87r), un programme permettant
- -- de connaître en temps réel et en jeu (in game) le statut des aiguillages d'un réseau ferroviaire en
- -- utilisant RailCraft, ComputerCraft et RedPower
- --
- -- Utilisation :
- -- 1. Dans un ordinateur, importer ce programme depuis Pastebin :
- -- pastebin get KsJ9gukb railstatusigc
- -- 2. Lancer le programme :
- -- railstatusig [côté duquel le bundled câble est connecté] [ID de cet ordinateur] [ID de l'ordinateur serveur]
- -- Exemple : railstatusigc left 2 1
- --
- -- Serveur : http://pastebin.com/KAy0Kqfw
- -- Dépôt Github : https://github.com/EaSyCompanyFr/RailStatus
- term.clear()
- term.setCursorPos(1,1)
- print("RailStatus : IG Client is starting...")
- -- Arguments passés au programme
- args = {...}
- if table.getn(args) < 2 then
- print(" One or more parameters are missing")
- return
- end
- -- --------------------------------------------------------
- -- Constantes
- -- De quel côté de l'ordinateur arrive le bundled cable ?
- CABLE_SIDE = args[1]
- print(" Cable side : "..CABLE_SIDE)
- -- Identifiant de l'ordinateur regroupant les aiguillages
- COMPUTER_ID = args[2]
- print(" Computer ID : "..COMPUTER_ID)
- -- ID réel de l'ordinateur serveur
- SERVER_COMPUTER_ID = tonumber(args[3])
- print(" Server computer ID : "..SERVER_COMPUTER_ID)
- -- Récupération du premier type de périphérique détecté
- function getFirstPeripheralSide(peripheral_type)
- for k,side in pairs(redstone.getSides()) do
- if peripheral.isPresent(side) and peripheral.getType(side) == peripheral_type then
- return side
- end
- end
- return false
- end
- -- Modem
- MODEM_SIDE = getFirstPeripheralSide("modem")
- if not MODEM_SIDE then
- print(" Modem not detected on this computer")
- return
- end
- print(" Modem side : "..MODEM_SIDE)
- print("")
- print("To stop RailStatus, hold CTRL+T for some seconds.")
- -- Tableau de correspondance nom de couleur > identifiant décimal
- COLORS_ARRAY = {}
- COLORS_ARRAY["white"] = colors.white
- COLORS_ARRAY["orange"] = colors.orange
- COLORS_ARRAY["magenta"] = colors.magenta
- COLORS_ARRAY["lightBlue"] = colors.lightBlue
- COLORS_ARRAY["yellow"] = colors.yellow
- COLORS_ARRAY["lime"] = colors.lime
- COLORS_ARRAY["pink"] = colors.pink
- COLORS_ARRAY["gray"] = colors.gray
- COLORS_ARRAY["lightGray"] = colors.lightGray
- COLORS_ARRAY["cyan"] = colors.cyan
- COLORS_ARRAY["purple"] = colors.purple
- COLORS_ARRAY["blue"] = colors.blue
- COLORS_ARRAY["brown"] = colors.brown
- COLORS_ARRAY["green"] = colors.green
- COLORS_ARRAY["red"] = colors.red
- COLORS_ARRAY["black"] = colors.black
- -- --------------------------------------------------------
- -- Fonctions
- -- Teste un bundled cable avec toutes les couleurs possible, et retourne un tableau indexé contenant
- -- en index la couleur et en valeur un booléen (sous forme d'entier) indiquant si le signal redstone est actif ou non
- function getBundledInputAsTable(side)
- local ret = {}
- for key,value in pairs(COLORS_ARRAY) do
- ret[key] = redstone.testBundledInput(side, value) and 1 or 0 -- Convertit le booléen retourné en entier
- end
- return ret
- end
- -- --------------------------------------------------------
- -- Démarrage du programme
- rednet.open(MODEM_SIDE)
- while true do
- local event, p1, p2, p3 = os.pullEvent()
- if event == "rednet_message" then
- local senderId = p1
- local message = p2
- local distance = p3
- redstone.setBundledOutput(CABLE_SIDE, tonumber(message))
- elseif event == "redstone" then
- local bundled_cable = getBundledInputAsTable(CABLE_SIDE) -- On chope le statut de chaque câbles de couleur
- rednet.send(SERVER_COMPUTER_ID, COMPUTER_ID.."|"..textutils.serialize(bundled_cable).."|"..os.getComputerID(), true)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement