Скриптинг курилка

Quote:
Originally Posted by Mutha_X
Посмотреть сообщение
Не, не жадничаю, мне это нужно чтобы собрать некоторые данные о карте. Как я догадываюсь дело может быть связано с .ide файлами карты игры либо с зависимыми от main.scm, но в любом случае не могу найти закономерность по типу объектов.
А что их классифицировать?
Единственно, что может крашить сервер, это удаление объектов, которые в сингле подвижны (ворота спрея, тюнкара, шлабаумы около ЖД).
Более ничего не замечал.
Reply

Тогда и шары для бильярда, с мусорными пакетами... xD
На них вылетало, но только из-за большого кол-ва уже удалённых.
Quote:

что может крашить сервер

Крашит не сервер, а происходит вылет игрока (после "обрыва связи" пытается присоединиться к серверу, но бесполезно, однако, если перезайти - всё нормально).

UPD: уже несколько раз перепроверил с точным подсчётом, вместо 570 на разных диапазонах ид макс. кол-во удалённых ровно 997, а на 998 - уже вылет.
Reply

Quote:
Originally Posted by Mutha_X
Посмотреть сообщение
Тогда и шары для бильярда, с мусорными пакетами... xD
На них вылетало, но только из-за большого кол-ва уже удалённых.

Крашит не сервер, а происходит вылет игрока (после "обрыва связи" пытается присоединиться к серверу, но бесполезно, однако, если перезайти - всё нормально).

UPD: уже несколько раз перепроверил с точным подсчётом, вместо 570 на разных диапазонах ид макс. кол-во удалённых ровно 997, а на 998 - уже вылет.
Вам не казалось, то, что есть негласный лимит удалённых объектов.
Reply

Quote:
Originally Posted by Fill
Посмотреть сообщение
Единственно, что может крашить сервер, это удаление объектов, которые в сингле подвижны (ворота спрея, тюнкара, шлабаумы около ЖД).
Не крэшит, нормально всё =)
Reply

Quote:
Originally Posted by Fill
Посмотреть сообщение
Единственно, что может крашить сервер, это удаление объектов, которые в сингле подвижны (ворота спрея, тюнкара, шлабаумы около ЖД).
Пробовал их удалять, и ставить на их место их же самих - выкидывало клиента с опкодами. Просто удалить - всё нормально.
Мне кажется, я где то видел сообщение о том (может быть даже на вики, но там уже сейчас нету (или небыло)) что максимальное кол-во удаляемых объектов - 1000.


Quote:
Originally Posted by eakwarp
Посмотреть сообщение
Если нету foreach, буквально последнее, что нужно использовать, это конструкцию i < GetMaxPlayers(); . Медленнее еще ничего не придумали.
Я знаю только о foreach (и о том что он иногда приводит к бесконечному циклу), и о i < GetMaxPlayers. И то, даже при цикле на 500 игроков, в основном цикле мода, это все длится не более 4 мс на 500 слотов. Если скажешь что может быть ЕЩЕ быстрее - буду благодарен.
Reply

Быстрее - 1 раз взять GetMaxPlayers, а не каждую итерацию. В топике "Оптимизации кода" приводили примеры.
Reply

Quote:
Originally Posted by OKStyle
Посмотреть сообщение
Не крэшит, нормально всё =)
Последний раз пробовал на 0.3d.
Но я не просто удалял, а ещё ставил аналогичные, но уже управляемые. Возможно краш клиента не из-за удаления, а из-за установки ворот.
Reply

Quote:
Originally Posted by iEnemY
Посмотреть сообщение
Я знаю только о foreach (и о том что он иногда приводит к бесконечному циклу), и о i < GetMaxPlayers. И то, даже при цикле на 500 игроков, в основном цикле мода, это все длится не более 4 мс на 500 слотов. Если скажешь что может быть ЕЩЕ быстрее - буду благодарен.
Quote:
Originally Posted by OKStyle
Посмотреть сообщение
Быстрее - 1 раз взять GetMaxPlayers, а не каждую итерацию. В топике "Оптимизации кода" приводили примеры.
Вот тут можно посмотреть тесты
Reply

Quote:
Originally Posted by iEnemY
Посмотреть сообщение
Я знаю только о foreach (и о том что он иногда приводит к бесконечному циклу), и о i < GetMaxPlayers. И то, даже при цикле на 500 игроков, в основном цикле мода, это все длится не более 4 мс на 500 слотов. Если скажешь что может быть ЕЩЕ быстрее - буду благодарен.
for(new i; i < MAX_PLAYERS; i++) уже не рулит ? всяко лучше твоего примера
Reply

У меня вопрос насчет текстдрайва типа 4. После рестарта, он у меня появляется. Вот не могу понять почему? Удаляю его в Exit паблике мода, появления его стоит в паблике, который не выполняется при запуска мода. Если делать рестарт мода чере ПУ, тогда все нормально, а если командой /rcon gmx, то он появляется.
Все разобрался. Его вызывал каким-то образом, вызывал текстдрайв из фс
Reply

Quote:
Originally Posted by iEnemY
Посмотреть сообщение
Ага, щаз (см. аттач)



Всмысле не for(new i = 0; i < GetMaxPlayers(); i++), а for(new i = 0; i <= GetMaxPlayers(); i++)? Тогда это не идиотизм, а опечатка. Опять же, я так и не увидел вашего варианта...
Вы вообще понимаете суть работы конструкции for? Видимо совершенно нет. Каждый прогон цикла, вы сравниваете переменную i с функцией GetMaxPlayers().
Reply

Quote:
Originally Posted by eakwarp
Посмотреть сообщение
Вы вообще понимаете суть работы конструкции for? Видимо совершенно нет. Каждый прогон цикла, вы сравниваете переменную i с функцией GetMaxPlayers().
Вот, спасибо, хоть какая то полезная информация. Я думал сравнивание происходит только в while().

UPD: Да, вы абсолютно правы, проверил - MAX_PLAYERS 8 мс, GetMaxPlayers 41 мс. Заметно быстрее...
Reply

Quote:
Originally Posted by iEnemY
Посмотреть сообщение
Ага, щаз (см. аттач)
странно.
В настройках лимита на время показа сообщения нет?
Reply

Как скриптово узнать сколько у игрока патронов в пушке?
Reply

https://sampwiki.blast.hk/wiki/GetPlayerAmmo
Reply

О, спасибо! Не увидел в списке функций.
Reply

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
странно.
В настройках лимита на время показа сообщения нет?
Возможно расширено макс. кол-во сообщений на странице.

======

Проблема: при аттаче камеры к любому объекту, экран начинает моргать. Такое ощущение, что камеру переносит за границу мира. Так же, ровно по середине экрана начинают появляться 3д тексты... Баг наблюдается ТОЛЬКО на тестовом сервере под виндами, на хостинге всё идеально. Везде одни и те же версии плагинов (разве что на хостинге UNIX версии), один и тот же AMX с модом.
Вопрос: в чём может быть проблема? Может кто сталкивался?
Reply

Насчёт цикла - если лень читать, быстрее будет так:
pawn Код:
for(new i = GetMaxPlayers() - 1; i != -1; i--)
{
//
}
Reply

Quote:
Originally Posted by OKStyle
Посмотреть сообщение
Насчёт цикла - если лень читать, быстрее будет так:
pawn Код:
for(new i = GetMaxPlayers() - 1; i != -1; i--)
{
//
}
Ну, следуя логике, ведь каждый раз не будет создаваться i? Просто не мог понять, почему GetMaxPlayers получалось каждый раз... думал, условия статичны. Получаем 1 раз макс\мин. условие i, и используем весь цикл.
Reply

В моём коде - нет - в нём единожды берётся кол-во слотов при создании переменной. А в твоём - ты кажую проверку делаешь запрос GetMaxPlayers.
Reply


Forum Jump:


Users browsing this thread: 4 Guest(s)