Jump to content

Вопросы и ответы по MTA.


Recommended Posts

Не работает код:
  
-- событие стоит в запуске ресурса. 
for _, vehicle in ipairs(getElementsByType("vehicle")) do 
    setVehicleRespawnDelay(vehicle, 5000) 
    setVehicleIdleRespawnDelay(vehicle, 5000) 
end 

После взрыва авто не появляется.

------------------------

Забыл про toggleVehicleRespawn(vehicle, true) :D

А зачем циклом так делать???

function respawnExplodedVehicle() 
  
    setTimer(respawnVehicle, 5000, 1, source) 
end 
addEventHandler("onVehicleExplode", getRootElement(), respawnExplodedVehicle) 

после взрыва или уничтожения, через 5000 мс. зареспавнится.

Link to comment

А не проще ли использовать встроенные функции? А цикл для того, чтобы всем авто, при запуске ресурса, ставилось время спавна. Ещё ты не заметиль фукнцию 1, там не только при взрыве спавнит.

Link to comment
Я все таки решил присмотреться к стандартным функциям работы с ДБ.

Вот такой вопрос:

как получить ассоциативный массив из запроса?

В MySQL это mysql_fetch_assoc. А как стандартными функциями?

Я думаю этот вопрос будет интерес многим скриптерам, поэтому я напишу небольшой мануалЬчик отдельной темой..

Вопрос все еще не исчерпан.

Link to comment

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

Link to comment
У меня возникла такая проблема. При выходе игрока с сервера я хочу получить его статистику со стороны клиента, передать ее обратно на сервер еще одним тригером и сохранить. Но сервер не ждет когда выполнится второй тригер. Есть какие-то решения этой проблемы? Передавать статистику с клиента на сервер несколько раз в минуту не вариант

триггер не будет работать, т.к. он требует времени на отсылку и получение данных от клиента, который уже вышел. Уточним.. ты в клиентском onClientPlayerQuit сделал триггер обратно на сервер? Или в серверном onPlayerQuit сделал триггер в клиент, который уже в клиенте отправляет триггер на сервер?

Чтобы в спешке не получать все данные при выходе, нужно иногда их передавать во время игры от клиента на сервер. Так хотя бы мы не потеряем все данные, если сервер не смог получить данные от игрока при выходе. Тоже советую юзать setElementData, а при выходе игрока в серверном onPlayerQuit прочесть все данные с помощью getAllElementData.

Если у тебя будут передаваться тонны данных, то нужен другой способ, а если числа всякие, то это не сильно загрузит канал.

Link to comment
У меня возникла такая проблема. При выходе игрока с сервера я хочу получить его статистику со стороны клиента, передать ее обратно на сервер еще одним тригером и сохранить. Но сервер не ждет когда выполнится второй тригер. Есть какие-то решения этой проблемы? Передавать статистику с клиента на сервер несколько раз в минуту не вариант

триггер не будет работать, т.к. он требует времени на отсылку и получение данных от клиента, который уже вышел. Уточним.. ты в клиентском onClientPlayerQuit сделал триггер обратно на сервер? Или в серверном onPlayerQuit сделал триггер в клиент, который уже в клиенте отправляет триггер на сервер?

Чтобы в спешке не получать все данные при выходе, нужно иногда их передавать во время игры от клиента на сервер. Так хотя бы мы не потеряем все данные, если сервер не смог получить данные от игрока при выходе. Тоже советую юзать setElementData, а при выходе игрока в серверном onPlayerQuit прочесть все данные с помощью getAllElementData.

Если у тебя будут передаваться тонны данных, то нужен другой способ, а если числа всякие, то это не сильно загрузит канал.

В серверном onPlayerQuit я сделал триггер в клиент, который уже в клиенте отправляет триггер на сервер. Передаю их одной таблицей "stats", в ней ключей 20, числа и несколько float все. Подскажите тогда как часто лучше передавать их серверу чтобы не засорять канал? Или лучше переводить все данный в setElementData на той же стороне клиента?(и как часто?)

Link to comment

Для начала попробуй в клиентском событии сделать триггер на сервер. Т.е. игрок выходит и сам сразу делает триггер, а сервер уже обрабатывает. Стессна, когда эти данные придут на сервер (если ваще придут), клиент уже будет вне сервера и такого ИД игрока уже не будет на сервере. Это значит, что вместе с данными нужно передать какой-то уникальный идентификатор (можно просто ник игрока или логин аккаунта), по которому сервер узнает от кого были эти данные. А потом уже сервер сохранит эти данные в нужном аккаунте, согласно вышеуказанному идентификатору и нику игрока.

Если номер не прокатит, тогда уже ElementData

Link to comment

onClientPlayerQuit же срабатывает на всех игроков, кроме localPlayer, так что одним тригером обойтись не получится, придется использовать ElementData, раз в минуту думаю будет достаточно, там не очень то и важные данные. Ничего смертельного не случится если я буду использовать SetElementData на стороне клиента?

Link to comment

Для чего смертельного-то? Если данные не секретные, то можно забыть про все и юзать ElementData, ни клиент, ни сервер не почувствуют особого нагруза. Только все-таки, проверяй данные и их формат. А то получится, что клиент может передать что-то неожиданное и сервер это сохранит в аккаунте. Тут все как в обычном браузере. Скрипт всегда должен проверять данные, полученные от клиента, не надеясь на их правильный формат.

Link to comment
Если у меня есть свой глобальный мод (допустим LC2SA), заменяющий всю карту СА. Как мне можно поиграть на этой карте в МТА?

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

Ну или сделать как все делают, 1 копия игры для оффлайн модов, другая копия - чистая, для МТА.

Link to comment

У меня на сервере MTA, в версии 1.1, над персонажем отображается только полоска здоровья, нет ни ID, ни ника игрока... Может кто сталкивался с этим?

С уважением, Дмитрий.

Link to comment

вот есть строка

bindKey(source,"u","down","chatbox","Local") 
  

я так понял что при ножатии кнопки он открывает окно чата и отправляет текст на функцию local так?

где об этом прочесть ?

Link to comment

давно у меня такой возник вопрос, может быть его кто-то уже задавал на форуме

можно ли заменить текстуру покрасочный работы для машины, допустим для elegy

Link to comment
давно у меня такой возник вопрос, может быть его кто-то уже задавал на форуме

можно ли заменить текстуру покрасочный работы для машины, допустим для elegy

да, подобный вопрос был - viewtopic.php?f=142&t=37315

изменить текстуру, которая не связана ни с каким объектом, можно только, если применить к ней шейдер

У меня на сервере MTA, в версии 1.1, над персонажем отображается только полоска здоровья, нет ни ID, ни ника игрока... Может кто сталкивался с этим?

С уважением, Дмитрий.

тэги могут быть выключены в каком-либо скрипте

вот есть строка
bindKey(source,"u","down","chatbox","Local") 
  

я так понял что при ножатии кнопки он открывает окно чата и отправляет текст на функцию local так?

где об этом прочесть ?

в твоем коде при нажатии кнопки "u" будет выполнено действие как будто-то ты в консоли ввел команду "Local",

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...