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

Wysłany: 2015-09-04, 19:48


ZlodziejPralek







Wiek: 29
Na forum: 4024 dni
Posty: 17



Respekt: 50

Siemaneczko :] Ostatnio zacz??em robi? sklep z broni? (co? czego nie robi?em, jaki? wi?kszy skrypt) i napotka?em par? problem?w, a mianowicie utworzy?em combobox z kategoriami broni oraz gridlist ze spisem aktualnie sprzedawanych oraz dwa labele "CENA" oraz "warto?? np. 100$ (to tylko przyk?ad, standardowo nie ma tam nic ma si? uzupe?ni? dopiero wtedy kiedy gracz wybierze dan? bro? z listy). Problem pojawi? si? na samym pocz?tku, poniewa? mamy tylko jedn? gridliste (ju? uzupe?nion? o bronie z pierwszej kategorii), ale trzeba zmienia? liste broni co zmiane kategorii, po cz??ci go rozwi?za?em poni?ej podam jak i my?l?, ?e skrypt powinien dzia?a? bez zastrze?e?.

Kod:

addEventHandler("onClientGUIComboBoxAccepted", guiRoot,
function(comboBox)

categoryweapon = guiCreateComboBox(165, 38, 158, 341, "Bro? ci??ka", false, weaponpanel)
guiComboBoxAddItem(categoryweapon, "Bro? bia?a")
guiComboBoxAddItem(categoryweapon, "Bro? lekka")
guiComboBoxAddItem(categoryweapon, "Bro? ci??ka")
guiComboBoxAddItem(categoryweapon, "Bro? precyzyjnego ra?enia")
guiComboBoxAddItem(categoryweapon, "Materia?y wybuchowe")
guiComboBoxAddItem(categoryweapon, "Bro? specjalna I")
guiComboBoxAddItem(categoryweapon, "Bro? specjalna II")
guiComboBoxAddItem(categoryweapon, "Przedmioty")
guiComboBoxSetSelected(combobox,0)

local selected = guiComboBoxGetSelected(categoryweapon)
local list1 = "Bro? bia?a"
local list2 = "Bro? lekka"
local list3 = "Bro? ci??ka"
local list4 = "Bro? precyzyjnego ra?enia"
local list5 = "Materia?y wybuchowe"
local list6 = "Bro? specjalna I"
local list7 = "Bro? specjalna II"
local list8 = "Przedmioty"
if (comboBox == categoryweapon and list1) then
local listone = WeaponListOne or nil
if selected and listone then
weaponlist = guiCreateGridList(10, 38, 145, 341, false, weaponpanel)
guiGridListAddColumn(weaponlist, "Nazwa", 0.9)
for k,v in ipairs(listone) do
local weaponname = guiGridListAddRow(weaponlist)
guiGridListSetItemText(weaponlist, weaponname, 0, v[0], false, false)
guiGridListSetItemText(weaponlist, weaponname, 1, v[1], false, false)
guiGridListSetItemText(weaponlist, weaponname, 2, v[2], false, false)
guiGridListSetItemText(weaponlist, weaponname, 3, v[3], false, false)
guiGridListSetItemText(weaponlist, weaponname, 4, v[4], false, false)
guiGridListSetItemText(weaponlist, weaponname, 5, v[5], false, false)
guiGridListSetItemText(weaponlist, weaponname, 6, v[6], false, false)
guiGridListSetItemText(weaponlist, weaponname, 7, v[7], false, false)
weaponprice = guiCreateLabel(-20, 399, 129, 40, "CENA :", false, weaponpanel)
guiSetFont(weaponprice, "default-bold-small")
guiLabelSetHorizontalAlign(weaponprice, "center", false)
guiLabelSetVerticalAlign(weaponprice, "center")
numprice = guiCreateLabel(50, 399, 115, 40, "", false, weaponpanel)
guiSetFont(numprise, "default-bold-small")
guiLabelSetColor(numprice, 183, 0, 0)
guiLabelSetHorizontalAlign(numprice, "center", false)
guiLabelSetVerticalAlign(numprice, "center")
end
end
end
if (comboBox == categoryweapon and list2) then
destroyElement(weaponlist)
local listtwo = WeaponListTwo
if selected and listtwo then
weaponlist2 = guiCreateGridList(10, 38, 145, 341, false, weaponpanel)
guiGridListAddColumn(weaponlist2, "Nazwa", 0.9)
for k,v in ipairs(listtwo) do
local weaponname2 = guiGridListAddRow(weaponlist2)
guiGridListSetItemText(weaponlist2, weaponname2, 0, v[0], false, false)
guiGridListSetItemText(weaponlist2, weaponname2, 1, v[1], false, false)
guiGridListSetItemText(weaponlist2, weaponname2, 2, v[2], false, false)
guiGridListSetItemText(weaponlist2, weaponname2, 3, v[3] , false, false)
guiGridListSetItemText(weaponlist2, weaponname2, 4, v[4], false, false)
guiGridListSetItemText(weaponlist2, weaponname2, 5, v[5], false, false)
guiGridListSetItemText(weaponlist2, weaponname2, 6, v[6], false, false)
guiGridListSetItemText(weaponlist2, weaponname2, 7, v[7], false, false)
weaponprice = guiCreateLabel(-20, 399, 129, 40, "CENA :", false, weaponpanel)
guiSetFont(weaponprice, "default-bold-small")
guiLabelSetHorizontalAlign(weaponprice, "center", false)
guiLabelSetVerticalAlign(weaponprice, "center")
numprice = guiCreateLabel(50, 399, 115, 40, "", false, weaponpanel)
guiSetFont(numprise, "default-bold-small")
guiLabelSetColor(numprice, 183, 0, 0)
guiLabelSetHorizontalAlign(numprice, "center", false)
guiLabelSetVerticalAlign(numprice, "center")
end
end
end


Jest to tylko skrawek kodu, poniewa? kategorii jest 8 (ponad 200 linijek kodu + jest to dopiero pocz?tek skryptu). Je?eli mo?ecie przeanalizujcie go i powiedzcie mi czy takie rozwi?zanie jest dobre, czy te? nie mo?na takowego u?y?. Je?eli kto? ma lepszy pomys? m?g?by go tutaj zaprezentowa?. Dodam, ?e pod ka?d? kategorie s? zrobione tablice (w sumie jest ich 8).

Je?eli takie rozwi?zanie jest dobre to prosz? o pomoc w rozwi?zaniu takiego problemu jakim jest nadpisanie tego
Kod:

numprice = guiCreateLabel(50, 399, 115, 40, "", false, weaponpanel)


tak, aby po wybraniu danej broni z listy podawa?o jej cene w tym przypadku warto?? v[0] w broni bia?ej to "Kastet" oraz w broni lekkiej "Colt 45".

Mam nadziej?, ?e zrozumieli?cie co? z tego co napisa?em :]

Z g?ry dzi?kuje :)

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-09-04, 22:13


Kurczak23







Wiek: 32
Na forum: 5032 dni
Posty: 30

Piwa: 499

Respekt: 115,3
Respekt: 115,3

 cena string.format("%d $"tonumber(v[liczba])) -- gdzie liczba to podmien sobie ktora z tabeli to cena
numprice guiCreateLabel(5039911540cenafalseweaponpanel)


Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-09-05, 10:52


#404







Wiek: 26
Na forum: 4771 dni
Posty: 1438

Piwa: 2512

Respekt: 833,5
Respekt: 833,5Respekt: 833,5

Ostrzeżeń: 60%
Kurczak23, opr?cz tego, b?dzie potrzebowa? eventu

Więcej informacji znajdziesz w Wikipedii MTA:

onClientGUIClick

I jezeli jest to combobox
Albo ten event co ju? stosuje:

Więcej informacji znajdziesz w Wikipedii MTA:

onClientGUIComboBoxAccepted


Oraz ponowne ustawienie tekstu na label'u, poniewaz w porownaniu do dx'ow elementy GUI same si? nie "odswiezaj?".


Więcej informacji znajdziesz w Wikipedii MTA:

guiSetText


Postaw piwo autorowi tego posta
 

 
Tagi: zmiana :: ceny :: podpięta :: pod :: label.
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