Lua: So habe ich es in der db stehen
CREATE TABLE `vehicles` (
`id` int(11) NOT NULL,
`Kofferraum` varchar(50) NOT NULL DEFAULT '0|0|0|0|',
`Besitzer` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`Typ` int(11) NOT NULL,
`Tuning` varchar(255) NOT NULL,
`Spawnpos_X` varchar(50) NOT NULL,
`Spawnpos_Y` varchar(50) NOT NULL,
`Spawnpos_Z` varchar(50) NOT NULL,
`Spawnrot_X` varchar(50) NOT NULL,
`Spawnrot_Y` varchar(50) NOT NULL,
`Spawnrot_Z` varchar(50) NOT NULL,
`Farbe` varchar(50) NOT NULL,
`Paintjob` varchar(50) NOT NULL,
`Benzin` varchar(50) NOT NULL,
`Slot` float NOT NULL,
`Special` int(11) NOT NULL DEFAULT '0',
`neon` text NOT NULL,
`spezcolor` varchar(50) NOT NULL DEFAULT '|0|0|0|0|0|0|',
`Lights` varchar(50) NOT NULL DEFAULT '|255|255|255|',
`Distance` double NOT NULL DEFAULT '0',
`STuning` varchar(50) NOT NULL DEFAULT '0|0|0|0|0|0|',
`AuktionsID` int(10) NOT NULL DEFAULT '0',
`GangVehicle` tinyint(1) NOT NULL DEFAULT '0',
`rc` int(1) NOT NULL DEFAULT '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Alles anzeigen
Moin Leute,
Ich bin gerade dabei das Speziallackscript in Vio Extended einzubringen. Hier gibt es schon mehrere Themen dazu aber irgendwie wurde es noch nicht wirklich gelöst. Man kann sein Speziallack auswählen aber sobald man das Fahrzeug respawnt hat man wieder den Lack mit dem man vorher in den Marker gefahren ist. Anscheinend wird es ja nicht abgespeichert in der Db. Was genau muss ich in der Datenbank hinzufügen und wie genau frage ich das ganze in der park funktion oder respawn funktion ab ?
Lua: Park Funktion
function park_func ( player, command )
if getPedOccupiedVehicleSeat ( player ) == 0 then
local veh = getPedOccupiedVehicle ( player )
if vioGetElementData ( veh, "owner" ) == getPlayerName ( player ) then
if isTrailerInParkingZone ( veh ) then
local x, y, z = getElementPosition ( veh )
local rx, ry, rz = getVehicleRotation ( veh )
local c1, c2, c3, c4 = getVehicleColor ( veh )
vioSetElementData ( veh, "spawnposx", x )
vioSetElementData ( veh, "spawnposy", y )
vioSetElementData ( veh, "spawnposz", z )
vioSetElementData ( veh, "spawnrotx", rx )
vioSetElementData ( veh, "spawnroty", ry )
vioSetElementData ( veh, "spawnrotz", rz )
vioSetElementData ( veh, "color1", c1 )
vioSetElementData ( veh, "color2", c2 )
vioSetElementData ( veh, "color3", c3 )
vioSetElementData ( veh, "color4", c4 )
outputChatBox ( "Fahrzeug geparkt!", player, 0, 255, 0 )
local Spawnpos_X, Spawnpos_Y, Spawnpos_Z = getElementPosition ( veh )
local Spawnrot_X, Spawnrot_Y, Spawnrot_Z = getVehicleRotation ( veh )
local Farbe1, Farbe2, Farbe3, Farbe4 = getVehicleColor ( veh )
local color = "|"..Farbe1.."|"..Farbe2.."|"..Farbe3.."|"..Farbe4.."|"
local Paintjob = getVehiclePaintjob ( veh )
local Benzin = vioGetElementData ( veh, "fuelstate" )
local pname = vioGetElementData ( veh, "owner" )
local Distance = vioGetElementData ( veh, "distance" )
local slot = vioGetElementData ( veh, "carslotnr_owner" )
MySQL_SetString("vehicles", "Spawnpos_X", Spawnpos_X, "Besitzer LIKE '" ..pname.."' AND Slot LIKE '" ..slot.. "' ")
MySQL_SetString("vehicles", "Spawnpos_Y", Spawnpos_Y, "Besitzer LIKE '" ..pname.."' AND Slot LIKE '" ..slot.. "' ")
MySQL_SetString("vehicles", "Spawnpos_Z", Spawnpos_Z, "Besitzer LIKE '" ..pname.."' AND Slot LIKE '" ..slot.. "' ")
MySQL_SetString("vehicles", "Spawnrot_X", Spawnrot_X, "Besitzer LIKE '" ..pname.."' AND Slot LIKE '" ..slot.. "' ")
MySQL_SetString("vehicles", "Spawnrot_Y", Spawnrot_Y, "Besitzer LIKE '" ..pname.."' AND Slot LIKE '" ..slot.. "' ")
MySQL_SetString("vehicles", "Spawnrot_Z", Spawnrot_Z, "Besitzer LIKE '" ..pname.."' AND Slot LIKE '" ..slot.. "' ")
--MySQL_SetString("vehicles", "Farbe", color, "Besitzer LIKE '" ..pname.."' AND Slot LIKE '" ..slot.. "' ")
MySQL_SetString("vehicles", "Paintjob", Paintjob, "Besitzer LIKE '" ..pname.."' AND Slot LIKE '" ..slot.. "' ")
MySQL_SetString("vehicles", "Benzin", Benzin, "Besitzer LIKE '" ..pname.."' AND Slot LIKE '" ..slot.. "' ")
MySQL_SetString("vehicles", "Distance", Distance, "Besitzer LIKE '" ..pname.."' AND Slot LIKE '" ..slot.. "' ")
else
outputChatBox ( "Dieses Fahrzeug kannst du nicht in der Stadt parken!", player, 125, 0, 0 )
end
else
outputChatBox ( "Dieses Fahrzeug gehoert dir nicht!", player, 255, 0, 0 )
end
else
outputChatBox ( "Du musst in einem Fahrzeug sitzen!", player, 255, 0, 0 )
end
end
addCommandHandler ( "park", park_func )
Alles anzeigen
Lua: Die normale Funktion an sich
----------------------------------------------------
----------------------------------------------------
------ Copyright (c) 2013 by [vio]Lars-Marcel ------
----------------------------------------------------
----------------------------------------------------
createBlip ( -1786.779, 1215.474, 24.5, 27, 2, 255, 0, 0, 255, 0, 200)
setGarageOpen(24, true)
local marker = createMarker( -1786.779, 1215.474, 24.5, "cylinder", 2, 255, 0, 0, 255 )
local pickup = createPickup( -1782.215, 1205.233, 25, 3, 1239, 1, 99 )
function showSpezialLack_func(player)
if isAdminLevel ( player, 1 ) then
local veh = getPedOccupiedVehicle(player)
if veh then
if vioGetElementData ( veh, "owner" ) == getPlayerName ( player ) then
setElementData ( player, "ElementClicked", true )
setElementFrozen(veh, true)
toggleControl ( player, "enter_exit", false )
triggerClientEvent (player, "showMichelles", player)
local dim = math.random(5000,9000)
setElementDimension(veh, dim)
setElementDimension(player, dim)
else
outputChatBox ( "Du kannst nur deine Privatfahrzeuge tunen!", player, 125, 0, 0 )
end
end
else
outputChatBox("Nur für Premium-User!", player, 255, 155, 0)
end
end
addEventHandler("onMarkerHit", marker, showSpezialLack_func)
function seeSpezialLack_func(red1, green1, blue1, red2, green2, blue2)
local player = source
local red1 = red1 * 2.55
local green1 = green1 * 2.55
local blue1 = blue1 * 2.55
local red2 = red2 * 2.55
local green2 = green2 * 2.55
local blue2 = blue2 * 2.55
local veh = getPedOccupiedVehicle(player)
if veh then
setVehicleColor(veh, red1, green1, blue1, red2, green2, blue2)
else
return false
end
end
addEvent( "seeSpezialLack", true )
addEventHandler( "seeSpezialLack", getRootElement(), seeSpezialLack_func )
function buySpezialLack_func(red1, green1, blue1, red2, green2, blue2)
local player = source
local red1 = red1 * 2.55
local green1 = green1 * 2.55
local blue1 = blue1 * 2.55
local red2 = red2 * 2.55
local green2 = green2 * 2.55
local blue2 = blue2 * 2.55
local veh = getPedOccupiedVehicle(player)
toggleControl ( player, "enter_exit", true )
setElementClicked ( player, true )
setElementDimension(veh, 0)
setElementDimension(player, 0)
activeCarGhostMode ( player, 10000 )
if veh then
setElementFrozen(veh, false)
if vioGetElementData(veh, "spezcolor") == "" then
if vioGetElementData(player, "money") >= 2500 then
vioSetElementData(player, "money", vioGetElementData(player, "money") - 2500)
else
triggerClientEvent ( player, "infobox_start", getRootElement(), "\nDu hast nicht\ngenug Geld!", 5000, 255, 0, 0 )
return false
end
--MichellesKasse = MichellesKasse + 2500
else
if vioGetElementData(player, "money") >= 1250 then
vioSetElementData(player, "money", vioGetElementData(player, "money") - 1250)
else
triggerClientEvent ( player, "infobox_start", getRootElement(), "\nDu hast nicht\ngenug Geld!", 5000, 255, 0, 0 )
return false
end
--MichellesKasse = MichellesKasse + 1250
end
setVehicleColor(veh, red1, green1, blue1, red2, green2, blue2)
local spezcolor = "|"..red1.."|"..green1.."|"..blue1.."|"..red2.."|"..green2.."|"..blue2.."|"
vioSetElementData(veh, "spezcolor", spezcolor)
dbExec ( handler, "UPDATE ?? SET ??=? WHERE ??=? AND ??=?", "vehicles", "spezcolor", spezcolor, "UID", playerUID[getPlayerName(player)], "Slot", vioGetElementData(veh, "carslotnr_owner") )
else
return false
end
end
addEvent( "buySpezialLack", true )
addEventHandler( "buySpezialLack", getRootElement(), buySpezialLack_func )
function closeSpezialLack_func(red1, green1, blue1, red2, green2, blue2)
local player = source
local veh = getPedOccupiedVehicle(player)
toggleControl ( player, "enter_exit", true )
setElementData ( player, "ElementClicked", false )
setElementDimension(veh, 0)
setElementDimension(player, 0)
activeCarGhostMode ( player, 10000 )
if veh then
setElementFrozen(veh, false)
setPrivVehCorrectColor(veh)
else
return false
end
end
addEvent( "closeSpezialLack", true )
addEventHandler( "closeSpezialLack", getRootElement(), closeSpezialLack_func )
function deleteSpezialLack_func(player)
local veh = getPedOccupiedVehicle(player)
if veh then
local x, y, z = getElementPosition ( player )
if getDistanceBetweenPoints3D ( -1782.215, 1205.233, 25, x, y, z ) <= 5 then
if vioGetElementData ( veh, "owner" ) == getPlayerName ( player ) then
local colors = vioGetElementData ( veh, "color" )
local c1 = tonumber ( gettok ( colors, 1, string.byte( '|' ) ))
local c2 = tonumber ( gettok ( colors, 2, string.byte( '|' ) ))
local c3 = tonumber ( gettok ( colors, 3, string.byte( '|' ) ))
local c4 = tonumber ( gettok ( colors, 4, string.byte( '|' ) ))
setVehicleColor ( veh, c1, c2, c3, c4 )
setTimer ( setVehicleColor, 100, 1, veh, c1, c2, c3, c4 )
vioSetElementData(veh, "spezcolor", "")
removeElementData(veh, "spezcolor")
MySQL_SetString ( "vehicles", "spezcolor", "", "Besitzer LIKE '"..getPlayerName(player).."' AND Slot LIKE '"..vioGetElementData(veh, "carslotnr_owner").."'" )
outputChatBox("Speziallack erfolgreich entfernt!", player, 0, 255, 0)
else
outputChatBox ( "Du kannst nur deine Privatfahrzeuge tunen!", player, 125, 0, 0 )
end
else
outputChatBox("Du bist nicht im Icon.", player, 255, 0, 0)
end
end
end
addCommandHandler("dellack", deleteSpezialLack_func)
function deleteSpezialLack_info(player)
outputChatBox("Um den Speziallack zu entfernen Tippe /dellack", player, 255, 155, 0)
outputChatBox("Um die Neonroehren zu entfernen Tippe /delneon", player, 255, 155, 0)
end
addEventHandler("onPickupHit", pickup, deleteSpezialLack_info)
function seeNeon_func(color)
local player = source
if color then
veh = getPedOccupiedVehicle(player)
--triggerEvent ( "removeNeon", root, veh )
removeNeon(veh)
removeElementData(player, "neoncolor")
setTimer ( function()
triggerClientEvent("createNeonS", getRootElement(), color, veh)
setElementData(player, "neoncolor", color)
showCursor(player, true)
end, 750, 1 )
else
return false
end
end
addEvent( "seeNeon", true )
addEventHandler( "seeNeon", getRootElement(), seeNeon_func )
function closeNeon_func()
local player = source
local veh = getPedOccupiedVehicle(player)
toggleControl ( player, "enter_exit", true )
setElementData ( player, "ElementClicked", false )
setElementDimension(veh, 0)
setElementDimension(player, 0)
activeCarGhostMode ( player, 10000 )
if veh then
setElementFrozen(veh, false)
else
return false
end
end
addEvent( "closeNeon", true )
addEventHandler( "closeNeon", getRootElement(), closeNeon_func )
function buyNeon_func(color)
local player = source
local veh = getPedOccupiedVehicle(player)
--local color = getElementData(player, "neoncolor")
if veh and color then
toggleControl ( player, "enter_exit", true )
setElementData ( player, "ElementClicked", false )
setElementDimension(veh, 0)
setElementDimension(player, 0)
activeCarGhostMode ( player, 10000 )
setElementFrozen(veh, false)
if vioGetElementData(veh, "neon") == "" then
vioSetElementData(player, "money", vioGetElementData(player, "money") - 2500)
MichellesKasse = MichellesKasse + 2500
vioSetElementData(veh, "neonc", color)
--triggerClientEvent("createNeonS", getRootElement(), color, veh)
addNeon(veh, color)
else
vioSetElementData(player, "money", vioGetElementData(player, "money") - 1250)
MichellesKasse = MichellesKasse + 1250
vioSetElementData(veh, "neonc", color)
removeNeon(veh)
setTimer ( function()
--triggerClientEvent("createNeonS", getRootElement(), color, veh)
addNeon(veh, color)
end, 500, 1 )
end
MySQL_SetString ( "vehicles", "neon", color, "Besitzer LIKE '"..getPlayerName(player).."' AND Slot LIKE '"..vioGetElementData(veh, "carslotnr_owner").."'" )
else
return false
end
end
addEvent( "buyNeon", true )
addEventHandler( "buyNeon", getRootElement(), buyNeon_func )
function deleteNeon_func(player)
local veh = getPedOccupiedVehicle(player)
if veh then
local x, y, z = getElementPosition ( player )
if getDistanceBetweenPoints3D ( -1782.215, 1205.233, 25, x, y, z ) <= 5 then
if vioGetElementData ( veh, "owner" ) == getPlayerName ( player ) then
if vioGetElementData(veh, "neonc") then
removeNeon(veh)
vioSetElementData(veh, "neonc", "")
removeElementData(veh, "neonc")
removeElementData(veh, "neon")
MySQL_SetString ( "vehicles", "neon", "", "Besitzer LIKE '"..getPlayerName(player).."' AND Slot LIKE '"..vioGetElementData(veh, "carslotnr_owner").."'" )
outputChatBox("Neonroehren erfolgreich entfernt!", player, 0, 255, 0)
else
outputChatBox("Dein Fahrzeug hat keine Neonroehren.", player, 255, 155, 0)
end
else
outputChatBox ( "Du kannst nur deine Privatfahrzeuge tunen!", player, 125, 0, 0 )
end
else
outputChatBox("Du bist nicht im Icon.", player, 255, 0, 0)
end
end
end
addCommandHandler("delneon", deleteNeon_func)
function closeMichelles_func()
local player = source
setElementData ( player, "ElementClicked", false )
toggleControl ( player, "enter_exit", true )
local veh = getPedOccupiedVehicle(player)
setElementFrozen(veh, false)
setElementDimension(veh, 0)
setElementDimension(player, 0)
activeCarGhostMode ( player, 10000 )
end
addEvent( "closeMichelles", true )
addEventHandler( "closeMichelles", getRootElement(), closeMichelles_func )
Alles anzeigen
Lua: Respawn Funktion
function respawnPrivVeh ( carslot, pname )
if not isElement ( _G[getPrivVehString ( pname, carslot )] ) or ( not getVehicleOccupant ( _G[getPrivVehString ( pname, carslot )] ) and not getVehicleOccupant ( _G[getPrivVehString ( pname, carslot )], 1 ) and not getVehicleOccupant ( _G[getPrivVehString ( pname, carslot )], 2 ) and not getVehicleOccupant ( _G[getPrivVehString ( pname, carslot )], 3 ) ) then
if tonumber ( MySQL_GetString("vehicles", "AuktionsID", "Besitzer LIKE '"..pname.."' AND Slot LIKE '"..carslot.."'") ) == 0 then
local dsatz
local result = mysql_query ( handler, "SELECT * from vehicles WHERE Besitzer LIKE '"..pname.."' AND Slot LIKE '"..carslot.."'" )
if result then
if ( mysql_num_rows ( result ) > 0 ) then
dsatz = mysql_fetch_assoc ( result )
end
mysql_free_result ( result )
end
destroyMagnet ( _G[getPrivVehString ( pname, carslot )] )
local Besitzer = pname
local Slot = carslot
MySQL_SetString("vehicles", "Benzin", vioGetElementData(_G[getPrivVehString ( pname, carslot )],"fuelstate"), "Besitzer LIKE '"..pname.."' AND Slot LIKE '"..carslot.."'")
if vioGetElementData ( _G[getPrivVehString ( pname, carslot )], "special" ) == 2 then
detachElements ( _G["ObjYacht"..Besitzer..Slot], _G[getPrivVehString ( pname, carslot )] )
destroyElement ( _G["ObjYacht"..Besitzer..Slot] )
special = 2
end
destroyElement ( _G[getPrivVehString ( pname, carslot )] )
local Typ = dsatz["Typ"]
local Last_Login_Besitzer_Tag = MySQL_GetString("players", "Last_login", "Name LIKE '" ..pname.."'")
local Tuning = dsatz["Tuning"]
local Spawnpos_X = dsatz["Spawnpos_X"]
local Spawnpos_Y = dsatz["Spawnpos_Y"]
local Spawnpos_Z = dsatz["Spawnpos_Z"]
local Spawnrot_X = dsatz["Spawnrot_X"]
local Spawnrot_Y = dsatz["Spawnrot_Y"]
local Spawnrot_Z = dsatz["Spawnrot_Z"]
local spezcolor = dsatz["spezcolor"]
local Farbe = dsatz["Farbe"]
local LFarbe = dsatz["Lights"]
local Paintjob = dsatz["Paintjob"]
local Benzin = dsatz["Benzin"]
local Distanz = dsatz["Distance"]
local STuning = dsatz["STuning"]
_G[getPrivVehString ( pname, carslot )] = createVehicle ( Typ, Spawnpos_X, Spawnpos_Y, Spawnpos_Z, 0, 0, 0, Besitzer )
vioSetElementData ( _G[getPrivVehString ( pname, carslot )], "owner", Besitzer )
vioSetElementData ( _G[getPrivVehString ( pname, carslot )], "name", _G[getPrivVehString ( pname, carslot )] )
vioSetElementData ( _G[getPrivVehString ( pname, carslot )], "carslotnr_owner", Slot )
vioSetElementData ( _G[getPrivVehString ( pname, carslot )], "locked", true )
vioSetElementData ( _G[getPrivVehString ( pname, carslot )], "color", Farbe )
vioSetElementData ( _G[getPrivVehString ( pname, carslot )], "spezcolor", spezcolor )
vioSetElementData ( _G[getPrivVehString ( pname, carslot )], "lcolor", LFarbe )
vioSetElementData ( _G[getPrivVehString ( pname, carslot )], "spawnpos_x", Spawnpos_X )
vioSetElementData ( _G[getPrivVehString ( pname, carslot )], "spawnpos_y", Spawnpos_Y )
vioSetElementData ( _G[getPrivVehString ( pname, carslot )], "spawnpos_z", Spawnpos_Z )
vioSetElementData ( _G[getPrivVehString ( pname, carslot )], "spawnrot_x", Spawnrot_X )
vioSetElementData ( _G[getPrivVehString ( pname, carslot )], "spawnrot_y", Spawnrot_Y )
vioSetElementData ( _G[getPrivVehString ( pname, carslot )], "spawnrot_z", Spawnrot_Z )
vioSetElementData ( _G[getPrivVehString ( pname, carslot )], "distance", Distanz )
vioSetElementData ( _G[getPrivVehString ( pname, carslot )], "stuning", STuning )
vioSetElementData ( _G[getPrivVehString ( pname, carslot )], "rcVehicle", tonumber ( dsatz["rc"] ) )
setVehicleLocked ( _G[getPrivVehString ( pname, carslot )], true )
vioSetElementData ( _G[getPrivVehString ( pname, carslot )], "fuelstate", Benzin )
setPrivVehCorrectColor ( _G[getPrivVehString ( pname, carslot )] )
setPrivVehCorrectLightColor ( _G[getPrivVehString ( pname, carslot )] )
setVehiclePaintjob ( _G[getPrivVehString ( pname, carslot )], Paintjob )
if special == 2 then
local both = Besitzer..Slot
_G["ObjYacht"..both] = createObject ( 1337, 0, 0, 0 )
attachElements ( _G["ObjYacht"..Besitzer..Slot], _G[getPrivVehString ( pname, carslot )], 0, 2, 1.55 )
setElementDimension ( _G["ObjYacht"..both], 1 )
end
setVehicleRotation ( _G[getPrivVehString ( pname, carslot )], Spawnrot_X, Spawnrot_Y, Spawnrot_Z )
pimpVeh ( _G[getPrivVehString ( pname, carslot )], Tuning )
setVehicleAsMagnetHelicopter ( _G[getPrivVehString ( pname, carslot )] )
return true
end
end
return false
end
Alles anzeigen