Wysłany: 2020-04-29, 21:47
Maniekxx
Amator
Wiek: 24 Na forum: 2894 dni Posty: 232
Nick w MP: Maniekxx
Piwa : 225
Witam. Napisa?em pewien skrypt na wyb?r spawnu, u?y?em do tego funkcji dxDrawText, dxDrawRectangle i jedn? p?tle. Samo korzystanie ze skryptu nie powoduje spadk?w FPS lub co? w tym stylu, lecz korzystanie z jakiego? innego GUI lub u?ywanie GUI editora powoduje lekkie ?cinki. Skrypt ma by? u?ywany tylko i wy??cznie przy wyborze spawnu, i nie wiem czy b?dzie mia?o to jaki? wi?kszy wp?yw na wydajno?? serwera, lub te? komputera gracza. Z g?ry dzi?kuje za ewentualne odpowiedzi.
Wysłany: 2020-04-29, 21:57
kamison
Przyszły programista .lua
Wiek: 25 Na forum: 3302 dni Posty: 391
Nick w MP: kamison
Piwa : 594
Lubimy wr??y? z kuli ale ?atwiej z kodu
[ Dodano : 2020-04-29, 21:58 ]
Podaj kod, najlepiej ca?? funkcj? zawart? w onClientRender
Więcej szczegółów
Wystawiono 1 piw(a):Maniekxx
Wysłany: 2020-04-29, 21:59
Maniekxx
Amator
Wiek: 24 Na forum: 2894 dni Posty: 232
Nick w MP: Maniekxx
Piwa : 225
Prosz?
local spawny = {
{ spawn = "Los Santos" , rx = { 0.0076 , 0.0178 , 0.2437 , 0.0300 }, pos = { 1472.49 ,- 1710.46 , 14.05 }, info = "-Urz?d miasta\n Komisariat\n Szko?a jazdy" },
{ spawn = "Przechowalnia" , rx = { 0.0076 , 0.0578 , 0.2437 , 0.0300 }, pos = { 1583.03 ,- 1402.55 , 13.92 }, info = "-Przechowalnia pojazd?w" },
{ spawn = "San Fierro" , rx = { 0.0076 , 0.0978 , 0.2437 , 0.0300 }, pos = { 1472.49 ,- 1710.46 , 14.05 }, info = "-Urz?d miasta" },
}
function render ()
local spawn = spawny . spawn
dxDrawRectangle ( screenW * spawny . rx [ 1 ], screenH * spawny . rx [ 2 ]- 5 , screenW * spawny . rx [ 3 ], screenH * spawny . rx [ 4 ], tocolor ( 0 , 0 , 0 , 35 ), false )
dxDrawText ( spawn , screenW * spawny . rx [ 1 ], screenH * spawny . rx [ 2 ], screenW * spawny . rx [ 3 ], screenH * spawny . rx [ 4 ], tocolor ( 255 , 255 , 255 , 255 ), 1.00 , "default-bold" , "center" , "top" , false , false , false , false , false )
addEventHandler ( "onClientClick" , root , function( btn , state )
if btn == "left" and state == "down" then
local sY = 1
if isMouseIn ( screenW * spawny . rx [ 1 ], screenH * spawny . rx [ 2 ]* sY , screenW * spawny . rx [ 3 ], screenH * spawny . rx [ 4 ]* sY ) then
if x1 == 1 then x1 = 0 return end
setElementPosition ( localPlayer , spawny . pos [ 1 ], spawny . pos [ 2 ], spawny . pos [ 3 ])
-- removeEventHandler ( "onClientRender" , root , render )
x1 = 1
end
end
end )
if not isMouseIn ( screenW * spawny . rx [ 1 ], screenH * spawny . rx [ 2 ], screenW * spawny . rx [ 3 ], screenH * spawny . rx [ 4 ]) then
dxDrawRectangle ( screenW * spawny . rx [ 1 ], screenH * spawny . rx [ 2 ]+ sY - 5 , screenW * spawny . rx [ 3 ], screenH * spawny . rx [ 4 ]+ sY , tocolor ( 0 , 0 , 0 , 35 ), true )
else
dxDrawRectangle ( screenW * spawny . rx [ 1 ], screenH * spawny . rx [ 2 ]- 5 , screenW * spawny . rx [ 3 ], screenH * spawny . rx [ 4 ], tocolor ( 0 , 0 , 0 , 100 ), true )
dxDrawText ( spawny . info , screenW * spawny . rx [ 1 ]+ 360 , screenH * spawny . rx [ 2 ], screenW * spawny . rx [ 3 ], screenH * spawny . rx [ 4 ], tocolor ( 255 , 255 , 255 , 255 ), 1.00 , "default-bold" , "left" , "top" , false , false , false , false , false )
end
end
addEventHandler ( "onClientRender" , root , render )
Wysłany: 2020-04-29, 22:00
Wilq
Wiek: 24 Na forum: 4429 dni Posty: 3410
Piwa : 739
Welp, wyci?gnij ten event onClientClick z eventu onClientRender. Wytnij ca?y i wklej pod event onClientRender.
Wysłany: 2020-04-29, 22:04
Maniekxx
Amator
Wiek: 24 Na forum: 2894 dni Posty: 232
Nick w MP: Maniekxx
Piwa : 225
EDIT: Przepraszam, pomyli?em b??dy, to ten.
ERROR : lss - test_c . lua : 40 : attempt to index global 'v' ( a nil value )
Wysłany: 2020-04-29, 22:10
Wilq
Wiek: 24 Na forum: 4429 dni Posty: 3410
Piwa : 739
Robisz z?e odwo?anie do elementu tabeli.
Musisz wskaza? tabel? z tabeli spawny. Je?li chcesz obs?u?y? wszystkie 3 tabele, zr?b p?tle w evencie onClientClick.
Więcej szczegółów
Wystawiono 1 piw(a):Maniekxx
Wysłany: 2020-04-29, 22:14
Maniekxx
Amator
Wiek: 24 Na forum: 2894 dni Posty: 232
Nick w MP: Maniekxx
Piwa : 225
Zrobi?em to tak:
local spawny = {
{ spawn = "Los Santos" , rx = { 0.0076 , 0.0178 , 0.2437 , 0.0300 }, pos = { 1472.49 ,- 1710.46 , 14.05 }, info = "-Urz?d miasta\n Komisariat\n Szko?a jazdy" },
{ spawn = "Przechowalnia" , rx = { 0.0076 , 0.0578 , 0.2437 , 0.0300 }, pos = { 1583.03 ,- 1402.55 , 13.92 }, info = "-Przechowalnia pojazd?w" },
{ spawn = "San Fierro" , rx = { 0.0076 , 0.0978 , 0.2437 , 0.0300 }, pos = { 1583.03 ,- 1402.55 , 13.92 }, info = "-Urz?d miasta" },
}
function render ()
for i , v in pairs ( spawny ) do
local spawn = v . spawn
dxDrawRectangle ( screenW * v . rx [ 1 ], screenH * v . rx [ 2 ]- 5 , screenW * v . rx [ 3 ], screenH * v . rx [ 4 ], tocolor ( 0 , 0 , 0 , 35 ), false )
dxDrawText ( spawn , screenW * v . rx [ 1 ], screenH * v . rx [ 2 ], screenW * v . rx [ 3 ], screenH * v . rx [ 4 ], tocolor ( 255 , 255 , 255 , 255 ), 1.00 , "default-bold" , "center" , "top" , false , false , false , false , false )
if not isMouseIn ( screenW * v . rx [ 1 ], screenH * v . rx [ 2 ], screenW * v . rx [ 3 ], screenH * v . rx [ 4 ]) then
dxDrawRectangle ( screenW * v . rx [ 1 ], screenH * v . rx [ 2 ]+ sY - 5 , screenW * v . rx [ 3 ], screenH * v . rx [ 4 ]+ sY , tocolor ( 0 , 0 , 0 , 35 ), true )
else
dxDrawRectangle ( screenW * v . rx [ 1 ], screenH * v . rx [ 2 ]- 5 , screenW * v . rx [ 3 ], screenH * v . rx [ 4 ], tocolor ( 0 , 0 , 0 , 100 ), true )
dxDrawText ( v . info , screenW * v . rx [ 1 ]+ 360 , screenH * v . rx [ 2 ], screenW * v . rx [ 3 ], screenH * v . rx [ 4 ], tocolor ( 255 , 255 , 255 , 255 ), 1.00 , "default-bold" , "left" , "top" , false , false , false , false , false )
end
end
end
addEventHandler ( "onClientRender" , root , render )
addEventHandler ( "onClientClick" , root , function( btn , state )
if btn == "left" and state == "down" then
for i , v in ipairs ( spawny ) do
local sY = 1
if isMouseIn ( screenW * v . rx [ 1 ], screenH * v . rx [ 2 ]* sY , screenW * v . rx [ 3 ], screenH * v . rx [ 4 ]* sY ) then
setElementPosition ( localPlayer , v . pos [ 1 ], v . pos [ 2 ], v . pos [ 3 ])
-- removeEventHandler ( "onClientRender" , root , render )
end
end
end
end )
Teraz nie b?dzie powodowa?o wi?kszych obci??e??
[ Dodano : 2020-04-29, 22:15 ]
Czy mo?e Twoje odwo?anie do tabeli by?oby lepszym rozwi?zaniem?
[ Dodano : 2020-04-29, 22:15 ]
Zamiast tworzenia nowej p?tli?
Wysłany: 2020-04-29, 22:19
Wilq
Wiek: 24 Na forum: 4429 dni Posty: 3410
Piwa : 739
Tw?j aktualny kod powinien by? wystarczaj?cy. Przetestuj go i sam zdecyduj, czy dalej jest ?le zoptymalizowany.
Więcej szczegółów
Wystawiono 1 piw(a):Maniekxx
Wysłany: 2020-04-29, 22:22
Maniekxx
Amator
Wiek: 24 Na forum: 2894 dni Posty: 232
Nick w MP: Maniekxx
Piwa : 225
Teraz zu?ycie procesora nie przekracza 1% wydaje mi si? ?e tyle mi wystarczy. Dzi?ki za pomoc, w przysz?o?ci b?d? pami?ta? aby nie u?ywa? onClientClick w onClientRender
Tagi: zużycie :: cpu
Anonymous
Na forum: 245 dni
Posty: 1
Anonymous Koniecznie zajrzyj na: