Ku2zoff какбэ нарушаешь принципы разделения категорий ООП. Ты ж не будешь охранника предприятия только потому что он круглосуточно на работе заставлять принимать почтовую корреспонденцию и готовить обеды? (я надеюсь)
А ещё у тебя игроков может быть до ж.. тридцати двух т.е. И что, у тебя 32 раза в кадре будет проверяться одно и то же? Ай-яй-яй.
~ X ~ ох, точно. Проверка ж для каждого игрока делается. Переместил в StartFrame. Действительно, что-то я про эту функцию не подумал. Для проверки серверных кваров - самое то место. И красиво, не затрагивает никаких классов, тчинкает по вызову движка.
Skaarj может, НЕ работают?
Мне пришлось бить на 512*512 таки чтоб всё работало. (см. DOM_SunDen). А так - текстура была 4096 или 8192 в квадрате... Главное gl_max_size в игре не забыть.
~ X ~ писал: это плохой метод. Если надо - суй в StartFrame() на сервере. Но только не в CBasePlayer().
Я бы схитрил и перерегистрировал команду noclip/save где-нибудь. Кроме того, сейвы можно элементарно запретить через DispatchSave().
__________________
1) Как сделать, чтобы, при написании noclip в консоли вызывалось что-либо другое (например, clear или вообще ничего)?
2) Как сделать кастомную команду для ноклипа? К примеру, noclip2
1). Сделать, чтобы вываливалось что-то можно, но команда всё равно будет работать, если не изменить код в pm_shared.c
2). ClientCommand в client.cpp. Заводишь там кастомную команду и проводишь операции с игроком. То же самое и для п. 1, только отправляешь какую-нибудь команду, которая должна вывалиться.
Добавлено 10-06-2015 в 10:31:
Цитата:
~ X ~ писал: Кроме того, сейвы можно элементарно запретить через DispatchSave().
Лучше бы было, если бы их можно было разрешить в коопе. После каждого чейнджлевела. И запретить респаун игроков. Когда все игроки сдохли - грузим сейв, чтобы начать уровень заново с теми же параметрами.
Yo Den писал: типа если поставлю активацию god-режима при написании noclip, то будет включаться и то, и то?
Да. Достаточно поставить игроку флаг FL_GODMODE. А если хочешь, чтобы команда god не работала, просто удали условие
C++ Source Code:
// check for godmode or invincibility
if ( pev->flags & FL_GODMODE )
{
return 0;
}
в функции int CBaseMonster :: TakeDamage( entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int bitsDamageType ) в combat.cpp
thambs дефибриляторы в баню. Вон, это в свенкоопе есть. Я хочу запретить респавн на текущей карте в коопе. Только после перехода оставшихся в живых игроков на следующий уровень. А аптечку-оружие обязательно сделаю. Точнее не аптечку, а инъектор, syringe gun то бишь.
Аптечки - это всё вторично, на самом деле, и сделать их не трудно.
Я хочу нормальный чейнджлевел с переносом всех параметров и спауном относительно лэндмарка в коопе. Накодить эдакий брашевый триггер, когда в который заходят все игроки, начинается отсчёт до чейджлевела. После отсчёта происходит чейнджлевел, и делается сейв на новой карте. Сейв накодить кастомный, прямо изнутри дллки в бинарный файл, затрагивающий только параметры игроков, их оружия, патронов и прочего. Если все игроки сдохли, то карта перезапускается, игроки респавнятся, и к ним применяются параметры из сейва. Ну и, собственно, возможность продолжить игру тем же составом, например через неделю, загрузив последний сейв.
Я ноклип для примера привёл. Вообщем я вот, что хочу: при нажатии на кнопку консоли вызывается команда toggleconsole, которая обозначает Con_ToggleConsole_f, аналогично, как при нажатии w вызывается +forward, обозначающий IN_ForwardDown.
В движке это Cmd_AddCommand( "toggleconsole", Con_ToggleConsole_f ); А нужно что-то типа, например Cmd_AddCommand( "toggleconsole", IN_ForwardDown), то есть toggleconsole будет обозначать, например, движение вперёд. И чтобы это было не на движке, а на клиенте. Типа нужно на клиенте переопределить toggleconsole на вызов другого действия... Возможно ли это?
Yo Den писал: Типа нужно на клиенте переопределить toggleconsole на вызов другого действия... Возможно ли это?
Не уверен, можно ли переопределить. Добавить какое-то действие вполне можно. А вот переопределить, скорее всего нет, т.к. команда движковая и обрабатывается не в дллке.
Ku2zoff
глянь как у тов. икс-вайдера ченджлевел сделан, он там очень многое в этом плане наработал (возможно, нужно попросить его выложить свежую версию).