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

Wysłany: 2014-12-28, 22:38


wgnsy123

#PrawaNieObowiązują






Wiek: 27
Na forum: 4773 dni
Posty: 91
Nick w MP: Stephen Mclauglin

Piwa: 109

Respekt: 50

Ostrzeżeń: 20%
Witam, ot?? czy kto? posiada jakikolwiek poradnik to tego, jak stworzy? ekwipunek do mta?

Tzw. podstaw?, ?e pod przyciskiem wy?wietla nam si? jaki? obrazek graficzny (np. nasz zrobiony obrazek ekwipunku) i mo?na tam doda? r??ne rzeczy, podczepi? przedmioty kt?re s? w dalszej fazie...

?

Postaw piwo autorowi tego posta
 

 
Wysłany: 2014-12-28, 22:54


MeeShuffle

Programista/Grafik






Wiek: 33
Na forum: 4536 dni
Posty: 2758
Nick w MP: Shuffle

Piwa: 8578

Respekt: 535,3
Respekt: 535,3

W naj?atwiejszy spos?b to tablica z przedmiotami i cyfry powiedzmy od 1 do 10. Na ka?dy button podany zostanie createElement bad? setElementData z liczb? z tablicy.

Podpis

https://shufflecode.pl
Static Codes and Graphics - Join our discord!
Postaw piwo autorowi tego posta
 

 
Wysłany: 2014-12-29, 10:52


wgnsy123

#PrawaNieObowiązują






Wiek: 27
Na forum: 4773 dni
Posty: 91
Nick w MP: Stephen Mclauglin

Piwa: 109

Respekt: 50

Ostrzeżeń: 20%
A jak zrobi?, aby po klikni?ciu danego przycisku, np "N" otworzy?o nam si? okienko graficzne kt?re sobie zaprojektowali?my, np. jakie? kwadraty, a w nich przedmioty kt?re mo?na u?y? itp.

Podpis
Postaw piwo autorowi tego posta
 

 
Wysłany: 2014-12-29, 11:02


Dixers

No-Life






Wiek: 26
Na forum: 4454 dni
Posty: 549
Nick w MP: Dixers

Piwa: 412

Respekt: 56,8

U?yj do tego BindKey.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2014-12-29, 11:11


wgnsy123

#PrawaNieObowiązują






Wiek: 27
Na forum: 4773 dni
Posty: 91
Nick w MP: Stephen Mclauglin

Piwa: 109

Respekt: 50

Ostrzeżeń: 20%
Okej, etap za sob?, ale jak odtworzy? jaki? obrazek graficzny na ekranie z buttonami itp. ?

Chcia?bym zaprojektowa? obrazek graficzny na dole ekranu sk?adaj?cy si? z trzech, czterech p?l - gdy mamy bro? na scrollu to mamy w tym graficznym obrazku np. M4 czy co?.

Podpis
Postaw piwo autorowi tego posta
 

 
Wysłany: 2014-12-29, 11:43


McDeKi







Wiek: 28
Na forum: 4985 dni
Posty: 95
Nick w MP: McDeKi

Piwa: 186

Respekt: 60

Na pocz?tek pobierz ten plik i wrzu? go do resources i odpal przez admin panel lub konsole:
http://www53.zippyshare.com/v/69811139/file.html
p??niej pobierz ten plik i tez wrzuc go do resources i odpal:
http://www75.zippyshare.com/v/42227251/file.html

Obecnie m?j kod na ekwipunek zawiera 4500 linjek ( 3000 klient, 1500 serwer ), ale uda?o mi si? podstawy podstaw zmie?ci? w 139 linijkach, mog? ci poradzi? jak zrobi? drag and drop itd, pisz je?eli b?dziesz czego? potrzebowa?.


--//EQ
local x, y = guiGetScreenSize () 

local ValEQ = { }
ValEQ.otworzonyEQ = false --//Czy ekwipunek jest otworzony
ValEQ.X = 0.2 --//Polozenie ekwipunku X
ValEQ.Y = 0.2 --//Polozenie ekwipunku Y
ValEQ.szerokoscX = 0.05 --//Szerokosc slotu X 64 piks
ValEQ.wysokoscY = 0.088 --//Szerokosc slotu Y 64 piks
ValEQ.iloscSlotowX = 5 --//Ilosc slotow X ----
ValEQ.iloscSlotowY = 6 --//Ilosc slotow Y \\\
ValEQ.odlegloscX = 0.0125 + ValEQ.szerokoscX --//Odleglosc miedzy slotami X 16 piks
ValEQ.odlegloscY = 0.0222 + ValEQ.wysokoscY --//Odleglosc miedzy slotami Y 16 piks
ValEQ.PlecakGracza = {} --//Przedmioty gracza
ValEQ.waga = 25 --//Maks waga, mozna ja spokojnie zmieniac

--//Tablica z przedmiotami, mozna dodawac nowe indeksy, aby dodac przedmiota dodatkowe wlasciwosci
local EKWIPUNEK = {
{id = 1, nazwa = "Maczeta", waga = 1.5, wartosc="BronReczna", uzycie="Za??? maczet?"},
{id = 2, nazwa = "Siekiera", waga = 1.75, wartosc="BronReczna", uzycie="Za??? siekier?"},
{id = 3, nazwa = "N?? my?liwski", waga = 0.5, wartosc="BronReczna", uzycie="Za??? n??"},
{id = 4, nazwa = "Kij baseballowy", waga = 2, wartosc="BronReczna", uzycie="Za??? kij baseballowy"},
{id = 5, nazwa = "Szpadel", waga = 1, wartosc="BronReczna", uzycie="Za??? szpadel"},
{id = 6, nazwa = "?om", waga = 4, wartosc="BronReczna", uzycie="Za??? ?om"},
{id = 7, nazwa = "Top?r stra?acki", waga = 3.5, wartosc="BronReczna", uzycie="Za??? top?r stra?acki"},
{id = 8, nazwa = "Pi?a spalinowa", waga = 5, wartosc="BronReczna", uzycie="Za??? pi?? spalinow?"},
{id = 9, nazwa = "Ga?nica", waga = 2.5, wartosc="BronReczna", uzycie="Za??? ga?nic?"},
{id = 10, nazwa = "Colt M1911", waga = 1.1, wartosc="Bron", uzycie="Za??? Colt M1911"},
}

--//Tworzymy tablice slotow X
for i = 1, ValEQ.iloscSlotowX do 
      ValEQ.PlecakGracza[i] = {}
end

--//Wypelniamy sloty false == brak przedmiotu
for k,v in pairs( ValEQ.PlecakGracza )do
    for i = 1, ( ValEQ.iloscSlotowX * ValEQ.iloscSlotowY ) do 
        ValEQ.PlecakGracza[k][i] = false
    end
end

function otworzEkwipunek ()
    if ValEQ.otworzonyEQ then
        removeEventHandler( "onClientRender", root, renderujEkwipunek )
        showCursor( false )
        ValEQ.otworzonyEQ = false
        else
        addEventHandler( "onClientRender", root, renderujEkwipunek )
        ValEQ.otworzonyEQ = true
        showCursor( true )
    end    
end
bindKey ( "n", "up", otworzEkwipunek )

--//Sprawdzamy czy w ekwipunku zostaly wolne miejsca
function SprawdzWolneMiejsca ( )
  local liczbaPrzedmiotow = 0
    for k, v in pairs ( ValEQ.PlecakGracza ) do
        for i = 1, ValEQ.iloscSlotowY do
            if ( not ValEQ.PlecakGracza[k][i] == false ) then
                liczbaPrzedmiotow = ( liczbaPrzedmiotow + 1 )
            end
        end
    end
    return liczbaPrzedmiotow 
end

--//Sprawdzamy calkowita wage przedmiotow
function SprawdzWagePrzedmiotow ( )
local wagaPrzedmiotow = 0
    for k, v in pairs ( ValEQ.PlecakGracza ) do
        for i = 1, ValEQ.iloscSlotowY do
            if not ( ValEQ.PlecakGracza[k][i] == false ) then
                    wagaPrzedmiotow = ( wagaPrzedmiotow + ValEQ.PlecakGracza[k][i].waga )
                end
            end
        end
    return wagaPrzedmiotow
end

--//Dodanie przedmiotu client side ( NIE POLECAM )
function dodajPrzedmiot(ID)
    if not (ID == nil) then --// czy mamy id
        if not (#EKWIPUNEK < tonumber(ID)) then --// Czy id nie jest wieksze niz liczba przedmiotow
            if not (EKWIPUNEK[tonumber(ID)].waga > (ValEQ.waga-SprawdzWagePrzedmiotow())) then --//Czy uniesiemy ten przedmiot
                if not (SprawdzWolneMiejsca() == ValEQ.iloscSlotowY*ValEQ.szerokoscX) then --//Czy w ekwipunku jest miejsce
                    for i = 1, ValEQ.iloscSlotowY do 
                        for k, v in pairs ( ValEQ.PlecakGracza ) do
                            if ValEQ.PlecakGracza[k][i] == false then
                                ValEQ.PlecakGracza[k][i] = exports.nowaWartosc:rzad(EKWIPUNEK[tonumber(ID)]) --//Musimy wyeksportowac, aby zmienna przyjela nowe miejsce w pamiec ( nie musisz sie wtedy martwic czy przedmiot nie bedzie mial wlasciwocsci innego przedmiotu )
                                SprawdzWagePrzedmiotow ( ) --//Sprawdzamy wage przedmiotow jeszcze raz, np do rysowania w ekwipunku
                                return true
                            end
                        end
                    end
                    else
                    --//Brak miejsca
                end
                else
                return false
            end
        end
    end
end

function MyszkaNaSlocie(psx,pssx,psy,pssy) --//Sprawdzamy czy kursor jest na slocie
  if not isCursorShowing() then
    return false
  end
  cx,cy = getCursorPosition()
  cx,cy = cx*x,cy*y
  if cx >= psx and cx <= psx+pssx and cy >= psy and cy <= psy+pssy then
    return true,cx,cy
  else
    return false
  end
end    

function renderujEkwipunek ( )
    for k,v in pairs( ValEQ.PlecakGracza )do
        for i=1, ValEQ.iloscSlotowY do
            local h = math.floor(((k*(x*ValEQ.odlegloscX)+x*ValEQ.szerokoscX)) - x * ValEQ.szerokoscX) --//Obliczanie wspolrzednych X
            local d = math.floor(((i*(y*ValEQ.odlegloscY)+y*ValEQ.wysokoscY)) - y * ValEQ.wysokoscY) --//Obliczanie wspolrzednych Y
            dxDrawRectangle( h, d, x*ValEQ.szerokoscX, y*ValEQ.wysokoscY, tocolor ( 0, 0, 0, 150)) --//Rysujemy slot jako prostokat, ale zawsze mozesz uzyc dxDrawImage
            if not ( ValEQ.PlecakGracza[k][i] == false ) then --//Czy w tym miejscu jest przedmiot     
                if MyszkaNaSlocie(h, x*ValEQ.szerokoscX, d, y*ValEQ.wysokoscY) then    --//Czy kursor jest na przedmiocie
                    dxDrawRectangle(h, d, x*ValEQ.szerokoscX, y*ValEQ.wysokoscY, tocolor(255,255,255,100)) --// Rysuj kwadrat nad przedmiotem
                    dxDrawText( ValEQ.PlecakGracza[k][i].nazwa, 900, 500 ) --//Rysuj nazwe przedmiotu
                end
                dxDrawImage ( math.ceil(h), math.ceil(d), (64/1280)*x, (64/720)*y, ValEQ.PlecakGracza[k][i].id..".png" ) --//Rysuj obrazek przedmiotu
            end
        end
    end
end
                            
for i = 1, 10 do 
    dodajPrzedmiot ( i ) --//Dodaj przedmiot
end    


EDIT: edytor na stronie co? pokopa? i zamiast [k][i] to wy?wietla "[i]", WTF? Nie kopiuj kodu z strony, bo nie zadziala

Postaw piwo autorowi tego posta
 

 
Wysłany: 2014-12-29, 11:53


wgnsy123

#PrawaNieObowiązują






Wiek: 27
Na forum: 4773 dni
Posty: 91
Nick w MP: Stephen Mclauglin

Piwa: 109

Respekt: 50

Ostrzeżeń: 20%
Wiesz, bo ja og?lnie troch? zielony w lua, czyta?em o funkacjach, eventach itp.
Ale nie ogarniam jak w?a?nie zrobi? takie interaktywne eq ;p

Podpis
Postaw piwo autorowi tego posta
 

 
Wysłany: 2014-12-29, 12:06


michal982010







Wiek: 30
Na forum: 4586 dni
Posty: 69

Piwa: 1

Respekt: 50

A wiecie mo?e jak zrobi? ?e gdy klikniemy na jaki? item z gridlisty, to b?dzie on ca?y czas zaznaczony ?

Postaw piwo autorowi tego posta
 

 
Wysłany: 2014-12-29, 23:46


Dixers

No-Life






Wiek: 26
Na forum: 4454 dni
Posty: 549
Nick w MP: Dixers

Piwa: 412

Respekt: 56,8

michal982010, stw?rz nowy temat, a nie wbijasz komu? i zadajesz w?asne pytania.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-01-01, 22:37


wgnsy123

#PrawaNieObowiązują






Wiek: 27
Na forum: 4773 dni
Posty: 91
Nick w MP: Stephen Mclauglin

Piwa: 109

Respekt: 50

Ostrzeżeń: 20%
"McDeKi" napisał/a:

Na pocz?tek pobierz ten plik i wrzu? go do resources i odpal przez admin panel lub konsole:
http://www53.zippyshare.com/v/69811139/file.html
p??niej pobierz ten plik i tez wrzuc go do resources i odpal:
http://www75.zippyshare.com/v/42227251/file.html

Obecnie m?j kod na ekwipunek zawiera 4500 linjek ( 3000 klient, 1500 serwer ), ale uda?o mi si? podstawy podstaw zmie?ci? w 139 linijkach, mog? ci poradzi? jak zrobi? drag and drop itd, pisz je?eli b?dziesz czego? potrzebowa?.


--//EQ
local x, y = guiGetScreenSize () 

local ValEQ = { }
ValEQ.otworzonyEQ = false --//Czy ekwipunek jest otworzony
ValEQ.X = 0.2 --//Polozenie ekwipunku X
ValEQ.Y = 0.2 --//Polozenie ekwipunku Y
ValEQ.szerokoscX = 0.05 --//Szerokosc slotu X 64 piks
ValEQ.wysokoscY = 0.088 --//Szerokosc slotu Y 64 piks
ValEQ.iloscSlotowX = 5 --//Ilosc slotow X ----
ValEQ.iloscSlotowY = 6 --//Ilosc slotow Y \\\
ValEQ.odlegloscX = 0.0125 + ValEQ.szerokoscX --//Odleglosc miedzy slotami X 16 piks
ValEQ.odlegloscY = 0.0222 + ValEQ.wysokoscY --//Odleglosc miedzy slotami Y 16 piks
ValEQ.PlecakGracza = {} --//Przedmioty gracza
ValEQ.waga = 25 --//Maks waga, mozna ja spokojnie zmieniac

--//Tablica z przedmiotami, mozna dodawac nowe indeksy, aby dodac przedmiota dodatkowe wlasciwosci
local EKWIPUNEK = {
{id = 1, nazwa = "Maczeta", waga = 1.5, wartosc="BronReczna", uzycie="Za??? maczet?"},
{id = 2, nazwa = "Siekiera", waga = 1.75, wartosc="BronReczna", uzycie="Za??? siekier?"},
{id = 3, nazwa = "N?? my?liwski", waga = 0.5, wartosc="BronReczna", uzycie="Za??? n??"},
{id = 4, nazwa = "Kij baseballowy", waga = 2, wartosc="BronReczna", uzycie="Za??? kij baseballowy"},
{id = 5, nazwa = "Szpadel", waga = 1, wartosc="BronReczna", uzycie="Za??? szpadel"},
{id = 6, nazwa = "?om", waga = 4, wartosc="BronReczna", uzycie="Za??? ?om"},
{id = 7, nazwa = "Top?r stra?acki", waga = 3.5, wartosc="BronReczna", uzycie="Za??? top?r stra?acki"},
{id = 8, nazwa = "Pi?a spalinowa", waga = 5, wartosc="BronReczna", uzycie="Za??? pi?? spalinow?"},
{id = 9, nazwa = "Ga?nica", waga = 2.5, wartosc="BronReczna", uzycie="Za??? ga?nic?"},
{id = 10, nazwa = "Colt M1911", waga = 1.1, wartosc="Bron", uzycie="Za??? Colt M1911"},
}

--//Tworzymy tablice slotow X
for i = 1, ValEQ.iloscSlotowX do 
      ValEQ.PlecakGracza[i] = {}
end

--//Wypelniamy sloty false == brak przedmiotu
for k,v in pairs( ValEQ.PlecakGracza )do
    for i = 1, ( ValEQ.iloscSlotowX * ValEQ.iloscSlotowY ) do 
        ValEQ.PlecakGracza[k][i] = false
    end
end

function otworzEkwipunek ()
    if ValEQ.otworzonyEQ then
        removeEventHandler( "onClientRender", root, renderujEkwipunek )
        showCursor( false )
        ValEQ.otworzonyEQ = false
        else
        addEventHandler( "onClientRender", root, renderujEkwipunek )
        ValEQ.otworzonyEQ = true
        showCursor( true )
    end    
end
bindKey ( "n", "up", otworzEkwipunek )

--//Sprawdzamy czy w ekwipunku zostaly wolne miejsca
function SprawdzWolneMiejsca ( )
  local liczbaPrzedmiotow = 0
    for k, v in pairs ( ValEQ.PlecakGracza ) do
        for i = 1, ValEQ.iloscSlotowY do
            if ( not ValEQ.PlecakGracza[k][i] == false ) then
                liczbaPrzedmiotow = ( liczbaPrzedmiotow + 1 )
            end
        end
    end
    return liczbaPrzedmiotow 
end

--//Sprawdzamy calkowita wage przedmiotow
function SprawdzWagePrzedmiotow ( )
local wagaPrzedmiotow = 0
    for k, v in pairs ( ValEQ.PlecakGracza ) do
        for i = 1, ValEQ.iloscSlotowY do
            if not ( ValEQ.PlecakGracza[k][i] == false ) then
                    wagaPrzedmiotow = ( wagaPrzedmiotow + ValEQ.PlecakGracza[k][i].waga )
                end
            end
        end
    return wagaPrzedmiotow
end

--//Dodanie przedmiotu client side ( NIE POLECAM )
function dodajPrzedmiot(ID)
    if not (ID == nil) then --// czy mamy id
        if not (#EKWIPUNEK < tonumber(ID)) then --// Czy id nie jest wieksze niz liczba przedmiotow
            if not (EKWIPUNEK[tonumber(ID)].waga > (ValEQ.waga-SprawdzWagePrzedmiotow())) then --//Czy uniesiemy ten przedmiot
                if not (SprawdzWolneMiejsca() == ValEQ.iloscSlotowY*ValEQ.szerokoscX) then --//Czy w ekwipunku jest miejsce
                    for i = 1, ValEQ.iloscSlotowY do 
                        for k, v in pairs ( ValEQ.PlecakGracza ) do
                            if ValEQ.PlecakGracza[k][i] == false then
                                ValEQ.PlecakGracza[k][i] = exports.nowaWartosc:rzad(EKWIPUNEK[tonumber(ID)]) --//Musimy wyeksportowac, aby zmienna przyjela nowe miejsce w pamiec ( nie musisz sie wtedy martwic czy przedmiot nie bedzie mial wlasciwocsci innego przedmiotu )
                                SprawdzWagePrzedmiotow ( ) --//Sprawdzamy wage przedmiotow jeszcze raz, np do rysowania w ekwipunku
                                return true
                            end
                        end
                    end
                    else
                    --//Brak miejsca
                end
                else
                return false
            end
        end
    end
end

function MyszkaNaSlocie(psx,pssx,psy,pssy) --//Sprawdzamy czy kursor jest na slocie
  if not isCursorShowing() then
    return false
  end
  cx,cy = getCursorPosition()
  cx,cy = cx*x,cy*y
  if cx >= psx and cx <= psx+pssx and cy >= psy and cy <= psy+pssy then
    return true,cx,cy
  else
    return false
  end
end    

function renderujEkwipunek ( )
    for k,v in pairs( ValEQ.PlecakGracza )do
        for i=1, ValEQ.iloscSlotowY do
            local h = math.floor(((k*(x*ValEQ.odlegloscX)+x*ValEQ.szerokoscX)) - x * ValEQ.szerokoscX) --//Obliczanie wspolrzednych X
            local d = math.floor(((i*(y*ValEQ.odlegloscY)+y*ValEQ.wysokoscY)) - y * ValEQ.wysokoscY) --//Obliczanie wspolrzednych Y
            dxDrawRectangle( h, d, x*ValEQ.szerokoscX, y*ValEQ.wysokoscY, tocolor ( 0, 0, 0, 150)) --//Rysujemy slot jako prostokat, ale zawsze mozesz uzyc dxDrawImage
            if not ( ValEQ.PlecakGracza[k][i] == false ) then --//Czy w tym miejscu jest przedmiot     
                if MyszkaNaSlocie(h, x*ValEQ.szerokoscX, d, y*ValEQ.wysokoscY) then    --//Czy kursor jest na przedmiocie
                    dxDrawRectangle(h, d, x*ValEQ.szerokoscX, y*ValEQ.wysokoscY, tocolor(255,255,255,100)) --// Rysuj kwadrat nad przedmiotem
                    dxDrawText( ValEQ.PlecakGracza[k][i].nazwa, 900, 500 ) --//Rysuj nazwe przedmiotu
                end
                dxDrawImage ( math.ceil(h), math.ceil(d), (64/1280)*x, (64/720)*y, ValEQ.PlecakGracza[k][i].id..".png" ) --//Rysuj obrazek przedmiotu
            end
        end
    end
end
                            
for i = 1, 10 do 
    dodajPrzedmiot ( i ) --//Dodaj przedmiot
end    


EDIT: edytor na stronie co? pokopa? i zamiast [k][i] to wy?wietla "[i]", WTF? Nie kopiuj kodu z strony, bo nie zadziala



A je?eli projektujemy jakby dodatek do inventory od DayZ, to trzeba tam dodawa? przedmioty z nazwami jakie s? w grze? Jak to zrobi?, ?e je?eli mamy M1911 og?lnie w DayZ, to jak to podpi?? pod Tw?j kod?

Najlepiej, je?eli poda?by? mi Twojego skype, nie robi?c spamu.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-01-02, 01:23


Gamber







Wiek: 29
Na forum: 4932 dni
Posty: 11

Piwa: 36

Respekt: 50

https://wiki.multitheftauto.com/wiki/Main_Page - przydatne, na 80% twoich pyta? tam znajdziesz odpowied?.

Postaw piwo autorowi tego posta
 

 
Tagi: projektowanie :: ekwipunku
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » LUA » Projektowanie ekwipunku 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