Иконка ресурса

Kill Confirmed 1.5.7

Tomiks

Участник
Сообщения
419
Реакции
288
  • Автор ресурса
  • #1
Пользователь Tomiks разместил новый ресурс:

Kill Confirmed - Бонус за убийство цели

В начале раунда случайный игрок каждой команды становится целью контракта на убийство и получает соответствующий цвет(Террористы - цель красная; Контр-Террористы - цель синяя)

За убийство цели в начале следующего раунда будет выдана 1 случайная награда:
1) +50 к здоровью.
2) % к скорости передвижения.
3) % к гравитации.
4) % невидимости.

Целей напишет в чате в начале раунда.

Не работает с ботами.
Работает при 2-х и более игроках.

Узнать больше об этом ресурсе...
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #2
@Tomiks,
upload_2019-6-12_16-28-11.png


PHP:
    playersInT = new ArrayList(ByteCountToCells(64));
    playersInCT = new ArrayList(ByteCountToCells(64));
это утечка. массивы пересоздаются но потом не удаляются, а просто очищается содержимое. переноси инициализацию в он плагин старт

PHP:
if(needBonusT != -1 && needBonusCT != -1)
        {
            giveBonus();
            if(DEBUG == 1)
            {
                PrintToChatAll("Зашло бонус 1");
            }
        } else if(needBonusT != -1 && needBonusCT == -1)
        {
            giveBonus();
            if(DEBUG == 1)
            {
                PrintToChatAll("Зашло бонус 2");
            }
        } else if(needBonusT == -1 && needBonusCT != -1)
        {
            giveBonus();
            if(DEBUG == 1)
            {
                PrintToChatAll("Зашло бонус 3");
            }
        } else if(needBonusT == -1 && needBonusCT == -1)
        {
            if(DEBUG == 1)
            {
                PrintToChatAll("Ушло бонус");
            }
            return Plugin_Continue;
        }

зачем?
PHP:
if(needBonusT != -1 && needBonusCT != -1)
        {
            giveBonus();
            if(DEBUG == 1)
            {
                PrintToChatAll("Зашло бонус 1");
            }
        } else if(needBonusT == -1 && needBonusCT == -1)
        {
            if(DEBUG == 1)
            {
                PrintToChatAll("Ушло бонус");
            }
            return Plugin_Continue;
        }
результат тот же. почитай хоть условия.

и куча дубликатов кода, повыноси в ф-и
 

Tomiks

Участник
Сообщения
419
Реакции
288
  • Автор ресурса
  • #3
@Tomiks, Посмотреть вложение 42610

PHP:
    playersInT = new ArrayList(ByteCountToCells(64));
    playersInCT = new ArrayList(ByteCountToCells(64));
это утечка. массивы пересоздаются но потом не удаляются, а просто очищается содержимое. переноси инициализацию в он плагин старт

PHP:
if(needBonusT != -1 && needBonusCT != -1)
        {
            giveBonus();
            if(DEBUG == 1)
            {
                PrintToChatAll("Зашло бонус 1");
            }
        } else if(needBonusT != -1 && needBonusCT == -1)
        {
            giveBonus();
            if(DEBUG == 1)
            {
                PrintToChatAll("Зашло бонус 2");
            }
        } else if(needBonusT == -1 && needBonusCT != -1)
        {
            giveBonus();
            if(DEBUG == 1)
            {
                PrintToChatAll("Зашло бонус 3");
            }
        } else if(needBonusT == -1 && needBonusCT == -1)
        {
            if(DEBUG == 1)
            {
                PrintToChatAll("Ушло бонус");
            }
            return Plugin_Continue;
        }

зачем?
PHP:
if(needBonusT != -1 && needBonusCT != -1)
        {
            giveBonus();
            if(DEBUG == 1)
            {
                PrintToChatAll("Зашло бонус 1");
            }
        } else if(needBonusT == -1 && needBonusCT == -1)
        {
            if(DEBUG == 1)
            {
                PrintToChatAll("Ушло бонус");
            }
            return Plugin_Continue;
        }
результат тот же. почитай хоть условия.

и куча дубликатов кода, повыноси в ф-и
С условиями спасибо, не заметил почему-то, поторопился
--- Добавлено позже ---
Если не ошибаюсь, то с условиями я не намудрил, вроде, там проверяются разные ситуации, могут же убить только 1 цель, поэтому и столько проверок
--- Добавлено позже ---
@R1KO
 
Последнее редактирование:
  • Мне нравится
Реакции: Boda

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #4
PHP:
if(needBonusT != -1 && needBonusCT != -1)
else if(needBonusT != -1 && needBonusCT == -1)
 else if(needBonusT == -1 && needBonusCT != -1)
else if(needBonusT == -1 && needBonusCT == -1)


я там тупанул. там ИЛИ нужно поставить. или вообще обойтись одной проверкой:
PHP:
if(needBonusT == -1 && needBonusCT == -1)
        {
            if(DEBUG == 1)
            {
                PrintToChatAll("Ушло бонус");
            }
            return Plugin_Continue;
        }

            giveBonus();
            if(DEBUG == 1)
            {
                PrintToChatAll("Зашло бонус");
            }

Смотрим логику
PHP:
if(needBonusT != -1 && needBonusCT != -1) // если оба не -1
else if(needBonusT != -1 && needBonusCT == -1) // если 1-й не -1
 else if(needBonusT == -1 && needBonusCT != -1) //если 2-й не -1
else if(needBonusT == -1 && needBonusCT == -1) // если оба -1
Это разные ситуации если у нас разные дествия. но у нас всего одно действие
PHP:
giveBonus();
и оно выполняется во всех первых 3-х случаях.
Поэтому не логичнее ли проверить только на 4-й случай, а всё остальное автоматически попадает под первые 3.
 

Tomiks

Участник
Сообщения
419
Реакции
288
  • Автор ресурса
  • #5
PHP:
if(needBonusT != -1 && needBonusCT != -1)
else if(needBonusT != -1 && needBonusCT == -1)
 else if(needBonusT == -1 && needBonusCT != -1)
else if(needBonusT == -1 && needBonusCT == -1)


я там тупанул. там ИЛИ нужно поставить. или вообще обойтись одной проверкой:
PHP:
if(needBonusT == -1 && needBonusCT == -1)
        {
            if(DEBUG == 1)
            {
                PrintToChatAll("Ушло бонус");
            }
            return Plugin_Continue;
        }

            giveBonus();
            if(DEBUG == 1)
            {
                PrintToChatAll("Зашло бонус");
            }

Смотрим логику
PHP:
if(needBonusT != -1 && needBonusCT != -1) // если оба не -1
else if(needBonusT != -1 && needBonusCT == -1) // если 1-й не -1
 else if(needBonusT == -1 && needBonusCT != -1) //если 2-й не -1
else if(needBonusT == -1 && needBonusCT == -1) // если оба -1
Это разные ситуации если у нас разные дествия. но у нас всего одно действие
PHP:
giveBonus();
и оно выполняется во всех первых 3-х случаях.
Поэтому не логичнее ли проверить только на 4-й случай, а всё остальное автоматически попадает под первые 3.
Уже разобрался, спасиб
 
  • Мне нравится
Реакции: Boda

StrAnn1k

Участник
Сообщения
237
Реакции
23
не много багано работает а так работает
 

StrAnn1k

Участник
Сообщения
237
Реакции
23
Большое количество грамматических ошибок
одно но почему он не показывает какой эффект получил игрок или сам он ему лично вы получили такое такое там
 

Tomiks

Участник
Сообщения
419
Реакции
288
  • Автор ресурса
  • #10
одно но почему он не показывает какой эффект получил игрок или сам он ему лично вы получили такое такое там
Забыл добавить, через 10 минут поправлю:)
Спасибо, что заметил
 
  • Мне нравится
Реакции: Boda

Tomiks

Участник
Сообщения
419
Реакции
288
  • Автор ресурса
  • #11
  • Мне нравится
Реакции: Boda

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
HookEvent("player_death", playerDeath, EventHookMode_PostNoCopy);
...
public void playerDeath(Event hEvent, const char[] sEvName, bool bDontBroadcast)
{
victim = GetClientOfUserId(hEvent.GetInt("userid"));
attacker = GetClientOfUserId(hEvent.GetInt("attacker"));
Поздравляю, Шарик, ты балбес!
 

Tomiks

Участник
Сообщения
419
Реакции
288
  • Автор ресурса
  • #14

StrAnn1k

Участник
Сообщения
237
Реакции
23
Большое количество грамматических ошибок
нельзя было сделать так убил чела бонусом и писало что убила его и получаешь такой то такой то бонус
 

Tomiks

Участник
Сообщения
419
Реакции
288
  • Автор ресурса
  • #16
нельзя было сделать так убил чела бонусом и писало что убила его и получаешь такой то такой то бонус
После того как игрок убьёт цель, то в начале следующего раунда ему напишет его бонус в чат.

Скачай новую версию, я абсурдную ошибку допустил, хотя каким-то образом на тестовом у меня и с ней работало
 
  • Мне нравится
Реакции: Boda

StrAnn1k

Участник
Сообщения
237
Реакции
23
Большое количество грамматических ошибок
После того как игрок убьёт цель, то в начале следующего раунда ему напишет его бонус в чат.

Скачай новую версию, я абсурдную ошибку допустил, хотя каким-то образом на тестовом у меня и с ней работало
бонус показывается
--- Добавлено позже ---
можешь еще сделать типо так что бы показывало убил игрока ты получаешь такой то бонус
--- Добавлено позже ---
и да я еще заметил выдается только скорость
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
Почистил и оптимизировал код (убрал ненужные переменные и сделал некоторые глобальные локальными или константами)
Добавил проверку является ли убийца игроком
Код стал на 110 строк короче
C-подобный:
//// KillConfirmed 1.4.0.sp
//
// Code size:            11660 bytes
// Data size:             4472 bytes
// Stack/heap size:      16384 bytes
// Total requirements:   32516 bytes
//
// Compilation Time: 0,3 sec
// ----------------------------------------

//// KillConfirmed 1.3.sp
//
// Code size:            12212 bytes
// Data size:             5036 bytes
// Stack/heap size:      16384 bytes
// Total requirements:   33632 bytes
//
// Compilation Time: 0,3 sec
 

Вложения

  • KillConfirmed 1.4.0.sp
    5.4 КБ · Просмотры: 9

Tomiks

Участник
Сообщения
419
Реакции
288
  • Автор ресурса
  • #19
бонус показывается
--- Добавлено позже ---
можешь еще сделать типо так что бы показывало убил игрока ты получаешь такой то бонус
--- Добавлено позже ---
и да я еще заметил выдается только скорость
Оффтоп
--- Добавлено позже ---
Почистил и оптимизировал код (убрал ненужные переменные и сделал некоторые глобальные локальными или константами)
Добавил проверку является ли убийца игроком
Код стал на 110 строк короче
C-подобный:
//// KillConfirmed 1.4.0.sp
//
// Code size:            11660 bytes
// Data size:             4472 bytes
// Stack/heap size:      16384 bytes
// Total requirements:   32516 bytes
//
// Compilation Time: 0,3 sec
// ----------------------------------------

//// KillConfirmed 1.3.sp
//
// Code size:            12212 bytes
// Data size:             5036 bytes
// Stack/heap size:      16384 bytes
// Total requirements:   33632 bytes
//
// Compilation Time: 0,3 sec
Оффтоп
 
  • Мне нравится
Реакции: Boda

Tomiks

Участник
Сообщения
419
Реакции
288
  • Автор ресурса
  • #20
  • Мне нравится
Реакции: Boda
Сверху Снизу