Vamp1r Posted August 4, 2012 Share Posted August 4, 2012 (edited) Что-то я не заметил такого события. Есть ли вообще похожее событие? Чтобы вызывалось, когда автомобиль был создан первый раз. Edited August 4, 2012 by Guest Link to comment
Flaker Posted August 4, 2012 Share Posted August 4, 2012 есть эвент OnVehicleRespawn, ты в нем можешь поставить проверку. Например ты ставишь машине дату такую например setElementData(theVeh, "TEST", true) А в эвенте OnVehicleRespawn проверку на наличие даты ставишь: addEventHandler("onVehicleRespawn", root, function ( exploded ) if ( not getElementData(source, "TEST") ) then end end) Link to comment
Vamp1r Posted August 4, 2012 Author Share Posted August 4, 2012 есть эвент OnVehicleRespawn, ты в нем можешь поставить проверку.Например ты ставишь машине дату такую например setElementData(theVeh, "TEST", true) А в эвенте OnVehicleRespawn проверку на наличие даты ставишь: addEventHandler("onVehicleRespawn", root, function ( exploded ) if ( not getElementData(source, "TEST") ) then end end) Я пробовал данное событие. Либо оно сломано на текущей версии, либо хз. Не срабатывает на созданный транспорт вообще (проверял только создание, а не респавн после взрыва) Link to comment
_Dark_ Posted August 4, 2012 Share Posted August 4, 2012 Зачем вам вообще это событие? По идее, раз вы создаете элемент, то можно сразу все с ним сделать напрямую. Link to comment
Vamp1r Posted August 4, 2012 Author Share Posted August 4, 2012 (edited) Зачем вам вообще это событие? По идее, раз вы создаете элемент, то можно сразу все с ним сделать напрямую. Эта функция нужна для отслеживания создания автомобиля и присвоения ему разных свойств. Можно, конечно, написать функцию, которая бы содержала в себе createVehicle, а потом использовать ее для вызова своего ивента. Но это не очень удобно. Edited August 4, 2012 by Guest Link to comment
_Dark_ Posted August 4, 2012 Share Posted August 4, 2012 Вы можете присвоить свойства автомобилю в момент его создания. События нужны для отслеживания неявных действий, например, захода игрока, выхода игрока, клику курсором и т.п. Они не нужны и не требуются для отслеживания скриптовых явлений. Если вам нужно отслеживать момент создания автомобиля - поверьте, логика вашего кода неверна. Link to comment
Vamp1r Posted August 4, 2012 Author Share Posted August 4, 2012 Вы можете присвоить свойства автомобилю в момент его создания.События нужны для отслеживания неявных действий, например, захода игрока, выхода игрока, клику курсором и т.п. Они не нужны и не требуются для отслеживания скриптовых явлений. Если вам нужно отслеживать момент создания автомобиля - поверьте, логика вашего кода неверна. Спасибо. Мне нужно было только узнать об ивенте. Как я уже написал выше, нужна функция, которая бы порождала собственное событие. Вопрос решен. Link to comment
Arisu Posted August 6, 2012 Share Posted August 6, 2012 Вы можете присвоить свойства автомобилю в момент его создания.События нужны для отслеживания неявных действий, например, захода игрока, выхода игрока, клику курсором и т.п. Они не нужны и не требуются для отслеживания скриптовых явлений. Если вам нужно отслеживать момент создания автомобиля - поверьте, логика вашего кода неверна. Спасибо, дружище, но твое шаблонное мышление тут не у всех. Придумай мне способ отследить создание авто, когда его создает посторонний скрипт? Ну например, я хочу все машины, созданные админкой, окрашивать в яркозеленый цвет. Перелопачивать код админки не хочу, хочу вывести в гейммоде. Осилишь? Link to comment
_Dark_ Posted August 6, 2012 Share Posted August 6, 2012 Спасибо, дружище, но твое шаблонное мышление тут не у всех. Прекрасно. Придумай мне способ отследить создание авто, когда его создает посторонний скрипт? NASA Mars Rover успешно примарсился Link to comment
Vamp1r Posted August 6, 2012 Author Share Posted August 6, 2012 Добавить данное событие не составит труда. Всего лишь 3 строчки: CGame.cpp (после 1506 строки): m_Events.AddEvent ( "onVehicleCreate", "", NULL, false ); CStaticFunctionDefinitions.cpp (после 4668 строки): CLuaArguments Arguments; pVehicle->CallEvent ( "onVehicleCreate", Arguments ); Ну например, я хочу все машины, созданные админкой, окрашивать в яркозеленый цвет. Отслеживать созданный автомобиль в onClientElementStreamIn. Например: addEventHandler("onClientElementStreamIn", getRootElement( ), function ( ) if getElementType(source) == "vehicle" then if getElementData(source, "vehicleCreate") == false then -- тут триггерить серверное событие, в котором ты хочешь покрасить автомобиль setElementData(source, "vehicleCreate", true) end end end ) Так же, каждому созданному автомобилю в своем ресурсе, задавать элемент дату. Проще всего это сделать, написав свою функцию создания транспорта. Так же возможно использование серверного события onElementStartSync Link to comment
_Dark_ Posted August 6, 2012 Share Posted August 6, 2012 Перекрашивать каждый раз автомобиль в один и тот же цвет? Я не знаю, будет ли работать тот код, который вы дали, но тогда наверное надо onElementCreate ? Смысл отслеживать создание vehicle, если это element. Link to comment
Vamp1r Posted August 6, 2012 Author Share Posted August 6, 2012 Перекрашивать каждый раз автомобиль в один и тот же цвет?Я не знаю, будет ли работать тот код, который вы дали, но тогда наверное надо onElementCreate ? Смысл отслеживать создание vehicle, если это element. Почему же каждый раз? Автомобиль перекрашивается один раз и на все время. Можно и onElementCreate. Это тоже не составит труда, добавить в создание всех элементов вызов одного и того же события. Я просто привел пример, что это не тяжело, но почему-то этого нет. 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