Problem z dialogiem (combobox)

Moderator: Inkwizytor

ODPOWIEDZ
Awatar użytkownika
Trance
Posty: 1090
Rejestracja: 20 maja 2007, 19:06
ID Steam:
ID gracza: 0

Problem z dialogiem (combobox)

Post autor: Trance »

Witam!
Kolejny raz zmuszony jestem poprosic Was o pomoc przy pewnym skrypcie.
Chodzi o to, ze mam sobie pewien skrypt, ktory odpala sie u kazdego gracza na komputerze, a jedo tresc wyglada tak:
createDialog "DIALOG1";
if (player in west_a) then
{
_index1 = lbAdd [301, "M4A1"];
lbSetValue [301,_index1,0];
lbSetCurSel [301, 0];
_index2 = lbAdd [301, "M16A4_ACG"];
lbSetValue [301,_index2,1];
_index3 = lbAdd [301, "M4A1GL"];
lbSetValue [301,_index3,2];
_index4 = lbAdd [301, "M240"];
lbSetValue [301,_index4,3];
};

if (player in west_pp) then
{
_index1 = lbAdd [301, "M4A1"];
lbSetValue [301,_index1,0];
lbSetCurSel [301, 0];
_index2 = lbAdd [301, "M16A4_ACG"];
lbSetValue [301,_index2,1];
_index3 = lbAdd [301, "M4A1GL"];
lbSetValue [301,_index3,2];
_index4 = lbAdd [302, "M136"];
lbSetValue [302,_index4,0];
lbSetCurSel [302, 0];
_index5 = lbAdd [302, "Stinger"];
lbSetValue [302,_index5,1];
};
exitWith;
Zadaniem skryptu jest dodanie odpowiednich typow broni do pola wyboru w zaleznosci od przynaleznosci gracza do ktorejs z dwoch grup (domyslnie ma byc ich wiecej).
Problem w tym, ze w momencie kiedy gracz wybierze dowolna opcje z menu i uruchamia przyciskiem inny skrypt, ktory sprawdza wartosc indeksu wybranej opcji, wartosc ta zawsze wynosi -1 i nie odnosi sie w zaden sposob do wprowadzanych przeze mnie w powyzszym skrypcie danych.
Moglby mi ktos wyjasnic gdzie popelniam w skrypcie blad?
Z gory dziekuje Trance.
Obrazek
gremdek
Posty: 261
Rejestracja: 13 grudnia 2006, 16:53
ID Steam:

Re: Problem z dialogiem (combobox)

Post autor: gremdek »

te indeksy chyba są zapamiętywane tylko kiedy ten dialog jest na samym szczycie dialogow.
moze tym przyciskiem przekaż wartość tego indeksu do funkcji. chociaz ja mam jeden skrypt co działa dobrze bez przekazywania.

tak dodaje w jednym skrypcie:
{_index = lbAdd [902, _x]; lbSetData [902, _index, _x]} forEach _inventory;
gdzie to inventory to tablica stringow.

tak pobieram w innym:
_przedmiot = lbData [902, lbCurSel 902]
cfog skończył się na kill'em all
Awatar użytkownika
Trance
Posty: 1090
Rejestracja: 20 maja 2007, 19:06
ID Steam:
ID gracza: 0

Re: Problem z dialogiem (combobox)

Post autor: Trance »

Witam. Poczatkowo rozwiazanie, ktore przedstawił mi gremdek nie dzialalo u mnie.
Podobnie moj poprzedni problem z petla "for" i tablicami, takze i ten byl spowodowany przez cos zupelnie innego.
Otoz, w ktoryms ze skryptow odpalanych przez eventHandler dodawalem, wedlug zwyczaju nabytego przez przegladanie skryptow dawnego ECLa, cos takiego, ze po smierci kazdego gracza wykonywała sie nastepujaca komenda:
updateclient = player; publicVariable "updateclient";
Usuniecie tej linijki kodu naprawilo wszystkie pojawiajace sie problemy.
Serdecznie dziekuje wszystkim zainteresowanym tematem za pomoc.
Obrazek
Awatar użytkownika
Trance
Posty: 1090
Rejestracja: 20 maja 2007, 19:06
ID Steam:
ID gracza: 0

Re: Problem z dialogiem (combobox)

Post autor: Trance »

Witam. Jednak temat nie dał sie tak szybko zamknąc.
Jednak publikowanie gracza nie było przyczyna. Pieknie dzialalo przez 2 uruchomienia, a potem bez zmiany niczego w skryptach poprostu sie samo zepsuło.
Wiec proszac Was o pomoc, zaczne od poczatku.
Mam tablice z nazwami broni:
west_guns = ["M4A1","M16A2"];
Jest skrypt o nazwie: dialog.sqf, uruchamiany po kazdorazowej smierci gracza.
_dial = createDialog "DIALOG";
for "_i" from 1 to (count west_guns) do
{
_index = lbAdd [301, (west_guns select (_i-1))]; lbSetValue [301, _index, (_i-1)];
};
exitWith;
Tutaj działa pięknie, bo bronie sa dodawane ładnie w menu wyboru.
Po kliknieciu w przycisk RESPAWN uruchamiany jest skrypt:
_liczba = lbCurSel 301;
removeAllWeapons player;
player addWeapon (west_guns select _liczba);
...
Jak sprawdzielem, moja _liczba zawsze rowna sie (-1), co prowadzi do tego, ze niezaleznie od wyboru w comboboxie wybierany jest pierwszy element z tablicy west_guns.
Ma ktos pomysł co z tym skryptem, a własciwie skryptami jest nie tak jak trzeba?
Z gory dzieki za pomoc.
Obrazek
Awatar użytkownika
aszek
Posty: 133
Rejestracja: 11 lipca 2008, 06:17
ID Steam:
Numer GG: 8568774
ID gracza: 0

Re: Problem z dialogiem (combobox)

Post autor: aszek »

a findDisplay w drugim skrypcie jest ?
"True glory consists in doing what deserves to be written, in writing what deserves to be read." - Pliny The Elder
Awatar użytkownika
Trance
Posty: 1090
Rejestracja: 20 maja 2007, 19:06
ID Steam:
ID gracza: 0

Re: Problem z dialogiem (combobox)

Post autor: Trance »

Nie ma, ale w jakim celu tego uzywac? Przycisk RESPAWN w menu powoduje otwarcie skryptu drugiego i w parametrach podane ma wszystkie potrzebne zmienne. To nie wystarczy?
A jezeli nie wystarczy to jak miałbym tego uzyc? Poprostu wklepac:
_wyswietlacz = findDisplay 1;
na poczatku drugiego skryptu?
Obrazek
Awatar użytkownika
aszek
Posty: 133
Rejestracja: 11 lipca 2008, 06:17
ID Steam:
Numer GG: 8568774
ID gracza: 0

Re: Problem z dialogiem (combobox)

Post autor: aszek »

No widzisz, a skąd mam to wiedzieć ? Dałeś kawałek kodu i dziwisz się gdzie może być błąd - kto zgadnie ? Idzie weekend więc przyda się browar ! :)

_wyswietlacz = findDisplay 1;

_wyswietlacz jest lokalny w jednym i w drugim skrypcie. Działać to napewno nie będzie. Argumentem finddisplay jest IDC, albo IDD - mylą mi się Controlki z Dialogami - ala raczej IDD. No więc argumentem FF jest IDD z klasy dialogu. ALE ! Przecież niszczysz dialog wychodząc ze skryptu, więc FF nic Ci nie znajdzie. Więc albo wrzucisz wybraną wartość lbCurSel do zmiennej publicznej, aby przepiszesz wybrane zabawki wojakowi do tablicy publiczej - inaczej nic z tego.
"True glory consists in doing what deserves to be written, in writing what deserves to be read." - Pliny The Elder
Awatar użytkownika
Trance
Posty: 1090
Rejestracja: 20 maja 2007, 19:06
ID Steam:
ID gracza: 0

Re: Problem z dialogiem (combobox)

Post autor: Trance »

No tablica ze sprzetem jest zmienna globalna.
Ale to dalej nie działa.
Ten fragment kodu, ktory wkleilem to jest czesc odpowiedzialna za wszystko z czym jest problem, reszta skryptu to sa juz jakies hinty i zabawy, nic zwiazanego z dzialaniem tego mechanizmu.

Dlatego prosiłbym o dalsze wskazówki...

Pozdrawiam - Trance
Obrazek
Awatar użytkownika
kondor
Posty: 1526
Rejestracja: 13 marca 2007, 11:50
ID Steam: Przemek_kondor
Kontakt:

Re: Problem z dialogiem (combobox)

Post autor: kondor »

Gdy ja robiłem coś podobnego, to po prostu pod akcję buttona przypisywałem wywołanie skryptu z parametrami:

Kod: Zaznacz cały

//tworznie dialogu, dodawanie broni
...
//set button action
_action = " _ctrlCombo = (findDisplay KNDR_WPN_PATTERN_DLG) displayCtrl KNDR_WPN_COMBO; ";
_action = _action + " [_ctrlCombo lbValue (lbCurSel _ctrlCombo)] call ptr_set_weapon; ";
_action = _action + " closeDialog KNDR_WPN_PATTERN_DLG ";
buttonSetAction [KNDR_WPN_BUTTON, _action];
i wówczas skrytpt umieszczony w zmiennej ptr_set_weapon otrzyma ten indeks w parametrze

Powinieneś zamienić:
-KNDR_WPN_PATTERN_DLG na idd dialogu
-KNDR_WPN_COMBO na idc comboboxa
-KNDR_WPN_BUTTON na idc przycisku
ODPOWIEDZ

Wróć do „Edytor - tworzenie misji, skrypty oraz programowanie”