Jump to content

Salvar tunagem


Recommended Posts

  • Other Languages Moderators

Olá!

Movi o seu tópico para o local mais apropriado.

Sobre a sua dúvida: isso depende de como a tunagem é salva no veículo. Poderia compartilhar o trecho do código onde isso acontece?

Link to comment
On 15/09/2021 at 09:24, androksi said:

Olá!

Movi o seu tópico para o local mais apropriado.

Sobre a sua dúvida: isso depende de como a tunagem é salva no veículo. Poderia compartilhar o trecho do código onde isso acontece?

Opa, tudo bom ? vou deixar uma parte abaixo

	if selectedSubCategory == 10 then -- Air-Ride
								if hoveredCategory == equippedTuning then
									giveNotification("error", getLocalizedText("notification.error.itemIsPurchased", loopTable[hoveredCategory]["categoryName"]))
									promptDialog["state"] = false
								else
									if hasPlayerMoney(loopTable[hoveredCategory]["tuningPrice"]) then
										setElementData(enteredVehicle, "tuning.airRide", loopTable[hoveredCategory]["tuningData"], true)
										
										if hoveredCategory == 1 then
											removeAirRide(enteredVehicle)
										end
										
										equippedTuning = hoveredCategory
										moneyChange(loopTable[hoveredCategory]["tuningPrice"])
										promptDialog["state"] = false
									else
										giveNotification("error", getLocalizedText("notification.error.notEnoughMoney"))
										promptDialog["state"] = false
									end
								end
							elseif selectedSubCategory == 11 then -- Lamp color
								if hasPlayerMoney(loopTable[hoveredCategory]["tuningPrice"]) then
									savedVehicleColors["all"] = {getVehicleColor(enteredVehicle, true)}
									savedVehicleColors["headlight"] = {getVehicleHeadLightColor(enteredVehicle)}
									
									triggerServerEvent("tuning->Color", localPlayer, enteredVehicle, savedVehicleColors["all"], savedVehicleColors["headlight"])
									
									equippedTuning = -1
									moneyChange(loopTable[hoveredCategory]["tuningPrice"])
									promptDialog["state"] = false
								else
									giveNotification("error", getLocalizedText("notification.error.notEnoughMoney"))
									promptDialog["state"] = false
								end
							elseif selectedSubCategory == 12 then -- Neon
								if hasPlayerMoney(loopTable[hoveredCategory]["tuningPrice"]) then
									saveNeon(enteredVehicle, loopTable[hoveredCategory]["tuningData"], true)
									
									equippedTuning = hoveredCategory
									moneyChange(loopTable[hoveredCategory]["tuningPrice"])
									promptDialog["state"] = false
								else
									giveNotification("error", getLocalizedText("notification.error.notEnoughMoney"))
									promptDialog["state"] = false
								end
							end
						end

Cara, confesso estar um tanto perdido nesse código, aparentemente ele salva em elementData ? eu necessitava setar as handling no veiculo após spawnar ele pelo painel da concessionaria, a concessionaria salva através de SQLite os veiculos, quando eu destruo o veiculo comprado e spawno ele novamente não acompanha tunagem

Link to comment
  • 2 weeks later...

Ignora a resposta acima, falei besteira. A Parte que salva a tunagem está na concessionaria, porém ela salva somente os upgrades, e eles não envolvem algumas coisas como por exemplo a handling do veiculo. Os Upgrades ta sendo salvo por sqlite, através do getVehicleUpgrades (https://wiki.multitheftauto.com/wiki/GetVehicleUpgrades) ele está salvando os upgrades porem tentei seguir o mesmo padrão para o getVehicleHandling e não obtive resultado, provavelmente porque ele retorna um tipo de tabela diferente

 

		--Servidor
				for _, upgradee in ipairs (getVehicleUpgrades(theVehicle)) do
					if upgrade == "" then
						upgrade = upgradee
					else
						upgrade = upgrade..","..upgradee
					end
				end
				handling = "" -- Essa parte foi minha tentativa frustada de tentar obter as Hand do veiculo
				for _, hand in ipairs (getVehicleHandling(theVehicle)) do 
					if handling == "" then
						handling = hand
					else
						handling = handling..","..hand
					end
				end
				dbExec(db, "UPDATE VehicleList SET X = ?, Y = ?, Z = ?, RotZ = ?, Handling = ?, HP = ?, Colors = ?, Upgrades = ?, Paintjob = ?, new_hydr = ? WHERE Account = ? AND ID = ?", x, y, z, rz, handling, getElementHealth(theVehicle), color, upgrade, Paintjob, getElementData(theVehicle, "veh:fuel"), getAccountName(getPlayerAccount(Owner)), id)

Tentei utilizar o getVehicleUpgrades no lugar onde esta o getVehicleHandling e retornou corretamente os Upgrades

Link to comment
  • Other Languages Moderators

@Keven Campos, foi uma boa tentativa, mas a função getVehicleHandling retorna uma tabela com índice não-numérico. Por isso o ipairs não vai funcionar corretamente. O que você pode fazer, é transformar essa tabela em um JSON. Além disso, te aconselho a criar uma whitelist das propriedades que você deseja salvar, uma vez que existem muitas delas.

local handling = toJSON(getVehicleHandling(theVehicle))

Acredito que com o código acima, ele já salvaria corretamente no banco de dados, não consigo realizar testes agora. :D - bom, e claro, pra você carregar isso, seria usando a função fromJSON. Para transformar novamente em uma tabela que o MTA reconheça (em Lua).

  • Thanks 1
Link to comment
  • 1 year later...

Olá, eu estou com a mesma duvida no exato mesmo código, eu entendi a parte de salvar a handling. Só não estou conseguindo carregar ela de volta quando eu spawno o veiculo, com isso também talvez teria que mexer o banco de dados do mod? eu ainda sou iniciante, estou a dias testando possibilidades

Edited by Asuramaru
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...