MX_Master

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

Recommended Posts

@Kail_Flin в клиентской части у тебя переменная item инициализируется и чего то в нее ложится. В фрагменте серверного кода у тебя тоже есть переменная item, но откуда она берется и что в ней лежит? Судя по всему в ней ничего нет и соответственно getElementData от item вернет false, а не массив. 

Придумай как передать item в функцию на серверной части :)

 

Share this post


Link to post
On 02.04.2018 at 10:32, LoveFist said:

@Kail_Flin в клиентской части у тебя переменная item инициализируется и чего то в нее ложится. В фрагменте серверного кода у тебя тоже есть переменная item, но откуда она берется и что в ней лежит? Судя по всему в ней ничего нет и соответственно getElementData от item вернет false, а не массив. 

Придумай как передать item в функцию на серверной части :)

 

Спасибо за ответ. Использовал другой вариант передачи данных в серверную часть triggerServerEvent.

Еще вопрос setElementData для объекта игрока, как правильно записать, что бы получить данные в серверной части, например флаг открытого меню? Или серверная сторона не видит объекты клиентской? Не совсем тут понимаю, будет ли работать такой код? Могу ли я прикрутить к объекту игрока массив(таблицу)?

--Клиенская сторона
--открытие меню
setElementData( me, 'menu_flag', true );--Флаг для игрока открывшего меню

--серверная сторона
addEvent( 'closeMenu', true );
addEventHandler( 'closeMenu', root, function()
    setElementFrozen( client, false );--Флаг для игрока открывшего меню
end);
      

 

Share this post


Link to post

Для таких ситуаций лучше использовать не setElementData, а передачу через события. Element data синхронизируется с сервером и всеми клиентами, что приведет к дополнительной нагрузке на CPU сервера и сеть.

Фактически у тебя есть событие - открытие меню игроком. По какой-то причине об этом должен знать сервер. Окей, передай это через triggerServerEvent. Все необходимые данные ты можешь передать как доп. аргументы triggerServerEvent.

Share this post


Link to post

Господа, прошу помощи!

Дано: таблица на сервере, которая постоянно обновляется.

Задача: получить в стороннем ресурсе на клиенте данные из этой таблицы.

Вижу вариант сначала получать данные в стороннем ресурсе на сервере и передать их на клиента, но вдруг есть возможность сделать короче, получить данные в той же функции, в которой запрашиваю.

Слышал про некую coroutine, возможно это то что мне поможет, но не нашел примеров как с ней работать.

Share this post


Link to post
20 hours ago, Seddo said:

Господа, прошу помощи!

Дано: таблица на сервере, которая постоянно обновляется.

Задача: получить в стороннем ресурсе на клиенте данные из этой таблицы.

Вижу вариант сначала получать данные в стороннем ресурсе на сервере и передать их на клиента, но вдруг есть возможность сделать короче, получить данные в той же функции, в которой запрашиваю.

Слышал про некую coroutine, возможно это то что мне поможет, но не нашел примеров как с ней работать.

Ну такой вот примерно рецепт усредненный, потому что вариаций масса.

Кароч ты можешь заталкать таблицу в setElementData, а можешь и в экспорты. coroutine тебе тут не поможет.

Share this post


Link to post

Какой версией языка lua используется в мта?

Share this post


Link to post
5 hours ago, triplesix said:

Какой версией языка lua используется в мта?

Lua 5.1

Share this post


Link to post

Доброго времени суток. Возможно ли в playSound вместо файла или же URL использовать row data (как это например возможно в engineLoad..)? 

Share this post


Link to post
On 17/02/2019 at 12:16, Miami Night Studio said:

Доброго времени суток. Возможно ли в playSound вместо файла или же URL использовать row data (как это например возможно в engineLoad..)? 

Нет, на данный момент такой возможности нет

Share this post


Link to post
Posted (edited)

Здравствуйте, можете помочь загрузить сразу несколько авто одним архивом на сервер?

Сам новичок в скриптинге на платформе Lua, так что прошу помощи.

Edited by Nicholas Manchini

Share this post


Link to post
3 hours ago, Nicholas Manchini said:

Здравствуйте, можете помочь загрузить сразу несколько авто одним архивом на сервер?

Сам новичок в скриптинге на платформе Lua, так что прошу помощи.

а в чем проблема? Берешь и грузишь ¯\_(ツ)_/¯

Share this post


Link to post
15 hours ago, Disinterpreter said:

а в чем проблема? Берешь и грузишь ¯\_(ツ)_/¯

я просто не знаю как правильно грузить по категориям

Share this post


Link to post

@Miami Night Studio, если файлы прописаны в meta.xml, то можно ее распарсить. Можно попробовать сделать это используя PHP. Или как вариант найти здесь автора этого модуля, он часто переносил свои репозитории, должно что-то остаться.

Share this post


Link to post

Здравствуйте, недавно захотел поставить заменку на Patriot, однако мне нужно заменить название авто (зелёный текст когда садишься) и его настройки. Прошу помощи.

Share this post


Link to post

@Nicholas Manchini, добрый день. На комьюнити есть несколько вариантов: 12 и 3.

Share this post


Link to post
Posted (edited)

Доброго времени суток,  нужна помощь.

Как добавить сюда ACL группу, чтобы при нажатии, допустим, на other было "Доступно только для ..."
Если нужен полный код, скину

function Grid:init()
	local screenSize = Vector2(exports.UI:getScreenSize())
	self.renderTarget = exports.UI:getRenderTarget()
	self.width = 1000
	self.height = 500
	self.x = screenSize.x / 2 - self.width / 2
	self.y = screenSize.y / 2 - self.height / 2

	self.panel = TuningPanel({
        {icon = Assets.textures.section_1,     text = exports.MultiLang:getString("figures")},
        {icon = Assets.textures.section_2,     text = exports.MultiLang:getString("vector")},
        {icon = Assets.textures.section_3,     text = exports.MultiLang:getString("other")},
	})
	self.y = self.y + self.panel.height / 2
	self.panel.x = self.x
	self.panel.y = self.y - self.panel.height
	self.panel.textBackgroundAlpha = 140
	self.panel.backgroundAlpha = 255

	self.stickersList = {}
	self.itemsHigh = 3
	self.itemSize = self.height / self.itemsHigh
	self.itemsWide = math.floor(self.width / self.itemSize)
	self.gridRenderTarget = dxCreateRenderTarget(self.width, self.height, true)
	self.gridScrollOffset = 0
	self.gridTargetScroll = 0
	self.gridScrollY = 0
	self.selectionX = 1
	self.selectionY = 1
	self.isGridActive = false
	self.panel.highlightSelection = not self.isGridActive
	self.stickerItemScale = 0.6

	self.itemTextHeight = 40
	self.font = Assets.fonts.GridText

	self.scrollBarWidth = 6
	self.scrollBarHeight = 0
	self.scrollBarVisible = true

	self.activeSection = 1
	self:changeSection(1)
end

 

Edited by ezzzyxs

Share this post


Link to post

Доброго времени суток, есть ряд вопросов.

Возможно ли как то скрыть прогрессбар загрузки кэша? Возможно ли как то узнать состояние этого прогрессбара (процент заполнения или же в отдельности макс. и текущ. величина)?
Писал загрузочную панель,, но увы в аккурат на неё наслаивается. Скрывать полностью не лучший вариант, ибо игрок все же должен понимать сколько ему осталось терпеть.

Share this post


Link to post
On 15/09/2019 at 13:27, Miami Night Studio said:

Доброго времени суток, есть ряд вопросов.

Возможно ли как то скрыть прогрессбар загрузки кэша? Возможно ли как то узнать состояние этого прогрессбара (процент заполнения или же в отдельности макс. и текущ. величина)?
Писал загрузочную панель,, но увы в аккурат на неё наслаивается. Скрывать полностью не лучший вариант, ибо игрок все же должен понимать сколько ему осталось терпеть.

Скрыть можно, да. Но необычным способом.

Share this post


Link to post
On 15/09/2019 at 13:27, Miami Night Studio said:

Доброго времени суток, есть ряд вопросов.

Возможно ли как то скрыть прогрессбар загрузки кэша? Возможно ли как то узнать состояние этого прогрессбара (процент заполнения или же в отдельности макс. и текущ. величина)?
Писал загрузочную панель,, но увы в аккурат на неё наслаивается. Скрывать полностью не лучший вариант, ибо игрок все же должен понимать сколько ему осталось терпеть.

Есть два варианта решения проблемы.

1. Можно сделать свою загрузку файлов через triggerLatentClientEvent
https://wiki.multitheftauto.com/wiki/TriggerLatentClientEvent

Статус загрузки получать через
https://wiki.multitheftauto.com/wiki/GetLatentEventStatus

2. Загрузка файлов через 
https://wiki.multitheftauto.com/wiki/DownloadFile

Получение статуса загрузки
https://wiki.multitheftauto.com/wiki/OnClientFileDownloadComplete

Оба способа решают вашу проблему, но они все имеют недостатки и на мой взгляд существенные.
1. Способ предусматривает то что вам нужно хранить все эти файлы в виде кэша ради быстрого доступа, т.к модели занимают большое кол-во байтов, то вам понадобится много оперативной памяти + вы должны решить сколько вы готовы передавать данных, мта это делает куда лучше чем если вы это сделаете сами. 
2. Способ лучше и проще, но тоже не идеален, я писал когда-то давно загрузку, но у меня на сервере падал LogicFPS при скачивании файлов, не знаю решена ли сейчас данная проблема или нет, если у вас при загрузке файлов таким способом все нормально, то пробуйте, но лучше проверьте.

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

UPD:
Примеры кода, возможно вам это поможет разобраться быстрее.
https://community.multitheftauto.com/index.php?p=resources&s=details&id=11265

Edited by Kenix
  • Like 1

Share this post


Link to post

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.