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

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    304
    Репутация:
    2 ±

    Урон, стрельба и все что с ней связано.

    Добрый день. Ни для кого ни секрет, что в сампе, такая стрельба, при которой с первого раза игроку может не снести хп(может и не пробиться и 2 и 3 раза).

    Есть такая функция:

    PHP код:
    public OnPlayerGiveDamage(playeriddamagedidFloatamountweaponid)
    {
        if(
    IsAiming[playerid] == true && pl_afk_time[damagedid] == -1)
        {
            new 
    string[8];

            
    format(stringsizeof string"-%d hp"floatround Float:amountfloatround_ceil ));
            
    SetPlayerChatBubble(damagedidstring0xFFDEADFF30.05000 );
        }
        if(
    pl_afk_time[damagedid] > 1)
        {
            static 
    FloatHealth;
            
    GetPlayerHealth(damagedidHealth);
            
    SetPlayerHealth(damagedidHealth);
            return 
    1;
        }
        return 
    1;

    Которая пишет, сколько снеслось игроку ХП. Сделал, когда игрок в АФК, ХП не сносилось и не показывало.
    Вопрос 1 : Заключается в следующем, как сделать, чтобы не показывало хп, если оно действительно не снеслось.
    Вопрос 2: После смерти, игрок еще может какие то секунды стрелять, и тем самым нанести урон игроку или же убить его. Как убрать и эту фичу.

    В голову приходило только одно, проверить игрока на ХП, если у него < 0 ХП, то урон от него не сносился, но как это реализовать, не знаю.

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

    Статус
    Оффлайн
    Регистрация
    13.06.2018
    Сообщений
    58
    Репутация:
    1 ±
    Цитата Сообщение от Skyline Посмотреть сообщение
    В голову приходило только одно, проверить игрока на ХП, если у него < 0 ХП, то урон от него не сносился, но как это реализовать, не знаю.
    В паблик OnPlayerWeaponShot (вызов паблика при выстреле), наверное.

    Пример:
    Код HTML:
    public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
    {
            new Float:hp;
    	if(GetPlayerHealth(playerid, hp) < 0) return 1;
    	return 1;
    }

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

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    304
    Репутация:
    2 ±
    Цитата Сообщение от X!X Посмотреть сообщение
    В паблик OnPlayerWeaponShot (вызов паблика при выстреле), наверное.

    Пример:
    Код HTML:
    public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
    {
            new Float:hp;
    	if(GetPlayerHealth(playerid, hp) < 0) return 1;
    	return 1;
    }
    Не работает.

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

    Статус
    Оффлайн
    Регистрация
    24.08.2015
    Адрес
    Ташкент
    Сообщений
    375
    Репутация:
    97 ±
    PHP код:
    public OnPlayerGiveDamage(playeriddamagedidFloat:amountweaponid)
    {
        if(
    _:amount && pl_afk_time[damagedid] == -&& IsAiming[playerid] == true)
        {
            new 
    string[8];

            
    format(stringsizeof string"-%0.0f hp"amount);
            
    SetPlayerChatBubble(damagedidstring0xFFDEADFF30.05000);
        }

        return 
    1;
    }


    public 
    OnPlayerWeaponShot(playeridweaponidhittypehitidFloat:fXFloat:fYFloat:fZ)
    {
        static
            
    Float:_hp;

        
    GetPlayerHealth(playerid_hp);
        
        if(
    _:_hp <= 0)
        {
            return 
    0;
        }

        return 
    1;

    Последний раз редактировалось Geebrox; 17.07.2018 в 07:25.
    Респект:
    @DeimoS
    @ziggi
    @Daniel_Cortez

  5. #5
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Ответ на первый вопрос: не использовать коллбэки, которые срабатывают сразу после того, как на сервер приходит пакет от игрока, а не когда действие действительно совершилось. Это я про OnPlayerGiveDamage сейчас, если что. У тебя не получится написать то, что ты хочешь, прописав всего пару строк.

    Хотя и самостоятельно писать подобное нет смысла, ибо уже есть тот же weapon-config, который делает как раз то, что тебе нужно. Нужно лишь либо настроить и его, и сам мод соответствующе, если ты вшиваешь его в уже написанный мод, либо писать код в соответствии с теми особенностями, что вносит контроль урона на стороне сервера, если ты вшиваешь его в ещё не написанный мод.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    304
    Репутация:
    2 ±
    Цитата Сообщение от Geebrox Посмотреть сообщение
    PHP код:
    public OnPlayerGiveDamage(playeriddamagedidFloat:amountweaponid)
    {
        if(
    _:amount && pl_afk_time[damagedid] == -&& IsAiming[playerid] == true)
        {
            new 
    string[8];

            
    format(stringsizeof string"-%0.0f hp"amount);
            
    SetPlayerChatBubble(damagedidstring0xFFDEADFF30.05000);
        }

        return 
    1;
    }


    public 
    OnPlayerWeaponShot(playeridweaponidhittypehitidFloat:fXFloat:fYFloat:fZ)
    {
        static
            
    Float:_hp;

        
    GetPlayerHealth(playerid_hp);
        
        if(
    _:_hp <= 0)
        {
            return 
    0;
        }

        return 
    1;

    Не работает.

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

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    304
    Репутация:
    2 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Ответ на первый вопрос: не использовать коллбэки, которые срабатывают сразу после того, как на сервер приходит пакет от игрока, а не когда действие действительно совершилось. Это я про OnPlayerGiveDamage сейчас, если что. У тебя не получится написать то, что ты хочешь, прописав всего пару строк.

    Хотя и самостоятельно писать подобное нет смысла, ибо уже есть тот же weapon-config, который делает как раз то, что тебе нужно. Нужно лишь либо настроить и его, и сам мод соответствующе, если ты вшиваешь его в уже написанный мод, либо писать код в соответствии с теми особенностями, что вносит контроль урона на стороне сервера, если ты вшиваешь его в ещё не написанный мод.
    Касательно данного includa, его нужно как либо настраивать для такой реализации?
    Последний раз редактировалось Skyline; 19.07.2018 в 09:04.

  8. #8
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Ну естественно. И весь мод придётся под него настраивать, так как, дабы контролировать урон, пришлось пойти на многие хитрости, по типу симуляции смерти и т.п. Но взамен ты получишь полный контроль урона со стороны сервера => полный фикс GM всех видов (единственный возможный GM в такой ситуации - NOP SetPlayerHealth. Но такой NOP отловить проще простого, банально, раз в минуту сверяя хп игрока с хп, которое хранится на сервере).
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

 

 

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

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

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

Ваши права

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