Предложения по плагинам Radius'а

Radius

Скриптер
Сообщения
3
Симпатии
1
Баллы
6
#1
В данной теме обсуждаются предложения по улучшению существующих и созданию новых плагинов. Формат изложения свободный, нажатие кнопки 'Мне нравится' под каждой идеей/предложением приветствуется, так как дает понять степень востребованности.
 

Mmonster

Модератор
Сообщения
251
Симпатии
77
Баллы
69
#2
Предложение по Health Grenade
Добавить квар,с помощью которого игроку с указанным флагом автоматически каждый раунд будет выдаваться граната,как это было в изначальной версии (Которую выкладывал я на my-amxx).
 

Radius

Скриптер
Сообщения
3
Симпатии
1
Баллы
6
#4
Предложение по Health Grenade
Добавить квар,с помощью которого игроку с указанным флагом автоматически каждый раунд будет выдаваться граната,как это было в изначальной версии (Которую выкладывал я на my-amxx).
Это лучше сделать в виде дополнения (отдельного плагина).
 

Radius

Скриптер
Сообщения
3
Симпатии
1
Баллы
6
#5
В плагине Steam Bonus версии 1.7.0 появилось API для разработчиков, соответственно появилась возможность предлагать идеи для новых бонусов или заказывать у других скриптеров.

C:
#if defined _steam_bonus_included
    #endinput
#endif
#define _steam_bonus_included

enum
{
  INVALID_BONUS = -1
}

// SBD - Steam Bonus Data
enum
{
  // Идентификатор бонуса. Строка, максимальный размер 32
  SBD_IDENTIFIER,

  // Название бонуса в меню, поддерживается как тест так и ключ словаря мультиязычности
  // Строка, максимальный размер 128
  SBD_MENU_ITEM_NAME,

  // Функция, вызываемая для каждого бонуса перед показом меню,
  // позвляя менять название бонуса в меню динамически и делать пункт меню неактивным (тоже самое что callback в newmenus)
  // Строка, максимальный размер 32
  SBD_MENU_ITEM_NAME_CALLBACK,

  // Стоимость бонуса в начисляемых бонусных очках
  // Число. Диапазон значений: от 0 и выше
  SBD_COST_IN_POINTS,

  // Функция, которая реализует выдачу бонуса
  // Строка, максимальный размер 32
  SBD_GIVE_BONUS_FUNC
}

/**
* Функция создает Steam бонус с заданным идентификатором и позицией.
*
* @param bonus_identifier     строковый массив задающий идентификатор бонуса (внутреннее имя)
* @param insert_before_index  позиция (индекс) в которую будет помещен создаваемый бонус со сдвигом
*                             вперед (режим вставки)
*
* @return        Функция возращает значения:
*                  индекс созданного бонуса
*                  INVALID_BONUS - если превышено максимальное число бонусов или bonus_identifier пустая строка
*
* @error         Сообщение об ошибке будет выдано в следующих случаях:
*                  если превышено максимальное число бонусов
*                  если bonus_identifier пустая строка
*/
native sb_create_bonus(const bonus_identifier[32], insert_before_index = -1);

/**
* Функция позволяет удалить бонус по указанному индексу
*
* @param bonus_index  индекс бонуса
*
* @return        Функция возращает значения:
*                  1 - если удаление прошло успешно
*                  0 - если нет ни одного бонуса
*                  INVALID_BONUS - если индекс бонуса выходит за допустимые пределы
*
* @error         Сообщение об ошибке будет выдано в следующих случаях:
*                  если индекс бонуса выходит задопустимые пределы
*/
native sb_remove_bonus(bonus_index);

/**
* Функция позволяет получить общее число бонусов
*
* @return        Функция возращает общее число бонусов
*/
native sb_get_bonuses_num();

/**
* Функция с помощью которой можно изменять данные бонуса по его индексу.
*
* @param bonus_index       индекс бонуса
* @param bonus_data_index  индекс данных бонуса (см константы с префиксом SBD_)
*
* @return        Функция возращает значения:
*                  1  - если изменение прошло успешно
*                  0  - если возникли ошибки в процессе изменения из-за некорретности данных      
*                  INVALID_BONUS - если индекс бонуса выходит за допустимые пределы
*
* @error         Сообщение об ошибке будет выдано в следующих случаях:
*                  если индекс бонуса выходит задопустимые пределы
*                  если индекс данных бонуса выходит задопустимые пределы
*                  если количество переданных аргментов меньше 3-х
*                  если функция не была найдена (для SBD_MENU_ITEM_NAME_CALLBACK и SBD_GIVE_BONUS_FUNC)
*/
native sb_set_bonus_data(bonus_index, bonus_data_index, ...);

/**
* Функция позволяет получить индекс бонуса по его идентификатору
*
* @param bonus_identifier  строковый массив задающий идентификатор бонуса (внутреннее имя)
*
* @return        Функция возращает значения:
*                  индекс найденного бонуса
*                  INVALID_BONUS - если бонус с указанным идентификатором не найден
*/
native sb_get_bonus_index(const bonus_identifier[32]);

/**
* Функция позволяет получить идентификатор бонуса по его индексу
*
* @param bonus_identifier  строковый массив, в который будет записан идентификатор бонуса (внутреннее имя)
* @param size              количество символов, которые будут записаны в bonus_identifier
*
* @return        Функция возращает значения:
*                  1  - если получение прошло успешно
*                  INVALID_BONUS - если индекс бонуса выходит за допустимые пределы
*
* @error         Сообщение об ошибке будет выдано в следующих случаях:
*                  если индекс бонуса выходит задопустимые пределы
*/
native sb_get_bonus_identifier(bonus_index,  bonus_identifier[], size);
C:
#include <amxmodx>
#include <fun>
#include <steam_bonus>

#define PLUGIN  "Steam Bonus Example"
#define VERSION "1.0.0"
#define AUTHOR  "Radius"

public plugin_init()
{
  register_plugin(PLUGIN, VERSION, AUTHOR);

  // Удаляем стандартные бонусы гранат находя их индекс по идентификатору
  sb_remove_bonus(sb_get_bonus_index("hegren"));
  sb_remove_bonus(sb_get_bonus_index("flash"));
  sb_remove_bonus(sb_get_bonus_index("sgren"));

  new bonus_index = sb_create_bonus("grenades_full_pack");

  sb_set_bonus_data(bonus_index, SBD_MENU_ITEM_NAME, "Полный набор гранат");
  sb_set_bonus_data(bonus_index, SBD_MENU_ITEM_NAME_CALLBACK, "give_grenades_callback");
  sb_set_bonus_data(bonus_index, SBD_COST_IN_POINTS, 1);
  sb_set_bonus_data(bonus_index, SBD_GIVE_BONUS_FUNC, "give_grenades");

  // Расскомментировать если нужно узнать весь список индентификаторов
  /*
  new steam_bonuses_num = sb_get_bonuses_num();
  new bonus_identifier[32];

  for (new i; i < steam_bonuses_num; i++) {
    sb_get_bonus_identifier(i,  bonus_identifier, charsmax(bonus_identifier));
    log_amx("[%d] bonus_identifier = '%s'", i, bonus_identifier);
  }
  */
}

public give_grenades_callback(id, menu, item)
{
  new item_status = ITEM_ENABLED;

  if (user_has_weapon(id, CSW_HEGRENADE) && user_has_weapon(id, CSW_FLASHBANG) && user_has_weapon(id, CSW_SMOKEGRENADE)) {
    item_status = ITEM_DISABLED;
  }

  return item_status;
}

public give_grenades(id)
{
  give_item(id, "weapon_hegrenade");
  give_item(id, "weapon_flashbang");
  give_item(id, "weapon_flashbang");
  give_item(id, "weapon_smokegrenade");
  return 1;
}
 

Sekret

Участник
Сообщения
39
Симпатии
12
Баллы
29
#6
может свой мапчусер сделать стоит? а то где не тронешь то полное гэ, либо запутанно чёрт ногу сломит, чтоб выдавало нормально в голосование карты а не гадать выставлять в мапс ини от ноля до 32, забываешь это когда устанавливаешь или удаляешь, а сделать просто если админа нет то бралось с отдельного ини файала засунутые туда карты для голосования а админ приходит и сам уже дальше работает ну и так далее...
 

Radius

Скриптер
Сообщения
3
Симпатии
1
Баллы
6
#7
Sekret, я уже написал больше года назад и он в моей сборке пушек лазеров. Делать его отдельным желания нет. Если только выйдет версия сборки для классических серверов (не csdm).
 

Sekret

Участник
Сообщения
39
Симпатии
12
Баллы
29
#8
Sekret, я уже написал больше года назад и он в моей сборке пушек лазеров. Делать его отдельным желания нет. Если только выйдет версия сборки для классических серверов (не csdm).
извините тогда, тут написано предлагать я и предложил..видимо лучше ничего не писать))
 

f0rt1k

Участник
Сообщения
110
Симпатии
16
Баллы
44
#9
Защиту от спамерастов сделать можно (блокировка доступа по ip-адресу, нику, steam_id и т.д.)?
Чтобы можно было вручную настраивать время бана и ники для блокировки:unsure:
 

Radius

Скриптер
Сообщения
3
Симпатии
1
Баллы
6
#10
извините тогда, тут написано предлагать я и предложил..видимо лучше ничего не писать))
Я просто объяснил почему это предложение было отклонено и в каком виде (в составе сборок) его можно будет увидеть. Никто не обещал что все предложенные идеи будут обязательно реализовано.
 

Radius

Скриптер
Сообщения
3
Симпатии
1
Баллы
6
#11
Защиту от спамерастов сделать можно (блокировка доступа по ip-адресу, нику, steam_id и т.д.)?
Чтобы можно было вручную настраивать время бана и ники для блокировки:unsure:
Аналогичный ответ, данная защита уже реализована в сборке пушек лазеров. Со всевозможными спам листами, словами исключениями, регулярными выражениями в том числе защита ников. Если версия сборки для пабликов увидит свет, всем этим можно будет пользоваться и все уже годами протестировано.
 

SelmarT

Участник
Сообщения
38
Симпатии
34
Баллы
54
#14
Все что можно было реализовать, все реализовано, однако если писать плагины с 0 под заказ и со своей задумкой то, нужно обращаться к 'скриптеру' на прямую, и это уже не за бесплатно, соответственно. Поэтому я думаю, что эта тема немного (не в тему), лично мое мнение, не хочу обидеть автора. :unsure:
 

Radius

Скриптер
Сообщения
3
Симпатии
1
Баллы
6
#15
SelmarT, очень спорное утверждение, скорее больше лени стало. Плагины и так не бесплатны, на обновленные установлена символическая цена. С 0 под заказ, боюсь люди не потянут такие суммы, да еще и без исходного кода.