SA-MP Forums Archive
Скриптинг курилка - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Скриптинг курилка (/showthread.php?tid=111279)



Re: Скриптинг курилка - Fill - 10.05.2012

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


Re: Скриптинг курилка - Mutha_X - 10.05.2012

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

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

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

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


Re: Скриптинг курилка - Fill - 10.05.2012

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

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

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


Re: Скриптинг курилка - OKStyle - 11.05.2012

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


Re: Скриптинг курилка - iEnemY - 11.05.2012

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


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


Re: Скриптинг курилка - OKStyle - 11.05.2012

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


Re: Скриптинг курилка - Fill - 11.05.2012

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


Re: Скриптинг курилка - Stepashka - 11.05.2012

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


Re: Скриптинг курилка - Jon_De - 11.05.2012

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


Re: Скриптинг курилка - Nikid - 11.05.2012

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


Re: Скриптинг курилка - eakwarp - 11.05.2012

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



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


Re: Скриптинг курилка - iEnemY - 11.05.2012

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

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


Re: Скриптинг курилка - Stepashka - 11.05.2012

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


Re: Скриптинг курилка - Baks - 11.05.2012

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


Re: Скриптинг курилка - raider19rus - 11.05.2012

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


Re: Скриптинг курилка - Baks - 11.05.2012

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


Re: Скриптинг курилка - iEnemY - 11.05.2012

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

======

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


Re: Скриптинг курилка - OKStyle - 11.05.2012

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



Re: Скриптинг курилка - iEnemY - 11.05.2012

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


Re: Скриптинг курилка - OKStyle - 11.05.2012

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