@name Smart Opener v2.0 @inputs CS:wirelink @outputs Door @persist Player:array [ScreenPosY X ScreenID Distance]:number TargetPlayer:entity @trigger runOnChat(1) interval(1000) function void screenDefault() { #SCREEN CS:egpClear() #BackGround CS:egpBox(1,vec2(256,256),vec2(512,512)) CS:egpColor(1,vec(255,128,0)) CS:egpMaterial(1, "gui/center_gradient") #TitleBox CS:egpBox(2,vec2(256,40),vec2(512,64)) CS:egpColor(2,vec(0,204,0)) CS:egpMaterial(2, "gui/center_gradient") #Title CS:egpText(3,"Player List",vec2(256,16)) CS:egpAlign(3,1) CS:egpColor(3,vec(0,0,153)) CS:egpSize(3,50) ScreenPosY = 80 ScreenID = 10 X = 0 } function void screenListPlayers() { while(X <= Player:count()) { CS:egpText(ScreenID,Player[X,entity]:name(),vec2(256,ScreenPosY)) CS:egpAlign(ScreenID,1) CS:egpColor(ScreenID,vec(204,255,204)) CS:egpSize(ScreenID,30) ScreenID++ ScreenPosY = ScreenPosY + 32 X++ } } if(first() | duped()){ CS:egpClear() hint("Smart Opener v2.0 - Made by Mentin", 15) print("--------------------------------------------------") print("!add - To add a player") print("!remove - To remove a player") print("!list - To get the list of players") print("!clear - To clear the list of players") print("--------------------------------------------------") screenDefault() } #SCREEN #EmptyTitle if(Player:count() == 0) { CS:egpText(10,"Empty",vec2(256,192)) CS:egpAlign(10,1) CS:egpColor(10,vec(random(255),random(255),random(255))) CS:egpSize(10,100) } #VALUES Distance = 50 Chat = owner():lastSaid():explode(" ") #ADDING PLAYERS if(Chat[1,string]=="!add" & chatClk(owner())){ TempX1 = 0 TargetPlayer = findPlayerByName(Chat[2,string]) if(TargetPlayer:isPlayer()){ while(TempX1 <= Player:count()+1) { if(TargetPlayer:name():lower()==Player[TempX1,entity]:name():lower()){ hint("Player already on list!",10) break } if(TempX1 == Player:count()+1) { Player:pushEntity(TargetPlayer) screenDefault() screenListPlayers() break } TempX1++ } } else { hint("Player not found",10) } } #EMOVING PLAYERS if(Chat[1,string]=="!remove"& chatClk(owner())){ TempX2 = 0 TargetPlayer = findPlayerByName(Chat[2,string]) if(TargetPlayer:isPlayer()){ while(TempX2 <= Player:count()+1){ if(TargetPlayer == Player[TempX2,entity]){ Player:remove(TempX2) screenDefault() screenListPlayers() } TempX2++ } } } #LIST PLAYERS if(Chat[1,string]=="!list" & chatClk(owner())){ TempX3 = 1 print("-----------------") while(Player[TempX3,entity]:name()!= "") { print(Player[TempX3,entity]:name()) TempX3++ } print("-----------------") } #REMOVE ALL PLAYERS if(Chat[1,string]=="!clear"& chatClk(owner())){ TempX4 = 1 while (TempX4 < Player:count()+1){ Player:remove(TempX4) TempX4+1 } screenDefault() screenListPlayers() } #OPEN FADING DOOR Door = 0 Distance = 100 #TempX5 = 1 findByClass("player") PlayerFound = findClosest(entity():pos()) if(PlayerFound:pos():distance(entity():pos())