Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Грабеж, Банды грабят людей =)

Статус
В этой теме нельзя размещать новые ответы.

sasa50

Умник
Добрый день жители портала pawno-info, нигде не видел похожей темы и поэтому создам ее=)
Этот мануал поможет вам сделать так что бы банды грабили мирных людей на улицах штата.
Интервал грабежа 1 час=)
И так начнем:
Ко всем new добавляем:
HTML:
new robOffer[MAX_PLAYERS];
new robmoney[MAX_PLAYERS];
new ots[MAX_PLAYERS];
После этого идем в паблик PayDay и после чека, который выводиться в игре вставляем:
HTML:
ots[i] = 0;
Далее ко всем форвардам пишем:
HTML:
forward IsAGang(playerid);
Создаем паблик:
HTML:
public IsAGang(playerid)
{
    if(IsPlayerConnected(playerid))
    {
        new leader = PlayerInfo[playerid][pLeader];
        new member = PlayerInfo[playerid][pMember];
        if(member==14 || member==15 || member==16 || member==17 || member==18 )
       {
            return 1;
        }
        if(leader==14 || leader==15 || leader==16 || leader==17 || leader==18 )
        {
            return 1;
        }
    }
    return 0;
}
где 14; 15; 16; 17; 18; - это ид'ы банд, заменяем их на свои... если потребуется.
Если у кого-то паблик есть, то пропускаем этот шаг.
Далее создаем команду /robgang
HTML:
if(strcmp(cmd, "/robgang", true) == 0)
    {
         if(IsAGang(playerid))
        {
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_WHITE, "Введите: /robgang [id] [сумма]");
                return 1;
            }
            //giveplayerid = strval(tmp);
            giveplayerid = ReturnUser(tmp);
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_GRAD1, "Введите: /robgang [id] [сумма]");
                return 1;
            }
            if(ots[playerid] == 1)
            {
                SendClientMessage(playerid, COLOR_GRAD1, "Грабить можно раз в час");
                return 1;
            }
            if (IsPlayerConnected(giveplayerid))
            {
                if(giveplayerid != INVALID_PLAYER_ID)
                {
                    if (ProxDetectorS(5.0, playerid, giveplayerid))
                    {
                        if(giveplayerid == playerid) { SendClientMessage(playerid, COLOR_GREY, "[Ошибка] Вы указали свой ID"); return 1; }
                        if (IsAGang(playerid)) { SendClientMessage(playerid, COLOR_GREY, "Нельзя ограбить бандита..."); return 1; }
                        new money;
                        money = strval(tmp);
                        if(money >5000)
                        {
                            SendClientMessage(playerid, COLOR_GRAD1, "Сумма должна быть не более 5.000 вирт");
                            return 1;
                        }
                          GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
                        GetPlayerName(playerid, sendername, sizeof(sendername));
                          format(string, sizeof(string), "Вы попытались ограбить %s на сумму %d вирт",giveplayer,money);
                        SendClientMessage(playerid, COLOR_BLUE, string);
                        format(string, sizeof(string), "%s попытался ограбить %s", sendername, giveplayer);
                           ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,CO
LOR_PURPLE);
                           new robdialog[256];
                        format(robdialog,sizeof(robdialog), "Вас хотят ограбить на сумму %d вирт\nОтдать деньги?",money);
                           ShowPlayerDialog(giveplayerid,5050,DIALOG_STYLE_MSGBOX,"Ограбление", robdialog, "Да", "Нет");
                           robmoney[giveplayerid] = money;
                           robOffer[giveplayerid] = playerid;
                    }
                    else
                    {
                        SendClientMessage(playerid, COLOR_GRAD1, "Вы слишком далеко.");
                    }
                }//invalid id
            }
            else
            {
                format(string, sizeof(string), "Игрок не найден", giveplayerid);
                SendClientMessage(playerid, COLOR_GRAD1, string);
            }
        }
        return 1;
    }
Затем мы создаем диалог:
HTML:
else if(dialogid == 5050)
    {
        if(response)
        {
            new giveplayer[MAX_PLAYER_NAME];
            new giveplayerid;
            GetPlayerName(playerid, sendername, sizeof(sendername));
            GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
            if(GetPlayerMoney(playerid) < robmoney[playerid]) return SendClientMessage(playerid,COLOR_GRAD1,"У вас нет столько денег!");
            format(string, sizeof(string), "Вы ограбили %s на %d вирт!",sendername, robmoney[playerid]);
            SendClientMessage(robOffer[playerid], COLOR_BLUE,string);
            format(string, sizeof(string), "%s'а ограбили", sendername);
            ProxDetector(30.0, giveplayerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,CO
LOR_PURPLE);
            GiveMoney(robOffer[playerid],robmoney[playerid]);
            GiveMoney(playerid,-robmoney[playerid]);
            ots[playerid] = 1;
            SaveAccounts();
        }
    }
Функцию выдачи денег GiveMoney, меняете на ту которая у вас в моде.
Вот весь механизм грабежа сделан, для удобства можно создать команду обыска, что мы сейчас и сделаем:
Сама команда:
HTML:
if(strcmp(cmd,"/robfrisk",true)==0)
    {
          if(IsPlayerConnected(playerid))
           {
            if(IsAGang(playerid))
            {
                tmp = strtok(cmdtext, idx);
                if(!strlen(tmp))
                {
                    SendClientMessage(playerid, COLOR_WHITE, " Используйте: /robfrisk [playerid/PartOfName]");
                    return 1;
                }
                giveplayerid = ReturnUser(tmp);
                if(IsPlayerConnected(giveplayerid))
                {
                    if(giveplayerid != INVALID_PLAYER_ID)
                    {
                        if (ProxDetectorS(8.0, playerid, giveplayerid))
                        {
                            if(giveplayerid == playerid) { SendClientMessage(playerid, COLOR_GREY, "Вы не можете Обыскать себя!"); return 1; }
                            GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
                            GetPlayerName(playerid, sendername, sizeof(sendername));
                            format(string, sizeof(string), "|__________ Кошелек %s __________|", giveplayer);
                            SendClientMessage(playerid, COLOR_WHITE, string);
                            format(string, sizeof(string), "Наличные в кошельке: %d$",GetPlayerMoney(giveplayerid));
                            SendClientMessage(playerid, COLOR_GREEN, string);
                            format(string, sizeof(string), "%s обшманал вас",sendername);
                            if(IsAGang(playerid))
                            {
                                SendClientMessage(giveplayerid, COLOR_LIGHTRED, string);
                                format(string, sizeof(string), "Используйте /robgang что бы совершить ограбление");
                            }
                            SendClientMessage(playerid, COLOR_GREY, string);
                            format(string, sizeof(string), "* %s обшманал %s ", sendername ,giveplayer);
                            ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,0,0);
                        }
                        else
                        {
                            SendClientMessage(playerid, COLOR_GREY, "* Этот игрок не около Вас!");
                            return 1;
                        }
                    }
                }
                else
                {
                    SendClientMessage(playerid, COLOR_GREY, "* Этот игрок является Офлайновым !");
                    return 1;
                }
            }
            else
            {
                SendClientMessage(playerid, COLOR_GREY, "* Вы не бандит !");
                return 1;
            }
        }  
        return 1;
    }
Автор урока:sasa50-Санёк
Автор идеи: Неизвестен
Спасибо за внимание=):df::df::df:
Добавлю​
Так что же нам мешает уменьшить интервал? или вообще его убрать?
Убираем промежуток времени:
Удаляем все ниже перечисленное:
HTML:
new ots[MAX_PLAYERS];//из всех new
ots[i] = 0;//из паблика пейдей
if(ots[playerid] == 1)//из команды /robgang
{
      SendClientMessage(playerid, COLOR_GRAD1, "Грабить можно раз в час");
      return 1;
}
ots[playerid] = 1;//из диалога
Все теперь грабьте сколько хотите=)

Теперь увеличим количество попыток грабежа:
Удалять вышеперечисленное не надо
Заменяем следующие строки:
HTML:
if(ots[playerid] == 5)//команда /rodgang
{
      SendClientMessage(playerid, COLOR_GRAD1, "Грабить можно 5 раз в час");
      return 1;
}
ots[playerid] += 1;
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу