-
Posts
70 -
Joined
-
Last visited
-
Days Won
6
Content Type
Forums
Profiles
Events
Gallery
Downloads
Articles
Posts posted by Geo
-
-
Yes, Ineed I already asked about this feature before. In my opinion it would be good to add to lua new function like et.ForceCvar( clientnum, cvar, value ) just to force target client's cvar.
That would suit my purpose fine, and better to give me a way to change specific client's cvars instead of forcing every connected players. I hope that this will be added at some point.
-
Whilst I was working on a script I came up with a particular idea that I think would be quite useful to have available for server administrators.
Is it possible to unlock cvars (mainly one's to aid with cheat detection r_shownormals and cg_thirdperson eg) for targeted clients? This could be a new permission flag to coincide with shrubbot, or for use with rcon maybe (if either of those are even possible).
It would be useful to be able to use these types of cvars for spectating players suspected of wh for example, it would save time in some cases if a demo was unnecessary (I would usually take a demo for solid proof and use of timestamp etc) but it would allow coherent judgements to be made from spectator position. I could see security issues especially if someone had unauthorised rcon access but I still think it's a worthwhile idea. Thanks.
-
Subnet bans should be displayed in shrubbot.cfg alongside normal bans.
Shrubbot.cfg is the file that holds all the level definitions, custom commands, bans, warns and subnetbans for the server shrubbot. These configuration settings are hand editable. If the shrubbot.cfg file does not exists when !ban or!setlevel is used, a new one with default settings is created. The settings in the shrubbot.cfg are divided into following data blocks.
-
I've seen this lots on Jaymod but never in silEnT.. I guess it's a console exploit rather than a MOD bug.. But maybe the silEnT team can prevent any 'says' from being printed if the client is in connecting status.
That's a good idea, or something that limits the amount of msgs within a time period to prevent any spam perhaps.
-
Created a script that works and accounts for use of /team and !putteam cmds. However it's quite buggy and I don't really like it, so i've stopped working on it. Thought i'd upload something that works to an extent anyway.
function et_ClientConnect(clientNum, firstTime, isBot) if isBot == 1 then return end local team = et.gentity_get(clientNum, "sess.sessionTeam") if team == 3 then et.gentity_set(clientNum, "sess.shoutcaster", 1) et.gentity_set(clientNum, "sess.spec_invite", 3) return true end end function et_ClientCommand( clientNum, command) if command == "team" and et.trap_Argv(1) ~= "s" then et.gentity_set(clientNum, "sess.shoutcaster", 0) et.gentity_set(clientNum, "sess.spec_invite", 0) return true elseif command == "team" and et.trap_Argv(1) == "s" then et.gentity_set(clientNum, "sess.shoutcaster", 1) et.gentity_set(clientNum, "sess.spec_invite", 3) return true end end function et_ClientCommand( clientNum, command) if command ~= "say" then return end local targetClientNum = et.ClientNumberFromString(et.trap_Argv(2)) if et.trap_Argv(1) == "!putteam" and targetClientNum ~= nil and et.trap_Argv(3) == "s" then et.gentity_set(targetClientNum, "sess.shoutcaster", 1) et.gentity_set(targetClientNum, "sess.spec_invite", 3) return true end if et.trap_Argv(1) == "!putteam" and targetClientNum ~= nil and et.trap_Argv(3) ~= "s" then et.gentity_set(targetClientNum, "sess.shoutcaster", 0) et.gentity_set(targetClientNum, "sess.spec_invite", 0) return true end end
-
Getting !putteam to work from spec to a team is the only problem now. I tried what Sol suggested but I can't seem to make the client either be shoutcaster when !putteam name/slot s is done or remove shoutcaster when !putteam name/slot r/b is done. Any ideas?
-
I was trying it like this for example: (in mapconfigs/default.cfg)
[players 11-*] set g_excludedMaps ":fragmaze_fixed:" [players 5-*] set g_excludedMaps ":te_valhalla:" [players 0-15] set g_excludedMaps ":venice:" [/players] set g_excludedMaps ":oasis:fueldump:battery:railgun:"
I had the maps with limitations at the top and underneath the maps I want to permanently exclude. The problem is, it only executes the second g_excludedmaps and none of the map with limited amounts of players work. The [players] blocks are not working for me. Have I made an obvious error or something? Thanks
-
Ok thanks for clarifying. Is there a way to change shoutcaster status if the client uses !putteam (like team) to move clients? I did try a similar way but I assumed I would need to get the targetClientNum as et.trap_Argv(1) and the team as (2). (like !putteam name/slot r/b/s) but this didn't work.
-
I managed to fix the bot problem but in a different way. I tested the et.ClientBegin callback but this is executed only once per map, and I mainly wanted clients to become shoutcaster automatically as soon as they connect. This is why I used et.ClientConnect instead. Also, this allowed me to use the local isBot value and add a line of code to exclude bots if isBot returns 1. The script works when clients connect, they can join a team and become shoutcaster once they become a spectator. However, the problem now is use of the !putteam command. I tried to look for clients executing this command but it didn't work, so if any help can be offered it would be useful. I'd like for when clients use the command to join a team it removes shoutcaster, and when they become a spectator they become shoutcaster (same behaviour as "team..." command).
This is the code:
function et_ClientConnect(clientNum, firstTime, isBot) if isBot == 1 then return end local team = et.gentity_get(clientNum, "sess.sessionTeam") if team == 3 then et.gentity_set(clientNum, "sess.shoutcaster", 1) et.gentity_set(clientNum, "sess.spec_invite", 3) return true elseif team == 0 then et.gentity_set(clientNum, "sess.shoutcaster", 0) return true end end function et_ClientCommand( clientNum, command) if command == "team" and et.trap_Argv(1) ~= "s" then et.gentity_set(clientNum, "sess.shoutcaster", 0) return true elseif command == "team" and et.trap_Argv(1) == "s" then et.gentity_set(clientNum, "sess.shoutcaster", 1) et.gentity_set(clientNum, "sess.spec_invite", 3) return true end end
A couple of other things worth mentioning are that when I am running this script, the inactivity detection does not seem to work, I was afk for over 10 minutes and still remained in a team. This worked fine without the script being loaded. Perhaps it is using something similar to !putteam? I must note that !putteam works when the client is in a team, but it doesn't work from spec (as it won't let you !putteam a client into a team as you're shoutcaster). Also, Gaoesa you mentioned checking for whether sess.referee is at 0 before setting sess.spec_invite to 0, I was wondering why this is needed? Thankyou.
-
I took the advice from these replies and wrote a new script. Sol - your script worked perfectly but I also wanted clients to become shoutcaster when they connect. Therefore I had to add in two new functions at the beginning of the script. Code:
function et_ClientConnect( clientNum, firstTime, isBot) local connect = et.gentity_get(clientNum, "pers.connected") if connect == 2 then return end local team = et.gentity_get(clientNum, "sess.sessionTeam") if team == 3 then et.gentity_set(clientNum, "sess.shoutcaster", 1) et.gentity_set(clientNum, "sess.spec_invite", 3) return true elseif team == 0 then et.gentity_set(clientNum, "sess.shoutcaster", 0) return true end end function et_ClientCommand( clientNum, command) if command == "team" and et.trap_Argv(1) ~= "s" then et.gentity_set(clientNum, "sess.shoutcaster", 0) return true elseif command == "team" and et.trap_Argv(1) == "s" then et.gentity_set(clientNum, "sess.shoutcaster", 1) et.gentity_set(clientNum, "sess.spec_invite", 3) return true end end
I had to use sess.sessionTeam in order to log people in when they connected, but I had the problem then of clients being refused to join a team. Therefore, I used the "0" (not on a team) value which I assumed included limbo status and this worked fine for the purpose. From then on the next function allowed people to become SC in spec and rejoin a team. The problem now is bots become shoutcasters and cannot join teams, whereupon more bots join until the server is full. I guessed that this was because it was detecting that no bots were playing so automatically more joined in an attempt to play (no idea if that is correct). I don't know if using sess.sessionTeam value 0 is an effective way but I couldn't get anything else to work. If someone has any improvements, or mainly to solve my bot issue, it would be appreciated. I tried a function isBot using the ps.ping == 0 but this returned an error in the log. It was something like tried to call local isBot (number value) which I don't understand. Thanks!
-
I've read the wiki and understand we can exclude maps unless they have a certain amount of people playing. I wanted to exclude fragmaze_fixed from the map voting list if there are 10 or more people playing. I see I can do it like this:
[players 0-15]
set g_excludedMaps ":mlb_temple:"
[players 16-*]
set g_excludedMaps ":adlernest:"
[/players]
will exclude map MLB Temple if the player amount is less or equal to 15 and exclude map Adlernest if the player amount is 16 or more. The player amount counting is controlled with g_playerCounting server cvar.When I put this in the server.cfg (not entirely sure if this is right as it didn't work in the mapconfigs) it worked but caused a problem. It cancelled out the g_excludedmaps cvar and executed its functions, but then the next map the g_excludedmaps cvar worked and the [players] block didn't. How I can I get these functions to both execute?
The [players] block were put underneath the excludedmaps cvar in server.cfg. Just something i'd like to get working as a test. Thanks.
-
The reason why manipulating directly is so that the change would take effect before the actual client team command is handled. The team command is sent from the client only when they press ok button from the limbo panel or use it directly from the console.
You probably don't need to call http://mygamingtalk.com/wiki/index.php/Silent_Lua#ClientUserinfoChanged after manipulating the status as the team command execution will do it. But otherwise this is needed.
This is what I was wondering, thanks for clarifying this. I will test this soon and see what happens
-
Thanks, this worked perfectly!
-
I'm working on a script to promote spectators automatically to shoutcaster status. The idea is when a client connects, they instantly become a shoutcaster, thus enjoying the additional features that SC allows in comparison to a spectator. I'm now doubting whether this is actually possible, but I'll explain what I was thinking.
So here is the code:
function et_ClientConnect( clientNum, firstTime, isBot) local connect = et.gentity_get(clientNum, "pers.connected") if connect == 2 then return end local team = et.gentity_get(clientNum, "sess.sessionTeam") if isBot(clientNum) then return end if team == 3 then et.trap_SendConsoleCommand( et.EXEC_APPEND, "makesc "..clientNum.."\n") return end if isBot(clientNum) then return end if team == "" then et.trap_SendConsoleCommand( et.EXEC_APPEND, "removesc "..clientNum.."\n") return end function isBot(clientNum) if et.gentity_get(clientNum,"ps.ping") == 0 then return true endend
The script works as in it detects when a client is connected, and makes them a shoutcaster, however this doesn't happen if they have to reconnect to download a map for example.
The main issue: I can't log them out of SC so that they can join a team. I originally was going to use "removesc" to take away their elevated status once they joined either b/r. However, they can't actually join a team so it's pointless trying to look for when they join a team. Is there a way to log them out as they are choosing a team (ie - limbo, looking for a /team cvar etc) or is this just impossible currently.
If so, an idea I would like to request is Shoutcaster automatically logging the client out when they join a team. They log in, it is normal in spec but once a team is chosen they are logged out and have a normal status as per usual. Thanks for reading.
-
There's one more question I have about this - can I add the date and time of when a client executes a command. E.G in the log 2013-04-05: 01:13:00 so I can check the log and see what time the specific command was executed. I tried to do this but I couldn't get it to work.
-
File Name: Spec Command
File Submitter: Arcane
File Submitted: 03 Apr 2013
File Category: LUA
Spec Command lua script which works as a shrubbot command. An alternative for the console command "follow".
To install:
You need to unzip the file and extract the spec.lua file
Upload this file into the silent folder on server (/serverip/silent)
In server.cfg cvar: lua_modules "spec.lua"
In shrubbot.cfg add the shrubbot command information from inside Readme.txt- Ruben0s1, clan DIABOLIK, Chuckun and 1 other
-
4
-
Can you zip the file and upload it?
Thanks
It worked as a .zip file, thanks
I tested it on 2 servers yesterday and it worked flawlessly, but you may want to test it first just in case.
-
I've made an updated version of this using the help you provided, also added in a couple of extra features. Would like to share the spec.lua with others but I don't know where to upload the file, for some reason couldn't upload the lua file on that downloads page
-
Thanks for the fast reply. I see where I have gone wrong and appreciate you improving and making my original script function. I look forward to testing it out
-
Sorry to revive this but didn't see any point in creating a new topic. I have created a spec.lua that is a little rough around the edges currently but it is unfinished. It works fine but there are a couple of issues I would like help with.
Firstly, here is the code:
function et_ClientCommand(clientNum, command)
if et.trap_Argv(0) == "spec" then
if et.trap_Argc() == 2 then
local targetClientNum = et.ClientNumberFromString(et.trap_Argv(1))
et.trap_SendConsoleCommand( et.EXEC_APPEND, "putteam" ..clientNum.. "s")
et.gentity_set(clientNum, "sess.spectatorState", 2)
et.gentity_set(clientNum, "sess.spectatorClient", targetClientNum)
else
et.trap_SendServerCommand(clientNum, "print \"Error: Need two parameters!\"")
end
return 1
end
return 0
end
Line 5, Console command does not seem to be working. When I am a spectator I can spec anyone using name/slot, but when I join I team I can't spec anybody at all. I am not put into spec and it does nothing - where have I gone wrong in putting MYSELF (clientNum?) into spec. The following fields (spectatorState and spectatorClient) work fine from here.
The other issue is that the script does not return values for non-existent client numbers/names (11 slots listed eg, /spec 12 - this will spec the first available slot of the players on r/b). I was hoping to solve this by using the shortcut [1?] when I attempt to convert this to a custom command (!spec). Would this be sufficient or can I do this in the lua, if so, how?
Finally, I still do not understand how to get the spec.lua to run by executing a custom command. For example:
[command]
command = example
exec = ???? Can someone give an EXAMPLE of what I need to put here to run spec.lua - is it "lua spec [1?]" ?
desc = blablala
syntax =
levels = 5
Thanks.
-
I also use ET 3.00 and silent 0.6.3 with no problems. I also use my own lua and this has no negative effects on the server. Have you tried a different gametype as a test?
-
Thankyou, I managed to get my original script to work but your example is much simpler and a lot easier to understand! Much appreciated.
-
Hello everybody, this topic is to represent the .WAR|Clan. and our silEnT server.
.WAR|Clan.The clan/server is active since 2008 and our primary focus within the game is completion of the map
objectives. We are a small, strong community and all share a passion for Wolfenstein: Enemy Territory.
You can find more information about us by clicking on the links provided in the forums section.
.WAR|Server.The basic information about our server is displayed below:
IP: 213.108.31.45:27010
Host: YCN-Hosting
Server Location: UK, London
Slots: 26
Mod: silEnT Mod 0.6.3
Version: ET 3.00
Gametype: Map voting system
XP Save: ForeverDouble Jump: Off
PunkBuster: Off
Adrenaline: Off
Friendly Fire: Off
Heavy Weapon Limitations: On (Panzerfaust)Our server is accessible from all ET versions (2.55, 2.56, 2.60, 2.6b)
.WAR|Forums.You can visit our forums using this link:
http://www.warclan.forumj.netOur rules can be found here:
http://warclan.forumj.net/t599-server-forums-rulesWe hope to see you on the server!
-
Ah okay thanks for the clarification. About the g_logprint, would there be a way to print the GUID of player that uses a console command (say if they did /players for a random example) to the log?
Probleme avec les script lua
in Support
Posted · Edited by Arcane
Dans le server cfg (silent.cfg)
set lua_modules "autopromo.lua rspree.lua botdetectv3.lua"
You have to leave a space between each script, you were adding a . inbetween each script. That is assuming this was your problem (I only know a little french) and that there are no errors in the actual scripts themselves.