Question

trevison
Активный

Столкнулся с проблемой, что когда кидают какое-нибудь предложение с продажей бизнеса или что-нибудь подобное, где нужно согласиться на Y или отказаться на N - открывается инвентарь ( инвентарь на Y )

так выглядит само открытие инвентаря:

if(!active_accept(playerid)  && GetPVarInt(playerid,"invstat") == -1) pc_cmd_inv(playerid);

сток active_accept: 

stock active_accept(playerid) {
    if(GetPVarInt(playerid,"invstat") != -1return 1;
    else return 0;
}

вот какие проверки используются при нажатии Y:

            pTemp[playerid][pSellHouseOffee] == playerid ||
            GetPVarInt(playerid,"dicedipl") == playerid ||
            pTemp[playerid][pSellBusinessOffee] == playerid ||
            pTemp[playerid][pSettleHouseOffee] == playerid ||
            pTemp[playerid][pSellFillingOffee] == playerid ||
            GetPVarInt(playerid,"repairoffee") == playerid ||
            GetPVarInt(playerid, "KeyDuel") == 1 ||
            GetPVarInt(playerid,"gunoffee") == playerid ||
            GetPVarInt(playerid,"selectpoint") == 2 ||
            GetPVarInt(playerid,"drugoffee") == playerid ||
            PlayerCreateShopObject[playerid] != 0 ||
            GetPVarInt(playerid, "TicketOffer") != 999

всё это я пробовал добавить в active_accept и инвентарь не открывался вообще

Share this post


Link to post

4 answers to this question

  • 0
Sleash
Завсегдатый

@trevison 

GetPVarInt(playerid,"invstat") != -1 ||     // Тут проверка проходит, переменная не равна -1 (INVALID_PLAYER_ID = 65535)
pTemp[playerid][pSellHouseOffee] ||         // Тут првоерка НЕ проходит, ибо переменная равна 0
GetPVarInt(playerid,"dicedipl") ||          // Тут проверка проходит, ибо переменная не равна 0 (65535)
pTemp[playerid][pSellBusinessOffee] ||      // Тут проверка проходит, ибо переменная не равна 0 (65535)
pTemp[playerid][pSettleHouseOffee] ||       // Тут проверка проходит, ибо переменная не равна 0 (65535)
pTemp[playerid][pSellFillingOffee] ||       // Тут проверка проходит, ибо переменная не равна 0 (-1)
GetPVarInt(playerid,"repairoffee") ||       // Тут првоерка НЕ проходит, ибо переменная равна 0
GetPVarInt(playerid, "KeyDuel") == 1 ||     // Тут првоерка НЕ проходит, ибо переменная равна 0, а должна 1
GetPVarInt(playerid,"gunoffee") ||          // Тут првоерка НЕ проходит, ибо переменная равна 0
GetPVarInt(playerid,"selectpoint") == 2 ||  // Тут првоерка НЕ проходит, ибо переменная равна 0
GetPVarInt(playerid,"drugoffee") ||         // Тут првоерка НЕ проходит, ибо переменная равна 0
PlayerCreateShopObject[playerid] != 0 ||    // Тут првоерка НЕ проходит, ибо переменная равна 0
GetPVarInt(playerid, "TicketOffer") != 999  // Тут првоерка НЕ проходит, ибо переменная равна 999

Я думаю проблема в установке переменных при подключении/спавна игрока или запуске мода
Кстати:

if(variable) //...
if(variable != 0//...
// Эти две проверки полностью идентичны при любых значениях, даже если они отрицательные

 

Share this post


Link to post
  • 0
Sleash
Завсегдатый

@trevison По данным отрезкам кода мало что можно сказать, разве что можете попробовать при нажатии Y для дебага выводить в консоль значения всех переменных:

printf("%d\'s ID pressed Y, vars: %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d", playerid,
pTemp[playerid][pSellHouseOffee], GetPVarInt(playerid,"dicedipl"), pTemp[playerid][pSellBusinessOffee],
pTemp[playerid][pSettleHouseOffee], pTemp[playerid][pSellFillingOffee], GetPVarInt(playerid,"repairoffee"),
GetPVarInt(playerid, "KeyDuel"), GetPVarInt(playerid,"gunoffee"), GetPVarInt(playerid,"selectpoint"),
GetPVarInt(playerid,"drugoffee"), PlayerCreateShopObject[playerid], GetPVarInt(playerid, "TicketOffer"));

 

Share this post


Link to post
  • 0
trevison
Активный
stock active_accept(playerid)
{
    printf("%d\'s ID pressed Y, vars: %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d", playerid,
    pTemp[playerid][pSellHouseOffee], GetPVarInt(playerid,"dicedipl"), pTemp[playerid][pSellBusinessOffee],
    pTemp[playerid][pSettleHouseOffee], pTemp[playerid][pSellFillingOffee], GetPVarInt(playerid,"repairoffee"),
    GetPVarInt(playerid, "KeyDuel"), GetPVarInt(playerid,"gunoffee"), GetPVarInt(playerid,"selectpoint"),
    GetPVarInt(playerid,"drugoffee"), PlayerCreateShopObject[playerid], GetPVarInt(playerid, "TicketOffer"));
    if(GetPVarInt(playerid,"invstat") != -1 ||
            pTemp[playerid][pSellHouseOffee] ||
            GetPVarInt(playerid,"dicedipl") ||
            pTemp[playerid][pSellBusinessOffee] ||
            pTemp[playerid][pSettleHouseOffee] ||
            pTemp[playerid][pSellFillingOffee] ||
            GetPVarInt(playerid,"repairoffee") ||
            GetPVarInt(playerid, "KeyDuel") == 1 ||
            GetPVarInt(playerid,"gunoffee") ||
            GetPVarInt(playerid,"selectpoint") == 2 ||
            GetPVarInt(playerid,"drugoffee") ||
            PlayerCreateShopObject[playerid] != 0 ||
            GetPVarInt(playerid, "TicketOffer") != 999return 1;
    else return 0;
}

0's ID pressed Y, vars: 65535, 0, 65535, 65535, 65535, -1, 0, 0, 0, 0, 0, 999 - console

Share this post


Link to post
  • 0
trevison
Активный

вроде получилось сделать таким кодом:

stock active_accept(playerid)
{
    if(GetPVarInt(playerid,"invstat") != -1 ||
            pTemp[playerid][pSellHouseOffee] == INVALID_PLAYER_ID ||
            GetPVarInt(playerid,"dicedipl") ||
            pTemp[playerid][pSellBusinessOffee] == INVALID_PLAYER_ID ||
            pTemp[playerid][pSettleHouseOffee] == INVALID_PLAYER_ID ||
            pTemp[playerid][pSellFillingOffee] == INVALID_PLAYER_ID ||
            GetPVarInt(playerid,"repairoffee") ||
            GetPVarInt(playerid, "KeyDuel") != 1 ||
            GetPVarInt(playerid,"gunoffee") ||
            GetPVarInt(playerid,"selectpoint") != 2 ||
            GetPVarInt(playerid,"drugoffee") ||
            GetPVarInt(playerid, "TicketOffer") != 999return 1;
    else return 0;
}

 

Share this post


Link to post
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • ВасилийСталин
      By ВасилийСталин
      VERDICT PROJECT - V:ACE
       
      Соревновательный проект на платформе SA-MP, вдохновлённый духом Counter-Strike: тактические перестрелки, честный рейтинг и ванильное PVP.
      В разработке, не используются ресурсы, из открытых источников. Всё строится с нуля, собственный игровой мод, полностью кастомный интерфейс и игровой лаунчер.
      Что мы разрабатываем:
       
      - Рейтинговый режим с подбором по ELO. Равные соперники, честные матчи, путь от новичка до вершины таблицы.
      - Полностью кастомный интерфейс (CEF): меню, лобби, магазин и статистика такого уровня, какого на SA-MP почти не встретишь.
      - Легионеры - уникальные оперативники с индивидуальным дизайном и редкостью, открываются через боевой пропуск или чёрные ячейки (кейсы).
      - Скины на оружие и кейсы - коллекционная система в духе CS. -> В активной разработке
      - Киберспортивные команды: теги, ростеры, матчи команда против команды.
      - Тренировка аима, система рангов, ежедневные награды и не только.
       
      Продуманный баланс и внимание к деталям ванильного сражения - то, ради чего мы за это взялись.
      Проект уже на серьёзной стадии разработки. Мы открываем сообщество раньше официального анонса, чтобы первые скриншоты, новости и дата старта достались тем, кто был с нами с самого начала. Мы всегда рады открытой критике, или советам - сделаем игру лучше для всех!
      Подписывайтесь, чтобы не пропустить официальное заявление о запуске и первые материалы проекта.
       
      Группа VK: https://vk.ru/verdictcs
      Официальная почта: verdictproject@mail.ru
    • Kevin_McCarthy
      By Kevin_McCarthy
      🔒 ОТКРЫТИЕ НАБОРА НА ЗАКРЫТОЕ БЕТА-ТЕСТИРОВАНИЕ (ЗБТ)!
      Друзья! Мы выходим на самый ответственный этап разработки Brilliant RP. Проект уже практически готов к полноценному запуску, но перед тем как открыть двери для всех игроков, нам нужно тщательно проверить каждую систему, каждую работу и каждую строчку кода.
      Именно поэтому мы объявляем о старте Закрытого Бета-Тестирования!
      🏆 ТОП-3 ТЕСТЕРА ПОЛУЧАТ КРУТЫЕ ПРИЗЫ!
      Мы высоко ценим время и вклад каждого участника. Тестеры, которые проявят наибольшую активность, найдут больше всего уникальных багов и подробно опишут их в нашей Google-форме, получат ценные награды:
      🥇 1 МЕСТО: 3000 рублей на кошелек, 100.000$ игровой валюты, и Diamond VIP на 30 дней
      🥈 2 МЕСТО: 2000 рублей на кошелек, 75.000$ игровой валюты, и Diamond VIP на 30 дней
      🥉 3 МЕСТО: 1000 рублей на кошелек, 50.000$ игровой валюты, и Diamond VIP на 30 дней
      📝 Как стать участником ЗБТ?
      Заполни заявку на участие: 👉 https://vk.ru/gtasamp_brilliantrp
      Дождись одобрения.
    • OOLOAIS
      By OOLOAIS
      Ищу скрипт для самп/crmp который может скопировать акссесуары с аризоны/родины пж помогите