H1TM4N Posted February 2, 2013 Share Posted February 2, 2013 Как выключить физические столкновения? (ездить сквозь других игроков) Link to comment
Scripting Moderators Sarrum Posted February 3, 2013 Scripting Moderators Share Posted February 3, 2013 setElementCollisionsEnabled Link to comment
DakiLLa Posted February 3, 2013 Share Posted February 3, 2013 (ездить сквозь других игроков) setElementCollidableWith Link to comment
Vamp1r Posted February 3, 2013 Share Posted February 3, 2013 Такой вот вопрос: Как лучше организовать гуи вход игрока на сервер? Т.е. из какого события trigger'ить клиент событие, чтобы оно отображалось всегда? Например, если я из onPlayerJoin сразу триггерю, то иногда ресурсы не успевают докачаться и гуи просто не отображается. Link to comment
Kernell Posted February 3, 2013 Share Posted February 3, 2013 на Server добавьте событие: addEvent( "onClientReady", true ); на Client добавьте событие: addEvent( "showLoginScreen", true ); Далее: Client: onClientResourceStart -> triggerServerEvent "onClientReady" Server: onClientReady -> всякие нужные вам проверки (например бан, автологин и прочее) -> triggerClient "showLoginScreen" Client: В обработчике события showLoginScreen создаёте окно Link to comment
Memory Posted February 3, 2013 Share Posted February 3, 2013 Здравствуйте, подскажите как зафиксировать камеру возле игрока например под 90 градусов или 120 (это неважно). Суть в том, чтобы сделать как бы getCameraViewMode (id), только положение камеры будет задано мной и было фиксировано. Есть идеи? Заранее спасибо Link to comment
Flaker Posted February 3, 2013 Share Posted February 3, 2013 Здравствуйте, подскажите как зафиксировать камеру возле игрока например под 90 градусов или 120 (это неважно). Суть в том, чтобы сделать как бы getCameraViewMode (id), только положение камеры будет задано мной и было фиксировано. Есть идеи? Заранее спасибо https://wiki.multitheftauto.com/wiki/SetCameraMatrix Link to comment
Memory Posted February 4, 2013 Share Posted February 4, 2013 Спасибо, я находил эту функцию, но думал вдруг есть ещё какие При команде работает т.е. я проезжаю несколько метров, активирую команду, положение камеры обновляется. Но надо же, чтобы постоянно обновлялось и при использовании setTimer выдаёт ошибку (... perform arithmetic on local 'x') в получении позиции элемента. function spawnScreen (player) local x, y, z = getElementPosition ( player ) local lx = x-18 local ly = y+3 local lz = z+6 local lxl = x-5 local lyl = y-1 local lzl = z+3 setCameraMatrix (player,lx,ly,lz,lxl,lyl,lzl) end setTimer ( spawnScreen, 500, 0) addCommandHandler( "cam", spawnScreen ) Link to comment
TEDERIs Posted February 4, 2013 Share Posted February 4, 2013 Вот например так можно сделать для локального игрока: local camState addCommandHandler ( "cam", function ( ) if camState then removeEventHandler ( "onClientPreRender", root, camUpdate ) camState = nil return end addEventHandler ( "onClientPreRender", root, camUpdate, false ) camState = true end ) function camUpdate ( ) local x, y, z = getElementPosition ( localPlayer ) setCameraMatrix ( x, y, z + 10, x, y, z ) -- Вид сверху end Link to comment
TaHkep Posted February 4, 2013 Share Posted February 4, 2013 Всем доброго времени суток Суть моего скрипта-иконки оружия нету, появляется лишь при смене оружия, а потом, по истечению 5 секунд она пропадает. вот собственно он function onstart() showPlayerHudComponent ( "ammo", false ) showPlayerHudComponent ( "weapon", false ) end addEventHandler ( "onClientResourceStart", getRootElement ( ), onstart ) function showHud() showPlayerHudComponent ( "ammo", true ) showPlayerHudComponent ( "weapon", true ) setTimer ( hideHud, 5000, 1 ) end addEventHandler ( "onClientPlayerWeaponSwitch", getRootElement(), showHud ) function hideHud() showPlayerHudComponent ( "ammo", false ) showPlayerHudComponent ( "weapon", false ) end Все работает, но, фишка в том, что таймер один раз запустился, и сколько бы раз я не менял оружие, по истечению 5 секунд с момента первого проворота ролика мыши-иконка пропадает. Ну потом все нормально, но должно быть так: верчу колесико, кручу, и уже потом, когда я остановился, таймер включается. В голову приходит только killTimer, но я не вижу как его сюда впихнуть... Link to comment
TEDERIs Posted February 5, 2013 Share Posted February 5, 2013 Если я правильно понял, тебе нужно удалять действующий таймер перед созданием нового: local hudTimer function onstart() showPlayerHudComponent ( "ammo", false ) showPlayerHudComponent ( "weapon", false ) end addEventHandler ( "onClientResourceStart", getRootElement ( ), onstart ) function showHud() showPlayerHudComponent ( "ammo", true ) showPlayerHudComponent ( "weapon", true ) if hudTimer then killTimer ( hudTimer ) end hudTimer = setTimer ( hideHud, 5000, 1 ) end addEventHandler ( "onClientPlayerWeaponSwitch", getRootElement(), showHud ) function hideHud() showPlayerHudComponent ( "ammo", false ) showPlayerHudComponent ( "weapon", false ) hudTimer = nil end Link to comment
Vamp1r Posted February 7, 2013 Share Posted February 7, 2013 Такая проблема: Нужно создать произвольное событие, которое бы вызывалось везде, где надо, через addEventHandler . В моем случае, если нету addEvent, то addEventHandler не дает никаких результатов. Что-то вроде этого (один и тот же ресурс): Файл test1c.lua (клиент): ... triggerServerEvent("test", getLocalPlayer()) ... Файл test1s.lua (сервер): addEventHandler("test", true) addEventHandler("test", getRootElement(), function() outputChatBox("Ололо я вызывался") end ) А вот если создать файл test2s.lua (сервер): addEventHandler("test", getRootElement(), function() outputChatBox("Ололо я вызывался опять") end ) Второй раз событие не вызовется, если не добавить addEventHandler("test", true) . Возможно ли как-то решить данную проблему? Или для таких вещей придется писать свой addEventHandler ? Link to comment
TEDERIs Posted February 7, 2013 Share Posted February 7, 2013 Условием использования кастомных событий является их регистрация с помощью функции AddEvent. События регистрируются перед их вызовом. Твой код должен выглядеть вот так: addEvent("test", true) addEventHandler("test", getRootElement(), function() outputChatBox("Ололо я вызывался") end ) Link to comment
Vamp1r Posted February 8, 2013 Share Posted February 8, 2013 Условием использования кастомных событий является их регистрация с помощью функции AddEvent. События регистрируются перед их вызовом. Твой код должен выглядеть вот так: addEvent("test", true) addEventHandler("test", getRootElement(), function() outputChatBox("Ололо я вызывался") end ) В таком случае, куда удобнее написать свою функцию: function addEventHandlerEx(eventName, attachedTo, handlerFunction) addEvent(eventName, true) addEventHandler(eventName, attachedTo, handlerFunction) end И не заморачиваться каждый раз Link to comment
Flaker Posted February 8, 2013 Share Posted February 8, 2013 Спорно... Но если тебе лично удобно, то почему нет? Link to comment
TEDERIs Posted February 8, 2013 Share Posted February 8, 2013 Регистрация события производится единожды при запуске ресурса(или по мере необходимости). Крепление события же в ресурсе происходит как правило в нескольких местах. Это значит функция объединяющая их лишена практического смысла. Link to comment
Memory Posted February 24, 2013 Share Posted February 24, 2013 Привет всем. Подскажите, пожалуйста, как можно менять картинку, при наведении на неё курсора мыши, т.е. выделение кнопки. Link to comment
Kernell Posted February 24, 2013 Share Posted February 24, 2013 Будьте более точны, не понятно, что подразумевается под "картинкой". Если речь о CEGUI элементах - смотрите https://wiki.multitheftauto.com/wiki/OnClientMouseEnter и https://wiki.multitheftauto.com/wiki/OnClientMouseLeave Если речь о dx-функциях - только самому считать координаты мышки и картинки Link to comment
SweetyWolf Posted March 1, 2013 Share Posted March 1, 2013 Понадобилось мне тут передать mysql handler из одного ресурса в другой. Но при использовании такого кода в принимающем ресурсе: local hand = exports.players:askMysqlHandler () А в посылающем: function askMysqlHandler () return database -- это мой mysql handler end Оно возвращает строку 'askMysqlHandler'. Если database в отправителе заменить на 1, то он его нормально передает. Отсюда вопрос - mysql handler не передается между ресурсами? Как тогда быть? Можно ли одновременно иметь два подключения к mysql базе данных, но из разных ресурсов? Link to comment
Kenix Posted March 1, 2013 Share Posted March 1, 2013 Ты используешь модуль или стандартные функции? Можно ли одновременно иметь два подключения к mysql базе данных, но из разных ресурсов? Можно ( а вообще лучше самому проверять прежде чем спрашивать ), но если эти 2 подключения к одной и тойже базе, то это бесмыслица. Link to comment
SweetyWolf Posted March 1, 2013 Share Posted March 1, 2013 а вообще лучше самому проверять прежде чем спрашивать Да проверить то могу, и даже с первого взгляда будет работать, но в итоге окажется что в каком-нить месте проблема, которой не было при тестировании. Я использую https://wiki.multitheftauto.com/wiki/Mysql Link to comment
Kenix Posted March 1, 2013 Share Posted March 1, 2013 Используй стандартные функции вместо модуля. Link to comment
SweetyWolf Posted March 2, 2013 Share Posted March 2, 2013 Используй стандартные функции вместо модуля. Ок, спасибо Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now