| Home Page | Recent Changes

Sweavo

I play a lot of Onslaught and VCTF, and recently joined the SAS sniper/camper clan, taking the name [SAS]splinter. Former names ukj_n00b and chutneyferret.uk. This last name amoosed me muchly because a Dutch server wouldn't let me join because my name contained a rude word (n00b) so I was forced to change it. It let me have [chutneyferret] though.


Random Thing

There's no reference on the wiki to [ut2004mi] which is a rather tidy-looking "cache cleaner" - i.e. it lets you recover maps etc that the game has downloaded for play, and play them in instant action, load them into unrealed, etc.


Sniper Muts

Project: KillsMinusDeaths

This is a finished Mut for the SAS Camper server that awards your score and your rating based on your kills (headshots counts as 2 kills) minus your deaths. If two people have the same score, the one with the fewest deaths wins, so if I made one kill and never died, I beat the guy who made 21 kills and died 20 times. This is not publicly released (go see it on the UT2004 SAS sniper/camper server) but I'm here if you want to make something similar and have technical questions.

Project: YouDontQuitThatEasy

A workaround for the above mutator is that if you have a massive negative score you can quit and rejoin, shedding all those negative points. This mutator causes a returning player get back his or her score from when they quit.

SuperApe: I've been wondering about saving data between matches and sessions for a while. I haven't gotten around to hunt for info on it. I'd love to see it. :)

Sweavo: Ah, now THAT it doesn't do! I still need to research on storing stuff between matches. In this method, the data is stored in actors in the level, so they are trashed at level end.

SuperApe: Keep us updated. :) I'll pipe up if I find anything along the lines of the SinglePlayer savegame, etc.

SuperApe: DatabaseConnection seems to provide some interesting info and links on the subject.

Jimboh: meh...can't you just save it as a package on the server side? See: DataObject

SuperApe: At first glance, that look like it. Thanks, Jimboh. (I'll link from DatabaseConnection)

Sweavo: yep, savepackage() is where I'm at at the moment. I'm coming up with an abstract class that will make this dead easy for people in general. Watch this space.

Sweavo: well it turns out not to be that straightforward. I declared a class that knew how to save itself when destroyed, and was able to save and load data on a player-by-player basis. But I wanted to give it an abstract struct for its save data so that subclasses could simply override that in order to implement per-player persistence across levels and sessions. Can't see how to do that in UScript so I think I'll have to make a concrete class and publish that so that people can rip the source and duplicate it rather than extending.

Project: Walk Don't Run

In ut99 I used to play a lot of sniper servers. Just been playing on the SAS server and it's a pain for the admins that people run around a lot. I figure why not have a mut that prevents it. Ideally I'd like to reverse the sense of the Walk button - so if you don't press walk, you walk, and if you do press it, you run. SAS don't like this mut (it's quite intrusive even if you are playing fair) so feel free to grab it and try it on your own server.

See /MutWalkDontRun


Social / Clan muts

Project: BadgesOfRank

This is an idea whereby the server admin can award badges to users arbitrarily, for example, clan members might get a particular insignia, recruits another, admin another, maybe clan members can have their own personal avatars. Maybe idiots who are cruising for a ban get a dunce's hat. These would appear as small icons on the scoreboard at game end.

Not sure yet how to make all this work. I want to hook into the players' unique IDs to identify them, study the .ini and savepackage documentation to work out how to store and load the players' settings (which must be SERVER SIDE), figure out how to display icons in an interaction, and wire them into the scoreboard.

It would be nice to factor this so that there is an infrastructure that allows an arbitrary linked-list of PersonalRegulation objects to be attached to a particular player, which persists across games. Then other ideas could easily be folded in to the infrastructure like stripping off the clan tag from non-clan members etc.

Project: Skin Relay

See Mod Ideas/SkinRelay.


Onslaught Muts

Project: Tractor Beam

Here's my [TractorRaptor] class, that replaces all the raptors in a map with an eerily similar vehicle but that has a tractor beam that can pick up other vehicles and move them around the map. Needs work, but I'd appreciate anyone downloading it and giving me any tips. If you are under cygwin then you should be able to build it with make run at the commandline.

Project: vehicle dibs

A mutator that holds onto the last vehicle you used indefinitely, so you can raptor up to some lofty place, snipe for a bit, then get back in it without it having been destroyed by the game engine while your back was turned.

So I figured out that ONSVehicles disappear by having their CheckReset() called. I'm not 100% sure what all those conditions are below, but if you can see the vehicle it seems you count as a collidingactor.

// in ONSVehicle
event CheckReset()
{
    local Pawn P;

    if ( bKeyVehicle && IsVehicleEmpty() )
    {
        Died(None, class'DamageType', Location);
        return;
    }

    if ( !IsVehicleEmpty() )
    {
            ResetTime = Level.TimeSeconds + 10;
            return;
    }

    foreach CollidingActors(class 'Pawn', P, 2500.0)
    {
        if (P.Controller != none && P != self && P.GetTeamNum() == GetTeamNum() && FastTrace(P.Location + P.CollisionHeight * vect(0,0,1), Location + CollisionHeight * vect(0,0,1)))
        {
            ResetTime = Level.TimeSeconds + 10;
            return;
        }
    }

    //if factory is active, we want it to spawn new vehicle NOW
    if ( ParentFactory != None )
    {
        ParentFactory.VehicleDestroyed(self);
        ParentFactory.Timer();
        ParentFactory = None; //so doesn't call ParentFactory.VehicleDestroyed() again in Destroyed()
    }

    Destroy();
}

I'd like to somehow figure out a mutator that stops the last vehicle any player used from resetting. So I can fly the raptor up to a cliff, camp for a bit, and not turn around to find it gone. Without subclassing both player and vehicle, it's currently looking like it'll have to be done by polling: some piece of code on a timer constantly updates the ResetTime of the player's last vehicle to stop it timing out.

Found a bNeverReset in ONSVehicle. Wondering if I can make the mutator keep track on the client of what vehicle the local player has been getting in, and can set bNeverReset on vehicles the player gets in, and clear bNeverReset (and/or set the CheckReset timer) on the previous veh.

Not sure how to hook this one up but could you have the client write to the vehicle's bKeyVehicle and record a reference to that vehicle when you get in. If the reference were not empty, it would first re-instate the bKeyVehicle setting for that vehicle to allow the previous vehicle to be reset.

Project: AS Turrets for ONS

I love ONS-MassDestruction but it had a major flaw when there are only a few players: if you immediately jump in a cicada you can fly to the opposing base and jack their ion cannon before they've even got in it. I love to do this but never feel like I'm being fair! So I have the quest of getting the ion cannon to spawn with the right team set and teamlocked.

See /MutASTurretsInONS

Project: Bulldog2k4

SuperApe has done some smart work lashing up the Bulldog to work in 2k4. I'd like to try a different approach: creating a brand new ONSVehicle with the mesh of the Bulldog. Maybe this would be less buggy than the ModifiedBulldog. Or maybe it would just be too mush work and I'd never get round to it. Ho hum.


Uh-oh, it's getting a bit silly now

  • A means of blocking off areas of a map based on the number of players, especially useful in camping servers
  • Players can choose their favourite skins on a map-by-map basis. This is possibly a client-side mutator - how would it interact with ANTI-TCC?
  • If for example there is a goliath pwning some part of the map but it's nearly dead, and I heal it, I deserve some points for every kill it makes from then on. This is a wooly idea but it would be good to come up with a scoring system that encouraged synergistic teamplay
  • A link-manta, with weak primary link fire and good secondary link fire, only really any good in a supporting role on maps with large number of players for healing vehs and nodes, or if linked up to one another, can become powerful (though hard to maintain links because they are so nimble)
  • Use a spider-mine as a vehicle? Hahah, how cool would that be... hmm, maybe I need to cut my caffeine intake
  • Also thinking about a mutator-mutator so that servers can have different mutators applied to different maps

StarWeaver: Take a look at [MapMixer]; aside from being a nice shuffle tool with random mutator support to begin with you can set rules and defaults for each map individually. I'm pretty sure. There are billions of options in there, and I haven't used them all. :)


Discussion

Sweavo: please put discussion under the relevant subsection thanks


Category Personal Page

The Unreal Engine Documentation Site

Wiki Community

Topic Categories

Recent Changes

Offline Wiki

Unreal Engine

Console Commands

Terminology

FAQs

Help Desk

Mapping Topics

Mapping Lessons

UnrealEd Interface

UnrealScript Topics

UnrealScript Lessons

Making Mods

Class Tree

Modeling Topics

Chongqing Page

Log In