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: 4266 dni
Posty: 146

Piwa: 319

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: 4428 dni
Posty: 3410

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 = {{220}, {350}, {490}}
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: 4266 dni
Posty: 146

Piwa: 319

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 = {{220}, {350}, {490}}
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(levelsw-150/zoom0/zoom137/zoomsw-150/zoom139/zoomtocolor(236,235,235255), 1self.font"center""center"falsefalsefalse);

        --local exp getElementData(localPlayer"punktygracza") or 0;
        local exp wartosc_prostokatuprogresu
        local lvlup_punkty ppx/3.48
        dxDrawImageSection(sw-115/zoom38/zoom+120/zoom111/zoom, -(exp/lvlup_punkty)*120/zoom00111, -(exp/lvlup_punkty)*120"costam.png"000tocolor(255255255255), 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 » img 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