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

[message_begin] Нету игроков кому показывать

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

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

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

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

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

[message_begin] Нету игроков кому показывать

Сообщение PoKe[M]oH4uK ;D » 10 июл 2017, 01:51

Здравствуйте столкнулся с проблемой:

В плагине где
Код: Выделить всё
message_begin(MSG_ONE_UNRELIABLEg_roundtime_i
при выполнении есди нет игроков падает сервер, вроде не ошибка но как это обойти?

конкретный кусок кода:
Код: Выделить всё
    for ( new iiMin 20MAX_RESULTSi++, iMin += 10 )
        
g_iTimelimitMin[i] = iMin

    
new iNumiiPlayers[32]
    
get_players iPlayersiNum"cha" )
    for ( new 
biNumb++ )
    {
        
iPlayers[b]
        if ( !
is_user_alive ) )
            continue

        
message_begin(MSG_ONE_UNRELIABLEg_roundtime_i)
        
write_short(VOTE_DELAY)
        
message_end();
    } 


Выходит если игроки на сервер не заходили, то при показе в i будет 0, а 0 это сервер - серверу показывать нельзя че делать?
Аватара пользователя
PoKe[M]oH4uK ;D
 
Сообщения: 9
Зарегистрирован: 07 июл 2017, 00:24
Благодарил (а): 9 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около года
Языки программирования: Pawn

Re: [message_begin] Нету игроков кому показывать

Сообщение NEoMASTERR » 10 июл 2017, 01:59

Потому что MSG_ALL или MSG_BROADCAST в таком случае должен быть
Аватара пользователя
NEoMASTERR
 
Сообщения: 832
Зарегистрирован: 05 янв 2015, 16:38
Благодарил (а): 43 раз.
Поблагодарили: 188 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: [message_begin] Нету игроков кому показывать

Сообщение артист666 » 10 июл 2017, 11:01

Если нет живых, реальных игроков, тогда мессага и не отправится.

Проверять на живучесть каждого не нужно, это в условии гет плеерс есть...
Цикл и так не выполнится, если игроков нет.

Код: Выделить всё
new iNum, iPlayers[32]; get_players(iPlayers, iNum, "cha")

for(
new b = 0; b < iNum; b++)
{
        message_begin(MSG_ONE_UNRELIABLE, g_roundtime, _, iPlayers[b])
        write_short(VOTE_DELAY)
        message_end()
Если вы хотите чему-то научиться, пробуйте, задавайте вопросы.
Иначе компенсируйте потраченное время на ваши "проблемы".
Аватара пользователя
артист666
 
Сообщения: 2706
Зарегистрирован: 09 апр 2013, 17:46
Благодарил (а): 284 раз.
Поблагодарили: 639 раз.
Опыт программирования: Больше трех лет
Языки программирования: С, C++
Delphi
HTML, CSS, Java Script
Pawn

Re: [message_begin] Нету игроков кому показывать

Сообщение PoKe[M]oH4uK ;D » 10 июл 2017, 14:02

У меня почему-то выполняется и сервер при падении пишет: WriteDest_Parm: not a client, сам не знаю почему вроде не должно было быть такого.
MSG_ALL все решил спасибо :-)

Добавлено спустя 24 минуты 20 секунд:
Можно сделать чтобы время выставлялось "до захода игрока"? чтобы не ставить его каждому когда он заходит и не делать бесконечных тасков с таймером?
Выходит функция бесполезна если во время её срабатывания нету игроков на сервере, но потом то они зайдут и таймер им покажет не то что надо
Аватара пользователя
PoKe[M]oH4uK ;D
 
Сообщения: 9
Зарегистрирован: 07 июл 2017, 00:24
Благодарил (а): 9 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около года
Языки программирования: Pawn

Re: [message_begin] Нету игроков кому показывать

Сообщение артист666 » 10 июл 2017, 15:12

PoKe[M]oH4uK ;D писал(а):Можно сделать чтобы время выставлялось "до захода игрока"? чтобы не ставить его каждому когда он заходит и не делать бесконечных тасков с таймером?
Выходит функция бесполезна если во время её срабатывания нету игроков на сервере, но потом то они зайдут и таймер им покажет не то что надо


Чтобы не делать таски с таймерами, используй время сервера и переменные.

Было бы проще понять, если бы ты объяснил что за таймеры...
Если вы хотите чему-то научиться, пробуйте, задавайте вопросы.
Иначе компенсируйте потраченное время на ваши "проблемы".
Аватара пользователя
артист666
 
Сообщения: 2706
Зарегистрирован: 09 апр 2013, 17:46
Благодарил (а): 284 раз.
Поблагодарили: 639 раз.
Опыт программирования: Больше трех лет
Языки программирования: С, C++
Delphi
HTML, CSS, Java Script
Pawn

Re: [message_begin] Нету игроков кому показывать

Сообщение PoKe[M]oH4uK ;D » 10 июл 2017, 15:25

Пока вы не написали сделал так:
Код: Выделить всё
register_event("ResetHUD", "Event_Resethud", "be")

public Event_Resethud(i)
{
    if(!is_user_connected(i)) return;

        message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("RoundTime"), _, i);
        write_short(g_iTimeer);
        message_end();
}

g_iTimeer - переменная
Вышло почти как хотел, но срабатывает почемуто не всегда вообще не пойми как, когда я на сервере не выставляет, а когда перезахожу все нормально + есть отставание таймера, сравниваю его с обыным худ таймером и "наш" то отстает, то догоняет

P.s я говорил про таймер в низу экрана "время раунда"
Код: Выделить всё
get_user_msgid("RoundTime")


Как сделать через время сервера? думаю тогда отставания таймера не будет
Аватара пользователя
PoKe[M]oH4uK ;D
 
Сообщения: 9
Зарегистрирован: 07 июл 2017, 00:24
Благодарил (а): 9 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около года
Языки программирования: Pawn

Re: [message_begin] Нету игроков кому показывать

Сообщение артист666 » 10 июл 2017, 15:39

Понятней не стало, может я тупой стал, давно не занимался этими делами...

Время раунда и так же известно, get_cvar_num("mp_roundtime").
Если вы хотите чему-то научиться, пробуйте, задавайте вопросы.
Иначе компенсируйте потраченное время на ваши "проблемы".
Аватара пользователя
артист666
 
Сообщения: 2706
Зарегистрирован: 09 апр 2013, 17:46
Благодарил (а): 284 раз.
Поблагодарили: 639 раз.
Опыт программирования: Больше трех лет
Языки программирования: С, C++
Delphi
HTML, CSS, Java Script
Pawn

Re: [message_begin] Нету игроков кому показывать

Сообщение PoKe[M]oH4uK ;D » 10 июл 2017, 15:49

артист666 писал(а):Понятней не стало, может я тупой стал, давно не занимался этими делами...

Время раунда и так же известно, get_cvar_num("mp_roundtime").

толкьо что в консоль попробовал жахнуть mp_roundtime 200 ничего не происходит

Добавлено спустя 2 минуты 36 секунд:
mp_roundtime "2.5" - попробовал так, тоже ничего
Аватара пользователя
PoKe[M]oH4uK ;D
 
Сообщения: 9
Зарегистрирован: 07 июл 2017, 00:24
Благодарил (а): 9 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около года
Языки программирования: Pawn

Re: [message_begin] Нету игроков кому показывать

Сообщение артист666 » 10 июл 2017, 15:50

Что плагин должен делать?
Если вы хотите чему-то научиться, пробуйте, задавайте вопросы.
Иначе компенсируйте потраченное время на ваши "проблемы".
Аватара пользователя
артист666
 
Сообщения: 2706
Зарегистрирован: 09 апр 2013, 17:46
Благодарил (а): 284 раз.
Поблагодарили: 639 раз.
Опыт программирования: Больше трех лет
Языки программирования: С, C++
Delphi
HTML, CSS, Java Script
Pawn

Re: [message_begin] Нету игроков кому показывать

Сообщение unrealfart » 10 июл 2017, 15:54

В hlds, значение mp_roundtime не может быть больше 10, даже если вы установите 200
Аватара пользователя
unrealfart
 
Сообщения: 264
Зарегистрирован: 23 фев 2016, 19:45
Благодарил (а): 53 раз.
Поблагодарили: 18 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn

След.

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

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

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