ReDie и !IsPlayerAlive

Тема в разделе "Программирование / Скриптинг", создана пользователем SHAREN, 19 янв 2016.

  1. SHAREN

    SHAREN Servers-Info.Ru

    Сообщения:
    204
    Симпатии:
    13
    Возможно ли как-нибудь сделать чтобы sourcemod думал что возрожденные призраки мертвые, когда проверяешь игрока на IsPlayerAlive ?

    Вот подобный плагин https://forums.alliedmods.net/showthread.php?p=2198357
     
  2. Hejter

    Hejter Mapper Source Engine

    Сообщения:
    1.771
    Симпатии:
    259
    В самом плагине, должна идти проверка.
    Если призрак значит он мертв.

    А вообще вопрос не понятен, зачем тебе это?
     
  3. SHAREN

    SHAREN Servers-Info.Ru

    Сообщения:
    204
    Симпатии:
    13
    Ну к примеру у меня есть плагины которые считают живых игроков. К примеру в [CSS/CS:GO] SM_Hosties пока не останется 2 живых Т написание полседнего желания !lr не будет доступно, и этот плагин считает и призраков как живых игроков.

    Добавлено через 25 минут
    P.S. хотя этот redie работает нормально с !IsPlayerAlive но этот именно https://github.com/Franc1sco/Franug-DM-minigame-for-dead-players этот плагин не маскирует.

    P.S. было m_lifeState 0 надо было 1
     
    Последнее редактирование: 19 янв 2016
  4. Hejter

    Hejter Mapper Source Engine

    Сообщения:
    1.771
    Симпатии:
    259
    Ну наверное нужна булевая проверка.
    Создаешь в плагине проверку. Если bool = true, то запрещаешь писать !LR, если bool = false, то разрешаем.
    Или если можно использовать функцию !IsPlayerAlive, то устанавливаешь для призраком эту функцию. Хотя я такое не делал, чтобы игрок был живым и считался как мертвый игрок.
     
  5. Черная вдова

    Черная вдова

    Сообщения:
    1.621
    Симпатии:
    234
    SetEntProp(client, Prop_Send, "m_Alive", 0);
    Я надеялся что то подобное есть
    но не нашел

    m_bIsLive
    Возможно то что надо
     
  6. SHAREN

    SHAREN Servers-Info.Ru

    Сообщения:
    204
    Симпатии:
    13
    https://goo.gl/cF06SQ
    Код:
    // m_lifeState values
    #define	LIFE_ALIVE				0 // alive
    #define	LIFE_DYING				1 // playing death animation or still falling off of a ledge waiting to hit ground
    #define	LIFE_DEAD				2 // dead. lying still.
    #define LIFE_RESPAWNABLE		3
    #define LIFE_DISCARDBODY		4
    Нашел значения m_lifeState, если делать значение > 0 , то призрак не сможет резать, стрелять и его не будет видно.

    Немного разобрался, оказывается строку SetEntProp(client, Prop_Send, "m_lifeState", 0); вообще можно убрать, в этом плагине она ни на что не влияет

    А то что в табе показывает призраков мертвыми работает за счет g_iOffset_PlayerResource_Alive
    https://goo.gl/wF55UY я конечно же новичок и понятия не имею как это работает.

    Добавлено через 19 минут
    К примеру я могу сделать native IsPlayerGhost в плагине DM-minigame-for-dead-players

    Первый вариант засунуть в каждый плагин на сервере проверку рядом с IsPlayerAlive(i) && !IsPlayerGhost(i) чтобы эти плагины игнорировали призраков. Но это займет кучу времени и будут трудности с обновлением плагинов.

    Второй вариант это переписать СМ чтобы при вызове IsPlayerAlive он проверял к примеру через OnPlayerManager_ThinkPost не отображается ли этот живой игрок мертвым. Или на прямую делал запрос в плагин DM-minigame-for-dead-players.
    native bool:IsPlayerAlive(client); и static cell_t smn_IsPlayerAlive

    Ну и третий вариант (не знаю возможно ли такое) чтобы плагин перехватывал запрос IsPlayerAlive(client) и менял его значение.

    Но как реализовать 2й или 3й вариант я не знаю.
     
    Последнее редактирование: 19 янв 2016