Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Ставим плагин на паузу

, Останавливаем плагин на нужной мапе
Статус пользователя zippel
сообщение 18.8.2014, 13:21
Сообщение #1


Стаж: 17 лет

Сообщений: 918
Благодарностей: 105
Полезность: 1

Вчера знакомый попросил написать ему для VIP системы скрипт который будет останавливать работу скрипта на определенной карте. Как вы понимаете это что типа sk-kolt awp 35hp и т.д. Выложу для вас, может кому то и пригодится. А может уже кто то уже выложил, по крайней мере по запросу "пауза" я ничего не нашел.

И так перейдем непосредственно к реализации. Весь секрет заключается в использовании двух нэайтивс из хэадера amxmodx, это get_mapname и contain, именно они являются главным инструментом в работе этой программы, скрипта. Что бы определенный плагин ставился на пазу на нужной вам карте, нужно его отредактировать.

1. Редактируем ваш плагин, который будет прекращать работу на картах de_, awp_, aim_, cs_, fy_ (это к примеру, карты можете изменить)
- Проверяем подключен ли хэадер amxmodx, на всякий случай (вообще без него не возможно практически написать ни один нормальный скрипт, если вы не выносили вручную только нужные вам функции)
- добавляем несколько новых переменных, можно сразу после всех хедеров
Код:
new con, curmap[16], tmpmap[5][16] = { "de_", "awp_", "aim_", "cs_", "fy_" }

- в plugin_init функции, которая производит инициализацию скрипта дописываем "чекер", например через цикл (в моем случае for), перед которым нам будет нужно получить название текущей карты на сервере (sps iLLuSioN за своевременный фикс цикла ;)
Код:
get_mapname(curmap, charsmax(curmap))
for(new x = 0; x <= sizeof(tmpmap) - 1; x++) {
con = contain(curmap, tmpmap[x])
if(con != -1) {
pause("a")
}
}


В итоге получаем при инициализации скрипта проверку по необходимым для нас префиксам. В следствии совпадений которых с частью реального названия карты скрипт поставит себя на паузу. Как видите префикса as_ нету в списке элементов массива tmpmap, плагин продолжает загрузку и стабильную работу на сервере. Удачи!

Цитата
Stack/heap size: 16384 bytes; estimated max. usage=39 cells (156 bytes)


Прикрепленное изображениеПрикрепленное изображение

Отредактировал: zippel, - 18.8.2014, 15:50
Прикрепленные файлы:
Прикрепленный файл  test_pause_plugin.sma ( 878 байт ) Кол-во скачиваний: 27
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   Цитировать сообщение
Статус пользователя ex3m777
сообщение 18.8.2014, 13:24
Сообщение #2


Стаж: 13 лет
Город: Москва

Сообщений: 2037
Благодарностей: 1135
Полезность: 968

Меценат Меценат

а что создать папочку addons/amxmodx/configs/maps
и создать в ней plugins-названиекарты.ini
и в ней mymega_super_plugin.amxx disable
уже не катит?

Отредактировал: grishka444, - 18.8.2014, 13:24


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 18.8.2014, 13:28
Сообщение #3


Иконка группы

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

zippel
знатный изврат
зачем использовать плагин, если можно просто прописать эти настройки в конфиг карты?

3.1.7 Как активировать/отключить плагин(ы) лишь на конкретной(ых) карте(ах)?

https://wiki.alliedmods.net/index.php/Ru_AM....B0.D1.85.29.3F
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя zippel
сообщение 18.8.2014, 13:29
Сообщение #4


Стаж: 17 лет

Сообщений: 918
Благодарностей: 105
Полезность: 1

Цитата(Legenda @ 18.8.2014, 13:28) *
zippel
знатный изврат
зачем использовать плагин, если можно просто прописать эти настройки в конфиг карты?

я об этом не знал spiteful.gif и это изврат знатен тем что если у тебя на сервере 250 карт, ты же не будешь для каждой из них писать конфиг - так как это уже будет извратом, а так через тот же contain упрощяем себе рутину. Мне так кажется проще.. каждому свое, как говорится.

Отредактировал: zippel, - 18.8.2014, 13:31
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя iLLuSioN
сообщение 18.8.2014, 13:29
Сообщение #5
Иконка группы

Стаж: 19 лет

Сообщений: 6911
Благодарностей: 7990
Полезность: 1639

Правильнее будет вынести с цикла
get_mapname(curmap, charsmax(curmap))


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 18.8.2014, 13:31
Сообщение #6


Иконка группы

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

Цитата(zippel @ 18.8.2014, 15:29) *
я об этом не знал spiteful.gif и это изврат знатен тем что если у тебя на сервере 250 карт, ты же не будешь для каждой из них писать конфиг - так как это уже будет извратом, а так через тот же contain упрощяем себе рутину. Мне так кажется проще.. каждому свое :)


кто-то на форуме уже писал об этом, вот чья-то цитата


Пример добавления плагина для определённой карты
Допустим у вас есть плагин amx_parachute.amxx и вы хотите чтобы он работал только на карте awp_zigzag, а на остальных был выключен. Для этого делаем следующее:
1) Заходим в cstrike/addons/amxmodx/configs и создаём в этой директории папку под названием maps
2) В только что созданной папке создаём текстовый документ под названием plugins-awp_zigzag и вписываем в него название плагина.
3) Закрываем документ, сохраняем изменения и меняем расширение документа .txt на .ini

Теперь пример с добавлением конфига для карты
Допустим вы хотите сделать отдельный конфиг для карты de_aztec.
1) Заходим в cstrike/addons/amxmodx/configs и создаём в этой директории папку под названием maps
2) В только что созданной папке создаём текстовый документ под названием de_aztec.cfg
3) Теперь вписываем в этот файл необходимые настройки. Допустим вы хотите добавить фриз тайм и установить лимит на карту в 25 мин. В таком случае нужно будет вписать следующее:
mp_freezetime 5
mp_timelimit 25

Теперь независимо от настроек вашего server.cfg на карте de_aztec будет фриз тайм в 5 сек и лимит игры в 25 мин.

Так же можно использовать конфиги и набор плагинов для карт с определённым префиксом.
Представте что у вас есть плагин hitbox.ammx и вы хотите чтобы он работал на всех aim_ картах.
Делаем следующее:
1) Заходим в cstrike/addons/amxmodx/configs и создаём в этой директории папку под названием maps
2) В только что созданной папке создаём текстовый документ под названием plugins-aim и вписываем в него название плагина.
3) Закрываем документ, сохраняем изменения и меняем расширение документа .txt на .ini

Допустим у вас на сервере разнообразные карты и вы хотите установить лимит времени и фризтайм только на de_ карты.
1) Заходим в cstrike/addons/amxmodx/configs и создаём в этой директории папку под названием maps
2) В только что созданной папке создаём текстовый документ под названием prefix_de.cfg
3) Теперь вписываем в этот файл необходимые настройки. Например:
mp_freezetime 5
mp_timelimit 25

Теперь на всех de_ картах независимо от настроек server.cfg будет заданный лимит времени и фриз тайм.

ps с картами начинающимися на $ может быть проблема
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 6 раз
   + Цитировать сообщение
Статус пользователя zippel
сообщение 18.8.2014, 13:35
Сообщение #7


Стаж: 17 лет

Сообщений: 918
Благодарностей: 105
Полезность: 1

Цитата(Legenda @ 18.8.2014, 13:31) *
ps с картами начинающимися на $ может быть проблема


OO спасибо, буду знать теперь для чего это все в amxx было надо. Насчет $ карт и карт без префиксов: то можно подправить родной скрипт от amxx, думаю так будет правильнее всего. Но пока это мне не надо. Пусть сами фиксят ;)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: