Krzemo1234
Wiek: 26 Na forum: 3751 dni Posty: 387
Nick w MP: Krzemo
Piwa : 16
Client
local marker = createMarker (- 2358.20 , - 50.63 , 35.31 - 1 , "cylinder" , 5 , 0 , 0 , 0 , 155 )
local cuboid = createColCuboid (- 2361.4538574219 , - 60.199493408203 , 33.187068939209 , 56.6 , 32.5 , 11 )
createBlip (- 2319.64 , - 36.99 , 35.32 , 55 , 2 , 0 , 0 , 0 , 0 , 0 , 275 )
local wstep = false
local podatek = 0
local text = createElement ( "text" )
setElementPosition ( text ,- 2358.20 , - 50.63 , 35.31 )
setElementData ( text , "name" , "Gie?da\nUstawianie ceny." )
function getPlayerName2 ( plr )
if not plr then return end
return getPlayerName ( plr ): gsub ( "#%x%x%x%x%x%x" , "" )
end
local wm ={}
wm . window = guiCreateWindow ( 0.74 , 0.33 , 0.25 , 0.50 , "Gielda" , true )
guiWindowSetSizable ( wm . window , false )
guiWindowSetMovable ( wm . window , false )
guiSetVisible ( wm . window , false )
wm . label = guiCreateLabel ( 0.06 , 0.07 , 0.89 , 0.07 , "Wpisz cen? kt?ra ma widnie? na poje?dzie." , true , wm . window )
guiLabelSetHorizontalAlign ( wm . label , "center" , false )
guiLabelSetVerticalAlign ( wm . label , "center" )
wm . label2 = guiCreateLabel ( 0.06 , 0.21 , 0.89 , 0.07 , "Po odj?ciu podatku cena wyniesie: 0 PLN" , true , wm . window )
guiLabelSetHorizontalAlign ( wm . label2 , "center" , false )
guiLabelSetVerticalAlign ( wm . label2 , "center" )
wm . edit = guiCreateEdit ( 0.06 , 0.40 , 0.91 , 0.10 , "" , true , wm . window )
wm . submit2 = guiCreateButton ( 0.06 , 0.55 , 0.90 , 0.16 , "Zgadzam si?" , true , wm . window )
wm . submit = guiCreateButton ( 0.06 , 0.75 , 0.90 , 0.20 , "Akceptuj" , true , wm . window )
addEventHandler ( "onClientMarkerHit" , resourceRoot , function( el , md )
if not md or el ~= localPlayer then return end
if not wstep then return end
local veh = getPedOccupiedVehicle ( localPlayer )
if not veh then return end
if getVehicleController ( veh ) ~= localPlayer then return end
local spawn = getElementData ( veh , "vehicle:id" )
if not spawn then return end
if getElementHealth ( veh ) < 900 then
exports [ "1" ]: outputNotificationBox ( "#cc0000Jed? go napraw!" )
exports [ "1" ]: outputNotificationBox ( "#cc0000Pojazd zbyt mocno uszkodzony!" )
return
end
if getElementData ( veh , "vehicle:ownedPlayer" ) ~= getElementData ( localPlayer , "player:uid" ) then return end
showCursor ( true , false )
guiSetVisible ( wm . window , true )
guiSetVisible ( wm . label2 , false )
guiSetVisible ( wm . submit2 , false )
guiSetInputMode ( "no_binds_when_editing" )
end )
addEventHandler ( "onClientMarkerLeave" , resourceRoot , function( el , md )
if el ~= localPlayer then return end
if not wstep then return end
showCursor ( false )
guiSetVisible ( wm . window , false )
end )
addEventHandler ( "onClientGUIClick" , resourceRoot , function()
if not wstep then return end
local cena = tonumber ( guiGetText ( wm . edit ))
if not cena or cena < 1 or cena ~= math . floor ( cena ) or cena > 5000000 then
exports [ "1" ]: outputNotificationBox ( "#cc0000Podano nieprawid?ow? cen?!" )
return
end
local veh = getPedOccupiedVehicle ( localPlayer )
if not veh then return end
if getVehicleController ( veh ) ~= localPlayer then return end
if not getElementData ( veh , "vehicle:id" ) then return end
if source == wm . submit then
guiSetVisible ( wm . submit2 , true )
guiSetVisible ( wm . label2 , true )
guiSetText ( wm . label2 , "Akceptujesz podan? cen?? " .. cena .. " PLN" )
end
if source == wm . submit2 then
setElementData ( veh , "vehicle:desc" , false )
setElementData ( veh , "vehicle:gielda" , true )
setElementData ( veh , "vehicle:nazwa:G" , getVehicleName ( veh ))
setElementData ( veh , "vehicle:owner:G" , getPlayerName ( localPlayer ): gsub ( "#%x%x%x%x%x%x" , "" ), true )
setElementData ( veh , "vehicle:owner:UID" , getElementData ( localPlayer , "player:uid" ))
setElementData ( veh , "vehicle:cena:G" , tonumber ( cena ))
setElementData ( veh , "vehicle:id:G" , getElementData ( veh , "vehicle:id" ))
guiSetVisible ( wm . window , false )
showCursor ( false )
end
end )
function znajdzprzezuid ( uid )
if not uid then return end
for _ , p in pairs ( getElementsByType ( 'player' ), root , false ) do
if getElementData ( p , "player:uid" ) and getElementData ( p , "player:uid" ) == uid then return p end
end
return false
end
gielda = {}
function RGBToHex ( red , green , blue , alpha )
if ( ( red < 0 or red > 255 or green < 0 or green > 255 or blue < 0 or blue > 255 ) or ( alpha and ( alpha < 0 or alpha > 255 ) ) ) then
return nil
end
if ( alpha ) then
return string . format ( "#%.2X%.2X%.2X%.2X" , red , green , blue , alpha )
else
return string . format ( "#%.2X%.2X%.2X" , red , green , blue )
end
end
local function aktualizujdane ()
if not isElementWithinColShape ( localPlayer , cuboid ) then return end
for i , v in ipairs ( getElementsByType ( "vehicle" , root , true )) do
if getElementData ( v , "vehicle:gielda" , true ) then
if getElementData ( v , "vehicle:id" ) == getElementData ( v , "vehicle:id:G" ) then
local online = znajdzprzezuid ( getElementData ( v , "vehicle:owner:UID" ))
if online then jest = "#00FF00Dost?pny (ID: " .. getElementData ( online , "id" ).. ")" else jest = "#FF0000Niedost?pny" end
local desc = string . format ( "ID Auta: %d\nPojazd: " .. RGBToHex ( 0 , 255 , 100 , false ).. "%s" .. RGBToHex ( 255 , 255 , 255 ).. "\nCena: %d PLN\nPrzebieg: %dkm\nSprzedaj?cy: %s\nStatus sprzedaj?cego: %s\n#FFFFFFAby sprawdzi? informacje o tym poje?dzie wpisz /v.info" , tonumber ( getElementData ( v , "vehicle:id" )), getElementData ( v , "vehicle:nazwa:G" ), tonumber ( getElementData ( v , "vehicle:cena:G" )), getElementData ( v , "vehicle:mileage" ), getElementData ( v , "vehicle:owner:G" ), jest )
gielda [ v ] = desc
end
end
end
end
if not vopisFont then vopisFont = "default-bold" ; vopisrozmiar = 1.0 end
function isEventHandlerAdded ( sEventName , pElementAttachedTo , func )
if
type ( sEventName ) == 'string' and
isElement ( pElementAttachedTo ) and
type ( func ) == 'function'
then
local aAttachedFunctions = getEventHandlers ( sEventName , pElementAttachedTo )
if type ( aAttachedFunctions ) == 'table' and #aAttachedFunctions > 0 then
for i , v in ipairs ( aAttachedFunctions ) do
if v == func then
return true
end
end
end
end
return false
end
timerke = nil
aktualizujdane ()
function renderinge ()
if not isElementWithinColShape ( localPlayer , cuboid ) then return end
local rootx , rooty , rootz = getCameraMatrix ()
for i , vehicle in ipairs ( getElementsByType ( "vehicle" , root , true )) do
local x , y , z = getElementPosition ( vehicle )
local sx , sy = getScreenFromWorldPosition ( x , y , z )
if sx and sy then
local desc = gielda [ vehicle ]
if desc then
local distance = getDistanceBetweenPoints3D ( rootx , rooty , rootz , x , y , z )
if distance <= 14 then
if isLineOfSightClear ( rootx , rooty , rootz , x , y , z , true , true , false , true , false , true , true , vehicle ) then
dxDrawText ( desc : gsub ( "#%x%x%x%x%x%x" , "" ), sx , sy , sx , sy , tocolor ( 0 , 0 , 0 , 255 ), vopisrozmiar - 0.01 , vopisFont , "center" , "center" )
dxDrawText ( desc , sx , sy , sx , sy , tocolor ( 255 , 255 , 255 , 255 ), vopisrozmiar , vopisFont , "center" , "center" , false , false , false , true )
end
end
end
end
end
end
addEventHandler ( "onClientColShapeHit" , cuboid ,function( el , md )
if not md then return end
if el ~= localPlayer then return end
if isEventHandlerAdded ( "onClientRender" , root , renderinge ) then
removeEventHandler ( "onClientRender" , root , renderinge )
end
addEventHandler ( "onClientRender" , root , renderinge )
timerke = setTimer ( aktualizujdane , 3000 , 0 )
end )
addEventHandler ( "onClientColShapeLeave" , cuboid ,function( el , md )
if not md then return end
if el ~= localPlayer then return end
if isEventHandlerAdded ( "onClientRender" , root , renderinge ) then
removeEventHandler ( "onClientRender" , root , renderinge )
end
--if isTimer ( timerke ) then killTimer ( timerke ) end
end )
addEventHandler ( "onClientColShapeHit" , cuboid , function( el , md )
if not md or el ~= localPlayer then return end
if wstep then return end
wstep = true
end )
addEventHandler ( "onClientColShapeLeave" , cuboid , function( el , md )
if getElementData ( el , "vehicle:gielda" ) then gielda [ el ] = false end
if not md or el ~= localPlayer then return end
if not wstep then return end
local veh = getPedOccupiedVehicle ( el )
if veh then
-- setElementData ( veh , "vehicle:desc" , false )
setElementData ( veh , "vehicle:gielda" , false )
end
end )
Server
local LIMIT = 3 -- tylko gracz mo ? e kupi ? trzy pojazdy
local cmd = "sprzedajpojazd"
local cmd2 = "akceptuj"
local sprzedazPojazdu ={}
local marker = nil
local timer = nil
local pozycjeMarkerow ={
-- Opis nad markerem , x , y , z , int , dim
{ "Gie?da Las Venturas\nSprzeda? pojazd?w" , 2527.78 ,- 1290.79 , 1048.29 , 2 , 1 }, -- gielda san fierro I
}
for i , v in pairs ( pozycjeMarkerow ) do
local mkr = createMarker ( v [ 2 ], v [ 3 ], v [ 4 ]- 0.90 , "cylinder" , 2.0 , 255 , 0 , 0 , 35 )
setElementDimension ( mkr , v [ 6 ] or 0 )
setElementInterior ( mkr , v [ 5 ] or 0 )
setElementData ( mkr , "sprzedaz:pojazd?w" , true )
marker = mkr
local t = createElement ( "text" )
setElementData ( t , "name" , v [ 1 ])
setElementPosition ( t , v [ 2 ], v [ 3 ], v [ 4 ])
setElementDimension ( t , v [ 6 ] or 0 )
setElementInterior ( t , v [ 5 ] or 0 )
addEventHandler ( "onMarkerHit" , mkr , function( el , md )
exports [ "1" ]: outputNotificationBox ( el , "#00cccc/sprzedajpojazd <NICK/ID> <ID POJAZDU> <CENA>" )
exports [ "1" ]: outputNotificationBox ( el , "#00cc00Aby sprzeda? pojazd wpisz:" )
setElementData ( el , "sprzedaz:pojazdow" , true )
end )
addEventHandler ( "onMarkerLeave" , mkr , function( el , md )
exports [ "1" ]: outputNotificationBox ( el , "#cc0000Wyszed?e? z markera!" )
setElementData ( el , "sprzedaz:pojazdow" , false )
end )
end
function checkVehiclePlayer ( plr )
-- Pobieramy tabel ? i nast ? pnie zwracamy j ?
local result = exports [ "pystories-db" ]: dbGet ( "SELECT * FROM pystories_vehicles" )
local number = 0
-- Uruchamiamy p ? tl ? spradzaj ? c ? pojazdy z bazy danych i
-- por ? wnujemy w ? a ? ciciela z UID osoby kt ? ra chce zakupi ?
for i , v in ipairs ( result ) do
if result [ 1 ]. ownedPlayer == getElementData ( plr , "player:sid" ) then
number = number + 1
end
end
-- Zwracamy ilo ?? pojazd ? w gracza je ? eli nie ma zwr ? ci
-- mu false .
return number
end
local function pokazOperacje ( plr )
if not sprzedazPojazdu [ plr ] then return end
local veh = sprzedazPojazdu [ plr ][ 3 ] -- sprawdzanie tablicy
outputChatBox ( "* Otrzyma?e?/a? ofert? sprzeda?y pojazdu " .. getVehicleNameFromModel ( getVehicleModel ( veh )).. " za cen? " .. sprzedazPojazdu [ plr ][ 4 ], plr , 255 , 255 , 0 )
outputChatBox ( "* ID: " .. getElementData ( veh , "vehicle:id" ).. " | Przebieg: " .. getElementData ( veh , "vehicle:mileage" ).. "" , plr , 255 , 255 , 0 )
outputChatBox ( "* Aby potwierdzi? zakup prosz? wpisz /akceptuj, masz 20 sekund" , plr , 255 , 255 , 0 )
timer = setTimer (function()
sprzedazPojazdu [ plr ]= nil
exports [ "1" ]: outputNotificationBox ( plr , "#cc0000Transakcja zosta?a anulowana!" )
removeCommandHandler ( "akceptuj" , akceptujTransakcje ) -- usuwanie komendy
end , 20000 , 1 )
addCommandHandler ( "akceptuj" , akceptujTransakcje ) -- tworzenie komendy
end
function akceptujTransakcje ( plr , cmd )
if not sprzedazPojazdu [ plr ] then return end
local veh = sprzedazPojazdu [ plr ][ 3 ]
local cost = sprzedazPojazdu [ plr ][ 4 ]
local target = sprzedazPojazdu [ plr ][ 1 ]
if cost < 0 then
exports [ "1" ]: outputNotificationBox ( plr , "#cc0000Cena jest nieprawid?owa!" )
return
end
if tonumber ( cost ) > getPlayerMoney ( plr ) then
exports [ "1" ]: outputNotificationBox ( plr , "#cc0000Nie posiadasz tyle got?wki!" )
return
end
givePlayerMoney ( target , cost )
takePlayerMoney ( plr , cost )
killTimer ( timer )
exports [ "1" ]: outputNotificationBox ( plr , "#00cc00Sprzeda? przeprowadzona pomy?lnie!" )
exports [ "1" ]: outputNotificationBox ( target , "#00cc00Sprzeda? przeprowadzona pomy?lnie!" )
removeCommandHandler ( "akceptuj" , akceptujTransakcje ) -- usuwanie komendy
wykonajZapytanie ( veh , plr ) -- do bazy danych ustawiamy od razu
end
function wykonajZapytanie ( veh , plr )
setElementData ( veh , "vehicle:ownedGroup" , 0 )
setElementData ( veh , "vehicle:rent" , 0 )
setElementData ( veh , "vehicle:ownedPlayer" , getElementData ( plr , "player:sid" ))
exports [ "pystories-db" ]: dbSet ( "UPDATE pystories_vehicles SET ownedPlayer=? AND ownedGroup=0 AND rent=0 WHERE id=?" , getElementData ( plr , "player:sid" ), getElementData ( veh , "vehicle:id" ))
local text = string . format ( "[SELL-CAR] Gracz " .. getPlayerName ( localPlayer ).. "(" .. getElementData ( localPlayer , "player:sid" ).. ") sprzeda? pojazd " .. getElementData ( veh , "vehicle:id" ).. " dla " .. getPlayerName ( plr ).. "(" .. getElementData ( plr , "player:sid" ).. ")" )
triggerEvent ( "admin:logs" , root , text )
-- triggerClientEvent ( root , "admin:addText" , root , pm_text )
triggerClientEvent ( "onDebugMessage" , resourceRoot , text , 5 , "Sprzeda? auta" )
-- triggerClientEvent ( root , "admin:addText" , root , )
end
addCommandHandler ( cmd , function( plr , _ , cel , id , cost )
if getElementData ( plr , "sprzedaz:pojazdow" )== false then
exports [ "1" ]: outputNotificationBox ( plr , "#cc0000Nie jeste? w odpowiednim miejscu!" )
return
end
costt = tonumber ( cost )
if not cel or not costt then
exports [ "1" ]: outputNotificationBox ( plr , "#cc0000U?ycie: #00cccc/sprzedajpojazd <NICK/ID> <ID POJAZDU> <CENA>" )
return
end
local target = exports [ "pystories-core" ]: findPlayer ( plr , cel )
if not target then
exports [ "1" ]: outputNotificationBox ( plr , "#cc0000Nie znaleziono podanego gracza!" )
return
end
if getElementData ( target , "sprzedaz:pojazdow" )== false then
exports [ "1" ]: outputNotificationBox ( plr , "#cc0000Nie jeste? w miejscu przeznaczonym do tego!" )
return
end
if tonumber ( costt ) < 0 then
exports [ "1" ]: outputNotificationBox ( plr , "#cc0000Podano nieprawid?ow? warto??!" )
return
end
local result = exports [ "pystories-db" ]: dbGet ( "SELECT * FROM pystories_vehicles WHERE id=? AND parking=1 LIMIT 1;" , id )
if result and #result > 0 then
exports [ "1" ]: outputNotificationBox ( plr , "#cc0000Pojazd znajduje si? na parkingu. Nie mo?esz go sprzeda?!" )
return
end
for _ , vehicle in ipairs ( getElementsByType ( "vehicle" )) do
if tonumber ( getElementData ( vehicle , "vehicle:id" )) == tonumber ( id ) then
if tonumber ( getElementData ( vehicle , "vehicle:ownedPlayer" )) ~= tonumber ( getElementData ( plr , "player:sid" )) then
exports [ "1" ]: outputNotificationBox ( plr , "#cc0000Nie jeste? w?a?cicielem tego pojazdu!" )
return
end
sprzedazPojazdu [ target ]={ plr , target , vehicle , costt }
end
end
if checkVehiclePlayer ( target ) and checkVehiclePlayer ( target ) >= LIMIT then
exports [ "1" ]: outputNotificationBox ( plr , "#cc0000Maksymalnie ten gracz mo?e mie?: #00cccc" .. LIMIT .. " #cc0000pojazd?w!" )
return
end
pokazOperacje ( target )
exports [ "1" ]: outputNotificationBox ( plr , "#00cc00Pomy?lnie wys?ano ofert? sprzeda?y pojazdu!" )
end )
function vehinfo ( plr )
local car = getPedOccupiedVehicle ( plr )
if not car then outputChatBox ( "Nie jeste? w poje?dzie!" , plr , 255 , 0 , 0 ) return end
outputChatBox ( " " , plr , 0 , 255 , 255 )
outputChatBox ( " " , plr , 0 , 255 , 255 )
outputChatBox ( "Ulepszenia mechaniczne tego pojazdu:" , plr , 0 , 255 , 255 )
local baza = exports [ "pystories-db" ]: dbGet ( "SELECT * FROM pystories_vehicles WHERE id=?" , getElementData ( car , "vehicle:id" ))
for i , vehicle in pairs ( baza ) do
mk1 = vehicle [ 'mk1' ]
mk2 = vehicle [ 'mk2' ]
rh = vehicle [ 'rh' ]
naped = vehicle [ 'naped' ]
end
if tonumber ( mk1 ) == 1 then us1 = "TAK" else us1 = "NIE" end
if tonumber ( mk2 ) == 1 then us2 = "TAK" else us2 = "NIE" end
if tonumber ( rh ) == 1 then rh1 = "TAK" else rh1 = "NIE" end
outputChatBox ( "Przyspieszenie 1: " .. us1 .. "" , plr , 0 , 255 , 0 )
outputChatBox ( "Przyspieszenie 2: " .. us2 .. "" , plr , 0 , 255 , 0 )
outputChatBox ( "Gwintwane Zawieszenie: " .. rh1 .. "" , plr , 0 , 255 , 0 )
end
addCommandHandler ( "v.info" , vehinfo )
Za pomoc zimne dlaczego to nie dzia?a ?
[ Dodano : 2017-03-12, 02:23 ]
Wje?d?am w marker dok?adnie czarny i nic si? nie dzieje