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

    Статус
    Оффлайн
    Регистрация
    13.06.2016
    Адрес
    Одесса, Украина
    Сообщений
    281
    Репутация:
    51 ±

    SetPlayerTeam и Стандартный урон

    В общем суть проблемы: Делаю для оружия немного другой урон и столкнулся с проблемой что стандартный урон все равно остается и работает(или переодически или постоянно). Ставить return 0 в пабликах GiveDamage и TakeDamage - не дает никакого результата - все также стандартный урон присутствует.
    Попробовал использовать SetPlayerTeam - да, урон стандартный отключается и можно без проблем использовать свою функцию с нанесением урона, но появляются некоторые неприятные последствия - Игрок в машине не получает урон, вообще, так как WeaponShot при выстреле в любую часть машины возвращает id машины, но это все таки можно обойти и присваивать игроку в машине определенный урон, но остается острая проблема - урон в ближнем бою. Паблик weaponshot отвечает только за огнестрельное оружие, и проверить там биту или кулаки - нельзя.
    Как все же можно нормально отключить стандартный урон?

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

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    541
    Репутация:
    78 ±
    Это должно быть в OnPlayerTakeDamage и в конце паблика должен быть return 1;
    PHP код:
    new 
        
    Float:HP;

    GetPlayerHealth(playeridHP);

    if (
    issuerid != INVALID_PLAYER_ID)
    {
        if (
    weaponid == 24)
            
    SetPlayerHealth(playeridHP-50);

    Последний раз редактировалось m1n1vv; 21.06.2016 в 15:48.

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

    Статус
    Оффлайн
    Регистрация
    13.06.2016
    Адрес
    Одесса, Украина
    Сообщений
    281
    Репутация:
    51 ±
    Таким кодом ты только добавишь к уже стандартному урону еще 50 урона. И этот паблик не есть хороший вариант использования - он рассинхронен с GiveDamage + некоторыми читами вызывается. Единственное что можно попробовать в него поставить проверку на ближнее оружие, но тогда как обнулять стандартный урон? С любым ретурном - стандартный урон все равно будет.

  4. #4
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Стандартный урон очень легко обнулить установкой всех людей в одну команду с помощью SetPlayerTeam.
    Вот, очень простой вариант. Но в идеале нужно ещё добавить свою систему команд, но это делается довольно просто.

    PHP код:
    public OnPlayerSpawn(playerid)
    {
        if (
    GetPlayerTeam(playerid) != 0) {
            
    SetPlayerTeam(playerid0);
        }

        
    #if defined PTeam_OnPlayerSpawn
            
    return PTeam_OnPlayerSpawn(playerid);
        
    #else
            
    return 1;
        
    #endif
    }
    #if defined _ALS_OnPlayerSpawn
        #undef OnPlayerSpawn
    #else
        #define _ALS_OnPlayerSpawn
    #endif
     
    #define OnPlayerSpawn PTeam_OnPlayerSpawn
    #if defined PTeam_OnPlayerSpawn
        
    forward PTeam_OnPlayerSpawn(playerid);
    #endif 
    PHP код:
    public OnPlayerGiveDamage(playeriddamagedidFloat:amountweaponidbodypart)
    {
        if (
    damagedid == INVALID_PLAYER_ID) {
            return 
    1;
        }

        new
            
    Float:health,
            
    Float:armour,
            
    Float:difference;

        
    GetPlayerHealth(damagedidhealth);
        
    GetPlayerArmour(damagedidarmour);

        
    difference armour amount;

        if (
    difference 0.0) {
            
    SetPlayerArmour(damagediddifference);
        } else {
            
    SetPlayerArmour(damagedid0.0);
            
    SetPlayerHealth(damagedidhealth difference);
        }
        return 
    1;


 

 

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

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

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

Ваши права

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