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

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

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

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

Мануал Работа "Торговец пиццей"

Tipok_Eazzy

Изучающий
Пользователь
Регистрация
4 Авг 2013
Сообщения
465
Лучшие ответы
0
Репутация
42
Здравствуйте пользователи портала pawno-info!
Сегодня я бы хотел показать вам новую интересную работу "Торговец пиццей".
Суть работы заключается в том что вы устраиваетесь на работу Торговец пиццей, берёте свободный мопед и ищите клиентов,
находите клиента и предлагаете уму купить у вас пиццу за установленную вами сумму, игрок может согласится на покупку клавишей Y или отказаться N.
После того как игрок покупает у вас пиццу у него в руках она появляется, дальше он может скушать ей нажав правую кнопку мыши.
Не где не видел ранее такой работы, поэтому решил написать её.Надеюсь вам понравится,данной работы я не видел на портале,поэтому решил выложить.


Код

В начало мода добавим две глобальные переменные:
PHP:
new
    pizza_car[2],
    pizza_job
;
В public OnGameModeInit() добавим пикап и мопеды:

PHP:
pizza_car[0] = AddStaticVehicleEx(448, 1892.4830, 2075.0967, 10.3505, 64.6200, -1, -1, 100);
AddStaticVehicleEx(448, 1892.4830, 2077.5967, 10.3505, 64.6200, -1, -1, 100);
AddStaticVehicleEx(448, 1892.4830, 2080.0967, 10.3505, 64.6200, -1, -1, 100);
AddStaticVehicleEx(448, 1892.4830, 2082.0967, 10.3505, 64.6200, -1, -1, 100);
AddStaticVehicleEx(448, 1892.4830, 2084.5967, 10.3505, 64.6200, -1, -1, 100);
pizza_car[1] = AddStaticVehicleEx(448, 1892.4830, 2087.5967, 10.3505, 64.6200, -1, -1, 100);

pizza_job = CreatePickup(2814, 23, 1213.5382, -1318.3356, 13.4798);
Теперь в public OnDialogResponse:

PHP:
case 185:
{
    if(!response) return true;
    switch(GetPVarInt(playerid, "job_pizza"))
    {
        case 0:
        {
            SetPVarInt(playerid, "job_pizza", 1);

            SendClientMessage(playerid, 0x27C400FF, "Вы начали рабочий день Развозчика пиццы.");
            SendClientMessage(playerid, 0x27C400FF, "Возьмите свободный мопед и ищите покупателей.");
            SendClientMessage(playerid, 0x27C400FF, "Команды:"); 
            SendClientMessage(playerid, -1, "/sellpizza [ид игрока] [цена] - Предложить игроку купить у вас пиццу.");
            SendClientMessage(playerid, -1, "/offpizza - Чтобы отменить предложение.");

            SetPlayerSkin(playerid, 167); /*Выдаём временный скин*/ 
        }
        case 1:
        {
            SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); // выдаём прежней скин
            SendClientMessage(playerid, 0xFF6347AA, "Вы закончили рабочий день.");
            
            DeletePVar(playerid, "job_pizza");
            DeletePVar(playerid, "pizza_buy");
            DeletePVar(playerid, "player_transfer");
            DeletePVar(playerid, "player_price");
        }
    }
}
В public OnPlayerDisconnect:

PHP:
if(GetPVarInt(playerid, "job_pizza") > 0)
{
    DeletePVar(playerid, "pizza_buy");
    DeletePVar(playerid, "player_transfer");
    DeletePVar(playerid, "player_price");
}
Теперь в public OnPlayerDeath

PHP:
if(GetPVarInt(playerid, "job_pizza") > 0)
{
    SendClientMessage(playerid, 0xFF6347AA, "Вы погибли рабочий день завершён."); 

    DeletePVar(playerid, "pizza_buy");
    DeletePVar(playerid, "player_transfer");
    DeletePVar(playerid, "player_price");
    DeletePVar(playerid, "job_pizza");
}
В public OnPlayerPickUpPickup:

PHP:
if(pickupid == pizza_job)
{
    if(GetPVarInt(playerid, "job_pizza") == 0) ShowPlayerDialog(playerid, 185, DIALOG_STYLE_MSGBOX, "Торговец пиццей", "\
    Вы хотите начать работу торговец пиццей?\
    ", "Начать", "Закрыть");

    else if(GetPVarInt(playerid, "job_pizza") == 1) return ShowPlayerDialog(playerid, 185, DIALOG_STYLE_MSGBOX, "Торговец пиццей", "\
    Вы хотите закончить работу торговец пиццей?\
    ", "Закончить", "Закрыть");
}
В public OnPlayerKeyStateChange:

PHP:
if(newkeys == KEY_YES)
{
    if(GetPVarInt(playerid, "player_price") > 0)
    {
        static const
            fmt_str0[] = "Вы приняли предложения от %s купить у него пиццу за %d$",
            fmt_str1[] = "%s купил у вас пиццу за %d$";
        new
            str[sizeof fmt_str0 + MAX_PLAYER_NAME + 4],
             i = GetPVarInt(playerid, "player_transfer"),
             price = GetPVarInt(playerid, "player_price");
        
        if(PlayerInfo[playerid][pMoney] < price)  //PlayerInfo[playerid][pMoney] меняем на свою
            return SendClientMessage(playerid, -1, "У вас нет столько денег");
            
        format(str, sizeof(str), fmt_str0, PlayerInfo[i][pMoney], price); //PlayerInfo[i][pMoney] меняем на свою
        SendClientMessage(playerid, 0x27C400FF, str);
        
        format(str, sizeof(str), fmt_str1, PlayerInfo[playerid][pMoney], price); //PlayerInfo[playerid][pMoney] меняем на свою
        SendClientMessage(i, 0x27C400FF, str);

        PlayerInfo[i][pMoney] += price; // PlayerInfo[playerid][pMoney] меняем на свою
        PlayerInfo[playerid][pMoney] -= price; // PlayerInfo[i][pMoney] меняем на свою
        
        
        ApplyAnimation(playerid, "CARRY", "crry_prtial", 4.0, 1, 0, 0, 1, 1, 1);
        SetPlayerAttachedObject(playerid, 1, 2814, 5,  0.027999, 0.000000, 0.182000,  -79.400093, -9.600002, 14.400002,  1.000000, 1.000000, 1.000000);
        SetPlayerSpecialAction (playerid, SPECIAL_ACTION_CARRY);
        
        SetPVarInt(playerid, "pizza_buy", 1);
        DeletePVar(playerid, "player_transfer");
        DeletePVar(playerid, "player_price");
    }
}
if(newkeys == KEY_NO)
{
    if(GetPVarInt(playerid, "player_price") > 0)
    {
        new i = GetPVarInt(playerid, "player_transfer");

        SendClientMessage(playerid, 0xFF6347AA, "Вы отказались от покупки!");
        SendClientMessage(i, 0xFF6347AA, "Игрок отказался покупать у вас пиццу!");

        GameTextForPlayer(i, "~r~NO", 1500, 1);

        DeletePVar(playerid, "player_transfer");
        DeletePVar(playerid, "player_price");
    }
}
if(newkeys == KEY_FIRE)
{
    if(GetPVarInt(playerid, "pizza_buy") == 1)
    {
    
        //....
        //.... здесь добавим переменную вашего хп / сытости
        //....
        
        SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE);
        ApplyAnimation(playerid, "FOOD", "EAT_Burger", 4.0, 0, 1, 1, 0, 0, 1);
        if(IsPlayerAttachedObjectSlotUsed(playerid, 1)) RemovePlayerAttachedObject(playerid, 1);
        
        DeletePVar(playerid, "pizza_buy");
    }
}
Теперь добавим две команды:

PHP:
CMD:sellpizza(playerid, params[])
{
    static const
        fmt_str0[] = "Вы предложили %s купить у вас пиццу за %d$",
        fmt_str1[] = "%s предлагает вам купить пиццу за %d$";
        
    new str[sizeof fmt_str0 + MAX_PLAYER_NAME + 4];
        newcar = GetPlayerVehicleID(playerid);
        
    if(GetPVarInt(playerid, "job_pizza") != 1) return true;
    
    if(newcar < pizza_car[0] || newcar > pizza_car[1])
        return SendClientMessage(playerid, -1, "Вы должны находится на мопеде!");
        
      if(GetPVarInt(playerid, "player_price") > 0)
        return SendClientMessage(playerid, -1, "Вы уже предлагаете кому-то что-то купить!");
        
    if(sscanf(params, "id", params[0], params[1]))
        return SendClientMessage(playerid, -1, "Используйте /sellpizza [ид] [цена]");
        
    if(params[1] < 1 || params[1] > 1000)
        return SendClientMessage(playerid, -1, "Цена от 1$ до 1000$");
        
    if(!IsPlayerConnected(params[0]))
        return SendClientMessage(playerid, -1, "Такого игрока нет!");
        
    if(IsPlayerInAnyVehicle(params[0]))
        return SendClientMessage(playerid, -1, "Игрок находитесь в машине!");
        
    format(str, sizeof(str), fmt_str0, PlayerInfo[params[0]][pName], params[1]); // PlayerInfo[playerid][pName] меняем на свою

Скриншоты










Автор: Jack_Shepard
 
Сверху Снизу