Вопросы

Привет всем,

 

Столкнулись с такой проблемой... После перехода на Open Multiplayer появилась проблема с машинами.

 

Пример:

Просто играя без всяких причин начинаеться нон-стоп респавн машин именно в одной части карты (добавлю скиншот). Из-за того, что там происходит такая „дискотека“ машин, то рандомно может снести любую машину в Сан-Фиерро, в которой нет водителя. 

 

Мы уже всё перепробовали, но причину найти не можем... Повторюсь, проблема появилась только после перехода на Open Multiplayer. В моде 190 тыс. строчек, найти в чём проблема очень сложно... Может есть какие-либо советы на что надо обратиться внимание? Допустим в 0.3 версии можно было манимипулировать машиной перед её смертью с помощью RakNet, но OMP больше не поддерживает Pawn.RakNet плагин.

 

Я пытался добавить принт на каждый SetVehicleToRespawn, но увы срабатывает принт только на OnVehicleDeath...

sa-mp-089.png

sa-mp-088.png

Поделиться сообщением


Ссылка на сообщение

17 ответов на этот вопрос

  • 0

Изучите вопрос связанный с изменением функций и коллбэков в OpenMP связанных непосредственно с транспортом.

Поделиться сообщением


Ссылка на сообщение
  • 0

Может можно подробнее об этом? Я пытался найти какой-то коллбэк, но ничего не получается сделать, есть функция IsVehicleDead, но не знаю или она может продетвратить респавн, так как машина уже бывает Dead...

Поделиться сообщением


Ссылка на сообщение
  • 0

Версия OpenMP последняя? Судя по логу обновлений и изменений есть функции которые помечены устаревшими:

https://www.open.mp/ru/docs/changelog

Мой взгляд зацепили:
 

GetVehiclePoolSize

GetVehicleTower

ChangeVehicleColor 

 

Я думаю проблема именно в :

https://www.open.mp/docs/scripting/functions/GetVehiclePoolSize

И том, что. Цитата с сайта OpenMP переведенная на русский:

Функция получает самый высокий идентификатор транспортного средства, который в настоящее время используется на сервере. Обратите внимание, что в SA:MP эта функция не работает и будет возвращать 0, даже если нет транспортных средств. fixes.inc и open.mp исправляют это, чтобы возвращать -1, но также отказываются от этой функции в пользу MAX_VEHICLES или foreach.

Отредактировано пользователем Web

Поделиться сообщением


Ссылка на сообщение
  • 0

При переходе на ОМП мы уже удалили все старые функции, нигде в нашем коде нет: GetVehiclePoolSize, GetVehicleTower или ChangeVehicleColor. Используем только foreach (new v : Vehicle) от YSI

 

 

Поделиться сообщением


Ссылка на сообщение
  • 0

Возможно, дело как раз в этом. Проверьте. Так же я бы отключил респавн транспорта спустя время в функциях создания транспорта. Если он там указан, конечно. К примеру таких как:

AddStaticVehicleEx

CreateVehicle

Так же интересует есть ли на сервере автоматический респавн транспорта по таймеру?

Отредактировано пользователем Web

Поделиться сообщением


Ссылка на сообщение
  • 0

Да, на сервере есть автоматический респавн транспорта, который находиться в продаже. По логам когда он респавниться ничего плохого не происходит, транспорт весь создаётся с помощью CreateVehicle.

 

Так а если foreach не подходит, что в этом случае использовать? 

Поделиться сообщением


Ссылка на сообщение
  • 0

Для начала я бы использовал стандартное:

for(new i = 0; i < MAX_PLAYERS; i++)

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

Отредактировано пользователем Web

Поделиться сообщением


Ссылка на сообщение
  • 0

Проблема точно будет не в цикле, т.к. у нас до этого всегда стоял for(new i = 0; i < MAX_PLAYERS; i++) и проблема была та же самая, думал foreach поможет, но только убедился что проблема совершенно не в этом.

 

Вот сообственно код, который срабатывает каждые 30 минут.

foreach (new i : Vehicle)
{
    if(tInfo[i][Turgaus_Car]) // Проверяет или машина принадлежит покупаемым 
    {
        SetVehicleToRespawn(i);
    }
}

Повторюсь, я очень сомневаюсь, что проблема в этом. У меня везде стоят принты, и при срабатывании этого респавна или какого-либо другого из похожих - проблем нет... Это происходит в очень рандомные моменты, можешь просто играть, не использовать никаких респавнов, но машины начнут респавниться без причины... 

 

Иногда это начиналось при подключении нового игрока, иногда при выходе игрока из сервера. В SA-MP версии сервера у меня стояла защита/проверка перед смертью машины находиться ли она в воде с помощью RakNet. Как только пропала проверка перед смертью находится ли машина в воде - начались эти неясные респавны... И как я понимаю место, которое я указал проблемным как раз и находится довольно низко по координате Z и рядом с водой

 

Поделиться сообщением


Ссылка на сообщение
  • 0

А если убрать автоматический респавн?

Поделиться сообщением


Ссылка на сообщение
  • 0

Мы уже попробовали убрать все SetVehicleToRespawn, увы проблема та же самая :( 

Поделиться сообщением


Ссылка на сообщение
  • 0

Что было/осталось в OnVehicleDeath и OnPlayerDeath касаемо транспорта?

Поделиться сообщением


Ссылка на сообщение
  • 0

Добавил файл, проект не русский. В OnPlayerDeath нет ничего, что может вызвать проблему, в основном только проверка или игрок убит ударом машины

onvehicledeath.txt

Поделиться сообщением


Ссылка на сообщение
  • 0

@extN в обычном сампе без ракнета точно так же происходит респавн или нормально все? Так же по какому принципу работает страховка на проекте?

 

 

Отредактировано пользователем Web

Поделиться сообщением


Ссылка на сообщение
  • 0

На обычном сампе и без ракнета всё было хорошо по последним тэстам. Страховка просто навсего уменьшает цену починки авто после того как машина взорвалась

Поделиться сообщением


Ссылка на сообщение
  • 0
9 часов назад, extN сказал:

На обычном сампе и без ракнета всё было хорошо по последним тэстам. Страховка просто навсего уменьшает цену починки авто после того как машина взорвалась

 

В функциях которые создают транспортные средства указан аргумент отвечающий за респавн?

Поделиться сообщением


Ссылка на сообщение
  • 0
4 часа назад, Web сказал:

 

В функциях которые создают транспортные средства указан аргумент отвечающий за респавн?

 

Да, на похти всех стоит -1 (т.е. никогда не респавнить), есть несколько машин где стоит 300 секунд. 

Поделиться сообщением


Ссылка на сообщение
  • 0

Ну у меня больше нет догадок. Не имея доступа к полному коду игрового режима и возможности отладки. Попробуйте обратиться с проблемой на официальный форум Open MP или их дискорд.

Поделиться сообщением


Ссылка на сообщение

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • От MrNARTI
      всем привет появилась ошибка со входам в автосалон, ерроров нету но при попытки входа показывает что есть транспорт загруженный хотя его нету. Но когда ввожу /car показывает что есть хотя повторяюсь его нет.
       
      код
       
      команда /саr
       
       
       
      если понадобится что то еще скинуть то скажите я скину.
    • От MrNARTI
      всем привет можете пожалуйста подсказать с командой от анти слива /aban
       
      чтобы банило и администратора который использовал эту кмд и адм которого указал в айди.