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

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

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

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

> Информационная доска

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

1. Во время создания новой темы аккуратно оформляйте её, не допускайте грамматических ошибок.
2. Описывая проблему старайтесь, как можно больше рассказать о ней, а так же о действиях с сервером после которых она возникла, по возможности подкрепите информацию логами.
3. Если вопрос касается проблемы в работе сервера, то обязательно прикрепляйте список плагинов (введите в консоли сервера: meta list и amxx plugins), настройки server.cfg, логи. Так же указывайте операционную систему, версию HLDS (введите к консоли сервера: version) и где хостится сервер.

Длинную информацию скрывайте под спойлер.

SZ_GetSpace: overflow on netchan->message

, topic for PRO =)
trollface
сообщение 10.4.2014, 9:14
Сообщение #1
Стаж: 12 лет

Сообщений: 1970
Благодарностей: 2423
Полезность: 0

Всем привет.
Задался вопросом тут одним...
В общем, никто не в курсе,
Код:
client_cmd(0, "spk path/to/track");

может вызывать переполнение канала у юзера? и может ли из за этого повиснуть сервер с ошибкой:
Код
SZ_GetSpace: overflow on netchan->message

Под зависнуть понимается... забивание консоли такими ошибками и недоступность сервера.

AMXX 1.8.3 и build 6027

И еще сразу второй вопрос, каким еще можно способом воспроизвести звук на клиенте?

UPD:
нашел вариант от Freedo.m:
Код:
stock SendAudio(id, szDirSound[])
{
message_begin(MSG_ONE_UNRELIABLE, MSG_SEND_AUDIO, _, id);
write_byte(id);
write_string(szDirSound);
write_short(100);
message_end();
}


Отредактировал: trollface, - 10.4.2014, 9:31
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Safety1st
сообщение 10.4.2014, 9:39
Сообщение #2
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Цитата(trollface @ 10.4.2014, 11:14) *
может вызывать переполнение канала у юзера? и может ли из за этого повиснуть сервер с ошибкой:
Код
SZ_GetSpace: overflow on netchan->message

Ты по ходу не догоняешь, что значит слово 'переполнение'. Уж наверное для этого надо что-то посерьёзнее, чем 1 команда ;)

Цитата(trollface @ 10.4.2014, 11:14) *
Код:
stock SendAudio(id, szDirSound[])
{
message_begin(MSG_ONE_UNRELIABLE, MSG_SEND_AUDIO, _, id);
write_byte(id);
write_string(szDirSound);
write_short(100);
message_end();
}

Очень милый хардкод, который никто не сможет в текущем виде заюзать)
Код
gMsgSendAudio = get_user_msgid("SendAudio")
// ...
stock SendAudio(id, szDirSound[])
{
    message_begin(MSG_ONE_UNRELIABLE, gMsgSendAudio, _, id)
    // ...


Ещё emit_sound() есть и её 'приватная' версия от plamont, которую слышать будет только определённый игрок.

А ещё потести этот вариант и отпишись о его особенностях:
Код
// code by Arkshine
new sound[] = "sound/blabla.wav"

message_begin( MSG_ONE_UNRELIABLE, SVC_DIRECTOR, .player = id )
write_byte( strlen( sound ) + 6 ) // command length in bytes; null termination + write_byte() + write_long() gives +6
write_byte( DRC_CMD_SOUND )
write_string( sound )
write_long( volume )    // float value or VOL_NORM (i.e. 1.0)
message_end()
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
trollface
сообщение 10.4.2014, 9:50
Сообщение #3
Стаж: 12 лет

Сообщений: 1970
Благодарностей: 2423
Полезность: 0

Developer,
Цитата
Ты по ходу не догоняешь, что значит слово 'переполнение'. Уж наверное для этого надо что-то посерьёзнее, чем 1 команда ;)

может и не догоняю...
Тогда поясните тапку, куда копать? :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 10.4.2014, 9:58
Сообщение #4


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

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

Код:
while(is_user_connected(id)) SendAudio(id, szDirSound)
так делать не очень хорошо


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Safety1st
сообщение 10.4.2014, 10:17
Сообщение #5
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Цитата(trollface @ 10.4.2014, 11:50) *
может и не догоняю...

Переполнение - это когда клиенту шлётся больше инфы, чем он способен получить. Маздан хороший пример кинул.

Цитата(trollface @ 10.4.2014, 11:50) *
Тогда поясните тапку, куда копать? :)

Не все переполнения происходят по вине сервера. Могут быть в результате естественных причин: когда у клиента большой cl_cmdrate, но низкий cl_updaterate.

Меня лично особо не волнуют переполнения всего, кроме reliable-буфера. Наполненность последнего можно понизить, уменьшив его использование везде, где только можно. И избавляться от быдлокода в плагинах либо использовать более оптимальные способы сделать то же самое. Например, модельки игроков можно по-разному менять и 'нагрузка' различных способов сильно различается. И плагины типо твоего 'NSG' спамят лишним, я указал, где.

А как диагностировать - чем переполняется, в этом я сам нуб) Один из способов ты знаешь - dp_log_msgoverflows 1, и знаешь, что без глубоких знаний такие дампы часто мало что объясняют xD Нужен хороший инструмент, Lev мб сделает. Тут прямая аналогия с диагностикой падений с помощью дампов: у кого уровень позволяет - на основе этой инфы способен найти проблемный плагин, у кого нет (или другие причины мешают), их удел - включать/выключать плагины и смотреть, что меняется.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
trollface
сообщение 10.4.2014, 10:24
Сообщение #6
Стаж: 12 лет

Сообщений: 1970
Благодарностей: 2423
Полезность: 0

Developer,
спасибо за столь развернутый ответ.
насчет NSG уже понял. Займусь на днях.

если б это были единичные случаи дропов игроков с переполнением канала, то я бы даже не парился. тут же тупо зависает сервер sad.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 10.4.2014, 10:58
Сообщение #7
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Цитата(Developer @ 10.4.2014, 11:39) *
Очень милый хардкод, который никто не сможет в текущем виде заюзать)

А ещё вместо
Код
write_short(100)
лучше
Код
write_short(PITCH_NORM)

Код становится гораздо понятнее, когда 'магические числа' не используются.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Safety1st
сообщение 13.4.2014, 20:21
Сообщение #8
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Цитата(Developer @ 10.4.2014, 11:39) *
А ещё потести этот вариант и отпишись о его особенностях

Хм... Ну ok, спасибо за твой 'вклад' в вопрос 'каким еще можно способом воспроизвести звук на клиенте' smile.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя csnet
сообщение 13.4.2014, 20:32
Сообщение #9
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

магия звука.
не вижу проблемы в client_cmd speak
в emit_sound несколько каналов так что тоже проблем быть не должно
в message_begin несколько вариантов доставки сообщения юзеру.


Отредактировал: csnet, - 13.4.2014, 20:34


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
trollface
сообщение 16.4.2014, 13:02
Сообщение #10
Стаж: 12 лет

Сообщений: 1970
Благодарностей: 2423
Полезность: 0

Снова поднимаю данную тему.
Ибо снова повис сервер с этим переполнением... Уже бесит прямо =\
Стоит amxx 1.8.3 git3794
Виснет именно после голосования за карту... Думал дело в моих руках и я накосячил в коде мапчузера.
Ога, хрен. Поставил оригинал от мистрика и получил то же самое =(
ps.gif Отключение данного мачузера и установка UMM дает 100% аптайм в течение нескольких дней. CSDM 17 дней проработал без ребута
Ах да. На 1.8.2 все работает стабильно, но не хочу ставить его =\

Есть какие либо идеи?
ps.gif Нужен спец по новому amxx(много всего поменяли... очень много...)

Отредактировал: trollface, - 16.4.2014, 13:08
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: