Jump to content

Recommended Posts

Witam!

Mam problemik. Chiałem na dole ekranu zrobić sobię belkę w dx...niestety niedziałała. Zrobiłem sobie obraz belki i chciałem to zrobić jako image tak jak jest w gui i na tym zrobic labelki ale też niedziała.

Mój skrypt na belke w gui wygląda tak:

czcionka = guiCreateFont("freshman.ttf", 12) 
  
local gracz = getPlayerName(getLocalPlayer()) 
  
addEventHandler("onClientRender",resourceRoot, 
    function() 
         
        Belka = {} 
        Nick = {} 
        Score = {} 
        Pieniadze = {} 
         
        Belka[1] = guiCreateStaticImage(0,0.9385,0.9992,0.0605,"belka_dolna.png",false) 
        Nick[1] = guiCreateLabel(124,12,358,50,"Nick: "..tostring(gracz)"",false,Belka[1]) 
        guiSetFont(Nick[1],"czcionka") 
        Score[1] = guiCreateLabel(472,12,358,50,"Score: "..getElementData("Score")"",false,Belka[1]) 
        guiSetFont(Score[1],"czcionka") 
        Pieniadze[1] = guiCreateLabel(802,12,477,50,"Pieniadze: "..getPlayerMoney()" $",false,Belka[1]) 
        guiSetFont(Pieniadze[1],"czionka") 
end) 

Meta:

    "MACIEKW89" version="1.0" type="script" name="Belka" description="Belka na dole ekranu....takie info o graczu..." /> 
  
    "belka_dolna.png" /> 
    "freshman.ttf" type="client" /> 
    

Te pliki mam w folderze "gracz" (belka_dolna.png , freshman.ttf , gracz_info_c.lua , meta.xml).

Skrypt na dx usunęłem niestety. Z powyższym skryptem proszę o pomoc. Zero błedów w debugu a belka się niewyświetla. Z góry thx.

Link to comment

Edit:

Do polskiej sekcji zagląda ok 5-10 użytkowników dziennie i raczej jest dla ludzi, którzy nie radzą sobie z angielskim

@MACIEK

Nie używa się. W tym momencie CO KAŻDĄ KLATKĘ GRY tworzysz kilka labeli i obrazków. W sekundę tworzysz ok. 30x4 = 120 elementów!!!

Wywal to.

A obrazek tworzysz o szerokości mniej niż jednego piksela (wysokość tak samo) - sprawdź wiki i parametr relative. W dodatku masz literówki w skrypcie, w guiSetFont podajesz parametr jako string.

I nie kojarzę już jak to działa, ale jeżeli MTA usuwa element GUI po utworzeniu takiego samego do tej samej zmiennej - to elementu GUI może nie być widać dlatego, że utworzenie GUI na bibliotece do GUI trwa parę klatek - skoro co każdą klatkę tworzysz nowy to po prostu nie zdąży się pojawić.

Link to comment

Hehe...temat można zamknąć, jeżeli zamykacie.

EDIT.

Mam nowy kod z pomocą ang i Creative dalej niedziała już błedów w debugu niema. Błagam pomóżcie.

local czcionka = guiCreateFont("freshman.ttf", 12) 
local player1= getLocalPlayer() 
Belka = {} 
Nick = {} 
Score = {} 
Pieniadze = {} 
  
  
    Belka[1] = guiCreateStaticImage(0,0.9385,0.9992,0.0605,"belka_dolna.png",false) 
    Nick[1] = guiCreateLabel(124,12,358,50,"",false,Belka[1]) 
    guiSetFont( Nick[1],czcionka ) 
    Score[1] = guiCreateLabel(472,12,358,50,"Score: ",false,Belka[1]) 
    guiSetFont( Score[1],czcionka ) 
    Pieniadze[1] = guiCreateLabel(802,12,477,50,"Pieniadze: $",false,Belka[1]) 
    guiSetFont( Pieniadze[1],czcionka ) 
  
  
  
function set1() 
    local gracz = getPlayerName ( player1) 
    local score = getElementData ( localPlayer,"Score" ) 
    local kasa = getPlayerMoney ( player1) 
    guiSetText ( Nick[1],"Nick: "..gracz.."") 
    guiSetText ( Score[1],"Score: "..score.."" ) 
    guiSetText ( Pieniadze[1],"Pieniadze: "..kasa.." $") 
 end 
 addEventHandler ( "onClientRender", getRootElement(), set1 ) 

Link to comment

Będę się kłócił bo tak mi podał Castillo....

A dokładniej tak:

addEventHandler ( "onClientResourceStart", resourceRoot, 
    function ( ) 
        font = guiCreateFont ( "freshman.ttf", 12 ) 
        Board = {} 
        Nick = {} 
        Score = {} 
        Money = {} 
  
        Board[1] = guiCreateStaticImage(0,0.9385,0.9992,0.0605,"belka_dolna.png",false) 
        Nick[1] = guiCreateLabel(124,12,358,50,"",false,Board[1]) 
        guiSetFont(Nick[1],font) 
        Score[1] = guiCreateLabel(472,12,358,50,"",false,Board[1]) 
        guiSetFont(Score[1],font) 
        Money[1] = guiCreateLabel(802,12,477,50,"",false,Board[1]) 
        guiSetFont(Money[1],font) 
  
        addEventHandler ( "onClientRender", root, render ) 
    end 
) 
  
  
function render ( ) 
    guiSetText ( Nick [ 1 ], "Nick: ".. getPlayerName ( localPlayer ) ) 
    guiSetText ( Score [ 1 ], "Score: ".. tostring ( getElementData ( localPlayer, "Score" ) ) ) 
    guiSetText ( Money [ 1 ], "Money: $".. getPlayerMoney ( ) ) 
end 

Dalej uważasz, że się rendera nieużywa w GUI? ...

Ja mam głęboko w 4 literach co wy mi tu napiszecie... chcę tylko pomocy z tą belką. A żeby sprawdzał i co chwile ustawiał nick score i kase trzeba rendera.

Link to comment

Pierwszy raz się z czymś takim spotykam, ale jak tam wolisz, tylko wiedz, że będziesz miał problemy z lagami jak będzie więcej graczy, a co do stałego aktualizowania danych powinieneś prędzej użyć dxDrawText, ponieważ w tej sprawie jest wydatniejsze ;) ( i jak tego użyjesz, będzie poprawnie funkcjonowało z onClientRender )

Link to comment

AKTUALIZACJA tekstu w GUI co każdą klatkę MA SENS.

TWORZENIE NOWEGO GUI z każdą nową klatką jest pozbawione jakiegokolwiek sensu.

Jeżeli nie używasz funkcji dx i masz zwykłe GUI to ja bym wrzucił to w setTimer z opóźnieniem 50ms - różnica w zasadzie niezauważalna, a ok 2-3x mniej operacji do liczenia (zupełnie nieskomplikowane operacje, ale gdy się serwer rozrasta - każda optymalizacja może być na wagę złota)

Link to comment

Dobra dzięki Mefisto_PL . Zrobiłem w DX z pomocą Castillo belka się pojawia już zrobiłem żeby ustawiało nick bez color code i pieniądze ...niestety niedziała score cały czas jest 0.

addEventHandler ( "onClientRender", root, 
    function ( ) 
        local it = getPlayerName ( localPlayer ):gsub ( "#%x%x%x%x%x%x", "" ) 
        local score = tostring ( tonumber ( getElementData ( localplayer, "Score" ) ) or 0 ) 
        local money = tostring ( getPlayerMoney ( ) ) 
        dxDrawRectangle(0, 725, 1024, 43, tocolor(0, 155, 255, 160), true) 
        dxDrawText("Nick:"..it, 90, 730, 362, 759, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "bottom", false, false, true, false, false) 
        dxDrawText("Nick:"..it, 90, 728, 362, 757, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "bottom", false, false, true, false, false) 
        dxDrawText("Nick:"..it, 88, 730, 360, 759, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "bottom", false, false, true, false, false) 
        dxDrawText("Nick:"..it, 88, 728, 360, 757, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "bottom", false, false, true, false, false) 
        dxDrawText("Nick:"..it, 89, 729, 361, 758, tocolor(255, 255, 255, 255), 1.00, "pricedown", "left", "bottom", false, false, true, false, false) 
        dxDrawText("Score:"..score, 367, 730, 639, 759, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "bottom", false, false, true, false, false) 
        dxDrawText("Score:"..score, 367, 728, 639, 757, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "bottom", false, false, true, false, false) 
        dxDrawText("Score:"..score, 365, 730, 637, 759, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "bottom", false, false, true, false, false) 
        dxDrawText("Score:"..score, 365, 728, 637, 757, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "bottom", false, false, true, false, false) 
        dxDrawText("Score:"..score, 366, 729, 638, 758, tocolor(255, 255, 255, 255), 1.00, "pricedown", "left", "bottom", false, false, true, false, false) 
        dxDrawText("Money:"..money.."$", 643, 730, 915, 759, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "bottom", false, false, true, false, false) 
        dxDrawText("Money:"..money.."$", 643, 728, 915, 757, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "bottom", false, false, true, false, false) 
        dxDrawText("Money:"..money.."$", 641, 730, 913, 759, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "bottom", false, false, true, false, false) 
        dxDrawText("Money:"..money.."$", 641, 728, 913, 757, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "bottom", false, false, true, false, false) 
        dxDrawText("Money:"..money.."$", 642, 729, 914, 758, tocolor(255, 255, 255, 255), 1.00, "pricedown", "left", "bottom", false, false, true, false, false) 
    end 
) 

Castillo narazie nieodpisuje..pewnie niema czasu...pomożecie? Przepraszam za moje zachowanie...charakter po tatusiu :D

Link to comment

To po stronie serwera może dlatego niedziala w belce?

function Rejestruj_Server(gracz,username, password) 
    local account = getAccount(username, password) 
    if (account ~= false) then 
    outputChatBox("Takie konto juz istnieje.",gracz,255,0,0) 
    else 
            account = addAccount(username, password) 
            setElementData(gracz,"konto_login",username) 
            givePlayerMoney( gracz, 5000 ) 
            setAccountData(account,"cash",5000) 
            setAccountData(account,"score",1) 
            setElementData(gracz,"Score",1) 
            outputChatBox("Pomyślnie zarejestrowano konto",gracz,255,20,255) 
            outputChatBox("Witaj!Jesteś nowy?Przeczytaj informacje pod klawiszem 'F9'",gracz,true,255,20,255) 
  
    end 
end 
addEvent("submitRegister",true) 
addEventHandler("submitRegister",getRootElement(),Rejestruj_Server) 

Reszty niedam bo się boję :D

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...