Announcement

Collapse
No announcement yet.

Mut request: Models/skins seen online to .txt

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Mut request: Models/skins seen online to .txt

    Long overdue I believe, a way to find out which custom models and skins are being used online by players. The mutator would just add to a text file in your UT2004 folder any custom things you encounter that people are using. You can then manually download them and actually get to see the variety being used without having to randomly download and install the many gigs that you'll never see or use.

    Please, I'd love someone to attempt this if it's possible and hear any and all feedback on the idea and implementation. Thanks a lot.

    #2
    They are not replicated online, although since players who have the models can see them, there must be a reference to the model name somewhere.
    Also, you can't really write to a TXT file, only to an INI.

    Comment


      #3
      Great and pivotal point Emerald. I was hoping it could just be a simple client side mutator that just requested and listed non-standard content for you (at least initially). I think you've confirmed that's possible now otherwise you wouldn't see people wearing their models and skins even if you already had them. Your client wouldn't know it.
      Writing to an INI instead shouldn't be a problem should it?
      I know there are lots of ways this mutator could become more elaborate and user friendly with the collected data, I've thought of some myself (and each idea seems a large asset to the mutator) but the most important thing, in it's simplest form of creating a basic list it does the intended function of informing you what's being used out there. That's 100% more than people have currently and finally a realistic way to get custom content shown online.

      Thanks for the input Emerald, it's much appreciated. I don't know if you'd be interested in trying to code something like this? I really hope someone is. Cheers all.

      Comment


        #4
        Writing to the INI isn't hard at all, you just have a config array and you can write anything into it.
        I'd think you could start at logging players' skin and model and see whether it logs the right or wrong skin. Also you could look into the Pawn code and see if there is a way to find out the original requested skins from there.

        Comment


          #5
          Really hoping someone will see the worth of this idea and adopt it but I've also finally dipped a toe in to learning about scripting, if only to understand what you just said.
          Downloaded the scripts and I understand how Object Oriented programming generally works now but the last time I even looked at a program was basic on a Sinclair Spectrum. I think it will be a long painful time till I'm capable of doing this mutator, I do want to learn though. Would love to see this and also several other ideas I've had become reality. Still if someone wants to do the most basic version at least we'll be able to use it and I'll be only too glad to work on adding features to it.

          Edit: I was also wondering if PlayerReplicationInfo could be involved in the process http://wiki.beyondunreal.com/Legacy:...eplicationInfo
          I've looked at a few entrys on here, trying to find a reference to where the player's model is sent over the network, only had a brief look at Pawn on here though. Still have a lot to look at to see if anything looks relevant.

          Comment


            #6
            I'd focus on the xPawn, although it does seem to depend on the PRI as well. This part of xPawn is particularly interesting:
            http://www.cdfunk.com/highnoon/ut2k4...pawn.html#2055

            By the way, for easy script reference you can use online UnrealScript sources:
            http://www.cdfunk.com/highnoon/ut2k4/classtree.html

            Comment


              #7
              People wear their custom skins online because many servers "forcefeed" the download of the custom skins (especially clanskins and 'guest' skins) so that all joining players will see the intended skin(s).

              Looking in XPawn won't be helpful in identifying downloaded custom skins (sorry, GreatEmerald). The custom skin is assigned via a custom PlayerRecord. Where you might look (to understand what's under the hood) is within the *.upl files residing in your ~UT2004\System directory.

              example:
              Player=(DefaultName="Diva",Race="Egyptian",Mesh=Hu manFemaleA.EgyptFemaleA,species=xGame.SPECIES_Egyp t,BodySkin=PlayerSkins.EgyptFemaleABodyA,FaceSkin= PlayerSkins.EgyptFemaleAHeadA,Portrait=PlayerPictu res.cEgyptFemaleAA,Text=XPlayers.EgyptFemaleAA,Sex =Female,Menu="",Aggressiveness=+0.4,CombatStyle=+0 .4,FavoriteWeapon=xWeapons.RocketLauncher,Jumpines s=+0.5,StrafingAbility=+0.5,BotUse=1)
              There's a wiki page which provides detailed descriptions for each of the comma-delimited playerRecord arguments (er, attributes, properties). Default values for some of these are declared in xPawn, others in Bot. Each is optional, in the sense that the game will use a defaultproperty value for a given argument if you don't provide an overriding value in the playerRecord.

              Custom skins go hand in hand with custom player models. You create a package containing any non-stock textures and or meshes your character will use, then you create a custom upl file (do not edit the stock upl files!) and assign the skin (textures: head and body, and possibly team overlays) plus the custom model (or you may be calling a stock model) assign these to a custom character playerRecord line.
              Player=(
              DefaultName="Diva"
              Race="Egyptian"
              Mesh=HumanFemaleA.EgyptFemaleA
              species=xGame.SPECIES_Egypt
              BodySkin=PlayerSkins.EgyptFemaleABodyA
              FaceSkin=PlayerSkins.EgyptFemaleAHeadA
              Portrait=PlayerPictures.cEgyptFemaleAA
              Text=XPlayers.EgyptFemaleAA
              Sex=Female
              Menu=""
              Aggressiveness=+0.4
              CombatStyle=+0.4
              FavoriteWeapon=xWeapons.RocketLauncher
              Jumpiness=+0.5
              StrafingAbility=+0.5
              BotUse=1
              )
              A rundown of what the net server does to "force" download of the content (more or less):

              The custom upl file is placed in the server's UT2004\System directory, and copies of the custom packages are added to the redirect server. The character name ("Diva", in the quoted example) is available to the bot roster so the custom resources are treated as 'game relevant' and are sent to joining players (even though the playerRecord entry may specify BotUse=3, meaning "don't hardly never select this here character when randomly choosing bots to add to a match").

              The server doesn't send copies of its custom upl file(s). Instead, the playerRecord is usually compiled into a *.u package (could be compiled into any package though, including a ut2 file). To "collect and log the info", your proposed app would need to parse downloaded packages, watching for

              Class MyHarryDoofus extends PlayerRecord;

              ...and that 'app' surely can't be contained within a mutator.
              When you join a netserver, it (not you) specifies which mutators your client loads.
              Further, if you create an unrealscript 'handler' designed to monitor/log (or whatever) I would expect AntiTcc or SafeGame to either disable your non-standard handler or summarily kick you.

              any and all feedback on the idea and implementation
              bottom line: I expect that an unrealscripted solution is probably unattainable, so you would need to parse and log downloaded packages using an app running outside the game.

              Comment


                #8
                Thanks for the explanation, but I was leading there anyway. xPawn -> PostNetReceive() -> ForceDefaultCharacter() -> CheckValid(Fe)maleDefault() -> Setup(class'xUtil'.static.FindPlayerRecord(GetDefa ultCharacter())) -> xUtil and PlayerRecord.

                I was under the impression that he has a server, and not a client, but I see that it wasn't mentioned anywhere. Of course you can't have client-side mutators, but if you have a server, you could log things like that, at least the character name, which would in fact be helpful in identifying skins.

                Comment


                  #9
                  client side mutator... You can then manually download them and actually get to see the variety being used without having to randomly download and install the many gigs that you'll never see or use.
                  I latched onto reading the former bit, but the latter "manually download them" suggests he would be retrieving server logs.

                  One of the existing heavyweight server mutators (AntiTCC or SafeGame or ClanManager or TAM or TFA or UTComp) may already have such inbuilt logging functionality, specific to attempted use of custom skins. What was the infamous "invisible skin" cheat? Someone decided to use a transparent texture (from a stock package)... and that doesn't get past AntiTCC, so the anticheat server mutators must be checking the specific textures referenced in the playerRecord (probably the model meshes also).

                  Ultimately, Giblet would download a list of player and character names, along with a list of package names and classnames and... what? Count how many people sit around home dressed as Bender, or as MonkeyPiolet, or as stickboy?

                  Comment


                    #10
                    Originally posted by melissa_jo View Post
                    I latched onto reading the former bit, but the latter "manually download them" suggests he would be retrieving server logs.
                    Yes, or just the relevant part so I can log what people look and sound like if it is possible. It doesn't sound it though unless the server sends each client that info or, it could be requested (and not by a clientside mutator? :s )
                    'Manualy download them' was saying that you'd actually know what to download out of the gigs of custom content if you were given the information, even retroactively after encountering the models, there's a fair chance you'll see them again in your servers and it would encourage people (like me) to even bother using models, knowing they're being seen. I must have had around 10 UT2004 installations over the years, at one point I downloaded and installed about 3/4 of the available models and skins, also mods and mutators. That was the best instalation I had mainly because I could see the custom stuff. It enhanced the game a lot but it was also very time consuming to do it. It came with it's own problems like a lot of version mismatches where I'd need to isolate and remove the bad files to even get online (I understand UTx at least tells you the file name now tho lol)

                    One of the existing heavyweight server mutators (AntiTCC or SafeGame or ClanManager or TAM or TFA or UTComp) may already have such inbuilt logging functionality, specific to attempted use of custom skins. What was the infamous "invisible skin" cheat? Someone decided to use a transparent texture (from a stock package)... and that doesn't get past AntiTCC, so the anticheat server mutators must be checking the specific textures referenced in the playerRecord (probably the model meshes also).
                    I remember that happening and it crossed my mind about AntiTCC and UTComp having the right scripts too. That could be the way forward maybe, or would AntiAntiTCC subclasses be needed that disagree on everything AntiTCC says except the relevant stuff, and only works on AntiTCC servers under heavy scrutiny from an AntiAntiAntiTCC mutator.

                    That was a poor attempt at humor btw, I've no idea how the mutators could be used, especialy if a clientside mutator wouldn't work anyway.
                    Ultimately, Giblet would download a list of player and character names, along with a list of package names and classnames and... what? Count how many people sit around home dressed as Bender, or as MonkeyPiolet, or as stickboy?
                    I'm surprised Epic didn't do something along these lines tbh, have a way that 'an average' client can optionally and easily enjoy all the content used. If it's not going to be a full UI with client driven redirects (or even fully automatic and you choose what you don't want) then there's nothing wrong with just a list, it's great for the slightly less dumb PUGer upwards. The sheer amoun of work byso many modellers and skinners and very few get to see that ingame? Not even the model wearer as it's an FPS lol. Something wrong here, or is it just me?

                    I made a thread in this section before on the potential of this as far as I could see it at the time. That was a mistake I think, I thought I could drum up interest with the bells and whistles but with this utility, the simplest implementation is almost as good as a polished utility would be.
                    That says something about the idea itself no?

                    What you've both said is immensely helpful to this, I really appreciate the replies here, it's great information. Thanks a lot guys.

                    Comment


                      #11
                      I still don't get it - do you or do you not have a server?..

                      Well, the skin/model system works just like the music system. You don't download music as well. But it makes sense since they are non-essential and save time connecting to the server (in UT, you can spend a whole lot of time downloading skins that you never see and music you hate). But they should have made it optional and asynchronous: add a configuration option "download music" and "download models/skins", then make it so you could play without them downloaded and the game would download them when the connection is idle, and once done, start the music and show the models/skins. Alas, that wasn't implemented...

                      Comment


                        #12
                        Originally posted by GreatEmerald View Post
                        I still don't get it - do you or do you not have a server?..
                        No, I don't have a server. I just play the game and make never finished maps
                        I've also put together a CTF mappack now aimed at iCTF admins and players, of really playable but obscure maps that never see the light anymore. I suppose very much like you've recently done, check compatibility and get them back in to circulation. Or that's the aim of mine.

                        Well, the skin/model system works just like the music system. You don't download music as well. But it makes sense since they are non-essential and save time connecting to the server (in UT, you can spend a whole lot of time downloading skins that you never see and music you hate). But they should have made it optional and asynchronous: add a configuration option "download music" and "download models/skins", then make it so you could play without them downloaded and the game would download them when the connection is idle, and once done, start the music and show the models/skins. Alas, that wasn't implemented...
                        I completely agree. That is the approach I first took towards it and someone taking on the task of trying to integrate an utility in to the games would be ideal. I must say it does sound like a modder could enjoy making this a lot too (not that I'm qualified to say), putting their ideas together and creating anything up to a full online model, skin and voice pack manager with redirect capabilities, on/off switches for content, stats and anything they think would be cool. I hadn't thought about music at all but I don't see a reason that players shouldn't be informed that it's there.
                        IMO, a simple list is almost as good though. Starting with a finished utility, the lister and adding well thought out features in your own time if you wanted to sounds like a fun mod to me.

                        How useful would the lister be? Well, I can't speak for anyone else but in the two gametypes I play (iCTF and DeathWarrant's RPG invasion) the same faces have been cropping up for years. The players are mostly like me, they love these gametypes and stick with them so whatever models got listed, I'd be almost sure to see again... or the latest model they love. The only current piece of individualism is your name and one of the 7 year old default models. I shouldn't need to define the benefits of seeing custom content ingame anyway, so many of those models are superb. For other players playing the UT games now, I'd expect almost all to have specific gametypes they stick to with some experimenting with mod gametypes. The same would apply with the utility's usefulness to these players then, whether their gametypes have tens or hundreds of followers.

                        The next best option to a utility would be something like a 'What skins do you wear' forum thread. Have you actually seen those? They're almost as unwieldy as just downloading 'the entire catalogue of skins and models' anyway and the best part is that only a tiny percentage of those contributers you'll ever meet ingame. They've either died of old age, left the game or have their own niche gametypes they stick to (and it's not yours )
                        DW has a thread like this, approx 90% of these people I've never seen (and DW Inv is almost a gametype in itself, spread across 2 servers), of the people I see playing,some have kept a reasonable '1 - 5 models I use' and others have put 'the entire catalogue of skins and models' in their post and then there's the vast majority that didn't contribute to the thread.

                        Another option would be to ask ingame and make notes. You could bind it:
                        Hi, please state the custom model or skin you use. Sorry for the spam. :/
                        Not a bad idea but this is not a utility, only you benefit. So yeah, I really think there's a need for something and it's been a long time coming.

                        melissa_jo, is it the case that a server sees what models you have installed then tells you if someone is using one of them, so enabling your client to render it?
                        I'm just trying to figure out the different possible ways to get the wanted info.
                        1) If the server sends you the info needed on the connected players as standard procedure which can be filtered. Just analyzing game a log in the client's installation and collecting the data. This should be the easiest to work with but doesn't sound like it's the case.
                        2) If you could request specific data on the players and recieve it. Not too shoddy a method either.
                        3) If you could request general data or logs that would be filtered, and actualy recieve them.
                        4) If you might have to tell the server you had many custom models installed and get data back if any is being used. Essentialy lie to the server to get what you need, spoof having the custom files installed or another method along these lines.

                        At this point itshould be worth looking at those security mutator's scripts to see what they've done. I think I would miss it even if I saw it but at least you've both given me some places to start looking.

                        Comment


                          #13
                          So yea, client-side it's impossible, since clients do nearly nothing but send input to the server. If you actually had a server, it would be a different matter.

                          Comment


                            #14
                            Here's a solution we came up with at DC:
                            http://www.disastrousconsequences.co...list/4819.page

                            Setting up skins with an SVN system, and, if you choose, in a separate directory from your normal UT stuff. It saves a lot of time, and the huge advantage over massive zip files or bittorrent is that when new files are added, you can update and download just the new stuff.

                            Anyway, that worked there, but I'd still like to see some sort of mutator that will log skin names.

                            Originally posted by Giblet View Post

                            melissa_jo, is it the case that a server sees what models you have installed then tells you if someone is using one of them, so enabling your client to render it?
                            I don't know the technical aspects of what precisely happens, but the server just relays the "character=" string from each player's user.ini or the bots on the server. If you have a upl or configured character in your ini with a matching name on your local machine, it is displayed while you play on that server. It doesn't matter which model or skin it is, or whether it matches the skin the other player uses, or whether it matches the model or skin on the server, only that it has the same name. AntiTCC scans the default upls for this reason... you can change or duplicate upl entries to whatever you want and have that displayed instead of the regular skin. Some players would like nothing more than bright pink hitbox models, and they'll see that if that's how their local upl files are configured.

                            As a further example, here's a little guide I wrote on how to change the default character you see to a custom model Don't use this technique on anti-tcc/competitive servers.

                            http://www.disastrousconsequences.co...t/12/2341.page

                            Comment


                              #15
                              Well, that's just the same as having the zip file downloaded, except that you can update it. And you could to this through Git, too. I'd hardly call that a 'solution'.

                              Comment

                              Working...
                              X