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

отлов события смены карты

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

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

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

отлов события смены карты

Сообщение EbGiK » 12 июн 2016, 18:49

Как отловить смену карты
Есть такой способ
Код: Выделить всё
public plugin_end(){
    return PLUGIN_HANDLED

но он задержку примерно 6.5 секунд дает, даже если код в plugin_end() пустой(сравнивал сколько менялась карта без plugin_end и с ним)
Есть другие способы?
Аватара пользователя
EbGiK
 
Сообщения: 192
Зарегистрирован: 05 фев 2016, 16:40
Благодарил (а): 43 раз.
Поблагодарили: 3 раз.
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Team Fortress II
Left 4 Dead

Re: отлов события смены карты

Сообщение Subb98 » 12 июн 2016, 19:16

Вариант для Reapi (не проверял, не уверен, что это то, что вам нужно):

Код: Выделить всё
#include <amxmodx>
#include <reapi>

#pragma semicolon 1

public plugin_init() {
    RegisterHookChain(RH_EngineFunc_End, "RHEngineFuncEndPost", 1);
}

public RHEngineFuncEndPost() {
    log_amx("server is end work");

Добавлено спустя 3 минуты 59 секунд:
П.с.: более простой вариант:

Код: Выделить всё
register_event("30", "EventIntermission", "a");

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

Re: отлов события смены карты

Сообщение EbGiK » 12 июн 2016, 19:19

на строке

Код: Выделить всё
#include <reapi> 

ошибка:

Код: Выделить всё
Cannot read from file: "reapi" on line 3

Код: Выделить всё
register_event("30", "EventIntermission", "a"

30 это что?
Аватара пользователя
EbGiK
 
Сообщения: 192
Зарегистрирован: 05 фев 2016, 16:40
Благодарил (а): 43 раз.
Поблагодарили: 3 раз.
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Team Fortress II
Left 4 Dead

Re: отлов события смены карты

Сообщение Subb98 » 12 июн 2016, 19:23

EbGiK, если вы не используете ReHLDS, то я бы вам рекомендовал пока воспользоваться вторым вариантом. Но вы можете также ознакомиться с этой темой: Вы должны зарегистрироваться, чтобы видеть ссылки..

Добавлено спустя 1 минуту 56 секунд:
EbGiK писал(а):
Код: Выделить всё
register_event("30", "EventIntermission", "a")

30 это что?

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

Re: отлов события смены карты

Сообщение EbGiK » 12 июн 2016, 19:35

Задержка при этом будет зависеть от значения квара mp_chattime

mp_chattime где устанавливается, в файле или в коде?
Аватара пользователя
EbGiK
 
Сообщения: 192
Зарегистрирован: 05 фев 2016, 16:40
Благодарил (а): 43 раз.
Поблагодарили: 3 раз.
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Team Fortress II
Left 4 Dead

Re: отлов события смены карты

Сообщение Subb98 » 12 июн 2016, 19:45

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

Re: отлов события смены карты

Сообщение s1lent » 12 июн 2016, 20:09

Subb98 писал(а):Вариант для Reapi (не проверял, не уверен, что это то, что вам нужно):

Код: Выделить всё
#include <amxmodx>
#include <reapi>

#pragma semicolon 1

public plugin_init() {
    RegisterHookChain(RH_EngineFunc_End, "RHEngineFuncEndPost", 1);
}

public RHEngineFuncEndPost() {
    log_amx("server is end work");
}


RH_EngineFunc_End, это совсем не то, это для конца перечисления и бесполезный для pawn, моя невнимательность, что допустил это в includ-ах)

P.S если с reapi, то можно функцию геймрулеса, но это ничем не отличается от эвента 30 (SVC_INTERMISSION), за исключением порядка вызова и возможности заблокировать

Код: Выделить всё

RegisterHookChain
(RG_CSGameRules_GoToIntermission, "CSGameRules_GoToIntermission", 1);
 
Аватара пользователя
s1lent
Скриптер
 
Сообщения: 123
Зарегистрирован: 11 июл 2011, 20:02
Откуда: Северск
Благодарил (а): 32 раз.
Поблагодарили: 110 раз.

Re: отлов события смены карты

Сообщение Subb98 » 12 июн 2016, 20:17

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

Re: отлов события смены карты

Сообщение EbGiK » 13 июн 2016, 14:28

Задержка при этом будет зависеть от значения квара mp_chattime

что то не меняется задержка, пробывал ставить mp_chattime 0 и mp_chattime 1 в server.cfg и в amxx.cfg
Даже если не ставить
register_event("30", "mapEnd", "a");
или
plugin_end
, а просто карту поменять, все равно не меняется время смены карты
Что не так делаю?
Аватара пользователя
EbGiK
 
Сообщения: 192
Зарегистрирован: 05 фев 2016, 16:40
Благодарил (а): 43 раз.
Поблагодарили: 3 раз.
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Team Fortress II
Left 4 Dead

Re: отлов события смены карты

Сообщение jjey1 » 13 июн 2016, 15:20

а ты хоть сервер перезапускал??? а не просто карту менял :-D
без смены карты можешь проверять 1 разик на одной карте если у тебя есть флаг L.
amx_rcon sv_chattime 0 // если в консоли высветилось change to sv_chattime "0" // значит что эта переменная была не 0 // если не чего не высветится кроме твоей комманды значит эта переменная и так была 0 // но и последним способом чтоб проверить если не чего не высветилось когда вписал значение 0 то поставь например значение 1 а потом 0 чтоб понять о чём я говорю!
Проверяешь как долго менялась карта. если всё устраивает начинаешь с первого пункта который я начал вопросом :-)
skype: tatoxa80
Аватара пользователя
jjey1
 
Сообщения: 199
Зарегистрирован: 08 мар 2016, 18:32
Забанен
Благодарил (а): 39 раз.
Поблагодарили: 9 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Counter-Strike 1.6

След.

Вернуться в Скриптинг

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

Сейчас этот форум просматривают: Google [Bot] и гости: 7

cron