Jump to content

Ukill

Former Developers
  • Posts

    107
  • Joined

  • Last visited

Posts posted by Ukill

  1. This post is about how we can prevent or solve a team balance complain.

    Please don't feel offended, but I don't know why it is so difficult to place some people i a different team, just because the most of the people got an opinion about this, and especially to avoid useless discussions, and create an "Organised" game-play that EVERYBODY likes. From the last 10 PUG's i played on the Saturday, the most where unbalanced or there was a discussion about balancing while or after. 

    Maybe its better next time to choose 2 people that care about picking 2 equal teams instead of "i wanna play with my friend".
    I think a good example is like @Quincy and i did last Sunday PUG, even if i play a lot, it is still difficult for me too to setup the teams equal. So we helped each other to pick the teams, what did turn out well.

    In the end i think it don't matter i post a opinion about this subject, since this problem returns often, and people that hear other people complaining about how the teams are picked, just ignore the complains, even here on the forum if you just read back some posts, when they give a response about team picking, its not goes about the team picking anymore, but all about what we did wrong or or what people could do to have a better match.

    Maybe its more wise to decide for next week that before the teams are picked that we decide together with 40 people who's not playing on the same team, it saves a lot of discussions while and after the game, and everybody got the feeling from the beginning that they have a chance.

    For me its all about have some fun on the Saturday night, with 40 people that like to organize a game where all 40 players are happy with, i think this can be accomplished by letting people with this spirit picking the teams.

    But, I could not setup the teams better then others do, but i think we can do it TOGETHER  !!

    LETS ORGANIZE!! B|

    • Like 2
  2. 11 hours ago, Ruud033 said:

    Some still were at 64 and all background trees casted a shadow.. even the skeletal meshes casted a shadow (not needed).

    I still had the error while rebuilding though. I'll look into it. 

    @Ruud033 Good luck! in the beginning it tried to solve all the map errors, and also did find out that a lot of meshes got shadows. But about the landscape, where does the grey area come from? is that a normal behavior?, i did try to put the landscape into the "sky"-environment, but did not find where to change it.

    @Luhrian Did you change the properties of all the object after you placed them?

  3. 2 hours ago, Madkill40 said:

     

    @Ukill, what was the end result of your lighting build?

    I thought i already did tell you, but i was unable to build the lighting, my pc with 16GB RAM will crash after some minutes. When i did use the PC with 32GB it did not crash but the process hangs at 0%, and I did not find any solution to build the map successful.

  4. Thanks @Agent, but i really don't know what to add there.

    Because i really dont know what to change in my existing script i decided to start over again, and put my focus on the replication, whereby i build my script around it

    So i started first to do just a simple replication.

    1. class Rx_Mutator_CountDown_Controller extends Rx_Controller;
    2.  
    3. var repnotify int Count;
    4.  
    5. replication
    6. {
    7.     if (bNetDirty && (Role==ROLE_Authority))
    8.         Count;
    9. }
    10.  
    11. simulated event ReplicatedEvent(name VarName)
    12. {  
    13.     if (VarName == 'Count')
    14.     {
    15.         Count=(Count);
    16.     }
    17.     else
    18.     {
    19.         super.ReplicatedEvent(VarName);
    20.     }
    21. }
    22.  
    23. exec function DoCountDown()
    24. {
    25.     ServerCountIt();
    26. }
    27.  
    28. reliable server function ServerCountIt()
    29. {          
    30.     local Rx_Mutator_CountDown_Controller C;
    31.  
    32.     foreach WorldInfo.AllControllers(class'Rx_Mutator_CountDown_Controller', C)
    33.     {
    34.         C.Count=(Count);
    35.         C.CountIt();
    36.     }
    37. }
    38.  
    39. simulated function CountIt()
    40. {
    41.     local int TimeSec, TimeTenSec;
    42.    
    43.     Count--;
    44.     TimeSec = Count % 10;
    45.     TimeTenSec = (Count / 10);
    46.     ClientMessage( " TimeTenSecTimeSec: " $ TimeTenSec $ TimeSec);
    47.     SetTimer(2, false, 'ServerCountIt');
    48. }
    49.  
    50. defaultproperties
    51. {
    52. Count=180.0
    53. }



    and extended this with my arrayvariable, now it is finally possible to replicate string/int-array

     

    1. // *****************************************************************************
    2. //  * * * * * * * * * * Rx_Mutator_AdminTool_Controller * * * * * * * * * * * *
    3. // Written by Ukill, Supported by ...........................................
    4. // *****************************************************************************
    5. class Rx_Mutator_AdminTool_Controller extends Rx_Controller;
    6.  
    7. var repnotify string MyText;
    8. var repnotify int Cycle;
    9. var repnotify string RefArrayStatus[2];
    10. var repnotify int RefArrayAccessLevel[2];
    11. var int ArrayLength;
    12.  
    13. replication
    14. {
    15.     if (bNetDirty && (Role==ROLE_Authority))
    16.         RefArrayAccessLevel,RefArrayStatus,MyText,Cycle;
    17. }
    18.  
    19. simulated event ReplicatedEvent(name VarName)
    20. {
    21.     local int x;
    22.    
    23.     if (VarName == 'MyText')
    24.     {
    25.         MyText=(MyText);
    26.     }
    27.     else if (VarName == 'Cycle')
    28.     {
    29.         Cycle=(Cycle);
    30.     }
    31.     else if (VarName == 'RefArrayStatus')
    32.     {
    33.         for (x = 0; x < ArrayLength ; x++)
    34.         {
    35.             RefArrayStatus[x]=(RefArrayStatus[x]);
    36.         }
    37.     }
    38.     else if (VarName == 'RefArrayAccessLevel')
    39.     {
    40.         for (x = 0; x < ArrayLength ; x++)
    41.         {
    42.             RefArrayAccessLevel[x]=(RefArrayAccessLevel[x]);
    43.         }
    44.     }
    45.     else
    46.     {
    47.         super.ReplicatedEvent(VarName);
    48.     }
    49. }
    50.  
    51. simulated event PreBeginPlay()
    52. {
    53.     SetTimer(5, true, 'ServerReplicate');
    54. }
    55.  
    56. exec function DoReplicate()
    57. {
    58.     ServerReplicate();
    59. }
    60.  
    61.  
    62. reliable server function ServerReplicate()
    63. {          
    64.     local Rx_Mutator_AdminTool_Controller C;
    65.     local int x;
    66.    
    67.     foreach WorldInfo.AllControllers(class'Rx_Mutator_AdminTool_Controller', C)
    68.     {
    69.         C.Cycle=(Cycle);
    70.         C.MyText=(MyText);
    71.        
    72.         for (x = 0; x < ArrayLength ; x++)
    73.         {
    74.             C.RefArrayStatus[x]=(RefArrayStatus[x]);
    75.             C.RefArrayAccessLevel[x]=(RefArrayAccessLevel[x]);
    76.         }
    77.        
    78.         C.Replicate();
    79.        
    80.     }
    81. }
    82.  
    83. simulated function Replicate()
    84. {
    85.     local string MyString;
    86.     local int x;
    87.  
    88.     Cycle++; MyString = MyText $ Cycle;
    89.    
    90.     for (x = 0; x < ArrayLength ; x++)
    91.     {
    92.         if (RefArrayStatus[x] == "true")
    93.         {
    94.             RefArrayStatus[x]="false";
    95.         }
    96.         else
    97.         {
    98.             RefArrayStatus[x]="true";
    99.         }
    100.        
    101.         RefArrayAccessLevel[x]--;
    102.     }
    103.    
    104.     for (x = 0; x < ArrayLength ; x++)
    105.     {
    106.         ClientMessage( MyString $ " - RefArrayStatus[" $ x $ "]=" $ RefArrayStatus[x]);
    107.         ClientMessage( MyString $ " - RefArrayAccessLevel[" $ x $ "]=" $ RefArrayAccessLevel[x]);
    108.     }
    109.    
    110.     //ClientMessage( MyString $ " - RefArrayStatus[0]=" $ RefArrayStatus[0] $ " RefArrayStatus[1]=" $ RefArrayStatus[1] );
    111. }
    112.  
    113. defaultproperties
    114. {
    115. ArrayLength=2;
    116.  
    117. MyText="Replication #";
    118. Cycle=0;
    119.  
    120. RefArrayStatus[0]="";
    121. RefArrayStatus[1]="";
    122.  
    123. RefArrayAccessLevel[0]=1000;
    124. RefArrayAccessLevel[1]=100000;
    125. }

     

    But i am still searching for the fault in my existing script :

    Why will it not replicate to new users, and what exactly needs to be modified ?
    I did find the issue that is responsible for the players that are not in game yet. after an other try of search and compare.

    1. Foreach WorldInfo.AllControllers(class'Rx_Mutator_AdminTool_Controller', C)
    2. {
    3. ->    for (x = 0; x < ArrayLength ; x++)
    4. ->    {
    5. ->        C.RefArrayStatus[x]=(RefArrayStatus[x]);
    6. ->    }
    7.            
    8.     C.ServerAdminToolStatusDo(sToggleName, sStatus);
    9. }


    But finally, it works !!!!

  5. 1 hour ago, Ukill said:

    I also found some errors in the server-log :

    1. RefArrayStatus:
    2. [0249.49] ScriptWarning: Accessed array 'Rx_Mutator_AdminTool_Controller_0.RefArrayStatus' out of bounds (6/6)
    3.     Rx_Mutator_AdminTool_Controller CNC-Walls_Flying.TheWorld:PersistentLevel.Rx_Mutator_AdminTool_Controller_0
          Function Rx_Mutator_AdminTool.Rx_Mutator_AdminTool_Controller:AdminToolNotifyServerAccessLevel:002D

    4. RefArrayAccessLevel:
      [0249.49] ScriptWarning: Accessed array 'Rx_Mutator_AdminTool_Controller_0.ServerRefArrayAccessLevel' out of bounds (6/6)
          Rx_Mutator_AdminTool_Controller CNC-Walls_Flying.TheWorld:PersistentLevel.Rx_Mutator_AdminTool_Controller_0
          Function Rx_Mutator_AdminTool.Rx_Mutator_AdminTool_Controller:AdminToolNotifyServerAccessLevel:004E
    5.  


    I will try to get it to work like described above, but i am still searching for that "better way", and have no idea what to think about or what i can do to solve the "out of bounds (6/6)" error

    Meanwhile the "out of bounds (6/6)" problem disappear.

  6. To complete this Topic :

    On 24-2-2017 at 6:44 PM, Ukill said:

    2. Extend the current votesystem (In my opinion this one got more limitations, but is more easy to implement)

    The way to do this can be found in the Rx_Mutator_AdminTool mutator, which are placed in the Download section, under Modifications (see link below) :

     

  7. I did try to add the replication block below:

    replication
    {
        if ( bNetDirty && Role == ROLE_Authority )
            RefArrayStatus,RefArrayAccessLevel;
    }


    More info about the replication block :

    Spoiler
    1. replication
    2. {
    3. //  To actually replicate a function call from the server to a client you have to use a replication statement like the following:
    4.         reliable if ( Role == ROLE_Authority )
    5.             FunctionName;
    6. //  This will replicate function calls for FunctionName to the client this actor belongs to. If the actor is either owned by the
    7. //  server's player or Owner is None the function will be executed on the server like a regular function.
    8.    
    9. //  To replicate a function call from a client to the server you have to use a replication statement like the following:
    10.         reliable if ( Role < ROLE_Authority )
    11.             FunctionName;
    12. //  This replicated function calls for FunctionName to the server if the actor is owned by this client's player.
    13. }
    14. /*
    15.     Things that may go wrong when replication functions:
    16.  
    17.     Client -> Server replication will not work if the actor is owned by the server player (on a listen server) or by a client other than the one trying to replicate something or when the actor has no owner.
    18.    
    19.     Server -> Client replication will be useless if the replicated function isn't a simulated function (unless the actor's Role on that client is ROLE_AutonomousProxy, which it usually isn't).
    20. */


    I did use "( bNetDirty && Role == ROLE_Authority )" in the script, because in other scripts this gave me the most accurate replication. 
    In the end the problem is still here, it is impossible for me to replicate a static array (Only for players that join an existing game)
     

    I also found some errors in the server-log :

    1. RefArrayStatus:
    2. [0249.49] ScriptWarning: Accessed array 'Rx_Mutator_AdminTool_Controller_0.RefArrayStatus' out of bounds (6/6)
    3.     Rx_Mutator_AdminTool_Controller CNC-Walls_Flying.TheWorld:PersistentLevel.Rx_Mutator_AdminTool_Controller_0
          Function Rx_Mutator_AdminTool.Rx_Mutator_AdminTool_Controller:AdminToolNotifyServerAccessLevel:002D

    4. RefArrayAccessLevel:
      [0249.49] ScriptWarning: Accessed array 'Rx_Mutator_AdminTool_Controller_0.ServerRefArrayAccessLevel' out of bounds (6/6)
          Rx_Mutator_AdminTool_Controller CNC-Walls_Flying.TheWorld:PersistentLevel.Rx_Mutator_AdminTool_Controller_0
          Function Rx_Mutator_AdminTool.Rx_Mutator_AdminTool_Controller:AdminToolNotifyServerAccessLevel:004E
    5.  


    I do also saw the output of the "simulated event ReplicatedEvent(name VarName)", this means in my opinion that the replication at least runs/starts for the array variables.

    1. T see the output below when I Toogle mode 4 to level 2:
    2.  
    3. Server current values Rx_Mutator_AdminTool_Controller.ServerRefArrayAccessLevel to ( [1] = 2, [2] = 2, [3] = 3, [4] = 4, [5] = 1)
    4. Function ReplicatedEvent touched with VarName: ServerRefArrayAccessLevel
    5. Server updated Rx_Mutator_AdminTool_Controller.ServerRefArrayAccessLevel to ( [1] = 2, [2] = 2, [3] = 3, [4] = 2, [5] = 1)


    I think i got a dirty solution to get the replication working, because it is possible for me to replicate "normal" variables.
    I am thinking about that i could create some "normal" variables that will do the replication, whereby after the replication i push those value's from the normal variables to the "array variables", as far as i can see now this will get my script working but gives me a couple of disadvantages : my script will grow in size, and a lot of variables will have duplicated value's.

    I will try to get it to work like described above, but i am still searching for that "better way", and have no idea what to think about or what i can do to solve the "out of bounds (6/6)" error

  8.  

    The script below is working as expected, all variables get replicated to player in game on change, except that the default variables get replicated to users that join the game, instead of the current ones.

    I think that i need to create a function that is executed on the clients from new players, so it will get the variables from the server, but have no idea how to do it.

    Does anybody have an idea how to complete this replication ?

    The variables are :

    var RepNotify string RefArrayStatus [4];
    var RepNotify int RefArrayAccessLevel [4]

     

    1. // *****************************************************************************
    2. //  * * * * * * * * * * Rx_Mutator_AdminTool_Controller * * * * * * * * * * * *
    3. // Written by Ukill, Supported by ...........................................
    4. // *****************************************************************************
    5. class Rx_Mutator_AdminTool_Controller extends Rx_Controller;
    6.  
    7. //General var
    8. var string RefArrayName [4];                        //ReferenceNameArray
    9. var string RefArrayDescription [4];                 //ReferenceDescriptionArray
    10. var RepNotify string RefArrayStatus [4];            //ReferenceStatusArray
    11. var RepNotify int RefArrayAccessLevel [4];          //ReferenceAccessLevelArray
    12.  
    13. var bool OSA;                                       //OneStepAuthentication
    14. var int ArrayLength;
    15. var bool DebugMode;
    16.  
    17. replication
    18. {
    19.     if (bNetDirty && Role == ROLE_Authority)
    20.         RefArrayStatus,RefArrayAccessLevel;
    21. }
    22.  
    23. exec function AdminTool(string sToggleName, optional string sStatus, optional string iAccessLevel)
    24. {
    25.     local string sStatusOut;
    26.     local string iAccessLevelOut;
    27.     local int x;
    28.     local int y;
    29.  
    30.     //Filter bad sToggleName
    31.     for (x = 0; x < ArrayLength ; x++)
    32.     {
    33.         if (RefArrayName[x] != sToggleName)
    34.         {
    35.             y=y++;
    36.             if (y == ArrayLength)
    37.             {
    38.                 sToggleName="";
    39.                 sStatus="";
    40.                 iAccessLevel="";
    41.             }
    42.         }
    43.     }
    44.  
    45.     // Swap if order is different
    46.     if ( Len(sStatus) == 1 && Len(iAccessLevel) == 0 )
    47.     {
    48.         iAccessLevel=(sStatus);
    49.         sStatus="Skip";
    50.     }
    51.     else if ( Len(iAccessLevel) > Len(sStatus) )
    52.     {
    53.         sStatusOut=(iAccessLevel);
    54.         (iAccessLevelOut)=(sStatus);
    55.         iAccessLevel=(iAccessLevelOut);
    56.         sStatus=(sStatusOut);
    57.     }
    58.        
    59.     // Do status stuff
    60.     if ( Len(iAccessLevel) == 0 && Len(sStatus) == 0 || "true" == sStatus || "false" == sStatus )
    61.     {
    62.         ServerAdminToolStatus(sToggleName, sStatus);
    63.     }
    64.    
    65.     //Do AccessLevel stuff
    66.     if ( Len(iAccessLevel) == 1 && int(iAccessLevel) != 0 && int(iAccessLevel) > 0 && int(iAccessLevel) < 6)
    67.     {
    68.         ServerAdminToolAccessLevel(sToggleName, int(iAccessLevel));
    69.     }
    70.        
    71.     // Show summary
    72.     if ( DebugMode == true ) { AdminToolInfo(); }
    73.  
    74. }
    75.        
    76. reliable server function ServerAdminToolStatus(string sToggleName, optional string sStatus)
    77. {          
    78.     local Rx_Mutator_AdminTool_Controller C;
    79.  
    80.     if ( DebugMode == true ) { ClientMessage("Started function ServerAdminToolAccessLevel with variables sToggleName: " $ sToggleName $ " sStatus: " $ sStatus); }
    81.  
    82. /*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  */
    83.     // DONT CHANGE - Start Authentication Check
    84.     AdminToolAccessLevelAuth(RefArrayAccessLevel[0]);
    85.     if (OSA == true && (RefArrayStatus[0]) == "true" )
    86.     { OSA=false; // DONT CHANGE - Stop Authentication Check
    87. /*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  */
    88.  
    89.         foreach WorldInfo.AllControllers(class'Rx_Mutator_AdminTool_Controller', C)
    90.         {
    91.             C.ServerAdminToolStatusDo(sToggleName, sStatus);
    92.         }
    93.     }
    94.     else
    95.     {
    96.         foreach WorldInfo.AllControllers(class'Rx_Mutator_AdminTool_Controller', C)
    97.         {
    98.             ClientMessage(PlayerReplicationInfo.PlayerName $ " : You must be admin to use the ToggleStatus function");
    99.         }
    100.     }
    101. }
    102.  
    103. reliable server function ServerAdminToolAccessLevel(string sToggleName, int iAccessLevel)
    104. {          
    105.     local Rx_Mutator_AdminTool_Controller C;
    106.    
    107.     if ( DebugMode == true ) { ClientMessage("Started function ServerAdminToolAccessLevel with variables sToggleName: " $ sToggleName $ " iAccessLevel: " $ iAccessLevel); }
    108.    
    109. /*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  */
    110.     // DONT CHANGE - Start Authentication Check
    111.     AdminToolAccessLevelAuth(RefArrayAccessLevel[0]);
    112.     if (OSA == true && (RefArrayStatus[0]) == "true" )
    113.     { OSA=false; // DONT CHANGE - Stop Authentication Check
    114. /*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  */
    115.  
    116.         foreach WorldInfo.AllControllers(class'Rx_Mutator_AdminTool_Controller', C)
    117.         {
    118.             C.ServerAdminToolAccessLevelDo(sToggleName, iAccessLevel);
    119.         }
    120.     }
    121.     else
    122.     {
    123.         foreach WorldInfo.AllControllers(class'Rx_Mutator_AdminTool_Controller', C)
    124.         {
    125.             ClientMessage(PlayerReplicationInfo.PlayerName $ " : You must be admin to use the ToggleAccessLevel function");
    126.         }
    127.     }
    128. }
    129.  
    130. exec function AdminToolInfo()
    131. {
    132.     local int x;
    133.     local string Msg;
    134.  
    135. /*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  */
    136.     // DONT CHANGE - Start Authentication Check
    137.     AdminToolAccessLevelAuth(RefArrayAccessLevel[0]);
    138.     if (OSA == true && (RefArrayStatus[0]) == "true" )
    139.     { OSA=false; // DONT CHANGE - Stop Authentication Check
    140. /*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  */
    141.    
    142.         ClientMessage(" ");
    143.         ClientMessage(" Info: function AdminToolInfo");
    144.         ClientMessage(" ");
    145.         ClientMessage(" Level:  Status:   Name:    Description:");
    146.         ClientMessage(" ");
    147.    
    148.         for (x = 0; x < ArrayLength ; x++)
    149.         {
    150.             Msg = "    " $ RefArrayAccessLevel[x] $ "       " $ RefArrayStatus[x] $ "     " $ RefArrayName[x] $ "    " $ RefArrayDescription[x];
    151.             ClientMessage(Msg);
    152.         }
    153.    
    154.         ClientMessage("");
    155.     }
    156. }  
    157.  
    158. function ServerAdminToolStatusDo(string sToggleName, optional string sStatus)           // ToggleStatus                 Option: true,false,empty(autotoggle)
    159. {                                      
    160.     local int x;
    161.  
    162.     if ( DebugMode == true ) { ClientMessage("Started function ServerAdminToolStatusDo with variables sToggleName: " $ sToggleName $ " sStatus: " $ sStatus); }
    163.     if ( DebugMode == true ) { ClientMessage("Jump in array with variable sToggleName: " $ sToggleName); }
    164.  
    165.     for (x = 0; x < ArrayLength ; x++)
    166.     {
    167.         if(sToggleName == RefArrayName[x] )
    168.         {
    169.             if (sStatus == "true")
    170.             {
    171.                 RefArrayStatus[x] = ("true");
    172.                 if ( DebugMode == true ) ClientMessage( RefArrayStatus[x] $ " Found!" $ sToggleName );
    173.             }
    174.             else if (sStatus == "false")
    175.             {
    176.                 RefArrayStatus[x] = ("false");
    177.                 if ( DebugMode == true ) ClientMessage( RefArrayStatus[x] $ " Found!" $ sToggleName );
    178.             }
    179.             else if ("true" == RefArrayStatus[x] )
    180.             {
    181.                 RefArrayStatus[x] = ("false");
    182.                 if ( DebugMode == true ) ClientMessage( RefArrayStatus[x] $ " Found!" $ sToggleName );
    183.             }
    184.             else if ("false" == RefArrayStatus[x] )
    185.             {
    186.                 RefArrayStatus[x] = ("true");
    187.                 if ( DebugMode == true ) ClientMessage( RefArrayStatus[x] $ " Found!" $ sToggleName );
    188.             }
    189.             else
    190.             {
    191.                 if ( DebugMode == true ) ClientMessage( RefArrayStatus[x] $ " None found!" $ sToggleName );
    192.             }
    193.         }
    194.     }
    195. }
    196.  
    197.  
    198. function ServerAdminToolAccessLevelDo(string sToggleName, int iAccessLevel){
    199.  
    200.     local int x;
    201.  
    202.     if ( DebugMode == true ) { ClientMessage("Started function AdminToolAccessLevel with variables sToggleName: " $ sToggleName $ " iAccessLevel: " $ iAccessLevel); }
    203.  
    204.     for (x = 0; x < ArrayLength ; x++)
    205.     {
    206.         if( sToggleName == RefArrayName[x] )
    207.         {
    208.             RefArrayAccessLevel[x] = (iAccessLevel);
    209.         }
    210.     }
    211. }
    212.  
    213. function AdminToolAccessLevelAuth(int iAccessLevel)
    214. {
    215.     local string GroupName;
    216.     OSA=false;
    217.    
    218.     switch (iAccessLevel)
    219.     {
    220.         case 0:
    221.         break;
    222.        
    223.         case 1:
    224.             Groupname="None";
    225.             if (PlayerReplicationInfo.PlayerName == "")
    226.             {
    227.                 OSA=true;
    228.             }
    229.         break;
    230.        
    231.         case 2:
    232.             GroupName="All Users";
    233.             if (PlayerReplicationInfo.PlayerName != "")
    234.             {
    235.                 OSA=true;
    236.             }
    237.         break;
    238.        
    239.         case 3:
    240.             GroupName="Administrators";
    241.             if (PlayerReplicationInfo.bAdmin && PlayerReplicationInfo.PlayerName != "")
    242.             {
    243.                 OSA=true;
    244.             }
    245.         break;
    246.        
    247.         case 4:
    248.             GroupName="Developers";
    249.             if (PlayerReplicationInfo.PlayerName != "" && bIsDev)
    250.             {
    251.                 OSA=true;
    252.             }
    253.         break;
    254.        
    255.         case 5:
    256.             GroupName="Administrators or Developers";
    257.             if (PlayerReplicationInfo.bAdmin || bIsDev)
    258.             {
    259.                 OSA=true;
    260.             }
    261.         break;
    262.     }
    263.     if ( OSA == true )
    264.     {
    265.         ClientMessage( GroupName $ " Accepted with Level : " $ iAccessLevel );
    266.     }
    267.     else if ( OSA == false )
    268.     {
    269.     ClientMessage( GroupName $ " Denied with Level : " $ iAccessLevel );
    270.     }
    271. // Maybe later add here the modename in the clientmessage
    272. }
    273.  
    274.  
    275.  
    276.  
    277. defaultproperties
    278. {
    279. //General  
    280. OSA=false
    281. DebugMode=false;                                   
    282. //AuthMode=false;                               // AccessLevel 0 for None
    283. ArrayLength=4;                                 // AccessLevel 1 for All Users
    284.                                                 // AccessLevel 2 for Administrators
    285. //ModeNames                                     // AccessLevel 3 for Developers
    286. RefArrayName[0]="allmode";                      
    287. RefArrayName[1]="mode1";                        // RefArrayName (string)
    288. RefArrayName[2]="mode2";                        // ModeNames  : this variable is used to set the default Name for any Mode
    289. RefArrayName[3]="mode3";                        
    290.                                                 // RefArrayStatus (string)                                                                 
    291. //Modedescription                               // ModeStatus : This variable is used to set the default Status for any Mode. (false and False)
    292. RefArrayDescription[0]="All modes";            
    293. RefArrayDescription[1]="FutureSoldier";         // RefArrayAccessLevel (int)
    294. RefArrayDescription[2]="SandboxSpawn";          // Modesnames : This variable is used to set the default AccessLevel for any Mode. (0-4)
    295. RefArrayDescription[3]="SandboxGimme"
    296.                                                 // TODO: create accesslevels that are static to users, for use in subfunctions
    297. //ModeStatus
    298. RefArrayStatus[0]="true";              
    299. RefArrayStatus[1]="true";              
    300. RefArrayStatus[2]="true";              
    301. RefArrayStatus[3]="true";              
    302.                                        
    303. //ModeAccessLevel
    304. RefArrayAccessLevel[0]=2;              
    305. RefArrayAccessLevel[1]=0;              
    306. RefArrayAccessLevel[2]=0;              
    307. RefArrayAccessLevel[3]=0;                                      
    308. }

     

     

     

  9. Rx_Mutator_AdminTool


    Warning : This mutator can crash your server


    *  This mutator will add a votemenu item, the submenu's contain items you can enable/disable during gameplay
    *  For now i added the functions "FutureSoldier","Sandbox"........ Later i will add more options



    Modes :

    All modes can be enabled by entering the "Vote Menu" (Ctrl+V), then choose "Server GameTools" (9).

    The modes below will be displayed on the screen, choose the mode by number.

    Mode 1 : FutureSoldier
    Mode 2 : Sandbox (SandboxSpawn)
    Mode 3 : Sandbox (Gimme)

    After the vote successfully ended, the Mode Access-Level will be set to 2, the chosen mode will be activated en accessible by the command screen (F5 or ~)

     



    Commands:

    Mode 1 Command :
    Futuresoldier

    Mode 2 Command :
    SandboxSpawn
    SandboxKillOwned destroy all items spawned in Sandbox
    SandboxHelp

    Mode 3 Command :
    Gimme

     



    Commands (Only Admins) options:

    AdminToolHelp  -  Displays information about accesslevels
    AdminToolInfo   -  Displays the current status of all modes
    AdminTool {Mode} (Optional{Status}) (Optional{Level})

     

    Command:                                   Description:

    Admintool mode1                   -     toggle current status mode1
    Admintool mode2 true            -     toggle current status mode2 to true
    Admintool mode3 false 1        -     toggle current status mode3 to false and set mode1 access-level to 1
    Admintool mode4 2 true         -     toggle current status mode4 to true and set mode1 access-level to 2
    Admintool mode1 3                -     set mode1 access-level to 3
     



    Mode Acces-Levels :

    1 = None
    2 = All Users
    3 = Administrators
    4 = Developers
    5 = Administrators and Developers
     



    Mode Status :

    true = mode is Enabled (All Users got access to the function depending on the Access-Level of the mode)
    false = mode is Disabled (Can only be enabled by command line)

     


     

    Version 1.0.0

    Compatible with Renegade X v5.283  

     


     

    • Like 1

  10. Can anybody tell me why this does not work online

    Offline it added an extra option to the VoteMenu. (Compiled file :  Rx_Mutator_VoteMenu.u )

    20170220190234_1.jpg20170220190241_1.jpg

    How do i get it to run on my server ?

     

    Rx_Mutator_VoteMenu : (Content)

    1. // *****************************************************************************
    2. //  * * * * * * * * * * * * Rx_Mutator_VoteMenu * * * * * * * * * * * * * *
    3. // *****************************************************************************
    4. class Rx_Mutator_VoteMenu extends Rx_Mutator;
    5.  
    6. event PreBeginPlay()
    7. {
    8.     local Rx_VoteMenuHandler VoteMod;
    9.     super.PreBeginPlay();
    10.  
    11.     VoteMod=Rx_VoteMenuHandler(GetDefaultObject(Class'Rx_VoteMenuHandler'));
    12.     VoteMod.VoteChoiceClasses[8] = class'Rx_VoteMenuChoice_ExtraChoice';
    13. }
    14.  
    15. final static function object GetDefaultObject(class ObjClass)
    16. {
    17.     return FindObject(ObjClass.GetPackageName()$".Default__"$ObjClass, ObjClass);
    18. }
    19.  
    20. defaultproperties
    21. {
    22. }
    23.  

     

    Rx_VoteMenuChoice_ExtraChoice : (Content)

    1. // *****************************************************************************
    2. //  * * * * * * * * * Rx_VoteMenuChoice_ExtraChoice * * * * * * * * * * * * * *
    3. // *****************************************************************************
    4. class Rx_VoteMenuChoice_ExtraChoice extends Rx_VoteMenuChoice;
    5.  
    6.  
    7. function Init()
    8. {
    9.     ToTeam = Handler.PlayerOwner.PlayerReplicationInfo.Team.TeamIndex;
    10.     Finish();
    11. }
    12.  
    13.  
    14. function string ComposeTopString()
    15. {
    16.     return super.ComposeTopString() $ " is calling for turn mode1";
    17. }
    18.  
    19. function Execute(Rx_Game game)
    20. {
    21.     // Do something
    22. }
    23.  
    24. DefaultProperties
    25. {
    26.     PercentYesToPass=0.20f
    27.     MenuDisplayString = "ExtraChoice"
    28. }

     

    I did found the code below, maybe it help to solve the problem :

    1. if(Rx_Controller(PlayerOwner) !=none && Rx_Controller(PlayerOwner).VoteHandler != none) 
    2. {
    3.     if(Rx_Controller(PlayerOwner).VoteHandler.VoteChoiceClasses.Length < (8+ExtraVoteNum))
    4.     {
    5.         Rx_Controller(PlayerOwner).VoteHandler.VoteChoiceClasses.AddItem(class'RenX_CommanderMod.Rx_VoteMenuChoice_Commander'); //1
    6.     }
    7. }

     

    • Like 1
  11. The benefit of an 40+ player server is that more players play this game, instead of going to an other activity. 
    I think this is one of the most important reasons to raise the current hardcap limit. I have not seen this many players as last weekend.

    Now, there are more than 80 people online on the same time. 
    I am totally not satisfied with this amount, because I will never be, when there is some higher goal that is capable of being achieved =).

    I think the max player can be a tool to gain more people on the servers, since I have seen more Americans join the server because there a slot free in the evening compared to just being stuck at 40 players and people not bothering to wait for a slot. 

    For myself the performance of the game decrease a little bit, and some maps were definately not designed to handle that many but I accept that is a price I have to pay to help the community to build back up.

    I have uploaded a good number of mutators to help promote different play styles and gameplay methods, and they are available to everyone, this included breaking the player cap to try playing with large bot count servers.
    I think people should be allowed to make the servers whatever size they feel their server can handle since not everyone has a server that can handle even 32 players.

    I think the acceptable limit is somewhere around 64 (previous hard cap), but even then I don't advise to just run a 64 player server, since not every server can run that many, but... there are servers that can handle it.

  12. 6 minutes ago, Schmitzenbergh said:

    News of the Sunday PUG: The 2nd weekly buggy rush occured! Due to a false start of @Ukill and others, a Nukeall was needed...

    Quote

    Not on my Watch :P 

    @Ukill has discovered the power of the messiah and can now float through the map! O.o Too bad he didn't use it to win the game...

    Quote

    Thats what they call godlike ;)  @Schmitzenbergh

     

     

  13.  

    Successful :)


    File: Rx_Mutator_Controller.uc (content)

    Spoiler
    
    // *****************************************************************************
    //  * * * * * * * * * * * * * Rx_Mutator_Controller * * * * * * * * * * * * * *
    // *****************************************************************************
    class Rx_Mutator_TestMode_Controller extends Rx_Controller;
    
    var RepNotify Bool bTestMode;
    
    replication
    {
        if(bNetDirty)
    //    if(bNetDirty && ROLE == ROLE_Authority)
            bTestMode;
    }
    
    exec function TestModeCheck()
    {   // Check TestMode
        if (bTestMode)
        {
            ClientMessage("TestMode activated",,1);
        }
        else
        {
            ClientMessage("TestMode deactivated",,1);
        }
    }
    
    function TestModeToggleSet()
    {   // Stop TestModeSet
        if (bTestMode)
        {
            bTestMode=false; //false
        }  
        else
        {
            bTestMode=true; //true
        }
    }
    
    exec function TestModeToggle()
    {   //Just call for server to try and toggle
        ServerTestModeToggle();
    }
    
    reliable server function ServerTestModeToggle()
    {
        local Rx_Mutator_TestMode_Controller C;
       
        if (PlayerReplicationInfo.bAdmin)
        {  
            foreach WorldInfo.AllControllers(class'Rx_Mutator_TestMode_Controller', C)
            {
            C.TestModeToggleSet();
            C.TestModeCheck();
            }
        }
        else
        {
            ClientMessage("First login as admin",,1);
        }
    }   //Only ever do admin checks on the actual server.
    
    DefaultProperties
    {
        bTestMode=false;
    }

     

    Now i like to find out how i do Keep the variable alive between Map Changes ?
    Do i need then to extend to an other class ?

    Any idea's @yosh56  or @Agent ? :)

     

×
×
  • Create New...