Jump to content

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


Recommended Posts

Более легкий и менее костыльный вариант - заносить функции в таблицу.
  
t = {} 
  
function t.foo() 
  -- что-то делается 
end 
  
-- вызываем по переменной 
local s = 'foo' 
t[s]() -- сам вызов 
  

Не надо никуда ничего заносить... Они и так в таблице...

В Lua подобие scope реализовано с помощью таблиц. Все данные можно найти в суперглобальной таблице G.

Link to comment

Привет всем, хочу в будущем синхронизировать сервер и сайт (когда разберусь в php :) ). Они стоят на разных машинах. Где будет лучше создать MySql базу, на машине сервера или сайта, или безразницы?

Link to comment
Привет всем, хочу в будущем синхронизировать сервер и сайт (когда разберусь в 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
Привет всем, хочу в будущем синхронизировать сервер и сайт (когда разберусь в php :) ). Они стоят на разных машинах. Где будет лучше создать MySql базу, на машине сервера или сайта, или безразницы?

Для каждого свою. А синхронизироваться через удалённые подключения или через PHP SDK.

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

Link to comment

Вы только что сами всё описали. Если Вы будете делать две БД, то Вам всёравно придётся делать два подключения, только Вы хотите делать два подключения с сервера на localhost, а сайт на удалённую. Я же предлагаю сделать для сайта локальную БД и для сервера. Сервер будет подключаться к своей локальной и к сайту (удалённая).

Link to comment
Сервер будет подключаться к своей локальной и к сайту (удалённая).

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

Link to comment
Сервер будет подключаться к своей локальной и к сайту (удалённая).

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

Да, чтобы исключить задержки и некоторые проблемы сети.

Link to comment

Господа, умно ли хранить (с точки зрения безопасности) элементДату игрока в клиенте в виде переменной и обновлять её в евенте "onClientElementDataChange"? Конкретно эту элементДату юзаю во многих ресурсах, тут рассматривается и нуждается только один из них (очень часто юзаю).

Link to comment
Господа, умно ли хранить (с точки зрения безопасности) элементДату игрока в клиенте в виде переменной и обновлять её в евенте "onClientElementDataChange"? Конкретно эту элементДату юзаю во многих ресурсах, тут рассматривается и нуждается только один из них (очень часто юзаю).

А кто устанавливает эту элементДату?

Link to comment
А кто устанавливает эту элементДату?

После авторизации сервер берёт строку из БД и назначает в дату игроку. Также возможно её дальнейшее изменение на сервере, но редко.

Link to comment
А кто устанавливает эту элементДату?

После авторизации сервер берёт строку из БД и назначает в дату игроку. Также возможно её дальнейшее изменение на сервере, но редко.

Просто отслеживайте событие onElementDataChange на сервере, если присутствует переменная client, то следовательно элементДата была изменена с клиента.

Link to comment

Привет всем, объясните, пожалуйста, как работает dxDrawImageSection, уже третий час сижу, ничего не получается. Вобщем, две одинаковых картинки, только цветом разные. Одну вызываю через dxDrawImge, другую хочу наложить на первую с помощью dxDrawImageSection, чтобы можно было опредедённую часть показывать в будущем. Но ничего не получается, то она не там стоит, то увеличенная. Помогите наложить картинку через dxDrawImageSection на картинку, допустим с координатами dxDrawImage ( sx, sy, width, height, "img.png" ), чтобы 1/1 была.

Link to comment
-- допустим, что картинки 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

Спасибо, разобрался, оказывается дело было в том, что размер изображения 300, 300. И я использовал размер исходя из разрешения экрана (sx*0.xxx, sy*0,yyy), а в dxDrawImageSection, это не прокатывает. Точнее я подбирал так, чтобы они сходились, но при изменении они расходятся. Вобщем, можно как-нибудь пересохранить картинку при старте ресурса с заданными размерами и потом юзать её? Наподобии этого https://wiki.multitheftauto.com/wiki/DxConvertPixels

PS: Решено, спасибо TheNormalnij.

Edited by Guest
Link to comment

Поясните за "стрим"(isElementStreamIn). Верно ли, что если элемент находится в тех же дименшоне и интерьере, что и игрок, и находится в радиусе видимости, то он стримится? Вообще, когда элемент стримится?

Link to comment

По сути да, только не isElementStreamIn, а isElementStreamedIn. Он проверяет находится ли элемент в зоне видимости или нет. Насчёт dimension и интерьера сказать не могу, нужно просто проверить. А вобще вот аналогичная функция https://wiki.multitheftauto.com/wiki/IsElementOnScreen.

Link to comment
По сути да, только не isElementStreamIn, а isElementStreamedIn. Он проверяет находится ли элемент в зоне видимости или нет. Насчёт dimension и интерьера сказать не могу, нужно просто проверить. А вобще вот аналогичная функция https://wiki.multitheftauto.com/wiki/IsElementOnScreen.

Аналогичная? Шутите чтоли? IsElementOnScreen проверяет находится ли игрок на экране.

Когда entity в стримере, он как бы online, т.е. он находится в памяти GTA, у него работает физика и т.д. Когда entity вышел из стрима, он как бы offline и вся физика не просчитывается, и вобще GTA не знает о его присутствии

Link to comment

Я имел ввиду аналочичная тому, что можно использовать Jonathan'у. Насколько я понял, он хочет проверить,

если элемент находится в тех же дименшоне и интерьере, что и игрок, и находится в радиусе видимости
т.е. проверку: является ли какой-либо элемент видимым для игрока.
Link to comment
Я имел ввиду аналочичная тому, что можно использовать Jonathan'у. Насколько я понял, он хочет проверить,
если элемент находится в тех же дименшоне и интерьере, что и игрок, и находится в радиусе видимости
т.е. проверку: является ли какой-либо элемент видимым для игрока.

Причем тут видимость ? Проверка по стриму будет работать, если элемент будет с нулевой альфой, и будет работать даже если элемент будет за спиной у чего-либо, т.е. видить его никто не будет.

А вот onScrean только когда элемент будет виден игроку.

Link to comment

Спасибо за помощь. Скажите, как передать элемент(например vehicle) от одного ресурса другому?

Этот код не работает:

setElementParent(veh, getResourceDynamicElementRoot(getThisResource())) 

(Функция выполняется из триггера нужного ресурса, так что getThisResource() даст нужный ресурс)

Но и ошибок не выдаёт. Когда я запрашиваю родителя у машины - выдаёт карту. Запрашиваю родителя у карты - выдаёт ресурс. Запрашиваю имя ресурса - выдаёт ошибку: "Bad 'resource' pointer". Рестарт присвоенного ресурса ни к чему не приводит: машина как стояла на том месте, так и стоит. Непонятно. Рестарт первоначального ресурса приведёт к удалению машины, буд-то я и не присваивал родителя машине.

Пробовал прикреплять к обычной карте ресурса - результат тот же. Пробовал прикреплять к ресурсу - ошибка.

Link to comment

Чем можно хорошо сделать ИИ, в котором через определенный промежуток времени будет происходить "смена действия". Таймерами не очень хорошо получается. Нету ли каких-нибуть интересных статей/книг по подобному ИИ(не обязательно на Lua) ? Всего ИИ будет у 350(+- 50) "существ". Причем их существование будет направлено на определенных игроков, но "направление" может изменятся во время их существования.

Чем можно делать замеры нагрузки на ЦП от определенных действий ? Как сильно существование элементов нагружает ЦП ? Отсчет таймеров ? Если будет 300 таймеров - какая нагрузка ?

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