Üdv! Kérésem lenne hozzátok. Méghozzá az, hogy a lent megadott zeruel angel által irt filterscripte kéne javitani. A lenti már általam kicsit át van irva tehát ebbe javitsatok ha megteszitek... A következő kellene. Azt szeretném, hogy a zombik úgy viselkedjenek, hogy amint belép a játékos mindenki kap 1dbot maga mellé és az követi mindenhova, persze ne úgy mint egy object ami melleted van fixen és mozdulatlan, hanem hogy szépen sétáljon mellettem és kövessen. Ha lesprintelem maradjon le stb (de a script alapból igy van megirva tehát ez nem gond) és ne kelljen elinditani mint az apokalipszist (látsd.: /apon) hanem automatice jöjjön a gyerek mellé... Az már bevan állitva, h a zombik ne támadjanak tehát ezen sem kell semmit. Kérlek ha nincs kedvetek ne csináljátok meg, de ne azt mondjátok, h próbálkozzak én mert nem sikerült és nem is fog.... 
Ha a fent leirt dolog tól bonyolult akkor azt is megköszönném ha vki megcsinálná, h a zombik ott sétáljanak mindenütt össze vissza csak designnak. Úgy is megfelelne.
Előre is köszönöm: Zsombor
 
//------------------------------------------------------------------------------
//
//   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
//   Honositás: Endrődi Zsombor
//------------------------------------------------------------------------------
#include <a_samp>
#define PRESS 123
#define HOLD 456
#define COLOR_GREY 0xAFAFAFAA
#define COLOR_GREEN 0x33AA33AA
#define COLOR_DARKGREEN 0x00721CFF
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_WHITE 0xFFFFFFAA
#define COLOR_CREAM 0xF8BD6DFF
#define COLOR_SILVER 0xC0C0C0FF
#define COLOR_TEAL 0x00FFFFFF
#define COLOR_BERG 0x804040FF
#define COLOR_PINK 0xFF66FFAA
#define COLOR_SPEW 0x808040FF
#define COLOR_LIGHTBLUE 0x33CCFFAA
#define COLOR_COPPER 0x804000FF
#define COLOR_RAREZ 0x06A7B9FF
#define COLOR_RED 0xFF0000AA
#define COLOR_PURPLE 0xCC00CCAA
#define COLOR_BLUE 0x0000FFAA
#define COLOR_LIGHTBLUE 0x33CCFFAA
#define COLOR_ORANGE 0xFF9900AA
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   hatótáv   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,   \" \"},
{WEAPON_DILDO2,         false,   0.0,   0.0,   0,      0,      false,   false,   false,   \" \"},
{WEAPON_VIBRATOR,      false,   0.0,   0.0,   0,      0,      false,   false,   false,   \" \"},
{WEAPON_VIBRATOR2,      false,   0.0,   0.0,   0,      0,      false,   false,   false,   \" \"},
{WEAPON_FLOWER,         false,   0.0,   0.0,   0,      0,      false,   false,   false,   \" \"},
{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,   \" \"},
{WEAPON_TEARGAS,      false,   0.0,   0.0,   0,      0,      false,   false,   false,   \" \"},
{WEAPON_MOLTOV,         false,   0.0,   0.0,   0,      0,      false,   false,   false,   \" \"},
{-1,               false,   0.0,   0.0,   0,      0,      false,   false,   false,   \" \"},
{-1,               false,   0.0,   0.0,   0,      0,      false,   false,   false,   \" \"},
{-1,               false,   0.0,   0.0,   0,      0,      false,   false,   false,   \" \"},
{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,   1,      99,      true,   true,   true,   \"~n~~n~~n~~n~~n~~n~~n~~r~BANG~w~!!!!!\"},
{WEAPON_SHOTGUN,      true,   25.0,   3.0,   1,      99,      true,   true,   true,   \"~n~~n~~n~~n~~n~~n~~n~~r~BANG~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,            true,   25.0,   3.0,   1,      99,      true,   true,   true,   \"~n~~n~~n~~n~~n~~n~~n~~r~BANG~w~!!!!!\"},
{WEAPON_MP5,            true,   25.0,   3.0,   1,      99,      true,   true,   true,   \"~n~~n~~n~~n~~n~~n~~n~~r~BANGG~w~!!!!!\"},
{WEAPON_AK47,         true,   25.0,   3.0,   1,      99,      true,   true,   true,   \"~n~~n~~n~~n~~n~~n~~n~~r~MUAJAJAJAJAJAJ~w~!!!!!\"},
{WEAPON_M4,            true,   25.0,   3.0,   1,      99,      true,   true,   true,   \"~n~~n~~n~~n~~n~~n~~n~~r~MUAJAJAJAJAJAJ~w~!!!!!\"},
{WEAPON_TEC9,           true,   25.0,   3.0,   1,      99,      true,   true,   true,   \"~n~~n~~n~~n~~n~~n~~n~~r~BANG~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,   25.0,   3.0,   1,      99,      true,   true,   true,   \"~n~~n~~n~~n~~n~~n~~n~~r~BANG~w~!!!!!\"},
{WEAPON_ROCKETLAUNCHER,   false,   0.0,   0.0,   0,      0,      false,   false,   false,   \" \"},
{WEAPON_HEATSEEKER,      false,   0.0,   0.0,   0,      0,      false,   false,   false,   \" \"},
{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,   \" \"},
{WEAPON_BOMB,         false,   0.0,   0.0,   0,      0,      false,   false,   false,   \" \"},
{WEAPON_SPRAYCAN,      true,   3.5,   15.0,   10,      0,      false,   false,   true,   \"~n~~n~~n~~n~~n~~n~~n~~w~Fuuuusssshhh~b~!!!!\"},
{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,   \" \"},
{-1,               false,   0.0,   0.0,   0,      0,      false,   false,   false,   \" \"},
{-1,               false,   0.0,   0.0,   0,      0,      false,   false,   false,   \" \"},
{WEAPON_PARACHUTE,      false,   0.0,   0.0,   0,      0,      false,   false,   false,   \" \"},
{-1,               false,   0.0,   0.0,   0,      0,      false,   false,   false,   \" \"},
{-1,               false,   0.0,   0.0,   0,      0,      false,   false,   false,   \" \"},
{WEAPON_VEHICLE,      false,   0.0,   0.0,   0,      0,      false,   false,   false,   \" \"},
{-1,               false,   0.0,   0.0,   0,      0,      false,   false,   false,   \" \"},
{-1,               false,   0.0,   0.0,   0,      0,      false,   false,   false,   \" \"},
{-1,               false,   0.0,   0.0,   0,      0,      false,   false,   false,   \" \"},
{WEAPON_DROWN,         false,   0.0,   0.0,   0,      0,      false,   false,   false,   \" \"},
{WEAPON_COLLISION,      false,   0.0,   0.0,   0,      0,      false,   false,   false,   \" \"}
};
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 OnFilterScriptInit()
{
print(\"\\n ZOMBIE Filter Script v1.2 Loading...\\n**********************\\n      (Zeruel_Angel)\\n\");
return 1;
}
public OnGameModeInit()
 
{
Zspeed=0.5;
 
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.0);
      }
   }
}
}
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,\" \",scorez,scorep);
    scorez++;
    GameTextForAll(tmp,2000,4);
    attacknearest();
}
return 1;
}
//------------------------------------------------------------------------------
public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[256];
new tmp[255];
new idx;
    cmd = strtok(cmdtext, idx);
    if (IsPlayerAdmin(playerid))
    {
if    (strcmp(cmd, \"/zspeed\", true)==0)
{
tmp = strtok(cmdtext, idx);
if   (!strlen(tmp))
{
   SendClientMessage(playerid, 0xFFFFFFAA, \"USE: /zspeed [speed]\");
   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)
{
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, \"/zstart\", true)==0)
{
    if (NOFZombies>0)
    {
        new id;
   tmp = strtok(cmdtext, idx);
   if   (!strlen(tmp))
   {
      id = playerid;
   }
   else
   {
       if (!IsPlayerConnected(strval(tmp)))
       {
           SendClientMessage(playerid, 0xFFFFFFAA, \"A játékos nincs csatlakozva.\");
           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, \"Nincsenek zombik\");
return 1;
}
 
if    (strcmp(cmd, \"/zstop\", 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, \"Nincsenek zombik\");
return 1;
}
 
if    (strcmp(cmd, \"/zclean\", true)==0)
{
    cleanZombies();
    SendClientMessage(playerid, 0xFFFFFFAA, \"Nincs több élőholt!\");
return 1;
}
if    (strcmp(cmd, \"/ttt\", true)==0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
   SendClientMessage(playerid, 0xFFFFFFAA, \"USE: /ttt [hora]\");
   return 1;
}
new hora = strval(tmp);
SetWorldTime(hora);
format(tmp, sizeof(tmp), \"Ahora la hora es: %d\", hora);
SendClientMessage(playerid, 0xFFFFFFAA, tmp);
return 1;
}
if    (strcmp(cmd, \"/www\", true)==0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
   SendClientMessage(playerid, 0xFFFFFFAA, \"USO: /www [weather]\");
   return 1;
}
new www = strval(tmp);
SetWeather(www);
format(tmp, sizeof(tmp), \"Ahora el clima es: %d\", www);
SendClientMessage(playerid, 0xFFFFFFAA, tmp);
return 1;
}
if    (strcmp(cmd, \"/zcantZombies\", true)==0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
   SendClientMessage(playerid, 0xFFFFFFAA, \"USO: /zcantZombies [cuantity]\");
   return 1;
}
cleanZombies();
TOTALZombies = strval(tmp);
return 1;
}
if    (strcmp(cmd, \"/ambient\", true)==0)
{
    SetWorldTime(0);
SetWeather(8);
return 1;
}
if    (strcmp(cmd, \"/apon\", true)==0)
{
     apocalipsis = true;
    for (new i=0;i<MAX_PLAYERS;i++)
    {
   if(IsPlayerConnected(i))
   {
      QuitarArmasZombie(i);
   }
}
    
GameTextForAll(\"~r~Apokalipszis ~b~elindult~w~! ~n~~n~~n~~g~ZOMBIK~w~!!!\",5000,5);
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();
return 1;
}
if    (strcmp(cmd, \"/apoff\", true)==0)
{
    if (apocalipsis)
{
   for (new i=0;i<MAX_PLAYERS;i++)if(IsPlayerConnected(i)){DevolverArmasZombie(i);GivePlayerMoney(i,money);}
   format(tmp,255,\"A zombik elt«ntek!\",scorez,scorep);
   GameTextForAll(tmp,6000,4);
   apocalipsis = false;
   cleanZombies();
}
if (TimerAPO!=-1){KillTimer(TimerAPO);}
if (TimerAtaca!=-1){KillTimer(TimerAtaca);}
return 1;
}
    if      (strcmp(cmd, \"/vaiven\", true)==0)
    {
            tmp = strtok(cmdtext, idx);
            if      (!strlen(tmp))
            {
                    SendClientMessage(playerid, 0xFFFFFFAA, \"USO: /vaiven [angulo]\");
                    return 1;
            }
          vaiven=floatstr(tmp);
            return 1;
    }
    if      (strcmp(cmd, \"/zSetWeaponSet\", true)==0)
    {
            tmp = strtok(cmdtext, idx);
            if      (!strlen(tmp))
            {
                    SendClientMessage(playerid, 0xFFFFFFAA, \"USO: /zSetWeaponSet [sET]\");
                    return 1;
            }
            if      (strval(tmp)<sizeof(set))
            {
                    format(tmp,sizeof(tmp),\"Please pick a number beetwen 0-%d\",sizeof(set));
                    SendClientMessage(playerid, 0xFFFFFFAA, tmp);
                    return 1;
            }
          setNumber=strval(tmp);
            return 1;
    }
    if      (strcmp(cmd, \"/zGetWeapon\", true)==0)
    {
            tmp = strtok(cmdtext, idx);
            if      (!strlen(tmp))
            {
                    SendClientMessage(playerid, 0xFFFFFFAA, \"USO: /zGetWeapon [weapon]\");
                    return 1;
            }
          GivePlayerWeapon(playerid,strval(tmp),10000);
            return 1;
    }
    if      (strcmp(cmd, \"/zGiveWeaponForAll\", true)==0)
    {
            tmp = strtok(cmdtext, idx);
            if      (!strlen(tmp))
            {
                    SendClientMessage(playerid, 0xFFFFFFAA, \"USO: /zGiveWeaponForAll [weapon]\");
                    return 1;
            }
            new w = strval(tmp);
            for (new i=0;i<MAX_PLAYERS;i++)if(IsPlayerConnected(i))
          GivePlayerWeapon(i,w,10000);
            return 1;
    }
    }//IF PLAYER ADMIN
return 0;
}
//------------------------------------------------------------------------------
fire(playerid,STAT)
{
    new tmp[250];
    new  weap = GetPlayerWeapon(playerid);
   
    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] || weapL[weap][instaGib])
   {
      ran = random (30);
       if (ran < 5)
       {
           zombie[j][undead]=false;
           NOFZombies--;
               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);
            SetTimer(\"CreateRandomZombie\",10000,0);
            attacknearest();
         }
         Z+=1.7;
         DestroyObject(zombie[j][head]);
                StopObject(zombie[j][torso]);
              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-0.253135,100.0);
         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-0.265793,100.0);
         if (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+z1[rLegZ][RelZ],100.0);
                if (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+z1[lLegZ][RelZ],100.0);
         NOFZombies--;
         Z-=1.7;
       }
       else
*/         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),\" \",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<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][pWeapId]=WeaponId;
                WeaponList[playerid][pAmmo]=ammo;
        }
    ResetPlayerWeapons(playerid);
    return 1;
}
//------------------------------------------------------------------------------
public DevolverArmasZombie(playerid)
{
    new index;
    for (new i=0;i<11;i++)
        {
                if      (WeaponList[playerid][pWeapId]!=0)
                {
                    if  (WeaponList[playerid][pWeapId]!=LastWeaponUsed[playerid])
                {
                        GivePlayerWeapon(playerid,WeaponList[playerid][pWeapId],WeaponList[playerid][pAmmo]);
                }
                        else
                        {
                                index=i;
                        }
        }
        }
    GivePlayerWeapon(playerid,WeaponList[playerid][index][pWeapId],WeaponList[playerid][index][pAmmo]);
    return 1;
}
 
Szerk :Legközelebb a [ code ] tagot használd :D