Артур-1
Мастер
Простая гонка по чекпоинтам.
Ко всем new
В OnPlayerEnterRaceCheckpoint:
В public OnPlayerCommandText
Ко всем new
PHP:
new ulact = 0;
new mesden[8][2] ={//Место/деньги
{1000000,11},// 1 место
{500000,11},// 2 место
{250000,11},// 3 место
{100000,11},// 4 место
{50000,11},// 5 место
{0,11},
{0,11},
{0,11}
};
new chmest[26][1] ={//Место/деньги
{1},{1},{1},{1},{1},{1},
{1},{1},{1},{1},{1},{1},
{1},{1},{1},{1},{1},{1},
{1},{1},{1},{1},{1},{1},{1},
{1}
};
new checkstart[MAX_PLAYERS] = 0;
new chekdl[MAX_PLAYERS] = 0;
new ulgonkol = 0;
new ucast[MAX_PLAYERS];
///
forward ulgstart(playerid);
enum
{
ulgcheck_1,
ulgcheck_2,
ulgcheck_3,
ulgcheck_4,
ulgcheck_5,
ulgcheck_6,
ulgcheck_7,
ulgcheck_8,
ulgcheck_9,
ulgcheck_10,
ulgcheck_11,
ulgcheck_13,
ulgcheck_14,
ulgcheck_15,
ulgcheck_16,
ulgcheck_17,
ulgcheck_18,
ulgcheck_19,
ulgcheck_20,
ulgcheck_21,
ulgcheck_22,
ulgcheck_23,
ulgcheck_24,
ulgcheck_25,
ulgcheck_26,
ulgcheck_27,
ulgcheck_28,
}
public ulgstart(playerid)
{
for(new i; i < GetMaxPlayers(); i ++)
{
if(ulgonkol < 7)
{
SendClientMessageToAll(0x79F200AA,"Гонка отменена! Недостаточно кол-во участников");
ucast[i] = 0;
ulact = 0;
return ulgonkol = 0;
}
else
{
if(ucast[i] == 1)
{
DisablePlayerCheckpoint(i);
SendClientMessage(i,COLOR_RED,"/unulg чтобы уйти из гонки.");
SendClientMessage(i,COLOR_RED,"Гонка начата! Едьте по красным меткам!");
checkstart[i] = 1;
ulact = 0;
SetPlayerRaceCheckpoint(i, 0,1304.8594,-2056.6790,57.9104,1419.1510,-1978.4736,45.8467, 5.0);
chekdl[i] = ulgcheck_3;
}
}
}
return 1;
}
PHP:
if(checkstart[playerid] == 1)
{
switch(chekdl[playerid])
{
case ulgcheck_1:
{
chekdl[playerid] = ulgcheck_2;
SetPlayerRaceCheckpoint(playerid, 0,1304.8594,-2056.6790,57.9104,1419.1510,-1978.4736,45.8467, 5.0);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
SendClientMessage(playerid, COLOR_GRAD1, "**Осталось чекпоинтов 20**");
SendClientMessage(playerid, COLOR_GRAD1, "**Вы на %d месте**",chmest[0][0]);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
chmest[0][0]++;
}
case ulgcheck_2:
{
chekdl[playerid] = ulgcheck_3;
SetPlayerRaceCheckpoint(playerid, 0,1419.1510,-1978.4736,45.8467,1330.3149,-1916.6580,21.9857, 5.0);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
SendClientMessage(playerid, COLOR_GRAD1, "**Осталось чекпоинтов 19**");
SendClientMessage(playerid, COLOR_GRAD1, "**Вы на %d месте**",chmest[0][0]);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
chmest[1][0]++;
}
case ulgcheck_3:
{
chekdl[playerid] = ulgcheck_23;
SetPlayerRaceCheckpoint(playerid, 0,1330.3149,-1916.6580,21.9857,1407.4327,-1871.7800,13.1099, 5.0);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
SendClientMessage(playerid, COLOR_GRAD1, "**Осталось чекпоинтов 18**");
SendClientMessage(playerid, COLOR_GRAD1, "**Вы на %d месте**",chmest[0][0]);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
chmest[2][0]++;
}
case ulgcheck_4:
{
chekdl[playerid] = ulgcheck_5;
SetPlayerRaceCheckpoint(playerid, 0,1407.4327,-1871.7800,13.1099,1310.6478,-1825.0206,13.1099, 5.0);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
SendClientMessage(playerid, COLOR_GRAD1, "**Осталось чекпоинтов 17**");
SendClientMessage(playerid, COLOR_GRAD1, "**Вы на %d месте**",chmest[0][0]);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
chmest[3][0]++;
}
case ulgcheck_5:
{
chekdl[playerid] = ulgcheck_6;
SetPlayerRaceCheckpoint(playerid, 0,1310.6478,-1825.0206,13.1099,1313.9219,-1592.8739,13.1100, 5.0);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
SendClientMessage(playerid, COLOR_GRAD1, "**Осталось чекпоинтов 16**");
SendClientMessage(playerid, COLOR_GRAD1, "**Вы на %d месте**",chmest[0][0]);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
chmest[4][0]++;
}
case ulgcheck_6:
{
chekdl[playerid] = ulgcheck_7;
SetPlayerRaceCheckpoint(playerid, 0,1313.9219,-1592.8739,13.1100,1365.9609,-1025.9318,26.2103, 5.0);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
SendClientMessage(playerid, COLOR_GRAD1, "**Осталось чекпоинтов 15**");
SendClientMessage(playerid, COLOR_GRAD1, "**Вы на %d месте**",chmest[0][0]);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
chmest[5][0]++;
}
case ulgcheck_7:
{
chekdl[playerid] = ulgcheck_8;
SetPlayerRaceCheckpoint(playerid, 0,1365.9609,-1025.9318,26.2103,1194.5835,-940.9086,42.4768, 5.0);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
SendClientMessage(playerid, COLOR_GRAD1, "**Осталось чекпоинтов 14**");
SendClientMessage(playerid, COLOR_GRAD1, "**Вы на %d месте**",chmest[0][0]);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
chmest[6][0]++;
}
case ulgcheck_8:
{
chekdl[playerid] = ulgcheck_9;
SetPlayerRaceCheckpoint(playerid, 0,1194.5835,-940.9086,42.4768,1153.5352,-809.2619,53.6474, 5.0);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
SendClientMessage(playerid, COLOR_GRAD1, "**Осталось чекпоинтов 13**");
SendClientMessage(playerid, COLOR_GRAD1, "**Вы на %d месте**",chmest[0][0]);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
chmest[7][0]++;
}
case ulgcheck_9:
{
chekdl[playerid] = ulgcheck_10;
SetPlayerRaceCheckpoint(playerid, 0,1153.5352,-809.2619,53.6474,1255.6808,-467.8541,14.4246, 5.0);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
SendClientMessage(playerid, COLOR_GRAD1, "**Осталось чекпоинтов 12**");
SendClientMessage(playerid, COLOR_GRAD1, "**Вы на %d месте**",chmest[0][0]);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
chmest[8][0]++;
}
case ulgcheck_10:
{
chekdl[playerid] = ulgcheck_11;
SetPlayerRaceCheckpoint(playerid, 0,1255.6808,-467.8541,14.4246,1129.8708,-429.1254,34.6659, 5.0);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
SendClientMessage(playerid, COLOR_GRAD1, "**Осталось чекпоинтов 11**");
SendClientMessage(playerid, COLOR_GRAD1, "**Вы на %d месте**",chmest[0][0]);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
chmest[9][0]++;
}
case ulgcheck_11:
{
chekdl[playerid] = ulgcheck_13;
SetPlayerRaceCheckpoint(playerid, 0,1129.8708,-429.1254,34.6659,808.9198,-595.4586,15.9146, 5.0);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
SendClientMessage(playerid, COLOR_GRAD1, "**Осталось чекпоинтов 10**");
SendClientMessage(playerid, COLOR_GRAD1, "**Вы на %d месте**",chmest[0][0]);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
chmest[10][0]++;
}
case ulgcheck_13:
{
chekdl[playerid] = ulgcheck_14;
SetPlayerRaceCheckpoint(playerid, 0,808.9198,-595.4586,15.9146,687.2653,-607.9378,15.9905, 5.0);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
SendClientMessage(playerid, COLOR_GRAD1, "**Осталось чекпоинтов 9**");
SendClientMessage(playerid, COLOR_GRAD1, "**Вы на %d месте**",chmest[0][0]);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
chmest[11][0]++;
}
case ulgcheck_14:
{
chekdl[playerid] = ulgcheck_15;
SetPlayerRaceCheckpoint(playerid, 0,687.2653,-607.9378,15.9905,685.0619,-775.7280,28.3291, 5.0);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
SendClientMessage(playerid, COLOR_GRAD1, "**Осталось чекпоинтов 8**");
SendClientMessage(playerid, COLOR_GRAD1, "**Вы на %d месте**",chmest[0][0]);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
chmest[12][0]++;
}
case ulgcheck_15:
{
chekdl[playerid] = ulgcheck_16;
SetPlayerRaceCheckpoint(playerid, 0,685.0619,-775.7280,28.3291,780.5557,-915.9335,43.0001, 5.0);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
SendClientMessage(playerid, COLOR_GRAD1, "**Осталось чекпоинтов 7**");
SendClientMessage(playerid, COLOR_GRAD1, "**Вы на %d месте**",chmest[0][0]);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
chmest[13][0]++;
}
case ulgcheck_16:
{
chekdl[playerid] = ulgcheck_17;
SetPlayerRaceCheckpoint(playerid, 0,780.5557,-915.9335,43.0001,788.8316,-1045.2303,24.4214, 5.0);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
SendClientMessage(playerid, COLOR_GRAD1, "**Осталось чекпоинтов 6**");
SendClientMessage(playerid, COLOR_GRAD1, "**Вы на %d месте**",chmest[0][0]);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
chmest[14][0]++;
}
case ulgcheck_17:
{
chekdl[playerid] = ulgcheck_18;
SetPlayerRaceCheckpoint(playerid, 0,788.8316,-1045.2303,24.4214,500.5014,-1285.2174,15.4161, 5.0);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
SendClientMessage(playerid, COLOR_GRAD1, "**Осталось чекпоинтов 5**");
SendClientMessage(playerid, COLOR_GRAD1, "**Вы на %d месте**",chmest[0][0]);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
chmest[15][0]++;
}
case ulgcheck_18:
{
chekdl[playerid] = ulgcheck_19;
SetPlayerRaceCheckpoint(playerid, 0,500.5014,-1285.2174,15.4161,552.8041,-1411.5283,15.0431, 5.0);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
SendClientMessage(playerid, COLOR_GRAD1, "**Осталось чекпоинтов 4**");
SendClientMessage(playerid, COLOR_GRAD1, "**Вы на %d месте**",chmest[0][0]);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
chmest[16][0]++;
}
case ulgcheck_19:
{
chekdl[playerid] = ulgcheck_20;
SetPlayerRaceCheckpoint(playerid, 0,552.8041,-1411.5283,15.0431,807.4686,-1404.2013,13.0433, 5.0);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
SendClientMessage(playerid, COLOR_GRAD1, "**Осталось чекпоинтов 3**");
SendClientMessage(playerid, COLOR_GRAD1, "**Вы на %d месте**",chmest[0][0]);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
chmest[17][0]++;
}
case ulgcheck_20:
{
chekdl[playerid] = ulgcheck_21;
SetPlayerRaceCheckpoint(playerid, 0,807.4686,-1404.2013,13.0433,1083.8281,-1405.0382,13.2232, 5.0);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
SendClientMessage(playerid, COLOR_GRAD1, "**Осталось чекпоинтов 2**");
SendClientMessage(playerid, COLOR_GRAD1, "**Вы на %d месте**",chmest[0][0]);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
chmest[18][0]++;
}
case ulgcheck_21:
{
chekdl[playerid] = ulgcheck_22;
SetPlayerRaceCheckpoint(playerid, 0,1083.8281,-1405.0382,13.2232,1334.1862,-1399.5490,13.0845, 5.0);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
SendClientMessage(playerid, COLOR_GRAD1, "**Осталось чекпоинтов 1**");
SendClientMessage(playerid, COLOR_GRAD1, "**Вы на %d месте**",chmest[0][0]);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
chmest[19][0]++;
}
case ulgcheck_22:
{
chekdl[playerid] = ulgcheck_23;
SetPlayerRaceCheckpoint(playerid, 0,1334.1862,-1399.5490,13.0845,1334.1862,-1399.5490,13.0845, 5.0);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
SendClientMessage(playerid, COLOR_GRAD1, "**Осталось чекпоинтов 0**");
SendClientMessage(playerid, COLOR_GRAD1, "**Вы на %d месте**",chmest[0][0]);
SendClientMessage(playerid, COLOR_GRAD1, "**************************");
chmest[20][0]++;
}
case ulgcheck_23:
{
if(mesden[0][1] == 11)
{
mesden[0][1] = 0;
ucast[playerid] = 20;
DisablePlayerRaceCheckpoint(playerid);
SendClientMessage(playerid,COLOR_LIGHTRED,"Вы заняли первое место.");
PlayerInfo[playerid][pCash] += mesden[0][0];
}
else if(mesden[1][1] == 11)
{
if(ucast[playerid] != 20)
{
mesden[1][1] = 0;
ucast[playerid] = 30;
DisablePlayerRaceCheckpoint(playerid);
SendClientMessage(playerid,COLOR_LIGHTRED,"Вы заняли второе место.");
PlayerInfo[playerid][pCash] += mesden[1][0];
}
}
else if(mesden[2][1] == 11)
{
if(ucast[playerid] != 30)
{
mesden[2][1] = 0;
ucast[playerid] = 40;
DisablePlayerRaceCheckpoint(playerid);
SendClientMessage(playerid,COLOR_LIGHTRED,"Вы заняли третье место.");
PlayerInfo[playerid][pCash] += mesden[2][0];
}
}
else if(mesden[3][1] == 11)
{
if(ucast[playerid] != 40)
{
mesden[3][1] = 0;
ucast[playerid] = 50;
DisablePlayerRaceCheckpoint(playerid);
SendClientMessage(playerid,COLOR_LIGHTRED,"Вы заняли четвёртое место.");
PlayerInfo[playerid][pCash] += mesden[3][0];
}
}
else if(mesden[4][1] == 11)
{
if(ucast[playerid] != 50)
{
mesden[4][1] = 0;
ucast[playerid] = 60;
DisablePlayerRaceCheckpoint(playerid);
SendClientMessage(playerid,COLOR_LIGHTRED,"Вы заняли пятое место.");
PlayerInfo[playerid][pCash] += mesden[4][0];
mesden[5][1] = 228;
}
}
else if(mesden[5][1] == 228)
{
if(ucast[playerid] != 60)
{
mesden[5][1] = 0;
ucast[playerid] = 70;
DisablePlayerRaceCheckpoint(playerid);
SendClientMessage(playerid,COLOR_LIGHTRED,"К сожалению вы не выиграли.");
mesden[6][1] = 68;
}
}
else if(mesden[6][1] == 68)
{
if(ucast[playerid] != 70)
{
mesden[6][1] = 19;
DisablePlayerRaceCheckpoint(playerid);
for(new i; i < GetMaxPlayers(); i ++)
{
SendClientMessageToAll(0x79F200AA,"Гонка закончена!");
ucast[i] = 0;
checkstart[i] = 0;
mesden[0][1] = 11;mesden[1][1] = 11;mesden[2][1] = 11;
mesden[3][1] = 11;mesden[4][1] = 11;mesden[5][1] = 11;
mesden[6][1] = 11;
return ulgonkol = 0;
}
}
}
}
}
}
PHP:
else if(strcmp(cmd, "/nacul", true) == 0)
{
if(PlayerInfo[playerid][pAdmInections] == 12)
{
ulact = 1;
SendClientMessageToAll(0x79F200AA,"Через 5 мминут начнутся уличные гонки.");
SendClientMessageToAll(0x79F200AA,"/ulg для регистрации.");
SetTimer("ulgstart", 300000, 0);
return true;
}
}
else if(strcmp(cmd, "/unulg", true) == 0)
{
ucast[playerid] = 0;
DisablePlayerRaceCheckpoint(playerid);
}
else if(strcmp(cmd, "/ulg", true) == 0)
{
if(ulact == 1)
{
if(ucast[playerid] == 0)
{
ulgonkol++;
ucast[playerid] = 1;
SetPlayerCheckpoint(playerid,1304.8594,-2056.6790,57.9104,8.0);
SendMes(playerid,COLOR_GREEN, "Место встречи указан на карте красной меткой.");
return true;
}
else { SendClientMessage(playerid, COLOR_GREY, "Вы уже зарегистрированы!"); }
}
else { SendClientMessage(playerid, COLOR_GREY, "Регистрация закрыта!"); }
}
Ко всем new
В OnPlayerEnterRaceCheckpoint:
В конец мода:
К остальным командам
PHP:
new next_race[MAX_PLAYERS char],
place_in_race,
open_race,
amount_pepople;
static const Float: chekpoint_race [21] [3] =
{
{1304.8594,-2056.6790,57.9104},
{1419.1510,-1978.4736,45.8467},
{1330.3149,-1916.6580,21.9857},
{1407.4327,-1871.7800,13.1099},
{1310.6478,-1825.0206,13.1099},
{1313.9219,-1592.8739,13.1100},
{1365.9609,-1025.9318,26.2103},
{1194.5835,-940.9086,42.4768},
{1153.5352,-809.2619,53.6474},
{1255.6808,-467.8541,14.4246},
{1129.8708,-429.1254,34.6659},
{808.9198,-595.4586,15.9146},
{687.2653,-607.9378,15.9905},
{685.0619,-775.7280,28.3291},
{780.5557,-915.9335,43.0001},
{788.8316,-1045.2303,24.4214},
{500.5014,-1285.2174,15.4161},
{552.8041,-1411.5283,15.0431},
{807.4686,-1404.2013,13.0433},
{1083.8281,-1405.0382,13.2232},
{1334.1862,-1399.5490,13.0845}
};
PHP:
if(GetPVarInt(playerid, "on_race"))
{
switch(next_race{playerid})
{
case 1..20:
{
next_race{playerid} += 1;
SetPlayerRaceCheckpoint(playerid,2,chekpoint_race[next_race{playerid}-2][0],chekpoint_race[next_race{playerid}-2][1],
chekpoint_race[next_race{playerid}-2][2],0.0,0.0,0.0,5.0);
SendClientMessage(playerid, 0xBFC0C2FF, "**************************");
format(string,sizeof(string),"**Осталось чекпойнтов %d**", 20 - next_race{playerid} - 2);
SendClientMessage(playerid, 0xBFC0C2FF, string);
SendClientMessage(playerid, 0xBFC0C2FF, "**************************");
}
case 21:
{
if(place_in_race == 6)
{
for(new i; i < GetMaxPlayers(); i ++)
{
if(GetPVarInt(i, "on_race"))
{
DisablePlayerRaceCheckpoint(i);
DeletePVar(i, "on_race");
}
}
SendClientMessageToAll(0x79F200AA,"Гонка закончена!");
place_in_race = 0;
}
else
{
new money = place_in_race == 0 ? 1000000 : place_in_race == 1 ? 500000 : place_in_race == 2 ? 25000 : place_in_race == 3 ? 100000 : 50000;
PlayerInfo[playerid][pCash] += money;
static const place_race [ 6 ] [ ] =
{
"Вы заняли первое место.",
"Вы заняли второе место.",
"Вы заняли третье место.",
"Вы заняли четвёртое место.",
"Вы заняли пятое место.",
"К сожалению вы не выиграли."
};
format(string,sizeof(string),"%s", place_race[place_in_race]);
SendClientMessage(playerid, 0xBFC0C2FF, string);
DeletePVar(playerid, "on_race");
DisablePlayerRaceCheckpoint(playerid);
place_in_race ++;
}
}
}
}
PHP:
forward time_race(playerid);
public time_race(playerid)
{
if(amount_pepople < 7)
{
SendClientMessageToAll(0x79F200AA,"Гонка отменена! Недостаточно кол-во участников");
amount_pepople = 0;
for(new i; i < GetMaxPlayers(); i ++)
{
if(GetPVarInt(i, "on_race"))
{
DisablePlayerCheckpoint(i);
DeletePVar(i, "on_race");
}
}
return true;
}
for(new i; i < GetMaxPlayers(); i ++)
{
if(GetPVarInt(i, "on_race"))
{
DisablePlayerCheckpoint(i);
SendClientMessage(i,0xFFD9D9FF,"/cancelrace - чтобы уйти из гонки.");
next_race{i} += 1;
SetPlayerRaceCheckpoint(i, 0,1304.8594,-2056.6790,57.9104,1419.1510,-1978.4736,45.8467, 5.0);
}
}
return true;
}
PHP:
CMD:openrace(playerid)
{
if(PlayerInfo[playerid][pAdmInections] != 12 && open_race == 1)return true;
SendClientMessageToAll(0x79F200AA,"Через 5 минут начнутся уличные гонки.");
SendClientMessageToAll(0x79F200AA,"/race для регистрации.");
open_race = 1;
SetTimerEx("time_race", 300000, false, "d", playerid);
return true;
}
CMD:cancelrace(playerid)
{
if(open_race == 0)return true;
DisablePlayerRaceCheckpoint(playerid);
DeletePVar(playerid, "on_race");
return true;
}
CMD:race(playerid)
{
if(open_race == 0)return SendClientMessage(playerid, 0xBFC0C2FF, "Регистрация закрыта!");
if(GetPVarInt(playerid, "on_race"))return SendClientMessage(playerid, 0xBFC0C2FF, "Вы уже зарегистрированы!");
SendClientMessage(playerid, 0x33AA33FF, "Место встречи указан на карте красной меткой.");
SetPlayerCheckpoint(playerid,1304.8594,-2056.6790,57.9104,8.0);
amount_pepople ++;
SetPVarInt(playerid,"on_race",1);
return true;
}
Автор: Артур(Я)
Последнее редактирование:
