07.07.2011, 03:53
I've copy the code from a zombie GameMod ,To change it to a FS.
and i put that FS into my server.
but it not working.
when i tape:/zo
and i cannot see anything,i don't know where i did wrong , but
compile said OK NO ERRORS ,but it still not working,Who can give me idea?Thank u!
I'm Sorry iam Chinese so bad English.
如果有哪个中国人知道请帮我下= =
and my code:
and i put that FS into my server.
but it not working.
when i tape:/zo
and i cannot see anything,i don't know where i did wrong , but
compile said OK NO ERRORS ,but it still not working,Who can give me idea?Thank u!
I'm Sorry iam Chinese so bad English.
如果有哪个中国人知道请帮我下= =
Код:
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase
Код:
//------------------------------------------------------------------------------ // // Zombie Filter Script v1.4 // Designed for SA-MP v0.2.2 // // Created by zeruel_angel // If you speak spanish, please visit SPANISH forum in samp.tilens.com // Si hablas espa?ol, por favor visita el foro en ESPA?OL samp.tilens.com //------------------------------------------------------------------------------ #include <a_samp> #define COLOR_YELLOW 0xFFFF00AA #define PRESS 123 #define HOLD 456 new Ticket[MAX_PLAYERS]; forward HoldingFire(); enum weapParts { WeapId, allow, Float:range, Float:wide, damageMin, damageMax, cutting, instaGib, continua, mnsg[150] }; new weapL[55][weapParts]= { // ID allow range wide dMin dMax cutting insGib continua msng {0, true, 1.0, 45.0, 5, 10, false, false, false, "~n~~n~~n~~n~~n~~n~~n~~w~Punch!!!"}, {WEAPON_BRASSKNUCKLE, true, 1.5, 45.0, 5, 15, false, false, false, "~n~~n~~n~~n~~n~~n~~n~~y~Plack~w~!!!"}, {WEAPON_GOLFCLUB, true, 2.0, 35.0, 20, 25, false, false, false, "~n~~n~~n~~n~~n~~n~~n~~w~Fiuuuff!!! ~b~~h~Fiuuuff~w~!!!"}, {WEAPON_NITESTICK, true, 1.5, 35.0, 10, 15, false, false, false, "~n~~n~~n~~n~~n~~n~~n~~b~~h~Plafff~w~!!!"}, {WEAPON_KNIFE, true, 1.5, 15.0, 10, 15, false, false, false, "~n~~n~~n~~n~~n~~n~~n~~r~Fisss~w~!!!"}, {WEAPON_BAT, true, 2.0, 35.0, 10, 15, false, false, false, "~n~~n~~n~~n~~n~~n~~n~~g~~h~Paffffff~w~!!!"}, {WEAPON_SHOVEL, true, 2.0, 35.0, 10, 25, true, false, false, "~n~~n~~n~~n~~n~~n~~n~~r~~h~~h~PlanK~w~!!!"}, {WEAPON_POOLSTICK, true, 2.0, 35.0, 10, 15, false, false, false, "~n~~n~~n~~n~~n~~n~~n~~g~~h~Paffffff~w~!!!"}, {WEAPON_KATANA, true, 2.0, 45.0, 20, 45, true, false, false, "~n~~n~~n~~n~~n~~n~~n~~b~SWIFT~w~! ~b~SWIFT~w~!"}, {WEAPON_CHAINSAW, true, 2.5, 35.0, 20, 35, true, false, true, "~n~~n~~n~~n~~n~~n~~n~~g~BRRRRRRRNNNNNN~w~!!!!"}, {WEAPON_DILDO, false, 0.0, 0.0, 0, 0, false, false, false, "~w~This ~r~weapon ~w~is not yet ~b~available ~w~for beeing used against ~g~zombies~w~!!!! ~y~sorry~w~. ~n~~b~zeruel_angel~w~."}, {WEAPON_DILDO2, false, 0.0, 0.0, 0, 0, false, false, false, "~w~This ~r~weapon ~w~is not yet ~b~available ~w~for beeing used against ~g~zombies~w~!!!! ~y~sorry~w~. ~n~~b~zeruel_angel~w~."}, {WEAPON_VIBRATOR, false, 0.0, 0.0, 0, 0, false, false, false, "~w~This ~r~weapon ~w~is not yet ~b~available ~w~for beeing used against ~g~zombies~w~!!!! ~y~sorry~w~. ~n~~b~zeruel_angel~w~."}, {WEAPON_VIBRATOR2, false, 0.0, 0.0, 0, 0, false, false, false, "~w~This ~r~weapon ~w~is not yet ~b~available ~w~for beeing used against ~g~zombies~w~!!!! ~y~sorry~w~. ~n~~b~zeruel_angel~w~."}, {WEAPON_FLOWER, false, 0.0, 0.0, 0, 0, false, false, false, "~w~This ~r~weapon ~w~is not yet ~b~available ~w~for beeing used against ~g~zombies~w~!!!! ~y~sorry~w~. ~n~~b~zeruel_angel~w~."}, {WEAPON_CANE, true, 2.0, 35.0, 10, 15, false, false, false, "~n~~n~~n~~n~~n~~n~~n~~g~~h~Paffffff~w~!!!"}, {WEAPON_GRENADE, false, 0.0, 0.0, 0, 0, false, false, false, "~w~This ~r~weapon ~w~is not yet ~b~available ~w~for beeing used against ~g~zombies~w~!!!! ~y~sorry~w~. ~n~~b~zeruel_angel~w~."}, {WEAPON_TEARGAS, false, 0.0, 0.0, 0, 0, false, false, false, "~w~This ~r~weapon ~w~is not yet ~b~available ~w~for beeing used against ~g~zombies~w~!!!! ~y~sorry~w~. ~n~~b~zeruel_angel~w~."}, {WEAPON_MOLTOV, false, 0.0, 0.0, 0, 0, false, false, false, "~w~This ~r~weapon ~w~is not yet ~b~available ~w~for beeing used against ~g~zombies~w~!!!! ~y~sorry~w~. ~n~~b~zeruel_angel~w~."}, {-1, false, 0.0, 0.0, 0, 0, false, false, false, "~w~This ~r~weapon ~w~is not yet ~b~available ~w~for beeing used against ~g~zombies~w~!!!! ~y~sorry~w~. ~n~~b~zeruel_angel~w~."}, {-1, false, 0.0, 0.0, 0, 0, false, false, false, "~w~This ~r~weapon ~w~is not yet ~b~available ~w~for beeing used against ~g~zombies~w~!!!! ~y~sorry~w~. ~n~~b~zeruel_angel~w~."}, {-1, false, 0.0, 0.0, 0, 0, false, false, false, "~w~This ~r~weapon ~w~is not yet ~b~available ~w~for beeing used against ~g~zombies~w~!!!! ~y~sorry~w~. ~n~~b~zeruel_angel~w~."}, {WEAPON_COLT45, true, 20.0, 7.0, 10, 15, false, false, true, "~n~~n~~n~~n~~n~~n~~n~~r~Bang~w~!!~r~Bang~w~!!"}, {WEAPON_SILENCED, true, 20.0, 3.0, 10, 15, false, false, false, "~n~~n~~n~~n~~n~~n~~n~~r~Piuufff~w~!!"}, {WEAPON_DEAGLE, true, 25.0, 3.0, 15, 20, false, true, true, "~n~~n~~n~~n~~n~~n~~n~~r~Baaang~w~!!"}, {WEAPON_SHOTGUN, true, 18.0, 7.0, 10, 25, true, true, true, "~n~~n~~n~~n~~n~~n~~n~~r~BUM~w~!!!!"}, {WEAPON_SAWEDOFF, true, 12.0, 10.0, 12, 18, true, true, true, "~n~~n~~n~~n~~n~~n~~n~~r~BUM~w~!!~r~BUM~w~!!"}, {WEAPON_SHOTGSPA, true, 18.0, 7.0, 25, 45, true, true, true, "~n~~n~~n~~n~~n~~n~~n~~r~BUUUM~w~!!!!"}, {WEAPON_UZI, false, 0.0, 0.0, 0, 0, false, false, false, "~w~This ~r~weapon ~w~is not yet ~b~available ~w~for beeing used against ~g~zombies~w~!!!! ~y~sorry~w~. ~n~~b~zeruel_angel~w~."}, {WEAPON_MP5, false, 0.0, 0.0, 0, 0, false, false, false, "~w~This ~r~weapon ~w~is not yet ~b~available ~w~for beeing used against ~g~zombies~w~!!!! ~y~sorry~w~. ~n~~b~zeruel_angel~w~."}, {WEAPON_AK47, false, 0.0, 0.0, 0, 0, false, false, false, "~w~This ~r~weapon ~w~is not yet ~b~available ~w~for beeing used against ~g~zombies~w~!!!! ~y~sorry~w~. ~n~~b~zeruel_angel~w~."}, {WEAPON_M4, false, 0.0, 0.0, 0, 0, false, false, false, "~w~This ~r~weapon ~w~is not yet ~b~available ~w~for beeing used against ~g~zombies~w~!!!! ~y~sorry~w~. ~n~~b~zeruel_angel~w~."}, {WEAPON_TEC9, false, 0.0, 0.0, 0, 0, false, false, false, "~w~This ~r~weapon ~w~is not yet ~b~available ~w~for beeing used against ~g~zombies~w~!!!! ~y~sorry~w~. ~n~~b~zeruel_angel~w~."}, {WEAPON_RIFLE, true, 50.0, 2.0, 0, 50, false, true, true, "~n~~n~~n~~n~~n~~n~~n~~g~PUUUM~w~!!!!"}, {WEAPON_SNIPER, true, 100.0, 1.0, 0, 60, false, true, false, "~n~~n~~n~~n~~n~~n~~n~~g~PUUUUUUUUMMMMM~w~!!!!"}, {WEAPON_ROCKETLAUNCHER, false, 0.0, 0.0, 0, 0, false, false, false, "~w~This ~r~weapon ~w~is not yet ~b~available ~w~for beeing used against ~g~zombies~w~!!!! ~y~sorry~w~. ~n~~b~zeruel_angel~w~."}, {WEAPON_HEATSEEKER, false, 0.0, 0.0, 0, 0, false, false, false, "~w~This ~r~weapon ~w~is not yet ~b~available ~w~for beeing used against ~g~zombies~w~!!!! ~y~sorry~w~. ~n~~b~zeruel_angel~w~."}, {WEAPON_FLAMETHROWER, true, 8.0, 15.0, 10, 20, false, false, true, "~n~~n~~n~~n~~n~~n~~n~~r~Fuuu~y~uffffff~w~!!!!"}, {WEAPON_MINIGUN, true, 25.0, 3.0, 1, 99, true, true, true, "~n~~n~~n~~n~~n~~n~~n~~r~MUAJAJAJAJAJAJ~w~!!!!!"}, {WEAPON_SATCHEL, false, 0.0, 0.0, 0, 0, false, false, false, "~w~This ~r~weapon ~w~is not yet ~b~available ~w~for beeing used against ~g~zombies~w~!!!! ~y~sorry~w~. ~n~~b~zeruel_angel~w~."}, {WEAPON_BOMB, false, 0.0, 0.0, 0, 0, false, false, false, "~w~This ~r~weapon ~w~is not yet ~b~available ~w~for beeing used against ~g~zombies~w~!!!! ~y~sorry~w~. ~n~~b~zeruel_angel~w~."}, {WEAPON_SPRAYCAN, true, 2.0, 25.0, 10, 0, false, false, true, "~n~~n~~n~~n~~n~~n~~n~~y~FS~b~SS~r~SS~g~SS~y~SS~w~!!!"}, {WEAPON_FIREEXTINGUISHER,true, 3.5, 15.0, 10, 0, false, false, true, "~n~~n~~n~~n~~n~~n~~n~~w~Fuuuusssshhh~b~!!!!"}, {WEAPON_CAMERA, false, 0.0, 0.0, 0, 0, false, false, false, "~w~This ~r~weapon ~w~is not yet ~b~available ~w~for beeing used against ~g~zombies~w~!!!! ~y~sorry~w~. ~n~~b~zeruel_angel~w~."}, {-1, false, 0.0, 0.0, 0, 0, false, false, false, "~w~This ~r~weapon ~w~is not yet ~b~available ~w~for beeing used against ~g~zombies~w~!!!! ~y~sorry~w~. ~n~~b~zeruel_angel~w~."}, {-1, false, 0.0, 0.0, 0, 0, false, false, false, "~w~This ~r~weapon ~w~is not yet ~b~available ~w~for beeing used against ~g~zombies~w~!!!! ~y~sorry~w~. ~n~~b~zeruel_angel~w~."}, {WEAPON_PARACHUTE, false, 0.0, 0.0, 0, 0, false, false, false, "~w~This ~r~weapon ~w~is not yet ~b~available ~w~for beeing used against ~g~zombies~w~!!!! ~y~sorry~w~. ~n~~b~zeruel_angel~w~."}, {-1, false, 0.0, 0.0, 0, 0, false, false, false, "~w~This ~r~weapon ~w~is not yet ~b~available ~w~for beeing used against ~g~zombies~w~!!!! ~y~sorry~w~. ~n~~b~zeruel_angel~w~."}, {-1, false, 0.0, 0.0, 0, 0, false, false, false, "~w~This ~r~weapon ~w~is not yet ~b~available ~w~for beeing used against ~g~zombies~w~!!!! ~y~sorry~w~. ~n~~b~zeruel_angel~w~."}, {WEAPON_VEHICLE, false, 0.0, 0.0, 0, 0, false, false, false, "~w~This ~r~weapon ~w~is not yet ~b~available ~w~for beeing used against ~g~zombies~w~!!!! ~y~sorry~w~. ~n~~b~zeruel_angel~w~."}, {-1, false, 0.0, 0.0, 0, 0, false, false, false, "~w~This ~r~weapon ~w~is not yet ~b~available ~w~for beeing used against ~g~zombies~w~!!!! ~y~sorry~w~. ~n~~b~zeruel_angel~w~."}, {-1, false, 0.0, 0.0, 0, 0, false, false, false, "~w~This ~r~weapon ~w~is not yet ~b~available ~w~for beeing used against ~g~zombies~w~!!!! ~y~sorry~w~. ~n~~b~zeruel_angel~w~."}, {-1, false, 0.0, 0.0, 0, 0, false, false, false, "~w~This ~r~weapon ~w~is not yet ~b~available ~w~for beeing used against ~g~zombies~w~!!!! ~y~sorry~w~. ~n~~b~zeruel_angel~w~."}, {WEAPON_DROWN, false, 0.0, 0.0, 0, 0, false, false, false, "~w~This ~r~weapon ~w~is not yet ~b~available ~w~for beeing used against ~g~zombies~w~!!!! ~y~sorry~w~. ~n~~b~zeruel_angel~w~."}, {WEAPON_COLLISION, false, 0.0, 0.0, 0, 0, false, false, false, "~w~This ~r~weapon ~w~is not yet ~b~available ~w~for beeing used against ~g~zombies~w~!!!! ~y~sorry~w~. ~n~~b~zeruel_angel~w~."} }; new setNumber = 0; new set[6][3][2]= { {{WEAPON_KATANA,1000}, {WEAPON_SHOTGUN,50}, {WEAPON_FIREEXTINGUISHER,500}}, {{WEAPON_KATANA,1000}, {WEAPON_SILENCED,100}, {WEAPON_SAWEDOFF,25}}, {{WEAPON_NITESTICK,1000}, {WEAPON_COLT45,100}, {WEAPON_SHOTGUN,25}}, {{WEAPON_GOLFCLUB,1000}, {WEAPON_FIREEXTINGUISHER,400}, {WEAPON_FLAMETHROWER,50}}, {{WEAPON_SHOVEL,1000}, {WEAPON_SHOTGSPA,100}, {WEAPON_RIFLE,25}}, {{WEAPON_KNIFE,1000}, {WEAPON_SHOTGSPA,100}, {WEAPON_SNIPER,25}} }; new NOFZombies=0; new TOTALZombies=10; new Float:Zspeed = 2.0; new ZTimerSpeed = 500; new Float:vaiven = 5.0; new Float:X,Float:Y,Float:Z; #define MAX_ZOMBIES 100 #define brazo1 1 #define brazo2 2 #define pierna1 4 #define pierna2 8 enum zombiParts { rArm, lArm, rLeg, lLeg, head, torso, pedazos, HP, Float:ArmAngle, Float:ArmStatus, Float:angulo, Float:speed, LegsH, undead, target }; new zombie[MAX_ZOMBIES][zombiParts]; enum zombiPos { partModel, Float:RelX, Float:RelY, Float:RelZ, Float:RelrX, Float:RelrY, Float:RelrZ } enum zpart { rLegZ, rArmZ, torsoZ, lArmZ, headZ, lLegZ } new z1[zpart][zombiPos]= { {2905,-0.115479,-0.023924, -1.280131, -90.000000, 90.000000,0.000000}, {2906, -0.218995, 0.200928, -0.253135, 0.000000, 180.000000, 0.000000}, {2907, -0.032227, -0.045897, -0.544213, 270.000000, 0.000000, 0.000000}, {2906, 0.187987, 0.158448, -0.265793, 0.000000, 0.000000, 0.000000}, {2908, 0.000000, 0.000000, 0.000000, 270.000000, 90.000000, 0.000000}, {2905, 0.101074, -0.012694, -1.288253, 270.000000, 90.000000, 0.000000} }; new z2[6][zombiPos]= { {2905, 0.005614, -0.110107, -1.280131, -90.000000, 90.000000, 90.000000}, {2906, -0.148926, -0.180663, -0.253135, 0.000000, 180.000000, 90.000000}, {2907, 0.047852, -0.039061, -0.544213, 270.000000, 0.000000, 90.000000}, {2906, -0.152343, 0.171387, -0.265793, 0.000000, 0.000000, 90.000000}, {2908, 0.000000, 0.000000, 0.000000, 270.000000, 90.000000, 90.000000}, {2905, 0.000977, 0.090332, -1.288253, 270.000000, 90.000000, 90.000000} }; enum zArm { Float:AZ, Float:AA }; enum tipo { der, izq }; new A1[tipo][zArm]= { {-0.253135,0.0}, {-0.265793,0.0} }; new A2[tipo][zArm]= { {-0.359635, -90.0}, {-0.338874, -90.0} }; forward zombieAtaca(playerid); forward attacknearest(); new TimerAtaca=-1; new TimerAPO=-1; new PlayerDeath[MAX_PLAYERS]; new apocalipsis = false; enum WeaponType { pWeapId, pAmmo }; new WeaponList[MAX_PLAYERS][12][WeaponType]; new LastWeaponUsed[MAX_PLAYERS]; forward QuitarArmasZombie(playerid); forward DevolverArmasZombie(playerid); forward CreateRandomZombie(); new money[MAX_PLAYERS]; new scorez=0; new scorep=0; #define delay 500 public OnPlayerCommandText(playerid, cmdtext[]) { new cmd[256]; new idx; new tmp[256]; cmd = strtok(cmdtext, idx); //--------------------------------------------------------------僵尸主控 if (strcmp(cmd, "/zmsd", true)==0) { tmp = strtok(cmdtext, idx); if (!strlen(tmp)) { SendClientMessage(playerid, 0xFFFFFFAA, "用法: /zmsd [速度]"); return 1; } Zspeed=floatstr(tmp); return 1; } if (strcmp(cmd, "/ZTimerSpeed", true)==0) { tmp = strtok(cmdtext, idx); if (!strlen(tmp)) { SendClientMessage(playerid, 0xFFFFFFAA, "USE: /ZTimerSpeed [timer speed]"); return 1; } ZTimerSpeed=strval(tmp); OnPlayerCommandText(playerid, "/zstop"); OnPlayerCommandText(playerid, "/zstart"); return 1; } if (strcmp(cmd, "/zo", true)==0 || strcmp(cmd, "/创建一个僵尸", true) == 0) { new Float:pX,Float:pY,Float:pZ,Float:Ang; GetPlayerPos(playerid,pX,pY,pZ); GetPlayerFacingAngle(playerid,Ang); pX=pX+3.0*floatsin(-Ang,degrees); pY=pY+3.0*floatcos(-Ang,degrees); pZ=pZ+0.7; CrearZombie(pX,pY,pZ,Ang+180.0); return 1; } if (strcmp(cmd, "/zmqd", true)==0 || strcmp(cmd, "/启动僵尸", true) == 0) { if (NOFZombies>0) { new id; tmp = strtok(cmdtext, idx); if (!strlen(tmp)) { id = playerid; } else { if (!IsPlayerConnected(strval(tmp))) { SendClientMessage(playerid, 0xFFFFFFAA, "<!>没有这个玩家"); return 1; } id = strval(tmp); } if (TimerAtaca!=-1){KillTimer(TimerAtaca);} for (new j=0;j<TOTALZombies;j++){zombie[j][target]=id;} TimerAtaca=SetTimer("zombieAtaca",ZTimerSpeed,1); return 1; } SendClientMessage(playerid, 0xFFFFFFAA, "<!>没有创建僵尸"); return 1; } if (strcmp(cmd, "/zmtz", true)==0 || strcmp(cmd, "/停止僵尸", true) == 0) { if (NOFZombies>0) { if (TimerAtaca!=-1) { KillTimer(TimerAtaca); } for (new j=0;j<TOTALZombies;j++) { if (zombie[j][undead]) { StopObject(zombie[j][head]); StopObject(zombie[j][torso]); StopObject(zombie[j][rArm]); StopObject(zombie[j][lArm]); StopObject(zombie[j][rLeg]); StopObject(zombie[j][lLeg]); } } return 1; } SendClientMessage(playerid, 0xFFFFFFAA, "<!>没有创建僵尸"); return 1; } if (strcmp(cmd, "/zmqc", true)==0 || strcmp(cmd, "/清除僵尸", true) == 0) { cleanZombies(); SendClientMessage(playerid, 0xFFFFFFAA, "<!>没有僵尸了"); return 1; } if (strcmp(cmd, "/ZMSL", true)==0 || strcmp(cmd, "/僵尸数量", true) == 0) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, 0xFFFFFFAA, "用法: /ZMS [数量]"); SendClientMessage(playerid, 0xFFFFFFAA, "用法: /僵尸数量 [数量]"); return 1; } cleanZombies(); TOTALZombies = strval(tmp); return 1; } if (strcmp(cmd, "/zmks", true)==0 || strcmp(cmd, "/僵尸战斗开始", true) == 0) { apocalipsis = true; scorez=0; scorep=0; SetWorldTime(0); SetWeather(0); SendClientMessageToAll( 0xFFFFFFAA, "<!>僵尸战斗开始请准备与僵尸战斗"); SendClientMessageToAll( 0xFFFFFFAA, "<!>僵尸战斗开始请准备与僵尸战斗"); SendClientMessageToAll( 0xFFFFFFAA, "<!>僵尸战斗开始请准备与僵尸战斗"); SendClientMessageToAll( 0xFFFFFFAA, "<!>僵尸战斗开始请准备与僵尸战斗"); SendClientMessageToAll(COLOR_YELLOW,"僵尸暴动模式: 开启"); if (TimerAPO!=-1){KillTimer(TimerAPO);} TimerAPO = SetTimer("attacknearest",10000,1); if (TimerAtaca!=-1){KillTimer(TimerAtaca);} TimerAtaca=SetTimer("zombieAtaca",ZTimerSpeed,1); while (NOFZombies<TOTALZombies)CreateRandomZombie(); attacknearest(); for (new i=0;i<MAX_PLAYERS;i++)if(IsPlayerConnected(i)) SetPlayerVirtualWorld(i,1338); return 1; } if (strcmp(cmd, "/zmjs", true)==0 || strcmp(cmd, "/僵尸战斗停止", true) == 0) { if (apocalipsis) { for (new i=0;i<MAX_PLAYERS;i++)if(IsPlayerConnected(i)){DevolverArmasZombie(i);GivePlayerMoney(i,money[i]);} SendClientMessageToAll( 0xFFFFFFAA, "<!>僵尸战斗结束了"); SendClientMessageToAll( 0xFFFFFFAA, "<!>僵尸战斗结束了"); SendClientMessageToAll( 0xFFFFFFAA, "<!>僵尸战斗结束了"); SendClientMessageToAll( 0xFFFFFFAA, "<!>僵尸战斗结束了"); format(tmp,255,"僵尸分数: %d 人类分数: %d 僵尸暴动模式: 关闭 ",scorez,scorep); SendClientMessageToAll(COLOR_YELLOW,tmp); apocalipsis = false; SetWorldTime(12); SetWeather(0); cleanZombies(); } if (TimerAPO!=-1){KillTimer(TimerAPO);} if (TimerAtaca!=-1){KillTimer(TimerAtaca);} for (new i=0;i<MAX_PLAYERS;i++)if(IsPlayerConnected(i)) SetPlayerVirtualWorld(i,0); return 1; } return 0; } //------------------------------------------------------------------------------ public OnFilterScriptInit() { print("\n ZOMBIE Filter Script v1.2 Loading...\n**********************\n (Zeruel_Angel)\n"); return 1; } public OnGameModeInit() { return 1; } //------------------------------------------------------------------------------ public OnFilterScriptExit() { print("\n*********** ZOMBIE (zeruel_angel) ***********\n"); cleanZombies(); return 1; } public OnGameModeExit() { cleanZombies(); return 1; } //------------------------------------------------------------------------------ public attacknearest() { new Float:pX,Float:pY,Float:pZ; new Float:distNew,Float:distOld; new candidato; for (new j=0;j<TOTALZombies;j++) { if (zombie[j][undead]) { distOld=9999.9; candidato=-1; GetObjectPos(zombie[j][head],X,Y,Z); for(new i=0;i<MAX_PLAYERS;i++) { if(IsPlayerConnected(i)) { GetPlayerPos(i,pX,pY,pZ); distNew = floatabs(pX-X) + floatabs(pY-Y); if (distNew<distOld) { distOld = distNew; candidato = i; } } } if (distOld>100.0) { DestroyObject(zombie[j][head]); DestroyObject(zombie[j][rLeg]); DestroyObject(zombie[j][lLeg]); DestroyObject(zombie[j][rArm]); DestroyObject(zombie[j][lArm]); DestroyObject(zombie[j][torso]); NOFZombies--; zombie[j][undead]=false; SetTimer("CreateRandomZombie",1000,0); } zombie[j][target]=candidato; } } } //------------------------------------------------------------------------------ cleanZombies() { for (new j=0;j<TOTALZombies;j++) { zombie[j][undead]=false; if (IsValidObject(zombie[j][torso]))DestroyObject(zombie[j][torso]); if (IsValidObject(zombie[j][head])) DestroyObject(zombie[j][head]); if (IsValidObject(zombie[j][rLeg])) DestroyObject(zombie[j][rLeg]); if (IsValidObject(zombie[j][lLeg])) DestroyObject(zombie[j][lLeg]); if (IsValidObject(zombie[j][rArm])) DestroyObject(zombie[j][rArm]); if (IsValidObject(zombie[j][lArm])) DestroyObject(zombie[j][lArm]); NOFZombies--; } if (TimerAPO!=-1){KillTimer(TimerAPO);} if (TimerAtaca!=-1){KillTimer(TimerAtaca);} } //------------------------------------------------------------------------------ strtok(const string[], &index) { new length = strlen(string); while ((index < length) && (string[index] <= ' ')) { index++; } new offset = index; new result[20]; while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1))) { result[index - offset] = string[index]; index++; } result[index - offset] = EOS; return result; } //------------------------------------------------------------------------------ CrearZombie(Float:pX,Float:pY,Float:pZ,Float:angle) { new Float:PEPE = floatsin((angle*3.14159/180.0)); new Float:PIPO = floatcos((angle*3.14159/180.0)); if (NOFZombies<TOTALZombies) { new j=0; while ((zombie[j][undead])){j++;} if (IsValidObject(zombie[j][torso])) { DestroyObject(zombie[j][head]); DestroyObject(zombie[j][rLeg]); DestroyObject(zombie[j][lLeg]); DestroyObject(zombie[j][rArm]); DestroyObject(zombie[j][lArm]); DestroyObject(zombie[j][torso]); } zombie[j][head]=CreateObject(z1[headZ][partModel],pX,pY,pZ,z1[headZ][RelrX],z1[headZ][RelrY],angle); zombie[j][torso]=CreateObject(z1[torsoZ][partModel],pX+z1[torsoZ][RelX]*PIPO+PEPE*z2[torsoZ][RelX],pY+z1[torsoZ][RelY]*PIPO+PEPE*z2[torsoZ][RelY],pZ+z1[torsoZ][RelZ],z1[torsoZ][RelrX],z1[torsoZ][RelrY],angle); zombie[j][lArm]=CreateObject(z1[lArmZ][partModel],pX+z1[lArmZ][RelX]*PIPO+PEPE*z2[lArmZ][RelX],pY+z1[lArmZ][RelY]*PIPO+PEPE*z2[lArmZ][RelY],pZ+z1[lArmZ][RelZ],z1[lArmZ][RelrX],z1[lArmZ][RelrY],angle); zombie[j][rArm]=CreateObject(z1[rArmZ][partModel],pX+z1[rArmZ][RelX]*PIPO+PEPE*z2[rArmZ][RelX],pY+z1[rArmZ][RelY]*PIPO+PEPE*z2[rArmZ][RelY],pZ+z1[rArmZ][RelZ],z1[rArmZ][RelrX],z1[rArmZ][RelrY],angle); zombie[j][rLeg]=CreateObject(z1[rLegZ][partModel],pX+z1[rLegZ][RelX]*PIPO+PEPE*z2[rLegZ][RelX],pY+z1[rLegZ][RelY]*PIPO+PEPE*z2[rLegZ][RelY],pZ+z1[rLegZ][RelZ],z1[rLegZ][RelrX],z1[rLegZ][RelrY],angle); zombie[j][lLeg]=CreateObject(z1[lLegZ][partModel],pX+z1[lLegZ][RelX]*PIPO+PEPE*z2[lLegZ][RelX],pY+z1[lLegZ][RelY]*PIPO+PEPE*z2[lLegZ][RelY],pZ+z1[lLegZ][RelZ],z1[lLegZ][RelrX],z1[lLegZ][RelrY],angle); zombie[j][LegsH]=true; zombie[j][speed]=random(100)+50; zombie[j][ArmAngle]=0; zombie[j][ArmStatus]=random(5)+5; zombie[j][undead]=true; zombie[j][HP]=100; zombie[j][pedazos]= brazo1 + brazo2 + pierna1 + pierna2; zombie[j][angulo]=angle; NOFZombies++; } return 1; } //------------------------------------------------------------------------------ public zombieAtaca() { new Float:pX,Float:pY,Float:pZ,Float:angle,Float:PEPE,Float:PIPO,Float:AA1,Float:AA2,Float:H; new vehicleStatus; if (NOFZombies<1 && !apocalipsis) { if (TimerAPO!=-1){KillTimer(TimerAPO);} if (TimerAtaca!=-1){KillTimer(TimerAtaca);} } HoldingFire(); for (new j=0;j<TOTALZombies;j++) { if(zombie[j][undead]&&IsPlayerConnected(zombie[j][target]) && GetPlayerInterior(zombie[j][target])==0) { vehicleStatus = IsPlayerInAnyVehicle(zombie[j][target]); GetPlayerPos(zombie[j][target],pX,pY,pZ); pZ+=0.7; GetObjectPos(zombie[j][head],X,Y,Z); angle = 180.0-atan2(X-pX,Y-pY); angle+=vaiven; vaiven*=-1; PEPE = floatsin((angle*3.14159/180.0)); PIPO = floatcos((angle*3.14159/180.0)); zombie[j][angulo]=angle; if(floatabs(zombie[j][ArmAngle])>10.0){zombie[j][ArmStatus]*=-1;} zombie[j][ArmAngle]+=zombie[j][ArmStatus]; zombie[j][LegsH]=!zombie[j][LegsH]; AA1 = floatcos(zombie[j][ArmAngle]*3.14159/180.0); AA2 = floatsin(zombie[j][ArmAngle]*3.14159/180.0); if ((pZ-Z)>3.0) { Z+=1.0; } else if((pZ-Z)<-3.0) { Z-=1.0; } //we destroy the old zombi DestroyObject(zombie[j][torso]); DestroyObject(zombie[j][head]); if (zombie[j][pedazos] & brazo1) DestroyObject(zombie[j][rArm]); if (zombie[j][pedazos] & brazo2) DestroyObject(zombie[j][lArm]); if (zombie[j][pedazos] & pierna1) DestroyObject(zombie[j][rLeg]); if (zombie[j][pedazos] & pierna2) DestroyObject(zombie[j][lLeg]); //we recreate the zombie zombie[j][head]=CreateObject(z1[headZ][partModel],X,Y,pZ,z1[headZ][RelrX],z1[headZ][RelrY],angle+vaiven); zombie[j][torso]=CreateObject(z1[torsoZ][partModel],X+z1[torsoZ][RelX]*PIPO+PEPE*z2[torsoZ][RelX],Y+z1[torsoZ][RelY]*PIPO+PEPE*z2[torsoZ][RelY],pZ+z1[torsoZ][RelZ],z1[torsoZ][RelrX],z1[torsoZ][RelrY],angle); if (zombie[j][pedazos] & brazo1) zombie[j][rArm]=CreateObject(z1[rArmZ][partModel],X+z1[rArmZ][RelX]*PIPO+PEPE*z2[rArmZ][RelX],Y+z1[rArmZ][RelY]*PIPO+PEPE*z2[rArmZ][RelY],pZ+A1[der][AZ]*AA1+AA2*A2[der][AZ],(-1)*zombie[j][ArmAngle],z1[rArmZ][RelrY],angle); if (zombie[j][pedazos] & brazo2) zombie[j][lArm]=CreateObject(z1[lArmZ][partModel],X+z1[lArmZ][RelX]*PIPO+PEPE*z2[lArmZ][RelX],Y+z1[lArmZ][RelY]*PIPO+PEPE*z2[lArmZ][RelY],pZ+A1[izq][AZ]*AA1-AA2*A2[izq][AZ],zombie[j][ArmAngle],z1[lArmZ][RelrY],angle); if (zombie[j][pedazos] & pierna1) zombie[j][rLeg]=CreateObject(z1[rLegZ][partModel],X+z1[rLegZ][RelX]*PIPO+PEPE*z2[rLegZ][RelX],Y+z1[rLegZ][RelY]*PIPO+PEPE*z2[rLegZ][RelY],pZ+z1[rLegZ][RelZ]+float(zombie[j][LegsH])*0.2,z1[rLegZ][RelrX],z1[rLegZ][RelrY],angle); if (zombie[j][pedazos] & pierna2) zombie[j][lLeg]=CreateObject(z1[lLegZ][partModel],X+z1[lLegZ][RelX]*PIPO+PEPE*z2[lLegZ][RelX],Y+z1[lLegZ][RelY]*PIPO+PEPE*z2[lLegZ][RelY],pZ+z1[lLegZ][RelZ]+float(!zombie[j][LegsH])*0.2,z1[lLegZ][RelrX],z1[lLegZ][RelrY],angle); if ( (floatabs(pX-X) + floatabs(pY-Y) + floatabs(pZ-Z) )>(2.0+6.0*vehicleStatus))//The zombie will move to your position to eat you because if you are too far away { MoveObject(zombie[j][head],pX,pY,pZ,zombie[j][speed]*0.01*Zspeed); MoveObject(zombie[j][torso],pX+z1[torsoZ][RelX]*PIPO+PEPE*z2[torsoZ][RelX],pY+z1[torsoZ][RelY]*PIPO+PEPE*z2[torsoZ][RelY],pZ+z1[torsoZ][RelZ],zombie[j][speed]*0.01*Zspeed); if (zombie[j][pedazos] & brazo1) MoveObject(zombie[j][rArm],pX+z1[rArmZ][RelX]*PIPO+PEPE*z2[rArmZ][RelX],pY+z1[rArmZ][RelY]*PIPO+PEPE*z2[rArmZ][RelY],pZ+A1[der][AZ]*AA1+AA2*A2[der][AZ],zombie[j][speed]*0.01*Zspeed); if (zombie[j][pedazos] & brazo2) MoveObject(zombie[j][lArm],pX+z1[lArmZ][RelX]*PIPO+PEPE*z2[lArmZ][RelX],pY+z1[lArmZ][RelY]*PIPO+PEPE*z2[lArmZ][RelY],pZ+A1[izq][AZ]*AA1-AA2*A2[izq][AZ],zombie[j][speed]*0.01*Zspeed); if (zombie[j][pedazos] & pierna1) MoveObject(zombie[j][rLeg],pX+z1[rLegZ][RelX]*PIPO+PEPE*z2[rLegZ][RelX],pY+z1[rLegZ][RelY]*PIPO+PEPE*z2[rLegZ][RelY],pZ+z1[rLegZ][RelZ]+float(zombie[j][LegsH])*0.2,zombie[j][speed]*0.01*Zspeed); if (zombie[j][pedazos] & pierna2) MoveObject(zombie[j][lLeg],pX+z1[lLegZ][RelX]*PIPO+PEPE*z2[lLegZ][RelX],pY+z1[lLegZ][RelY]*PIPO+PEPE*z2[lLegZ][RelY],pZ+z1[lLegZ][RelZ]+float(!zombie[j][LegsH])*0.2,zombie[j][speed]*0.01*Zspeed); } else//the zombie EATS you unless you are in a vehicle or you are alredy dead { StopObject(zombie[j][head]); StopObject(zombie[j][torso]); StopObject(zombie[j][rArm]); StopObject(zombie[j][lArm]); StopObject(zombie[j][rLeg]); StopObject(zombie[j][lLeg]); GetPlayerHealth(zombie[j][target],H); if ( !vehicleStatus && !PlayerDeath[zombie[j][target]]) { SetPlayerHealth(zombie[j][target],H-0.4); } } } } return 1; } //------------------------------------------------------------------------------ public OnPlayerSpawn(playerid) { PlayerDeath[playerid]=false; if (apocalipsis) { ResetPlayerMoney(playerid); ResetPlayerWeapons(playerid); GivePlayerWeapon(playerid,set[setNumber][0][0],set[setNumber][0][1]); GivePlayerWeapon(playerid,set[setNumber][1][0],set[setNumber][1][1]); GivePlayerWeapon(playerid,set[setNumber][2][0],set[setNumber][2][1]); } return 1; } //------------------------------------------------------------------------------ public OnPlayerDeath(playerid, killerid, reason) { PlayerDeath[playerid]=true; if (apocalipsis && killerid==INVALID_PLAYER_ID) { new tmp[255]; format(tmp,255,"~w~SCORE~n~~r~Zombies~w~: %d ~y~+1 ~n~~b~Humans~w~: %d",scorez,scorep); scorez++; GameTextForAll(tmp,2000,4); attacknearest(); } return 1; } //------------------------------------------------------------------------------ public OnPlayerConnect(playerid) { if (apocalipsis) { money[playerid]=GetPlayerMoney(playerid); ResetPlayerMoney(playerid); QuitarArmasZombie(playerid); } return 1; } //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ fire(playerid,STAT) { new tmp[250]; new weap = GetPlayerWeapon(playerid); format(tmp,sizeof(tmp),"ARMA ID : %d ", weap); SendClientMessageToAll(0xFFFF00AA,tmp); if (!weapL[weap][allow]) { GameTextForPlayer(playerid,weapL[weap][mnsg],2000,5); return 1; } if (!weapL[weap][continua] && STAT==HOLD) { return 1; } Ticket[playerid]=tickcount()+delay; new Float:pX,Float:pY,Float:pZ,Float:pA,Float:PEPE,Float:PIPO; new Float:zzX,Float:zzY,Float:zzA; GetPlayerPos(playerid,pX,pY,pZ); GetPlayerFacingAngle(playerid,pA); pZ=pZ+0.7; new ran; for (new j=0;j<TOTALZombies;j++) { if (IsValidObject(zombie[j][torso])) { GetObjectPos(zombie[j][head],X,Y,Z); zzX=X-pX;zzY=Y-pY;zzA=atan2(zzX,zzY);if(zzA>0)zzA-=360.0; } if (zombie[j][undead]&&(floatsqroot(floatpower(zzX,2)+floatpower(zzY,2)))<weapL[weap][range] && (floatabs(zzA+pA)<weapL[weap][wide])) { Z-=1.7; zombie[j][HP]-= random(weapL[weap][damageMax]-weapL[weap][damageMin])+weapL[weap][damageMin]; GameTextForPlayer(playerid,weapL[weap][mnsg],delay-100,5); PEPE = floatsin((zombie[j][angulo]*3.14159/180.0)); PIPO = floatcos((zombie[j][angulo]*3.14159/180.0)); if (weapL[weap][cutting]) { if ((zombie[j][pedazos] & brazo1) || (zombie[j][pedazos] & brazo2)) { if (ran < 20) { if (( ran < 10 || !(zombie[j][pedazos] & brazo2)) && (zombie[j][pedazos] & brazo1)) { zombie[j][pedazos]-=brazo1;MoveObject(zombie[j][rArm],X+z1[rArmZ][RelX]*PIPO+PEPE*z2[rArmZ][RelX],Y+z1[rArmZ][RelY]*PIPO+PEPE*z2[rArmZ][RelY],Z,1.0); } else { zombie[j][pedazos]-=brazo2;MoveObject(zombie[j][lArm],X+z1[lArmZ][RelX]*PIPO+PEPE*z2[lArmZ][RelX],Y+z1[lArmZ][RelY]*PIPO+PEPE*z2[lArmZ][RelY],Z,1.0); } } } else if (zombie[j][HP]<40 && (zombie[j][pedazos] & pierna1 ) && (zombie[j][pedazos] & pierna2)) { if (ran < 15){zombie[j][pedazos]-=pierna1;MoveObject(zombie[j][rLeg],X+z1[rLegZ][RelX]*PIPO+PEPE*z2[rLegZ][RelX],Y+z1[rLegZ][RelY]*PIPO+PEPE*z2[rLegZ][RelY],Z,1.0);} else{zombie[j][pedazos]-=pierna2;MoveObject(zombie[j][lLeg],X+z1[lLegZ][RelX]*PIPO+PEPE*z2[lLegZ][RelX],Y+z1[lLegZ][RelY]*PIPO+PEPE*z2[lLegZ][RelY],Z,1.0);} zombie[j][speed]-=float(40); } // } } if (zombie[j][HP]<0 && zombie[j][undead]) { zombie[j][undead]=false; NOFZombies--; MoveObject(zombie[j][head],X,Y,Z,1.5); MoveObject(zombie[j][torso],X+z1[torsoZ][RelX]*PIPO+PEPE*z2[torsoZ][RelX],Y+z1[torsoZ][RelY]*PIPO+PEPE*z2[torsoZ][RelY],Z+0.4,1.5); if (zombie[j][pedazos] & brazo1) MoveObject(zombie[j][rArm],X+z1[rArmZ][RelX]*PIPO+PEPE*z2[rArmZ][RelX],Y+z1[rArmZ][RelY]*PIPO+PEPE*z2[rArmZ][RelY],Z,1.5); if (zombie[j][pedazos] & brazo2) MoveObject(zombie[j][lArm],X+z1[lArmZ][RelX]*PIPO+PEPE*z2[lArmZ][RelX],Y+z1[lArmZ][RelY]*PIPO+PEPE*z2[lArmZ][RelY],Z,1.5); if (zombie[j][pedazos] & pierna1) StopObject(zombie[j][rLeg]); if (zombie[j][pedazos] & pierna2) StopObject(zombie[j][lLeg]); if (apocalipsis) { format(tmp,sizeof(tmp),"~w~SCORE~n~~r~Zombies~w~: %d ~n~~b~Humans~w~: %d ~y~+1",scorez,scorep); scorep++; GameTextForAll(tmp,2000,4); ran = random(10); SetTimer("CreateRandomZombie",ran*1000,0); attacknearest(); } } } } return 1; } //------------------------------------------------------------------------------ public HoldingFire() { new keys,updown,leftright; for (new i=0;i<MAX_PLAYERS;i++) { if (IsPlayerConnected(i)) { GetPlayerKeys(i,keys,updown,leftright); if ((keys & KEY_FIRE)&&(!IsPlayerInAnyVehicle(i))&&(Ticket[i]<tickcount())) { fire(i,HOLD); } } } } //------------------------------------------------------------------------------ public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) { if ((NOFZombies>0) && (newkeys & KEY_FIRE)&&(!IsPlayerInAnyVehicle(playerid))&&(Ticket[playerid]<tickcount())) { fire(playerid,PRESS); } } //------------------------------------------------------------------------------ public CreateRandomZombie() { new playerid = random(MAX_PLAYERS); while (!IsPlayerConnected(playerid)&&GetPlayerInterior(playerid)==0)playerid = random(MAX_PLAYERS); new Float:pX,Float:pY,Float:pZ,Float:Ang; GetPlayerPos(playerid,pX,pY,pZ); Ang=float(random(360)); pX=pX+50.0*floatsin(Ang,degrees); pY=pY+50.0*floatcos(Ang,degrees); pZ=pZ+0.7; CrearZombie(pX,pY,pZ,Ang); } //------------------------------------------------------------------------------ public QuitarArmasZombie(playerid) { LastWeaponUsed[playerid]=GetPlayerWeapon(playerid);GetPlayerWeapon(playerid); new WeaponId; new ammo; for (new i=0;i<11;i++) { GetPlayerWeaponData(playerid, i, WeaponId, ammo); WeaponList[playerid][i][pWeapId]=WeaponId; WeaponList[playerid][i][pAmmo]=ammo; } ResetPlayerWeapons(playerid); return 1; } //------------------------------------------------------------------------------ public DevolverArmasZombie(playerid) { new index; for (new i=0;i<11;i++) { if (WeaponList[playerid][i][pWeapId]!=0) { if (WeaponList[playerid][i][pWeapId]!=LastWeaponUsed[playerid]) { GivePlayerWeapon(playerid,WeaponList[playerid][i][pWeapId],WeaponList[playerid][i][pAmmo]); } else { index=i; } } } GivePlayerWeapon(playerid,WeaponList[playerid][index][pWeapId],WeaponList[playerid][index][pAmmo]); return 1; }