Jump to content

Передать массив в клиентский файл.


Recommended Posts

В серверном файле находится массив из маркеров. А в клиентском файле мне нужно узнать, стоит ли игрок в маркере ( isElementWithinMarker() ). Как передать элемент маркера (массив элементов) из серверного файла в клиентский? + Функция, в которой находится isElementWithinMarker(), вызывается из другого ресурса через call.

Link to comment

Как вариант присвоить каждому маркеру ID с помощью

setElementID 

Далее, где угодно (хоть на клиенте, хоть из другого ресурса) достаете элемент нужного маркера с помощью

getElementByID 

, и уже применяете к нему isElementWithinMarker().

Link to comment

Спасибо. Не будет ли это слишком ресурсоёмко, при большом количестве маркеров?

UPD: В серверном файле, где создаются маркеры, в консоль выводит "corona", а в клиентском файле, не выводит "так как outputDebugString - bollean ".

outputDebugString(getMarkerIcon(getElementByID("marker name"))) 

UPD2: И мой первый вариант не работает.

В "Ybuilding/meta.xml" прописано:

function="getMarkers" type="server" /> 

В серверном файле:

function getMarkers ( idMarkerGet ) 
    return idMarkerGet 
end 

И при вызове функции из клиентского файла

outputDebugString(getMarkers("test text")) 

выдает, мол "глобальный getMarkers возвращает nil"

Link to comment

Минимальный вариант на ресурсоемкость:

--server 
local myMarkerRoot = createElement( 'myMarkerRoot', 'myMarkerRoot' ) 
  
-- где-то в скрипте создаем маркеры 
local marker = createMarker( x, y, z, type ... ) 
setElementParent( marker, myMarkerRoot ) 
  

--client 
local myMarkerRoot = getElementByID( 'myMarkerRoot' ) 
  
-- используем маркеры 
for key, marker in pairs( getElementChildren( myMarkerRoot ) ) do 
  
end 
  

Link to comment

Спасибо за ответ, но как я понял, каждый раз придется проверять каждый маркер на "isElementWithinMarker()".

Поэтому, буду использовать эвенты onClientMarkerHit и onClientMarkerLeave, и записывать их с помощью

setElementData(localPlayer, "inMarker", source) 

Если так делать не стоит, напишите, пожалуйста.

Link to comment

А чем он небезопасен?

Просто если делать по вашему примеру, то придется каждый раз проверять все (100-1000) маркеров на "isElementWithinMarker()", что, как мне кажется, более ресурсоёмко, чем 2 лишних эвента, не так ли?

Link to comment

Потому что то значение, которое вы записываете, используется только для записи/выгрузки какой-то специфической информации, которую вряд ли вы будете использовать где-то ещё.

Локальная переменная то, что надо.

Не забудь, что обработчик можно вешать сразу на всю ветвь myMarkerRoot.

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