0

OK everyone has been asking me how they can edit their own Zombie patch. So I decided to make this post to help people out with that. Zombieland is made up of basically 3 key gsc files. There are other files but these are the only ones you need to edit.
_missions.gsc
_humanzombiesetup.gsc
_custommapedits.gsc
This is not a thread for total nubes . You need to know how to decompress and recompress a patch. There are many threads telling you how to do this.
You can start with my Zombieland Patch, or most patches based off of the original Zombieland. Here is my Zombieland Patch 3.1.1
You need these files Most are available at the Tutorial link on Decompressing above, the others can be googled and downloaded for free.
packzip.exe and offzip.exe files
notepad++
hex editor
windows xp, vista, or 7
1. Install hex editor, and notepad++ then restart your pc.
2. Create a fold on your desktop called patch put the packzip.exe and offzip.exe files in there as well as the patch_mp.ff file
3. Open the command prompt and type: cd desktop/patch
4. Then type: offzip -a -z -15 patch_mp.ff ./ 0
This will decompress the patch file into many files with weird numbers and letters (these are the file offsets) you only need the files 0000b4a0.dat, 00014f51.dat, and 24ef6.dat. so delete the rest. (do not delete the patch_mp.ff or packzip or offzip)
5. Follow the tutorial link above to decompress the missions.gsc file.
6. You can use the same method to decompress the other 2 files. Just change the offsets and the dat files used as follows. Here is the offset information to get the 2 gsc files decompressed and ready to edit.
7. custommapedits.gsc is in 14f51.dat and 24ef6.dat between the offsets fd18 - 11f45
Humanzombiesetup.gsc can be found in 14f51.dat between the offsets ba78 - ec67
Missions.gsc can be found in b4a0.dat & 14f51.dat between the offsets d7d2 - 1061c
8. You can edit the uncompressed gsc files with notepad++ Use the link below to learn more about gsc coding.
9. You have to recompress the gsc files back into the patch_mp.ff file as described in the decompressing/recompress tutorial.
10. An example of a simple edit is to change the cost of items in the shop. In notepad++ open missions.gsc
11. hit control +f (find) and type: costinit hit enter until you get to something like this.---------------
CostInit()
{
level.itemCost = [];
level.itemCost["ammo"] = 100;
level.itemCost["LMG"] = 100;
level.itemCost["Assault Rifle"] = 75;
level.itemCost["Machine Pistol"] = 25;
level.itemCost["Sniper Rifle"] = 50;
level.itemCost["Explosive Bullets"] = 1450;
level.itemCost["Sentry"] = 250;
level.itemCost["Unlimited"] = 800;
level.itemCost["Nuke"] = 1990;
level.itemCost["Riot"] = 100;
level.itemCost["Teleport"] = 750;
level.itemCost["TeleportZ"] = 600;
level.itemCost["Akimbo"] = 50;
level.itemCost["Eotech"] = 50;
level.itemCost["Mine"] = 75;
level.itemCost["FMJ"] = 50;
level.itemCost["Silencer"] = 10;
level.itemCost["XMags"] = 25;
level.itemCost["ROF"] = 10;
level.itemCost["Invisibility"] = 700;
level.itemCost["Poltergeist"] = 900;
level.itemCost["Flash"] = 600;
level.itemCost["Turtle"] = 300;
level.itemCost["HTurtle"] = 150;
level.itemCost["Hare"] = 300;
level.itemCost["humanhp"] = 250;
level.itemCost["health"] = 50;
level.itemCost["Thermal"] = 50;
level.itemCost["ThrowingKnife"] = 260;
level.itemCost["SteadyAim"] = 25;
level.itemCost["SteadyAimPro"] = 5;
level.itemCost["SleightOfHand"] = 25;
level.itemCost["SleightOfHandPro"] = 5;
level.itemCost["SitRep"] = 5;
level.itemCost["SitRepPro"] = 20;
level.itemCost["StoppingPower"] = 195;
level.itemCost["StoppingPowerPro"] = 5;
level.itemCost["ColdBlooded"] = 190;
level.itemCost["ColdBloodedPro"] = 10;
level.itemCost["Ninja"] = 200;
level.itemCost["NinjaPro"] = 100;
level.itemCost["Lightweight"] = 95;
level.itemCost["LightweightPro"] = 5;
12. Changing any of these numbers will change the cost of the item in the shop.
13. In CustomMapEdit.gsc you can make map changes to many of the maps. However some maps are found in humanzombieedits.gsc
Here is an example of what the code for Underpass looks like:
Underpass()
{
CreateWalls((-1201, 617, 435), (-1089, 823, 465));
CreateElevator((618, 255, 380), (-1100, 2666, 494));
CreateElevator((-3253, 552, 423), (1178, 2280, 253));
CreateElevator((3631, 347, 299), (3825, 1111, 395));
CreateElevator((4608, 671, 656), (540, 1479, 552));
CreateHiddenFlag((3389, 3394, 395), (531, -1536, 1500));
CreateElevator((-2886, -392, 2195), (-464, 2078, 369));
CreateAsc((636, 2529, 507), (621, 2529, 699), 0, 5);
CreateAsc((-1281, 2000, 415), (-1281, 2000, 675), 0, 5);
CreateTurret((-1281, 2100, 620), (0, -90, 0));
CreateBlocks((-1110, 708, 430), (0, 0, 0));
CreateBlocks((-510, 571, 565), (0, 90, 0));
CreateRamps((4388, 1903, 62, (4508, 2528, 450));
CreateWalls((-326, 1229, 363), (-524, 1229, 419));
CreateElevator((-1616, 2660, 616), (-1685, 1692, 2009));
}
Example:
CreateElevator is the command to create a teleport flag
CreateElevator((x1, y1, z1), (x2, y2, z2));
the first set of xyz numbers is the location of the flag that teleports you the 2nd set of xyz number is the location you will land. You can get these numbers from a standard infection from most CL patches, or from my zombieland 3.1.1 patch. (three numbers in white that look like this on your screen (-1616, 2660, 616)
x and y are your position on the ground where z is elevation (how high of low you are) remember that the Z reading on your screen is the position of your head not you feet.
CreateAsc is the command to make a floating care package
CreateAsc((x1, y1, z1), (x2, y2, z2)), a, b);
xyz is almost always the same in each command locations. the first set is where the care package starts, and the second is where it stops. It travels in a loop going from 1 to 2 to and so on.
a=angle Just always leave as 0
b=time the amount of time it take to get from point 1 to point 2 5 is good.
The are many more commands you will have to figure out on your own, but here are a few more.
Create walls, turrets, and blocks should be self explanatory.
HiddenFlag is a flag that will not show up on radar.
Grid is a flat surface of Care Packages xyz1 is one corner xyz2 is the diagonal corner, same goes for walls.
Doors are the hardest to figure because of dealing with the angels, and for me it still trail and error. A poor explaination of each command for the maps can be found in humanzomiesetup.gsc from line 124 to line 588 (approx)
Example:
CreateDoors(open, close, angle, size, height, hp, range)
this is what the header of a build command thread looks like.
you can see from this when comparing to an actual door line command (below) that open is the XYZ position of the door when open. close is the XYZ position of the door when closed. You also see that open, close, and angle all require 3 numbers. Where as size, height, hp, and range, require just 1 number. (I am still unsure what Range is.)
CreateDoors((1386, 7960, 235), (1386, 7845, 235 ), (90,90, 90), 3, 2, 50, 75);
Well, I hope this will give you a basic understanding of the Zombie patch format. Good luck and watch your syntax errors.
-Hawkin
Register or log in to view signatures.
.DeadlyMoDz25 (01-28-2011), 890popbox (02-02-2011), anddrew (02-01-2011), A_lugie (02-02-2011), Bigbadpaul2 (01-25-2011), bigboybobby14 (02-01-2011), Blackstorm (01-24-2011), DrDoomBringer (02-02-2011), GodDrinksPepsi (06-02-2012), hydro_122499 (02-02-2011), Jannis96 (01-27-2011),keithfin(02-03-2011), littlecarlos (02-03-2011), mrkhlgt (02-08-2011), Mr__Shalemari (07-24-2011), Mw2- (01-31-2011), Plurals (02-16-2011), skillz369 (02-01-2011), soebred (02-09-2011), tjhash (01-29-2011), uhChad (01-24-2011), woofdawg233 (02-01-2011), ww2gamer3 (02-01-2011), xd366 (02-06-2011), ZzXr3V0LuTi0NzZ (02-07-2011), |ManiaC| (02-24-2011)

Last edited by anddrew; 02-02-2011 at 11:50 AM. Reason: link added
Register or log in to view signatures.

thanx for the help but im still getting errors and i don't know why
i added
createwalls
create ramps
create blocks
-----------------------------------------
If you are getting errors check your syntax, because you shouldn't be. Or maybe you still have a command you didn't add like createturrets createelevator (flags) creategrids (floors)
However for the maps to actually draw, I was thinking about it, and you should really add a new gsc like custommapedits.gsc to your patch. Or you can add this to your init() on missions.gsc
Then this must go somewhere in missions.gscPHP Code:level thread initMap();
You can take out the maps you don't want to use if you do it right. you should also have something like this in your missions.gsc file somewhere.PHP Code:initMap()
{
level.doCustomMap = 0;
level.doorwait = 2;
level.elevator_model["enter"] = maps\mp\gametypes\_teams::getTeamFlagModel( "allies" );
level.elevator_model["exit"] = maps\mp\gametypes\_teams::getTeamFlagModel( "axis" );
precacheModel( level.elevator_model["enter"] );
precacheModel( level.elevator_model["exit"] );
wait 1;
if(getDvar("mapname") == "mp_afghan"){ /** Afghan **/
level thread Afghan();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_boneyard"){ /** Scrapyard **/
level thread Scrapyard();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_brecourt"){ /** Wasteland **/
level thread Wasteland();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_checkpoint"){ /** Karachi **/
level thread Karachi();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_derail"){ /** Derail **/
level thread Derail();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_estate"){ /** Estate **/
level thread Estate();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_favela"){ /** Favela **/
level thread Favela();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_highrise"){ /** HighRise **/
level thread HighRise();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_nightshift"){ /** Skidrow **/
level thread Skidrow();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_invasion"){ /** Invasion **/
level thread Invasion();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_quarry"){ /** Quarry **/
level thread Quarry();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_rundown"){ /** Rundown **/
level thread Rundown();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_rust"){ /** Rust **/
level thread Rust();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_subbase"){ /** SubBase **/
level thread SubBase();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_terminal"){ /** Terminal **/
level thread Terminal();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_underpass"){ /** Underpass **/
level thread Underpass();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_overgrown"){ /** Overgrown **/
level thread Overgrown();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_compact"){ /** Salvage **/
level thread Salvage();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_complex"){ /** Bailout **/
level thread Bailout();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_crash"){ /** Crash **/
level thread Crash();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_storm"){ /** Storm **/
level thread Storm();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_strike"){ /** Strike **/
level thread Strike();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_vacant"){ /** Vacant **/
level thread Vacant();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_fuel2"){ /** Fuel **/
level thread Fuel();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_trailerpark"){ /** Trailer Park **/
level thread Park();
level.doCustomMap = 1;
}
if(getDvar("mapname") == "mp_abandon"){ /** Carnival **/
level thread Carnival();
level.doCustomMap = 1;
}
if(level.doCustomMap == 1){
level.gameState = "starting";
level thread CreateMapWait();
} else {
level.gameState = "starting";
wait 15;
level notify("CREATED");
}
}
It's alot of stuff you need to add. I may still be forgetting something.PHP Code:CreateMapWait()
{
for(i = 30; i > 0; i--)
{
level.TimerText destroy();
level.TimerText = level createServerFontString( "objective", 1.5 );
level.TimerText setPoint( "CENTER", "CENTER", 0, -100 );
level.TimerText setText("^3Building Map: " + i);
wait 1;
}
level notify("CREATED");
foreach(player in level.players)
{ player VisionSetNakedForPlayer(getDvar("mapname"), 0);
}
}
Last edited by Hawkin; 02-02-2011 at 12:36 PM.
Register or log in to view signatures.
this has been a bunch of help![]()
Register or log in to view signatures.
you are very good at explaining![]()
Register or log in to view signatures.

OMG!! thnx man, im so happy right nowthnx lots
Register or log in to view signatures.

I love how people are having trouble with this. I did them all in a matter of 15 mins and did it on both 3.1 and 3.2
Register or log in to view signatures.
Ok i've edited everyting I wanted too and it works great thank yu very much, but I want to add in the mod menu from the older 2.2V but the bad thing is the 22 valid block files are different and there is no f14 file so how would I edit that in??
Thanks
Hawkie
Register or log in to view signatures.
can't you just give us the .gsc download? and put that in there..
Register or log in to view signatures.

Last edited by anddrew; 02-04-2011 at 11:33 AM.
Register or log in to view signatures.

i like this !!!
now i can create my own zombieland patch THX !!!
Register or log in to view signatures.