Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 5 из 5
  1. #1
    Аватар для Mr_David
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.04.2013
    Сообщений
    63
    Репутация:
    54 ±

    Покупка оружия для банд (копия Vida-Virtual)

    В данном уроке расскажу как сделать покупку оружия для банды идентично серверу Vida-Virtual.

    Сначала мы объявим переменную (добавим ко всем new):
    PHP код:
    new pickup_aztecgun
    Создадим #define:
    PHP код:
    #define DIALOG_GUN 19851 // заменяет название диалога на его ид 
    Теперь создадим пикап на респе банды(Вставляем в public OnGameModeInit):
    PHP код:
    pickup_aztecgun CreatePickup(1254,23,x,y,z); 
    • aztecgun - название переменной объявленной в new (В начале)
    • CreatePickup - Функция создание пикапа
    • 1254 - Ид пикапа(Тут можете выбрать любой)
    • 23 - Тип пикапа (Наступаешь на пикап и он не пропадает а так же остаётся и работает дальше)
    • x - Это координаты пикапа по оси x
    • y - Это координаты пикапа по оси y
    • z - Это координаты пикапа по оси z



    Вот мы и создали пикап. Теперь нужно, чтобы по пикапу открывался диалог с покупкой оружия.

    В public OnPlayerPickupPickup:
    PHP код:
    if(pickupid == pickup_aztecgun)  // Если игрок на пикапе
    {
        if(
    PlayerInfo[playerid][pLeader] == 15 || PlayerInfo[playerid][pMember] == 15// И он состоит в ацтеках (15 - ид фракции)
            
    return ShowPlayerDialog(playerid,DIALOG_GUN,DIALOG_STYLE_LIST,"Выбор оружия","\nDeagle(24)          \t\t\t{A020F0}2500$\nM4A1(250)           \t\t\t{A020F0}7000$\nKnife                 \t\t\t{A020F0}50$\nShotGun(25)        \t\t\t{A020F0}15000$\nMicro SMG(500)      \t\t\t{A020F0}5000$","Далее","Нет"); // Выводим диалог с выбором
        // Если игрок не в ацтеках, выводим сообщение
        
    return SendClientMessage(playeridCOLOR_LIGHTRED2,"* Вы не состоите в Ацтеках!");

    А теперь создадим сам диалог(public OnDialogResponse):

    PHP код:
        if(dialogid == DIALOG_GUN)
        {
            if(
    response == 0)
                return 
    1;
            switch(
    listitem)
            {
                case 
    0:
                {
                    if(
    GetPlayerMoney(playerid) >= 2500)
                    {
                        
    GivePlayerMoney(playerid,-2500);
                        
    ServerGivePlayerWeapons(playerid,24,24);
                        return 
    SendClientMessage(playerid,COLOR_GREEN,"Вы купили {A020F0}Deagle");
                    }
                    else return 
    SendClientMessage(playerid,COLOR_BLUE,"Недостаточно денег");
                }
                case 
    1:
                {
                    if(
    GetPlayerMoney(playerid) >= 6000)
                    {
                        
    GivePlayerMoney(playerid,-6000);
                        
    ServerGivePlayerWeapons(playerid,31,250);
                        return 
    SendClientMessage(playerid,COLOR_GREEN,"Вы купили {A020F0}M4A1");
                    }
                    else return 
    SendClientMessage(playerid,COLOR_BLUE,"Недостаточно денег");
                }
                case 
    2:
                {
                    if(
    GetPlayerMoney(playerid) >= 50)
                    {
                        
    GivePlayerMoney(playerid,-50);
                        
    ServerGivePlayerWeapons(playerid,4,1);
                        return 
    SendClientMessage(playerid,COLOR_GREEN,"Вы купили {A020F0}Нож");
                    }
                    else return 
    SendClientMessage(playerid,COLOR_BLUE,"Недостаточно денег");
                }
                case 
    3:
                {
                    if(
    GetPlayerMoney(playerid) >= 15000)
                    {
                        
    GivePlayerMoney(playerid,-15000);
                        
    ServerGivePlayerWeapons(playerid,25,25);
                        return 
    SendClientMessage(playerid,COLOR_GREEN,"Вы купили {A020F0}Shotgun");
                    }
                    else return 
    SendClientMessage(playerid,COLOR_BLUE,"Недостаточно денег");
                }
                case 
    4:
                {
                    if(
    GetPlayerMoney(playerid) >= 5000)
                    {
                        
    GivePlayerMoney(playerid,-5000);
                        
    ServerGivePlayerWeapons(playerid,28,500);
                        return 
    SendClientMessage(playerid,COLOR_GREEN,"Вы купили {A020F0}Micro SMG");
                    }
                    else return 
    SendClientMessage(playerid,COLOR_BLUE,"Недостаточно денег");
                }
            }
            return 
    1;
        } 
    Теперь подробней:

    Если диалог DIALOG_GUN и игрок выбрал что то из выше перечисленного, то проверяем, есть ли у игрока сума денег на покупку, если есть - забираем деньги за покупку выдаём оружие и отсылаем сообщение "Вы купили ...", а если у игрока нету столько денег - отправляем сообщение "Недостаточно денег".

    Автор: Mr_David

  2. #2
    Аватар для Unreal
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.09.2014
    Сообщений
    133
    Репутация:
    4 ±
    пожалуйста скрин добавьте

  3. #3
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    GetPlayerMoney(playerid) в переменную, религия не разрешает записать?

  4. #4
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Для чего? Кейс срабатывает один раз.

  5. #5
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Мне кажется, что все не так поняли DC, когда он писал про перенос return'а, он имел в виду, что когда условие длинное и не надо было бы листать в бок. А если оно не так уж и велико, то можно обойтись и в одну строку :)

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •