(Scr) Командный пейнтбол

Описание: Готовые решения скриптов, filterScript
Модератор: SJplayer

Дим M
Автор темы, Администратор
Администратор
Аватара
Дим M
Автор темы, Администратор
Администратор
Сообщения: 1608
Зарегистрирован: 5 апреля 2013
С нами: 10 лет 11 месяцев

#1 Дим » 23 мая 2015, 23:02

Ко всем forward

Код: Выделить всё

forward CheckPaintballState();
forward StartPaintballRoundOne();
forward StartPaintballRoundTwo();
forward StartPaintballRoundThree();
forward PaintballIsOver(); 


Ко всем new

Код: Выделить всё

new PaintballRegistratedPlayers = 0; //Переменная хранящяя количество уже зарегистрированных игроков на paintball.
new PlayerRegistredOnPaintball[MAX_PLAYERS]; //Переменная хранящяя информацию о том зарегистрирован ли конкретный игрок на paintball.
new PaintballTeamRed = 0; //Переменная хранит количество игроков команды "Red 1".
new PaintballTeamBlue = 0; //Переменная хранит количество игроков команды "Blue 2".
new PlayerPaintballTeam[MAX_PLAYERS]; //Переменная хранящяя то, к какой команде присвоен конкретный игрок. None - 0, Red -1, Blue - 2.
new PaintballTeamRedScore = 0; //Переменная с количество очков команды "Red".
new PaintballTeamBlueScore = 0; //Переменная с количество очков команды "Blue".
new PaintballTeamRedRoundScore = 0;
new PaintballTeamBlueRoundScore = 0;
new PaintballBestScore = 0; //Переменная хранит количество убийств лучшего игрока.
new PaintballWinnerWithBestScore = 999; //Переменная получит Id игрока с наибольшим количеством убийств.
new PlayerPaintballScore[MAX_PLAYERS]; //Переменная хранящяя количество убийст сделаных конкретным игроком на paintball'e.
new PaintballAlreadyStarted = 0; //Переменная отвечающая за то начат ли paintball.
new Float:PaintballTeamRedSpawns[6][3] = {  //Массив хранящий координаты всех точек spawn'а команды "Red" на paintball'е.
{PosX,PosY,PosZ}, 
{PosX,PosY,PosZ},
{
PosX,PosY,PosZ},
{
PosX,PosY,PosZ},
{
PosX,PosY,PosZ},
{
PosX,PosY,PosZ}
};
new Float:PaintballTeamBlueSpawns[6][3] = {  //Массив хранящий координаты всех точек spawn'а команды "Blue" на paintball'е.
{PosX,PosY,PosZ},
{
PosX,PosY,PosZ},
{
PosX,PosY,PosZ},
{
PosX,PosY,PosZ},
{
PosX,PosY,PosZ},
{
PosX,PosY,PosZ}
};
new PaintballGuns[] = {gunid,gunid2,gunid3, gunidN}; //Массив хранящий виды оружия выдаваемые игроку на paintball'е.
new PaintballRegistrationPickup; //Переменная для пикапа регистрации на paintball.
new bool:RedOrBlue; //Переменная выберающая в какой команде будет игрок.     


В public OnGameModeInit()

Код: Выделить всё

PaintballRegistrationPickup = CreatePickup(353, 23, 1712.9823,-1593.1775,13.3621); //Пикап регистрации на paintball.     


В public OnPlayerDisconnect(playerid, reason)

Код: Выделить всё

    PlayerRegistredOnPaintball[playerid] = 0;
    PlayerPaintballScore[playerid] = 0;
    PlayerPaintballTeam[playerid] = 0


В public OnPlayerSpawn(playerid)

Код: Выделить всё

    if(PlayerRegistredOnPaintball[playerid] != 0){
        PlayerRegistredOnPaintball[playerid] = 1;
        if(PlayerPaintballTeam[playerid] == 1) { //Игрок в команде Red.
            ResetPlayerWeapons(playerid); //Удаляем оружие игрокам зарегистрированным на paintball.
            new randgun = random(sizeof(PaintballGuns));
            GivePlayerWeapon(playerid, PaintballGuns[randgun], 999);
            new randspawn = random(sizeof(PaintballTeamRedSpawns));
            SetPlayerPos(playerid, PaintballTeamRedSpawns[randspawn][0], PaintballTeamRedSpawns[randspawn][1], PaintballTeamRedSpawns[randspawn][2]);
        }
        else if(PlayerPaintballTeam[playerid] == 2) { //Игрок в команде Blue.
            ResetPlayerWeapons(playerid); //Удаляем оружие игрокам зарегистрированным на paintball.
            new randgun = random(sizeof(PaintballGuns));
            GivePlayerWeapon(playerid, PaintballGuns[randgun], 999);
            new randspawn = random(sizeof(PaintballTeamBlueSpawns));
            SetPlayerPos(playerid, PaintballTeamBlueSpawns[randspawn][0], PaintballTeamBlueSpawns[randspawn][1], PaintballTeamBlueSpawns[randspawn][2]);
        }
        return 1;
    


В public OnPlayerDeath(playerid, killerid, reason)

Код: Выделить всё

    if(PlayerRegistredOnPaintball[playerid] != 0) { //Если игрок зарегистрирован на paintball.
    PlayerPaintballScore[killerid] ++; //Увеличим значение убийств, убившему игроку.
    if(PlayerPaintballTeam[killerid] == 1){
        PaintballTeamRedScore += 1;
    }
    else if(PlayerPaintballTeam[killerid] == 2){
        PaintballTeamBlueScore += 1;
    }
    if(PlayerPaintballScore[killerid] > PaintballBestScore) //Проверяем не больше ли убийств у игрока сделавшего фраг, чем у самого лучшего игрока.
    {
        new string[256];
        new killer[MAX_PLAYER_NAME]; //Локальная переменная с ником игрока.
        PaintballWinnerWithBestScore = killerid; //Новым лучшим игроком делаем игрока имеющего наибольшее число убийств.
        PaintballBestScore = PlayerPaintballScore[killerid]; //Изменим количество очков.
        GetPlayerName(killerid, killer, sizeof(killer)); //получаем имя игрока.
        for(new i = 0; i < MAX_PLAYERS; i++) //цыкл который ищет этого игрока
        {
            if(IsPlayerConnected(i)) //Проверяем подключен ли этот игрок
            {
                if(PlayerRegistredOnPaintball[i] != 0) //Если игрок все еще участвует в пейнтболе выводим сообщение о победителе.
                {
                    if(PlayerPaintballTeam[i] == 1){ //Если игрок команды красных, выводим сообщение красным.

                    format(string, sizeof(string), "Игрок %s выигрывает со счетом: %d .",killer,PaintballBestScore);
                    SendClientMessage(i, 0xAA3333AA, string);
                    }
                    else if(PlayerPaintballTeam[i] == 2){ //Если игрок команды синих, выводим сообщение синим.

                    format(string, sizeof(string), "Игрок %s выигрывает со счетом: %d .",killer,PaintballBestScore);
                    SendClientMessage(i, 0x0000BBAA, string);
                    }
                }
            }
        }
        return 1;
    }


В public OnPlayerCommandText(playerid, cmdtext[])

Код: Выделить всё

    new cmd[256];
    new string[256];
    if (strcmp(cmd, "/teampaintball", true) == 0)
    {
        if(Player[playerid][PlayerAdmin] == 1) {
            if(PaintballAlreadyStarted == 1) return SendClientMessage(playerid, 0xAA3333AA,"Paintball уже начат!"); //Если paintball уже начат, возвращаем админу сообщение об этом.
            format(string, sizeof(string), "Внимание! Вы можете пройти регистрацию на paintball в течении 5 минут.");
            SendClientMessageToAll(0xFFE4C4AA,string); //Выводим сообщение о начале пейнтбола в чат.
            PaintballAlreadyStarted = 1; //Меняем значение переменной так как paintball начат.
//Обнуляем значения всех переменных:
            PaintballRegistratedPlayers = 0;
            PaintballTeamRed = 0;
            PaintballTeamBlue = 0;
            PaintballTeamRedScore = 0;
            PaintballTeamBlueScore = 0;
            PaintballBestScore = 0;
            PaintballWinnerWithBestScore = 999;
            SetTimer("StartPaintball", 300000, 0); //Запускаем таймер до начала paintball'а.
        }
        return 1;
    


В public OnPlayerPickUpPickup(playerid, pickupid)

Код: Выделить всё

    if(pickupid == PaintballRegistrationPickup)
    {
        if(PaintballAlreadyStarted == 0) return SendClientMessage(playerid,0xAA3333AA,"Регистрация закрыта!"); //Если пейнтбол не начат, регитрироватся нельзя.
        if(PlayerRegistredOnPaintball[playerid] == 1) return SendClientMessage(playerid,0xAA3333AA,"Вы уже зарегистрированы!");
//Если пейнтбол начат и игрок еще не зарегистрирован:
        SendClientMessage(playerid, 0x33AA33AA, "Вы зарегистрировались на paintball.");
        PaintballRegistratedPlayers += 1; //Увеличиваем переменную с зарегистрированными игроками.
        PlayerRegistredOnPaintball[playerid] = 1; //Присваеваем игроку статус участника.
        if(RedOrBlue == false){
            RedOrBlue = true;
            PlayerPaintballTeam[playerid] = 1; //Игрок команды "Red".
            PaintballTeamRed += 1; //Увеличиваем переменную с игроками команды "Red".
        }
        else {
            RedOrBlue = false;
            PlayerPaintballTeam[playerid] = 2; //Игрок команды "Blue".
            PaintballTeamBlue += 1; //Увеличиваем переменную с игроками команды "Blue".
        }
    


В конец мода

Код: Выделить всё

        public CheckPaintballState(){
        new string[256];
        if(PaintballRegistratedPlayers <2) { //Если зарегистрировалось меньше двух игроков.
            for(new i = 0; i < MAX_PLAYERS; i++) { //Цикл перебирающий игроков online.
                if(PlayerRegistredOnPaintball[i] != 0) { //Если у игрока присвоин параметр зарегистрированного участника.
                    format(string, sizeof(string), "Paintball был отменен из-за не достаточного количества участников!");
                    SendClientMessageToAll(0xAA3333AA,string);//Выводим сообщение об отмене paintball'а в чат.
                    PaintballAlreadyStarted = 0; //Меняем значение переменной, paintball не начат.
                    PlayerRegistredOnPaintball[i] = 0; //Все возможные зарегистрированные игроки больше не участники paintball'а.
                    PlayerPaintballTeam[i] = 0;
                    PaintballRegistratedPlayers = 0;
                    PaintballTeamRed = 0;
                    PaintballTeamBlue = 0;
                    return 1;
                }
            }
        }
        SetTimer("StartPaintballRoundOne", 100, 0);
        return 1;
    }

//==========================================
        public StartPaintballRoundOne() {
        new string[256];
        format(string, sizeof(string), "Внимание! Paintball стартовал. Длительность - 9 минут.");
        SendClientMessageToAll(0xFFE4C4AA,string); //Выводим сообщение о старте paintball'а в чат.

        for(new i = 0; i < MAX_PLAYERS; i++) { //Перебераем всех игроков online.
            if(IsPlayerConnected(i)) {
                if(PlayerRegistredOnPaintball[i] != 0) { //Находим игроков зарегистрированных на paintball.
                    PlayerRegistredOnPaintball[i] = 1;
                    if(PlayerPaintballTeam[i] == 1) { //Игрок в команде Red.
                        ResetPlayerWeapons(i); //Удаляем оружие игрокам зарегистрированным на paintball.
                        new randgun = random(sizeof(PaintballGuns));
                        GivePlayerWeapon(i, PaintballGuns[randgun], 999);
                        new randspawn = random(sizeof(PaintballTeamRedSpawns));
                        SetPlayerPos(i, PaintballTeamRedSpawns[randspawn][0], PaintballTeamRedSpawns[randspawn][1], PaintballTeamRedSpawns[randspawn][2]);
                        GameTextForPlayer(i, "~r~Round one!", 6000, 3 );
                        SendClientMessage(i,0xFFFFFFAA,"Длительность раунда - 3минуты.");
                    }
                    else if(PlayerPaintballTeam[i] == 2) { //Игрок в команде Blue.
                        ResetPlayerWeapons(i); //Удаляем оружие игрокам зарегистрированным на paintball.
                        new randgun = random(sizeof(PaintballGuns));
                        GivePlayerWeapon(i, PaintballGuns[randgun], 999);
                        new randspawn = random(sizeof(PaintballTeamBlueSpawns));
                        SetPlayerPos(i, PaintballTeamBlueSpawns[randspawn][0], PaintballTeamBlueSpawns[randspawn][1], PaintballTeamBlueSpawns[randspawn][2]);
                        GameTextForPlayer(i, "~b~Round one!", 6000, 3 );
                        SendClientMessage(i,0xFFFFFFAA,"Длительность раунда - 3минуты.");
                    }
                }
            }
        }
        SetTimer("StartPaintballRoundTwo", 180000, 0);
        return 1;
    }
//==========================================
    public StartPaintballRoundTwo() {
    //    new string[256];

        if(PaintballTeamRedScore > PaintballTeamBlueScore && PaintballTeamRedScore != PaintballTeamBlueScore) {
        PaintballTeamRedRoundScore += 1;
        PaintballTeamRedScore = 0;
        PaintballTeamBlueScore = 0;
        }
        else if(PaintballTeamRedScore == PaintballTeamBlueScore) {
        PaintballTeamRedRoundScore += 1;
        PaintballTeamBlueRoundScore += 1;
        PaintballTeamRedScore = 0;
        PaintballTeamBlueScore = 0;
        }
        else if(PaintballTeamRedScore < PaintballTeamBlueScore && PaintballTeamRedScore != PaintballTeamBlueScore) {
        PaintballTeamBlueRoundScore += 1;
        PaintballTeamRedScore = 0;
        PaintballTeamBlueScore = 0;
        }

        for(new i = 0; i < MAX_PLAYERS; i++) { //Перебераем всех игроков online.
            if(IsPlayerConnected(i)) {
                if(PlayerRegistredOnPaintball[i] != 0) { //Находим игроков зарегистрированных на paintball.
                    PlayerRegistredOnPaintball[i] = 1;
                    if(PlayerPaintballTeam[i] == 1) { //Игрок в команде Red.
                        ResetPlayerWeapons(i); //Удаляем оружие игрокам зарегистрированным на paintball.
                        new randgun = random(sizeof(PaintballGuns));
                        GivePlayerWeapon(i, PaintballGuns[randgun], 999);
                        new randspawn = random(sizeof(PaintballTeamRedSpawns));
                        SetPlayerPos(i, PaintballTeamRedSpawns[randspawn][0], PaintballTeamRedSpawns[randspawn][1], PaintballTeamRedSpawns[randspawn][2]);
                        GameTextForPlayer(i, "~r~Round two!", 6000, 3 );
                        SendClientMessage(i,0xFFFFFFAA,"Длительность раунда - 3минуты.");
                    }
                    else if(PlayerPaintballTeam[i] == 2) { //Игрок в команде Blue.
                        ResetPlayerWeapons(i); //Удаляем оружие игрокам зарегистрированным на paintball.
                        new randgun = random(sizeof(PaintballGuns));
                        GivePlayerWeapon(i, PaintballGuns[randgun], 999);
                        new randspawn = random(sizeof(PaintballTeamBlueSpawns));
                        SetPlayerPos(i, PaintballTeamBlueSpawns[randspawn][0], PaintballTeamBlueSpawns[randspawn][1], PaintballTeamBlueSpawns[randspawn][2]);
                        GameTextForPlayer(i, "~b~Round two!", 6000, 3 );
                        SendClientMessage(i,0xFFFFFFAA,"Длительность раунда - 3минуты.");
                    }
                }
            }
        }
        SetTimer("StartPaintballRoundThree", 180000, 0);
        return 1;
    }
//==========================================
    public StartPaintballRoundThree() {

        if(PaintballTeamRedScore > PaintballTeamBlueScore && PaintballTeamRedScore != PaintballTeamBlueScore) {
        PaintballTeamRedRoundScore += 1;
        PaintballTeamRedScore = 0;
        PaintballTeamBlueScore = 0;
        }
        else if(PaintballTeamRedScore == PaintballTeamBlueScore) {
        PaintballTeamRedRoundScore += 1;
        PaintballTeamBlueRoundScore += 1;
        PaintballTeamRedScore = 0;
        PaintballTeamBlueScore = 0;
        }
        else if(PaintballTeamRedScore < PaintballTeamBlueScore && PaintballTeamRedScore != PaintballTeamBlueScore) {
        PaintballTeamBlueRoundScore += 1;
        PaintballTeamRedScore = 0;
        PaintballTeamBlueScore = 0;
        }

        for(new i = 0; i < MAX_PLAYERS; i++) { //Перебераем всех игроков online.
            if(IsPlayerConnected(i)) {
                if(PlayerRegistredOnPaintball[i] != 0) { //Находим игроков зарегистрированных на paintball.
                    PlayerRegistredOnPaintball[i] = 1;
                    if(PlayerPaintballTeam[i] == 1) { //Игрок в команде Red.
                        ResetPlayerWeapons(i); //Удаляем оружие игрокам зарегистрированным на paintball.
                        new randgun = random(sizeof(PaintballGuns));
                        GivePlayerWeapon(i, PaintballGuns[randgun], 999);
                        new randspawn = random(sizeof(PaintballTeamRedSpawns));
                        SetPlayerPos(i, PaintballTeamRedSpawns[randspawn][0], PaintballTeamRedSpawns[randspawn][1], PaintballTeamRedSpawns[randspawn][2]);
                        GameTextForPlayer(i, "~r~Round three!", 6000, 3 );
                        SendClientMessage(i,0xFFFFFFAA,"Длительность раунда - 3минуты.");
                    }
                    else if(PlayerPaintballTeam[i] == 2) { //Игрок в команде Blue.
                        ResetPlayerWeapons(i); //Удаляем оружие игрокам зарегистрированным на paintball.
                        new randgun = random(sizeof(PaintballGuns));
                        GivePlayerWeapon(i, PaintballGuns[randgun], 999);
                        new randspawn = random(sizeof(PaintballTeamBlueSpawns));
                        SetPlayerPos(i, PaintballTeamBlueSpawns[randspawn][0], PaintballTeamBlueSpawns[randspawn][1], PaintballTeamBlueSpawns[randspawn][2]);
                        GameTextForPlayer(i, "~b~Round three!", 6000, 3 );
                        SendClientMessage(i,0xFFFFFFAA,"Длительность раунда - 3минуты.");
                    }
                }
            }
        }
        SetTimer("PaintballIsOver", 180000, 0);
        return 1;
    }
//==========================================
    public PaintballIsOver() {
    new string[256];
    new name[MAX_PLAYER_NAME];
    if(PaintballTeamRedScore > PaintballTeamBlueScore && PaintballTeamRedScore != PaintballTeamBlueScore) {
        PaintballTeamRedRoundScore += 1;
        PaintballTeamRedScore = 0;
        PaintballTeamBlueScore = 0;
    }
    else if(PaintballTeamRedScore == PaintballTeamBlueScore) {
        PaintballTeamRedRoundScore += 1;
        PaintballTeamBlueRoundScore += 1;
        PaintballTeamRedScore = 0;
        PaintballTeamBlueScore = 0;
    }
    else if(PaintballTeamRedScore < PaintballTeamBlueScore && PaintballTeamRedScore != PaintballTeamBlueScore) {
        PaintballTeamBlueRoundScore += 1;
        PaintballTeamRedScore = 0;
        PaintballTeamBlueScore = 0;
    }

    format(string, sizeof(string), "Paintball завершён!");
    SendClientMessageToAll(0xFFE4C4AA,string);//Выводим сообщение о завершении paintball'а.

    if(PaintballTeamRedRoundScore > PaintballTeamBlueRoundScore && PaintballTeamRedRoundScore != PaintballTeamBlueRoundScore){
        format(string, sizeof(string), "Победила команда - Red, количество побед в раундах - Red: %d .",PaintballTeamRedRoundScore);
        SendClientMessageToAll(0xAA3333AA,string);
    }
    if(PaintballTeamRedRoundScore == PaintballTeamBlueRoundScore){
         format(string, sizeof(string), "Ничия между командой - Red и командой - Blue, количество побед в раундах - Red: %d Blue: %d .",PaintballTeamRedRoundScore,PaintballTeamBlueRoundScore);
         SendClientMessageToAll(0xFF6347AA,string);
    }
    if(PaintballTeamRedRoundScore < PaintballTeamBlueRoundScore && PaintballTeamRedRoundScore != PaintballTeamBlueRoundScore){
         format(string, sizeof(string), "Победила команда - Blue, количество побед в раундах - Blue: %d .",PaintballTeamBlueRoundScore);
         SendClientMessageToAll(0x0000BBAA,string);
    }

    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            if(PlayerRegistredOnPaintball[i] != 0)
            {
                if(IsPlayerConnected(PaintballWinnerWithBestScore))
                {
                    GetPlayerName(PaintballWinnerWithBestScore, name, sizeof(name));
                    format(string, sizeof(string), "Лучший игрок %s со счетом %d .",name,PaintballWinnerWithBestScore);
                    SendClientMessage(i, 0x79F200AA, string);
                }
                ResetPlayerWeapons(i);
                PlayerRegistredOnPaintball[i] = 0;
                PlayerPaintballTeam[i] = 0;
                SetPlayerPos(i, 521.1257,-1814.5043,6.5781);
            }
        }
    }
    PaintballAlreadyStarted = 0;
    return 1;
}
//==========================================
        public OnPlayerGiveDamage(playerid, damagedid, Float: amount, weaponid, bodypart) {
        if(damagedid != INVALID_PLAYER_ID)
        {
            if(PlayerRegistredOnPaintball[playerid] !=&& PlayerRegistredOnPaintball[damagedid] !=0){
                if(PlayerPaintballTeam[playerid] == PlayerPaintballTeam[damagedid]){
                    SetPlayerHealth(damagedid, amount);
                    SendClientMessage(playerid, 0xAA3333AA,"Вы стреляете в своего!");
                }
            }
        }
        return 1;
    
[center]i love you [s]mxIni[/s] Mysql[/center]


Вернуться в «Скрипты / FS»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 6 гостей