Wysłany: 2021-01-17, 19:53
xyzzz^
A nic
Wiek: 18 Na forum: 1993 dni Posty: 319
Nick w MP: Aspyk21
Piwa : 308
Brama sie nie otwiera,
server:
function CDomki ()
local object = {}
-- domki do kupna
removeWorldModel ( 13817 , 1000 , 1353.23 , - 625.68 , 109.13 ) -- lod
local garazeDayZ = {
jakis = createObject ( 3095 , 1353.66 , - 626.34 , 109.13 , - 0.0 , 0.0 , 193.3 )
}
object . domki =
{ -- [ id ] = { x , y , z , preset interioru , cena , wlasciciel ( nie zmieniamy z nil ), garazID , czas ( nie zmieniamy z 0 ) }
[ 1 ] = { 2495.23 , - 1690.42 , 13.5 , 1 , 4000 , nil , 9 , 0 }, -- dom johnsona . grove
[ 2 ] = { 2523.38 , - 1658 , 14.4 , 2 , 2350 , nil , false , 0 }, -- dom po lewej od koszykowki grove
[ 3 ] = { 2486.5 , - 1645.8 , 13 , 3 , 3100 , nil , false , 0 }, -- dom 2 - pietrowy grove
[ 4 ] = { 315.17 , - 1771 , 3.6 , 3 , 3250 , nil , 13 , 0 }, -- dom na plazy 2 - pietrowy garaz
[ 5 ] = { 1298.69 , - 800.46 , 83 , 4 , 10000 , nil , false , 0 }, -- willa madd doga
[ 6 ] = { 2468.79 , - 1295.53 , 28.9 , 2 , 2200 , nil , false , 0 }, -- dom jednorodzinny kolo strip clubu
[ 7 ] = { 2068.12 , - 1731.63 , 12.8 , 6 , 2000 , nil , false , 0 }, -- kolo pizzerii
[ 8 ] = { 2069 , - 1717 , 12.5 , 6 , 2000 , nil , false , 0 }, -- kolo domku wyzej
[ 9 ] = { 1981.72 , - 1682.74 , 16 , 3 , 3300 , nil , false , 0 }, -- domek 2 pi ? trowy ko ? o domk ? w wy ? ej
[ 10 ] = { 1981.47 , - 1718.94 , 16 , 3 , 3250 , nil , false , 0 }, -- domek 2 pi ? trowy kolejny obok tego wy ? ej
[ 11 ] = { 1331.41 , - 631.56 , 108.13 , 5 , 4000 , nil , garazeDayZ . jakis , 0 }, -- domek mulholland
[ 12 ] = { 1686 , - 2100 , 12.8 , 7 , 3000 , nil , 5 , 0 }, -- domek el corona
[ 13 ] = { 2382.98 , - 1366.29 , 23.4 , 6 , 2100 , nil , false , 0 }, -- syfiaste domki kolo grove start
[ 14 ] = { 2389.5 , - 1346.11 , 24 , 6 , 2100 , nil , false , 0 },
[ 15 ] = { 2387.48 , - 1328.32 , 24.12 , 6 , 2100 , nil , false , 0 },
[ 16 ] = { 2387.93 , - 1279.72 , 24.12 , 6 , 2100 , nil , false , 0 },
[ 17 ] = { 2126.72 , - 1320.12 , 25.6 , 3 , 3050 , nil , false , 0 },
[ 18 ] = { 168.53 , - 1769.81 , 3.45 , 5 , 3500 , nil , false , 0 },
[ 19 ] = { 656.5 , - 1652.69 , 14.4 , 7 , 2500 , nil , false , 0 },
[ 20 ] = { 652.19 , - 1619.844 , 14 , 5 , 3200 , nil , false , 0 },
[ 21 ] = { 692.981 , - 1602.316 , 14 , 7 , 2500 , nil , false , 0 },
[ 22 ] = { 1182.56 , - 1074.84 , 30.6 , 5 , 3890 , nil , false , 0 },
[ 23 ] = { 1142.86 , - 1069.22 , 30.7 , 2 , 3250 , nil , false , 0 },
};
-- presety interior ? w
object . interiors =
{
-- [ id ] = { interiorID , x , y , z wyjscia }
-- grove street
[ 1 ] = { 3 , 2496.05 , - 1692.72 , 1014 }, -- dom johnsona
[ 2 ] = { 4 , 261 , 1284.7 , 1080 }, -- wielopokojowy dom jednorodzinny
[ 3 ] = { 9 , 2317.8 , - 1026.29 , 1050 }, -- dom 2 pi ? trowy , ? adny
[ 4 ] = { 5 , 1298.99 , - 794.47 , 1084 }, -- willa
[ 5 ] = { 10 , 2269.66 , - 1210.35 , 1047.56 }, -- dom jednorodzinny , du ? o pokoi , ? adnie wystrojony
[ 6 ] = { 1 , 223 , 1287.74 , 1082 }, -- syf , klasa za 2000 $
[ 7 ] = { 6 , - 69 , 1351.94 , 1080 }, -- klasa za 2500 $- 2750 $ max
[ 8 ] = { 5 , 140.136 , 137.449 , 1083 }, -- willa 6000 $ minimum
};
object . dimension = 5 ;
function object : refresh ()
for k , v in ipairs ( getAccounts ()) do
local domki = getAccountData ( v , "domki" ) or false
local domki_t = getAccountData ( v , "domki_timestamp" ) or false
if domki and domki_t then
-- wczytanie domk ? w gracza
-- konwersja z JSON tablicy bo system kont nie obsluguje tablic
domki = fromJSON ( domki )
domki_t = fromJSON ( domki_t )
local t = 0
if type ( domki ) == "table" then
for i , domek in pairs ( domki ) do
-- aktualizacja czasu najmu
t = domki_t [ i ]
local now = getRealTime (). timestamp
if t < now then
outputDebugString ( "Domek id " .. tostring ( domek ).. " - usuni?cie po terminie" , 3 )
object . domki [ domek ][ 8 ] = 0
object . domki [ domek ][ 6 ] = false
table . remove ( domki , i )
table . remove ( domki_t , i )
if #domki_t == 0 then
domki = false
domki_t = false
end
setAccountData ( v , "domki" , toJSON ( domki ))
setAccountData ( v , "domki_timestamp" , toJSON ( domki_t ))
else
object . domki [ domek ][ 8 ] = t
object . domki [ domek ][ 6 ] = getAccountName ( v )
end
end
end
end
end
end
object : refresh ()
-- aktualizacja w ? a ? ciciel ? w domk ? w
setTimer (
function()
restartResource ( getThisResource ())
end , 60000 * 30 , 0 )
-- stworzenie marker ? w w domkach
for k , v in ipairs ( object . domki ) do
local id = v [ 4 ]
local x , y , z = object . interiors [ id ][ 2 ], object . interiors [ id ][ 3 ], object . interiors [ id ][ 4 ]
local marker = createMarker ( x , y , z - 0.7 , "cylinder" , 2.0 , 0 , 255 , 0 , 50 , root )
setElementInterior ( marker , object . interiors [ id ][ 1 ])
setElementDimension ( marker , k )
setElementData ( marker , "dom:exit" , true )
end
-- stworzenie marker ? w
for k , v in ipairs ( object . domki ) do
local x , y , z = v [ 1 ], v [ 2 ], v [ 3 ]
local interior = v [ 4 ]
local cena = v [ 5 ]
local wlasciciel = v [ 6 ]
local garaz = v [ 7 ]
local timestamp = v [ 8 ]
local marker , pickup , blip ;
if type ( wlasciciel ) == "string" then
marker = createMarker ( x , y , z , "cylinder" , 2.0 , 0 , 255 , 0 , 100 , root )
pickup = createPickup ( x , y , z + 1 , 3 , 1273 , 0 )
blip = createBlipAttachedTo ( marker , 32 , 2 , 255 , 0 , 0 , 255 , 0 , 300 )
else
marker = createMarker ( x , y , z , "cylinder" , 2.0 , 0 , 150 , 255 , 100 , root )
pickup = createPickup ( x , y , z + 1 , 3 , 1272 , 0 )
blip = createBlipAttachedTo ( marker , 31 , 2 , 255 , 0 , 0 , 255 , 0 , 300 )
end
addEventHandler ( "onMarkerHit" , marker , function( hitElement ) if getElementType ( hitElement ) == "player" and not getPedOccupiedVehicle ( hitElement ) then object : onDomEnter ( hitElement ); end end );
-- zapisanie danych do markeru
setElementData ( marker , "dom:id" , k )
setElementData ( marker , "dom:interior" , object . interiors [ interior ][ 1 ])
setElementData ( marker , "dom:enterPosX" , object . interiors [ interior ][ 2 ])
setElementData ( marker , "dom:enterPosY" , object . interiors [ interior ][ 3 ])
setElementData ( marker , "dom:enterPosZ" , object . interiors [ interior ][ 4 ])
setElementData ( marker , "dom:cena" , cena )
setElementData ( marker , "dom:wlasciciel" , wlasciciel )
setElementData ( marker , "dom:garaz" , garaz )
setElementData ( marker , "dom:pickup" , pickup )
setElementData ( marker , "dom:open" , true )
setElementData ( marker , "dom:timestamp" , timestamp )
setElementData ( marker , "dom:blip" , blip )
-- i pickupu by przyspieszyc renderowanie tekstow ( po co robi ? p ? tle na wszystkie markery )
setElementData ( pickup , "dom" , true )
setElementData ( pickup , "dom:interior" , interior )
setElementData ( pickup , "dom:cena" , cena )
setElementData ( pickup , "dom:wlasciciel" , wlasciciel )
setElementData ( pickup , "dom:garaz" , garaz )
setElementData ( pickup , "dom:pickup" , pickup )
setElementData ( pickup , "dom:timestamp" , timestamp )
end
function object : onDomEnter ( hitElement )
if getElementType ( hitElement ) == "player" and not getElementData ( hitElement , "dom:exit" ) then
triggerClientEvent ( hitElement , "domki:showWindow" , source )
end
end
-- sprawdzanie markerow w interiorze
addEventHandler ( "onMarkerHit" , root ,
function( hitElement , dimension )
if dimension then
if getElementData ( source , "dom:exit" ) ~= true then return end
if getElementData ( hitElement , "dom:entered" ) then return end
local pos = getElementData ( hitElement , "dom:exit" )
local x , y , z = pos [ 1 ], pos [ 2 ], pos [ 3 ]
fadeCamera ( hitElement , false , 2.0 )
setTimer (
function()
setElementPosition ( hitElement , x , y , z + 0.6 )
setElementInterior ( hitElement , 0 )
setElementDimension ( hitElement , 0 )
fadeCamera ( hitElement , true , 2.0 )
setTimer ( setElementData , 2000 , 1 , hitElement , "dom:exit" , false )
end , 2000 , 1 )
end
end
)
function object : enterInterior ( marker )
local interior = getElementData ( marker , "dom:interior" )
local x , y , z = getElementData ( marker , "dom:enterPosX" ), getElementData ( marker , "dom:enterPosY" ), getElementData ( marker , "dom:enterPosZ" )
local dimension = getElementData ( marker , "dom:id" ); -- na stale zapisana !
local eX , eY , eZ = getElementPosition ( marker ); -- pozycja do powrotu
setElementData ( client , "dom:exit" , { eX , eY , eZ })
setElementData ( client , "dom:entered" , true ) -- aby nie wyjsc od razu po wejsciu
setTimer ( setElementData , 5000 , 1 , client , "dom:entered" , false )
setElementInterior ( client , interior )
setElementDimension ( client , dimension )
setElementPosition ( client , x , y , z )
fadeCamera ( client , true , 2.0 )
end
addEvent ( "domki:enterInterior" , true )
addEventHandler ( "domki:enterInterior" , root , function( a ) object : enterInterior ( a ) end )
function object : buyHouse ( money , marker , time )
local playerAcc = getPlayerAccount ( client )
local domki = getAccountData ( playerAcc , "domki" ) or false
if domki ~= false and fromJSON ( domki ) ~= false then
if #fromJSON(domki) >= 3 then
outputChatBox ( "Przekroczy?e? limit kupionych domk?w." , client , 255 , 0 , 0 )
return
end
end
setElementData ( client , "GP" , getElementData ( client , "GP" ) - money )
local id = getElementData ( marker , "dom:id" )
local timestamp = getRealTime (). timestamp
time = 86400 * time
timestamp = timestamp + time
if domki and type ( fromJSON ( domki )) == "table" then
-- zapisanie domku do konta gracza
domki = fromJSON ( domki )
table . insert ( domki , id )
setAccountData ( playerAcc , "domki" , toJSON ( domki ))
-- jakis bug i nie moge zapisac w jednej dacie timestampu i id
domki_timestamp = getAccountData ( playerAcc , "domki_timestamp" )
domki_timestamp = fromJSON ( domki_timestamp )
table . insert ( domki_timestamp , timestamp )
setAccountData ( playerAcc , "domki_timestamp" , toJSON ( domki_timestamp ))
else
-- pierwszy domek do zapisania
setAccountData ( playerAcc , "domki" , toJSON ({ id }))
setAccountData ( playerAcc , "domki_timestamp" , toJSON ({ timestamp }))
end
-- aktualizacja stanu domku
local blip = getElementData ( marker , "dom:blip" )
setBlipIcon ( blip , 32 )
local pickup = getElementData ( marker , "dom:pickup" )
setElementData ( marker , "dom:wlasciciel" , getAccountName ( playerAcc ))
setElementData ( pickup , "dom:wlasciciel" , getAccountName ( playerAcc ))
setElementData ( marker , "dom:timestamp" , timestamp )
setElementData ( pickup , "dom:timestamp" , timestamp )
setPickupType ( pickup , 3 , 1273 )
setMarkerColor ( marker , 0 , 255 , 0 , 100 )
outputChatBox ( "Zakupi?e? dom!" , client , 0 , 255 , 0 )
end
addEvent ( "domki:buyHouse" , true )
addEventHandler ( "domki:buyHouse" , root , function( a , b , c ) object : buyHouse ( a , b , c ) end )
function object : sellHouse ( price , marker )
if price and marker then
-- givePlayerMoney ( client , price )
setElementData ( client , "GP" , getElementData ( client , "GP" ) + price )
local id = getElementData ( marker , "dom:id" )
local pickup = getElementData ( marker , "dom:pickup" )
local blip = getElementData ( marker , "dom:blip" )
setPickupType ( pickup , 3 , 1272 )
setMarkerColor ( marker , 0 , 150 , 255 , 100 )
setBlipIcon ( blip , 31 )
setElementData ( marker , "dom:wlasciciel" , false )
setElementData ( marker , "dom:timestamp" , false )
setElementData ( marker , "dom:open" , true )
setElementData ( pickup , "dom:wlasciciel" , false )
setElementData ( pickup , "dom:timestamp" , false )
local acc = getPlayerAccount ( client )
local domki = getAccountData ( acc , "domki" )
local domki_t = getAccountData ( acc , "domki_timestamp" )
domki = fromJSON ( domki )
domki_t = fromJSON ( domki_t )
for i , domek in ipairs ( domki ) do
if id == domek then
outputDebugString ( "Domek id " .. tostring ( domek ).. " - sprzedanie" , 3 )
object . domki [ domek ][ 8 ] = 0
object . domki [ domek ][ 6 ] = false
table . remove ( domki , i )
table . remove ( domki_t , i )
if #domki_t == 0 then
domki = false
domki_t = false
end
setAccountData ( acc , "domki" , toJSON ( domki ))
setAccountData ( acc , "domki_timestamp" , toJSON ( domki_t ))
end
end
outputChatBox ( "Sprzeda?e? sw?j domek!" , client , 0 , 255 , 0 )
end
end
addEvent ( "domki:sellHouse" , true )
addEventHandler ( "domki:sellHouse" , root , function( a , b ) object : sellHouse ( a , b ) end )
function object : przedluz ( money , marker , time )
-- takePlayerMoney ( client , money )
setElementData ( client , "GP" , getElementData ( client , "GP" ) - money )
local id = getElementData ( marker , "dom:id" )
local playerAcc = getPlayerAccount ( client )
local domki = getAccountData ( playerAcc , "domki" ) or false
local timestamp = 86400 * time
domki_timestamp = fromJSON ( getAccountData ( playerAcc , "domki_timestamp" ))
for k , v in ipairs ( fromJSON ( getAccountData ( playerAcc , "domki" ))) do
if v == id then
domki_timestamp = domki_timestamp [ k ]
timestamp = timestamp + domki_timestamp
local table = fromJSON ( getAccountData ( playerAcc , "domki_timestamp" ))
table [ k ] = timestamp
setAccountData ( playerAcc , "domki_timestamp" , toJSON ( table ))
break
end
end
local pickup = getElementData ( marker , "dom:pickup" )
setElementData ( marker , "dom:timestamp" , timestamp )
setElementData ( pickup , "dom:timestamp" , timestamp )
outputChatBox ( "Przed?u?ono domek!" , client , 0 , 255 , 0 )
end
addEvent ( "domki:przedluz" , true )
addEventHandler ( "domki:przedluz" , root , function( money , marker , time ) object : przedluz ( money , marker , time ) end )
function object : openGarage ( garaz )
local garazyk = getElementData ( garaz , "dom:garaz" )
local id = getElementData ( garaz , "domek:id" )
if garazyk then
if id == 11 then
moveObject ( garazeDayZ . jakis , 1000 , 1353.66 , - 626.34 , 109.13 - 10 )
end
end
end
addEvent ( "domki:openGarage" , true )
addEventHandler ( "domki:openGarage" , root , function( a ) object : openGarage ( a ) end )
return object ;
end
CDomki ()
client
function CDomki ()
local object = {};
object . dom_wnd = guiCreateWindow ( 0.55 , 0.64 , 0.44 , 0.34 , "Dom na sprzeda?" , true )
guiWindowSetSizable ( object . dom_wnd , false )
guiSetVisible ( object . dom_wnd , false )
object . dom_kup_btn = guiCreateButton ( 0.03 , 0.54 , 0.26 , 0.19 , "Kup" , true , object . dom_wnd )
object . dom_sprzedaj_btn = guiCreateButton ( 0.38 , 0.54 , 0.26 , 0.19 , "Sprzedaj" , true , object . dom_wnd )
guiSetProperty ( object . dom_sprzedaj_btn , "Disabled" , "True" )
object . dom_wejdz_btn = guiCreateButton ( 0.72 , 0.54 , 0.26 , 0.19 , "Wejd?" , true , object . dom_wnd )
object . dom_otworz_btn = guiCreateButton ( 0.03 , 0.76 , 0.26 , 0.19 , "Otw?rz/Zamknij dom" , true , object . dom_wnd )
object . dom_lbl_info = guiCreateLabel ( 0.03 , 0.13 , 0.98 , 0.36 , "W?a?ciciel: brak\nCena: 3000$ za dzie?\nGara?: nie\n\nAby zamkn?? GUI, kliknij poza okno." , true , object . dom_wnd )
object . dom_otworzg_btn = guiCreateButton ( 0.38 , 0.76 , 0.26 , 0.19 , "Otw?rz/Zamknij gara?" , true , object . dom_wnd )
object . dom_przedluz_btn = guiCreateButton ( 0.72 , 0.76 , 0.26 , 0.19 , "Przed?u?" , true , object . dom_wnd )
-- buy window
object . dom_buy_wnd = guiCreateWindow ( 0.31 , 0.35 , 0.39 , 0.24 , "Na ile chcesz kupi? dom?" , true )
guiWindowSetSizable ( object . dom_buy_wnd , false )
guiSetVisible ( object . dom_buy_wnd , false )
object . dom_day_lbl = guiCreateLabel ( 0.03 , 0.17 , 0.15 , 0.11 , "Ilo?? dni" , true , object . dom_buy_wnd )
object . dom_dni_edit = guiCreateEdit ( 0.23 , 0.17 , 0.15 , 0.14 , "" , true , object . dom_buy_wnd )
object . dom_kwota = guiCreateLabel ( 0.03 , 0.35 , 0.91 , 0.17 , "Kwota ko?cowa: 0 * $2000 = $0" , true , object . dom_buy_wnd )
object . dom_finalkup_wnd = guiCreateButton ( 0.04 , 0.61 , 0.42 , 0.26 , "Kup" , true , object . dom_buy_wnd )
object . dom_buy_anuluj = guiCreateButton ( 0.54 , 0.61 , 0.42 , 0.26 , "Anuluj" , true , object . dom_buy_wnd )
-- okno do przed ? u ? enia
object . dom_przedluz_wnd = guiCreateWindow ( 0.31 , 0.35 , 0.39 , 0.24 , "Na ile chcesz przed?u?y? dom?" , true )
guiWindowSetSizable ( object . dom_przedluz_wnd , false )
guiSetVisible ( object . dom_przedluz_wnd , false )
object . dom_dayprzedluz_lbl = guiCreateLabel ( 0.03 , 0.17 , 0.15 , 0.11 , "Ilo?? dni" , true , object . dom_przedluz_wnd )
object . dom_dniprzedluz_edit = guiCreateEdit ( 0.23 , 0.17 , 0.15 , 0.14 , "" , true , object . dom_przedluz_wnd )
object . dom_kwotaprzedluz = guiCreateLabel ( 0.03 , 0.35 , 0.91 , 0.17 , "Kwota ko?cowa: 0 * $2000 = $0" , true , object . dom_przedluz_wnd )
object . dom_finalprzedluz_btn = guiCreateButton ( 0.04 , 0.61 , 0.42 , 0.26 , "Przed?u?" , true , object . dom_przedluz_wnd )
object . dom_przedluz_anuluj = guiCreateButton ( 0.54 , 0.61 , 0.42 , 0.26 , "Anuluj" , true , object . dom_przedluz_wnd )
-- okno do sprzeda ? y
object . dom_sprzedaj_wnd = guiCreateWindow ( 0.30 , 0.28 , 0.39 , 0.21 , "Czy na pewno chcesz sprzeda? ten domek?" , true )
guiWindowSetSizable ( object . dom_sprzedaj_wnd , false )
guiSetVisible ( object . dom_sprzedaj_wnd , false )
object . dom_sprzedaj_tak = guiCreateButton ( 0.06 , 0.39 , 0.36 , 0.48 , "Tak" , true , object . dom_sprzedaj_wnd )
object . dom_sprzedaj_nie = guiCreateButton ( 0.58 , 0.39 , 0.36 , 0.48 , "Nie" , true , object . dom_sprzedaj_wnd )
addEventHandler ( "onClientGUIClick" , object . dom_sprzedaj_nie , function() guiSetVisible ( object . dom_sprzedaj_wnd , false ) end )
object . dom_sprzedaj_info = guiCreateLabel ( 0.04 , 0.15 , 0.89 , 0.17 , "Mo?esz sprzeda? ten dom za 0$." , true , object . dom_sprzedaj_wnd )
-- zmienne do zapami ? tania przez gracza
object . currentMarker = nil
object . currentPrice = nil
object . finalPrice = nil
object . garazID = nil
object . finalTime = nil
function object : show ()
local state = guiGetVisible ( self . dom_wnd )
guiSetVisible ( self . dom_wnd , not state )
showCursor ( not state )
if state then return end
-- update informacji
self . currentMarker = source
local wlasciciel = getElementData ( source , "dom:wlasciciel" ) or "Brak"
local cena = getElementData ( source , "dom:cena" ) or "0"
self . currentPrice = cena
local garaz = getElementData ( source , "dom:garaz" )
if garaz then
if not getElementData ( localPlayer , "vip" ) then
if wlasciciel == getAccountName ( localPlayer ) then
outputChatBox ( "Musisz posiada? konto VIP aby przed?u?y? ten domek." , 0 , 255 , 255 )
end
end
end
if garaz then
garaz = "Tak"
guiSetProperty ( self . dom_otworzg_btn , "Disabled" , "False" )
else
garaz = "Nie"
guiSetProperty ( self . dom_otworzg_btn , "Disabled" , "True" )
end
self . garazID = getElementData ( source , "dom:garaz" )
local open = getElementData ( source , "dom:open" )
if open then
guiSetProperty ( self . dom_wejdz_btn , "Disabled" , "False" )
else
if wlasciciel == getAccountName ( localPlayer ) then
guiSetProperty ( self . dom_wejdz_btn , "Disabled" , "False" )
else
guiSetProperty ( self . dom_wejdz_btn , "Disabled" , "True" )
end
end
if wlasciciel ~= "Brak" then
guiSetText ( self . dom_wnd , "Dom " .. wlasciciel )
if getAccountName ( localPlayer ) == wlasciciel then
guiSetProperty ( self . dom_sprzedaj_btn , "Disabled" , "False" )
guiSetProperty ( self . dom_otworz_btn , "Disabled" , "False" )
guiSetProperty ( self . dom_otworzg_btn , "Disabled" , "False" )
guiSetProperty ( self . dom_przedluz_btn , "Disabled" , "False" )
guiSetProperty ( self . dom_kup_btn , "Disabled" , "True" )
else
guiSetProperty ( self . dom_sprzedaj_btn , "Disabled" , "True" )
guiSetProperty ( self . dom_otworz_btn , "Disabled" , "True" )
guiSetProperty ( self . dom_otworzg_btn , "Disabled" , "True" )
guiSetProperty ( self . dom_przedluz_btn , "Disabled" , "True" )
guiSetProperty ( self . dom_kup_btn , "Disabled" , "True" )
end
else
guiSetText ( self . dom_wnd , "Dom do wynaj?cia" )
guiSetProperty ( self . dom_sprzedaj_btn , "Disabled" , "True" )
guiSetProperty ( self . dom_otworz_btn , "Disabled" , "True" )
guiSetProperty ( self . dom_otworzg_btn , "Disabled" , "True" )
guiSetProperty ( self . dom_przedluz_btn , "Disabled" , "True" )
guiSetProperty ( self . dom_kup_btn , "Disabled" , "False" )
end
guiSetText ( self . dom_lbl_info , "W?a?ciciel: " .. tostring ( wlasciciel ).. "\nCena: $" .. tostring ( cena ).. " dziennie\nGara?: " .. garaz .. "\n\nAby zamkn?? kliknij poza okno." )
end
addEvent ( "domki:showWindow" , true )
addEventHandler ( "domki:showWindow" , root , function() object : show () end )
function object : isCursorInArea ( cursorX , cursorY , minX , minY , maxX , maxY )
if cursorX < minX or cursorX > maxX or
cursorY < minY or cursorY > maxY
then
return false
end
return true
end
function object : checkClicks ( _ , state , cursorX , cursorY )
local wx , wy = guiGetPosition ( self . dom_wnd , false )
local ww , wh = guiGetSize ( self . dom_wnd , false )
local isOutsideWindow = self : isCursorInArea ( cursorX , cursorY , wx , wy , wx + ww , wy + wh )
if guiGetVisible ( self . dom_buy_wnd ) then return end
if guiGetVisible ( self . dom_przedluz_wnd ) then return end
if guiGetVisible ( self . dom_sprzedaj_wnd ) then return end
if not isOutsideWindow and guiGetVisible ( self . dom_wnd ) then
self : show ()
end
end
addEventHandler ( "onClientClick" , root , function( a , b , c , d ) object : checkClicks ( a , b , c , d ) end )
function object : checkGUIClicks ()
if source == self . dom_wejdz_btn then
self : show ()
fadeCamera ( false , 2.0 )
setTimer (
function()
triggerServerEvent ( "domki:enterInterior" , resourceRoot , self . currentMarker )
end , 2000 , 1 );
elseif source == self . dom_kup_btn then
if getElementData ( self . currentMarker , "dom:garaz" ) and not getElementData ( localPlayer , "vip" ) then outputChatBox ( "Musisz mie? konto VIP" ) return end
guiSetVisible ( self . dom_buy_wnd , true );
elseif source == self . dom_buy_anuluj then
guiSetVisible ( self . dom_buy_wnd , false );
elseif source == self . dom_finalkup_wnd then
local money = getElementData ( localPlayer , "GP" );
if not self . finalPrice then return end
if money < self . finalPrice then
outputChatBox ( "Masz za ma?o pieni?dzy na kupno tego domu!" , 255 , 0 , 0 )
return
end
triggerServerEvent ( "domki:buyHouse" , resourceRoot , self . finalPrice , self . currentMarker , self . finalTime )
guiSetVisible ( self . dom_buy_wnd , false );
self : show ()
elseif source == self . dom_otworzg_btn then
triggerServerEvent ( "domki:openGarage" , resourceRoot , self . garazID )
elseif source == self . dom_otworz_btn then
local state = getElementData ( self . currentMarker , "dom:open" )
if state == true then
outputChatBox ( "Zamkn??e? dom. Inni nie mog? teraz do niego wchodzi?." )
setElementData ( self . currentMarker , "dom:open" , false )
elseif state == false then
outputChatBox ( "Otworzy?e? dom. Wszyscy mog? teraz do niego wchodzi?." )
setElementData ( self . currentMarker , "dom:open" , true )
end
elseif source == self . dom_przedluz_btn then
if getElementData ( self . currentMarker , "dom:garaz" ) and not getElementData ( localPlayer , "vip" ) then outputChatBox ( "Musisz mie? konto VIP" ) return end
guiSetVisible ( self . dom_przedluz_wnd , true )
elseif source == self . dom_przedluz_anuluj then
guiSetVisible ( self . dom_przedluz_wnd , false )
elseif source == self . dom_finalprzedluz_btn then
local money = getElementData ( localPlayer , "GP" );
if not self . finalPrice then return end
if money < self . finalPrice then
outputChatBox ( "Masz za ma?o pieni?dzy na przed?u?enie tego domu!" , 255 , 0 , 0 )
return
end
triggerServerEvent ( "domki:przedluz" , resourceRoot , self . finalPrice , self . currentMarker , self . finalTime )
guiSetVisible ( self . dom_przedluz_wnd , false )
self : show ()
elseif source == self . dom_sprzedaj_btn then
local time = getElementData ( self . currentMarker , "dom:timestamp" )
local realTimestamp = getRealTime (). timestamp
time = getRealTime ( time ). timestamp
local days = getRealTime ( time - realTimestamp ). yearday
if days < 1 then days = 1 end
local price = ( days * self . currentPrice )/ 2
self . finalPrice = price
guiSetText ( self . dom_sprzedaj_info , "Mo?esz sprzeda? ten dom za " .. tostring ( price ).. "$." )
guiSetVisible ( self . dom_sprzedaj_wnd , true )
elseif source == self . dom_sprzedaj_tak then
triggerServerEvent ( "domki:sellHouse" , resourceRoot , self . finalPrice , self . currentMarker )
guiSetVisible ( self . dom_sprzedaj_wnd , false )
end
end
addEventHandler ( "onClientGUIClick" , root , function() object : checkGUIClicks () end )
function object : render ()
-- update kupna
if guiGetVisible ( self . dom_buy_wnd ) then
local str = guiGetText ( self . dom_dni_edit )
local check = tonumber ( str )
if check == nil then
guiSetText ( self . dom_dni_edit , "" )
guiSetText ( self . dom_kwota , "Kwota ko?cowa: brak danych" )
self . finalPrice = false ;
elseif type ( check ) == "number" then
if check == 0 then
guiSetText ( self . dom_dni_edit , "" )
guiSetText ( self . dom_kwota , "Kwota ko?cowa: brak danych" )
self . finalPrice = false
end
guiSetText ( self . dom_kwota , "Kwota ko?cowa: " .. tostring ( check ).. " * $" .. tostring ( self . currentPrice ).. " = $" .. tostring ( check * self . currentPrice ))
self . finalPrice = check * self . currentPrice
self . finalTime = check
end
if string . len ( str ) > 3 then
guiSetText ( self . dom_dni_edit , "" )
guiSetText ( self . dom_kwota , "Kwota ko?cowa: brak danych" )
self . finalPrice = false
end
end
if guiGetVisible ( self . dom_przedluz_wnd ) then
local str = guiGetText ( self . dom_dniprzedluz_edit )
local check = tonumber ( str )
if check == nil then
guiSetText ( self . dom_dniprzedluz_edit , "" )
guiSetText ( self . dom_kwotaprzedluz , "Kwota ko?cowa: brak danych" )
self . finalPrice = false ;
elseif type ( check ) == "number" then
if check == 0 then
guiSetText ( self . dom_dniprzedluz_edit , "" )
guiSetText ( self . dom_kwotaprzedluz , "Kwota ko?cowa: brak danych" )
self . finalPrice = false
end
guiSetText ( self . dom_kwotaprzedluz , "Kwota ko?cowa: " .. tostring ( check ).. " * $" .. tostring ( self . currentPrice ).. " = $" .. tostring ( check * self . currentPrice ))
self . finalPrice = check * self . currentPrice
self . finalTime = check
end
if string . len ( str ) > 3 then
guiSetText ( self . dom_dniprzedluz_edit , "" )
guiSetText ( self . dom_kwotaprzedluz , "Kwota ko?cowa: brak danych" )
self . finalPrice = false
end
end
for k , v in ipairs ( getElementsByType ( "pickup" )) do
if getElementData ( v , "dom" ) then
local x , y , z = getElementPosition ( v )
local x2 , y2 , z2 = getElementPosition ( localPlayer )
if isLineOfSightClear ( x , y , z , x2 , y2 , z2 , true , true , false , true ) then
z = z + 0.5
local sx , sy = getScreenFromWorldPosition ( x , y , z )
if sx and sy then
local dist = getDistanceBetweenPoints3D ( x , y , z , x2 , y2 , z2 )
if dist > 15 then return end
local font_size = 1.5 -( dist / 10 )
-- rysowanie tekstu
local wlasciciel = getElementData ( v , "dom:wlasciciel" ) or "Brak"
local cena = getElementData ( v , "dom:cena" ) or "0"
local garaz = getElementData ( v , "dom:garaz" )
local time = getElementData ( v , "dom:timestamp" )
if garaz then
garaz = "Ten dom posiada gara?."
else
garaz = "Ten dom nie posiada gara?u."
end
if wlasciciel == "Brak" then
dxDrawText ( "Dom do wynaj?cia\nW?a?ciciel: " .. wlasciciel .. "\nCena za dzie?: $" .. cena .. "\n" .. garaz , sx + 1 , sy + 1 , sx , sy , tocolor ( 0 , 0 , 0 , 200 ), font_size , "default-bold" , "center" )
dxDrawText ( "Dom do wynaj?cia\nW?a?ciciel: " .. wlasciciel .. "\nCena za dzie?: $" .. cena .. "\n" .. garaz , sx + 2 , sy + 2 , sx , sy , tocolor ( 255 , 255 , 255 , 200 ), font_size , "default-bold" , "center" )
else
local realTimestamp = getRealTime (). timestamp
time = getRealTime ( time ). timestamp
if time - realTimestamp < 0 then return end
local days = getRealTime ( time - realTimestamp ). yearday
local czas_string
if days == 0 then
czas_string = "| Pozosta? mniej ni? jeden dzie? wynaj?cia."
elseif days < 2 then
czas_string = "| Pozosta? oko?o " .. tostring ( days ).. " dzie? wynaj?cia."
else
czas_string = "| Pozosta?o oko?o " .. tostring ( days ).. " dni wynaj?cia."
end
dxDrawText ( "Dom wynaj?ty " .. czas_string .. "\nW?a?ciciel: " .. wlasciciel .. "\n" .. garaz , sx + 1 , sy + 1 , sx , sy , tocolor ( 0 , 0 , 0 , 200 ), font_size , "default-bold" , "center" )
dxDrawText ( "Dom wynaj?ty " .. czas_string .. "\nW?a?ciciel: " .. wlasciciel .. "\n" .. garaz , sx + 2 , sy + 2 , sx , sy , tocolor ( 255 , 255 , 255 , 200 ), font_size , "default-bold" , "center" )
end
end
end
end
end
end
addEventHandler ( "onClientRender" , root , function() object : render () end )
return object ;
end
CDomki ();
dla informacji, server przedtem wygladal tak:
https://pastebin.com/raw/rqyAu4yW
Wysłany: 2021-01-17, 20:03
_jvneczek
Wiek: 22 Na forum: 4325 dni Posty: 1513
Nick w MP: _jvneczek
Piwa : 3949
function object : openGarage ( garaz )
local garazyk = getElementData ( garaz , "dom:garaz" )
local id = getElementData ( garaz , "domek:id" )
if garazyk then
if id == 11 then
moveObject ( garazeDayZ . jakis , 1000 , 1353.66 , - 626.34 , 109.13 - 10 )
end
sprawdzasz if elementdata domek:id == 11 then
wi?c nic dziwnego ze nie otworzy, jesli twoj dom ma inn? elementdate np domek:id == 1, to nie otworzy.
Wysłany: 2021-01-17, 20:18
xyzzz^
A nic
Wiek: 18 Na forum: 1993 dni Posty: 319
Nick w MP: Aspyk21
Piwa : 308
"satan_" napisał/a :
function object : openGarage ( garaz )
local garazyk = getElementData ( garaz , "dom:garaz" )
local id = getElementData ( garaz , "domek:id" )
if garazyk then
if id == 11 then
moveObject ( garazeDayZ . jakis , 1000 , 1353.66 , - 626.34 , 109.13 - 10 )
end
sprawdzasz if elementdata domek:id == 11 then
wi?c nic dziwnego ze nie otworzy, jesli twoj dom ma inn? elementdate np domek:id == 1, to nie otworzy.
O czym ty m?wisz? dom na nadane ID, to co mi da?e? nie zmienia nic, brame ci?gle tworzy?o
Wysłany: 2021-01-19, 19:14
AmLotte.
Wiek: 21 Na forum: 2183 dni Posty: 134
Nick w MP: AmLotte
Piwa : 443
"Aw4ke" napisał/a : "satan_" napisał/a :
function object : openGarage ( garaz )
local garazyk = getElementData ( garaz , "dom:garaz" )
local id = getElementData ( garaz , "domek:id" )
if garazyk then
if id == 11 then
moveObject ( garazeDayZ . jakis , 1000 , 1353.66 , - 626.34 , 109.13 - 10 )
end
sprawdzasz if elementdata domek:id == 11 then
wi?c nic dziwnego ze nie otworzy, jesli twoj dom ma inn? elementdate np domek:id == 1, to nie otworzy.
O czym ty m?wisz? dom na nadane ID, to co mi da?e? nie zmienia nic, brame ci?gle tworzy?o
Brame mog?o utworzy? to prawda bo to tylko model a tutaj moveObject przeuswasz utworzony model tzncz. w twoim przypadku garazeDayz.jakis, tak?e szatan m?wi dobrze, lepiej sprawdz elementdate domku w kt?rym aktualnie jeste? b?d? masz otwarty panel i wtedy zrobi? if id == 11 then tak jak u ciebie. sp?jrz na id domku w kt?rym chcesz umie?ci? t? mo?liwo??
Tagi: brama :: sie :: nie :: otwiera
Anonymous
Na forum: 245 dni
Posty: 1
Anonymous Koniecznie zajrzyj na: