Developing a server to client package download script.

I'm trying to write a server to client package downloader but i can't seem to find the functions i need. Ruby-core dosen't have a connection api but can read and write files. Tribes can only read and write text files. Tribes can make a tcp connection which can only send text. So what i could do is convert the raw file to text and transfer it using tribes TCPObject. This is a bit of a hack and will be very slow.
If you have any insight on this problem or can tell me of a better solution I would appreciate the it.


  • TorqueScripts supports PHP. PHP supprots file transfer. You might be able to rig something up through that. Unfortunately I haven't messed with PHP before. Phantom139 uses PHP for his PGD Connect system to retrieve rank. See here:,257.0.html
  • There is a project underway to provide an automated resource transfer...
  • URL or name of developer pls provided your not referring to the next release of TN.
  • There is a project underway to provide an automated resource transfer...

    Link to said "ACTIVE" project please?
  • ... is an automated download really safe?
    With the addition of the ruby interpreter one can now manipulate files on a client computer installing viruses or perform other malicious activity. to get around this ruby scripts could be blocked and a script scanner could look for eval, rubyEval, and eany other rubyEval function calls in T2 script. How ever it might be easer to just limate the ruby interpreter to only be able to have file system access inside the ...

    .. i may finish this post later.
  • lol in cs they tell you to disable the autodownloader thingy due to hax
  • could you give me a script name and line number pls
  • ThythThyth Apotheosis Incarnate
    The scripts to do this are in the TribesNext Subversion repository, but this repository is only accessible to the primary development team.

    Notice how Turkeh said "Automated Resource Transfer", and not "Automated Script Transfer". The files permitted in an auto-download package are very strictly limited to a whitelist of a few directories and file types. This whitelist is sufficient only to transfer the resources required to load formerly-client-side map resources (interior DIFs, terrain height-maps, non-skin DML textures, non-skin PNG textures, non-skin BM8 textures), and will not permit replacing files that already exist (i.e. existing skins or any of the files above).

    No script transfer is allowed in any form (there is no way to verify that rubyEval is not called in a particular script a priori), for security reasons. No sound transfer is allowed in any form, so voice-packs aren't forced upon users. No player skin transfer is allowed in any form, so third party player skins aren't forced upon users.

    All of these restrictions are verified by the client before loading a freshly downloaded VL2; files that violate any of the security criteria will be rejected and deleted instead of loaded. Servers can direct clients to download via HTTP instead of over in-game RPC, since in-game RPC would take a long time for large resource files (say the TWL map packs).
  • No sound transfer is allowed in any form, so voice-packs aren't forced upon users. No player skin transfer is allowed in any form, so third party player skins aren't forced upon users.

    I completely understand all of the restrictions. They are obvious vectors for security and cheating issues. Are you saying that ALL sounds will be blocked or will you be recognizing custom map sounds as allowed?

    The idea of a working map downloads system is LONG overdue in Tribes. Legends, a sister Tribes like Torque based game has had one forever. Even though its a bit slow it does allow custom maps to be downloaded to the client. I maintain the BTMappack for Legends and this feature is a must have for mappers in my opinion. While I have to admit that some of the mappers for Tribes 2 have done wonders with existing material the lack of fresh new interiors, skies, terrain, sounds etc is really showing on the servers I have visited lately.

    I'm sure some players hate having to download maps to join a server. Even with a working download system in place there are likely to still be plenty of download free servers available for those players. That is a valid issue for some.

    On the other hand mappers can only do so much with existing map assets in Tribes 1 and 2 and eventually that lack of fresh new material leads to stagnation which in turn affects the overall vitality of the game and its player numbers.

    Good to hear one is in the works. Please keep us undated on the progress of this feature.
  • ThythThyth Apotheosis Incarnate
    I have not seen any map pack that has made use of custom sounds in maps. The TWL map packs do include a sound file or two, but they are not essential (in fact, they aren't even used so far as I can tell).

    I selected the list of permitted file masks after inspecting several large map packs, specifically to allow transferring essential resources to play maps that have existing client side resources. I specifically chose not to allow transferring of sound files (for which it is effectively impossible to distinguish between map sounds and ones in voicepacks), or player skins -- this is an administrative decision so servers aren't tempted to send non-essential data to users.

    I do not allow transferring of DTS shapes because the presence of non-standard shape files on a client or server can interfere with the standard loading sequence, even if those shapes are not referenced in datablocks.

    This is the whitelist:
    $T2CSRI::AMT::PathValue[0] = "interiors/*.dif";
    $T2CSRI::AMT::PathValue[1] = "terrains/*.ter";
    $T2CSRI::AMT::PathValue[2] = "textures/*.dml";
    $T2CSRI::AMT::PathValue[3] = "textures/*.png";
    $T2CSRI::AMT::PathValue[4] = "textures/*.bm8";
    The first is for DIF files, which are the static BSP tree interior instance shapes. TER are terrain heightmaps/texturemap files. DML, PNG, BM8 are the various texture formats used by the game.

    Further, here is the current blacklist that will reject files, even if they fall in the whitelist above:
    $T2CSRI::AMT::BlacklistValue[0] = "textures/skins/*.hbioderm*";
    $T2CSRI::AMT::BlacklistValue[1] = "textures/skins/*.hmale*";
    $T2CSRI::AMT::BlacklistValue[2] = "textures/skins/*.lbioderm*";
    $T2CSRI::AMT::BlacklistValue[3] = "textures/skins/*.lfemale*";
    $T2CSRI::AMT::BlacklistValue[4] = "textures/skins/*.lmale*";
    $T2CSRI::AMT::BlacklistValue[5] = "textures/skins/*.mbioderm*";
    $T2CSRI::AMT::BlacklistValue[6] = "textures/skins/*.mfemale*";
    $T2CSRI::AMT::BlacklistValue[7] = "textures/skins/*.mmale*";
    These are masks on skins that apply to player objects.

    I'm not planning on changing the current file restriction parameters for the auto-map transfer system that will be included in the patch, but the capabilities granted by the integrated Ruby interpreter are sufficient if others want to implement optional supplements to the system. I just don't want to see the morass in T2 that you see in say, Counter-Strike with custom resources.
Sign In or Register to comment.