Плагин написан исключительно по просьбе некоторых пользователей ввиду того, что deathrun mod by Mistrick весьма популярен и хорошо реализован, а разнообразие в виде режимов для него в общем доступе почти отсутствует. Также выражается спасибо данным пользователям за предоставленные ресурсы и идею.
Суть режима: при выборе режима у КТ есть N секунд, чтобы убежать от террориста, который вскоре будет перемещен на базу КТ. По истечении времени таймера террорист перемещается на базу КТ, становится Пилой и получает в руки бензопилу. У КТ есть два варианта действий: убегать, добравшись до оружия, дабы дать достойный отпор или попытаться убить Пилу из имеющихся в руках только лишь пистолетов. Убивший Пилу КТ получает награду (настраивается в исходнике).
Плагин оптимизирован и не конфликтует с другими режимами (с дуэлью в частности) и событиями мода.
#define CHAINSAW_MODEL_VIEW "models/deathrun_modes/v_chainsaw.mdl" // v_ модель пилы #define CHAINSAW_MODEL_WEAPON "models/deathrun_modes/p_chainsaw.mdl" // p_ модель пилы #define CHAINSAW_MODEL_PLAYER "chainsaw" // модель пилы в папке player: player/chainsaw/chainsaw.mdl
#define CHAINSAW_SOUND_ATTACK "deathrun_modes/chainsaw_attack.wav" // Звук атаки Пилы #define CHAINSAW_SOUND_TIMER "deathrun_modes/chainsaw_timer.wav" // Звук таймера при выборе режима #define CHAINSAW_SOUND_START "deathrun_modes/chainsaw_start.wav" // Звук начала режима
#define CHAINSAW_TELEPORT_TIME 10 // Через сколько секунд перемещать террориста на базу КТ (желательно >= 10 из-за звука таймера, либо менять/отключать звук таймера) #define CHAINSAW_SET_HP 2000 // Устанавливаемое здоровье террористу #define CHAINSAW_TAKE_DMG 1000.0 // Урон, наносимый пилой #define CHAINSAW_KILL_AWARD 6000 // Сколько денег выдавать за убийство пилы
Автор: EpisCape
UpDate: Были найдены потенциальные баги (за что отдельная благодарность Mistrick'у) и исправлены. Багфиксы: * Потенциальный баг со сменой ножа пофикшен. * Астрономический урон гранатой теперь не нанести. * Предусмотрена замена вышедшего террориста. * Пофикшен баг с перебиванием звука (ранее звук посылался по каналу оружия CHAN_WEAPON и любое действие оружие, сопровождающееся воспроизведением звука, перебивало звуки режима).
Для душевного успокоения. P.S Объяснять для чего эта проверка нужна? гугл это может лучше. P.S.S Про то, что там в remove_task уже встроена проверка, мне напоминать не надо.
Никто не запрещает быть быдлокодером и не контролировать свой код, надеясь на что-то там типа встроенных проверок. Я не претендую на идеальную логику алгоритма и уж ни в коем случае её никому не навязываю. Объяснять элементарные вещи больше не хочется.
Мне не кажется элементарным противоречия в словах:
Цитата
Плагин оптимизирован
Цитата
Никто не запрещает быть быдлокодером
Наверное, я ошибаюсь и это разные вещи. Оставлять в комментариях предложения по улучшению тоже как-то неправильно. Эх, были же времена, когда плагины писали на чистом энтузиазме и рефакторинг кода был не чужд.
Щас бы отдельные куски из целого предложения брать и переделывать нас свой лад. Я ж объединил союзом И две части предложения, дабы подчеркнуть их взаимонеисключаемость. Кто как не программист должен знать об этом. И если ты уже догадался, когда я говорил про понятия быдлокодера, то себя исключал из таковых (совсем для тупых: имелось ввиду, что те, кто надеются на какие-то встроенные проверки и не контролируют свой код - быдлокодеры, имхо, а у меня доп. проверки имеются, соответственно, я не он, не быдлокодер, надеюсь, так смысл дошел). А про оптимизацию касательно этих проверок не надо даже тут говорить, обработка этих проверок занимает настолько мизерное кол-во времени, что вкупе с их ну очень редкой частотой появления ещё больше делает подобное замечание глупостью.
Прошу прощения за недопонимание. Согласен на счет экономии на спичек. Казалось бы, что если в коде есть такие бессмысленные конструкции, то автор скорее всего не до конца понимает того, чего он пишет. Хорошо, что мы разобрались с этим недоразумением.
Пофиксите дичь в ItemDeploy. Зачем вы при каждом диплое у любого игрока ставите модель именно теру, тер может взять другое оружие, потом кто-то достает нож и теру ставит модель пилы. Как выставлять модель смотрите снежки. Надо получить индекс игрока и сравнить с ид тера, хотя универсальнее проверять на тиму. Не предусмотрен вариант замены тера. Во множителе урона должны быть проверки на гранату, при ее взрыве может быть в руках нож, результат овер дмг с хрены.
Спасибо, поправил. Багфиксы: * Потенциальный баг со сменой ножа пофикшен. * Астрономический урон гранатой теперь не нанести. * Предусмотрена замена вышедшего террориста. * Пофикшен баг с перебиванием звука (ранее звук посылался по каналу оружия CHAN_WEAPON и любое действие оружие, сопровождающееся воспроизведением звука, перебивало звуки режима).
Вам не угодишь. Но спасибо, на будущее буду знать. В моей практике *edict_owner не приносил никогда проблем, а вот получая через get_pdata_cbase индекс игрока без соответствующей проверки на валидность ошибки в консоль сервера летели с завидной регулярностью, чего не сказать об owner'e. При этом визуально описанная проблема не наблюдалась. Хотя, быть может, все дело в модуле с ботами, на которых я проверяю всегда работоспособность плагина. Изменил, отправил на замену файла администратору.
У меня surf сервер, а плагин я написал исключительно по просьбе людей, не для себя. Я вообще с deathrun модом слабо знаком, но люди предлагают хорошую идею - я ее осуществляю. Вполне возможно, что скоро ещё парочку режимов напишу, идеи уже подкинули, все в процессе реализации.