Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
Добрый день пользователи hlmod.
Решил немного развлечься и сделать простую игру.
Представляю вам плагин, который добавит на сервер игру случайностей.
Когда игрок появляется ему выдаётся случайный класс. Если вам повезёт, то вам выпадет класс, который даёт по 25 здоровья за убийство, а если же не повезёт, то вы будете умирать при убийстве в голову, проще говоря совершать суицид.
В данный момент это ну о...чень сырой плагин, т.е. пробная версия, чтобы представить мою задумку в свет.
В данный момент я сделал 5 возможных случайностей (далее класс):
Личико. Вы умрёте при попадании в голову Каннибал. Вы получаете по 25 здоровья за каждое убийство. Блинк. Вы будете телепортированы на место убитого вами игрока Нежинка. У вас всего 1 здоровье Вор. Ваш класс будет сменён на класс убитого вами игрока
В планах:
*- Больше классов
*- Дополнительные режимы игры
Классов слишком мало, а фантазии на новые у меня не хватает, поэтому как такового экшена не ждите.
150 и более, как класс.
Ещё повышенный дамаг, уменьшенный. Названия сам. :)
Класс "Зажигатель" можно - его пули поджигают противника. На скорость, на гравитацию, на регенерацию...
"Попрыгунчик" - с небольшим банихопом.
Зачем так делать? Закомментировал бы сам хук и калббек весь, а не тело.
Еще используй EventHookMode_PostNoCopy в round_end и round_start т.к. ты не используешь передавемые параметы. Это будет работать быстре (должно).
new attacker = GetClientOfUserId(GetEventInt(event, "attacker"));
new victim = GetClientOfUserId(GetEventInt(event, "userid"));
new bool:headshot = GetEventBool(event, "headshot");
new Float:abs[3];
GetClientAbsOrigin(victim, abs);
if(IsClientInGame(victim))
{
Обять логики нет.
Насоздавал переменных, а потом сделал проверки.
Ты получаешь координаты игрока, а после уже проверяешь IsClientInGame(victim). Это же бредово.
Создал переменную, проверил всё что нужно - создал следуюющую, опять проверил - опять создал.
PHP:
new bool:headshot = GetEventBool(event, "headshot");
Зачем создавать переменную если она используется 1 раз. Да и создал еще за долго до её использования и судя по проверкам чаще всего зря.
Еще постоянно if if if
Юзай else if.
PHP:
new a = 2;
if(a == 1)
{
/* Код */
}
if(a == 2)
{
/* Код */
}
if(a == 3)
{
/* Код */
}
if(a == 4)
{
/* Код */
}
Когда выполнится код после if(a == 2) проверкипо пойдут дальше проверять на 3, 4 и т.д.
А если так:
PHP:
new a = 2;
if(a == 1)
{
/* Код */
}
else if(a == 2)
{
/* Код */
}
else if(a == 3)
{
/* Код */
}
else if(a == 4)
{
/* Код */
}
То как только одна из проверок выполнится остальные проверки выполнены не будут.
Еще лучше использовать switch
И того такой код намного лучше и оптимальней:
PHP:
public VErtoe_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
{
new attacker = GetClientOfUserId(GetEventInt(event, "attacker")),
victim = GetClientOfUserId(GetEventInt(event, "userid"));
if(attacker && victim && attacker != victim && GetClientTeam(attacker) != GetClientTeam(victim))
{
switch(g_PlayerClass[attacker])
{
case 1:
{
if(GetEventBool(event, "headshot")) ForcePlayerSuicide(attacker);
}
case 2: SetEntityHealth(attacker, GetClientHealth(attacker)+25);
case 3:
{
decl Float:abs[3];
GetClientAbsOrigin(victim, abs);
TeleportEntity(attacker, abs, NULL_VECTOR, NULL_VECTOR);
}
case 5: g_PlayerClass[attacker] = g_PlayerClass[victim];
}
}
}
Изменения:
-* Оптимизирован код
-* Добавлено 4 класса:
Крепыш. Вы получаете 150 здоровья Пронзающий. Вы будете наносить дополнительный урон по врагам Параноик. Не попав в голову вы совершаете самоубийство Рэмбо. Убийство с ножа требует минимум усилий
-* Убрано взаимодействие с ботами, т.е. на ботов игра не распространяется.
-* Изменено название класса "Вор" на "Подражатель"
Изменения:
-* Исправлены некоторые ошибки
-* Добавлен режим игры "Командная случайность". Шанс срабатывания 20%. Каждой команде даётся свой случайный класс.
-* Добавлен квар, регулирующий вкл\выкл режима "Командная случайность"
Маньяк. Вы подсчитываете количество ваших жертв, тем самым вдвойне увеличиваете своё здоровье Мазохист. Вы бессмертны, пока вам не нанесут 450 урона. Если это случится, вы совершите самоубийство