Guest User

BAKThePro

a guest
Apr 22nd, 2008
2,691
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 36.90 KB | None | 0 0
  1. //------------------------------------------------------------------------------
  2. //
  3. // Zombie Filter Script v1.4
  4. // Designed for SA-MP v0.2.2
  5. //
  6. // Created by zeruel_angel
  7. // If you speak spanish, please visit SPANISH forum in samp.tilens.com
  8. // Si hablas espa�ol, por favor visita el foro en ESPA�OL samp.tilens.com
  9. //------------------------------------------------------------------------------
  10.  
  11. #include <a_samp>
  12.  
  13. #define PRESS 123
  14. #define HOLD 456
  15.  
  16. new Ticket[MAX_PLAYERS];
  17.  
  18. forward HoldingFire();
  19. enum weapParts
  20. {
  21. WeapId,
  22. allow,
  23. Float:range,
  24. Float:wide,
  25. damageMin,
  26. damageMax,
  27. cutting,
  28. instaGib,
  29. continua,
  30. mnsg[150]
  31. };
  32.  
  33. new weapL[55][weapParts]=
  34. {
  35. // ID allow range wide dMin dMax cutting insGib continua msng
  36. {0, true, 1.0, 45.0, 5, 10, false, false, false, "~n~~n~~n~~n~~n~~n~~n~~w~Punch!!!"},
  37. {WEAPON_BRASSKNUCKLE, true, 1.5, 45.0, 5, 15, false, false, false, "~n~~n~~n~~n~~n~~n~~n~~y~Plack~w~!!!"},
  38. {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~!!!"},
  39. {WEAPON_NITESTICK, true, 1.5, 35.0, 10, 15, false, false, false, "~n~~n~~n~~n~~n~~n~~n~~b~~h~Plafff~w~!!!"},
  40. {WEAPON_KNIFE, true, 1.5, 15.0, 10, 15, false, false, false, "~n~~n~~n~~n~~n~~n~~n~~r~Fisss~w~!!!"},
  41. {WEAPON_BAT, true, 2.0, 35.0, 10, 15, false, false, false, "~n~~n~~n~~n~~n~~n~~n~~g~~h~Paffffff~w~!!!"},
  42. {WEAPON_SHOVEL, true, 2.0, 35.0, 10, 25, true, false, false, "~n~~n~~n~~n~~n~~n~~n~~r~~h~~h~PlanK~w~!!!"},
  43. {WEAPON_POOLSTICK, true, 2.0, 35.0, 10, 15, false, false, false, "~n~~n~~n~~n~~n~~n~~n~~g~~h~Paffffff~w~!!!"},
  44. {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~!"},
  45. {WEAPON_CHAINSAW, true, 2.5, 35.0, 20, 35, true, false, true, "~n~~n~~n~~n~~n~~n~~n~~g~BRRRRRRRNNNNNN~w~!!!!"},
  46. {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~."},
  47. {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~."},
  48. {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~."},
  49. {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~."},
  50. {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~."},
  51. {WEAPON_CANE, true, 2.0, 35.0, 10, 15, false, false, false, "~n~~n~~n~~n~~n~~n~~n~~g~~h~Paffffff~w~!!!"},
  52. {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~."},
  53. {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~."},
  54. {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~."},
  55. {-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~."},
  56. {-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~."},
  57. {-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~."},
  58. {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~!!"},
  59. {WEAPON_SILENCED, true, 20.0, 3.0, 10, 15, false, false, false, "~n~~n~~n~~n~~n~~n~~n~~r~Piuufff~w~!!"},
  60. {WEAPON_DEAGLE, true, 25.0, 3.0, 15, 20, false, true, true, "~n~~n~~n~~n~~n~~n~~n~~r~Baaang~w~!!"},
  61. {WEAPON_SHOTGUN, true, 18.0, 7.0, 10, 25, true, true, true, "~n~~n~~n~~n~~n~~n~~n~~r~BUM~w~!!!!"},
  62. {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~!!"},
  63. {WEAPON_SHOTGSPA, true, 18.0, 7.0, 25, 45, true, true, true, "~n~~n~~n~~n~~n~~n~~n~~r~BUUUM~w~!!!!"},
  64. {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~."},
  65. {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~."},
  66. {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~."},
  67. {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~."},
  68. {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~."},
  69. {WEAPON_RIFLE, true, 50.0, 2.0, 0, 50, false, true, true, "~n~~n~~n~~n~~n~~n~~n~~g~PUUUM~w~!!!!"},
  70. {WEAPON_SNIPER, true, 100.0, 1.0, 0, 60, false, true, false, "~n~~n~~n~~n~~n~~n~~n~~g~PUUUUUUUUMMMMM~w~!!!!"},
  71. {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~."},
  72. {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~."},
  73. {WEAPON_FLAMETHROWER, true, 8.0, 15.0, 10, 20, false, false, true, "~n~~n~~n~~n~~n~~n~~n~~r~Fuuu~y~uffffff~w~!!!!"},
  74. {WEAPON_MINIGUN, true, 25.0, 3.0, 1, 99, true, true, true, "~n~~n~~n~~n~~n~~n~~n~~r~MUAJAJAJAJAJAJ~w~!!!!!"},
  75. {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~."},
  76. {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~."},
  77. {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~!!!"},
  78. {WEAPON_FIREEXTINGUISHER,true, 3.5, 15.0, 10, 0, false, false, true, "~n~~n~~n~~n~~n~~n~~n~~w~Fuuuusssshhh~b~!!!!"},
  79. {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~."},
  80. {-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~."},
  81. {-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~."},
  82. {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~."},
  83. {-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~."},
  84. {-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~."},
  85. {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~."},
  86. {-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~."},
  87. {-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~."},
  88. {-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~."},
  89. {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~."},
  90. {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~."}
  91. };
  92.  
  93. new setNumber = 0;
  94.  
  95. new set[6][3][2]=
  96. {
  97. {{WEAPON_KATANA,1000}, {WEAPON_SHOTGUN,50}, {WEAPON_FIREEXTINGUISHER,500}},
  98. {{WEAPON_KATANA,1000}, {WEAPON_SILENCED,100}, {WEAPON_SAWEDOFF,25}},
  99. {{WEAPON_NITESTICK,1000}, {WEAPON_COLT45,100}, {WEAPON_SHOTGUN,25}},
  100. {{WEAPON_GOLFCLUB,1000}, {WEAPON_FIREEXTINGUISHER,400}, {WEAPON_FLAMETHROWER,50}},
  101. {{WEAPON_SHOVEL,1000}, {WEAPON_SHOTGSPA,100}, {WEAPON_RIFLE,25}},
  102. {{WEAPON_KNIFE,1000}, {WEAPON_SHOTGSPA,100}, {WEAPON_SNIPER,25}}
  103. };
  104.  
  105. new NOFZombies=0;
  106. new TOTALZombies=10;
  107. new Float:Zspeed = 2.0;
  108. new ZTimerSpeed = 500;
  109. new Float:vaiven = 5.0;
  110. new Float:X,Float:Y,Float:Z;
  111.  
  112. #define MAX_ZOMBIES 100
  113.  
  114. #define brazo1 1
  115. #define brazo2 2
  116. #define pierna1 4
  117. #define pierna2 8
  118. enum zombiParts
  119. {
  120. rArm,
  121. lArm,
  122. rLeg,
  123. lLeg,
  124. head,
  125. torso,
  126. pedazos,
  127. HP,
  128. Float:ArmAngle,
  129. Float:ArmStatus,
  130. Float:angulo,
  131. Float:speed,
  132. LegsH,
  133. undead,
  134. target
  135. };
  136.  
  137. new zombie[MAX_ZOMBIES][zombiParts];
  138.  
  139. enum zombiPos
  140. {
  141. partModel,
  142. Float:RelX,
  143. Float:RelY,
  144. Float:RelZ,
  145. Float:RelrX,
  146. Float:RelrY,
  147. Float:RelrZ
  148. }
  149. enum zpart
  150. {
  151. rLegZ,
  152. rArmZ,
  153. torsoZ,
  154. lArmZ,
  155. headZ,
  156. lLegZ
  157. }
  158. new z1[zpart][zombiPos]=
  159. {
  160. {2905,-0.115479,-0.023924, -1.280131, -90.000000, 90.000000,0.000000},
  161. {2906, -0.218995, 0.200928, -0.253135, 0.000000, 180.000000, 0.000000},
  162. {2907, -0.032227, -0.045897, -0.544213, 270.000000, 0.000000, 0.000000},
  163. {2906, 0.187987, 0.158448, -0.265793, 0.000000, 0.000000, 0.000000},
  164. {2908, 0.000000, 0.000000, 0.000000, 270.000000, 90.000000, 0.000000},
  165. {2905, 0.101074, -0.012694, -1.288253, 270.000000, 90.000000, 0.000000}
  166. };
  167.  
  168. new z2[6][zombiPos]=
  169. {
  170. {2905, 0.005614, -0.110107, -1.280131, -90.000000, 90.000000, 90.000000},
  171. {2906, -0.148926, -0.180663, -0.253135, 0.000000, 180.000000, 90.000000},
  172. {2907, 0.047852, -0.039061, -0.544213, 270.000000, 0.000000, 90.000000},
  173. {2906, -0.152343, 0.171387, -0.265793, 0.000000, 0.000000, 90.000000},
  174. {2908, 0.000000, 0.000000, 0.000000, 270.000000, 90.000000, 90.000000},
  175. {2905, 0.000977, 0.090332, -1.288253, 270.000000, 90.000000, 90.000000}
  176. };
  177. enum zArm
  178. {
  179. Float:AZ,
  180. Float:AA
  181. };
  182. enum tipo
  183. {
  184. der,
  185. izq
  186. };
  187. new A1[tipo][zArm]=
  188. {
  189. {-0.253135,0.0},
  190. {-0.265793,0.0}
  191. };
  192. new A2[tipo][zArm]=
  193. {
  194. {-0.359635, -90.0},
  195. {-0.338874, -90.0}
  196. };
  197. forward zombieAtaca(playerid);
  198. forward attacknearest();
  199. new TimerAtaca=-1;
  200. new TimerAPO=-1;
  201. new PlayerDeath[MAX_PLAYERS];
  202.  
  203. new apocalipsis = false;
  204.  
  205. enum WeaponType
  206. {
  207. pWeapId,
  208. pAmmo
  209. };
  210. new WeaponList[MAX_PLAYERS][12][WeaponType];
  211. new LastWeaponUsed[MAX_PLAYERS];
  212. forward QuitarArmasZombie(playerid);
  213. forward DevolverArmasZombie(playerid);
  214. forward CreateRandomZombie();
  215. new money[MAX_PLAYERS];
  216. new scorez=0;
  217. new scorep=0;
  218.  
  219. #define delay 500
  220. //------------------------------------------------------------------------------
  221. public OnFilterScriptInit()
  222. {
  223. print("\n ZOMBIE Filter Script v1.2 Loading...\n**********************\n (Zeruel_Angel)\n");
  224. return 1;
  225. }
  226. public OnGameModeInit()
  227. {
  228. return 1;
  229. }
  230. //------------------------------------------------------------------------------
  231. public OnFilterScriptExit()
  232. {
  233. print("\n*********** ZOMBIE (zeruel_angel) ***********\n");
  234. cleanZombies();
  235. return 1;
  236. }
  237. public OnGameModeExit()
  238. {
  239. cleanZombies();
  240. return 1;
  241. }
  242. //------------------------------------------------------------------------------
  243. public attacknearest()
  244. {
  245. new Float:pX,Float:pY,Float:pZ;
  246. new Float:distNew,Float:distOld;
  247. new candidato;
  248. for (new j=0;j<TOTALZombies;j++)
  249. {
  250. if (zombie[j][undead])
  251. {
  252. distOld=9999.9;
  253. candidato=-1;
  254. GetObjectPos(zombie[j][head],X,Y,Z);
  255. for(new i=0;i<MAX_PLAYERS;i++)
  256. {
  257. if(IsPlayerConnected(i))
  258. {
  259. GetPlayerPos(i,pX,pY,pZ);
  260. distNew = floatabs(pX-X) + floatabs(pY-Y);
  261. if (distNew<distOld)
  262. {
  263. distOld = distNew;
  264. candidato = i;
  265. }
  266. }
  267. }
  268. if (distOld>100.0)
  269. {
  270. DestroyObject(zombie[j][head]);
  271. DestroyObject(zombie[j][rLeg]);
  272. DestroyObject(zombie[j][lLeg]);
  273. DestroyObject(zombie[j][rArm]);
  274. DestroyObject(zombie[j][lArm]);
  275. DestroyObject(zombie[j][torso]);
  276. NOFZombies--;
  277. zombie[j][undead]=false;
  278. SetTimer("CreateRandomZombie",1000,0);
  279. }
  280. zombie[j][target]=candidato;
  281. }
  282. }
  283. }
  284. //------------------------------------------------------------------------------
  285. cleanZombies()
  286. {
  287. for (new j=0;j<TOTALZombies;j++)
  288. {
  289. zombie[j][undead]=false;
  290. if (IsValidObject(zombie[j][torso]))DestroyObject(zombie[j][torso]);
  291. if (IsValidObject(zombie[j][head])) DestroyObject(zombie[j][head]);
  292. if (IsValidObject(zombie[j][rLeg])) DestroyObject(zombie[j][rLeg]);
  293. if (IsValidObject(zombie[j][lLeg])) DestroyObject(zombie[j][lLeg]);
  294. if (IsValidObject(zombie[j][rArm])) DestroyObject(zombie[j][rArm]);
  295. if (IsValidObject(zombie[j][lArm])) DestroyObject(zombie[j][lArm]);
  296. NOFZombies--;
  297. }
  298. if (TimerAPO!=-1){KillTimer(TimerAPO);}
  299. if (TimerAtaca!=-1){KillTimer(TimerAtaca);}
  300. }
  301. //------------------------------------------------------------------------------
  302. strtok(const string[], &index)
  303. {
  304. new length = strlen(string);
  305. while ((index < length) && (string[index] <= ' '))
  306. {
  307. index++;
  308. }
  309.  
  310. new offset = index;
  311. new result[20];
  312. while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
  313. {
  314. result[index - offset] = string[index];
  315. index++;
  316. }
  317. result[index - offset] = EOS;
  318. return result;
  319. }
  320. //------------------------------------------------------------------------------
  321. CrearZombie(Float:pX,Float:pY,Float:pZ,Float:angle)
  322. {
  323. new Float:PEPE = floatsin((angle*3.14159/180.0));
  324. new Float:PIPO = floatcos((angle*3.14159/180.0));
  325. if (NOFZombies<TOTALZombies)
  326. {
  327. new j=0;
  328. while ((zombie[j][undead])){j++;}
  329. if (IsValidObject(zombie[j][torso]))
  330. {
  331. DestroyObject(zombie[j][head]);
  332. DestroyObject(zombie[j][rLeg]);
  333. DestroyObject(zombie[j][lLeg]);
  334. DestroyObject(zombie[j][rArm]);
  335. DestroyObject(zombie[j][lArm]);
  336. DestroyObject(zombie[j][torso]);
  337. }
  338. zombie[j][head]=CreateObject(z1[headZ][partModel],pX,pY,pZ,z1[headZ][RelrX],z1[headZ][RelrY],angle);
  339. 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);
  340. 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);
  341. 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);
  342. 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);
  343. 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);
  344.  
  345. zombie[j][LegsH]=true;
  346. zombie[j][speed]=random(100)+50;
  347. zombie[j][ArmAngle]=0;
  348. zombie[j][ArmStatus]=random(5)+5;
  349. zombie[j][undead]=true;
  350. zombie[j][HP]=100;
  351. zombie[j][pedazos]= brazo1 + brazo2 + pierna1 + pierna2;
  352. zombie[j][angulo]=angle;
  353. NOFZombies++;
  354. }
  355. return 1;
  356. }
  357. //------------------------------------------------------------------------------
  358. public zombieAtaca()
  359. {
  360. new Float:pX,Float:pY,Float:pZ,Float:angle,Float:PEPE,Float:PIPO,Float:AA1,Float:AA2,Float:H;
  361. new vehicleStatus;
  362. if (NOFZombies<1 && !apocalipsis)
  363. {
  364. if (TimerAPO!=-1){KillTimer(TimerAPO);}
  365. if (TimerAtaca!=-1){KillTimer(TimerAtaca);}
  366. }
  367. HoldingFire();
  368. for (new j=0;j<TOTALZombies;j++)
  369. {
  370. if(zombie[j][undead]&&IsPlayerConnected(zombie[j][target]) && GetPlayerInterior(zombie[j][target])==0)
  371. {
  372. vehicleStatus = IsPlayerInAnyVehicle(zombie[j][target]);
  373. GetPlayerPos(zombie[j][target],pX,pY,pZ);
  374. pZ+=0.7;
  375. GetObjectPos(zombie[j][head],X,Y,Z);
  376. angle = 180.0-atan2(X-pX,Y-pY);
  377. angle+=vaiven;
  378. vaiven*=-1;
  379. PEPE = floatsin((angle*3.14159/180.0));
  380. PIPO = floatcos((angle*3.14159/180.0));
  381. zombie[j][angulo]=angle;
  382. if(floatabs(zombie[j][ArmAngle])>10.0){zombie[j][ArmStatus]*=-1;}
  383. zombie[j][ArmAngle]+=zombie[j][ArmStatus];
  384.  
  385. zombie[j][LegsH]=!zombie[j][LegsH];
  386.  
  387. AA1 = floatcos(zombie[j][ArmAngle]*3.14159/180.0);
  388. AA2 = floatsin(zombie[j][ArmAngle]*3.14159/180.0);
  389.  
  390. if ((pZ-Z)>3.0)
  391. {
  392. Z+=1.0;
  393. }
  394. else if((pZ-Z)<-3.0)
  395. {
  396. Z-=1.0;
  397. }
  398. //we destroy the old zombi
  399. DestroyObject(zombie[j][torso]);
  400. DestroyObject(zombie[j][head]);
  401. if (zombie[j][pedazos] & brazo1) DestroyObject(zombie[j][rArm]);
  402. if (zombie[j][pedazos] & brazo2) DestroyObject(zombie[j][lArm]);
  403. if (zombie[j][pedazos] & pierna1) DestroyObject(zombie[j][rLeg]);
  404. if (zombie[j][pedazos] & pierna2) DestroyObject(zombie[j][lLeg]);
  405.  
  406. //we recreate the zombie
  407. zombie[j][head]=CreateObject(z1[headZ][partModel],X,Y,pZ,z1[headZ][RelrX],z1[headZ][RelrY],angle+vaiven);
  408. 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);
  409. if (zombie[j][pedazos] & brazo1)
  410. 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);
  411. if (zombie[j][pedazos] & brazo2)
  412. 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);
  413. if (zombie[j][pedazos] & pierna1)
  414. 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);
  415.  
  416. if (zombie[j][pedazos] & pierna2)
  417. 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);
  418.  
  419. 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
  420. {
  421. MoveObject(zombie[j][head],pX,pY,pZ,zombie[j][speed]*0.01*Zspeed);
  422. 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);
  423. if (zombie[j][pedazos] & brazo1)
  424. 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);
  425. if (zombie[j][pedazos] & brazo2)
  426. 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);
  427. if (zombie[j][pedazos] & pierna1)
  428. 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);
  429. if (zombie[j][pedazos] & pierna2)
  430. 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);
  431. }
  432. else//the zombie EATS you unless you are in a vehicle or you are alredy dead
  433. {
  434. StopObject(zombie[j][head]);
  435. StopObject(zombie[j][torso]);
  436. StopObject(zombie[j][rArm]);
  437. StopObject(zombie[j][lArm]);
  438. StopObject(zombie[j][rLeg]);
  439. StopObject(zombie[j][lLeg]);
  440. GetPlayerHealth(zombie[j][target],H);
  441. if ( !vehicleStatus && !PlayerDeath[zombie[j][target]])
  442. {
  443. SetPlayerHealth(zombie[j][target],H-5.0);
  444. }
  445. }
  446. }
  447. }
  448. return 1;
  449. }
  450. //------------------------------------------------------------------------------
  451. public OnPlayerSpawn(playerid)
  452. {
  453. PlayerDeath[playerid]=false;
  454. if (apocalipsis)
  455. {
  456. ResetPlayerMoney(playerid);
  457. ResetPlayerWeapons(playerid);
  458. GivePlayerWeapon(playerid,set[setNumber][0][0],set[setNumber][0][1]);
  459. GivePlayerWeapon(playerid,set[setNumber][1][0],set[setNumber][1][1]);
  460. GivePlayerWeapon(playerid,set[setNumber][2][0],set[setNumber][2][1]);
  461. }
  462. return 1;
  463. }
  464. //------------------------------------------------------------------------------
  465. public OnPlayerDeath(playerid, killerid, reason)
  466. {
  467. PlayerDeath[playerid]=true;
  468. if (apocalipsis && killerid==INVALID_PLAYER_ID)
  469. {
  470. new tmp[255];
  471. format(tmp,255,"~w~SCORE~n~~r~Zombies~w~: %d ~y~+1 ~n~~b~Humans~w~: %d",scorez,scorep);
  472. scorez++;
  473. GameTextForAll(tmp,2000,4);
  474. attacknearest();
  475. }
  476.  
  477. return 1;
  478. }
  479. //------------------------------------------------------------------------------
  480. public OnPlayerConnect(playerid)
  481. {
  482. if (apocalipsis)
  483. {
  484. money[playerid]=GetPlayerMoney(playerid);
  485. ResetPlayerMoney(playerid);
  486. QuitarArmasZombie(playerid);
  487. }
  488. return 1;
  489. }
  490. //------------------------------------------------------------------------------
  491. public OnPlayerCommandText(playerid, cmdtext[])
  492. {
  493. new cmd[256];
  494. new tmp[255];
  495. new idx;
  496. cmd = strtok(cmdtext, idx);
  497. if (IsPlayerAdmin(playerid))
  498. {
  499. if (strcmp(cmd, "/zspeed", true)==0)
  500. {
  501. tmp = strtok(cmdtext, idx);
  502. if (!strlen(tmp))
  503. {
  504. SendClientMessage(playerid, 0xFFFFFFAA, "USE: /zspeed [speed]");
  505. return 1;
  506. }
  507. Zspeed=floatstr(tmp);
  508. return 1;
  509. }
  510. if (strcmp(cmd, "/ZTimerSpeed", true)==0)
  511. {
  512. tmp = strtok(cmdtext, idx);
  513. if (!strlen(tmp))
  514. {
  515. SendClientMessage(playerid, 0xFFFFFFAA, "USE: /ZTimerSpeed [timer speed]");
  516. return 1;
  517. }
  518. ZTimerSpeed=strval(tmp);
  519. OnPlayerCommandText(playerid, "/zstop");
  520. OnPlayerCommandText(playerid, "/zstart");
  521. return 1;
  522. }
  523. if (strcmp(cmd, "/zo", true)==0)
  524. {
  525. new Float:pX,Float:pY,Float:pZ,Float:Ang;
  526. GetPlayerPos(playerid,pX,pY,pZ);
  527. GetPlayerFacingAngle(playerid,Ang);
  528. pX=pX+3.0*floatsin(-Ang,degrees);
  529. pY=pY+3.0*floatcos(-Ang,degrees);
  530. pZ=pZ+0.7;
  531. CrearZombie(pX,pY,pZ,Ang+180.0);
  532. return 1;
  533. }
  534. if (strcmp(cmd, "/zstart", true)==0)
  535. {
  536. if (NOFZombies>0)
  537. {
  538. new id;
  539. tmp = strtok(cmdtext, idx);
  540. if (!strlen(tmp))
  541. {
  542. id = playerid;
  543. }
  544. else
  545. {
  546. if (!IsPlayerConnected(strval(tmp)))
  547. {
  548. SendClientMessage(playerid, 0xFFFFFFAA, "That player is not conected!");
  549. return 1;
  550. }
  551. id = strval(tmp);
  552. }
  553. if (TimerAtaca!=-1){KillTimer(TimerAtaca);}
  554. for (new j=0;j<TOTALZombies;j++){zombie[j][target]=id;}
  555. TimerAtaca=SetTimer("zombieAtaca",ZTimerSpeed,1);
  556. return 1;
  557. }
  558. SendClientMessage(playerid, 0xFFFFFFAA, "There are no zombies");
  559. return 1;
  560. }
  561. if (strcmp(cmd, "/zstop", true)==0)
  562. {
  563. if (NOFZombies>0)
  564. {
  565. if (TimerAtaca!=-1)
  566. {
  567. KillTimer(TimerAtaca);
  568. }
  569. for (new j=0;j<TOTALZombies;j++)
  570. {
  571. if (zombie[j][undead])
  572. {
  573. StopObject(zombie[j][head]);
  574. StopObject(zombie[j][torso]);
  575. StopObject(zombie[j][rArm]);
  576. StopObject(zombie[j][lArm]);
  577. StopObject(zombie[j][rLeg]);
  578. StopObject(zombie[j][lLeg]);
  579. }
  580. }
  581. return 1;
  582. }
  583. SendClientMessage(playerid, 0xFFFFFFAA, "There are no zombies");
  584. return 1;
  585. }
  586. if (strcmp(cmd, "/zclean", true)==0)
  587. {
  588. cleanZombies();
  589. SendClientMessage(playerid, 0xFFFFFFAA, "There are no zombies anymore!");
  590. return 1;
  591. }
  592. if (strcmp(cmd, "/ttt", true)==0)
  593. {
  594. tmp = strtok(cmdtext, idx);
  595. if(!strlen(tmp))
  596. {
  597. SendClientMessage(playerid, 0xFFFFFFAA, "USO: /ttt [hora]");
  598. return 1;
  599. }
  600. new hora = strval(tmp);
  601. SetWorldTime(hora);
  602. format(tmp, sizeof(tmp), "Ahora la hora es: %d", hora);
  603. SendClientMessage(playerid, 0xFFFFFFAA, tmp);
  604. return 1;
  605. }
  606. if (strcmp(cmd, "/www", true)==0)
  607. {
  608. tmp = strtok(cmdtext, idx);
  609. if(!strlen(tmp))
  610. {
  611. SendClientMessage(playerid, 0xFFFFFFAA, "USO: /www [weather]");
  612. return 1;
  613. }
  614. new www = strval(tmp);
  615. SetWeather(www);
  616. format(tmp, sizeof(tmp), "Ahora el clima es: %d", www);
  617. SendClientMessage(playerid, 0xFFFFFFAA, tmp);
  618. return 1;
  619. }
  620. if (strcmp(cmd, "/zcantZombies", true)==0)
  621. {
  622. tmp = strtok(cmdtext, idx);
  623. if(!strlen(tmp))
  624. {
  625. SendClientMessage(playerid, 0xFFFFFFAA, "USO: /zcantZombies [cuantity]");
  626. return 1;
  627. }
  628. cleanZombies();
  629. TOTALZombies = strval(tmp);
  630. return 1;
  631. }
  632. if (strcmp(cmd, "/ambient", true)==0)
  633. {
  634. SetWorldTime(0);
  635. SetWeather(8);
  636. return 1;
  637. }
  638. if (strcmp(cmd, "/apocalipsison", true)==0)
  639. {
  640. apocalipsis = true;
  641. for (new i=0;i<MAX_PLAYERS;i++)
  642. {
  643. if(IsPlayerConnected(i))
  644. {
  645. QuitarArmasZombie(i);
  646. money[playerid]=GetPlayerMoney(playerid);
  647. ResetPlayerMoney(playerid);
  648. }
  649. }
  650. scorez=0;
  651. scorep=0;
  652. SetWorldTime(0);
  653. SetWeather(8);
  654. GameTextForAll("~r~apocalipsis ~w~mode:~b~on~w~! ~n~~n~~n~~g~ZOMBIES~w~!!!",5000,5);
  655. if (TimerAPO!=-1){KillTimer(TimerAPO);}
  656. TimerAPO = SetTimer("attacknearest",10000,1);
  657. if (TimerAtaca!=-1){KillTimer(TimerAtaca);}
  658. TimerAtaca=SetTimer("zombieAtaca",ZTimerSpeed,1);
  659. while (NOFZombies<TOTALZombies)CreateRandomZombie();
  660. attacknearest();
  661. return 1;
  662. }
  663. if (strcmp(cmd, "/apocalipsisoff", true)==0)
  664. {
  665. if (apocalipsis)
  666. {
  667. for (new i=0;i<MAX_PLAYERS;i++)if(IsPlayerConnected(i)){DevolverArmasZombie(i);GivePlayerMoney(i,money[i]);}
  668. format(tmp,255,"~w~SCORE ~r~Zombies~w~: %d ~b~Humans~w~: %d~n~~n~~r~apocalipsis ~w~mode:~b~off~w~",scorez,scorep);
  669. GameTextForAll(tmp,6000,4);
  670. apocalipsis = false;
  671. SetWorldTime(12);
  672. SetWeather(7);
  673. cleanZombies();
  674. }
  675. if (TimerAPO!=-1){KillTimer(TimerAPO);}
  676. if (TimerAtaca!=-1){KillTimer(TimerAtaca);}
  677. return 1;
  678. }
  679. if (strcmp(cmd, "/vaiven", true)==0)
  680. {
  681. tmp = strtok(cmdtext, idx);
  682. if (!strlen(tmp))
  683. {
  684. SendClientMessage(playerid, 0xFFFFFFAA, "USO: /vaiven [angulo]");
  685. return 1;
  686. }
  687. vaiven=floatstr(tmp);
  688. return 1;
  689. }
  690. if (strcmp(cmd, "/zSetWeaponSet", true)==0)
  691. {
  692. tmp = strtok(cmdtext, idx);
  693. if (!strlen(tmp))
  694. {
  695. SendClientMessage(playerid, 0xFFFFFFAA, "USO: /zSetWeaponSet [SET]");
  696. return 1;
  697. }
  698. if (strval(tmp)<sizeof(set))
  699. {
  700. format(tmp,sizeof(tmp),"Please pick a number beetwen 0-%d",sizeof(set));
  701. SendClientMessage(playerid, 0xFFFFFFAA, tmp);
  702. return 1;
  703. }
  704. setNumber=strval(tmp);
  705. return 1;
  706. }
  707. if (strcmp(cmd, "/zGetWeapon", true)==0)
  708. {
  709. tmp = strtok(cmdtext, idx);
  710. if (!strlen(tmp))
  711. {
  712. SendClientMessage(playerid, 0xFFFFFFAA, "USO: /zGetWeapon [weapon]");
  713. return 1;
  714. }
  715. GivePlayerWeapon(playerid,strval(tmp),10000);
  716. return 1;
  717. }
  718. if (strcmp(cmd, "/zGiveWeaponForAll", true)==0)
  719. {
  720. tmp = strtok(cmdtext, idx);
  721. if (!strlen(tmp))
  722. {
  723. SendClientMessage(playerid, 0xFFFFFFAA, "USO: /zGiveWeaponForAll [weapon]");
  724. return 1;
  725. }
  726. new w = strval(tmp);
  727. for (new i=0;i<MAX_PLAYERS;i++)if(IsPlayerConnected(i))
  728. GivePlayerWeapon(i,w,10000);
  729. return 1;
  730. }
  731.  
  732. }//IF PLAYER ADMIN
  733. return 0;
  734. }
  735. //------------------------------------------------------------------------------
  736. fire(playerid,STAT)
  737. {
  738. new tmp[250];
  739. new weap = GetPlayerWeapon(playerid);
  740. format(tmp,sizeof(tmp),"ARMA ID : %d ", weap);
  741. SendClientMessageToAll(0xFFFF00AA,tmp);
  742. if (!weapL[weap][allow])
  743. {
  744.  
  745. GameTextForPlayer(playerid,weapL[weap][mnsg],2000,5);
  746. return 1;
  747. }
  748. if (!weapL[weap][continua] && STAT==HOLD)
  749. {
  750. return 1;
  751. }
  752. Ticket[playerid]=tickcount()+delay;
  753.  
  754. new Float:pX,Float:pY,Float:pZ,Float:pA,Float:PEPE,Float:PIPO;
  755. new Float:zzX,Float:zzY,Float:zzA;
  756. GetPlayerPos(playerid,pX,pY,pZ);
  757. GetPlayerFacingAngle(playerid,pA);
  758. pZ=pZ+0.7;
  759. new ran;
  760. for (new j=0;j<TOTALZombies;j++)
  761. {
  762. if (IsValidObject(zombie[j][torso]))
  763. {
  764. GetObjectPos(zombie[j][head],X,Y,Z);
  765. zzX=X-pX;zzY=Y-pY;zzA=atan2(zzX,zzY);if(zzA>0)zzA-=360.0;
  766. }
  767. if (zombie[j][undead]&&(floatsqroot(floatpower(zzX,2)+floatpower(zzY,2)))<weapL[weap][range] && (floatabs(zzA+pA)<weapL[weap][wide]))
  768. {
  769. Z-=1.7;
  770. zombie[j][HP]-= random(weapL[weap][damageMax]-weapL[weap][damageMin])+weapL[weap][damageMin];
  771. GameTextForPlayer(playerid,weapL[weap][mnsg],delay-100,5);
  772. PEPE = floatsin((zombie[j][angulo]*3.14159/180.0));
  773. PIPO = floatcos((zombie[j][angulo]*3.14159/180.0));
  774. /* if (weapL[weap][cutting] || weapL[weap][instaGib])
  775. {
  776. ran = random (30);
  777. if (ran < 5)
  778. {
  779. zombie[j][undead]=false;
  780. NOFZombies--;
  781. if (apocalipsis)
  782. {
  783. format(tmp,sizeof(tmp),"~w~SCORE~n~~r~Zombies~w~: %d ~n~~b~Humans~w~: %d ~y~+1",scorez,scorep);
  784. scorep++;
  785. GameTextForAll(tmp,2000,4);
  786. SetTimer("CreateRandomZombie",10000,0);
  787. attacknearest();
  788. }
  789. Z+=1.7;
  790. DestroyObject(zombie[j][head]);
  791. StopObject(zombie[j][torso]);
  792. if (zombie[j][pedazos] & brazo1)
  793. 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);
  794. if (zombie[j][pedazos] & brazo2)
  795. 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);
  796. if (zombie[j][pedazos] & pierna1)
  797. 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);
  798. if (zombie[j][pedazos] & pierna2)
  799. 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);
  800. NOFZombies--;
  801. Z-=1.7;
  802. }
  803.  
  804. else
  805.  
  806. */ if (weapL[weap][cutting])
  807. {
  808. if ((zombie[j][pedazos] & brazo1) || (zombie[j][pedazos] & brazo2))
  809. {
  810. if (ran < 20)
  811. {
  812. if (( ran < 10 || !(zombie[j][pedazos] & brazo2)) && (zombie[j][pedazos] & brazo1))
  813. {
  814. 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);
  815. }
  816. else
  817. {
  818. 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);
  819. }
  820. }
  821. }
  822. else if (zombie[j][HP]<40 && (zombie[j][pedazos] & pierna1 ) && (zombie[j][pedazos] & pierna2))
  823. {
  824. 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);}
  825. 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);}
  826. zombie[j][speed]-=float(40);
  827. }
  828. // }
  829. }
  830. if (zombie[j][HP]<0 && zombie[j][undead])
  831. {
  832. zombie[j][undead]=false;
  833. NOFZombies--;
  834. MoveObject(zombie[j][head],X,Y,Z,1.5);
  835. 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);
  836. if (zombie[j][pedazos] & brazo1)
  837. 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);
  838. if (zombie[j][pedazos] & brazo2)
  839. 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);
  840. if (zombie[j][pedazos] & pierna1)
  841. StopObject(zombie[j][rLeg]);
  842. if (zombie[j][pedazos] & pierna2)
  843. StopObject(zombie[j][lLeg]);
  844. if (apocalipsis)
  845. {
  846. format(tmp,sizeof(tmp),"~w~SCORE~n~~r~Zombies~w~: %d ~n~~b~Humans~w~: %d ~y~+1",scorez,scorep);
  847. scorep++;
  848. GameTextForAll(tmp,2000,4);
  849. ran = random(10);
  850. SetTimer("CreateRandomZombie",ran*1000,0);
  851. attacknearest();
  852. }
  853. }
  854. }
  855. }
  856. return 1;
  857. }
  858. //------------------------------------------------------------------------------
  859. public HoldingFire()
  860. {
  861. new keys,updown,leftright;
  862. for (new i=0;i<MAX_PLAYERS;i++)
  863. {
  864. if (IsPlayerConnected(i))
  865. {
  866. GetPlayerKeys(i,keys,updown,leftright);
  867. if ((keys & KEY_FIRE)&&(!IsPlayerInAnyVehicle(i))&&(Ticket[i]<tickcount()))
  868. {
  869. fire(i,HOLD);
  870. }
  871. }
  872. }
  873. }
  874. //------------------------------------------------------------------------------
  875. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  876. {
  877. if ((NOFZombies>0) && (newkeys & KEY_FIRE)&&(!IsPlayerInAnyVehicle(playerid))&&(Ticket[playerid]<tickcount()))
  878. {
  879. fire(playerid,PRESS);
  880. }
  881. }
  882. //------------------------------------------------------------------------------
  883. public CreateRandomZombie()
  884. {
  885. new playerid = random(MAX_PLAYERS);
  886. while (!IsPlayerConnected(playerid)&&GetPlayerInterior(playerid)==0)playerid = random(MAX_PLAYERS);
  887. new Float:pX,Float:pY,Float:pZ,Float:Ang;
  888. GetPlayerPos(playerid,pX,pY,pZ);
  889. Ang=float(random(360));
  890. pX=pX+50.0*floatsin(Ang,degrees);
  891. pY=pY+50.0*floatcos(Ang,degrees);
  892. pZ=pZ+0.7;
  893. CrearZombie(pX,pY,pZ,Ang);
  894. }
  895. //------------------------------------------------------------------------------
  896. public QuitarArmasZombie(playerid)
  897. {
  898. LastWeaponUsed[playerid]=GetPlayerWeapon(playerid);GetPlayerWeapon(playerid);
  899. new WeaponId;
  900. new ammo;
  901. for (new i=0;i<11;i++)
  902. {
  903. GetPlayerWeaponData(playerid, i, WeaponId, ammo);
  904. WeaponList[playerid][i][pWeapId]=WeaponId;
  905. WeaponList[playerid][i][pAmmo]=ammo;
  906. }
  907. ResetPlayerWeapons(playerid);
  908. return 1;
  909. }
  910. //------------------------------------------------------------------------------
  911. public DevolverArmasZombie(playerid)
  912. {
  913. new index;
  914. for (new i=0;i<11;i++)
  915. {
  916. if (WeaponList[playerid][i][pWeapId]!=0)
  917. {
  918. if (WeaponList[playerid][i][pWeapId]!=LastWeaponUsed[playerid])
  919. {
  920. GivePlayerWeapon(playerid,WeaponList[playerid][i][pWeapId],WeaponList[playerid][i][pAmmo]);
  921. }
  922. else
  923. {
  924. index=i;
  925. }
  926. }
  927. }
  928. GivePlayerWeapon(playerid,WeaponList[playerid][index][pWeapId],WeaponList[playerid][index][pAmmo]);
  929. return 1;
  930. }
Advertisement
Add Comment
Please, Sign In to add comment