@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<D){Door = 1 Color = teamColor(P[1,entity]:team()) S:writeString("Auto Door Opener - OPEN ",0,0,1000,Color,0)}
elseif(Distance2<D){Door = 1 Color = teamColor(P[2,entity]:team()) S:writeString("Auto Door Opener - OPEN ",0,0,1000,Color,0)}
elseif(Distance3<D){Door = 1 Color = teamColor(P[3,entity]:team()) S:writeString("Auto Door Opener - OPEN ",0,0,1000,Color,0)}
elseif(Distance4<D){Door = 1 Color = teamColor(P[4,entity]:team()) S:writeString("Auto Door Opener - OPEN ",0,0,1000,Color,0)}
elseif(Distance5<D){Door = 1 Color = teamColor(P[5,entity]:team()) S:writeString("Auto Door Opener - OPEN ",0,0,1000,Color,0)}
elseif(Distance6<D){Door = 1 Color = teamColor(P[6,entity]:team()) S:writeString("Auto Door Opener - OPEN ",0,0,1000,Color,0)}
elseif(Distance7<D){Door = 1 Color = teamColor(P[7,entity]:team()) S:writeString("Auto Door Opener - OPEN ",0,0,1000,Color,0)}
elseif(Distance8<D){Door = 1 Color = teamColor(P[8,entity]:team()) S:writeString("Auto Door Opener - OPEN ",0,0,1000,Color,0)}
elseif(Distance9<D){Door = 1 Color = teamColor(P[9,entity]:team()) S:writeString("Auto Door Opener - OPEN ",0,0,1000,Color,0)}
elseif(Distance10<D){Door = 1 Color = teamColor(P[10,entity]:team()) S:writeString("Auto Door Opener - OPEN ",0,0,1000,Color,0)}
else{Door = 0 Color = vec(0,0,0) S:writeString("Auto Door Opener - CLOSED ",0,0,1000,Color,0)}