Jump to content

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


Recommended Posts

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

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

 

Link to comment
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);
      

 

Link to comment

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

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

Link to comment
  • 2 months later...

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

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

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

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

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

Link to comment
  • Other Languages Moderators
20 hours ago, Seddo said:

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

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

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

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

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

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

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

Link to comment
  • 2 months later...
  • 4 months later...
  • 2 weeks later...
On 17/02/2019 at 12:16, Miami Night Studio said:

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

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

Link to comment
  • 1 month later...

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

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

Edited by Nicholas Manchini
Link to comment
  • Other Languages Moderators
3 hours ago, Nicholas Manchini said:

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

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

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

Link to comment
  • 4 weeks later...

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

Link to comment
  • 1 month later...

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

Как добавить сюда 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
Link to comment
  • 2 months later...

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

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

Link to comment
  • Other Languages Moderators
On 15/09/2019 at 13:27, Miami Night Studio said:

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

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

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

Link to comment
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 2
Link to comment
  • 3 months later...
  • 3 months later...

Люди, подскажите как сделать скрипт?:

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


Заранее благодарен за любую помощь)

Edited by Alemaz
Link to comment
3 hours ago, Alemaz said:

Люди, подскажите как сделать скрипт?:

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


Заранее благодарен за любую помощь)

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

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