13.04.2010, 20:41
Here my code:
Код:
#include <a_samp> #define Round_MaxTime 360000 #define TEAM_HUMAN 0 #define TEAM_ZOMBIE 1 #define COLOR_HUMAN 0x6495EDAA #define COLOR_ZOMBIE 0x275511FF #define WEAPON1_HUMAN 24 #define WEAPON2_HUMAN 25 #define WEAPON3_HUMAN 31 #define WEAPON1_ZOMBIE 4 #define WEAPON2_ZOMBIE 0 #define WEAPON3_ZOMBIE 0 #define COLOR_RED 0xFF0000AA #define COLOR_YELLOW 0xFFFF00AA #define COLOR_GREEN 0x66CC99AA enum aInfo { HumansCount, ZombiesCount, HumansKills, ZombiesKills, ID }; enum pInfo { TotalCount, Team }; new Arena[aInfo]; new PlayerCount; new PlayerTeam[MAX_PLAYERS]; new Text[256]; new Float:OldHP[MAX_PLAYERS]; forward AnnounceWinner(); forward ChangeRound(); forward OnPlayerUpdate(playerid); main() { print("|||||||||||||||||||||||||||||||||||||||||||||||||||||||"); print("| ZOMBIEMOD - G0D4V1D & GhOsT |"); print("| Probably you've never seen a gamemod like this one |"); print("| Enjoy this fucking great Zombie's gamemod |"); print("|||||||||||||||||||||||||||||||||||||||||||||||||||||||"); } stock HumanTeam(playerid) { SendClientMessage(playerid,COLOR_HUMAN,"Save the society!"); GivePlayerWeapon(playerid,WEAPON1_HUMAN,9999); GivePlayerWeapon(playerid,WEAPON2_HUMAN,9999); GivePlayerWeapon(playerid,WEAPON3_HUMAN,9999); SetPlayerColor(playerid,COLOR_HUMAN); SetPlayerTeam(playerid,0); SetPlayerArmour(playerid,100); SetPlayerSkin(playerid,285); } stock ZombieTeam(playerid) { ResetPlayerWeapons(playerid); SetPlayerArmour(playerid,0); SetPlayerSkin(playerid,162); SendClientMessage(playerid,COLOR_ZOMBIE,"Eat some brains!"); GivePlayerWeapon(playerid,WEAPON1_ZOMBIE,9999); GivePlayerWeapon(playerid,WEAPON2_ZOMBIE,9999); GivePlayerWeapon(playerid,WEAPON3_ZOMBIE,9999); SetPlayerColor(playerid,COLOR_ZOMBIE); SetPlayerTeam(playerid,1); SetPlayerHealth(playerid,150); TogglePlayerControllable(playerid,1); } public OnGameModeInit() { AddPlayerClass(285,0.0,0.0,5.0,0.0,0,0,0,0,0,0); AddPlayerClass(162,0.0,0.0,5.0,0.0,0,0,0,0,0,0); SetGameModeText("ZombieMod b1"); SetWorldTime(0); SetNameTagDrawDistance(5); SetTeamCount(2); ShowNameTags(0); ShowPlayerMarkers(1); UsePlayerPedAnims(); AllowInteriorWeapons(1); DisableInteriorEnterExits(); Arena[ID] = 0; SetTimer("AnnounceWinner",360000,1); return 1; } public OnPlayerConnect(playerid) { SendClientMessage(playerid,COLOR_YELLOW,"Welcome to: ZombieMod b1!!"); SendClientMessage(playerid,COLOR_YELLOW,"Type /learn for some help."); SendClientMessage(playerid,COLOR_RED,"Creators: G0D4V1D & GhOsT."); PlayerCount ++; return 1; } public OnPlayerDisconnect(playerid) { PlayerCount --; return 1; } public OnPlayerSpawn(playerid) { if(PlayerTeam[playerid] == 0) { HumanTeam(playerid); SetPlayerTeam(playerid,0); } else if(PlayerTeam[playerid] == 1) { ZombieTeam(playerid); SetPlayerTeam(playerid,1); } switch(Arena[ID]) { case 0: { if(PlayerTeam[playerid] == 0) { SetPlayerPos(playerid,1300.0236,-790.1140,1084.0078); SetPlayerFacingAngle(playerid,0.3154); SetPlayerInterior(playerid,5); } if(PlayerTeam[playerid] == 1) { SetPlayerPos(playerid,1266.4395,-780.0988,1091.9063); SetPlayerFacingAngle(playerid,269.7846); SetPlayerInterior(playerid,5); } } case 1: { if(PlayerTeam[playerid] == 0) { SetPlayerPos(playerid,2220.3972,-1151.4685,1025.7969); SetPlayerFacingAngle(playerid,269.3734); SetPlayerInterior(playerid,15); } if(PlayerTeam[playerid] == 1) { SetPlayerPos(playerid,2193.5583,-1141.1141,1029.7969); SetPlayerFacingAngle(playerid,178.7957); SetPlayerInterior(playerid,15); } } case 2: { if(PlayerTeam[playerid] == 0) { SetPlayerPos(playerid,2346.9094,-1172.8066,1031.9766); SetPlayerFacingAngle(playerid,85.3327); SetPlayerInterior(playerid,5); } if(PlayerTeam[playerid] == 1) { SetPlayerPos(playerid,2349.6428,-1181.0731,1027.9766); SetPlayerFacingAngle(playerid,87.8066); SetPlayerInterior(playerid,5); } } case 3: { if(PlayerTeam[playerid] == 0) { SetPlayerPos(playerid,366.8517,215.5397,1008.3828); SetPlayerFacingAngle(playerid,178.3608); SetPlayerInterior(playerid,3); } if(PlayerTeam[playerid] == 1) { SetPlayerPos(playerid,348.3492,162.2359,1025.7891); SetPlayerFacingAngle(playerid,269.5417); SetPlayerInterior(playerid,3); } } } return 1; } public OnPlayerDeath(playerid) { if(PlayerTeam[playerid] == 0) { Arena[ZombiesKills] ++; } else if(PlayerTeam[playerid] == 1) { Arena[HumansKills] ++; } switch(Arena[ZombiesKills]) { case 5: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 5"); case 10: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 10"); case 15: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 15"); case 20: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 20"); case 25: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 25"); case 30: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 30"); case 35: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 35"); case 40: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 40"); case 45: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 45"); case 50: { SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 50"); AnnounceWinner(); } } switch(Arena[HumansKills]) { case 5: SendClientMessageToAll(COLOR_GREEN,"HUMANS TEAM'S SCORE: 5"); case 10: SendClientMessageToAll(COLOR_GREEN,"HUMANS TEAM'S SCORE: 10"); case 15: SendClientMessageToAll(COLOR_GREEN,"HUMANS TEAM'S SCORE: 15"); case 20: SendClientMessageToAll(COLOR_GREEN,"HUMANS TEAM'S SCORE: 20"); case 25: SendClientMessageToAll(COLOR_GREEN,"HUMANS TEAM'S SCORE: 25"); case 30: SendClientMessageToAll(COLOR_GREEN,"HUMANS TEAM'S SCORE: 30"); case 35: SendClientMessageToAll(COLOR_GREEN,"HUMANS TEAM'S SCORE: 35"); case 40: SendClientMessageToAll(COLOR_GREEN,"HUMANS TEAM'S SCORE: 40"); case 45: SendClientMessageToAll(COLOR_GREEN,"HUMANS TEAM'S SCORE: 45"); case 50: { SendClientMessageToAll(COLOR_GREEN,"HUMANS TEAM'S SCORE: 50"); AnnounceWinner(); } } return 1; } public OnPlayerRequestClass(playerid,classid) { SetPlayerPos(playerid,299.9177,2741.7598,42.9127); SetPlayerFacingAngle(playerid,198.9686); SetPlayerCameraPos(playerid,306.3498,2727.6697,37.0493); SetPlayerCameraLookAt(playerid,299.9177,2741.7598,42.9127); if(classid == 0) { PlayerTeam[playerid] = 0; SetPlayerTeam(playerid,0); } else if(classid == 1) { PlayerTeam[playerid] = 1; SetPlayerTeam(playerid,1); } return 1; } public AnnounceWinner() { if(Arena[ZombiesKills] > Arena[HumansKills]) { GameTextForAll("~r~ZOMBIES~w~ WON~y~ ]]",3000,5); format(Text,256,"Infected humans: %d | Died zombies: %d", Arena[ZombiesKills],Arena[HumansKills]); SendClientMessageToAll(COLOR_YELLOW,Text); } if(Arena[ZombiesKills] < Arena[HumansKills]) { GameTextForAll("~b~HUMANS~w~ WON~y~ ]]",3000,5); format(Text,256,"Died zombies: %d | Infected humans: %d", Arena[HumansKills],Arena[ZombiesKills]); SendClientMessageToAll(COLOR_YELLOW,Text); } if(Arena[ZombiesKills] == Arena[HumansKills]) { GameTextForAll("~y~ DRAW",3000,5); format(Text,256,"Both teams had %d deaths.", Arena[ZombiesKills]); SendClientMessageToAll(COLOR_YELLOW,Text); } Arena[ID] ++; SetTimer("ChangeRound",10000,0); SendClientMessageToAll(COLOR_RED,"Wait 10 seconds till next round starts!"); for(new i = 0; i < MAX_PLAYERS; i++) { SetPlayerCameraPos(i,-1438.0342,1751.5375,45.6543); SetPlayerCameraLookAt(i,-1736.0754,1132.5067,45.6543); SetPlayerInterior(i,0); } return 1; } public ChangeRound() { Arena[ZombiesKills] = 0; Arena[HumansKills] = 0; for(new i = 0; i < MAX_PLAYERS; i++) { SpawnPlayer(i); switch(Arena[ID]) { case 0: { SetPlayerInterior(i,5); } case 1: { SetPlayerInterior(i,15); } case 2: { SetPlayerInterior(i,5); } case 3: { SetPlayerInterior(i,3); Arena[ID] = 0; } } } return 1; } public OnPlayerUpdate(playerid) { new Float:NewHP; GetPlayerArmour(playerid,NewHP); if(NewHP < OldHP[playerid]) { new Skin = GetPlayerSkin(playerid); if(Skin == 285) { ZombieTeam(playerid); Arena[ZombiesKills] ++; switch(Arena[ZombiesKills]) { case 5: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 5"); case 10: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 10"); case 15: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 15"); case 20: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 20"); case 25: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 25"); case 30: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 30"); case 35: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 35"); case 40: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 40"); case 45: SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 45"); case 50: { SendClientMessageToAll(COLOR_GREEN,"ZOMBIES TEAM'S SCORE: 50"); AnnounceWinner(); } } } } OldHP[playerid] = NewHP; return 1; } public OnPlayerCommandText(playerid,cmdtext[]) { if(strcmp(cmdtext,"/learn",true)==0) { SendClientMessage(playerid,COLOR_YELLOW,"This is gamemod is based on Human VS Zombies."); SendClientMessage(playerid,COLOR_YELLOW,"Zombies should use knife to infect humans."); SendClientMessage(playerid,COLOR_YELLOW,"Humans should run from and kill the zombies."); SendClientMessage(playerid,COLOR_RED,"[WARNING] ZOMBIES HAVE 150 HP, NOT 100."); SendClientMessage(playerid,COLOR_GREEN,"Brought to you by G0D4V1D and GhOsT!"); } return 1; }