Пользователи, просматривающие тему (Пользователей: 0, Гостей: 0)

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

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

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

    Вложения:

    Последнее редактирование: 06.09.16
    BaJIepbI4, Anonymous, 8dp и 10 другим нравится это.
  2. Slowpoked

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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