rendered paste body#include <a_samp>
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
#define REF 0
#define TEAM1 1
#define TEAM2 2
#define PLAYERS GetMaxPlayers()
#define COLOR_RED 0xFF0000AA
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_BLUE 0x0000BBAA
#define COLOR_GREY 0xAFAFAFAA
new gTeam[MAX_PLAYERS],
weap2[MAX_PLAYERS]; //arma secondaria del player:
// 0:MP5
// 1:M4
// 2:AK47
// 3:SHOTGUN
new isselectingweap[MAX_PLAYERS]; // il player è nella schermata di selezione arma?
new Text:weap2select,
Text:yellowscore,
Text:bluescore,
Text:timer,
Text:spectselect;
new score[2];
new team1name[30] = "giallo";
new team2name[30] = "blu";
new rounds[2]; //round vinti
new time = 480;
new timer_textupdate;
new isstarted;
new randblocks[3];
new spec[MAX_PLAYERS];
new isspectating[MAX_PLAYERS];
new Float:spawns[10][5][3] = {
{
{2619.5771,-1474.7565,16.2734},
{2612.7605,-1472.5052,16.3128},
{2605.4270,-1474.8188,16.2676},
{2598.6855,-1473.0249,16.2825},
{2589.2410,-1472.0790,16.3066}
},
{
{2552.6169,-1732.3458,5.8184},
{2564.0471,-1737.3485,1.2146},
{2599.8655,-1731.5680,1.2040},
{2613.7952,-1734.3782,5.8074},
{2584.8518,-1757.5911,1.2477}
},
{
{2555.6262,-2199.4880,-0.6453},
{2564.4136,-2201.2495,-0.6538},
{2574.6997,-2201.4592,-0.6672},
{2591.9688,-2203.0779,-0.6543},
{2603.9907,-2203.9224,-0.6480}
},
{
{2253.4529,-1859.3894,-0.5637},
{2253.4060,-1853.0880,-0.5644},
{2250.1558,-1843.6338,-0.5610},
{2261.9329,-1845.0004,-0.5690},
{2268.2883,-1857.3252,-0.5691}
},
{
{2054.1370,-1933.2242,7.5542},
{2051.5332,-1938.2440,7.5586},
{2049.3071,-1943.9692,7.5547},
{2058.7205,-1950.7396,7.5610},
{2063.4246,-1948.6650,7.5519}
},
{
{2255.9863,-2155.8057,5.6290},
{2258.9907,-2152.1218,5.6620},
{2263.8813,-2146.4424,5.6847},
{2271.6189,-2154.6968,5.6311},
{2261.6638,-2162.4697,5.6308}
},
{
{1724.5719,-1794.4575,3.5657},
{1728.5861,-1789.2808,3.5387},
{1730.2488,-1784.5197,3.5609},
{1737.5974,-1789.2020,3.5640},
{1737.3716,-1794.6152,3.5575}
},
{
{1396.3591,-1719.6805,7.4670},
{1397.1129,-1716.0316,7.4617},
{1401.1434,-1711.9742,7.1694},
{1410.3632,-1712.8706,6.4707},
{1412.1736,-1718.8323,6.4284}
},
{
{1389.1011,-1511.5945,8.2371},
{1385.1399,-1512.1974,8.2443},
{1381.3280,-1512.5894,8.2429},
{1381.1021,-1521.5190,8.2353},
{1384.2041,-1522.3859,8.2348}
},
{
{1407.3745,-1309.0442,8.5723},
{1410.8390,-1308.1506,9.0087},
{1414.6289,-1308.3738,8.8583},
{1413.7987,-1313.7603,9.1225},
{1407.8077,-1318.2426,8.1603}
}
};
main()
{
print("\n----------------------------------");
print(" Underground Duels by Atti93 and Chiarboss");
print("----------------------------------\n");
}
public OnGameModeInit()
{
new str[255];
SetGameModeText("Underground Duels");
UsePlayerPedAnims();
ShowNameTags(1);
ShowPlayerMarkers(1);
SetWorldTime(2);
SetWeather(7);
AddPlayerClass(264, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
AddPlayerClass(285, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
AddPlayerClass(287, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
weap2select = TextDrawCreate(40, 130, "Seleziona l'arma con SPAZIO (SALTO), ~n~conferma con MOUSE SX (FUOCO)");
TextDrawColor(weap2select, 0xFFFFFFDD);
TextDrawFont(weap2select, 3);
spectselect = TextDrawCreate(40, 130, "Cambia player da spectare SPAZIO (SALTO), ~n~spawna vicino a lui con MOUSE SX (FUOCO), ~n~torna alla class selection digitando /selclass");
TextDrawColor(spectselect, 0xFFFFFFDD);
TextDrawFont(spectselect, 3);
format(str, 255,"Team %s: %d [%d rounds]", team1name, score[0], rounds[0]);
yellowscore = TextDrawCreate(200, 380, str);
TextDrawColor(yellowscore, COLOR_YELLOW);
TextDrawFont(yellowscore, 3);
TextDrawUseBox(yellowscore,1);
TextDrawTextSize(yellowscore,540.000000,400.000000);
TextDrawSetShadow(yellowscore, 1);
format(str, 255,"Team %s: %d [%d rounds]", team2name, score[1], rounds[1]);
bluescore = TextDrawCreate(200, 394, str);
TextDrawColor(bluescore, COLOR_BLUE);
TextDrawFont(bluescore, 3);
TextDrawUseBox(bluescore,1);
TextDrawTextSize(bluescore,540.000000,420.000000);
TextDrawSetShadow(bluescore, 1);
format(str, 255,"TIMER: %d", TimeConvert(time));
timer = TextDrawCreate(200, 408, str);
TextDrawUseBox(timer,1);
TextDrawTextSize(timer,540.000000,440.000000);
TextDrawFont(timer, 3);
timer_textupdate = SetTimer("TextUpdate", 1000, 1);
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;
}
public OnGameModeExit()
{
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
TogglePlayerSpectating(playerid, 0);
isselectingweap[playerid] = 1;
SetPlayerPos(playerid, 1489.0846,-1719.7332,8.2402);
SetPlayerFacingAngle(playerid, 167.7928);
SetPlayerCameraPos(playerid, 1486.6761,-1724.4917,6.7431);
SetPlayerCameraLookAt(playerid, 1489.0846,-1719.7332,8.2402);
switch(classid)
{
case 0: // TEAM REF
{
gTeam[playerid] = REF;
new str[255];
format(str, 255, "~n~~n~~n~~r~ TEAM REF");
GameTextForPlayer(playerid, str, 3000, 3);
SetPlayerColor(playerid, COLOR_RED);
}
case 1: // TEAM 1
{
gTeam[playerid] = TEAM1;
new str[255];
format(str, 255, "~n~~n~~n~~y~ TEAM %s", team1name);
GameTextForPlayer(playerid, str, 3000, 3);
SetPlayerColor(playerid, COLOR_YELLOW);
}
case 2: // TEAM 2
{
gTeam[playerid] = TEAM2;
new str[255];
format(str, 255, "~n~~n~~n~~b~ TEAM %s", team2name);
GameTextForPlayer(playerid, str, 3000, 3);
SetPlayerColor(playerid, COLOR_BLUE);
}
}
return 1;
}
public OnPlayerRequestSpawn(playerid)
{
return 1;
}
public OnPlayerConnect(playerid)
{
SendClientMessage(playerid, COLOR_GREY, " ");
SendClientMessage(playerid, COLOR_GREY, " ");
SendClientMessage(playerid, COLOR_GREY, " ");
SendClientMessage(playerid, COLOR_GREY, "---------------------===============================---------------------");
SendClientMessage(playerid, COLOR_YELLOW, " .: Underground Duels v0.1 perenne by Atti93 e Chiarboss :.");
SendClientMessage(playerid, COLOR_YELLOW, " .: Digita /help per una lista di comandi :.");
SendClientMessage(playerid, COLOR_GREY, "---------------------===============================---------------------");
SendClientMessage(playerid, COLOR_GREY, " ");
SendClientMessage(playerid, COLOR_GREY, " ");
SendClientMessage(playerid, COLOR_GREY, " ");
TextDrawShowForPlayer(playerid, yellowscore);
TextDrawShowForPlayer(playerid, bluescore);
TextDrawShowForPlayer(playerid, timer);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
SetPlayerVirtualWorld(playerid, 0);
return 1;
}
public OnPlayerSpawn(playerid)
{
new rand=random(5);
if(isselectingweap[playerid] == 1)
{
SetPlayerVirtualWorld(playerid, playerid+1);
if(gTeam[playerid] == REF)
{
isselectingweap[playerid] = 0;
SpawnPlayer(playerid);
}
else
{
TogglePlayerControllable(playerid, 0);
SetPlayerPos(playerid, 1489.0846,-1719.7332,8.2402);
SetPlayerFacingAngle(playerid, 167.7928);
SetPlayerCameraPos(playerid, 1486.6761,-1724.4917,6.7431);
SetPlayerCameraLookAt(playerid, 1489.0846,-1719.7332,8.2402);
TextDrawShowForPlayer(playerid, weap2select);
}
}
else
{
//TUTTO IL RESTO, COMPRESO IL TUO SISTEMA DI RANDOM SPAWNS
TextDrawHideForPlayer(playerid, weap2select);
SetPlayerVirtualWorld(playerid, 0);
if(gTeam[playerid] != REF)WeaponArsenal(playerid);
if(gTeam[playerid] == REF)
{
if(isspectating[playerid] != 255)
{
TogglePlayerSpectating(playerid, 1);
spec[playerid] = -1;
isspectating[playerid] = 1;
TextDrawShowForPlayer(playerid, spectselect);
SpectNextPlayer(playerid);
}
}
}
if(isstarted)
{
SetPlayerPos(playerid, spawns[randblocks[gTeam[playerid]]][rand][0], spawns[randblocks[gTeam[playerid]]][rand][1], spawns[randblocks[gTeam[playerid]]][rand][2]);
SetCameraBehindPlayer(playerid);
}
return 1;
}
stock SpectNextPlayer(playerid)
{
spec[playerid]++;
if(spec[playerid] == GetMaxPlayers()+1)
{
spec[playerid] = -1;
return SpectNextPlayer(playerid);
}
if(IsPlayerConnected(spec[playerid]) && gTeam[spec[playerid]] != REF)
{
PlayerSpectatePlayer(playerid, spec[playerid]);
new str[255], pname[MAX_PLAYER_NAME];
GetPlayerName(spec[playerid], pname, MAX_PLAYER_NAME);
format(str, 255, "Spectating: %s", pname);
SendClientMessage(playerid, COLOR_RED, str);
}
else if (spec[playerid] != GetMaxPlayers() - 2) return SpectNextPlayer(playerid);
return 0;
}
stock WeaponArsenal(playerid){
GivePlayerWeapon(playerid, WEAPON_DEAGLE, 999999);
switch(weap2[playerid]){
case 0:GivePlayerWeapon(playerid, WEAPON_MP5, 999999);
case 1:GivePlayerWeapon(playerid, WEAPON_M4, 999999);
case 2:GivePlayerWeapon(playerid, WEAPON_AK47, 999999);
case 3:GivePlayerWeapon(playerid, WEAPON_SHOTGUN, 999999);}
}
public OnPlayerDeath(playerid, killerid, reason)
{
SendDeathMessage(killerid, playerid, reason);
if(isstarted)
{
if(killerid!=INVALID_PLAYER_ID)
{
if(gTeam[killerid] != REF && gTeam[playerid]!= REF && gTeam[killerid] != gTeam[playerid])
{
SetPlayerScore(killerid, GetPlayerScore(killerid)+1);
if(gTeam[killerid]==TEAM1) score[0]++;
else if(gTeam[killerid]==TEAM2) score[1]++;
new str[255];
format(str, 255, "UD: %s %d[%d] vs %s %d[%d]", team1name, score[0], rounds[0], team2name, score[1], rounds[1]);
SetGameModeText(str);
}
else if(gTeam[playerid] == REF) TextDrawHideForPlayer(playerid, spectselect);
}
}
return 1;
}
public OnVehicleSpawn(vehicleid)
{
return 1;
}
public OnVehicleDeath(vehicleid, killerid)
{
return 1;
}
public OnPlayerText(playerid, text[])
{
return 1;
}
public OnPlayerPrivmsg(playerid, recieverid, text[])
{
return 1;
}
stock RandomControl()
{
new Float:arrspawn[3][3];
for(new i=0,h=0,f=0,g=0;i<5,g<5,h<3,f<3;i++,h++,f++,g++)randblocks[h]=random(sizeof(spawns)),arrspawn[h][f]+=spawns[randblocks[h]][i][f];
if(GetDistanceBetweenPoints(arrspawn[1][0],arrspawn[2][0],arrspawn[1][1],arrspawn[2][1],arrspawn[1][2],arrspawn[2][2]) <= 148.50)return RandomControl();
return 1;
}
stock GetDistanceBetweenPoints(Float:x1,Float:x2,Float:y1,Float:y2,Float:z1,Float:z2){new Float:dis= floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));return floatround(dis);}
//----
dcmd_help(playerid, params[])
{
#pragma unused params
SendClientMessage(playerid, 0xAA3333AA, "Ecco una lista dei comandi utilizzabili:");
if(IsPlayerAdmin(playerid))
{
SendClientMessage(playerid, 0xAA3333AA, "/score [TEAM] [SCORE]; [TEAM] o=orange, b=blue; [SCORE] punteggio.");
SendClientMessage(playerid, 0xAA3333AA, "/rounds [TEAM] [ROUNDS]; [TEAM] o=orange, b=blue; [ROUNDS] rounds vinti (max 2).");
SendClientMessage(playerid, 0xAA3333AA, "/timer [TIME]; [TIME] tempo in secondi restante alla fine del round.");
SendClientMessage(playerid, 0xAA3333AA, "/start; fa partire la cw.");
SendClientMessage(playerid, 0xAA3333AA, "/stop; sospende la cw.");
SendClientMessage(playerid, 0xAA3333AA, "/spawnall; rispawna tutti i players.");
}
if(gTeam[playerid] != REF)
{
SendClientMessage(playerid, 0xAA3333AA, "/name [NAME]; [NAME] nome del tuo team.");
}
return 1;
}
//----
dcmd_start(playerid, params[])
{
#pragma unused params
if(IsPlayerAdmin(playerid))
{
RandomControl();
isstarted = 1;
GameTextForAll("CW avviata!", 3500, 4);
for(new i=0;i<GetMaxPlayers()+1;i++)SpawnPlayer(i);
}
return 1;
}
//----
dcmd_selclass(playerid, params[])
{
#pragma unused params
if(isspectating[playerid] != 255)
{
isspectating[playerid] = 255;
TogglePlayerSpectating(playerid, 0);
ForceClassSelection(playerid);
TextDrawHideForPlayer(playerid, spectselect);
SetPlayerHealth(playerid, 0);
}
return 1;
}
//----
dcmd_spawnall(playerid, params[])
{
#pragma unused params
if(IsPlayerAdmin(playerid))
{
SendClientMessageToAll(COLOR_RED, "L'admin rispawna tutti i players!");
for(new i; i<MAX_PLAYERS; i++) SpawnPlayer(i);
}
return 1;
}
//----
dcmd_stop(playerid, params[])
{
#pragma unused params
if(IsPlayerAdmin(playerid))
{
isstarted = 0;
GameTextForAll("CW sospesa!", 3000, 4);
}
return 1;
}
//----
dcmd_score(playerid, params[])
{
if(IsPlayerAdmin(playerid))
{
new str[255],
ob[30],
cmdscore;
if(!sscanf(params, "sd", ob, cmdscore))
{
SendClientMessage(playerid, 0xAA3333AA, "USO: /score [TEAM] [SCORE]; [TEAM] o=orange, b=blue; [SCORE] punteggio.");
}
else
{
if(cmdscore > 0)
{
if(strcmp(ob, "o", false, 1) == 0)
{
score[0] = cmdscore;
format(str, 255, "L'admin setta il punteggio del team %s a %d.", team1name, cmdscore);
SendClientMessageToAll(0xAA3333AA, str);
}
else if(strcmp(ob, "b", false, 1) == 0)
{
score[1] = cmdscore;
format(str, 255, "L'admin setta il punteggio del team %s a %d.", team2name, cmdscore);
SendClientMessageToAll(0xAA3333AA, str);
}
else
{
SendClientMessage(playerid, 0xAA3333AA, "[TEAM] non valido.");
}
}
else
{
SendClientMessage(playerid, 0xAA3333AA, "[SCORE] non valido.");
}
}
}
return 1;
}
//----
dcmd_rounds(playerid, params[])
{
if(IsPlayerAdmin(playerid))
{
new str[255],
ob[30],
cmdrounds;
if(!sscanf(params, "sd", ob, cmdrounds))
{
SendClientMessage(playerid, 0xAA3333AA, "USO: /score [TEAM] [SCORE]; [TEAM] o=orange, b=blue; [ROUNDS] rounds vinti (max 2).");
}
else
{
if(cmdrounds > 0 || cmdrounds < 2)
{
if(strcmp(ob, "o", false, 1) == 0)
{
rounds[0] = cmdrounds;
format(str, 255, "L'admin setta il numero di rounds vinti dal team %s a %d.", team1name, cmdrounds);
SendClientMessageToAll(0xAA3333AA, str);
}
else if(strcmp(ob, "b", false, 1) == 0)
{
rounds[1] = cmdrounds;
format(str, 255, "L'admin setta il numero di rounds vinti dal team %s a %d.", team2name, cmdrounds);
SendClientMessageToAll(0xAA3333AA, str);
}
else
{
SendClientMessage(playerid, 0xAA3333AA, "[TEAM] non valido.");
}
}
else
{
SendClientMessage(playerid, 0xAA3333AA, "[ROUNDS] non validi.");
}
}
}
return 1;
}
//----
dcmd_timer(playerid, params[])
{
if(IsPlayerAdmin(playerid))
{
new str[255],
cmdtime;
if(!sscanf(params, "d", cmdtime))
{
SendClientMessage(playerid, 0xAA3333AA, "USO: /timer [TIME]; [TIME] tempo restante alla fine del round.");
}
else
{
if(cmdtime <= 0)
{
SendClientMessage(playerid, 0xAA3333AA, "[TIME] non valido.");
}
else
{
time = cmdtime;
format(str, 255, "L'admin setta il tempo restante alla fine del round a %d secondi.", cmdtime);
SendClientMessageToAll(0xAA3333AA, str);
}
}
}
return 1;
}
//----
dcmd_name(playerid, params[])
{
if(gTeam[playerid] == REF)
{
SendClientMessage(playerid, 0xAA3333AA, "Il tuo team non può selezionare un nome.");
}
else
{
new str[255],
cmdname[255];
if(!sscanf(params, "s", cmdname))
{
SendClientMessage(playerid, 0xAA3333AA, "USO: /name [NAME]; [NAME] nome del team.");
}
else
{
if(strlen(cmdname) > 29)
{
SendClientMessage(playerid, 0xAA3333AA, "[NAME] non valido.");
}
else
{
switch(gTeam[playerid])
{
case TEAM1:
{
format(team1name, sizeof(team1name), cmdname);
format(str, 255, "Nome del team giallo settato a %s", cmdname);
SendClientMessageToAll(COLOR_YELLOW, str);
}
case TEAM2:
{
format(team2name, sizeof(team2name), cmdname);
format(str, 255, "Nome del team blu settato a %s", cmdname);
SendClientMessageToAll(COLOR_BLUE, str);
}
}
}
}
}
return 1;
}
//----
public OnPlayerCommandText(playerid, cmdtext[])
{
dcmd(help, 4, cmdtext);
dcmd(start, 5, cmdtext);
dcmd(selclass, 8, cmdtext);
dcmd(stop, 4, cmdtext);
dcmd(score, 5, cmdtext);
dcmd(rounds, 6, cmdtext);
dcmd(timer, 5, cmdtext);
dcmd(name, 4, cmdtext);
dcmd(spawnall, 8, cmdtext);
return 0;
}
public OnPlayerInfoChange(playerid)
{
return 1;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
return 1;
}
IsKeyJustDown(key, newkeys, oldkeys)
{
if((newkeys & key) && !(oldkeys & key)) return 1;
return 0;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(isselectingweap[playerid] == 1 && gTeam[playerid]!= REF)
{
if(IsKeyJustDown(KEY_JUMP,newkeys,oldkeys))
{
if(weap2[playerid] == 0)
{
weap2[playerid] = 3;
}
else
{
weap2[playerid]--;
}
switch(gTeam[playerid])
{
// nuovo gametext
case TEAM1:
{
switch(weap2[playerid])
{
case 0:
{
new str[255];
format(str, 255, "~n~~n~~n~~y~ TEAM %s ~n~~g~ ARMI: ~n~ DESERT EAGLE - MP5", team1name);
GameTextForPlayer(playerid, str, 3000, 3);
}
case 1:
{
new str[255];
format(str, 255, "~n~~n~~n~~y~ TEAM %s ~n~~g~ ARMI: ~n~ DESERT EAGLE - M4", team1name);
GameTextForPlayer(playerid, str, 3000, 3);
}
case 2:
{
new str[255];
format(str, 255, "~n~~n~~n~~y~ TEAM %s ~n~~g~ ARMI: ~n~ DESERT EAGLE - AK47", team1name);
GameTextForPlayer(playerid, str, 3000, 3);
}
case 3:
{
new str[255];
format(str, 255, "~n~~n~~n~~y~ TEAM %s ~n~~g~ ARMI: ~n~ DESERT EAGLE - SHOTGUN", team1name);
GameTextForPlayer(playerid, str, 3000, 3);
}
}
}
case TEAM2:
{
switch(weap2[playerid])
{
case 0:
{
new str[255];
format(str, 255, "~n~~n~~n~~b~ TEAM %s ~n~~g~ ARMI: ~n~ DESERT EAGLE - MP5", team2name);
GameTextForPlayer(playerid, str, 3000, 3);
}
case 1:
{
new str[255];
format(str, 255, "~n~~n~~n~~b~ TEAM %s ~n~~g~ ARMI: ~n~ DESERT EAGLE - M4", team2name);
GameTextForPlayer(playerid, str, 3000, 3);
}
case 2:
{
new str[255];
format(str, 255, "~n~~n~~n~~b~ TEAM %s ~n~~g~ ARMI: ~n~ DESERT EAGLE - AK47", team2name);
GameTextForPlayer(playerid, str, 3000, 3);
}
case 3:
{
new str[255];
format(str, 255, "~n~~n~~n~~b~ TEAM %s ~n~~g~ ARMI: ~n~ DESERT EAGLE - SHOTGUN", team2name);
GameTextForPlayer(playerid, str, 3000, 3);
}
}
}
}
}
if(IsKeyJustDown(KEY_FIRE,newkeys,oldkeys))
{
isselectingweap[playerid] = 0;
SpawnPlayer(playerid);
}
}
else if(gTeam[playerid] == REF && isspectating[playerid] == 1)
{
if(IsKeyJustDown(KEY_JUMP,newkeys,oldkeys))
{
SpectNextPlayer(playerid);
}
else if(IsKeyJustDown(KEY_FIRE,newkeys,oldkeys))
{
isspectating[playerid] = 255;
TogglePlayerSpectating(playerid, 0);
TextDrawHideForPlayer(playerid, spectselect);
new Float:x, Float:y, Float:z;
GetPlayerPos(spec[playerid], x, y, z);
SetPlayerPos(playerid, x+2, y+2, z+1);
}
}
}
public OnPlayerEnterCheckpoint(playerid)
{
return 1;
}
public OnPlayerLeaveCheckpoint(playerid)
{
return 1;
}
public OnPlayerEnterRaceCheckpoint(playerid)
{
return 1;
}
public OnPlayerLeaveRaceCheckpoint(playerid)
{
return 1;
}
public OnRconCommand(cmd[])
{
return 1;
}
public OnObjectMoved(objectid)
{
return 1;
}
public OnPlayerObjectMoved(playerid, objectid)
{
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
return 1;
}
public OnPlayerSelectedMenuRow(playerid, row)
{
return 1;
}
public OnPlayerExitedMenu(playerid)
{
return 1;
}
forward FineRound(winner);
public FineRound(winner) // si lavora con i TEAM definiti, per non incasinare tutto con numeri incomprensibili
{
new str[255];
if(winner == TEAM1)
{
format(str, 255, "Vince il round la squadra %s!", team1name);
SendClientMessageToAll(COLOR_RED, " ");
SendClientMessageToAll(COLOR_RED, " ");
SendClientMessageToAll(COLOR_YELLOW, str);
SendClientMessageToAll(COLOR_RED, " ");
SendClientMessageToAll(COLOR_RED, " ");
format(str, 255, "~r~ROUND TERMINATO ~n~~y~BEST KILLER: %s", GetBestKillerName());
GameTextForAll(str, 5000, 4);
SetTimer("NewRound", 5000, 0);
rounds[0]++;
if(rounds[0] == 3)
{
SetTimerEx("FineGmode", 3000, 0, "d", TEAM1);
}
time=480;
}
else if(winner == TEAM2)
{
format(str, 255, "Vince il round la squadra %s!", team2name);
SendClientMessageToAll(COLOR_RED, " ");
SendClientMessageToAll(COLOR_RED, " ");
SendClientMessageToAll(COLOR_BLUE, str);
SendClientMessageToAll(COLOR_RED, " ");
SendClientMessageToAll(COLOR_RED, " ");
format(str, 255, "~r~ROUND TERMINATO ~n~~b~BEST KILLER: %s", GetBestKillerName());
GameTextForAll(str, 5000, 4);
SetTimer("NewRound", 5000, 0);
rounds[1]++;
if(rounds[1] == 3)
{
SetTimerEx("FineGmode", 3000, 0, "d", TEAM2);
}
time=480;
}
return 1;
}
stock GetBestKillerName()
{
new bkillid;
new tmpscore;
for(new i; i<PLAYERS; i++) if(GetPlayerScore(i) >= tmpscore) tmpscore = GetPlayerScore(i), bkillid = i;
new pname[MAX_PLAYER_NAME];
GetPlayerName(bkillid, pname, MAX_PLAYER_NAME);
return pname;
}
forward NewRound();
public NewRound()
{
RandomControl();
for(new i; i<PLAYERS; i++) TogglePlayerControllable(i, 1), SpawnPlayer(i), SetPlayerHealth(i,100), SetPlayerScore(i, 0); //da aggiornare col sistema degli spawn
timer_textupdate = SetTimer("TextUpdate", 1000, 1);
return 1;
}
forward TextUpdate();
public TextUpdate()
{
new str[255];
format(str, 255, "Team %s: %d [%d rounds]", team1name, score[0], rounds[0]);
TextDrawSetString(yellowscore, str);
format(str, 255, "Team %s: %d [%d rounds]", team2name, score[1], rounds[1]);
TextDrawSetString(bluescore, str);
format(str, 255, "TIMER: %d", time);
TextDrawSetString(timer, str);
if(isstarted)
{
time--;
if(time <= 0)
{
if(score[0]>score[1])
{
SetTimerEx("FineRound", 3000, 0, "d", TEAM1);
for(new i; i<PLAYERS; i++)
{
TogglePlayerControllable(i, 0);
//FAGLI QUELLO CHE CAZZO VUOI, MA POI UNFREEZALI! (RICORDA UN BEL GAMETEXT DI NUOVO ROUND)
}
score[0]=0;
score[1]=0;
KillTimer(timer_textupdate);
}
else if(score[1]>score[0])
{
SetTimerEx("FineRound", 3000, 0, "d", TEAM2);
for(new i; i<PLAYERS; i++)
{
TogglePlayerControllable(i, 0);
//IDEM CON PATATE
}
score[0]=0;
score[1]=0;
KillTimer(timer_textupdate);
}
else
{
SendClientMessageToAll(COLOR_RED, "Pareggio, un minuto supplementare!");
time = 60;
}
format(str, 255, "UDuels: %s %d[%d] vs %s %d[%d]", team1name, score[0], rounds[0], team2name, score[1], rounds[1]);
SetGameModeText(str);
}
}
return 1;
}
forward FineGmode(winner);
public FineGmode(winner)
{
new str[255];
switch(winner)
{
case TEAM1:
{
format(str, 255, "Gmode finita, vince la squadra %s!", team1name);
SendClientMessageToAll(COLOR_RED, " ");
SendClientMessageToAll(COLOR_RED, " ");
SendClientMessageToAll(COLOR_YELLOW, str);
}
case TEAM2:
{
format(str, 255, "Gmode finita, vince la squadra %s!", team2name);
SendClientMessageToAll(COLOR_RED, " ");
SendClientMessageToAll(COLOR_RED, " ");
SendClientMessageToAll(COLOR_BLUE, str);
}
}
return SetTimer("ScriptEndGm", 5000, 0);
}
forward ScriptEndGm();
public ScriptEndGm() GameModeExit();
stock sscanf(string[], format[], {Float,_}:...)
{
new
formatPos,
stringPos,
paramPos = 2,
paramCount = numargs();
while (paramPos < paramCount && string[stringPos])
{
switch (format[formatPos])
{
case '\0': break;
case 'i', 'd': setarg(paramPos, 0, strval(string[stringPos]));
case 'c': setarg(paramPos, 0, string[stringPos]);
case 'f': setarg(paramPos, 0, _:floatstr(string[stringPos]));
case 's':
{
new
end = format[formatPos + 1] == '\0' ? '\0' : ' ',
i;
while (string[stringPos] != end) setarg(paramPos, i++, string[stringPos++]);
setarg(paramPos, i, '\0');
}
default: goto skip;
}
while (string[stringPos] && string[stringPos] != ' ') stringPos++;
while (string[stringPos] == ' ') stringPos++;
paramPos++;
skip:
formatPos++;
}
return format[formatPos] ? 0 : 1;
}