Advertisement
AdslHouba

Commande pour controler le temps (Computercraft)

Oct 12th, 2016
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.46 KB | None | 0 0
  1. -- Explication de code
  2. -- https://www.youtube.com/watch?v=KfWCjY8V4C4
  3.  
  4. chatbox=peripheral.wrap("right")
  5. modNuit='off'
  6. redstone.setOutput("back",false)
  7. encours=false
  8. config={
  9.     debutNuit=19,
  10.     finNuit=6,
  11.     preTime={
  12.         nuit=20,
  13.         matin=5,
  14.         soir=18,
  15.         midi=12
  16.     }
  17. }
  18. chatbox.say('Reboot',9999,false,'Gestion du temps')
  19.  
  20. function calcul(debut,jusqua,letime)
  21.     if debut>jusqua then
  22.         print(letime..'>'..debut..' or '..letime..'<'..jusqua)
  23.         return letime>debut or letime<jusqua  
  24.     else
  25.         print(letime..'>'..debut..' and '..letime..'<'..jusqua)
  26.         return letime>debut and letime<jusqua
  27.     end
  28. end
  29. function avanceTemps(jusqua,ignoreModNuit)
  30.     -- securite une seul modification temporel
  31.     if encours==false then
  32.         encours=true
  33.        
  34.         -- Enregistrement du debut
  35.         letime=os.time()
  36.         debut=letime-0.1
  37.                    
  38.         chatbox.say('avance du temps jusqu\'a '..jusqua,9999,false,'Gestion du temps')
  39.  
  40.         redstone.setOutput("back",true)
  41.         while ( calcul(debut,jusqua,letime) and (ignoreModNuit or modNuit=='off') ) do     
  42.             os.sleep(1)
  43.             letime=os.time()
  44.         end
  45.         redstone.setOutput("back",false)
  46.         encours=false
  47.     else
  48.         chatbox.say('Deja encours',9999,false,'Gestion du temps')  
  49.     end
  50. end
  51.  
  52.  
  53. function gestionTemps()
  54.     while true do
  55.         if modNuit=='off' then
  56.             letime=os.time()
  57.             if letime>config.debutNuit or letime<config.finNuit then
  58.                 avanceTemps(config.finNuit,false)
  59.             end
  60.         end
  61.         os.sleep(20)
  62.     end
  63. end
  64. function gestionCommande()
  65.  
  66.     while true do
  67.         local event, player, args = os.pullEvent("command")
  68.        
  69.         if args[1]=='nuit' then
  70.             if args[2]=='on' then
  71.                 modNuit='on'
  72.                 chatbox.say('Mode nuit : on',9999,false,'Gestion du temps')
  73.             elseif args[2]=='off' then
  74.                 modNuit='off'
  75.                 chatbox.say('Mode nuit : off',9999,false,'Gestion du temps')   
  76.             else
  77.                 if modNuit=='off' then
  78.                     chatbox.say('Mode nuit : off',9999,false,'Gestion du temps')   
  79.                 else
  80.                     chatbox.say('Mode nuit : on',9999,false,'Gestion du temps')
  81.                 end
  82.             end
  83.         elseif args[1]=='time' then
  84.             verChiffre=tonumber(args[2])
  85.             if verChiffre==nil then
  86.                 if config.preTime[args[2]] then
  87.                     avanceTemps(config.preTime[args[2]],true)
  88.                 else
  89.                     liste=''
  90.                     table.foreach(config.preTime,function(nom,temp)
  91.                         liste=liste..' '..nom
  92.                     end)
  93.                     chatbox.say('Commande invalide, pre reglage : '..liste,9999,false,'Gestion du temps')  
  94.                 end
  95.             else
  96.                 avanceTemps(verChiffre,true)           
  97.             end        
  98.         end
  99.     end
  100. end
  101.  
  102. parallel.waitForAll(gestionTemps,gestionCommande)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement