Вопросы

Доброго времени суток, у меня в моде есть система заточки аксессуаров и она работает, все значения записываются, но по каким-то причинам увеличение урона не срабатывает. У меня есть инклуд 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 пользователей онлайн

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

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

    • Dev_Persona
      От Dev_Persona
      Приветствую всех, у меня возник такой вопрос:
       
      - хочу изменить базовую регистрацию в админке в крмп, на Болле сложную то-есть, сейчас изначально пароль от админки может быть только из цифр, хотелось бы узнать как можно было бы сделать что бы можно было использовать и цифры и буквы, вот код:
       
      case DIALOG_ADMIN_REG:
         {
          if(!response) return FixKick(playerid);
       
          if(strval(inputtext) < 100000 || strval(inputtext) > 999999) return ShowPlayerDialog(playerid, DIALOG_ADMIN_REG, DIALOG_STYLE_INPUT, "{FF6347}"PROJECT_NAME" {ffffff}| Придумайте пароль", "{FFFFFF}Для того, чтобы продолжить дальше - придумайте и введите\n{FFFFFF}пароль от панели администратора в диалоговое поле ниже.\n\n{FFFFFF}Пароль должен быть из 6 цифр.\n", "Готово", "");
                   SetPlayerData(playerid, P_APASS, strval(inputtext));
       
                   UpdatePlayerDatabaseInt(playerid, "AdminPassword", GetPlayerData(playerid, P_APASS));
       
                   AdminAuthorization(playerid);
         }