Witam, potrzebuje pomocy w dxDrawImageSection, poniewa? nie wiem jak napisa? system poziom?w, bo chcia?bym zrobi? taki jak np. na Paradise. Nie wiem jak zliczy? z elementdaty, oraz ?eby si? ten pasek zerowa? i szed? do g?ry. Tak samo, ?eby automatycznie si? nadawa? level po podzieleniu px, jak i punkty do?wiadczenia, prosz? o pomoc, to naprawd? b?dzie dla mnie motywacja do dalszej pracy! Z g?ry dzi?ki!
Musisz zrobi? 'rozpisk? level?w', np. 20 expa to 2 poziom, 50expa to 3 poziom etc.
Je?li aktualny exp r?wna si? progowi do nast?pnego poziomu, nadajesz nowy poziom i mo?esz usun?? expa.
Przy?ad:
setElementData(localPlayer, "exp", tonumber(getElementData(localPlayer, "exp")) + 1)
if getElementData(localPlayer, "exp") == 20 then
outputChatBox("Uzyskujesz 2 poziom, gratulacje!")
setElementData(localPlayer, "exp:poziom", 2)
setElementData(localPlayer, "exp", 0)
end
Akurat w po?szym przyk?adzie musia?by? wykona? kilka(dziesi?t) warunk?w.
Upro?ci? mo?esz to tabel?, gdzie sub-tabelami b?dzie kolejny level i odpowiednia ilo?? expa.
Przyk?ad:
local poziomy = {{2, 20}, {3, 50}, {4, 90}}
2 level - 20expa, 3 level - 50 expa etc.
Wtedy wykonujesz p?tl? na takiej tabeli i sprawdzasz, czy druga warto?? w sub-tabeli r?wna si? aktualnej ilo?ci expa i jako level ustawiasz pierwsz? warto?? w sub-tabeli.
Przyk?ad:
setElementData(localPlayer, "exp:poziom", 1)
for _, level in ipairs(poziomy) do
if (getElementData(localPlayer, "exp") == level[2]) and (getElementData(localPlayer, "exp:poziom") ~= level[1]) then
outputChatBox("Uzyskujesz poziom " .. level[1] .. ", gratulacje!")
setElementData(localPlayer, "exp:poziom", level[1])
setElementData(localPlayer, "exp", 0)
end
end
Staram si??zawsze testowa? kod zanim wstawi? go na GTAO.PL, w momencie pisania tego postu akurat nie siedz? na windowsie i nie mam jak tego sprawdzi?, w razie gdyby pojawi?y si? pytania lub problemy z powy?szym kodem - daj zna?.
dzi?ki, ale w?a?ciwie to pytam, bo kto? to tak przerobi? i wszystko pomiesza? i teraz ja mam to naprawia?:
if wartosc_do_dodania > 0 then
if o_n then
--[[
dzielenie
--]]
if (wartosc_prostokatuprogresu) >= ppx/3.48 then
--[[
liczenie poziom?w
--]]
level = level + 1;
--[[
zmienne
--]]
wartosc_prostokatuprogresu = 0
else
--[[
rownanie - jesli ujemne to odejmujemy z paska,
a jak dodatnie to dodajemy
--]]
wartosc_prostokatuprogresu = wartosc_prostokatuprogresu + 1
wartosc_do_dodania = wartosc_do_dodania - 1
end
end
else
if not o_f then
o_f = true;
--[[
usuwanie renderu
--]]
usunrender();
setElementData(localPlayer,"poziomgracza",level,true)
end
end
-- kolejny fragment
local level = level
dxDrawText(level, sw-150/zoom, 0/zoom, 137/zoom+ sw-150/zoom, 139/zoom, tocolor(236,235,235, 255), 1, self.font, "center", "center", false, false, false);
--local exp = getElementData(localPlayer, "punktygracza") or 0;
local exp = wartosc_prostokatuprogresu
local lvlup_punkty = ppx/3.48
dxDrawImageSection(sw-115/zoom, 38/zoom+120/zoom, 111/zoom, -(exp/lvlup_punkty)*120/zoom, 0, 0, 111, -(exp/lvlup_punkty)*120, "costam.png", 0, 0, 0, tocolor(255, 255, 255, 255), false);
(fragment kodu) i zduplikowa? nazwy moich zmiennych i da? swoje, nie wiem jak to teraz poprawi?. Ja to napisa?em tak, aby nadawa?o elementdat? po znikni?ciu renderu i jako? to sprawnie chodzi?o.
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach