1. PRoSToC0der Разработчик

    Регистрация:
    22.02.16
    Сообщения:
    307
    Симпатии:
    143
    Пол:
    Мужской
    Этот плагин запрещает спавниться только что зашедшим игрокам после того как произошла первая смерть. Т.е. если кто-то успел умереть за раунд, то зашедший на сервер игрок не заспавнится в этом раунде. Плагин создан для того, чтобы не нарушался баланс сил в начале раунда.

    Автор: @PRoSToC0der
    Требования: ReAPI, ReGameDLL
    Github: GitHub - WPMGPRoSToTeMa/BlockSpawnAfterFirstDeath
     

    Вложения:

    Последнее редактирование: 06.09.16
    Gliden, Sonikplus, HannibaL и 7 другим нравится это.
  2. Slowpoked Пользователь

    Регистрация:
    08.11.15
    Сообщения:
    241
    Симпатии:
    45
    Пол:
    Мужской
    @PRoSToC0der, думал, что Вы добавите это в ReGameDLL
     
  3. PRoSToC0der Разработчик

    Регистрация:
    22.02.16
    Сообщения:
    307
    Симпатии:
    143
    Пол:
    Мужской
    Надо сначала посмотреть так ли это нужно и понравится ли идея.
     
    Slowpoked нравится это.
  4. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.584
    Симпатии:
    4.154
    Пол:
    Мужской
    @PRoSToC0der,
    PHP:
    1. public OnCanPlayerSpawn_Post(playerEntIndex) {
    2.     SetHookChainReturn(ATYPE_INTEGER, _:false);
    3.     return HC_OVERRIDE;
    4. }
    ты серьезно?
    в Post'е устанавливаешь, что должна вернуть функция? О_о
    ты точно трезвый? :D
    --- добавлено 06.09.16 ---
    и почему RG_CSGameRules_FPlayerCanRespawn, а не RG_CBasePlayer_Spawn?
    --- добавлено 06.09.16 ---
    Щас бы побаттлиться :D
     
  5. PRoSToC0der Разработчик

    Регистрация:
    22.02.16
    Сообщения:
    307
    Симпатии:
    143
    Пол:
    Мужской
    1. Так можно и интуитивно понятно, что такая возможность должна быть. Тем более, что изменение значения в Post может пригодится для какого-нибудь PlayerFallDamage, если ты, например, хочешь увеличить оригинальный урон (возвращаемое значение) на два. Тут только return HC_OVERRIDE лишний.
    2. Это работает. Я тестил и код ReAPI смотрел, он это не запрещает.
    Лучше даже не пробуй блочить спавн там.

    Мне в моём коде не понравилась только пляски на Enable/Disable хукчейнов, логику работы сложнее проследить из-за этого.
     
  6. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.584
    Симпатии:
    4.154
    Пол:
    Мужской
    @PRoSToC0der, дык в Post тут менять что либо бесполезно. это спавн...
    либо я что то не понимаю в этом хуке
    для RG_CBasePlayer_Spawn беспонтовое занятие

    я вообще не блочил спавны :D
    и где "там"?
     
  7. PRoSToC0der Разработчик

    Регистрация:
    22.02.16
    Сообщения:
    307
    Симпатии:
    143
    Пол:
    Мужской
    @neygomon эта функция возвращает bool значение, спавнить ли игрока, true - спавнить, false - нет. Т.е. я только меняю её возвращаемое значение.
     
  8. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.584
    Симпатии:
    4.154
    Пол:
    Мужской
    @PRoSToC0der, а если в Pre хуке поменять?
    так же будет логичнее, не?
    --- добавлено 06.09.16 ---
    Поставлю себе на сервер :)
     
  9. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.584
    Симпатии:
    4.154
    Пол:
    Мужской
    и наверное так:
    Код (Unknown Language):
    1. public OnPlayerKilled(playerEntIndex, killerEntIndex, gibBehavior) {
    2.     DisableHookChain(g_hookPlayerKilled);
    3.     EnableHookChain(g_hookCanPlayerSpawn_Post);
    4. }
    --->
    Код (Unknown Language):
    1. public OnPlayerKilled(playerEntIndex, killerEntIndex, gibBehavior) {
    2.     if(killerEntIndex && killerEntIndex != playerEntIndex) {    // если самоубийство или, например, умер при спавне
    3.         DisableHookChain(g_hookPlayerKilled);
    4.         EnableHookChain(g_hookCanPlayerSpawn_Post);
    5.     }
    6. }
    что скажешь?
     
  10. PRoSToC0der Разработчик

    Регистрация:
    22.02.16
    Сообщения:
    307
    Симпатии:
    143
    Пол:
    Мужской
    Логичнее будет блочить оригинал в пре и там же менять значение, но я не уверен насчёт побочек, поэтому сделал так, как сейчас.
    Я боюсь что это будут абузить, типа забиндить kill и реконнект на кнопку и успеть прожать, пока по тебе стреляют. Надо от kill избавляться)).
     
  11. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.584
    Симпатии:
    4.154
    Пол:
    Мужской
    @PRoSToC0der, а когда на спавне умираешь, там убивает кто? worldspawn или сам себя?
     
  12. PRoSToC0der Разработчик

    Регистрация:
    22.02.16
    Сообщения:
    307
    Симпатии:
    143
    Пол:
    Мужской
    Код (Unknown Language):
    1.     // we haven't found a place to spawn yet,  so kill any guy at the first spawn point and spawn there
    2.     if (!FNullEnt(pSpot))
    3.     {
    4.         CBaseEntity *ent = NULL;
    5.         while ((ent = UTIL_FindEntityInSphere(ent, pSpot->pev->origin, 64)) != NULL)
    6.         {
    7.             // if ent is a client, kill em (unless they are ourselves)
    8.             if (ent->IsPlayer() && ent->edict() != player)
    9.                 ent->TakeDamage(VARS(eoNullEntity), VARS(eoNullEntity), 200, DMG_GENERIC);
    10.         }
    11.  
    12.         // if so, go to pSpot
    13.         return true;
    14.     }
    Т.е. грубо говоря worldspawn.
     
  13. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.584
    Симпатии:
    4.154
    Пол:
    Мужской
    @PRoSToC0der, тогда
    Код (Unknown Language):
    1. if(killerEntIndex && killerEntIndex != playerEntIndex)
    ->
    Код (Unknown Language):
    1. if(killerEntIndex)
    или
    Код (Unknown Language):
    1. if(killerEntIndex != 0) // exclude worldspawn
    или снова нет?:)
     
  14. PRoSToC0der Разработчик

    Регистрация:
    22.02.16
    Сообщения:
    307
    Симпатии:
    143
    Пол:
    Мужской
    Да, верно, только вот при падении и прочих таких же, там тоже worldspawn, хотя это уже не так значительно.
     
  15. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.584
    Симпатии:
    4.154
    Пол:
    Мужской
    @PRoSToC0der, я не думаю что чувак со спавна разобьется. только если на мапе типа 35hp, но это бред же)
     
  16. Angerfist Пользователь

    Регистрация:
    02.12.15
    Сообщения:
    151
    Симпатии:
    14
    Пол:
    Мужской
    А если на сервере авторестарт или разминка?)или если допустим зашли первые 5 человек,все выбрали команды,начался раунд,и кто то нажал "М" и сменил тиму,получается что после этого тоже никто не заспавнится живым?
     
  17. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.584
    Симпатии:
    4.154
    Пол:
    Мужской
  18. ops244 Пользователь

    Регистрация:
    28.02.15
    Сообщения:
    342
    Симпатии:
    55
    Пол:
    Мужской
    да нах, лучше использовать, что уже есть в регейме
    mp_roundrespawn_time 9
    и всё)
     
  19. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.584
    Симпатии:
    4.154
    Пол:
    Мужской
    чет подумал.. отключил :D
     
  20. PRoSToC0der Разработчик

    Регистрация:
    22.02.16
    Сообщения:
    307
    Симпатии:
    143
    Пол:
    Мужской
    Так ты же это уже исправил.