Official Soldat Forums

Server Talk => Scripting Discussions and Help => Topic started by: Leo on January 17, 2008, 09:03:43 am

Title: [Request] Change mapslist according to players number
Post by: Leo on January 17, 2008, 09:03:43 am
Someone can make a script where the mapslist changes according to the number of players in server ? So that if number of players is equal or less than a number that can be changed at the script the mapslist.txt will be used, if the number of players is larger than this number then mapslist2.txt will be used. You get the point :)
Title: Re: [Request] Change mapslist according to players number
Post by: xmRipper on January 17, 2008, 09:49:18 am
Code: [Select]
var
  CurrentMapsList: String;
 
const
  MAPSLIST1 = 'mapslist';    // mapslist.txt
  MAPSLIST2 = 'mapslist2';  // mapslist2.txt
  PLAYERLIMIT = 10;           // Player limit for change mapslist.
 
procedure AppOnIdle(Ticks: integer);
begin
  CurrentMapsList := MAPSLIST1;
end;

procedure OnJoinGame(ID, Team: byte);
begin
  if (NumPlayers > PLAYERLIMIT) and (CurrentMapsList = MAPSLIST1) then Begin
        Command('/loadlist '+MAPSLIST2);
CurrentMapsList := MAPSLIST2;
WriteLn(MAPSLIST2+' Loaded');
  end;
end;

procedure OnLeaveGame(ID, Team: byte; Kicked: boolean);
begin
  if (NumPlayers < PLAYERLIMIT) and (CurrentMapsList = MAPSLIST2) then begin
        Command('/loadlist '+MAPSLIST1);
CurrentMapsList := MAPSLIST1;
WriteLn(MAPSLIST1+' Loaded');
  end;
end;

I dont test it. But should be work.
Title: Re: [Request] Change mapslist according to players number
Post by: rhide on January 17, 2008, 01:49:52 pm
I thought it would be neater if you could add any number of maps instead of just 2. I just hacked this together, so it's not testet througly, but at least it works.

In soldat.ini: add a new tag in the end of the file saying [MAPS]. There, just add the number of maplists you would want, and for each of them, the number of players for wich they should activate. Use this template:

[MAPS]
Maplist1_Players = 2
Maplist1_Filename = maplist_2players.txt
Maplist2_Players = 6
Maplist2_Filename = maplist_6players.txt
Maplist3_Players = 12
Maplist3_Filename = maplist_12players.txt

Now, when the server has 2-5 players it uses maplist_2players.txt, then when there are 6-11 players it uses maplist_6players.txt and if there are 12 or more it uses maplist_12players.txt.

I'd be happy to hear of any bugs! Thanks :)

EDIT 1:
Code: [Select]
const
   MAX_MAPLISTS = 128;
If you create more maplists than MAX_MAPLISTS without changing this variable, they will simply be ignored. The maplist designed for MOST players have highest prioity, and then falling.


EDIT 2:
I forgot to mention, if there is 0-1 players online, the script uses default maplist.
Title: Re: [Request] Change mapslist according to players number
Post by: Leo on January 18, 2008, 05:30:08 am
Thanks guys :D

Date Posted: January 17, 2008, 11:51:39 am
Hmm... I am using xmRipper's script but it seems there is a problem. Map doesn't change to next when timelimit hits  ???
Title: Re: [Request] Change mapslist according to players number
Post by: xmRipper on January 18, 2008, 06:15:34 am
Tested.
Its working on me perfectly. There is not any problem.