Jump to content

Общий мини "HELP ME" топик по скриптингу


Recommended Posts

Нажимаю на форму ввода (в любое место, даже на заголовок окна) т.е. не на кнопку, а событие onClientGUIClick все равно срабатывает. Как это отключить?

Решил проблему установив параметр getPropagated = false функции addEventHandler()

addEventHandler("onClientGUIClick", GUILogin.button[1], onClickBtnLogin, false)

было

addEventHandler("onClientGUIClick", GUILogin.button[1], onClickBtnLogin)

Link to comment
login: you successfully logged in

Как убрать это сообщение при авторизации? В поиске не нашел должного ответа.

Никак, они выводится через сервер.

MTA10_Server/mods/deathmatch/logic/CAccountManager.cpp

Строки: 839-841

https://github.com/multitheftauto/mtasa ... anager.cpp

Большое спасибо за ответ. Видел на одном сервере при авторизации такое сообщение не выводилось. Теперь полагаю что там регистрация написана вообще без использования встроенных функций.

Link to comment

Заблокировать команду "msg".

local prohibitedCommands = {["msg"]=true} 
  
function noMsg(cmd) 
if prohibitedCommands[cmd] then 
outputChatBox("Эта команда запрещена.",source) 
cancelEvent() 
end 
end 
addEventHandler("onPlayerCommand",root,noMsg) 

Link to comment
Заблокировать команду "msg".
local prohibitedCommands = {["msg"]=true} 
  
function noMsg(cmd) 
if prohibitedCommands[cmd] then 
outputChatBox("Эта команда запрещена.",source) 
cancelEvent() 
end 
end 
addEventHandler("onPlayerCommand",root,noMsg) 

Спасибо за ответ!

local prohibitedCommand = {["say"] = true, ["msg"] = true, ["nick"] = true, ["me"] = true} 
function prohibitCmd(cmd) 
    if (prohibitedCommand[cmd]) then 
        outputConsole("Эта команда запрещена.") 
        print("Player executed: " .. cmd) 
        cancelEvent() 
    end 
end 
addEventHandler("onPlayerCommand", getRootElement(), prohibitCmd) 

Link to comment

setPlayerNametagText(...) не работает с кириллицей? У меня вместо русского имени выводится __________. Если возможно то как это исправить?

setElementID(...) если я игроку поставлю идентификатор с помощью этой функции, потом когда он (игрок) перезайдет на сервер ему нужно заново устанавливать идентификатор или эта функция работает как setAccountData(...)? Тот самый вопрос если при перезапуске сервера?

Link to comment

1. Делать свои неймтеги используя setElementData, хранить информацию в таблице.

2. Индификатор сбрасывается после удаления/выхода игрока из сервера. Перезапуск сервера также считается.

Что ты конкретно хочешь сделать?

Link to comment
1. Делать свои неймтеги используя setElementData, хранить информацию в таблице.

2. Индификатор сбрасывается после удаления/выхода игрока из сервера. Перезапуск сервера также считается.

Что ты конкретно хочешь сделать?

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

Link to comment

А функция setWeatherBlended(id) не работает? Тестировал у себя - ноль реакции, ни через минуту ни через две. Тестил на серверной и на клиентской стороне. Результат одинаковый. setWeather(id) работает нормально.

Link to comment

все верно, работает. Если у меня setMinuteDuration(60000) то погода изменится через час получается? Как же тогда сделать чтобы она менялась в течение 1-2 минут как указано в документации при таком setMinuteDuration?

Link to comment

Смена погоды происходит за 2 игровых часа, стандартная длительность игровой минуты 1 секунда.

Ну тут только если свою погоду делать. (Используя setSkyGradient, setRainLevel ) + шейдер.

На баг трекере есть запрос, можно задонатить, тогда запрос станет приоритетным:

https://bugs.mtasa.com/view.php?id=4531

Link to comment

Есть какая-нибудь встроенная функция чтобы получить ближайший транспорт к игроку. Или только перебором в цикле всего транспорта и getDistanceBetweenPoints3D(...)?

Link to comment

Если уничтожить элемент (например marker) функцией

destroyElement 

нужно ли вместе с этим удалять и повешенный

addEventHandler("onMarkerHit", marker, func) 

обработчик на этот элемент. Или после дестроя обработчики также удаляются?

Link to comment

При уничтожении элемента, все что связано с ним удаляется (элемент дата, события, а также дочерние элементы). Те события, которые у тебя были повешены на элемент не будут вызваны больше.

Файл MTA10_Server/mods/deathmatch/logic/CElement.cpp (строка 77)

Файл MTA10/mods/shared_logic/CClientEntity.cpp (строка 72)

Ссылка (Сервер): https://github.com/multitheftauto/mtasa ... nt.cpp#L77

Ссылка (клиент): https://github.com/multitheftauto/mtasa ... ty.cpp#L72

Link to comment

При входе в колшейп на клиентской стороне выводится сообщение

function startTimerHit( hitElement ) 
        outputChatBox("Сообщение") 
end 

Это сообщение видят все игроки. Чтобы увидел сообщение только тот кто вошел в колшейп нужно сообщение отправлять на сервере с visibleTo? Или у меня что-то не так?

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...