Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 20
  1. #1
    Аватар для Andrik851
    Пользователь

    Статус
    Оффлайн
    Регистрация
    03.10.2018
    Сообщений
    199
    Репутация:
    1 ±

    Уходят в минус материалы фракций

    Доброго времени суток !
    Подскажите пожалуйста какой нужно прописать параметр в код чтобы при взятии фракцией оружия материалы не уходили в минус

    код:

    PHP код:
                    case 0:
                    {
                        if(
    GetPlayerWeapon(playerid) == 24 && GetPlayerAmmo(playerid) >= 75) return SendClientMessage(playeridCOLOR_GREY"[INFO] Вы не можете унести больше оружия.");
                        
    GiveWeapon(playerid2475);
                        
    DisablePlayerCheckpoint(playerid);
                        
    Mats[1] -=75;
                        
    SetOtherInt("lspdmats"Mats[1]);
                        
    Action(playerid"взял Desert Eagle из шкафчика");
                        
    ShowPlayerDialog(playeridD_GUNSDIALOG_STYLE_LIST"Боекомплект полиции""\
                        {FFFFF0}1. Взять {CD5C5C}Desert Deagle\n\
                        {FFFFF0}2. Взять {CD5C5C}AK-47\n\
                        {FFFFF0}3. Взять {CD5C5C}MP5\n\
                        {FFFFF0}4. Взять {CD5C5C}бронежилет\n\
                        {FFFFF0}5. Взять {CD5C5C}дубинку\n\
                        {FFFFF0}6. Взять {CD5C5C}газовый балончик\n\
                        {FFFFF0}7. Взять {CD5C5C}щит"
    "Выбрать""Отмена");
                    } 

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

    Статус
    Оффлайн
    Регистрация
    30.03.2019
    Сообщений
    24
    Репутация:
    2 ±
    Я так понимаю, что у тебя все оружие по 75 матов, то добавь
    PHP код:
    if(GetPlayerWeapon(playerid) == 24 && GetPlayerAmmo(playerid) >= 75) return SendClientMessage(playeridCOLOR_GREY"[INFO] Вы не можете унести больше оружия."); 
    //Вот эту проверку
    if((Mats[1]-75) < 0)  return SendClientMessage(playeridCOLOR_GREY"[INFO] Недостаточно материалов, чтобы взять оружие."); 

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

    Статус
    Оффлайн
    Регистрация
    03.10.2018
    Сообщений
    199
    Репутация:
    1 ±
    Цитата Сообщение от Xeno Посмотреть сообщение
    Я так понимаю, что у тебя все оружие по 75 матов, то добавь
    PHP код:
    if(GetPlayerWeapon(playerid) == 24 && GetPlayerAmmo(playerid) >= 75) return SendClientMessage(playeridCOLOR_GREY"[INFO] Вы не можете унести больше оружия."); 
    //Вот эту проверку
    if((Mats[1]-75) < 0)  return SendClientMessage(playeridCOLOR_GREY"[INFO] Недостаточно материалов, чтобы взять оружие."); 
    Нет у меня на каждое оружие разные маты 75 150 200

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

    Статус
    Оффлайн
    Регистрация
    30.03.2019
    Сообщений
    24
    Репутация:
    2 ±
    Понял, делай значит в остальных проверку и устанавливай вместо 75 нужное число. В case 1, case 2 и т.д.
    PHP код:
    if((Mats[1]-150) < 0)  return SendClientMessage(playeridCOLOR_GREY"[INFO] Недостаточно материалов, чтобы взять оружие."); 
    PHP код:
    if((Mats[1]-200) < 0)  return SendClientMessage(playeridCOLOR_GREY"[INFO] Недостаточно материалов, чтобы взять оружие."); 

  5. #5
    Аватар для Andrik851
    Пользователь

    Статус
    Оффлайн
    Регистрация
    03.10.2018
    Сообщений
    199
    Репутация:
    1 ±
    Цитата Сообщение от Xeno Посмотреть сообщение
    Понял, делай значит в остальных проверку и устанавливай вместо 75 нужное число. В case 1, case 2 и т.д.
    PHP код:
    if((Mats[1]-150) < 0)  return SendClientMessage(playeridCOLOR_GREY"[INFO] Недостаточно материалов, чтобы взять оружие."); 
    PHP код:
    if((Mats[1]-200) < 0)  return SendClientMessage(playeridCOLOR_GREY"[INFO] Недостаточно материалов, чтобы взять оружие."); 
    я понял спасибо просто всмотрелся в проверку и догался что можно исправить числовое значение на нужное

    - - - Добавлено - - -

    Сделал как вы и посоветовали но оружие всеровно берется с заявленными в коде патронами
    у меня 26 материалов а автомат со 150 патронами взялся выводится только сообщении что нет материалов а так все берется

    и еще такой вопрос подскажите пожалуйста у меня база обновляется только после выхода из игры или рестарте сервера может быть есть какойто таймер который делает запрос в базу для обновления

  6. #6
    Аватар для Xeno
    Пользователь

    Статус
    Оффлайн
    Регистрация
    30.03.2019
    Сообщений
    24
    Репутация:
    2 ±
    Можешь полностью case1 скинуть, я так понимаю он ак выдает со 150 патронами

  7. #7
    Аватар для Andrik851
    Пользователь

    Статус
    Оффлайн
    Регистрация
    03.10.2018
    Сообщений
    199
    Репутация:
    1 ±
    вот полностью весь диалог

    PHP код:
        case D_GUNS://боекомплект полиция
        
    {
             if(
    response)
            {
                switch(
    listitem)
                {
                    case 
    0:
                    {
                        if(
    GetPlayerWeapon(playerid) == 24 && GetPlayerAmmo(playerid) >= 75) return SendClientMessage(playeridCOLOR_GREY"[INFO] Вы не можете унести больше оружия.");
                        
    GiveWeapon(playerid2475);
                        if((
    Mats[1]-75) < 0)  return SendClientMessage(playeridCOLOR_GREY"[INFO] На складе нет боеприпасов.");
                        
    DisablePlayerCheckpoint(playerid);
                        
    Mats[1] -=75;
                        
    SetOtherInt("lspdmats"Mats[1]);
                        
    Action(playerid"взял Desert Eagle из шкафчика");
                        
    ShowPlayerDialog(playeridD_GUNSDIALOG_STYLE_LIST"Боекомплект полиции""\
                        {FFFFF0}1. Взять {CD5C5C}Desert Deagle\n\
                        {FFFFF0}2. Взять {CD5C5C}AK-47\n\
                        {FFFFF0}3. Взять {CD5C5C}MP5\n\
                        {FFFFF0}4. Взять {CD5C5C}бронежилет\n\
                        {FFFFF0}5. Взять {CD5C5C}дубинку\n\
                        {FFFFF0}6. Взять {CD5C5C}газовый балончик\n\
                        {FFFFF0}7. Взять {CD5C5C}щит"
    "Выбрать""Отмена");
                    }
                    case 
    1:
                    {
                        if(
    GetPlayerWeapon(playerid) == 30 && GetPlayerAmmo(playerid) >= 150) return SendClientMessage(playeridCOLOR_GREY"[INFO] Вы не можете унести больше оружия.");
                        
    GiveWeapon(playerid30150);
                        if((
    Mats[1]-150) < 0)  return SendClientMessage(playeridCOLOR_GREY"[INFO] На складе нет боеприпасов.");
                        
    DisablePlayerCheckpoint(playerid);
                        
    Mats[1] -=150;
                        
    SetOtherInt("lspdmats"Mats[1]);
                        
    Action(playerid"взял AK-47 из шкафчика");
                        
    ShowPlayerDialog(playeridD_GUNSDIALOG_STYLE_LIST"Боекомплект полиции""\
                        {FFFFF0}1. Взять {CD5C5C}Desert Deagle\n\
                        {FFFFF0}2. Взять {CD5C5C}AK-47\n\
                        {FFFFF0}3. Взять {CD5C5C}MP5\n\
                        {FFFFF0}4. Взять {CD5C5C}бронежилет\n\
                        {FFFFF0}5. Взять {CD5C5C}дубинку\n\
                        {FFFFF0}6. Взять {CD5C5C}газовый балончик\n\
                        {FFFFF0}7. Взять {CD5C5C}щит"
    "Выбрать""Отмена");
                    }
                    case 
    2:
                    {
                        if(
    GetPlayerWeapon(playerid) == 29 && GetPlayerAmmo(playerid) >= 200) return SendClientMessage(playeridCOLOR_GREY"[INFO] Вы не можете унести больше оружия.");
                        
    GiveWeapon(playerid29200);
                        if((
    Mats[1]-200) < 0)  return SendClientMessage(playeridCOLOR_GREY"[INFO] На складе нет боеприпасов.");
                        
    DisablePlayerCheckpoint(playerid);
                        
    Mats[1] -=200;
                        
    SetOtherInt("lspdmats"Mats[1]);
                        
    Action(playerid"взял MP5 из шкафчика");
                        
    ShowPlayerDialog(playeridD_GUNSDIALOG_STYLE_LIST"Боекомплект полиции""\
                        {FFFFF0}1. Взять {CD5C5C}Desert Deagle\n\
                        {FFFFF0}2. Взять {CD5C5C}AK-47\n\
                        {FFFFF0}3. Взять {CD5C5C}MP5\n\
                        {FFFFF0}4. Взять {CD5C5C}бронежилет\n\
                        {FFFFF0}5. Взять {CD5C5C}дубинку\n\
                        {FFFFF0}6. Взять {CD5C5C}газовый балончик\n\
                        {FFFFF0}7. Взять {CD5C5C}щит"
    "Выбрать""Отмена");
                    }
                    case 
    3:
                    {
                        
    SetHealth(playerid100);
                        
    SetArmour(playerid100);
                        
    Action(playerid"взял бронежилет из шкафчика");
                        
    SetPlayerAttachedObject(playerid3,1914210.00.0560.0000,1.3,1.3,1.1);
                        
    ShowPlayerDialog(playeridD_GUNSDIALOG_STYLE_LIST"Боекомплект полиции""\
                        {FFFFF0}1. Взять {CD5C5C}Desert Deagle\n\
                        {FFFFF0}2. Взять {CD5C5C}AK-47\n\
                        {FFFFF0}3. Взять {CD5C5C}MP5\n\
                        {FFFFF0}4. Взять {CD5C5C}бронежилет\n\
                        {FFFFF0}5. Взять {CD5C5C}дубинку\n\
                        {FFFFF0}6. Взять {CD5C5C}газовый балончик\n\
                        {FFFFF0}7. Взять {CD5C5C}щит"
    "Выбрать""Отмена");
                    }
                    case 
    4:
                    {
                        if(
    GetPlayerWeapon(playerid) == 3) return SendClientMessage(playeridCOLOR_GREY"[INFO] У Вас уже есть дубинка.");
                        
    GiveWeapon(playerid31);
                        if((
    Mats[1]- 1) < 0)  return SendClientMessage(playeridCOLOR_GREY"[INFO] На складе нет боеприпасов.");
                        
    DisablePlayerCheckpoint(playerid);
                        
    Mats[1] -=1;
                        
    SetOtherInt("lspdmats"Mats[1]);
                        
    Action(playerid"взял дубинку из шкафчика");
                        
    ShowPlayerDialog(playeridD_GUNSDIALOG_STYLE_LIST"Боекомплект полиции""\
                        {FFFFF0}1. Взять {CD5C5C}Desert Deagle\n\
                        {FFFFF0}2. Взять {CD5C5C}AK-47\n\
                        {FFFFF0}3. Взять {CD5C5C}MP5\n\
                        {FFFFF0}4. Взять {CD5C5C}бронежилет\n\
                        {FFFFF0}5. Взять {CD5C5C}дубинку\n\
                        {FFFFF0}6. Взять {CD5C5C}газовый балончик\n\
                        {FFFFF0}7. Взять {CD5C5C}щит"
    "Выбрать""Отмена");
                    }
                    case 
    5:
                    {
                        if(
    GetPlayerWeapon(playerid) == WEAPON_POLICE) return SendClientMessage(playeridCOLOR_GREY"[INFO] У Вас уже есть балончик.");
                        
    GiveWeapon(playerid,WEAPON_POLICE,250);
                        
    Action(playerid"взял балончик из шкафчика");
                        
    ShowPlayerDialog(playeridD_GUNSDIALOG_STYLE_LIST"Боекомплект полиции""\
                        {FFFFF0}1. Взять {CD5C5C}Desert Deagle\n\
                        {FFFFF0}2. Взять {CD5C5C}AK-47\n\
                        {FFFFF0}3. Взять {CD5C5C}MP5\n\
                        {FFFFF0}4. Взять {CD5C5C}бронежилет\n\
                        {FFFFF0}5. Взять {CD5C5C}дубинку\n\
                        {FFFFF0}6. Взять {CD5C5C}газовый балончик\n\
                        {FFFFF0}7. Взять {CD5C5C}щит"
    "Выбрать""Отмена");
                    }
                    case 
    6:
                    {
                        if(
    Shit[playerid] == 1) return SendClientMessage(playeridCOLOR_GREY"[INFO] У Вас уже есть щит, используйте /shieldtake , чтобы снять его.");
                        
    SetPlayerAttachedObject(playerid618637140.00.00.00.0180.0180.0);
                        
    Action(playerid"взял щит из шкафчика");
                        
    ShowPlayerDialog(playeridD_GUNSDIALOG_STYLE_LIST"Боекомплект полиции""\
                        {FFFFF0}1. Взять {CD5C5C}Desert Deagle\n\
                        {FFFFF0}2. Взять {CD5C5C}AK-47\n\
                        {FFFFF0}3. Взять {CD5C5C}MP5\n\
                        {FFFFF0}4. Взять {CD5C5C}бронежилет\n\
                        {FFFFF0}5. Взять {CD5C5C}дубинку\n\
                        {FFFFF0}6. Взять {CD5C5C}газовый балончик\n\
                        {FFFFF0}7. Взять {CD5C5C}щит"
    "Выбрать""Отмена");
                    }
                }
            }
        } 
    - - - Добавлено - - -

    он выдает все что запросишь

  8. #8
    Аватар для Xeno
    Пользователь

    Статус
    Оффлайн
    Регистрация
    30.03.2019
    Сообщений
    24
    Репутация:
    2 ±
    Смотри, потому что ты поставил проверку ниже выдачи оружия:
    PHP код:
    GiveWeapon(playerid30150);// Сначала выдаем
    if((Mats[1]-150) < 0)  return SendClientMessage(playeridCOLOR_GREY"[INFO] На складе нет боеприпасов."); // потом проверяем
    DisablePlayerCheckpoint(playerid); 
    Делай везде вот так
    PHP код:
    if(GetPlayerWeapon(playerid) == 24 && GetPlayerAmmo(playerid) >= 75) return SendClientMessage(playeridCOLOR_GREY"[INFO] Вы не можете унести больше оружия.");
    else if((
    Mats[1]-75) < 0)  return SendClientMessage(playeridCOLOR_GREY"[INFO] На складе нет боеприпасов.");
    GiveWeapon(playerid2475);
    //остальной код 

  9. #9
    Аватар для Andrik851
    Пользователь

    Статус
    Оффлайн
    Регистрация
    03.10.2018
    Сообщений
    199
    Репутация:
    1 ±
    Цитата Сообщение от Xeno Посмотреть сообщение
    Смотри, потому что ты поставил проверку ниже выдачи оружия:
    PHP код:
    GiveWeapon(playerid30150);// Сначала выдаем
    if((Mats[1]-150) < 0)  return SendClientMessage(playeridCOLOR_GREY"[INFO] На складе нет боеприпасов."); // потом проверяем
    DisablePlayerCheckpoint(playerid); 
    Делай везде вот так
    PHP код:
    if(GetPlayerWeapon(playerid) == 24 && GetPlayerAmmo(playerid) >= 75) return SendClientMessage(playeridCOLOR_GREY"[INFO] Вы не можете унести больше оружия.");
    else if((
    Mats[1]-75) < 0)  return SendClientMessage(playeridCOLOR_GREY"[INFO] На складе нет боеприпасов.");
    GiveWeapon(playerid2475);
    //остальной код 
    Все нормально работает

    - - - Добавлено - - -

    а как насчет базы можно как то это решить или это просто текст который мне показывает количесто материалов на складе не меняется

  10. #10
    Аватар для Xeno
    Пользователь

    Статус
    Оффлайн
    Регистрация
    30.03.2019
    Сообщений
    24
    Репутация:
    2 ±
    Используй
    PHP код:
    Update3DTextLabelText(mylabel0xFFFFFFFF"текст"); 
    В предыдущей теме ты их создавал.
    PHP код:
    format(string60"Боеприпасы:       {FF9900}%i{ffffff}          шт."Mats[1]); //police 
    tPickup[34] = Create3DTextLabel(string,0xFFFFFFFF2562.8242, -2423.300522.0044+0.5,5.000); 
    А обновлять будешь так:
    PHP код:
    format(string60"Боеприпасы:       {FF9900}%i{ffffff}          шт."Mats[1]); //police 
    Update3DTextLabelText(tPickup[34], 0xFFFFFFFFstring); 
    Делай обновление 3д текста сразу после взятия ганов и все.
    Последний раз редактировалось Xeno; 05.04.2019 в 18:45.

 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

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

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

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

Ваши права

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