Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @name WHOSOS {
- @model models\props/cs_office/computer_mouse.mdl
- @inputs Key Screen:wirelink Ram:wirelink Debug:wirelink DHD:wirelink
- @inputs Chevron Iris Open
- @inputs Air MaxAir Energy MaxEnergy Coolant MaxCoolant
- @persist [String Page SubPage]:string #String command and string page
- @persist Text:array Write #Console array output
- @persist Color1 Color2 #Colors
- @persist Refresh #Variable used for refreshing
- @persist [Password Match]:string ScreenSaver L M#Password stuff
- @persist [Username Message]:string IRC:array
- @persist Target:entity TargIndex Players:array
- @persist File:string Data:array FileLine Execute Update
- @persist Cmp1 Cmp2
- @trigger Key Screen Open Chevron Iris #}
- if (first() | dupefinished() | ~Screen) {
- Screen[2041] = 1
- Screen[2042] = 0
- Screen[2024] = 0
- Screen:writeString("-":repeat(30),0,15,999)
- Page = "cmd"
- Color1 = 999
- Color2 = 49
- Username = owner():name():sub(1,10)
- gShare(1)
- }
- if (Page == "cmd") {
- if (Refresh) {
- Screen[2041] = 1
- Screen:writeString("-":repeat(30),0,15,999)
- Refresh = 0
- Line = -1
- for (I = Text:count()-14,Text:count()) {
- Line++
- Screen:writeString(Text[I,string]:sub(1,30)+" ":repeat(30-Text[I,string]:length()),0,Line,Color2)
- }
- }
- if (~Key | clk("exec") ) {
- if (Key == 13 | clk("exec")) {
- Commands = String:explode(" ")
- ArgOffset = 0
- if (Commands[1,string] == "echo" | Commands[1,string] == "y" | Write) {
- if (!Write) {
- CmdLength = Commands[1,string]:length()+2
- ArgOffset = 1
- Text:pushString(String:sub(CmdLength,String:length()))
- } else {Write = 0}
- Line = -1
- for (I = Text:count()-14,Text:count()) {
- Line++
- Screen:writeString(Text[I,string]:sub(1,30)+" ":repeat(30-Text[I,string]:length()),0,Line,Color2)
- }
- }
- Arg1 = Commands[1+ArgOffset,string]
- Arg2 = Commands[2+ArgOffset,string]
- Arg3 = Commands[3+ArgOffset,string]
- # print(Arg2:replace("*",""):toNumber()+":"+Arg3:replace("*",""):toNumber()+":"+Ram[Arg2:replace("*",""):toNumber()])
- if (Arg2:index(1) == "*") {Arg2 = ""+Ram[Arg2:replace("*",""):toNumber()]}
- if (Arg3:index(1) == "*") {Arg3 = ""+Ram[Arg3:replace("*",""):toNumber()]}
- if (Arg1 == "play") {
- soundPlay(Arg3:toNumber(),0,Arg2)
- } elseif (Arg1 == "print") {
- Text:pushString(Arg2)
- Write = 1
- timer("exec",100)
- } elseif (Arg1 == "clear") {
- String=""
- } elseif (Arg1 == "background" | Arg1 == "bg") {
- Screen[2042] = Arg2:toNumber()
- } elseif (Arg1 == "color1") {
- Color1 = Arg2:toNumber()
- } elseif (Arg1 == "color2") {
- Color2 = Arg2:toNumber()
- } elseif (Arg1 == "ls") {
- Page = "life_support"
- Refresh = 1
- } elseif (Arg1 == "players") {
- Page = "players"
- Refresh = 1
- } elseif (Arg1 == "password" | Arg1 == "lock") {
- Password = Arg2
- Page = "password"
- Refresh = 1
- ScreenSaver = randint(1,2)
- } elseif (Arg1 == "irc") {
- Page = "irc"
- Refresh = 1
- } elseif (Arg1 == "help") {
- SubPage = Arg2
- Page = "help"
- Refresh = 1
- } elseif (Arg1 == "target") {
- Page = "target"
- Refresh = 1
- } elseif (Arg1 == "addons") {
- Page = "addons"
- Refresh = 1
- } elseif (Arg1 == "write" | Arg1 == "mov") {
- if (->Ram) {
- Ram[Arg2:toNumber()] = Arg3:toNumber()
- } else {
- Text:pushString(" ***No ram connected.***")
- Write = 1
- }
- } elseif (Arg1 == "read") {
- if (->Ram) {
- Text:pushString("Ram cell "+Arg2:toNumber()+" = "+Ram[Arg2:toNumber()])
- } else {
- Text:pushString(" ***No ram connected.***")
- }
- Write = 1
- } elseif (Arg1 == "add") {
- Ram[Arg2:toNumber()] = Ram[Arg2:toNumber()] + Arg3:toNumber()
- } elseif (Arg1 == "sub") {
- Ram[Arg2:toNumber()] = Ram[Arg2:toNumber()] - Arg3:toNumber()
- } elseif (Arg1 == "mul") {
- Ram[Arg2:toNumber()] = Ram[Arg2:toNumber()] * Arg3:toNumber()
- } elseif (Arg1 == "dev") {
- Ram[Arg2:toNumber()] = Ram[Arg2:toNumber()] - Arg3:toNumber()
- } elseif (Arg1 == "sqrt") {
- Ram[Arg2:toNumber()] = sqrt(Ram[Arg2:toNumber()])
- } elseif (Arg1 == "cbrt") {
- Ram[Arg2:toNumber()] = cbrt(Ram[Arg2:toNumber()])
- } elseif (Arg1 == "cmp") {
- Cmp1 = Arg2:toNumber()
- Cmp2 = Arg3:toNumber()
- } elseif (Arg1 == "jm") {
- if (Cmp1 > Cmp2) {}
- } elseif (Arg1 == "sg" | Arg1 == "stargate") {
- Page = "stargate"
- Refresh = 1
- } elseif (Arg1 == "exec") {
- File = "whosos/exec/"+Arg2+".txt"
- if (fileRead(File)) {
- Data = fileRead(File):explode(";")
- timer("exec",100)
- } else {
- fileLoad(File)
- timer("file",11000)
- }
- }
- String=""
- } elseif (Key == 127) {
- String = String:sub(1,String:length()-1)
- }elseif (Key == 154) {
- }elseif (Key == 9) {
- String=""
- } else {
- String += toChar(Key)
- }
- Str1 = String:sub( 1,30)
- Str2 = String:sub(31,60)
- Screen:writeString(Str1+" ":repeat(30-Str1:length()),0,16,Color1)
- Screen:writeString(Str2+" ":repeat(30-Str2:length()),0,17,Color1)
- }
- }
- if (Page == "life_support") {
- if (Refresh) {
- Screen[2041] = 1
- Screen:writeString("---------life_support---------",0,0,Color2)
- Screen:writeString("Air : 0/0 0%" ,1,2,999)
- Screen:writeString("Energy : 0/0 0%" ,1,5,999)
- Screen:writeString("Coolant: 0/0 0%" ,1,8,999)
- Refresh = 0
- }
- timer("update",1000)
- AirStr = Air+"/"+MaxAir+" "+floor(Air/MaxAir*100)+"%"
- Screen:writeString(AirStr:sub(1,30)+" ":repeat(30-AirStr:length()),10,2,999)
- Screen:writeString(" ":repeat(30),0,3,0)
- Screen:writeString(" ":repeat(floor(Air/MaxAir*28)),1,3,999,999)
- EnergyStr = Energy+"/"+MaxEnergy+" "+floor(Energy/MaxEnergy*100)+"%"
- Screen:writeString(EnergyStr:sub(1,30)+" ":repeat(30-EnergyStr:length()),10,5,999)
- Screen:writeString(" ":repeat(30),0,6,0)
- Screen:writeString(" ":repeat(floor(Energy/MaxEnergy*28)),1,6,999,990)
- CoolantStr = Coolant+"/"+MaxCoolant+" "+floor(Coolant/MaxCoolant*100)+"%"
- Screen:writeString(CoolantStr:sub(1,30)+" ":repeat(30-CoolantStr:length()),10,8,999)
- Screen:writeString(" ":repeat(30),0,9,0)
- Screen:writeString(" ":repeat(floor(Coolant/MaxCoolant*28)),1,9,999,49)
- if (~Key & Key & Key != 13) {Page = "cmd",Refresh = 1}
- }
- if (Page == "players") {
- if (Refresh) {
- Refresh = 0
- Screen[2041] = 1
- }
- findByClass("player")
- Array = findToArray()
- for (I = 1,Array:count()) {
- Player = Array[I,entity]
- ColorVec = teamColor(Player:team())
- Color = ceil(ColorVec:x()/255*9)+""+ceil(ColorVec:y()/255*9)+""+ceil(ColorVec:z()/255*9)
- Screen:writeString(Player:name():sub(1,30),0,I,Color:toNumber())
- }
- if (Key & ~Key & Key != 13) {
- Page = "cmd"
- Refresh = 1
- }
- }
- if (Page == "password") {
- if (Refresh) {
- Refresh = 0
- Screen[2041] = 1
- Screen:writeString("Password: ",0,17,Color2)
- Match=""
- }
- if (ScreenSaver == 1) {
- timer("refresh",1000)
- L++
- Screen:writeString(toChar(randint(97,122)),randint(0,29),randint(0,16),randint(1,999))
- if (L == 250) {ScreenSaver++}
- } elseif (ScreenSaver == 2) {
- timer("refresh",100)
- L++
- if (L == 30) {L = 0,M++}
- Screen:writeString(" ",L,M,0,L*1.9)
- if (L >= 29 & M == 15) {ScreenSaver++,L = 0, M = 0}
- } else {ScreenSaver = 1}
- if (~Key) {
- if (Key == 127) {Match = Match:sub(1,Match:length()-1)}
- elseif (Key == 154) {}
- elseif (Key == 9 ) {Match = ""}
- elseif (Key == 13 ) {
- if (Match == Password) {
- Page = "cmd"
- Refresh = 1
- }
- } else {
- Match += toChar(Key)
- }
- Screen:writeString(Match+" ":repeat(30-Match:length()),9,17,Color1)
- }
- }
- if (Page == "irc") {
- if (Refresh) {
- Refresh = 0
- Screen[2041] = 1
- Screen:writeString("-":repeat(30),0,15,999)
- IRC = array()
- Message = ""
- }
- if (~Key & !Refresh) {
- if (Key == 127) {Message = Message:sub(1,Message:length()-1)}
- elseif (Key == 9) {Message = ""}
- elseif (Key == 154) {}
- elseif (Key == 13) {
- if (Message:index(1) == "/") {
- Arg1 = Message:explode(" ")[1,string]
- Arg2 = Message:explode(" ")[2,string]
- if (Arg1 == "/nick" | Arg1 == "/name") {Username = Arg2}
- if (Arg1 == "/quit" | Arg1 == "/exit" | Arg1 == "/back") {
- Page = "cmd"
- Refresh = 1
- }
- } else {
- gSetStr("IRC",Username+":"+Message)
- }
- Message = ""
- }
- else {Message += toChar(Key)}
- ScrOut = Username+":"+Message+" ":repeat(30-Username:length()+2+Message:length())
- Screen:writeString(ScrOut:sub( 1,30),0,16,999)
- Screen:writeString(ScrOut:sub(31,60),0,17,999)
- }
- timer("refresh",100)
- if (clk("refresh")) {
- Inc = gGetStr("IRC")
- if (Inc != IRC[IRC:count(),string] & !Refresh) {
- IRC:pushString(Inc)
- Line = -1
- for (I = IRC:count(),IRC:count()-14,-1) {
- Line++
- Msg = IRC[I,string]
- Screen:writeString(Msg:sub(1,30)+" ":repeat(30-Msg:length()),0,Line,(I == IRC:count() ? Color1 : Color2))
- if (Msg:length() > 30) {
- Line++
- Screen:writeString(Msg:sub(31,60)+" ":repeat(60-Msg:length()),0,Line,(I == IRC:count() ? Color1 : Color2))
- I--
- }
- }
- }
- Screen:writeString("-":repeat(30),0,15,999)
- }
- }
- if (Page == "help") {
- if (Refresh) {
- Refresh = 0
- Screen[2041] = 1
- Screen:writeString("Help: "+(SubPage ? SubPage : "Menu"),0,0,Color2)
- Screen:writeString("Press any key to continue....",0,17,Color1,Color2,1)
- }
- if (SubPage == "play") {
- Screen:writeString("Use: play path index",0,1,Color1)
- Screen:writeString("Eg. play ",0,2,Color1)
- Screen:writeString("music/portal_still_alive.mp3 0",0,3,Color1)
- } elseif (SubPage == "players") {
- Screen:writeString("Use: players",0,1,Color1)
- Screen:writeString("Eg. players",0,2,Color1)
- Screen:writeString("Shows all players online.",0,3,Color1)
- } elseif (SubPage == "password" | SubPage == "lock") {
- Screen:writeString("Use: password *",0,1,Color1)
- Screen:writeString("Eg. password afeg",0,2,Color1)
- Screen:writeString("Eg. lock abcd",0,3,Color1)
- Screen:writeString("Locks the computer.",0,4,Color1)
- } elseif (SubPage == "irc") {
- Screen:writeString("Use: irc",0,1,Color1)
- Screen:writeString("Eg. irc",0,2,Color1)
- Screen:writeString("Eg. irc",0,3,Color1)
- Screen:writeString("Chat to others.",0,4,Color1)
- Screen:writeString("Commands:",0,6,Color1)
- Screen:writeString("/nick nickname",0,7,Color1)
- Screen:writeString("/name nickname",0,8,Color1)
- Screen:writeString("/quit /exit /back",0,9,Color1)
- } elseif (SubPage == "ls" | SubPage == "life_support") {
- Screen:writeString("Use: ls",0,1,Color1)
- Screen:writeString("eg. ls",0,2,Color1)
- Screen:writeString("View life support status.",0,3,Color1)
- } elseif (SubPage == "addons") {
- Screen:writeString("Use: addons",0,1,Color1)
- Screen:writeString("eg. addons",0,2,Color1)
- Screen:writeString("View loaded addons/extensions.",0,3,Color1)
- } elseif (SubPage == "target") {
- Screen:writeString("Use: target",0,1,Color1)
- Screen:writeString("eg. target",0,2,Color1)
- Screen:writeString("Target players.",0,3,Color1)
- } elseif (SubPage == "write" & ->Ram) {
- Screen:writeString("Use: write index value",0,1,Color1)
- Screen:writeString("eg. write 12 118",0,2,Color1)
- Screen:writeString("Write value to ram",0,3,Color1)
- } elseif (SubPage == "read" & ->Ram) {
- Screen:writeString("Use: read index",0,1,Color1)
- Screen:writeString("eg. read 12",0,2,Color1)
- Screen:writeString("read value from ram",0,3,Color1)
- } else {
- Screen:writeString("Use: help *",0,1,Color1)
- Screen:writeString("eg. help password",0,2,Color1)
- Screen:writeString("Choices:",0,4,Color1)
- Screen:writeString("irc",0,6,Color1)
- Screen:writeString("password",0,7,Color1)
- Screen:writeString("ls",0,8,Color1)
- Screen:writeString("life_support",0,9,Color1)
- Screen:writeString("players",0,10,Color1)
- Screen:writeString("play",0,11,Color1)
- Screen:writeString("addons",0,12,Color1)
- Screen:writeString("target",0,13,Color1)
- Screen:writeString("echo | y",0,14,Color1)
- Screen:writeString("read",0,15,Color1)
- Screen:writeString("write",0,16,Color1)
- }
- if (Key & ~Key & Key != 13) {
- Page = "cmd"
- Refresh = 1
- }
- }
- if (Page == "target") {
- if (Refresh) {
- Screen[2041] = 1
- findByClass("player")
- findExcludePlayer(owner())
- Players = findToArray()
- Refresh = 0
- }
- timer("Update",500)
- if (~Key) {
- if (Key == 119 | Key == 17) {
- if (TargIndex > 1) {TargIndex--}
- }
- if (Key == 115 | Key == 18) {
- if (TargIndex < Players:count()) {TargIndex++}
- }
- if (Key == 127) {Page = "cmd",Refresh = 1}
- for (I = 1,Players:count()) {
- Name = Players[I,entity]:name():sub(1,30)
- Screen:writeString(Name+" ":repeat(30-Name:length()),0,I,999,(I == TargIndex ? 900 : 0),(I==TargIndex))
- }
- Target = Players[TargIndex,entity]
- }
- Screen:writeString(" ":repeat(30),0,10,999)
- Screen:writeString("Position: "+round(Target:pos()),0,10,999)
- }
- if (Page == "addons") {
- if (Refresh) {
- Refresh = 0
- Screen[2041] = 1
- }
- Screen:writeString("Ram extension is: "+(->Ram ? "active. " : "inactive."),0,2,Color1)
- Screen:writeString("Scr extension is: "+(->Debug ? "active. " : "inactive."),0,3,Color1)
- Screen:writeString("DHD extension is: "+(->DHD ? "active. " : "inactive."),0,4,Color1)
- if (~Key & Key & Key != 13) {
- Page = "cmd"
- Refresh = 1
- }
- }
- if (Page == "stargate") {
- if (Refresh) {
- Screen[2041] = 1
- Screen:writeString(" ",0,0,999)
- Screen:writeString(" ****##**** ",0,0,999)
- Screen:writeString(" * * ",0,1,999)
- Screen:writeString(" # # ",0,2,999)
- Screen:writeString(" # # ",0,3,999)
- Screen:writeString(" * * ",0,4,999)
- Screen:writeString(" * * ",0,5,999)
- Screen:writeString(" # # ",0,6,999)
- Screen:writeString(" # # ",0,7,999)
- Screen:writeString(" * * ",0,8,999)
- Screen:writeString(" * * ",0,9,999)
- Screen:writeString(" * * ",0,10,999)
- Screen:writeString(" # # ",0,11,999)
- Screen:writeString(" # # ",0,12,999)
- Screen:writeString(" * * ",0,13,999)
- Screen:writeString(" * * ",0,14,999)
- Screen:writeString(" *##****##* ",0,15,999)
- Screen:writeString(" ",0,16,999)
- Refresh = 0
- }
- ChevColor=array()
- if (~Chevron | changed(Refresh)) {
- for (X = 0, 7) {ChevColor[X,number] = (Chevron >= X) ? 90 : 900}
- soundPlay(Chevron,0,"stargate/walter/c"+Chevron+".mp3")
- Screen:writeString("##",14,0,ChevColor[7,number]) #chevron 7
- Screen:writeString("#",8,2,ChevColor[6,number])#chevron 6
- Screen:writeString("#",7,3,ChevColor[6,number])#chevron 6
- Screen:writeString("#",21,2,ChevColor[1,number])#chevron 1
- Screen:writeString("#",22,3,ChevColor[1,number])#chevron 1
- Screen:writeString("#",6,6,ChevColor[5,number])#chevron 5
- Screen:writeString("#",6,7,ChevColor[5,number])#chevron 5
- Screen:writeString("#",23,6,ChevColor[2,number])#chevron 2
- Screen:writeString("#",23,7,ChevColor[2,number])#chevron 2
- Screen:writeString("#",23,11,ChevColor[3,number])#chevron 3
- Screen:writeString("#",22,12,ChevColor[3,number])#chevron 3
- Screen:writeString("#",6,11,ChevColor[4,number])#chevron 4
- Screen:writeString("#",7,12,ChevColor[4,number])#chevron 4
- }
- if (Key & ~Key & Key != 13) {Page = "cmd",Refresh = 1}
- if (~Iris | changed(Refresh) | ~Open) {
- Screen:writeString(((Iris) ? "=" : " "):repeat(10),10,1,555,29*Open)
- Screen:writeString(((Iris) ? "=" : " "):repeat(12),9 ,2,555,29*Open)
- Screen:writeString(((Iris) ? "=" : " "):repeat(14),8 ,3,555,29*Open)
- Screen:writeString(((Iris) ? "=" : " "):repeat(16),7 ,4,555,29*Open)
- Screen:writeString(((Iris) ? "=" : " "):repeat(16),7 ,5,555,29*Open)
- Screen:writeString(((Iris) ? "=" : " "):repeat(16),7 ,6,555,29*Open)
- Screen:writeString(((Iris) ? "=" : " "):repeat(16),7 ,7,555,29*Open)
- Screen:writeString(((Iris) ? "=" : " "):repeat(16),7 ,8,555,29*Open)
- Screen:writeString(((Iris) ? "=" : " "):repeat(16),7 ,9,555,29*Open)
- Screen:writeString(((Iris) ? "=" : " "):repeat(16),7 ,10,555,29*Open)
- Screen:writeString(((Iris) ? "=" : " "):repeat(16),7 ,11,555,29*Open)
- Screen:writeString(((Iris) ? "=" : " "):repeat(14),8 ,12,555,29*Open)
- Screen:writeString(((Iris) ? "=" : " "):repeat(12),9 ,13,555,29*Open)
- Screen:writeString(((Iris) ? "=" : " "):repeat(10),10,14,555,29*Open)
- }
- }
- if (->Debug) {
- timer("Debug",1000)
- Debug[2041] = 1
- Debug:writeString("Players online: "+numPlayers()+"/"+maxPlayers(),0,2,Color2)
- Time = round(curtime())
- H = floor(Time/3600)
- M = floor(Time/60)%60
- S = Time-H*3600-M*60
- Debug:writeString("Uptime: "+H+":"+M+":"+S,0,3,Color2)
- Debug:writeString("Ops : "+ops(),0,4,Color2)
- Debug:writeString("Ram: "+(->Ram ? "Active." : "Invalid."),0,5,(->Ram ? Color2 : 900))
- }
- if (fileClk(File) | clk("file")) {
- if (fileRead(File)) {printColor(vec(0,255,0),"File "+File+" loaded!")} else {printColor(vec(255,0,0),"File "+File+" not loaded!")}
- Data = fileRead(File):explode(";")
- FileLine = 0
- Update = Data[1,string]:sub(2,5):toNumber()
- if (!Update) {Update = 500}
- timer("exec",100)
- }
- if (clk("exec")) {
- FileLine++
- String = Data[FileLine,string]:replace("\n","")
- Execute = 1
- if (FileLine < Data:count()) {
- timer("exec",Update)
- } else {timer("done",100)}
- }
- if (clk("done")) {
- Execute = 0
- FileLine = 0
- Data = array()
- File = ""
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement