Script Name: Left 4 Dead
Core Version: 270c
Script Description:
Just something I've been writing on and off for a few weeks. Basically its as close to Left 4 Dead that is possible in a Soldat script.
I assume anybody that is reading this is familiar with Left 4 Dead so I'll just point out the differences (pros and cons).
-There are no survivor bots when you are alone...just less zombies to deal with
-Verses and cooperative have been combined into one mode - after you have died you spawn as zombies until all other survivors are dead (or they all reach the flag spawn area in extraction point mode)
-There is no 'down' time...if you're dead you're dead
-You can play as a normal zombie while you wait for a special zombie to spawn
-All of the special zombies have different names
-I couldn't exactly recreate the Smoker so instead there is the Flasher that flashes instead of smoking and drags you towards it with a flame thrower but without latching on and constricting you
-There is no count down to zombie respawn (because restrictive numbers interfere with the randomness of the spawning)
-There are only normal grenades
Suggested server settings:
-game mode: 2 (team match)
-time limit: 0 (never ending)
-kill limit: 65535 (maximum)
-grenades: max 1 (so zombies don't get any)
-survival and advanced modes disabled, realistic is acceptable and may be more appropriate for Extraction Point mode.
-map list: Maps with plenty of spawn points (of any kind) for zombies to adopt when spawning so they can always pick ones near survivors. If using Extraction Point mode I suggest tweaking the zombie spawn rates to make up for the fact that players will be running past a lot of them.
-add team management for when a human leaves or dies and a spec can take their place done but untested
-pill, med kit and grenade pickups
-save high scores of most kills, longest survival and fastest time reaching extraction point
-modify extraction point mode so that it is only safe when there are no nearby zombies
-disable all but spawns closest to survivors when zombies spawn
-disable all but closest spawns when assists spawn
-make extra close spawns less likely
-remove weapon selection and force appropriate weapon when player is zombie if possible with updated client
**OR**
-rewrite onweaponchange to fix crashes and zombie weapon bugs
add messages:
-add b***h startler to b***h startle message
-explanation/commands command
Original Authors:
Me
Markus "Dual" Quär CalculationOfTime (http://forums.soldat.pl/index.php?topic=28628.0) IXSplit (http://forums.soldat.pl/index.php?topic=32685.0)
PerroAZUL INI Functions (http://forums.soldat.pl/index.php?topic=22338.0)
Code Sample:
if (lastplayersinsafehouse < playersinsafehouse) and (playersinsafehouse <> BravoPlayers) then begin
if playersinsafehouse <> 1 then begin
WriteConsole(0,inttostr(playersinsafehouse) + ' survivors are safe (' + inttostr(BravoPlayers-playersinsafehouse) + ' remaining)',$EE81FAA1);
end
else begin
WriteConsole(0,'1 survivor is safe (' + inttostr(BravoPlayers-playersinsafehouse) + ' remaining)',$EE81FAA1);
end;
lastplayersinsafehouse := playersinsafehouse;
end;
playersinsafehouse := 0;
for i := 1 to HighestID do begin
if (GetPlayerStat(i,'Active') = true) then begin
if (GetPlayerStat(i,'Alive') = true) then begin
if (GetPlayerStat(i,'Team') = 2) then begin
if Distance(GetPlayerStat(i,'X'),GetPlayerStat(i,'Y'),RedFlagX,RedFlagY) < 75 then begin
playersinsafehouse := playersinsafehouse + 1;
end;
if (playersinsafehouse = BravoPlayers) then begin
if BravoPlayers <> 1 then begin
WriteConsole(0,'The survivors have reached safety',$EE81FAA1);
end
else begin
WriteConsole(0,'The survivor has reached safety',$EE81FAA1);
end;
for j := 1 to HighestID do begin
if (GetPlayerStat(j,'Active') = true) then begin
if (GetPlayerStat(j,'Alive') = true) then begin
if (GetPlayerStat(j,'Team') = 2) then begin
lastteam[j] := 5;
wasplaying[j] := true;
if BravoPlayers <> 1 then begin
if GetPlayerStat(j,'Kills') <> 1 then begin
WriteConsole(j,'Your team reached safety in ' + CalculationOfTime(timeonteam[j]) + ' with you killing ' + GetPlayerStat(j,'Kills') + ' zombies',$EE81FAA1);
end
else begin
WriteConsole(j,'Your team reached safety in ' + CalculationOfTime(timeonteam[j]) + ' with you killing 1 zombie',$EE81FAA1);
end;
end
else begin
if GetPlayerStat(j,'Kills') <> 1 then begin
WriteConsole(j,'You reached safety in ' + CalculationOfTime(timeonteam[j]) + ' and killed ' + GetPlayerStat(j,'Kills') + ' zombies',$EE81FAA1);
end
else begin
WriteConsole(j,'You reached safety in ' + CalculationOfTime(timeonteam[j]) + ' and killed 1 zombie',$EE81FAA1);
end;
end;
end;
end;
end;
end;
donextmap := 1;
end;
Note: the attached .rar file contains the script and two executables - ModderWithOpen.exe and ModderWithoutOpen.exe. These files will modify the soldat server process to change the name of dummy bots so that the witch equivalent will stand still without being named dummy. If you don't wish to use these while testing, rename the bot to dummy.
One of the modders opens soldatserver.exe and patches it and the other just patches the already running process (I don't think I need to explain which is which).