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

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

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

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

[FS] Rusty Brown's Ring Donuts

OKStyle

Адвокат по делам семейным
Administrator
Wiki Team
Регистрация
4 Мар 2011
Сообщения
7,094
Лучшие ответы
226
Репутация
2,455
Награды
11
Итак, зимой 2008 года я делал "супер навороченный" мод, с миллиардами возможностей... Одной из них были пончиковые. Сегодня я немного профиксил код, оформил его в отдельный фильтрскрипт и выкладываю. Теперь Вы можете покушать пончиков и попить молоко/чай/кофе в заведениях "Rusty Brown's Ring Donuts" по всему штату Сан-Андреас.

Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!


Команды (только для ркон-админа, делались для теста):
/d0 - дать себе $20;
/d1 - телепорт к первому заведению;
/d2 - ко второму;
/d3 - к третьему;
/d4 - установить себе здоровье на 80.

PHP:
#include <a_samp>
#define COLOR_INTERFACE_BODY 0xFDE39DAA
/*-------------------------*\
| Rusty Brown's Ring Donuts |
| 06/29/2010 by O.K.Style™  |
\*-------------------------*/
new PU_Donuts[7],Text3D:Confectioner[3],Menu:MENU_Donuts;
new bool:IsPlayerInDonut[MAX_PLAYERS];
public OnFilterScriptInit()
{
    PU_Donuts[0] = CreatePickup(1318,23,1038.2194,-1340.2275,13.7389,0);        // Вход в пончиковую Лос-Сантоса
    PU_Donuts[1] = CreatePickup(1318,23,377.1268,-192.8557,1000.6401,1);        // Выход из пончиковой Лос-Сантоса
    PU_Donuts[2] = CreatePickup(1318,23,-2767.8708,788.8154,52.7813,0);         // Вход в пончиковую Сан-Фиерро
    PU_Donuts[3] = CreatePickup(1318,23,377.1268,-192.8557,1000.6401,2);        // Выход из пончиковой Сан-Фиерро
    PU_Donuts[4] = CreatePickup(1318,23,-144.0197,1224.4497,19.8992,0);         // Вход в пончиковую Форта Карсон
    PU_Donuts[5] = CreatePickup(1318,23,377.1268,-192.8557,1000.6401,3);        // Выход из пончиковой Форта Карсон
    PU_Donuts[6] = CreatePickup(1274,23,379.2723,-190.3757,1000.0,-1);          // Меню пончиковой // Закоментируйте строку и будет чекпоинт как в аммо
    ConnectNPC("Confectioner_1","blank");
    ConnectNPC("Confectioner_2","blank");
    ConnectNPC("Confectioner_3","blank");
    MENU_Donuts = CreateMenu("Rusty's Donut",2,50.0,140.0,250.0,10.0);
    SetMenuColumnHeader(MENU_Donuts,0,"Product");
    SetMenuColumnHeader(MENU_Donuts,1,"Cost");
    AddMenuItem(MENU_Donuts,0,"Donut with condensed milk");
    AddMenuItem(MENU_Donuts,1,"$8");
    AddMenuItem(MENU_Donuts,0,"Donut with powdered sugar");
    AddMenuItem(MENU_Donuts,1,"$7");
    AddMenuItem(MENU_Donuts,0,"Donut with chocolate");
    AddMenuItem(MENU_Donuts,1,"$6");
    AddMenuItem(MENU_Donuts,0,"Cup of milk");
    AddMenuItem(MENU_Donuts,1,"$5");
    AddMenuItem(MENU_Donuts,0,"Cup of tea");
    AddMenuItem(MENU_Donuts,1,"$4");
    AddMenuItem(MENU_Donuts,0,"Cup of coffee");
    AddMenuItem(MENU_Donuts,1,"$3");
    AddMenuItem(MENU_Donuts,0,"Exit");
    return 1;
}
public OnPlayerSpawn(playerid)
{
    if(IsPlayerNPC(playerid))
    {
        new NPCName[MAX_PLAYER_NAME];
        GetPlayerName(playerid,NPCName,sizeof(NPCName));
        if(!strcmp(NPCName,"Confectioner_1",true))
        {
            SetPlayerInterior(playerid,17);
            SetPlayerVirtualWorld(playerid,1);
            SetPlayerColor(playerid,COLOR_INTERFACE_BODY);
            SetPlayerSkin(playerid,209);
            SetPlayerPos(playerid,380.6690,-189.0937,1000.6328);
            SetPlayerFacingAngle(playerid,145.4114);
            Confectioner[0] = Create3DTextLabel("Продавец пончиков",0xFDE39DFF,0.0,0.0,0.0,10.0,1,0);
            Attach3DTextLabelToPlayer(Confectioner[0],playerid,0.0,0.0,0.15);
        }
        else if(!strcmp(NPCName,"Confectioner_2",true))
        {
            SetPlayerInterior(playerid,17);
            SetPlayerVirtualWorld(playerid,2);
            SetPlayerColor(playerid,COLOR_INTERFACE_BODY);
            SetPlayerSkin(playerid,209);
            SetPlayerPos(playerid,380.6690,-189.0937,1000.6328);
            SetPlayerFacingAngle(playerid,145.4114);
            Confectioner[0] = Create3DTextLabel("Продавец пончиков",0xFDE39DFF,0.0,0.0,0.0,10.0,1,0);
            Attach3DTextLabelToPlayer(Confectioner[0],playerid,0.0,0.0,0.15);
        }
        else if(!strcmp(NPCName,"Confectioner_3",true))
        {
            SetPlayerInterior(playerid,17);
            SetPlayerVirtualWorld(playerid,3);
            SetPlayerColor(playerid,COLOR_INTERFACE_BODY);
            SetPlayerSkin(playerid,209);
            SetPlayerPos(playerid,380.6690,-189.0937,1000.6328);
            SetPlayerFacingAngle(playerid,145.4114);
            Confectioner[0] = Create3DTextLabel("Продавец пончиков",0xFDE39DFF,0.0,0.0,0.0,10.0,1,0);
            Attach3DTextLabelToPlayer(Confectioner[0],playerid,0.0,0.0,0.15);
        }
    }
    SetPlayerMapIcon(playerid,0,1038.2194,-1340.2275,13.7389,40,-1);
    SetPlayerMapIcon(playerid,1,-2767.8708,788.8154,52.7813,40,-1);
    SetPlayerMapIcon(playerid,2,-144.0197,1224.4497,19.8992,40,-1);
    IsPlayerInDonut[playerid] = false;
    return 1;
}
public OnPlayerPickUpPickup(playerid,pickupid)
{
    if(pickupid == PU_Donuts[0])
    {
        SetPlayerInterior(playerid,17);
        SetPlayerVirtualWorld(playerid,1);
        SetPlayerPos(playerid,377.8349,-191.2160,1000.6328);
        SetPlayerFacingAngle(playerid,0.0);
        SetCameraBehindPlayer(playerid);
        GameTextForPlayer(playerid,"Rusty Brown's Ring Donuts",5000,1);
//        SetPlayerCheckpoint(playerid,379.2723,-190.3757,1000.0,1.0);            // Раскомментируйте сроки и будет чекпоинт как в аммо
    }
    if(pickupid == PU_Donuts[1])
    {
        SetPlayerInterior(playerid,0);
        SetPlayerVirtualWorld(playerid,0);
        SetCameraBehindPlayer(playerid);
        SetPlayerPos(playerid,1038.6129,-1337.7944,13.7266);
        SetPlayerFacingAngle(playerid,0.0);
//        DisablePlayerCheckpoint(playerid);
    }
    if(pickupid == PU_Donuts[2])
    {
        SetPlayerInterior(playerid,17);
        SetPlayerVirtualWorld(playerid,2);
        SetPlayerPos(playerid,377.8349,-191.2160,1000.6328);
        SetPlayerFacingAngle(playerid,0.0);
        SetCameraBehindPlayer(playerid);
        GameTextForPlayer(playerid,"Rusty Brown's Ring Donuts",5000,1);
//        SetPlayerCheckpoint(playerid,379.2723,-190.3757,1000.0,1.0);
    }
    if(pickupid == PU_Donuts[3])
    {
        SetPlayerInterior(playerid,0);
        SetPlayerVirtualWorld(playerid,0);
        SetPlayerPos(playerid,-2765.8887,789.3812,52.7813);
        SetPlayerFacingAngle(playerid,180.0);
        SetCameraBehindPlayer(playerid);
//        DisablePlayerCheckpoint(playerid);
    }
    if(pickupid == PU_Donuts[4])
    {
        SetPlayerInterior(playerid,17);
        SetPlayerVirtualWorld(playerid,3);
        SetPlayerPos(playerid,377.8349,-191.2160,1000.6328);
        SetPlayerFacingAngle(playerid,0.0);
        SetCameraBehindPlayer(playerid);
        GameTextForPlayer(playerid,"Rusty Brown's Ring Donuts",5000,1);
//        SetPlayerCheckpoint(playerid,379.2723,-190.3757,1000.0,1.0);
    }
    if(pickupid == PU_Donuts[5])
    {
        SetPlayerInterior(playerid,0);
        SetPlayerVirtualWorld(playerid,0);
        SetPlayerPos(playerid,-144.0139,1222.0508,19.8992);
        SetPlayerFacingAngle(playerid,180.0);
        SetCameraBehindPlayer(playerid);
//        DisablePlayerCheckpoint(playerid);
    }
    if(pickupid == PU_Donuts[6])
    {
        if(IsPlayerInDonut[playerid] == false)
        {
            IsPlayerInDonut[playerid] = true;
            TogglePlayerControllable(playerid,0);
            SetPlayerPos(playerid,379.2723,-190.3757,1000.6328);
            SetPlayerFacingAngle(playerid,311.3329);
            ShowMenuForPlayer(MENU_Donuts,playerid);
            SetCameraBehindPlayer(playerid);
        }
    }
}
/*
public OnPlayerEnterCheckpoint(playerid)
{
    if(IsPlayerInDonut[playerid] == false)
    {
        IsPlayerInDonut[playerid] = true;
        TogglePlayerControllable(playerid,0);
        SetPlayerPos(playerid,379.2723,-190.3757,1000.6328);
        SetPlayerFacingAngle(playerid,311.3329);
        ShowMenuForPlayer(MENU_Donuts,playerid);
        SetCameraBehindPlayer(playerid);
    }
    return 1;
}
*/
public OnPlayerCommandText(playerid,cmdtext[])
{
    if(!strcmp(cmdtext,"/d0",true) && IsPlayerAdmin(playerid)) return GivePlayerMoney(playerid,20);
    if(!strcmp(cmdtext,"/d1",true) && IsPlayerAdmin(playerid)) return SetPlayerPos(playerid,1038.6129,-1337.7944,13.7266);
    if(!strcmp(cmdtext,"/d2",true) && IsPlayerAdmin(playerid)) return SetPlayerPos(playerid,-2765.8887,789.3812,52.7813);
    if(!strcmp(cmdtext,"/d3",true) && IsPlayerAdmin(playerid)) return SetPlayerPos(playerid,-144.0139,1222.0508,19.8992);
    if(!strcmp(cmdtext,"/d4",true) && IsPlayerAdmin(playerid)) return SetPlayerHealth(playerid,80.0);
    if(!strcmp(cmdtext,"/about",true)) return SendClientMessage(playerid,COLOR_INTERFACE_BODY,"Скрипт от O.K.Style™ | ICQ: 402-747-399");
    return 0;
}
public OnPlayerSelectedMenuRow(playerid,row)
{
    if(GetPlayerMenu(playerid) == MENU_Donuts)
    {
        switch(row)
        {
            case 0:
            {
                if(GetPlayerMoney(playerid) < 8)
                {
                    SendClientMessage(playerid,COLOR_INTERFACE_BODY,"К сожалению у Вас не хватает денег на это.");
                    ShowMenuForPlayer(MENU_Donuts,playerid);
                }
                else
                {
                    GivePlayerMoney(playerid,-8);
                    new Float:HP;
                    GetPlayerHealth(playerid,HP);
                    if(HP < 100.0) SetPlayerHealth(playerid,HP+random(3)+2);
                    HideMenuForPlayer(MENU_Donuts,playerid);
                    TogglePlayerControllable(playerid,1);
                    SendClientMessage(playerid,COLOR_INTERFACE_BODY,"Вы купили пончик со сгущёнкой за $8. Кушайте на здоровье и приходите к нам снова!");
                    IsPlayerInDonut[playerid] = false;
                }
            }
            case 1:
            {
                if(GetPlayerMoney(playerid) < 7)
                {
                    SendClientMessage(playerid,COLOR_INTERFACE_BODY,"К сожалению у Вас не хватает денег на это.");
                    ShowMenuForPlayer(MENU_Donuts,playerid);
                }
                else
                {
                    GivePlayerMoney(playerid,-7);
                    new Float:HP;
                    GetPlayerHealth(playerid,HP);
                    if(HP < 100.0) SetPlayerHealth(playerid,HP+random(3)+2);
                    HideMenuForPlayer(MENU_Donuts,playerid);
                    TogglePlayerControllable(playerid,1);
                    SendClientMessage(playerid,COLOR_INTERFACE_BODY,"Вы купили пончик с сахарной пудрой за $7. Кушайте на здоровье и приходите к нам снова!");
                    IsPlayerInDonut[playerid] = false;
                }
            }
            case 2:
            {
                if(GetPlayerMoney(playerid) < 6)
                {
                    SendClientMessage(playerid,COLOR_INTERFACE_BODY,"К сожалению у Вас не хватает денег на это.");
                    ShowMenuForPlayer(MENU_Donuts,playerid);
                }
                else
                {
                    GivePlayerMoney(playerid,-6);
                    new Float:HP;
                    GetPlayerHealth(playerid,HP);
                    if(HP < 100.0) SetPlayerHealth(playerid,HP+random(3)+2);
                    HideMenuForPlayer(MENU_Donuts,playerid);
                    TogglePlayerControllable(playerid,1);
                    SendClientMessage(playerid,COLOR_INTERFACE_BODY,"Вы купили пончик с шоколадом за $6. Кушайте на здоровье и приходите к нам снова!");
                    IsPlayerInDonut[playerid] = false;
                }
            }
            case 3:
            {
                if(GetPlayerMoney(playerid) < 5)
                {
                    SendClientMessage(playerid,COLOR_INTERFACE_BODY,"К сожалению у Вас не хватает денег на это.");
                    ShowMenuForPlayer(MENU_Donuts,playerid);
                }
                else
                {
                    GivePlayerMoney(playerid,-5);
                    new Float:HP;
                    GetPlayerHealth(playerid,HP);
                    if(HP < 100.0) SetPlayerHealth(playerid,HP+random(3)+2);
                    HideMenuForPlayer(MENU_Donuts,playerid);
                    TogglePlayerControllable(playerid,1);
                    SendClientMessage(playerid,COLOR_INTERFACE_BODY,"Вы купили чашку молока за $5. Пейте на здоровье и приходите к нам снова!");
                    IsPlayerInDonut[playerid] = false;
                }
            }
            case 4:
            {
                if(GetPlayerMoney(playerid) < 4)
                {
                    SendClientMessage(playerid,COLOR_INTERFACE_BODY,"К сожалению у Вас не хватает денег на это.");
                    ShowMenuForPlayer(MENU_Donuts,playerid);
                }
                else
                {
                    GivePlayerMoney(playerid,-4);
                    new Float:HP;
                    GetPlayerHealth(playerid,HP);
                    if(HP < 100.0) SetPlayerHealth(playerid,HP+random(3)+2);
                    HideMenuForPlayer(MENU_Donuts,playerid);
                    TogglePlayerControllable(playerid,1);
                    SendClientMessage(playerid,COLOR_INTERFACE_BODY,"Вы купили чашку чая за $4. Пейте на здоровье и приходите к нам снова!");
                    IsPlayerInDonut[playerid] = false;
                }
            }
            case 5:
            {
                if(GetPlayerMoney(playerid) < 3)
                {
                    SendClientMessage(playerid,COLOR_INTERFACE_BODY,"К сожалению у Вас не хватает денег на это.");
                    ShowMenuForPlayer(MENU_Donuts,playerid);
                }
                else
                {
                    GivePlayerMoney(playerid,-3);
                    new Float:HP;
                    GetPlayerHealth(playerid,HP);
                    if(HP < 100.0) SetPlayerHealth(playerid,HP+random(3)+2);
                    HideMenuForPlayer(MENU_Donuts,playerid);
                    TogglePlayerControllable(playerid,1);
                    SendClientMessage(playerid,COLOR_INTERFACE_BODY,"Вы купили чашку кофе за $3. Пейте на здоровье и приходите к нам снова!");
                    IsPlayerInDonut[playerid] = false;
                }
            }
            case 6:
            {
                HideMenuForPlayer(MENU_Donuts,playerid);
                TogglePlayerControllable(playerid,1);
                IsPlayerInDonut[playerid] = false;
            }
        }
    }
    return 1;
}
public OnPlayerExitedMenu(playerid)
{
    TogglePlayerControllable(playerid,1);
    IsPlayerInDonut[playerid] = false;
    return 1;
}
public OnPlayerDeath(playerid,killerid,reason)
{
    #pragma unused killerid
    #pragma unused reason
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid,0);
    return 1;
}
public OnFilterScriptExit()
{
    for(new i;i<sizeof(PU_Donuts);i++) DestroyPickup(PU_Donuts[i]);
    for(new j;j<GetMaxPlayers();j++)
    {
        if(IsPlayerNPC(j)) Kick(j);
        HideMenuForPlayer(MENU_Donuts,j);
        if(IsPlayerInDonut[j] == true) TogglePlayerControllable(j,1);
    }
    for(new k;k<sizeof(Confectioner);k++) Delete3DTextLabel(Confectioner[k]);
    DestroyMenu(MENU_Donuts);
    return 1;
}
Автор: OKStyle

ЗЫ: В планах есть реализация на текстдравах, как в мобильных GTA, но не думаю, что будет релиз.
 
Сверху Снизу