 
                
                463 posts
                
                    
                        Location
                        Star Wars
                    
                
             
            
                Posted 11 April 2016 - 01:58 PM
                
os.loadAPI('ocs/apis/sensor')
while true do
  handle = sensor.wrap('left').getTargets()
  if handle.sewbacca then
    local pos = handle.sewbacca.Position.X
    local pos2 = handle.sewbacca.Position.Z
    if pos > pos2 then pos = pos else pos = pos2 end
    if pos <= 2 then
      redstone.setOutput('top', true)
    else
      redstone.setOutput('top', false)
    end
  else
	redstone.setOutput('top', false)
  end
  sleep(0)
end
I want to create an auto door opener.
This script doesn't works (The door doesn't open/close)
(Scanner Proximity Card Mk. I)
Edited on 11 April 2016 - 02:59 PM
                
             
         
        
        
            
            
                
                     
                
                7083 posts
                
                    
                        Location
                        Tasmania (AU)
                    
                
             
            
                Posted 11 April 2016 - 02:46 PM
                Using print() calls, pinpoint the exact "if" branch that isn't going in the direction you expect, and get it to tell you what the relevant variables are set to at that time.
                
             
         
        
        
            
            
                
                     
                
                463 posts
                
                    
                        Location
                        Star Wars
                    
                
             
            
                Posted 11 April 2016 - 04:40 PM
                Using print() calls, pinpoint the exact "if" branch that isn't going in the direction you expect, and get it to tell you what the relevant variables are set to at that time.
It seems like the while loop will runs just one time.
 
         
        
        
            
            
                
                     
                
                749 posts
                
                    
                        Location
                        BOO!!
                    
                
             
            
                Posted 11 April 2016 - 05:01 PM
                Check the API file. It may be calling 'break'
                
             
         
        
        
            
            
                
                     
                
                1426 posts
                
                    
                        Location
                        Does anyone put something serious here?
                    
                
             
            
                Posted 11 April 2016 - 05:38 PM
                Check the API file. It may be calling 'break'
That isn't how break works. Break isn't a function rather than a statement, you can only break out of a loop in the same function.
 
         
        
        
            
            
                
                     
                
                463 posts
                
                    
                        Location
                        Star Wars
                    
                
             
            
                Posted 11 April 2016 - 06:34 PM
                Check the API file. It may be calling 'break'
SquidDev is right, but also I have just this code.
Edited on 11 April 2016 - 04:38 PM
                
             
         
        
        
            
            
                
                     
                
                749 posts
                
                    
                        Location
                        BOO!!
                    
                
             
            
                Posted 11 April 2016 - 07:07 PM
                Check the API file. It may be calling 'break'
That isn't how break works. Break isn't a function rather than a statement, you can only break out of a loop in the same function.
I meant, like, 
function breakAPI.doBreak()
  break
end
 
         
        
        
            
            
                
                     
                
                1426 posts
                
                    
                        Location
                        Does anyone put something serious here?
                    
                
             
            
                Posted 11 April 2016 - 08:22 PM
                I meant, like,
function breakAPI.doBreak()
  break
end
That isn't how break works. Break isn't a function rather than a statement, you can only break out of a loop in the same function.
while true do
  break -- Valid. Inside a loop
end
break -- Invalid: outside a loop (you get a "invalid: no loop to break" syntax error when compiling)
local function doBreak() break end
while true do
  doBreak() -- Invalid: doBreak doesn't know anything about this loop. From its perspective, it isn't in a loop. You'll get the same error as above.
end
Edited on 11 April 2016 - 06:24 PM
                
             
         
        
        
            
            
                
                     
                
                7083 posts
                
                    
                        Location
                        Tasmania (AU)
                    
                
             
            
                Posted 11 April 2016 - 11:34 PM
                If the loop isn't repeating, then the most likely point of failure is your sensor call. Break it up into multiple lines, stick in more print statements, isolate the exact call that terminates the script.