Доступ к готовым решениям

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

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

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

Мануал Система ограбления подобие на CryFox

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

grod

Умник
Всем привет вроде не разу за 5 лет сюда не вылаживал в готовые решения(пришло время выложить) и вот сегодня у видел в группе CryFox систему ограбления мне скрин понравился и я сделал почти как у них смотрим ниже скрин прилагаются

Когда идет ограбление
у кого не грузиться:
у кого не грузиться:

В тексте могут быть ошибки так что сори(да и код не очень но для паблика сойдет)


Так же вы можете скачать его как FS но лучше будет в шить

Нам понадобиться два инклуда
PHP:
#include <CRP>//чтобы текст дравы были на русском
Ко всем new

PHP:
new
	Ogb[MAX_PLAYERS],
	PlayerOgrab[MAX_PLAYERS];

new Text:ograb[14];
new PlayerText:ograbT[MAX_PLAYERS];
new NameActor;
new ograbtimer;
new orgablenie;
потом туда где у вас форварды

PHP:
forward ograblenie(playerid);
forward OgrabForPlayer(playerid);
Далее в public OnPlayerConnect(playerid)

PHP:
        ograbT[playerid] = CreatePlayerTextDraw(playerid,459.666656, 380.804473, "_");
	PlayerTextDrawBackgroundColor(playerid,ograbT[playerid], 51);
	PlayerTextDrawAlignment(playerid,ograbT[playerid], 1);
	PlayerTextDrawLetterSize(playerid,ograbT[playerid], 0.210000, 0.900000);
	PlayerTextDrawFont(playerid,ograbT[playerid], 2);
	PlayerTextDrawColor(playerid,ograbT[playerid], -1);
	PlayerTextDrawSetOutline(playerid,ograbT[playerid], 1);
	PlayerTextDrawSetProportional(playerid,ograbT[playerid], 1);
	PlayerTextDrawSetShadow(playerid,ograbT[playerid],0);
затем в public OnGameModeInit()

PHP:
SetTimer("timersec",1000,true);//создали 1 секундный таймер

NameActor = CreateActor(179, 1832.9752,-1846.0677,13.5781,94.1702);

ograb[1] = TextDrawCreate(631.777954, 232.468719, "usebox");
TextDrawLetterSize(ograb[1], 0.000000, 7.460122);
TextDrawTextSize(ograb[1], 445.110992, 0.000000);
TextDrawAlignment(ograb[1], 1);
TextDrawColor(ograb[1], 0);
TextDrawUseBox(ograb[1], true);
TextDrawBoxColor(ograb[1], 102);
TextDrawSetShadow(ograb[1], 0);
TextDrawSetOutline(ograb[1], 0);
TextDrawFont(ograb[1], 0);

ograb[0] = TextDrawCreate(631.333374, 226.993331, "usebox");
TextDrawLetterSize(ograb[0], 0.000000, 1.532224);
TextDrawTextSize(ograb[0], 445.555541, 0.000000);
TextDrawAlignment(ograb[0], 1);
TextDrawColor(ograb[0], 0);
TextDrawUseBox(ograb[0], true);
TextDrawBoxColor(ograb[0], 1182971135);
TextDrawSetShadow(ograb[0], 0);
TextDrawSetOutline(ograb[0], 0);
TextDrawFont(ograb[0], 0);

ograb[2] = TextDrawCreate(490.888885, 225.991073, "инструкция");
TextDrawLetterSize(ograb[2], 0.449999, 1.600000);
TextDrawAlignment(ograb[2], 1);
TextDrawColor(ograb[2], -1);
TextDrawSetShadow(ograb[2], 0);
TextDrawSetOutline(ograb[2], 1);
TextDrawBackgroundColor(ograb[2], 51);
TextDrawFont(ograb[2], 1);
TextDrawSetProportional(ograb[2], 1);

ograb[3] = TextDrawCreate(448.555328, 241.924362, "~y~нажимайте на нужную иконку в~n~нижней панели для завершения~n~ограбления~n~~r~в случае ошибки попытка~n~ограбления будет провалена");
TextDrawLetterSize(ograb[3], 0.200500, 1.300000);
TextDrawAlignment(ograb[3], 1);
TextDrawColor(ograb[3], -1);
TextDrawSetShadow(ograb[3], 0);
TextDrawSetOutline(ograb[3], 1);
TextDrawBackgroundColor(ograb[3], 51);
TextDrawFont(ograb[3], 2);
TextDrawSetProportional(ograb[3], 1);
ograb[4] = TextDrawCreate(448.222229, 404.699981, "usebox");
TextDrawLetterSize(ograb[4], 0.000000, -11.544317);
TextDrawTextSize(ograb[4], 628.222229, 0.000000);
TextDrawAlignment(ograb[4], 1);
TextDrawColor(ograb[4], 0);
TextDrawUseBox(ograb[4], true);
TextDrawBoxColor(ograb[4], 102);
TextDrawSetShadow(ograb[4], 0);
TextDrawSetOutline(ograb[4], 0);
TextDrawFont(ograb[4], 0);

ograb[5] = TextDrawCreate(631.444580, 305.646484, "usebox");
TextDrawLetterSize(ograb[5], 0.000000, 1.532224);
TextDrawTextSize(ograb[5], 444.666717, 0.000000);
TextDrawAlignment(ograb[5], 1);
TextDrawColor(ograb[5], 0);
TextDrawUseBox(ograb[5], true);
TextDrawBoxColor(ograb[5], 8388863);
TextDrawSetShadow(ograb[5], 0);
TextDrawSetOutline(ograb[5], 0);
TextDrawFont(ograb[5], 0);

ograb[6] = TextDrawCreate(548.445373, 334.506652, "LD_SPAC:white");
TextDrawLetterSize(ograb[6], 0.000000, 0.000000);
TextDrawTextSize(ograb[6], 0.444396, 54.755554);
TextDrawAlignment(ograb[6], 1);
TextDrawColor(ograb[6], -1);
TextDrawSetShadow(ograb[6], 0);
TextDrawSetOutline(ograb[6], 0);
TextDrawFont(ograb[6], 4);

ograb[7] = TextDrawCreate(490.889038, 304.150970, "ограбление");
TextDrawLetterSize(ograb[7], 0.449999, 1.600000);
TextDrawAlignment(ograb[7], 1);
TextDrawColor(ograb[7], -1);
TextDrawSetShadow(ograb[7], 0);
TextDrawSetOutline(ograb[7], 1);
TextDrawBackgroundColor(ograb[7], 51);
TextDrawFont(ograb[7], 1);
TextDrawSetProportional(ograb[7], 1);

ograb[8] = TextDrawCreate(465.888824, 329.528930, "выбери");
TextDrawLetterSize(ograb[8], 0.449999, 1.600000);
TextDrawAlignment(ograb[8], 1);
TextDrawColor(ograb[8], -1);
TextDrawSetShadow(ograb[8], 0);
TextDrawSetOutline(ograb[8], 1);
TextDrawBackgroundColor(ograb[8], 51);
TextDrawFont(ograb[8], 1);
TextDrawSetProportional(ograb[8], 1);
ograb[9] = TextDrawCreate(480.222717, 352.004455, "_");
ograb[10] = TextDrawCreate(560.000183, 336.000000, "LD_BEAT:triang");
ograb[11] = TextDrawCreate(595.222717, 336.004455, "LD_BEAT:square");
ograb[12] = TextDrawCreate(560.222595, 363.884460, "LD_BEAT:circle");
ograb[13] = TextDrawCreate(595.000671, 363.888916, "LD_BEAT:cross");
for(new i = 9; i < 14; i++)
{
    TextDrawLetterSize(ograb[i], 0.000000, 0.000000);
    TextDrawTextSize(ograb[i], 28.444519, 25.386688);
    TextDrawAlignment(ograb[i], 1);
    TextDrawColor(ograb[i], -1);
    TextDrawSetShadow(ograb[i], 0);
    TextDrawSetOutline(ograb[i], 0);
    TextDrawFont(ograb[i], 4);
    TextDrawSetSelectable(ograb[i], true);
}


Далее в public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)

PHP:
if (newkeys & KEY_FIRE)
    {
        if(IsPlayerInRangeOfPoint(playerid,5.0,1832.9752,-1846.0677,13.5781))//5.0 - это от куда начинает действие(1832.9752,-1846.0677,13.5781 позиция актера)
        {
            if(GetPlayerWeapon(playerid) >= 24)//дигл (ограбление начнется когда стрельните из дигла)
            {
                ograblenie(playerid);
            }
        }
    }
За тем в public OnPlayerClickTextDraw(playerid, Text:clickedid)

PHP:
if(clickedid == Text:INVALID_TEXT_DRAW)
    {
        if(GetPVarInt(playerid,"ograb") > 0)
        {
            for(new i; i < 14; i++) TextDrawHideForPlayer(playerid,ograb[i]);
            PlayerTextDrawHide(playerid,ograbT[playerid]);
            ograbtimer = 0;
    		orgablenie = 0;
            SetPVarInt(playerid,"ograb",0);
            ClearAnimations(playerid);
        	ApplyActorAnimation(NameActor, "DEALER","Dealer_idle",4.1,1,0,0,0,0);//меняем анимку после ограбления
        }
    }
    if(clickedid == ograb[10]) //
    {
        if(Ogb[playerid] != 0)return xxx(playerid);//удаляет ТД и попытка ограбления аннулируется  если выбрать другой ТД
        OgrabForPlayer(playerid);
        return 1;
    }
    if(clickedid == ograb[11]) //
    {
        if(Ogb[playerid] != 1)return xxx(playerid);//удаляет ТД и попытка ограбления аннулируется  если выбрать другой ТД
        OgrabForPlayer(playerid);
        return 1;
    }
    if(clickedid == ograb[12]) //
    {
        if(Ogb[playerid] != 2)return xxx(playerid);//удаляет ТД и попытка ограбления аннулируется  если выбрать другой ТД
        OgrabForPlayer(playerid);
        return 1;
    }
    if(clickedid == ograb[13]) //
    {
        if(Ogb[playerid] != 3)return xxx(playerid);//удаляет ТД и попытка ограбления аннулируется  если выбрать другой ТД
        OgrabForPlayer(playerid);
        return 1;
    }
и в конец мода вставляем это

PHP:
public OgrabForPlayer(playerid)
{
    new ran;
    ran = random(4);
    PlayerOgrab[playerid] ++; // прибовляет +1 при ножатие
    switch(ran)
    {
        case 0:
        {
            TextDrawSetString(ograb[9], "LD_BEAT:triang");
            Ogb[playerid] = 0;
        }
        case 1:
        {
            TextDrawSetString(ograb[9], "LD_BEAT:square");
            Ogb[playerid] = 1;
        }
        case 2:
        {
            TextDrawSetString(ograb[9], "LD_BEAT:circle");
            Ogb[playerid] = 2;
        }
        case 3:
        {
            TextDrawSetString(ograb[9], "LD_BEAT:cross");
            Ogb[playerid] = 3;
        }
    }
    OgrabKol(playerid);
    return 1;
}
forward OgrabKol(playerid);
public OgrabKol(playerid)
{
    if(PlayerOgrab[playerid] >= 20)//20 сколько раз нужно нажимать
    {
        for(new i; i < 14; i++) TextDrawHideForPlayer(playerid,ograb[i]);
        PlayerTextDrawHide(playerid,ograbT[playerid]);
        SetPVarInt(playerid,"ograb",0);
        CancelSelectTextDraw(playerid);
        ClearAnimations(playerid);
        ograbtimer = 0;
        orgablenie = 0;
        ApplyActorAnimation(NameActor, "DEALER","Dealer_idle",4.1,1,0,0,0,0);//меняем анимку после ограбления
        SendClientMessage(playerid,-1,"Вы успешно совершили ограбление");
        /*
		Убераем(строчку выше и ниже) и ставим выдачу денег из своего мода или что у вас там будет даваться за ограбление
        */

    }
	return 1;
}
stock xxx(playerid)//если попытка была не удачной
{
    for(new i; i < 14; i++) TextDrawHideForPlayer(playerid,ograb[i]);
    PlayerTextDrawHide(playerid,ograbT[playerid]);
    SetPVarInt(playerid,"ograb",0);
    CancelSelectTextDraw(playerid);
    ograbtimer = 0;
    orgablenie = 0;
	ClearAnimations(playerid);
    ApplyActorAnimation(NameActor, "DEALER","Dealer_idle",4.1,1,0,0,0,0);//меняем анимку после ограбления
    return 1;
}
public ograblenie(playerid)//запускаем наше ограбление
{
    SetPVarInt(playerid, "ograb", 1);//
    SelectTextDraw(playerid,0xddddddaa);
    for(new i; i < 14; i++) TextDrawShowForPlayer(playerid,ograb[i]);
    PlayerTextDrawShow(playerid,ograbT[playerid]);
    PlayerOgrab[playerid] = -1; // -1  это будет = 0 в количестве попыток
    OgrabForPlayer(playerid);
    ApplyAnimation(playerid,"SHOP","ROB_Loop_Threat",4.1,1,0,0,0,0,0);//ваша анимка
    ApplyActorAnimation(NameActor, "SHOP", "SHP_Rob_HandsUP",4.1,1,0,0,0,0);//анимка актера
    orgablenie = 1;
    ograbtimer = 30;//время за которое нужно успеть
    return 1;
}
forward timersec(playerid);
public timersec(playerid)
{
	if(orgablenie == 1 && ograbtimer > 0)
	{
		ograbtimer--;//начинает обратный отчет
        new text[128];
        PlayerTextDrawShow(playerid, ograbT[playerid]);
        format(text, 128, "~g~Прогресс ~r~%d/20~n~~g~Время~y~%s ~g~секунд", PlayerOgrab[playerid],Convert(ograbtimer));
        PlayerTextDrawSetString(playerid,ograbT[playerid], text);
    	return 1;
	}
    if(orgablenie == 1 && ograbtimer == 0) //
	{
		xxx(playerid);//если попытка была не удачной
	}
    return 1;
}
Convert(number)
{
	new hours = 0, mins = 0, secs = 0, string[12];
	hours = floatround(number / 3600);
	mins = floatround((number / 60) - (hours * 60));
	secs = floatround(number - ((hours * 3600) + (mins * 60)));
	if(hours > 0) format(string, sizeof(string), "%i:%02d:%02d", hours, mins, secs);
	else format(string, sizeof(string), "%i:%02d", mins, secs);
	return string;
}
А так же в публики OnPlayerSpawn и OnPlayerDisconnect
Добавить это
PHP:
xxx(playerid);//удаляем наши ТД если умерли во время ограбления
Бот для ограбления находиться у ЖД вокзала ЛС там есть 24/7 он там стоит
и ограбить можно его только когда у вас в руках дигл и нужно стрельнуть или ударить им​
P.S. в stock OgrabKol(playerid) находим
PHP:
/*
		Убераем(строчку выше и ниже) и ставим выдачу денег из своего мода или что у вас там будет даваться за ограбление
*/

Чтобы сделать ограбление раз в час(ОТКРОЙТЕ СПОЙЛЕР)​
Ко всем new
Код:
new RobBot=0;
В public ograblenie(playerid)//
Код:
if(RobBot == 1)
{
    SendClientMessage(playerid, -1, "[Бот] меня уже грабили в этом часу");
    return true;
}
RobBot = 1;
в payday
Код:
RobBot = 0;

Устранены баги которые нашел а это ТД иногда не про подал и повторно не появлялся(эти баги нашел на моде который был взят с паблика и не в писаным в мод)
Поставлены проверки в случаи ошибки(если нету кнопку выберите) ограбление провалиться
так же не много сократил ТД
Добавил удаление при дисконекте и спавне.
и сделал табуляцию кода(но это не важно)
Обновил ссылку на FS(но лучше вписать в мод)​

Русификатор на GTA:SA( ) это если у вас все таки иероглифы в место текста.
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу