Jump to content

Agent

Former Developers
  • Posts

    1271
  • Joined

  • Last visited

Posts posted by Agent

  1. Thanks very much for the feedback. To clarify, this is just trying to figure out the default output for the "ladder" command -- nothing to really do with join messages, nor recommendations, nor team balancing. I'm also trying to figure out if there's any other data what-so-ever that should be tracked (it's better if have a little extra, than not enough).

    The current format again, generates this example: #1: "Jessica!" - Score: 69463 - Kills: 4 - Deaths: 3 - KDR: 1.33 - SPM: 18.41

    I'm wanting to avoid adding a ton of commands, so I'll probably change the ladder command's input from "ladder [rank|name]" to "ladder [rank|name] [var]" eventually; thanks for the suggestion! It would technically be possible to add some sort of bitfield to entries, to determine logging output, so you could toggle what stats you want displayed about you in-game. If/when I eventually deploy this globally, it'll likely use '.' instead of '!' as the command prefix, to prevent conflicts with other server-specific systems.

    As far as more data: I may add total_gdi_game_time, total_nod_game_time, top_gdi_game_time, and top_nod_game_time, as well as other gdi/nod variables.

    As far as command output format: I'm thinking Vehicle Kills and Building Kills would be nice additions.

    As far as commands implemented:

    [COMPLETED] ladder [rank|name]

    [PLANNED] top5

    [PLANNED] ladder [rank|name] [var]

    As far as access by server owners: I plan to eventually add an web interface with this, run on the stats bot itself. So there'll probably be some sort of easy-to-parse URL for server owners like "ladder.renegade-x.com/data?steamid=00000000&vars=total_score%2Ctotal_kills%2Ctotal_game_time", or perhaps some other mechanism.

    Thanks for the suggestions and feedback!

  2. One of my current projects is a bot-side ladder system, which can be deployed on a per-server basis, as well as potentially (probably) globally. This system is more-or-less done with its initial testing phase, and should be committed to my GitHub before too long.

    This ladder collects and maintains a lot of player stats as well -- everything from total score, to GDI wins, to game-time, to the most kills/deaths a player has had. It requires users to be using Steam in order to be added to the ladder, and updates on GameOver.

    More specifically, here's the data stored in each entry (so far):

    uint64_t steam_id, total_score;
    
    uint32_t total_kills, total_deaths, total_headshot_kills, total_vehicle_kills, total_building_kills, total_defence_kills, total_captures, total_game_time, total_games, total_gdi_games, total_nod_games, total_wins, total_gdi_wins, total_nod_wins, total_beacon_placements, total_beacon_disarms, total_proxy_placements, total_proxy_disarms, // totals (15)
    
    top_score, top_kills, most_deaths, top_headshot_kills, top_vehicle_kills, top_building_kills, top_defence_kills, top_captures, top_game_time, top_beacon_placements, top_beacon_disarms, top_proxy_placements, top_proxy_disarms, // tops (12)
    
    most_recent_ip; // other (1)
    
    time_t last_game;
    Jupiter::StringS most_recent_name;

    I can always add more data to each entry, as well. When I eventually add a web interface for this (it'll be a while), most of these variables (everything but IP) will be viewable on a player's profile.

    In the meantime, however, I'm trying to figure out what I should include in the "ladder" command's output. So far, it's pretty bland:

    [22] <~Agent> !ladder 1
    [22] <@Comis> #1: "Jessica!" - Score: 69463 - Kills: 4 - Deaths: 3 - KDR: 1.33 - SPM: 18.41

    (SPM means "Score Per Minute")

    So with this in mind, I want to know what the community values when it comes to stat visibility. I'm asking everyone: What should be shown?

    Thanks,

    Agent

  3. 1) Make sure "RenX.ModSystem" is listed in the plugins in Config.ini

    2) If you're using the IRC feature on this bot, it's easiest to just add mods via !add (i.e: !add 3 user).

    2a) The "add" command is far from perfect, but essentially the digit is the group number in the group list, and the user is the name of someone in-game. If I get time, I may later change this to be "add ", or something.

    3) Here's an example Mod entry below, which would automatically be generated by the aforementioned command, but you can also add manually:

    [76561198038779494]
    SteamID=76561198038779494
    LastIP=0.0.0.0
    Group=Owner

    The section name is the UUID; if you're using the RenX.NicknameUUID, for example, it would be the nickname of the user (they would then have to use that nickname to have moderator privledges).

    3a) If you modify Mods.ini while the bot is running, you must use the "rehash" command or restart the bot for changes to take effect.

    4) If you want your moderators to automatically identify when using Steam, make sure the following line is still at its default value (true) up top.

    AutoAuthSteam=true

  4. Here is the TSVehicle crate.

    class Rx_CrateType_TSVehicle extends Rx_CrateType;
    
    var transient Rx_Vehicle GivenVehicle;
    var config float ProbabilityIncreaseWhenVehicleProductionDestroyed;
    var array > Vehicles;
    
    function string GetPickupMessage()
    {
    return Repl(PickupMessage, "`vehname`", GivenVehicle.GetHumanReadableName(), false);
    }
    
    function string GetGameLogMessage(Rx_PRI RecipientPRI, Rx_CratePickup CratePickup)
    {
    return "GAME" `s "Crate;" `s "tsvehicle" `s GivenVehicle.class.name `s "by" `s `PlayerLog(RecipientPRI);
    }
    
    function float GetProbabilityWeight(Rx_Pawn Recipient, Rx_CratePickup CratePickup)
    {			
    local Rx_Building building;
    local float Probability;
    
    if (CratePickup.bNoVehicleSpawn || Vehicles.Length == 0)
    	return 0;
    else
    {
    	Probability = Super.GetProbabilityWeight(Recipient,CratePickup);
    
    	ForEach CratePickup.AllActors(class'Rx_Building',building)
    	{
    		if((Recipient.GetTeamNum() == TEAM_GDI && Rx_Building_WeaponsFactory(building) != none  && Rx_Building_WeaponsFactory(building).IsDestroyed()) || 
    			(Recipient.GetTeamNum() == TEAM_NOD && Rx_Building_AirStrip(building) != none  && Rx_Building_AirStrip(building).IsDestroyed()))
    		{
    			Probability += ProbabilityIncreaseWhenVehicleProductionDestroyed;
    		}
    	}
    
    	return Probability;
    }
    }
    
    function ExecuteCrateBehaviour(Rx_Pawn Recipient, Rx_PRI RecipientPRI, Rx_CratePickup CratePickup)
    {
    local Vector tmpSpawnPoint;
    
    tmpSpawnPoint = CratePickup.Location + vector(CratePickup.Rotation)*450;
    tmpSpawnPoint.Z += 200;
    
    GivenVehicle = CratePickup.Spawn(Vehicles[Rand(Vehicles.Length)],,, tmpSpawnPoint, CratePickup.Rotation,,true);
    
    GivenVehicle.DropToGround();
    if (GivenVehicle.Mesh != none)
    	GivenVehicle.Mesh.WakeRigidBody();
    }
    
    DefaultProperties
    {
    BroadcastMessageIndex = 14
    PickupSound = SoundCue'Rx_Pickups.Sounds.SC_Crate_VehicleDrop'
    
    Vehicles.Add(class'TS_Vehicle_Titan');
    Vehicles.Add(class'TS_Vehicle_Wolverine');
    Vehicles.Add(class'TS_Vehicle_HoverMRLS');
    Vehicles.Add(class'TS_Vehicle_TickTank');
    Vehicles.Add(class'TS_Vehicle_ReconBike');
    Vehicles.Add(class'TS_Vehicle_Buggy');
    }

    Yosh previously suggested that there's an off-by-one error, but there's not, and here's why. Rand() generates a "random" number number between 0, and the input - 1; in this instance, Vehicles.Length == 6, so Rand(Vehicles.Length) would generate a number between 0 (Titan) and 5 (Buggy). Adding a one to this wouldn't fix the problem -- it would just add a bug, instead.

    From a theoretical standpoint, I don't see anything wrong with this crate. From a practice standpoint, I have no idea why TS Buggys are so rare. Resolving this would likely involve using or writing some other sort of Rand()-type function.

    Tl;dr: The crate's code isn't broken, but it's broken.

  5. Actually, there was a point where suicides counted as a kill as well. I think that was one of the first things I fixed haha.

    It wrecked my K/D in-game as a result though, because I have a tendency to just run up to people as an engineer with C4...

    • Haha 1
  6. I've been making an effort to make more posts and be overall more communicative, but I post most frequently when a bug is fixed.

    Plus, your second question actually amused me because the admin password isn't mentioned as an option or anything in the launcher, so I looked up the proper config variable so that you don't have to make a batch file for launching your server. It's good information to know.

  7. There are two ways to set your admin password:

    Method 1:

    1) Open UDKGame\Config\UDKGame.ini

    2) Scroll to the [Engine.AccessControl] section

    3) Look for the line that looks like this: AdminPassword=

    4) Change the aforementioned line to: AdminPassword=your_admin_password

    Method 2:

    In your server batch file, specify ?AdminPassword=your_admin_password just as you would any other option.

×
×
  • Create New...