Вопросы

Доброго времени суток, у меня в моде есть система заточки аксессуаров и она работает, все значения записываются, но по каким-то причинам увеличение урона не срабатывает. У меня есть инклуд weapon-config, до этого в нём не было перехвата функции, я его сделал и по идее дефолтные паблики OnPlayerGiveDamage и OnPlayerTakeDamage щас срабатывают. Буду очень благодарен любой помощи! (К слову, в переменной
pInfo[playerid][pAcsSharpening] все значения равны 11)

 

Паблики OnPlayerGiveDamage и OnPlayerTakeDamage в самом моде:

public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid, bodypart)
{
    new damage;
    switch(pInfo[playerid][pAcsSharpening][2])
    {
        case 0..3: damage = 0;
        case 4..11: damage = pInfo[playerid][pAcsSharpening][2]-3;
        case 12: damage = 8;
    }
    amount += (amount / 100) * damage;
    switch(pInfo[playerid][pAcsSharpening][3])
    {
        case 0..3: damage = 0;
        case 4..11: damage = pInfo[playerid][pAcsSharpening][3]-3;
        case 12: damage = 8;
    }
    amount += (amount / 100) * damage;
    return 1;
}

public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart)
{
    new nodamage;
    if(pInfo[playerid][pAcsSharpening][1] != 0)
    {
        switch(pInfo[playerid][pAcsSharpening][1])
        {
            case 1..3: nodamage = 0;
            case 4: nodamage = 2;
            case 5: nodamage = 4;
            case 6: nodamage = 5;
            case 7: nodamage = 6;
            case 8: nodamage = 8;
            case 9: nodamage = 10;
            case 10: nodamage = 12;
            case 11,12: nodamage = 15;
        }
    }
    if(pInfo[playerid][pAcsSharpening][4] != 0)
    {
        switch(pInfo[playerid][pAcsSharpening][4])
        {
            case 1..3: nodamage = 0;
            case 4..11: nodamage = pInfo[playerid][pAcsSharpening][4]-2;
            case 12: nodamage = 9;
        }
    }
    new damage;
    switch(pInfo[playerid][pAcsSharpening][2])
    {
        case 0..3: damage = 0;
        case 4..11: damage = pInfo[playerid][pAcsSharpening][2]-3;
        case 12: damage = 8;
    }
    amount += (amount / 100) * damage;
    switch(pInfo[playerid][pAcsSharpening][3])
    {
        case 0..3: damage = 0;
        case 4..11: damage = pInfo[playerid][pAcsSharpening][3]-3;
        case 12: damage = 8;
    }
    amount += (amount / 100) * damage;
    if(pInfo[playerid][pAcsSharpening][1] == 0 && pInfo[playerid][pAcsSharpening][4] == 1 || pInfo[playerid][pAcsSharpening][4] == 0 && pInfo[playerid][pAcsSharpening][2] == 1) amount -= (amount / 100) * nodamage;
    if(pInfo[playerid][pAcsSharpening][4] == 1 && pInfo[playerid][pAcsSharpening][2] == 1) amount -= (amount / 100)*nodamage*2;
    return 1;
}

 

Эти же паблики, но в weapon-config с моим перехватом (расположен внизу каждого паблика), мало ли как-то не так сделал

  открыть спойлер

 

Поделиться сообщением


Ссылка на сообщение

5 ответов на этот вопрос

  • 0

@phizl для начала предлагаю отдебажить твой код с помощью того же принта, и посмотреть что и как выдаёт :smoke:

Код с дебагом

  открыть спойлер




Никогда не откажусь от <3 под ответом

Отредактировано пользователем gais_st

Поделиться сообщением


Ссылка на сообщение
  • 0

@angel_sinvays Для чего самому прописывать дебаги, если можно сделать это другому:)
Достаточно ввести запрос: "Добавь дебаги"

Если человеку действительно это будет нужно, и он отдебажит код, то тогда можно уже будет разбираться в чём проблема :bn:

Или тут запрещено добавлять дебаги?)


Никогда не откажусь от <3 под ответом

Поделиться сообщением


Ссылка на сообщение
  • 0

@gais_st Ну слушай, по такому запросу и этот человек сам смог бы прописать это если бы он знал о том что ChatGPT умеет прописывать дебаги))

Поделиться сообщением


Ссылка на сообщение
  • 0

@angel_sinvays Ну ведь он этого не знал, судя по тому что он обратился на форум :look:

Всегда имея большой код, и если ты не понимаешь его логики, и где могли бы быть ошибки, то проще всего сделать дебаг всего кода.
В данном варианте так и есть, именно по этому что бы не тратить своё время и было сделан дебаг не в ручную.

Предлагаю на этом и закончить "флеймить" :)

Отредактировано пользователем gais_st

Поделиться сообщением


Ссылка на сообщение

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • djxxx
      От djxxx
      приветствую всех.
       
      Задался таким вопросом при добавлении одной системы на DIALOG_STYLE_TABLIST_HEADERS.
       
      Суть проблемы в том, что диалог не выравнивается под нужные показатели, а просто как будто находиться по середине, в диалоге используется \t, но они особо не помогают в решении, также не ровно.
       
      а если попытаться выравнивать большим количеством \t, оно компилируется но в игре происходят вылеты
       
      Код такой:
      DialogAdmShop ( playerid, DIALOG_EPOINTSHOP, DIALOG_STYLE_TABLIST_HEADERS, fmt_str, ""BR"номер\t"BR"наименование\t"BR"доступное действие\n"\ "{EB4C42}#1\t{FFFFFF}Виртуальная валюта\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#2\t{FFFFFF}Донат валюта\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#3\t{FFFFFF}Вип статусы\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#4\t{FFFFFF}Кейсы\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#5\t{FFFFFF}Уникальные аксессуары\t{888888}нажмите для взаимодействия", "Выбрать", "Закрыть" ); }  
      сток dialogadmshop:
      stock DialogAdmShop(playerid, dialogid, style, title[], text[], button[], button2[]) {   if(style == 5)   {      ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, "...", "...", "...", "");    }   ShowPlayerDialog(playerid, dialogid, style, title, text, button, button2);   return 1; }