MACIEKW89 Posted July 8, 2013 Share Posted July 8, 2013 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
Mefisto_PL Posted July 8, 2013 Share Posted July 8, 2013 czemu masz onClientRender w gui? tego się do dx'a używa Link to comment
dzek (varez) Posted July 8, 2013 Share Posted July 8, 2013 Nie zawiesza Ci ten kod MTA? To chyba jakiś dobry garbage collector + zastępowanie gui jeżeli już jest jakieś pod daną zmienną Zdefniniuj "nie działa". debugscript sprawdzałeś? Link to comment
MACIEKW89 Posted July 8, 2013 Author Share Posted July 8, 2013 @Mefisto_PL ...używa sie też do zwykłego gui.. @dzek(varez): debugscript sprawdzałeś? Zero błedów w debugu a belka się niewyświetla. MTA mi się niezawiesza. Pomożecie? Link to comment
MACIEKW89 Posted July 8, 2013 Author Share Posted July 8, 2013 Dziękuję bardzo dostałem odpowiedź po 10 min na forum Angielskim. Link to comment
dzek (varez) Posted July 8, 2013 Share Posted July 8, 2013 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
MACIEKW89 Posted July 8, 2013 Author Share Posted July 8, 2013 Mówię, że już mi pomogli. Dzięki za chęci. Link to comment
dzek (varez) Posted July 8, 2013 Share Posted July 8, 2013 Napisałeś w trakcie jak ja kończyłem swoją wypowiedź to wysłałem Link to comment
MACIEKW89 Posted July 8, 2013 Author Share Posted July 8, 2013 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
Mefisto_PL Posted July 9, 2013 Share Posted July 9, 2013 addEventHandler ( "onClientRender", getRootElement(), set1 ) kłóć się dalej. Link to comment
MACIEKW89 Posted July 10, 2013 Author Share Posted July 10, 2013 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
Mefisto_PL Posted July 10, 2013 Share Posted July 10, 2013 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
MACIEKW89 Posted July 10, 2013 Author Share Posted July 10, 2013 Wiem, że lagować będzie ale teraz niechce mi się już tego zmieniać...chyba, że pomożecie to to szybko zrobie w dx...to jak? Link to comment
dzek (varez) Posted July 10, 2013 Share Posted July 10, 2013 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
MACIEKW89 Posted July 11, 2013 Author Share Posted July 11, 2013 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 Link to comment
Mefisto_PL Posted July 11, 2013 Share Posted July 11, 2013 local score = getElementData ( localPlayer, "Score" ) local money = getPlayerMoney ( localPlayer ) W tych zmiennych masz już zdefiniowane liczby, więc po co chcesz liczby na liczby przerabiać? Link to comment
MACIEKW89 Posted July 11, 2013 Author Share Posted July 11, 2013 Sprawdze...aa z money mam tak jak napisałeś bo mi to działa i nieużywam tego tostring...to ja zw Link to comment
MACIEKW89 Posted July 11, 2013 Author Share Posted July 11, 2013 Niedziała W debugu bad argument z getElementData 1 i score a boolean value Link to comment
MACIEKW89 Posted July 11, 2013 Author Share Posted July 11, 2013 Jak to zmieniłem to została belka i Nick, score i kasa zniknęły. Potrzebuje też zrobić żeby każdy widział belkę tak jak ja...pomożesz? Link to comment
Mefisto_PL Posted July 11, 2013 Share Posted July 11, 2013 Jeśli masz zdefiniowaną "datę" score to nie powinieneś mieć tego problemu. Pokaż mi kod, gdzie stworzyłeś score. Link to comment
MACIEKW89 Posted July 11, 2013 Author Share Posted July 11, 2013 W panelu logowania po rejestracji ustawia score na 1 Link to comment
MACIEKW89 Posted July 11, 2013 Author Share Posted July 11, 2013 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ę Link to comment
Mefisto_PL Posted July 11, 2013 Share Posted July 11, 2013 setAccountData(account,"score",1) setElementData(gracz,"Score",1) Czemu masz jedno z dużej, drugie z małej? Link to comment
MACIEKW89 Posted July 11, 2013 Author Share Posted July 11, 2013 Żeby nie było to samo 2 razy...to i tak nic niezmienia. Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now