Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2019-02-03, 03:47


kamilryb1

LUA






Wiek: 21
Na forum: 4407 dni
Posty: 146

Piwa: 321

Respekt: 7,3

Ostrzeżeń: 40%
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!

Postaw piwo autorowi tego posta
 

 
Wysłany: 2019-02-03, 10:20


Wilq







Wiek: 24
Na forum: 4570 dni
Posty: 3409

Piwa: 739

Respekt: 1225,8
Respekt: 1225,8

Najlepiej b?dzie Ci przet?umaczy? t? stron?. Tam masz wszystko odno?nie funkcji, kt?ra Ci? interesuje:

Więcej informacji znajdziesz w Wikipedii MTA:

dxDrawImageSection


Aby obliczy?, jak? cz??? poziomu chcesz rysowa? wykonujesz dzielenie:
ilosc_expa / maksymalna_ilosc_expa_na_dany_level


Punkty nadajesz elementDat?:

Więcej informacji znajdziesz w Wikipedii MTA:

setElementData


Więcej informacji znajdziesz w Wikipedii MTA:

getElementData


Automatyczne nadawanie expa musisz doda? w miejsce, gdzie gracz mo?e uzyska? tego expa.
Przyk?ad:
setElementData(localPlayer, "exp", tonumber(getElementData(localPlayer, "exp")) + 1)


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?.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2019-02-03, 14:11


kamilryb1

LUA






Wiek: 21
Na forum: 4407 dni
Posty: 146

Piwa: 321

Respekt: 7,3

Ostrzeżeń: 40%
"Wilq" napisał/a:

Najlepiej b?dzie Ci przet?umaczy? t? stron?. Tam masz wszystko odno?nie funkcji, kt?ra Ci? interesuje:

Więcej informacji znajdziesz w Wikipedii MTA:

dxDrawImageSection


Aby obliczy?, jak? cz??? poziomu chcesz rysowa? wykonujesz dzielenie:
ilosc_expa / maksymalna_ilosc_expa_na_dany_level


Punkty nadajesz elementDat?:

Więcej informacji znajdziesz w Wikipedii MTA:

setElementData


Więcej informacji znajdziesz w Wikipedii MTA:

getElementData


Automatyczne nadawanie expa musisz doda? w miejsce, gdzie gracz mo?e uzyska? tego expa.
Przyk?ad:
setElementData(localPlayer, "exp", tonumber(getElementData(localPlayer, "exp")) + 1)


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.

Postaw piwo autorowi tego posta
 

 
Tagi: img
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » LUA Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi

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
Dodaj temat do Ulubionych
Wersja do druku