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

[ReAPI] Dispenser (Раздатчик)

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

Модератор: Leonidddd

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

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

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

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

[ReAPI] Dispenser (Раздатчик)

Сообщение БиЗоН » 15 июл 2022, 14:38

Автор: Вы должны зарегистрироваться, чтобы видеть ссылки.
Версия: 0.5a
Описание: Раздатчик – регенерирует здоровье и броню, пополняет деньги.

Плагин добавляет на сервер возможность устанавливать раздатчик.
– Раздатчик имеет возможность прокачки игроком и союзниками с 1-го по 4-ый уровень.
– Для каждого уровня присутствуют настройки (цена, флаг доступа к прокачке, пополнение здоровья, пополнение брони).
– При улучшении раздатчика до 4-го уровня появляется возможность пополнения денег для владельца раздатчика и всех союзников, попадающих в зону действия раздатчика.
– Раздатчик прокачивается с 1-го по 4-ый уровень посредством прикосновения к нему с последующим открытием меню для подтверждения улучшения раздатчика.
– При наведении на раздатчик в радиусе его действия отображается владелец, уровень и здоровье раздатчика.
– Раздатчик можно ремонтировать.

Требования:
– ReAPI
– Amx Mod X 1.9.0

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

Установка раздатчика:
Код: Выделить всё
say /dispenser
say_team 
/dispenser
say 
/disp
say_team 
/disp
dispenser_create
disp_create

Удаление раздатчика:
Код: Выделить всё
say /disp_remove
say_team 
/disp_remove
dispenser_remove


1. Переместите содержимое архива в корневую папку вашего сервера.
2. Скомпилируйте исходный код плагина reapi_dispenser.sma.
3. Переместите скомпилированный плагин в папку с плагинами (cstrike/addons/amxmodx/plugins).
4. Пропишите название плагина (reapi_dispenser.amxx) в файле со списком плагинов (cstrike/addons/amxmodx/configs/plugins.ini).

Файл с настройками автоматически будет создан при первой загрузке плагина.
Код: Выделить всё
// Стоимость покупки раздатчика
// -
// Default: "1500"
dispenser_buy_cost "1500"

// Стоимость улучшения раздатчика до 2-го уровня
// -
// Default: "1000"
dispenser_up_lvl_2_cost "1000"

// Стоимость улучшения раздатчика до 3-го уровня
// -
// Default: "1500"
dispenser_up_lvl_3_cost "1500"

// Стоимость улучшения раздатчика до 4-го уровня
// -
// Default: "4000"
dispenser_up_lvl_4_cost "4000"

// Флаги для доступа к покупке раздатчика
// Оставьте поле пустым, если проверка не флаги не нужна
// -
// Default: ""
dispenser_buy_flags ""

// Флаги для доступа к улучшению раздатчика до 2-го уровня
// Оставьте поле пустым, если проверка не флаги не нужна
// -
// Default: ""
dispenser_up_lvl_2_flags ""

// Флаги для доступа к улучшению раздатчика до 3-го уровня
// Оставьте поле пустым, если проверка не флаги не нужна
// -
// Default: ""
dispenser_up_lvl_3_flags ""

// Флаги для доступа к улучшению раздатчика до 4-го уровня
// Оставьте поле пустым, если проверка не флаги не нужна
// -
// Default: "t"
dispenser_up_lvl_4_flags "t"

// Радиус, в котором будет действовать раздатчик на 1-ом уровне
// -
// Default: "500.0"
dispenser_radius_lvl_1 "500.0"

// Радиус, в котором будет действовать раздатчик на 2-ом уровне
// -
// Default: "600.0"
dispenser_radius_lvl_2 "600.0"

// Радиус, в котором будет действовать раздатчик на 3-ем уровне
// -
// Default: "700.0"
dispenser_radius_lvl_3 "700.0"

// Радиус, в котором будет действовать раздатчик на 4-ом уровне
// -
// Default: "800.0"
dispenser_radius_lvl_4 "800.0"

// Периодичность работы раздатчика на 1-ом уровне
// -
// Default: "0.5"
dispenser_period_lvl_1 "0.5"

// Периодичность работы раздатчика на 2-ом уровне
// -
// Default: "0.5"
dispenser_period_lvl_2 "0.5"

// Периодичность работы раздатчика на 3-ем уровне
// -
// Default: "0.4"
dispenser_period_lvl_3 "0.4"

// Периодичность работы раздатчика на 4-ом уровне
// -
// Default: "0.3"
dispenser_period_lvl_4 "0.3"

// Здоровье раздатчика на 1-ом уровне
// -
// Default: "1500.0"
dispenser_health_lvl_1 "1500.0"

// Здоровье раздатчика на 2-ом уровне
// -
// Default: "2000.0"
dispenser_health_lvl_2 "2000.0"

// Здоровье раздатчика на 3-ем уровне
// -
// Default: "2250.0"
dispenser_health_lvl_3 "2250.0"

// Здоровье раздатчика на 4-ом уровне
// -
// Default: "2500.0"
dispenser_health_lvl_4 "2500.0"

// Сколько здоровья пополняет раздатчик на 1-ом уровне за период
// -
// Default: "5.0"
dispenser_add_hp_lvl_1 "5.0"

// Сколько здоровья пополняет раздатчик на 2-ом уровне за период
// -
// Default: "6.0"
dispenser_add_hp_lvl_2 "6.0"

// Сколько здоровья пополняет раздатчик на 3-ем уровне за период
// -
// Default: "7.0"
dispenser_add_hp_lvl_3 "7.0"

// Сколько здоровья пополняет раздатчик на 4-ом уровне за период
// -
// Default: "8.0"
dispenser_add_hp_lvl_4 "8.0"

// Порог пополняемого здоровья раздатчиком 1-го уровня
// -
// Default: "100.0"
dispenser_max_hp_lvl_1 "100.0"

// Порог пополняемого здоровья раздатчиком 2-го уровня
// -
// Default: "150.0"
dispenser_max_hp_lvl_2 "150.0"

// Порог пополняемого здоровья раздатчиком 3-го уровня
// -
// Default: "200.0"
dispenser_max_hp_lvl_3 "200.0"

// Порог пополняемого здоровья раздатчиком 4-го уровня
// -
// Default: "255.0"
dispenser_max_hp_lvl_4 "255.0"

// Сколько брони пополняет раздатчик на 1-ом уровне за период
// -
// Default: "5.0"
dispenser_add_ap_lvl_1 "5.0"

// Сколько брони пополняет раздатчик на 2-ом уровне за период
// -
// Default: "6.0"
dispenser_add_ap_lvl_2 "6.0"

// Сколько здоровья пополняет раздатчик на 3-ем уровне за период
// -
// Default: "7.0"
dispenser_add_ap_lvl_3 "7.0"

// Сколько брони пополняет раздатчик на 4-ом уровне за период
// -
// Default: "8.0"
dispenser_add_ap_lvl_4 "8.0"

// Порог пополняемой брони раздатчиком 1-го уровня
// -
// Default: "150.0"
dispenser_max_ap_lvl_1 "150.0"

// Порог пополняемой брони раздатчиком 2-го уровня
// -
// Default: "200.0"
dispenser_max_ap_lvl_2 "200.0"

// Порог пополняемой брони раздатчиком 3-го уровня
// -
// Default: "255.0"
dispenser_max_ap_lvl_3 "255.0"

// Порог пополняемой брони раздатчиком 4-го уровня
// -
// Default: "255.0"
dispenser_max_ap_lvl_4 "255.0"

// Периодичность выдачи денег раздатчиком 4-го уровня
// -
// Default: "15.0"
dispenser_period_add_money_lvl_4 "15.0"

// Выдаваемое количество денег за период
// -
// Default: "500"
dispenser_add_money_lvl_4 "500"

// Сколько раздатчиков может ставить обычный игрок
// -
// Default: "1"
dispenser_limit_count_player "1"

// Сколько раздатчиков может ставить VIP игрок
// -
// Default: "2"
dispenser_limit_count_vip "2"

// Флаги для доступа к увеличенному количеству раздатчиков и скидке
// -
// Default: "t"
dispenser_limit_flags_player "t"

// Постоянная скидка для VIP игрока при покупке и прокачке раздатчика в процентах
// -
// Default: "25"
// Minimum: "0.000000"
// Maximum: "100.000000"
dispenser_discount_vip "25"

// Уничтожать раздатчик после смерти владельца?
// 0 - нет, 1 - да
// -
// Default: "1"
// Minimum: "0.000000"
// Maximum: "1.000000"
dispenser_remove_after_kill "1"

// Награда за уничтожение раздатчика ($)
// Установите 0, чтобы отключить награду
// -
// Default: "1000"
dispenser_destroy_award "1000"

// Максимальный урон, который наносит раздатчик при взрыве
// -
// Default: "150.0"
dispenser_destroy_damage "150.0"

// Процент здоровья раздатчик, при котором он начнёт дымится (в процентах)
// -
// Default: "15"
// Minimum: "0.000000"
// Maximum: "100.000000"
dispenser_percent_bad_state "15"

// Фиксированная стоимость ремонта раздатчика
// -
// Default: "1000"
dispenser_repair_cost "1000"
 


Код: Выделить всё
// Постройка раздатчика игроком
native dispenser_create(pPlayer);

// Удаление раздатчика для игрока
native dispenser_remove(pPlayer);

// Получение уровня раздатчика по индексу энтити
native dispenser_get_lvl(eEnt);

// Проверка - является ли энтити раздатчиком
native is_ent_dispenser(eEnt);

// Получение количества раздатчиков, построенных игроком
native get_user_dispenser_count(pPlayer);

// Удаление всех раздатчиков, которые поставил игрок
native dispenser_remove_by_owner(pPlayer);
 

У вас нет необходимых прав для просмотра вложений в этом сообщении.
Вечно занятой. Вечно в павне.
Аватара пользователя
БиЗоН
 
Сообщения: 165
Зарегистрирован: 24 мар 2014, 21:05
Благодарил (а): 10 раз.
Поблагодарили: 49 раз.
Опыт программирования: Больше трех лет

Re: [ReAPI] Dispenser (Раздатчик)

Сообщение БиЗоН » 03 авг 2022, 17:34

– Полностью исправлен критический баг с хитбоксами (спасибо за найденную проблему b0t.).
– Раздатчик теперь имеет 4 степени состояния (_body группы), которые меняются в зависимости от здоровья раздатчика, а также теперь используются gibs-части от самой модели (спасибо за переработку модели MayroN).
– Исправлена проблема с аргументами API (спасибо Mistrick).
– Исправлена проблема с закрытием невалидного меню.
Вечно занятой. Вечно в павне.
Аватара пользователя
БиЗоН
 
Сообщения: 165
Зарегистрирован: 24 мар 2014, 21:05
Благодарил (а): 10 раз.
Поблагодарили: 49 раз.
Опыт программирования: Больше трех лет

Re: [ReAPI] Dispenser (Раздатчик)

Сообщение RockTheStreet » 03 авг 2022, 22:33

Добавь форвард для отлова нанесения урона раздратчику. Также чтобы в нём можно было отловить момент, когда разрушился раздратчик.
Касательно телепатии: если Вы передаете Ваши проблемы телепатическим путем - ответы будут передаваться тоже телепатически.
Если Вы предлагаете угадать, отчего у Вас в подвале происходит странный стук - ответ будет передан стуком.
Аватара пользователя
RockTheStreet
 
Сообщения: 97
Зарегистрирован: 12 авг 2021, 23:13
Забанен
Благодарил (а): 7 раз.
Поблагодарили: 17 раз.
Опыт программирования: Больше трех лет
Языки программирования: JS, PHP

Re: [ReAPI] Dispenser (Раздатчик)

Сообщение БиЗоН » 04 авг 2022, 00:43

RockTheStreet, сомневаюсь, что это кому-то нужно. Те, кто шарят, спокойно в хуке TakeDamage сделают все, что необходимо.
По крайней мере пока запросов от обычных юзеров о расширении API не поступало. Стало быть, не нужно.
Больше людей интересуют различные скидки и поблажки относительно вип-игроков.
Вечно занятой. Вечно в павне.
Аватара пользователя
БиЗоН
 
Сообщения: 165
Зарегистрирован: 24 мар 2014, 21:05
Благодарил (а): 10 раз.
Поблагодарили: 49 раз.
Опыт программирования: Больше трех лет

Re: [ReAPI] Dispenser (Раздатчик)

Сообщение RockTheStreet » 04 авг 2022, 01:15

В TakeDamage получится словить разрушение раздатчика?
Я сурсы не смотрел, не знаю как у тебя там реализовано. Но если получится, то счастлив что ты развиваешься.

По поводу заинтересованных лиц: согласен, пока никому не требуется это. Но подожди месяц, два, и появятся в продаже сборки с твоим раздатчиком. И некоторым явно понадобится данный форвард.
Лично я в своём раздатчике реализовал данный форвард, ибо написал статистику специально для CSDM. И там при разрушении раздатчика противником отнимаются определённые очки.
Касательно телепатии: если Вы передаете Ваши проблемы телепатическим путем - ответы будут передаваться тоже телепатически.
Если Вы предлагаете угадать, отчего у Вас в подвале происходит странный стук - ответ будет передан стуком.
Аватара пользователя
RockTheStreet
 
Сообщения: 97
Зарегистрирован: 12 авг 2021, 23:13
Забанен
Благодарил (а): 7 раз.
Поблагодарили: 17 раз.
Опыт программирования: Больше трех лет
Языки программирования: JS, PHP

Re: [ReAPI] Dispenser (Раздатчик)

Сообщение БиЗоН » 04 авг 2022, 01:56

RockTheStreet, _Killed для "func_breakable" не вызывается же. Я не создаю условный "info_target", а именно сразу разрушаемый объект, тогда и звуки попадания будет движок обрабатывать и через _euser1 можно задать силу взрыва при разрушении объекта (или _impulse за это отвечает, я навскидку не помню, ну и по правде говоря я функционал для взрыва не использую почему-то). Поэтому я проверяю, что дамаг >= хп раздатчика = условный _Killed.
Добавлю если что в следующем апдейте пару форвардов.
Ну на данный момент по тестам игроков версия 0.5a стабильная, поэтому пока апдейтов не предвидется в плане багфиксов.
Если будет какой-то новый функционал, тогда будет и апдейт.

Добавлено спустя 13 минут 11 секунд:
Хотя на самом деле в планах переработать чуть-чуть работу с func_breakable касательно дамага. Если в ближайшее время будет время, сделаю, заодно и форварды если что добавлю.

Добавлено спустя 30 секунд:
Ну и небольшой рефакторинг кода. Заметил пару лишних моментов.
Вечно занятой. Вечно в павне.
Аватара пользователя
БиЗоН
 
Сообщения: 165
Зарегистрирован: 24 мар 2014, 21:05
Благодарил (а): 10 раз.
Поблагодарили: 49 раз.
Опыт программирования: Больше трех лет

Re: [ReAPI] Dispenser (Раздатчик)

Сообщение Polako » 25 окт 2022, 15:17

@dispenser_menu_select(eEnt, pPlayer)
{
.........
// if(iLevel < DISP_LVL_FOUR && get_user_flags(pPlayer) & g_eCvar[CVAR_DISP_BUY_FLAG][iLevel]
== g_eCvar[CVAR_DISP_BUY_FLAG][iLevel])
// {
// new iCost = g_eCvar[CVAR_DISP_BUY_COST][iLevel];

// if(iFlags & g_eCvar[CVAR_DISP_LIMIT_FLAG_VIP] == g_eCvar[CVAR_DISP_LIMIT_FLAG_VIP])
// iCost -= g_eCvar[CVAR_DISP_DISCOUNT_VIP] * g_eCvar[CVAR_DISP_BUY_COST][iLevel] / 100;
↓↓↓↓↓
if(iLevel < DISP_LVL_FOUR && get_user_flags(pPlayer) & g_eCvar[CVAR_DISP_BUY_FLAG]
[iLevel+1] == g_eCvar[CVAR_DISP_BUY_FLAG][iLevel+1])
{
new iCost = g_eCvar[CVAR_DISP_BUY_COST][iLevel+1];

if(iFlags & g_eCvar[CVAR_DISP_LIMIT_FLAG_VIP] == g_eCvar[CVAR_DISP_LIMIT_FLAG_VIP])
iCost -= g_eCvar[CVAR_DISP_DISCOUNT_VIP] * g_eCvar[CVAR_DISP_BUY_COST][iLevel+1] / 100;
Аватара пользователя
Polako
 
Сообщения: 5
Зарегистрирован: 29 июл 2021, 05:10
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Опыт программирования: Меньше недели
Языки программирования: Я ничего не знаю

Re: [ReAPI] Dispenser (Раздатчик)

Сообщение [N][E][M][E][C] » 25 окт 2022, 16:41

Что это?
Аватара пользователя
[N][E][M][E][C]
 
Сообщения: 641
Зарегистрирован: 14 фев 2021, 10:48
Благодарил (а): 50 раз.
Поблагодарили: 89 раз.
Опыт программирования: Около года
Языки программирования: Нуждаюсь в помощи

Re: [ReAPI] Dispenser (Раздатчик)

Сообщение Polako » 01 ноя 2022, 06:07

Обнаружена ошибка, переключение на противоположную команду не разрушает автомат
Аватара пользователя
Polako
 
Сообщения: 5
Зарегистрирован: 29 июл 2021, 05:10
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Опыт программирования: Меньше недели
Языки программирования: Я ничего не знаю

Re: [ReAPI] Dispenser (Раздатчик)

Сообщение БиЗоН » 01 ноя 2022, 13:27

Polako, что значит "переключение"? и какой еще автомат? раздатчик что ли?
Если имеется ввиду переход за другую команду, то никакой ошибки здесь нет. В описании чётко и ясно написано, что раздатчик может быть уничтожен только при смерти владельца (если квар `dispenser_remove_after_kill` = 1) либо же при рестарте раунда/выходе игрока с сервера.
Вечно занятой. Вечно в павне.
Аватара пользователя
БиЗоН
 
Сообщения: 165
Зарегистрирован: 24 мар 2014, 21:05
Благодарил (а): 10 раз.
Поблагодарили: 49 раз.
Опыт программирования: Больше трех лет

След.

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

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

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