Flaker Posted March 4, 2014 Share Posted March 4, 2014 Более легкий и менее костыльный вариант - заносить функции в таблицу. t = {} function t.foo() -- что-то делается end -- вызываем по переменной local s = 'foo' t[s]() -- сам вызов Не надо никуда ничего заносить... Они и так в таблице... В Lua подобие scope реализовано с помощью таблиц. Все данные можно найти в суперглобальной таблице G. Link to comment
TheNormalnij Posted March 4, 2014 Share Posted March 4, 2014 Я как бы уже извинился и знаю _ENV в Lua 5.2. Link to comment
Memory Posted March 5, 2014 Share Posted March 5, 2014 Привет всем, хочу в будущем синхронизировать сервер и сайт (когда разберусь в php ). Они стоят на разных машинах. Где будет лучше создать MySql базу, на машине сервера или сайта, или безразницы? Link to comment
Kernell Posted March 5, 2014 Share Posted March 5, 2014 Привет всем, хочу в будущем синхронизировать сервер и сайт (когда разберусь в php ). Они стоят на разных машинах. Где будет лучше создать MySql базу, на машине сервера или сайта, или безразницы? Для каждого свою. А синхронизироваться через удалённые подключения или через PHP SDK. Более легкий и менее костыльный вариант - заносить функции в таблицу. t = {} function t.foo() -- что-то делается end -- вызываем по переменной local s = 'foo' t[s]() -- сам вызов Не надо никуда ничего заносить... Они и так в таблице... В Lua подобие scope реализовано с помощью таблиц. Все данные можно найти в суперглобальной таблице G. Об этом уже было сказанано: Более легкий и менее костыльный вариант - заносить функции в таблицу. t = {} function t.foo() -- что-то делается end -- вызываем по переменной local s = 'foo' t[s]() -- сам вызов Может быть я чего-то н понимаю.. Но зачем дополнительно заносить функцию в таблицу, если все функции и так находятся в глобальной таблице _G? Аналогиночно можно получить или вызвать функцию через _G (вместо t): function foo() -- ... end local s = "foo"; _G[ s ](); А пример из PHP можно расписать так: a = 'hello'; _G[ a ] = 'world'; Link to comment
Memory Posted March 5, 2014 Share Posted March 5, 2014 Привет всем, хочу в будущем синхронизировать сервер и сайт (когда разберусь в php ). Они стоят на разных машинах. Где будет лучше создать MySql базу, на машине сервера или сайта, или безразницы? Для каждого свою. А синхронизироваться через удалённые подключения или через PHP SDK. Можете, если не трудно, описать вкратце процесс синхронизирования между двумя базами. Я думал сохранять данные, допустим при выходе с сервера, в БД, а с сайта при запросе подключаться к той же БД, получать данные и выводить на экран. Link to comment
Kernell Posted March 5, 2014 Share Posted March 5, 2014 Вы только что сами всё описали. Если Вы будете делать две БД, то Вам всёравно придётся делать два подключения, только Вы хотите делать два подключения с сервера на localhost, а сайт на удалённую. Я же предлагаю сделать для сайта локальную БД и для сервера. Сервер будет подключаться к своей локальной и к сайту (удалённая). Link to comment
Memory Posted March 5, 2014 Share Posted March 5, 2014 Сервер будет подключаться к своей локальной и к сайту (удалённая). А для чего? Т.е. получать желательнее данные, например, при входе на сервер будет с локальной базы, верно? Link to comment
TheNormalnij Posted March 5, 2014 Share Posted March 5, 2014 Сервер будет подключаться к своей локальной и к сайту (удалённая). А для чего? Т.е. получать желательнее данные, например, при входе на сервер будет с локальной базы, верно? Да, чтобы исключить задержки и некоторые проблемы сети. Link to comment
Jonathan.P Posted March 7, 2014 Share Posted March 7, 2014 Господа, умно ли хранить (с точки зрения безопасности) элементДату игрока в клиенте в виде переменной и обновлять её в евенте "onClientElementDataChange"? Конкретно эту элементДату юзаю во многих ресурсах, тут рассматривается и нуждается только один из них (очень часто юзаю). Link to comment
Kernell Posted March 7, 2014 Share Posted March 7, 2014 Господа, умно ли хранить (с точки зрения безопасности) элементДату игрока в клиенте в виде переменной и обновлять её в евенте "onClientElementDataChange"? Конкретно эту элементДату юзаю во многих ресурсах, тут рассматривается и нуждается только один из них (очень часто юзаю). А кто устанавливает эту элементДату? Link to comment
Jonathan.P Posted March 7, 2014 Share Posted March 7, 2014 А кто устанавливает эту элементДату? После авторизации сервер берёт строку из БД и назначает в дату игроку. Также возможно её дальнейшее изменение на сервере, но редко. Link to comment
Kernell Posted March 7, 2014 Share Posted March 7, 2014 А кто устанавливает эту элементДату? После авторизации сервер берёт строку из БД и назначает в дату игроку. Также возможно её дальнейшее изменение на сервере, но редко. Просто отслеживайте событие onElementDataChange на сервере, если присутствует переменная client, то следовательно элементДата была изменена с клиента. Link to comment
Memory Posted March 8, 2014 Share Posted March 8, 2014 Привет всем, объясните, пожалуйста, как работает dxDrawImageSection, уже третий час сижу, ничего не получается. Вобщем, две одинаковых картинки, только цветом разные. Одну вызываю через dxDrawImge, другую хочу наложить на первую с помощью dxDrawImageSection, чтобы можно было опредедённую часть показывать в будущем. Но ничего не получается, то она не там стоит, то увеличенная. Помогите наложить картинку через dxDrawImageSection на картинку, допустим с координатами dxDrawImage ( sx, sy, width, height, "img.png" ), чтобы 1/1 была. Link to comment
TheNormalnij Posted March 8, 2014 Share Posted March 8, 2014 -- допустим, что картинки 32x32 px dxDrawImage ( sx, sy, 32, 32, "img.png" ) -- допустим, отклонение картинки от начала координат 64, 0 dxDrawImageSection ( sx, sy, 32, 32, 64, 0, 32, 32 "img2.png" ) скорее всего оно так работает Link to comment
Memory Posted March 9, 2014 Share Posted March 9, 2014 (edited) Спасибо, разобрался, оказывается дело было в том, что размер изображения 300, 300. И я использовал размер исходя из разрешения экрана (sx*0.xxx, sy*0,yyy), а в dxDrawImageSection, это не прокатывает. Точнее я подбирал так, чтобы они сходились, но при изменении они расходятся. Вобщем, можно как-нибудь пересохранить картинку при старте ресурса с заданными размерами и потом юзать её? Наподобии этого https://wiki.multitheftauto.com/wiki/DxConvertPixels PS: Решено, спасибо TheNormalnij. Edited March 9, 2014 by Guest Link to comment
TheNormalnij Posted March 9, 2014 Share Posted March 9, 2014 Решено. Надо было правильно определится с координатами. Link to comment
Jonathan.P Posted March 11, 2014 Share Posted March 11, 2014 Поясните за "стрим"(isElementStreamIn). Верно ли, что если элемент находится в тех же дименшоне и интерьере, что и игрок, и находится в радиусе видимости, то он стримится? Вообще, когда элемент стримится? Link to comment
Memory Posted March 12, 2014 Share Posted March 12, 2014 По сути да, только не isElementStreamIn, а isElementStreamedIn. Он проверяет находится ли элемент в зоне видимости или нет. Насчёт dimension и интерьера сказать не могу, нужно просто проверить. А вобще вот аналогичная функция https://wiki.multitheftauto.com/wiki/IsElementOnScreen. Link to comment
Kernell Posted March 12, 2014 Share Posted March 12, 2014 По сути да, только не isElementStreamIn, а isElementStreamedIn. Он проверяет находится ли элемент в зоне видимости или нет. Насчёт dimension и интерьера сказать не могу, нужно просто проверить. А вобще вот аналогичная функция https://wiki.multitheftauto.com/wiki/IsElementOnScreen. Аналогичная? Шутите чтоли? IsElementOnScreen проверяет находится ли игрок на экране. Когда entity в стримере, он как бы online, т.е. он находится в памяти GTA, у него работает физика и т.д. Когда entity вышел из стрима, он как бы offline и вся физика не просчитывается, и вобще GTA не знает о его присутствии Link to comment
Memory Posted March 12, 2014 Share Posted March 12, 2014 Я имел ввиду аналочичная тому, что можно использовать Jonathan'у. Насколько я понял, он хочет проверить, если элемент находится в тех же дименшоне и интерьере, что и игрок, и находится в радиусе видимости т.е. проверку: является ли какой-либо элемент видимым для игрока. Link to comment
Elengar Posted March 12, 2014 Share Posted March 12, 2014 Я имел ввиду аналочичная тому, что можно использовать Jonathan'у. Насколько я понял, он хочет проверить, если элемент находится в тех же дименшоне и интерьере, что и игрок, и находится в радиусе видимости т.е. проверку: является ли какой-либо элемент видимым для игрока. Причем тут видимость ? Проверка по стриму будет работать, если элемент будет с нулевой альфой, и будет работать даже если элемент будет за спиной у чего-либо, т.е. видить его никто не будет. А вот onScrean только когда элемент будет виден игроку. Link to comment
Jonathan.P Posted March 17, 2014 Share Posted March 17, 2014 Спасибо за помощь. Скажите, как передать элемент(например vehicle) от одного ресурса другому? Этот код не работает: setElementParent(veh, getResourceDynamicElementRoot(getThisResource())) (Функция выполняется из триггера нужного ресурса, так что getThisResource() даст нужный ресурс) Но и ошибок не выдаёт. Когда я запрашиваю родителя у машины - выдаёт карту. Запрашиваю родителя у карты - выдаёт ресурс. Запрашиваю имя ресурса - выдаёт ошибку: "Bad 'resource' pointer". Рестарт присвоенного ресурса ни к чему не приводит: машина как стояла на том месте, так и стоит. Непонятно. Рестарт первоначального ресурса приведёт к удалению машины, буд-то я и не присваивал родителя машине. Пробовал прикреплять к обычной карте ресурса - результат тот же. Пробовал прикреплять к ресурсу - ошибка. Link to comment
Kernell Posted March 17, 2014 Share Posted March 17, 2014 (edited) Нельзя переместить элемент из одного ресурса в другой Edited March 22, 2014 by Guest Link to comment
Elengar Posted March 22, 2014 Share Posted March 22, 2014 Чем можно хорошо сделать ИИ, в котором через определенный промежуток времени будет происходить "смена действия". Таймерами не очень хорошо получается. Нету ли каких-нибуть интересных статей/книг по подобному ИИ(не обязательно на Lua) ? Всего ИИ будет у 350(+- 50) "существ". Причем их существование будет направлено на определенных игроков, но "направление" может изменятся во время их существования. Чем можно делать замеры нагрузки на ЦП от определенных действий ? Как сильно существование элементов нагружает ЦП ? Отсчет таймеров ? Если будет 300 таймеров - какая нагрузка ? 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