@name Smart Opener @inputs S:wirelink @outputs Door @persist [P Distance A]:array Target:entity D Z @persist Color:vector @trigger interval(500) if (first()) { # Run On Chat runOnChat(1) #Distance D = 50 # Clear Screen S:writeString("Auto Door Opener - ",0,0,1000,Color,0) S:writeString(" ",0,1,1000,Color,0) S:writeString(" ",0,2,1000,Color,0) S:writeString(" ",0,3,1000,Color,0) S:writeString(" ",0,4,1000,Color,0) S:writeString(" ",0,5,1000,Color,0) S:writeString(" ",0,6,1000,Color,0) S:writeString(" ",0,7,1000,Color,0) S:writeString(" ",0,8,1000,Color,0) S:writeString(" ",0,9,1000,Color,0) S:writeString(" ",0,10,1000,Color,0) S:writeString(" ",0,11,1000,Color,0) S:writeString(" ",0,12,1000,Color,0) S:writeString(" ",0,13,1000,Color,0) S:writeString(" ",0,14,1000,Color,0) S:writeString(" ",0,15,1000,Color,0) S:writeString(" ",0,16,1000,Color,0) S:writeString(" ",0,17,1000,Color,0) # Hints } if (changed(P:count()) | changed(Door)) { # Clear Screen S:writeString("Auto Door Opener - ",0,0,1000,Color,0) S:writeString(" ",0,1,1000,Color,0) S:writeString(" ",0,2,1000,Color,0) S:writeString(" ",0,3,1000,Color,0) S:writeString(" ",0,4,1000,Color,0) S:writeString(" ",0,5,1000,Color,0) S:writeString(" ",0,6,1000,Color,0) S:writeString(" ",0,7,1000,Color,0) S:writeString(" ",0,8,1000,Color,0) S:writeString(" ",0,9,1000,Color,0) S:writeString(" ",0,10,1000,Color,0) S:writeString(" ",0,11,1000,Color,0) S:writeString(" ",0,12,1000,Color,0) S:writeString(" ",0,13,1000,Color,0) S:writeString(" ",0,14,1000,Color,0) S:writeString(" ",0,15,1000,Color,0) S:writeString(" ",0,16,1000,Color,0) S:writeString(" ",0,17,1000,Color,0) # Update Allowed Players for (X=1,P:count()) { E2 = P[X,entity] S:writeString(""+E2:name(),0,X,1000,Color,0) if (P:count() >= 1) { S:writeString("Players Allowed: " + P:count() + " ",0,17,1000,Color,0) } } } # If Owner Talks if (chatClk(owner())) { # Chat String Str = owner():lastSaid():explode(" ") if(Str[1,string]=="!add") { TP = findPlayerByName(Str[2,string]) if(TP:isPlayer()) { Target = TP P:pushEntity(TP) } } if(Str[1,string]=="!remove" | Str[1,string]=="!remove") { TP = findPlayerByName(Str[2,string]) if(TP:isPlayer()) { while(Z < 20) { if(TP == P[Z,entity]) { P:remove(Z) } Z++ } } Z = 0 } } # Update Allowed Player Distance Distance1 = round(((entity():pos() - P[1,entity]:pos()):length())) Distance2 = round(((entity():pos() - P[2,entity]:pos()):length())) Distance3 = round(((entity():pos() - P[3,entity]:pos()):length())) Distance4 = round(((entity():pos() - P[4,entity]:pos()):length())) Distance5 = round(((entity():pos() - P[5,entity]:pos()):length())) Distance6 = round(((entity():pos() - P[6,entity]:pos()):length())) Distance7 = round(((entity():pos() - P[7,entity]:pos()):length())) Distance8 = round(((entity():pos() - P[8,entity]:pos()):length())) Distance9 = round(((entity():pos() - P[9,entity]:pos()):length())) Distance10 = round(((entity():pos() - P[10,entity]:pos()):length())) # Open Door For Allowed / Update Screen if(Distance1