#include <a_samp> //============================================================================== #undef MAX_PLAYERS #define MAX_PLAYERS 50 //============================================================================== static gTeam[MAX_PLAYERS]; //===============================[Teams]======================================== #define TEAM_CT 1 #define TEAM_TT 2 //============================[Forwards]======================================== forward SendCounterMessage(color, string[]); forward SendTerrorMessage(color, string[]); forward SetPlayerSpawn(playerid); forward DMTimer(playerid); forward TextClear(playerid); //============================================================================== new TeamWarning[MAX_PLAYERS]; //==============================[Textdraws]===================================== new Text:scoretext; new Text:Time; new Text:teamtext; //==============================[Others]======================================== new ctscore; new ttscore; new DMTime; new realchat = 1; new dmtimer; new CTcount; new TTcount; //============================================================================== main() { } //============================================================================== public OnGameModeInit() { DMTime = 350; ctscore=0; ttscore=0; CTcount = 0; TTcount = 0; SendRconCommand("mapname Tuneles 2"); SendRconCommand("reloadfs admin"); //=================================[Objects]=========================== //===================================[Score]==================================== scoretext = TextDrawCreate(244, 428, " "); TextDrawFont(Text:scoretext, 1); TextDrawLetterSize(Text:scoretext, 0.599999,2.100000); TextDrawColor(Text:scoretext, 0xffffffff); TextDrawBackgroundColor(Text:scoretext, 0x000000ff); TextDrawSetOutline(Text:scoretext, 1); TextDrawSetProportional(Text:scoretext, 2); TextDrawSetShadow(Text:scoretext, 1); //=================================[Time]======================================= Time = TextDrawCreate(555.0,25.0, " "); TextDrawSetShadow(Text:Time, 0); TextDrawSetOutline(Text:Time, 1); TextDrawLetterSize(Text:Time,0.5,1.5); //=========================[Team Balance Textdraw]============================== teamtext = TextDrawCreate(25, 145, "This team is full, please choose another one!"); TextDrawAlignment(teamtext, 1); TextDrawFont(teamtext, 1); TextDrawLetterSize(teamtext, 0.39, 2.3); TextDrawColor(teamtext, 0xFFFFFFFF); TextDrawSetShadow(teamtext, 1); TextDrawSetProportional(teamtext, 1); TextDrawSetOutline(teamtext, 1); TextDrawUseBox(teamtext, 1); TextDrawTextSize(teamtext, 200, 210); TextDrawBoxColor(teamtext, 0x000000FF); //=============================[Timers]========================================= dmtimer = SetTimer("DMTimer", 888,1); return 1; } //============================================================================== public OnPlayerRequestClass(playerid, classid) { SetPlayerClass(playerid, classid); SetPlayerInterior(playerid, 11); SetPlayerPos(playerid, 508.8771,-87.8426,998.9683); SetPlayerFacingAngle(playerid, 1); SetPlayerCameraPos(playerid, 508.8771,-83.6699,998.9609); SetPlayerCameraLookAt(playerid, 508.8771,-87.8426,998.9683); switch (classid) { case 0..3: GameTextForPlayer(playerid, "~r~Bandas", 2000, 3); case 4..7: GameTextForPlayer(playerid, "~b~Policias", 2000, 3); } return 1; } //============================================================================== SetPlayerClass(playerid, classid) { switch(classid) { case 0..3: { gTeam[playerid] = TEAM_TT; SetPlayerTeam(playerid, TEAM_TT); } case 4..7: { gTeam[playerid] = TEAM_CT; SetPlayerTeam(playerid, TEAM_CT); } } } //============================================================================== public OnPlayerRequestSpawn(playerid) { if(gTeam[playerid] == TEAM_CT && CTcount > TTcount) { TextDrawShowForPlayer(playerid, teamtext); SetTimerEx("TextClear", 3000, false, "i", playerid); return 0; } else if(gTeam[playerid] == TEAM_TT && TTcount > CTcount) { TextDrawShowForPlayer(playerid, teamtext); SetTimerEx("TextClear", 3000, false, "i", playerid); return 0; } return 1; } //============================================================================== public OnPlayerConnect(playerid) { TeamWarning[playerid] = 0; } //============================================================================== public OnPlayerDisconnect(playerid, reason) { if(gTeam[playerid] == TEAM_CT) CTcount --; else if(gTeam[playerid] == TEAM_TT) TTcount --; return 1; } //============================================================================== public OnPlayerSpawn(playerid) { SetPlayerSpawn(playerid); TextDrawHideForPlayer(playerid, teamtext); return 1; } //============================================================================== public OnPlayerDeath(playerid, killerid, reason) { new string[128]; if(gTeam[killerid] == TEAM_CT) ctscore++; if(gTeam[killerid] == TEAM_TT ) ttscore++; if(gTeam[killerid] == gTeam[playerid]) { TeamWarning[killerid] ++; SendClientMessage(killerid, 0xa9c4e4ff, "Don't team kill or you will get kicked."); if(TeamWarning[killerid] >= 3) { format(string, sizeof(string), "AdmCmd: %s was kicked, reason: Excessive Team Killing.", PlayerName(killerid)); SendClientMessageToAll(0xFF6347AA, string); Kick(killerid); } } return 1; } //============================================================================== public OnPlayerText(playerid, text[]) { new string[128]; if(text[0] == '!') { format(string, sizeof(string), "[TEAM] %s [%d]: %s.", PlayerName(playerid),playerid, text[1]); if(gTeam[playerid] == TEAM_CT) SendCounterMessage(0xF97804FF, string); else if(gTeam[playerid] == TEAM_TT) SendTerrorMessage(0xF97804FF, string); return 0; } if(realchat) { format(string, sizeof(string), "(%d): %s.", playerid, text[0]); SendPlayerMessageToAll(playerid, string); return 0; } return 1; } //============================================================================== 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; } //============================================================================== public OnPlayerCommandText(playerid, cmdtext[]) { PlayerPlaySound(playerid, 1186, 0.0,0.0,0.0); new cmd[128]; new idx; cmd = strtok(cmdtext, idx); if(strcmp(cmd, "/nextmap", true) == 0) { if(IsPlayerConnected(playerid)) { for(new i = 0; i < MAX_PLAYERS; i++) { TogglePlayerControllable(i, 0); } SendRconCommand("changemode cs2"); } return 1; } return 0; } //============================================================================== stock right(source[], len) { new retval[MAX_STRING], srclen; srclen = strlen(source); strmid(retval, source, srclen - len, srclen, MAX_STRING); return retval; } stock strvalEx( const string[] ) { if( strlen( string ) >= 50 ) return 0; return strval(string); } //============================================================================== public SetPlayerSpawn(playerid) { if(IsPlayerConnected(playerid)) { if(gTeam[playerid] == TEAM_CT) { SetPlayerPos(playerid, 2581.2603,-1916.8545,8.2730); SetPlayerFacingAngle(playerid, 360.0); SetPlayerInterior(playerid, 0); SetPlayerColor(playerid,0x2641FEAA); TogglePlayerControllable(playerid, 1); SetPlayerTeam(playerid, TEAM_CT); CTcount ++; return 1; } if(gTeam[playerid] == TEAM_TT) { SetPlayerPos(playerid, 2581.6724,-1773.2089,6.0465); SetPlayerFacingAngle(playerid, 360.0); SetPlayerInterior(playerid, 0); SetPlayerColor(playerid,0xE60000FF); TogglePlayerControllable(playerid, 1); SetPlayerTeam(playerid, TEAM_TT); TTcount ++; return 1; } } return 1; } //============================================================================== public DMTimer() { DMTime --; new tmp[256]; format(tmp, sizeof tmp, "%s", TimeConvert(DMTime)); TextDrawSetString(Text:Time, tmp); TextDrawShowForAll(Text:Time); format(tmp, sizeof(tmp), "~b~Policias: ~w~%d ~r~Bandas: ~w~%d", ctscore, ttscore); TextDrawSetString(Text:scoretext, tmp); TextDrawShowForAll(Text:scoretext); if (DMTime == 0) { if(ctscore > ttscore) { GameTextForAll("~w~ The round is over, ~b~Policias ~w~win.", 3000, 5); } else if(ttscore > ctscore) { GameTextForAll("~w~ The round is over, ~r~Bandas ~w~win.", 3000, 5); } else if(ctscore == ttscore) { GameTextForAll("~y~ The round is over, ~y~Draw.", 3000, 5); } SendRconCommand("changemode cs2"); KillTimer(dmtimer); GameTextForAll("~w~Server:~r~ Loading Next map",5000,4); } return 1; } //============================================================================== TimeConvert(seconds) { new tmp[256]; new minutes = floatround(seconds/60); seconds -= minutes*60; format(tmp, sizeof(tmp), "%d:%02d", minutes, seconds); return tmp; } //============================================================================== stock PlayerName(playerid) { new name[255]; GetPlayerName(playerid, name, 255); return name; } //============================================================================== public SendCounterMessage(color, string[]) { for(new i = 0; i < MAX_PLAYERS; i++) { if(IsPlayerConnected(i)) { if(gTeam[i] == TEAM_CT) { SendClientMessage(i, color, string); } } } } //============================================================================== public SendTerrorMessage(color, string[]) { for(new i = 0; i < MAX_PLAYERS; i++) { if(IsPlayerConnected(i)) { if(gTeam[i] == TEAM_TT) { SendClientMessage(i, color, string); } } } } //============================================================================== public TextClear(playerid) { TextDrawHideForPlayer(playerid, teamtext); return 1; }
Deberнas aсadir el cуdigo en el timer: "DMTimer()", dentro del condicional "if (DMTime == 0)".
Para que les suene a todos deberнas usar un bucle o la funciуn "foreach". |
aqui dejo un gm que uso expliquenme donde puedo poner el sonido para cuando acaba un ronda los jugadores puedan oirla (todos los jugadores la oigan) |
public DMTimer()
{
DMTime --;
new tmp[256];
format(tmp, sizeof tmp, "%s", TimeConvert(DMTime));
TextDrawSetString(Text:Time, tmp);
TextDrawShowForAll(Text:Time);
format(tmp, sizeof(tmp), "~b~Policias: ~w~%d ~r~Bandas: ~w~%d", ctscore, ttscore);
TextDrawSetString(Text:scoretext, tmp);
TextDrawShowForAll(Text:scoretext);
if (DMTime == 0)
{
if(ctscore > ttscore) { GameTextForAll("~w~ The round is over, ~b~Policias ~w~win.", 3000, 5); }
else if(ttscore > ctscore) { GameTextForAll("~w~ The round is over, ~r~Bandas ~w~win.", 3000, 5); }
else if(ctscore == ttscore) { GameTextForAll("~y~ The round is over, ~y~Draw.", 3000, 5); }
SendRconCommand("changemode cs2");
for(new a=0; a<MAX_PLAYERS;a++)
{
if(IsPlayerConnected(a))
PlayerPlaySound(a, soundid, 0.0, 0.0, 0.0);
}
KillTimer(dmtimer);
GameTextForAll("~w~Server:~r~ Loading Next map",5000,4);
}
return 1;
}