Has anyone tested this enough to confirm if the zombies attack other players or not?
|
|
|
|
Would you like to get all the new info from
PSX-Scene in your email each day?
Want to learn more about the team keeping you up to date with the latest scene news?
Read about them now! Check out our Developer bios, too! | ||
|
|
Has anyone tested this enough to confirm if the zombies attack other players or not?
No, the zombies will not attack other players. I released a zombies mod based on this and the zombies do attack other online players - - ([REL]ZOMBIES Multiplayer Madness)
Hi minasan, I've been restless when I posted this request in Alexander Blades Zombie Script.
Now I'm Trying to Recreate it since I haven't seen this mod for PS3, but Since I am no real Coder and I ran out of Source codes to base the codes I needed, I extremely fabulously need your Help.
The Aim is To Spawn Zombies (I used HuN's Zombie Generator). which is already Given to HuN's Zombie Generator, I just modified it so no Zombies have weapons and they all walk like real zombies. my Problem with this is that when they attack they make that boxing pose (that I really don't know how to change, more info. below)
I have 2 Environments in Mind
- One is an Environment where Fires and Explosion are Frequent Like Total Chaos (Most Likely the same a GTA IV WarZ). I really need to set the environtment in fire to add some Feel
- and The Other One is an Environment more Like a Quiet and creepy, still with a few fires (Default to HuN's Zombie Generator)
The First Time I modified HuN's Zombie Generator, I was able to Spawn different Zombie Models but Still Incomplete.
Here's My Checklist:
- Spawn Different Zombies == Done
- Zombies Should be Bloody Dirty (I have no Idea How to do This)
- Zombies Attack without that Boxing Pose (I was researching for Scripts online and found the bum_fight, from "amb@drunk.wad" should be used though I don't really know how the animation looks like. but whenever I try to call amb@drunk I got a freeze and I have no Idea how to add the bum_fight)
- Spawn Few Random Peds and Cops with Guns Shooting the Zombies == Done
- Spawn a very Few Peds Screaming and Running
- Set the Environment on Fire
- Set some Cars on Fire (Exploded already)
- Set some Cars with open Doors
- Set Random Cars doDriveby
- Set Generated Cars ignore Street Lights and Speedy (DRIVING_STYLE_IGNORE_LIGHTS_AND_LANES, DRIVING_STYLE_IGNORE_STREETS, DRIVING_STYLE_IGNORE_LIGHTS)
Here is the modified Script I made, I also added notes to some codes I found no Evidence of Working.
ZGen Modified
PHP Code://##################### Zombie Chaos ################################//
//Check List Progress
// Different Zombie Models Done
// Walking Animation Done
// Attack Animation Seems Impossible
// Bloody Dirty ---
// Random NPC (Peds and Cops) Done
// Attack Zombies with Weapons Done
// Recruitable ---
// Random Ped Flee and Screaming ---
// Random Cars on Fire ---
// Random Ped Cars on Ignore Street and Lights Drive Style ---
// Random Explosion and Fires ---
//###################################################################//
#include <natives.h>
#include <common.h>
#include <strings.h>
#include <types.h>
#include <consts.h>
//###################################################################//
Ped zomb[40];
Ped surv[5];
uint modelT[50];
uint modelU[50];
weap[9];
int dm;
int cdm;
uint stat = 0;
uint mlvl = 0;
float xp, yp, zp;
//############### Define Ps3 GamePad ################################//
#define DPAD_DOWN 0x9
#define CIRCLE 0x11
//############### Define Ps3 GamePad ################################//
// Display Text Shortcut
void Print(char *string)
{
PRINT_STRING_WITH_LITERAL_STRING_NOW("STRING", string, 5000, 1);
}
// General Settings
void InitZombSet(void)
{
modelT[0] = MODEL_M_Y_TOUGH_05;
modelT[1] = MODEL_M_Y_STREETPUNK_04;
modelT[2] = MODEL_M_Y_STREETBLK_02;
modelT[3] = MODEL_F_Y_STRIPPERC02;
modelT[4] = MODEL_F_Y_HOOKER_03;
modelT[5] = MODEL_M_M_ALCOHOLIC;
modelT[6] = MODEL_M_M_CRACKHEAD;
modelT[7] = MODEL_F_O_PEASTEURO_02;
modelT[8] = MODEL_F_M_CHINATOWN;
modelT[9] = MODEL_M_Y_THIEF;
modelT[10] = MODEL_M_Y_PRISON;
modelT[11] = MODEL_F_Y_CDRESS_01;
modelT[12] = MODEL_M_M_GUNNUT_01;
modelT[13] = MODEL_M_O_MPMOBBOSS;
modelT[14] = MODEL_F_Y_STREET_34;
modelT[15] = MODEL_M_M_FATMOB_01;
modelT[16] = MODEL_M_O_MOBSTER;
modelT[17] = MODEL_F_Y_FF_WSPIZZA_R;
modelT[18] = MODEL_M_M_LAWYER_02;
modelT[19] = MODEL_M_O_HOTEL_FOOT;
modelT[20] = MODEL_F_Y_STREET_09;
modelT[21] = MODEL_M_Y_GOON_01;
modelT[22] = MODEL_M_Y_SWORDSWALLOW;
modelT[23] = MODEL_F_Y_FF_RSCAFE;
modelT[24] = MODEL_M_Y_SHADY_02;
modelT[25] = MODEL_M_Y_BOUNCER_02;
modelT[26] = MODEL_F_M_BUSINESS_01;
modelT[27] = MODEL_F_Y_STRIPPERC01;
modelT[28] = MODEL_M_M_BUSDRIVER;
modelT[29] = MODEL_M_M_HPORTER_01;
modelT[30] = MODEL_F_Y_VILLBO_01;
modelT[31] = MODEL_F_Y_STREET_02;
modelT[32] = MODEL_M_M_GENBUM_01;
modelT[33] = MODEL_M_Y_DORK_02;
modelT[34] = MODEL_M_O_SUITED;
modelT[35] = MODEL_M_Y_HARDMAN_01;
modelT[36] = MODEL_F_O_MAID_01;
modelT[37] = MODEL_M_Y_BOHOGUY_01;
modelT[38] = MODEL_M_Y_CHOPSHOP_02;
modelT[39] = MODEL_M_Y_SOHO_01;
modelT[40] = MODEL_F_Y_SOCIALITE;
modelT[41] = MODEL_F_Y_GYMGAL_01;
modelT[42] = MODEL_M_M_POSTAL_01;
modelT[43] = MODEL_M_M_TELEPHONE;
modelT[44] = MODEL_M_Y_DEALER;
modelT[45] = MODEL_M_Y_DRUG_01;
modelT[46] = MODEL_F_Y_PEASTEURO_01;
modelT[47] = MODEL_M_Y_VALET;
modelT[48] = MODEL_M_Y_CLUBFIT;
modelT[49] = MODEL_M_M_GAYMID;
modelU[0] = MODEL_M_M_FATCOP_01;
modelU[1] = MODEL_M_Y_COP;
modelU[2] = MODEL_M_Y_COP_TRAFFIC;
modelU[3] = MODEL_M_M_FBI;
modelU[4] = MODEL_M_Y_BOUNCER_01;
modelU[5] = MODEL_M_Y_BOUNCER_02;
modelU[6] = MODEL_M_Y_COWBOY_01;
modelU[7] = MODEL_M_M_CRACKHEAD;
modelU[8] = MODEL_M_Y_DEALER;
modelU[9] = MODEL_M_Y_DRUG_01;
modelU[10] = MODEL_M_Y_GARBAGE;
modelU[11] = MODEL_M_Y_MECHANIC_02;
modelU[12] = MODEL_M_Y_RUNNER;
modelU[13] = MODEL_M_Y_SHOPASST_01;
modelU[14] = MODEL_M_Y_STROOPER;
modelU[15] = MODEL_M_Y_SWAT;
modelU[16] = MODEL_M_Y_THIEF;
modelU[17] = MODEL_F_Y_BANK_01;
modelU[18] = MODEL_F_Y_DOCTOR_01;
modelU[19] = MODEL_F_Y_GYMGAL_01;
modelU[20] = MODEL_F_Y_PRICH_01;
modelU[21] = MODEL_F_Y_PVILLBO_02;
modelU[22] = MODEL_F_Y_SHOP_03;
modelU[23] = MODEL_F_Y_SHOP_04;
modelU[24] = MODEL_F_Y_SHOPPER_05;
modelU[25] = MODEL_F_Y_SOCIALITE;
modelU[26] = MODEL_F_Y_STREET_02;
modelU[27] = MODEL_F_Y_STREET_05;
modelU[28] = MODEL_F_Y_STREET_09;
modelU[29] = MODEL_F_Y_STREET_12;
modelU[30] = MODEL_F_Y_STREET_30;
modelU[31] = MODEL_F_Y_STREET_34;
modelU[32] = MODEL_F_Y_TOURIST_01;
modelU[33] = MODEL_F_Y_VILLBO_01;
modelU[34] = MODEL_M_M_EE_HEAVY_01;
modelU[35] = MODEL_M_M_EE_HEAVY_02;
modelU[36] = MODEL_M_M_FATMOB_01;
modelU[37] = MODEL_M_Y_SHADY_02;
modelU[38] = MODEL_M_Y_SKATEBIKE_01;
modelU[39] = MODEL_M_Y_SOHO_01;
modelU[40] = MODEL_M_Y_STREET_01;
modelU[41] = MODEL_M_Y_STREET_03;
modelU[42] = MODEL_M_Y_STREET_04;
modelU[43] = MODEL_M_Y_STREETBLK_02;
modelU[44] = MODEL_M_Y_STREETBLK_03;
modelU[45] = MODEL_M_Y_STREETPUNK_02;
modelU[46] = MODEL_M_Y_STREETPUNK_04;
modelU[47] = MODEL_M_Y_STREETPUNK_05;
modelU[48] = MODEL_M_Y_TOUGH_05;
modelU[49] = MODEL_M_Y_TOURIST_02;
weap[0] = WEAPON_BASEBALLBAT;
weap[1] = WEAPON_MOLOTOV;
weap[2] = WEAPON_DEAGLE;
weap[3] = WEAPON_SHOTGUN;
weap[4] = WEAPON_BARETTA;
weap[5] = WEAPON_MP5;
weap[6] = WEAPON_AK47;
weap[7] = WEAPON_M4;
weap[8] = WEAPON_SNIPERRIFLE;
stat = GET_INT_STAT(363);
GET_MAX_WANTED_LEVEL(&mlvl);
LOAD_CHAR_DECISION_MAKER(2, &dm);
LOAD_COMBAT_DECISION_MAKER(3, &cdm);
SET_DECISION_MAKER_ATTRIBUTE_SIGHT_RANGE(dm, 250);
SET_DECISION_MAKER_ATTRIBUTE_SIGHT_RANGE(cdm, 250);
SET_INT_STAT(363, 5);
SET_CAR_DENSITY_MULTIPLIER(0.05);
SET_RANDOM_CAR_DENSITY_MULTIPLIER(0.05);
SET_PARKED_CAR_DENSITY_MULTIPLIER(0.5);
SET_PED_DENSITY_MULTIPLIER(0.0);
SET_SCENARIO_PED_DENSITY_MULTIPLIER(0.0, 0.0);
SET_ALL_RANDOM_PEDS_FLEE(GetPlayerIndex(), TRUE); // Seems not Working
ALLOW_EMERGENCY_SERVICES(FALSE);
SWITCH_RANDOM_BOATS(TRUE);
SWITCH_POLICE_HELIS(TRUE);
SWITCH_AMBIENT_PLANES(FALSE);
SWITCH_GARBAGE_TRUCKS(FALSE);
SWITCH_RANDOM_TRAINS(FALSE);
SET_CREATE_RANDOM_COPS(FALSE);
MUTE_POSITIONED_RADIO(TRUE); // Seems not Working
DISABLE_FRONTEND_RADIO(); // Seems not Working
FORCE_WEATHER_NOW(WEATHER_FOGGY);
}
// Zombies Settings
void ZombSet(uint ptype)
{
SET_CHAR_RELATIONSHIP_GROUP(ptype, 24);
SET_CHAR_RELATIONSHIP(ptype, 5, 0);
SET_CHAR_RELATIONSHIP(ptype, 5, 1);
SET_CHAR_RELATIONSHIP(ptype, 5, 2);
SET_CHAR_RELATIONSHIP(ptype, 5, 3);
SET_CHAR_RELATIONSHIP(ptype, 5, RELATIONSHIP_GROUP_SPECIAL);
SET_CHAR_RANDOM_COMPONENT_VARIATION(ptype);
SET_CHAR_COMPONENT_VARIATION(ptype, 0, 3, 3);
SET_CHAR_COMPONENT_VARIATION(ptype, 1, 4, 1);
SET_CHAR_AS_ENEMY(ptype, TRUE);
SET_ALL_RANDOM_PEDS_FLEE(GetPlayerIndex(), TRUE); // Possibly No Effect
SET_CHAR_WANTED_BY_POLICE(ptype, TRUE); // Possibly No Effect
SET_CHAR_SUFFERS_CRITICAL_HITS(ptype, TRUE); // Possibly No Effect
SET_CHAR_MONEY(ptype, 0);
SET_CHAR_DECISION_MAKER(ptype, dm);
SET_COMBAT_DECISION_MAKER(ptype, cdm);
SET_CHAR_WILL_USE_CARS_IN_COMBAT(ptype, FALSE);
SET_CHAR_WILL_LEAVE_CAR_IN_COMBAT(ptype, TRUE);
SET_CHAR_DIES_INSTANTLY_IN_WATER(ptype, TRUE);
SET_ANIM_GROUP_FOR_CHAR(ptype, "move_injured_lower");
SET_SENSE_RANGE(ptype, 500.0);
SET_CAN_TARGET_CHAR_WITHOUT_LOS(ptype, FALSE);
SET_CHAR_KEEP_TASK(ptype, TRUE);
TASK_COMBAT_HATED_TARGETS_AROUND_CHAR(ptype, 500.0);
SET_CHAR_WILL_MOVE_WHEN_INJURED(ptype, TRUE);
SET_CHAR_WILL_USE_COVER(ptype, FALSE);
SET_PED_DONT_DO_EVASIVE_DIVES(ptype, TRUE);
SET_PED_DIES_WHEN_INJURED(ptype, TRUE);
SET_PED_GENERATES_DEAD_BODY_EVENTS(ptype, TRUE);
SET_PED_PATH_MAY_USE_CLIMBOVERS(ptype, TRUE);
SET_PED_PATH_MAY_DROP_FROM_HEIGHT(ptype, TRUE);
SET_PED_PATH_MAY_USE_LADDERS(ptype, FALSE);
CANCEL_CURRENTLY_PLAYING_AMBIENT_SPEECH(ptype);
SET_AMBIENT_VOICE_NAME(ptype, "M_ZOMBIE");
SAY_AMBIENT_SPEECH(ptype, "MOAN", 1, 1, 2);
}
// Survivor Settings
void SurvSet(uint stype)
{
SET_CHAR_RELATIONSHIP_GROUP(stype, RELATIONSHIP_GROUP_SPECIAL);
SET_CHAR_RELATIONSHIP(stype, RELATIONSHIP_HATE, 24);
SET_CHAR_RELATIONSHIP(stype, RELATIONSHIP_RESPECT, RELATIONSHIP_GROUP_PLAYER);
SET_CHAR_RELATIONSHIP(stype, RELATIONSHIP_RESPECT, RELATIONSHIP_GROUP_SPECIAL);
SET_CHAR_RANDOM_COMPONENT_VARIATION(stype);
//SET_CHAR_COMPONENT_VARIATION(stype, 0, 3, 3);
//SET_CHAR_COMPONENT_VARIATION(stype, 1, 4, 1);
SET_ALL_RANDOM_PEDS_FLEE(GetPlayerIndex(), TRUE); // Possibly No Effect
SET_CHAR_WANTED_BY_POLICE(stype, FALSE); // Possibly No Effect
SET_CHAR_MONEY(stype, 0);
SET_CHAR_DECISION_MAKER(stype, dm);
SET_COMBAT_DECISION_MAKER(stype, cdm);
SET_CHAR_WILL_USE_CARS_IN_COMBAT(stype, TRUE);
SET_CHAR_WILL_LEAVE_CAR_IN_COMBAT(stype, FALSE);
SET_CHAR_DIES_INSTANTLY_IN_WATER(stype, FALSE);
SET_SENSE_RANGE(stype, 1000.0);
SET_CAN_TARGET_CHAR_WITHOUT_LOS(stype, FALSE);
SET_CHAR_WILL_ONLY_FIRE_WITH_CLEAR_LOS(stype, TRUE);
SET_CHAR_KEEP_TASK(stype, TRUE);
TASK_COMBAT_HATED_TARGETS_AROUND_CHAR(stype, 1000.0);
SET_CHAR_WILL_MOVE_WHEN_INJURED(stype, TRUE);
SET_CHAR_WILL_USE_COVER(stype, TRUE);
SET_CHAR_PROVIDE_COVERING_FIRE(stype, TRUE);
SET_PED_DONT_DO_EVASIVE_DIVES(stype, FALSE);
SET_PED_GENERATES_DEAD_BODY_EVENTS(stype, TRUE);
SET_PED_PATH_MAY_USE_CLIMBOVERS(stype, TRUE);
SET_PED_PATH_MAY_DROP_FROM_HEIGHT(stype, TRUE);
SET_PED_PATH_MAY_USE_LADDERS(stype, TRUE);
uint w;
GENERATE_RANDOM_INT_IN_RANGE(0, 9, &w);
UpdateWeaponOfPed(stype, weap[w]);
SET_CURRENT_CHAR_WEAPON(stype, weap[w], TRUE);
SET_CHAR_CURRENT_WEAPON_VISIBLE(stype, TRUE);
SET_CHAR_DROPS_WEAPONS_WHEN_DEAD(stype, TRUE);
}
// Get Player Info
void PlayerC(void)
{
if(IS_PLAYER_PLAYING(GetPlayerIndex()))
{
GET_CHAR_COORDINATES(GetPlayerPed(), &xp, &yp, &zp);
}
}
// Manage Player & Wanted Settings
void Pset(void)
{
if(IS_PLAYER_PLAYING(GetPlayerIndex()))
{
CLEAR_WANTED_LEVEL(GetPlayerIndex());
SET_MAX_WANTED_LEVEL(0);
SET_CHAR_WANTED_BY_POLICE(GetPlayerPed(), FALSE);
SET_POLICE_IGNORE_PLAYER(GetPlayerIndex(), TRUE);
SET_POLICE_RADAR_BLIPS(FALSE);
}
}
// Zombie Generator
void ZombGen(void)
{
if(IS_PLAYER_PLAYING(GetPlayerIndex()))
{
uint I;
for (I = 0; I <= 39; I++)
{
if(!DOES_CHAR_EXIST(zomb[I]))
{
float offx;
float offy;
float x, y, z;
float zgrnd;
float dista;
uint rmo;
GENERATE_RANDOM_FLOAT_IN_RANGE(-85.0, 85.0, &offx);
GENERATE_RANDOM_FLOAT_IN_RANGE(-85.0, 85.0, &offy);
GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS(GetPlayerPed(), offx, offy, 0, &x, &y, &z);
GET_GROUND_Z_FOR_3D_COORD(x, y, z, &zgrnd);
GET_DISTANCE_BETWEEN_COORDS_3D(xp, yp, zp, x, y, zgrnd, &dista);
GENERATE_RANDOM_INT_IN_RANGE(0, 50, &rmo);
if(dista >= 40.0 && zgrnd >= 1.0)
{
REQUEST_MODEL(modelT[rmo]);
while (!HAS_MODEL_LOADED(modelT[rmo])) WAIT(0);
CLEAR_AREA_OF_CARS(x, y, zgrnd, 3.0);
CLEAR_AREA_OF_CHARS(x, y, zgrnd, 3.0);
CREATE_CHAR(16, modelT[rmo], x, y, zgrnd + 0.1000, &zomb[I], true);
ZombSet(zomb[I]);
//zsptfx[I] = START_PTFX_ON_PED_BONE("ambient_steam_manhole", zomb[I], 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, BONE_PELVIS, 1.0);
//zfptfx[I] = START_PTFX_ON_PED_BONE("ambient_flies_circling", zomb[I], 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, BONE_HEAD, 1.0);
if (rmo == 49)
{
START_CHAR_FIRE(zomb[I]);
}
MARK_MODEL_AS_NO_LONGER_NEEDED(modelT[rmo]);
}
}
}
}
}
// Survivor Generator
void SurvGen(void)
{
if(IS_PLAYER_PLAYING(GetPlayerIndex()))
WAIT(10000); // <<==Will be Remove When Everything is Stable
{
uint J;
for (J = 0; J <= 4; J++)
{
if(!DOES_CHAR_EXIST(surv[J]))
{
float soffx;
float soffy;
float sx, sy, sz;
float szgrnd;
float sdista;
uint smo;
GENERATE_RANDOM_FLOAT_IN_RANGE(-85.0, 85.0, &soffx);
GENERATE_RANDOM_FLOAT_IN_RANGE(-85.0, 85.0, &soffy);
GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS(GetPlayerPed(), soffx, soffy, 0, &sx, &sy, &sz);
GET_GROUND_Z_FOR_3D_COORD(sx, sy, sz, &szgrnd);
GET_DISTANCE_BETWEEN_COORDS_3D(xp, yp, zp, sx, sy, szgrnd, &sdista);
GENERATE_RANDOM_INT_IN_RANGE(0, 50, &smo);
if(sdista >= 40.0 && szgrnd >= 1.0)
{
REQUEST_MODEL(modelU[smo]);
while (!HAS_MODEL_LOADED(modelU[smo])) WAIT(0);
CLEAR_AREA_OF_CARS(sx, sy, szgrnd, 3.0);
CLEAR_AREA_OF_CHARS(sx, sy, szgrnd, 3.0);
CREATE_CHAR(16, modelU[smo], sx, sy, szgrnd + 0.1000, &surv[J], true);
SurvSet(surv[J]);
//uint bv;
//GENERATE_RANDOM_INT_IN_RANGE(0, 50, &bv);
//if (bv=25)
//{
//SET_CHAR_BULLETPROOF_VEST(surv[J], TRUE);
//}
MARK_MODEL_AS_NO_LONGER_NEEDED(modelU[smo]);
}
}
}
}
}
// Manage Zombies
void ManageZomb(void)
{
uint I;
for (I = 0; I <= 39; I++)
{
if(DOES_CHAR_EXIST(zomb[I]))
{
float zx, zy, zz;
float distb;
GET_CHAR_COORDINATES(zomb[I], &zx, &zy, &zz);
GET_DISTANCE_BETWEEN_COORDS_3D(xp, yp, zp, zx, zy, zz, &distb);
SAY_AMBIENT_SPEECH(zomb[I], "MOAN", 1, 1, 2);
if(HAS_CHAR_BEEN_DAMAGED_BY_CHAR(zomb[I], GetPlayerPed(), 0))
{
SWITCH_PED_TO_RAGDOLL (zomb[I], 0, 3000, 0, 0, 0, 0);
}
if(IS_CHAR_DEAD(zomb[I]) || distb > 100.0)
{
//STOP_PTFX(zsptfx[I]);
//STOP_PTFX(zfptfx[I]);
//REMOVE_PTFX_FROM_PED(zomb[I]);
EXPLODE_CHAR_HEAD(zomb[I]);
TASK_DIE(zomb[I]);
MARK_CHAR_AS_NO_LONGER_NEEDED(&zomb[I]);
}
}
}
}
// Manage Survivors
void ManageSurv(void)
{
uint J;
for (J = 0; J <= 4; J++)
{
if(DOES_CHAR_EXIST(surv[J]))
{
float szx, szy, szz;
float sdistb;
GET_CHAR_COORDINATES(surv[J], &szx, &szy, &szz);
GET_DISTANCE_BETWEEN_COORDS_3D(xp, yp, zp, szx, szy, szz, &sdistb);
if(IS_CHAR_DEAD(surv[J]) || sdistb > 100.0)
{
EXPLODE_CHAR_HEAD(surv[J]);
TASK_DIE(surv[J]);
MARK_CHAR_AS_NO_LONGER_NEEDED(&surv[J]);
}
}
}
}
void DisableZgen(void)
{
if(IS_BUTTON_PRESSED(0, DPAD_DOWN) && IS_BUTTON_JUST_PRESSED(0, CIRCLE))
{
Print("Zombie Generator Disabled");
SET_INT_STAT(363, stat);
SET_MAX_WANTED_LEVEL(mlvl);
SET_CAR_DENSITY_MULTIPLIER(1.25);
SET_RANDOM_CAR_DENSITY_MULTIPLIER(1.25);
SET_PARKED_CAR_DENSITY_MULTIPLIER(2.25);
SET_PED_DENSITY_MULTIPLIER(1.50);
SET_SCENARIO_PED_DENSITY_MULTIPLIER(1.0, 1.0);
SET_ALL_RANDOM_PEDS_FLEE(GetPlayerIndex(), FALSE);
ALLOW_EMERGENCY_SERVICES(TRUE);
SWITCH_RANDOM_BOATS(TRUE);
SWITCH_POLICE_HELIS(TRUE);
SWITCH_AMBIENT_PLANES(TRUE);
SWITCH_GARBAGE_TRUCKS(TRUE);
SWITCH_RANDOM_TRAINS(TRUE);
SET_CREATE_RANDOM_COPS(TRUE);
SET_POLICE_RADAR_BLIPS(TRUE);
SET_POLICE_IGNORE_PLAYER(GetPlayerIndex(), FALSE);
MUTE_POSITIONED_RADIO(FALSE);
DISABLE_FRONTEND_RADIO();
FORCE_WEATHER_NOW(WEATHER_SUNNY);
SET_DEAD_PEDS_DROP_WEAPONS(TRUE);
TERMINATE_THIS_SCRIPT();
}
}
void main(void)
{
InitZombSet();
while (TRUE)
{
WAIT(0);
PlayerC();
Pset();
ZombGen();
SurvGen();
ManageZomb();
ManageSurv();
DisableZgen();
}
}
Currently Bugs Found:
- Freezes when an explosion is near to Niko (Maybe Due to Animation); Frquency: 1/10
- Some generated Zombies Stay Standing still and Unmovable (Specially When Driving); Frequency: 1/10
Guys this is awesome if it happens, It's a Happy Killing Zombies.
Last edited by Zaiakursed; 05-01-2013 at 04:24 AM.

im currently taking a break from the " zombie project " but im not quiting it ... i got a mixed generator script now ( zombies + fighting survivors ) ill post it this weekend , so you can build from it .
btw some of your suggestions could be hard to do , if not impossible ...
- more zombies models : here your limited to ped model list , you can switch to other peds ( like done in tbogt )
- bloody zombies : i tryed adding blood ptfx to them ... i failed ( i may give this a 2nd try )
- avoid " fighting pose " : i see only one option here , use proximity check and have player receive damage if touched ( like alex blade did )
thoses suggestion can be done ...
- Environment on Fire : actually its part of my next generator, they are fire ptfx's set by generator ( 50 metre radius ) but it kinda lag due to animation loads.
- spawn damaged and fire cars : simple car spawns ( alex blade did this well ) but i would reduce the spawned total of car .
- flee peds : the native used dont affect senario peds like hot-dog vendors ( this was a issue in escape hapiness island minigame )
sadly i dont have enuff freetime to help right now ... maybe in a few weeks![]()
Thanks @HuN
I see, I'll keep modifying this and Post my Progress again once I got a Stable one. I'm doing the codes little by little so I can Figure out which one makes it Freeze..
I also Look Through that bum_fight action and it seems that it also have that Fighting Pose
here's a Vid from Youtube: /watch?v=_sG5kb80ExY
I've Been Experimenting with some Codes and Found that This Do not Work under The Zombie Settings
Under InitZombSet
- SET_ALL_RANDOM_PEDS_FLEE(GetPlayerIndex(), TRUE);
- MUTE_POSITIONED_RADIO(TRUE);
- DISABLE_FRONTEND_RADIO();
Can You Enlighten me?
Anyway I'll be waiting for the Release of your Code, and Thank a Lot![]()

lol , thats quite possible ! you should consider any script i release to be W.I.P's or beta versionsI've Been Experimenting with some Codes and Found that This Do not Work under The Zombie Settings
Under InitZombSet
SET_ALL_RANDOM_PEDS_FLEE(GetPlayerIndex(), TRUE);
MUTE_POSITIONED_RADIO(TRUE);
DISABLE_FRONTEND_RADIO();
Can You Enlighten me?for as long its fun and that it dosnt freeze game im happy with it ... i dont mind much about how clean or optimized my code is .
that said , thanks for pointing that out![]()
ill make sure to test thoses natives to be working (but i think i already did so , ill have to see my testing notes )
i should be home by friday , ill post that mixed generator ... remind me if i forget about it![]()
here's the mixed generator i mentioned ... however its a early test-script ! basicly it mix zombies with a few riot peds , add to that fact that i tested it like a month ago , so i dont quite remember if everything was working properly. but like i said its something you can build upon .
Spoiler
[Zgen+]PHP Code:#include <natives.h>
#include <common.h>
#include <strings.h>
#include <types.h>
#include <consts.h>
Ped zomb[40];
uint zsptfx[34];
char *anims[3];
int dm;
int cdm;
uint stat = 0;
uint mlvl = 0;
uint killed = 0;
uint pdied = 0;
uint died = 0;
float xp, yp, zp;
//############### Define Ps3 GamePad ################################//
#define DPAD_DOWN 0x9
#define CIRCLE 0x11
//############### Define Ps3 GamePad ################################//
bool IsKeyPressed(uint iKey , uint iJey)
{
return IS_BUTTON_PRESSED(0,iKey) && IS_BUTTON_JUST_PRESSED(0,iJey);
}
void Print(char *string)
{
PRINT_STRING_WITH_LITERAL_STRING_NOW("STRING", string, 4500, 1);
}
void InitZombSet(void)
{
anims[0] = "move_injured_lower";
anims[1] = "move_injured_upper";
anims[2] = "move_injured_generic";
stat = GET_INT_STAT(363);
GET_MAX_WANTED_LEVEL(&mlvl);
LOAD_CHAR_DECISION_MAKER(2, &dm);
LOAD_COMBAT_DECISION_MAKER(3, &cdm);
SET_DECISION_MAKER_ATTRIBUTE_SIGHT_RANGE(dm, 250);
SET_DECISION_MAKER_ATTRIBUTE_SIGHT_RANGE(cdm, 250);
SET_INT_STAT(363, 5);
SET_CAR_DENSITY_MULTIPLIER(0.25);
SET_RANDOM_CAR_DENSITY_MULTIPLIER(0.25);
SET_PARKED_CAR_DENSITY_MULTIPLIER(0.25);
SET_PED_DENSITY_MULTIPLIER(0.0);
SET_SCENARIO_PED_DENSITY_MULTIPLIER(0.0, 0.0);
SET_ALL_RANDOM_PEDS_FLEE(GetPlayerIndex(), TRUE);
ALLOW_EMERGENCY_SERVICES(FALSE);
SWITCH_RANDOM_BOATS(FALSE);
SWITCH_POLICE_HELIS(FALSE);
SWITCH_AMBIENT_PLANES(FALSE);
SWITCH_GARBAGE_TRUCKS(FALSE);
SWITCH_RANDOM_TRAINS(FALSE);
SET_CREATE_RANDOM_COPS(FALSE);
MUTE_POSITIONED_RADIO(TRUE);
DISABLE_FRONTEND_RADIO();
SET_DEAD_PEDS_DROP_WEAPONS(FALSE);
FORCE_TIME_OF_DAY(0, 0);
FORCE_WEATHER_NOW(WEATHER_FOGGY);
}
void ZombVar(uint ptype)
{
uint prop;
uint var;
uint rp;
SET_CHAR_RANDOM_COMPONENT_VARIATION(ptype);
SET_CHAR_COMPONENT_VARIATION(ptype, 0, 3, 3);
SET_CHAR_COMPONENT_VARIATION(ptype, 1, 4, 1);
GENERATE_RANDOM_INT_IN_RANGE(0, 7, &prop);
GENERATE_RANDOM_INT_IN_RANGE(0, 3, &var);
SET_CHAR_PROP_INDEX_TEXTURE(ptype, 0, prop, var);// hat
GENERATE_RANDOM_INT_IN_RANGE(0, 10, &prop);
GENERATE_RANDOM_INT_IN_RANGE(0, 2, &var);
SET_CHAR_PROP_INDEX_TEXTURE(ptype, 1, prop, var);// glasse
GENERATE_RANDOM_INT_IN_RANGE(0, 2, &rp);
if(rp == 1)
{
CLEAR_ALL_CHAR_PROPS(ptype);
}
}
void ZombRel(uint ptype)
{
SET_CHAR_RELATIONSHIP_GROUP(ptype, 24);
SET_CHAR_RELATIONSHIP(ptype, 0, 24);
SET_CHAR_RELATIONSHIP(ptype, 5, 26);
uint I;
for (I = 0; I <= 46; I++)
{
if(I <= 22)
{
SET_CHAR_RELATIONSHIP(ptype, 5, I);
}
else if(I >= 31)
{
SET_CHAR_RELATIONSHIP(ptype, 5, I);
}
}
}
void ZombSet(uint ptype)
{
uint Ranim;
SET_CHAR_AS_ENEMY(ptype, TRUE);
SET_CHAR_MONEY(ptype, 0);
SET_CHAR_DECISION_MAKER(ptype, dm);
SET_COMBAT_DECISION_MAKER(ptype, cdm);
SET_CHAR_WILL_USE_CARS_IN_COMBAT(ptype, FALSE);
SET_CHAR_WILL_LEAVE_CAR_IN_COMBAT(ptype, TRUE);
SET_CHAR_DIES_INSTANTLY_IN_WATER(ptype, TRUE);
GENERATE_RANDOM_INT_IN_RANGE(0, 3, &Ranim);
SET_ANIM_GROUP_FOR_CHAR(ptype, anims[Ranim]);
SET_SENSE_RANGE(ptype, 500.0);
SET_CHAR_KEEP_TASK(ptype, TRUE);
TASK_COMBAT_HATED_TARGETS_AROUND_CHAR(ptype, 500.0);
SET_CHAR_WILL_MOVE_WHEN_INJURED(ptype, TRUE);
SET_CHAR_WILL_USE_COVER(ptype, FALSE);
SET_PED_DONT_DO_EVASIVE_DIVES(ptype, TRUE);
SET_PED_DIES_WHEN_INJURED(ptype, TRUE);
SET_PED_GENERATES_DEAD_BODY_EVENTS(ptype, TRUE);
SET_PED_PATH_MAY_USE_CLIMBOVERS(ptype, TRUE);
SET_PED_PATH_MAY_DROP_FROM_HEIGHT(ptype, TRUE);
SET_PED_PATH_MAY_USE_LADDERS(ptype, FALSE);
UpdateWeaponOfPed(ptype, WEAPON_KNIFE);
SET_CURRENT_CHAR_WEAPON(ptype, WEAPON_KNIFE, TRUE);
SET_CHAR_CURRENT_WEAPON_VISIBLE(ptype, FALSE);
CANCEL_CURRENTLY_PLAYING_AMBIENT_SPEECH(ptype);
SET_AMBIENT_VOICE_NAME(ptype, "M_ZOMBIE");
SAY_AMBIENT_SPEECH(ptype, "MOAN", 1, 1, 2);
}
void RiotVar(uint ptype)
{
uint comp;
uint var;
SET_CHAR_RANDOM_COMPONENT_VARIATION(ptype);
GENERATE_RANDOM_INT_IN_RANGE(0, 4, &comp);
GENERATE_RANDOM_INT_IN_RANGE(0, 2, &var);
SET_CHAR_COMPONENT_VARIATION(ptype, 0, comp, var);
GENERATE_RANDOM_INT_IN_RANGE(0, 4, &comp);
GENERATE_RANDOM_INT_IN_RANGE(0, 3, &var);
SET_CHAR_COMPONENT_VARIATION(ptype, 1, comp, var);
GENERATE_RANDOM_INT_IN_RANGE(0, 3, &comp);
GENERATE_RANDOM_INT_IN_RANGE(0, 3, &var);
SET_CHAR_COMPONENT_VARIATION(ptype, 2, comp, var);
}
void RiotRel(uint ptype)
{
SET_CHAR_RELATIONSHIP_GROUP(ptype, 26);
SET_CHAR_RELATIONSHIP(ptype, 5, 24);
uint I;
for (I = 0; I <= 46; I++)
{
if(I <= 22)
{
SET_CHAR_RELATIONSHIP(ptype, 2, I);
}
else if(I >= 31)
{
SET_CHAR_RELATIONSHIP(ptype, 2, I);
}
}
}
void RiotSet(uint ptype)
{
SET_CHAR_MONEY(ptype, 0);
SET_CHAR_DECISION_MAKER(ptype, dm);
SET_COMBAT_DECISION_MAKER(ptype, cdm);
SET_SENSE_RANGE(ptype, 500.0);
SET_CHAR_KEEP_TASK(ptype, TRUE);
TASK_COMBAT_HATED_TARGETS_AROUND_CHAR(ptype, 500.0);
SET_CHAR_WILL_MOVE_WHEN_INJURED(ptype, TRUE);
SET_CHAR_WILL_USE_COVER(ptype, TRUE);
SET_PED_DONT_DO_EVASIVE_DIVES(ptype, TRUE);
SET_PED_DIES_WHEN_INJURED(ptype, TRUE);
SET_PED_GENERATES_DEAD_BODY_EVENTS(ptype, TRUE);
SET_PED_PATH_MAY_USE_CLIMBOVERS(ptype, TRUE);
SET_PED_PATH_MAY_DROP_FROM_HEIGHT(ptype, TRUE);
SET_PED_PATH_MAY_USE_LADDERS(ptype, TRUE);
}
void RiotWep(uint ptype)
{
uint wep;
uint weapon[8];
weapon[0] = WEAPON_PISTOL;
weapon[1] = WEAPON_MICRO_UZI;
weapon[2] = WEAPON_SHOTGUN;
weapon[3] = WEAPON_SNIPERRIFLE;
weapon[4] = WEAPON_MOLOTOV;
weapon[5] = WEAPON_GRENADE;
weapon[6] = WEAPON_BASEBALLBAT;
weapon[7] = WEAPON_POOLCUE;
GENERATE_RANDOM_INT_IN_RANGE(0, 8, &wep);
UpdateWeaponOfPed(ptype, weapon[wep]);
SET_CURRENT_CHAR_WEAPON(ptype, weapon[wep], TRUE);
SET_CHAR_CURRENT_WEAPON_VISIBLE(ptype, FALSE);
}
void PlayerC(void)
{
if(IS_PLAYER_PLAYING(GetPlayerIndex()))
{
pdied = 0;
GET_CHAR_COORDINATES(GetPlayerPed(), &xp, &yp, &zp);
}
}
void Pset(void)
{
if(IS_PLAYER_PLAYING(GetPlayerIndex()))
{
CLEAR_WANTED_LEVEL(GetPlayerIndex());
SET_MAX_WANTED_LEVEL(0);
SET_CHAR_WANTED_BY_POLICE(GetPlayerPed(), FALSE);
SET_POLICE_IGNORE_PLAYER(GetPlayerIndex(), TRUE);
SET_POLICE_RADAR_BLIPS(FALSE);
}
}
void Pdeath(void)
{
if(IS_CHAR_DEAD(GetPlayerPed()) && pdied == 0)
{
died++;
pdied = 1;
}
}
void set_up_draw(int type, float width, float height, uint r, uint g, uint b, uint a)
{
SET_TEXT_FONT(0);
SET_TEXT_BACKGROUND(0);
SET_TEXT_DROPSHADOW(0, 0, 0, 0, 255);
SET_TEXT_EDGE(0, 0, 0, 0, 255);
if (type == 1)
{
SET_TEXT_BACKGROUND(1);
}
else if (type == 2)
{
SET_TEXT_DROPSHADOW(1, 0, 0, 0, 255);
}
else if (type == 3)
{
SET_TEXT_EDGE(1, 0, 0, 0, 255);
}
SET_TEXT_COLOUR(r, g, b, a);
SET_TEXT_SCALE(width, height);
SET_TEXT_PROPORTIONAL(1);
SET_TEXT_JUSTIFY(0);
SET_TEXT_CENTRE(0);
SET_TEXT_RIGHT_JUSTIFY(0);
}
float draw_text(char *gxtName, float x, float y, char *val)
{
float result;
result = GET_STRING_WIDTH_WITH_STRING(gxtName, val);
DISPLAY_TEXT_WITH_LITERAL_STRING(x, y, gxtName, val);
return result;
}
void draw_number(char *gxtName, float x, float y, int val)
{
DISPLAY_TEXT_WITH_NUMBER(x, y, gxtName, val);
}
void PrintKD(void)
{
set_up_draw(2, 0.30000000, 0.30000000, 255, 255, 75, 150);
draw_text("STRING", 0.05000000, 0.10000000, "ZOMBIES KILLED :");
set_up_draw(2, 0.30000000, 0.30000000, 255, 255, 75, 150);
draw_number("NUMBR", 0.05000000, 0.13000000, killed);
set_up_draw(2, 0.30000000, 0.30000000, 230, 110, 0, 150);
draw_text("STRING", 0.05000000, 0.16000000, "PLAYER DIED :");
set_up_draw(2, 0.30000000, 0.30000000, 230, 110, 0, 150);
draw_number("NUMBR", 0.05000000, 0.19000000, died);
}
void ZombGen(void)
{
if(IS_PLAYER_PLAYING(GetPlayerIndex()))
{
uint I;
for (I = 0; I <= 39; I++)
{
if(!DOES_CHAR_EXIST(zomb[I]))
{
float offx;
float offy;
float x, y, z;
float zgrnd;
float dista;
GENERATE_RANDOM_FLOAT_IN_RANGE(-80.0, 80.0, &offx);
GENERATE_RANDOM_FLOAT_IN_RANGE(-80.0, 80.0, &offy);
GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS(GetPlayerPed(), offx, offy, 0, &x, &y, &z);
GET_GROUND_Z_FOR_3D_COORD(x, y, z, &zgrnd);
GET_DISTANCE_BETWEEN_COORDS_3D(xp, yp, zp, x, y, zgrnd, &dista);
if(dista >= 35.0 && zgrnd >= 1.0)
{
CLEAR_AREA_OF_CARS(x, y, zgrnd, 3.0);
CLEAR_AREA_OF_CHARS(x, y, zgrnd, 3.0);
if(I <= 33)
{
REQUEST_MODEL(MODEL_M_Y_MULTIPLAYER);
while (!HAS_MODEL_LOADED(MODEL_M_Y_MULTIPLAYER)) WAIT(0);
CREATE_CHAR(16, MODEL_M_Y_MULTIPLAYER, x, y, zgrnd + 0.1000, &zomb[I], true);
ZombVar(zomb[I]);
ZombRel(zomb[I]);
ZombSet(zomb[I]);
zsptfx[I] = START_PTFX_ON_PED_BONE("ambient_steam_manhole", zomb[I], 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, BONE_PELVIS, 1.0);
MARK_MODEL_AS_NO_LONGER_NEEDED(MODEL_M_Y_MULTIPLAYER);
}
else if(I >= 34)
{
uint rm;
uint rmodel[2];
rmodel[0] = MODEL_M_Y_MULTIPLAYER;
rmodel[1] = MODEL_F_Y_MULTIPLAYER;
GENERATE_RANDOM_INT_IN_RANGE(0, 2, &rm);
REQUEST_MODEL(rmodel[rm]);
while (!HAS_MODEL_LOADED(rmodel[rm])) WAIT(0);
CREATE_CHAR(16, rmodel[rm], x, y, zgrnd + 0.1000, &zomb[I], true);
RiotVar(zomb[I]);
RiotRel(zomb[I]);
RiotSet(zomb[I]);
RiotWep(zomb[I]);
MARK_MODEL_AS_NO_LONGER_NEEDED(rmodel[rm]);
}
}
}
}
}
}
void ManageZomb(void)
{
uint J;
for (J = 0; J <= 39; J++)
{
if(DOES_CHAR_EXIST(zomb[J]))
{
float zx, zy, zz;
float distb;
GET_CHAR_COORDINATES(zomb[J], &zx, &zy, &zz);
GET_DISTANCE_BETWEEN_COORDS_3D(xp, yp, zp, zx, zy, zz, &distb);
SET_CHAR_WANTED_BY_POLICE(zomb[J], FALSE);
if(J <= 33)
{
uint zrs;
SAY_AMBIENT_SPEECH(zomb[J], "MOAN", 1, 1, 2);
GENERATE_RANDOM_INT_IN_RANGE(0, 50, &zrs);
if(HAS_CHAR_BEEN_DAMAGED_BY_CHAR(zomb[J], GetPlayerPed(), 0))
{
SWITCH_PED_TO_RAGDOLL (zomb[J], 0, 3000, 0, 0, 0, 0);
if(IS_CHAR_FATALLY_INJURED(zomb[J]) && IS_CHAR_DEAD(zomb[J]))
{
killed++;
}
}
if(zrs == 25)
{
float Rspeed;
GENERATE_RANDOM_FLOAT_IN_RANGE(0.2, 2.5, &Rspeed);
SET_CHAR_MOVE_ANIM_SPEED_MULTIPLIER(zomb[J], Rspeed);
}
if(IS_CHAR_DEAD(zomb[J]) || distb > 100.0)
{
STOP_PTFX(zsptfx[J]);
REMOVE_PTFX_FROM_PED(zomb[J]);
EXPLODE_CHAR_HEAD(zomb[J]);
TASK_DIE(zomb[J]);
MARK_CHAR_AS_NO_LONGER_NEEDED(&zomb[J]);
}
}
else if(J >= 34)
{
if(IS_CHAR_DEAD(zomb[J]) || distb > 100.0)
{
EXPLODE_CHAR_HEAD(zomb[J]);
TASK_DIE(zomb[J]);
MARK_CHAR_AS_NO_LONGER_NEEDED(&zomb[J]);
}
}
}
}
}
void DisableZgen(void)
{
if(IsKeyPressed(DPAD_DOWN,CIRCLE))
{
Print("Zombie Generator Disabled");
SET_INT_STAT(363, stat);
SET_MAX_WANTED_LEVEL(mlvl);
SET_CAR_DENSITY_MULTIPLIER(1.25);
SET_RANDOM_CAR_DENSITY_MULTIPLIER(1.25);
SET_PARKED_CAR_DENSITY_MULTIPLIER(2.25);
SET_PED_DENSITY_MULTIPLIER(1.50);
SET_SCENARIO_PED_DENSITY_MULTIPLIER(1.0, 1.0);
SET_ALL_RANDOM_PEDS_FLEE(GetPlayerIndex(), FALSE);
ALLOW_EMERGENCY_SERVICES(TRUE);
SWITCH_RANDOM_BOATS(TRUE);
SWITCH_POLICE_HELIS(TRUE);
SWITCH_AMBIENT_PLANES(TRUE);
SWITCH_GARBAGE_TRUCKS(TRUE);
SWITCH_RANDOM_TRAINS(TRUE);
SET_CREATE_RANDOM_COPS(TRUE);
SET_POLICE_RADAR_BLIPS(TRUE);
SET_POLICE_IGNORE_PLAYER(GetPlayerIndex(), FALSE);
MUTE_POSITIONED_RADIO(FALSE);
ENABLE_FRONTEND_RADIO();
SET_DEAD_PEDS_DROP_WEAPONS(TRUE);
RELEASE_TIME_OF_DAY();
FORCE_WEATHER_NOW(WEATHER_SUNNY);
RELEASE_WEATHER();
TERMINATE_THIS_SCRIPT();
}
}
void main(void)
{
InitZombSet();
while (TRUE)
{
WAIT(0);
PlayerC();
Pdeath();
Pset();
PrintKD();
ZombGen();
ManageZomb();
DisableZgen();
}
}
you can also look into my ped-riot generator its coded the same way ... have fun !
Oh Thank You so much for This, @HuN .
I'm sorry I couldn't reply this past few days, my Computer broke and I was not able to make some progress.
Fortunately its working "right now", I was in the middle of analyzing the Mini Gang War so I could also spawn anti-zombie peds in a vehicle.
about my previous post,
the Last Time I Tested
SET_ALL_RANDOM_PEDS_FLEE(GetPlayerIndex(), TRUE);
It seems working, I don't know what I did. but anyway I could'nt tell it 100% sure.
the thing is They are running away from niko and not from the zombie
so I guess the next time Ill set this
SET_ALL_RANDOM_PEDS_FLEE(Zomb[I], TRUE);

*Deleted Repost
I'll Still Continue This and Update The Source Code in the 1st post with the most Stable I can make.
can you also provide me the source code on how to recruit Peds.
Ideas keep popping out in my mind..
Last edited by Zaiakursed; 05-06-2013 at 09:04 AM.

| « Previous Thread | Next Thread » |