Jump to content

Howto set replicate current variable to new players that join


Ukill

Recommended Posts

 

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. }

 

 

 

Edited by Ukill
add "if (bNetDirty && Role == ROLE_Authority)" to the script
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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 !!!!

Edited by Ukill
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...