Русское сообщество по скриптингу

Elemental Knives

Новые плагины для AMX Mod X, которые были добавлены в базу плагинов нашего форума. Плагины еще не утвеждены администратором/модератором.

Модератор: Leonidddd

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

Данный раздел форума служит для добавления новых плагинов в базу нашего форума. После того, как администратор/модератор утвердит плагин, он будет перемещен в раздел "Утвежденные плагины".

Правила при добавлении новых плагинов:

1. При вставке кода плагина необходимо использовать тег [pawn], в противном случае, если тег [pawn] не отображает ваш код, можно использовать тег [code].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. Обязательно выкладывайте исходник sma плагина. Запрещено выкладывать amxx файл.
4. Обязательно указывайте настоящих авторов плагина, если вы использовали чьи-то наработки или функции, указывайте их авторов в сообщении.
5. Необходимо заполнять детальную информацию о плагине (версию, настройки, используемые модули, список изменений и другую).

Elemental Knives

Сообщение MayroN » 14 май 2018, 19:30

Elemental Knives


Автор: Вы должны зарегистрироваться, чтобы видеть ссылки.
Версия: 1.0

Описание:
Плагин для knife серверов.Добавляет выбор четырех ножей, каждый из которых имеет свою способность относительно выбранной стихии ножа.

Активация способностей:
Активируються на клавишу E, при этом нужно обязательно навести прицел на игрока, ибо он становится целью. Если игрок промахивается, то способность не активируется, но часть энергии перезарядка отнимается.

Описание способностей:
1) Стихия земли. Способность: окаменение. При активации жертва вводится в стан: нижняя часть тела жертвы покрывается камнями, игрок утрачивает возможность ходить на N секунд и получает N количества урона. Все союзники, которые прикоснутся к игроку, который в данный момент покрыт окаменением, будут также ему подвергнуты. Жертва, утратившая способность ходить, становится легкоубиваемой мишенью.
2) Стихия воздуха. Способность: подброс. При активации жертва, а также рядом стоящие союзники в радиусе N юнитов подбрасываются вверх на N юнитов в случайном направлении с N силой. Жертва, подбрасываемая вверх, может получить урон от падения (в частных случаях упасть с высоты и разбиться, либо упасть в лаву/кислоту).
3) Стихия огня. Способность: поджог. При активации жертва загорается на N секунд и получает N урона в секунду. Все союзники, прикоснувшиеся к жертве, будут также подвергнуты поджогу. Огонь может быть потушен в одно мгновение, если игрок прикоснется к воде. Жертва, имеющая малое количество здоровье, может быть легкой мишенью поджога.
4) Стихия воды. Способность: наводнение. При активации вокруг жертвы образуется область кислотной воды, которая наносит N урона самой жертве, а также попавшим в зону действия воды союзникам жертвы

Настройки:
Код: Выделить всё
#define PREFIX_INFO "[Стихийные ножи]" // Префикс 
#define RELOAD_ABILITY 8.0 // Перезарядка способности (сек) 

// 1 нож 
#define RELOAD_TIME_STANBLOCK 4.0 // Длительность окаменения (сек) 
#define DAMAGE_HEALTH_STANBLOCK 7.0 // Наносимый урон от окаменения 

// 2 нож 
#define TOSS_POWER_SHIFT 4.0 // Сила смещения подброса 
#define TOSS_POWER_FLIP 400.0 // Сила подкидывания подброса 
#define TOSS_ZONE_DIST 300.0 // Зона поражения для рядом стоящих игроков (в юнитах) 

// 3 нож 
#define FIRE_TIME 4.0 // Длительность горения (сек) 
#define FIRE_DAMAGE 5.0 // Наносимый урон от горения (в секунду) 

// 4 нож 
#define WATER_CUBE_LIFE_TIME 6.0 // Длительность наводнения (сек) 
#define WATER_CUBE_DMG_HEALTH 4.0 // Наносимый урон от наводнения                             

Меню вызова ножей:
Код: Выделить всё
say /knife


Автор пишет:
В последующих версиях количество способностей для одного игрока возрастет до двух, а также будет расширен список возможных стихий.


Вы должны зарегистрироваться, чтобы видеть ссылки.

Скриншоты:


От себя:
Мне действительно понравилась реализация проделанной работы.Подобного не было ( не встречал )
В дальнейшем с автором будем сотрудничать по добавлению новых способностей,моделей ножей и прочего.

У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось MayroN 30 май 2018, 22:31, всего редактировалось 3 раз(а).
МультиМод CS
Аватара пользователя
MayroN
 
Сообщения: 673
Зарегистрирован: 10 окт 2010, 18:23
Откуда: Украина, г. Белая Церковь
Благодарил (а): 149 раз.
Поблагодарили: 86 раз.
Опыт программирования: Около года
Языки программирования: На которых говорю...

Re: Elemental Knives

Сообщение Mistrick » 14 май 2018, 20:58

В меню утечка памяти.
Аватара пользователя
Mistrick
Скриптер
 
Сообщения: 2940
Зарегистрирован: 04 ноя 2012, 18:15
Благодарил (а): 43 раз.
Поблагодарили: 1247 раз.
Языки программирования: PAWN
С/С++(few above zero)

Re: Elemental Knives

Сообщение MayroN » 14 май 2018, 21:47

Mistrick писал(а):В меню утечка памяти.

Ок.Передам автору.А можно более подробно?
МультиМод CS
Аватара пользователя
MayroN
 
Сообщения: 673
Зарегистрирован: 10 окт 2010, 18:23
Откуда: Украина, г. Белая Церковь
Благодарил (а): 149 раз.
Поблагодарили: 86 раз.
Опыт программирования: Около года
Языки программирования: На которых говорю...

Re: Elemental Knives

Сообщение EpisCape » 14 май 2018, 21:50

Mistrick, а если подробнее? Я не о том, что такое утечка памяти, а в каком месте она здесь.
Последний раз редактировалось EpisCape 14 май 2018, 21:57, всего редактировалось 1 раз.
Аватара пользователя
EpisCape
 
Сообщения: 15
Зарегистрирован: 14 май 2018, 21:47
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
Языки программирования: Pawn

Re: Elemental Knives

Сообщение Subb98 » 14 май 2018, 21:57

Код: Выделить всё
if (item == MENU_EXIT) {
    
// Уничтожение меню
    
menu_destroy(menu);
    return 
PLUGIN_HANDLED;
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Elemental Knives

Сообщение EpisCape » 14 май 2018, 22:07

Subb98, разве в обработчике меню не удаляется? ведь средства амхх не предоставляют возможности высвобождения памяти динамических переменных, следовательно, всё должно быть предусмотрено.
Но даже если это так, то хорошо, я учту на будущее.
Аватара пользователя
EpisCape
 
Сообщения: 15
Зарегистрирован: 14 май 2018, 21:47
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
Языки программирования: Pawn

Re: Elemental Knives

Сообщение Subb98 » 14 май 2018, 22:17

EpisCape писал(а):следовательно, всё должно быть предусмотрено

Вы пытаетесь применить логику того, как оно должно быть в идеале (в нормальных ЯП), а не так, как оно на самом деле есть. :-)

Добавлено спустя 7 минут 6 секунд:
П.с.: исходники мне лень раскапывать, но вот в инклуде есть примечание об этом:

* This must be called if you create menus dynamically, otherwise you will
* leak memory. For normal dynamic menus, you will destroy the menu in the
* handler function (remembering to handle the case of a menu being cancelled,
* it must still be destroyed).

Вы должны зарегистрироваться, чтобы видеть ссылки.
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Elemental Knives

Сообщение Mistrick » 14 май 2018, 22:36

EpisCape, создать меню - задача тривиальная, но в амхх куча хаков, костылей и прочего, из-за чего для грамотного использования надо знать особенности нативов.
Высвобождать само там не может. Меню можно сделать "глобальным", создать один раз и постоянно выводить. Тут удаление не требуется, в "локальных" уже другая ситуация.
Конечно можно было сделать какой-нибудь параметр в создании меню, global, если true, то меню не удалять после вызова обработчика, иначе удалять. Но писалось это 10 лет назад и желающих править не предвидится.
Аватара пользователя
Mistrick
Скриптер
 
Сообщения: 2940
Зарегистрирован: 04 ноя 2012, 18:15
Благодарил (а): 43 раз.
Поблагодарили: 1247 раз.
Языки программирования: PAWN
С/С++(few above zero)

Re: Elemental Knives

Сообщение EpisCape » 14 май 2018, 22:54

Subb98, Mistrick, я вас понял. Благодарю, буду знать на будущее.
Аватара пользователя
EpisCape
 
Сообщения: 15
Зарегистрирован: 14 май 2018, 21:47
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
Языки программирования: Pawn

Re: Elemental Knives

Сообщение RevCrew » 15 май 2018, 00:23

Subb98 писал(а):
Код: Выделить всё
if (item == MENU_EXIT) {
    // Уничтожение меню
    menu_destroy(menu);
    return PLUGIN_HANDLED;
}

Что то не особо понятно, где здесь потеря памяти?
То есть если мы постоянно создаем меню функцией то его нужно уничтожать? А если глобально создаем(один раз) то нет?
Аватара пользователя
RevCrew
Скриптер
 
Сообщения: 1648
Зарегистрирован: 15 июл 2013, 20:45
Благодарил (а): 273 раз.
Поблагодарили: 357 раз.
Языки программирования: Unkown

След.

Вернуться в Добавленные новые плагины

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9