Własny Przycisk - Problem z Funkcją Action

Moderator: Inkwizytor

ODPOWIEDZ
Skrypt
Posty: 9
Rejestracja: 07 sierpnia 2008, 18:04
ID Steam:
ID gracza: 0

Własny Przycisk - Problem z Funkcją Action

Post autor: Skrypt »

Tworzę własny Dialog, a w nim przycisk:

Kod: Zaznacz cały

		class My_Button
			{
				idc = -1;
				type = CT_BUTTON;
				style = ST_LEFT;
				default = false;
				font = Bitstream;
				sizeEx = 0.03;
				colorText[] = { 0, 0, 0, 1 };
				colorFocused[] = { 1, 0, 0, 1 };
				colorDisabled[] = { 0, 0, 1, 1 };
				colorBackground[] = { 1, 1, 1, 1 };
				colorBackgroundDisabled[] = { 1, 1, 1, 0.5 };
				colorBackgroundActive[] = { 1, 1, 1, 1 };
				offsetX = 0.003;
				offsetY = 0.003;
				offsetPressedX = 0.002;
				offsetPressedY = 0.002;
				colorShadow[] = { 0, 0, 0, 0.5 };
				colorBorder[] = { 0, 0, 0, 1 };
				borderSize = 0;
				soundEnter[] = { "", 0, 1 }; 
				soundPush[] = { "", 0, 1 };
				soundClick[] = { "", 0, 1 };
				soundEscape[] = { "", 0, 1 };
				x = 0;
				y = 0,2;
				w = 0.2;
				h = 0.2;
				text = "Set Maximum Fog";
				action = "hint ""Yes Yes Yes""";
			};
Jak funkcją action aktywować inny skrypt? Wpisanie tam "gracz exec skrypt.sqf" nie działa.
Jakie komendy tam można wpisawać a jakie nie?

Z góry dziękuje za pomoc.
Awatar użytkownika
kondor
Posty: 1526
Rejestracja: 13 marca 2007, 11:50
ID Steam: Przemek_kondor
Kontakt:

Re: Własny Przycisk - Problem z Funkcją Action

Post autor: kondor »

Kod: Zaznacz cały

"[parametry] execVM ""skrypt.sqf"""; 
lub

Kod: Zaznacz cały

"[parametry] exec ""skrypt.sqs"""; 
Jakie komendy tam można wpisawać a jakie nie?
nie widzę jakichś ograniczeń. http://community.bistudio.com/wiki/Cate ... mands_ArmA
Skrypt
Posty: 9
Rejestracja: 07 sierpnia 2008, 18:04
ID Steam:
ID gracza: 0

Re: Własny Przycisk - Problem z Funkcją Action

Post autor: Skrypt »

ok rozmumiem, ale jakie mogą być parametry
i czym w praktyce różni się
exec od execVM

przepraszam za niewiedzę, ale dopiero od kilku dni uczę się skryptów do army
Awatar użytkownika
kondor
Posty: 1526
Rejestracja: 13 marca 2007, 11:50
ID Steam: Przemek_kondor
Kontakt:

Re: Własny Przycisk - Problem z Funkcją Action

Post autor: kondor »

w skrócie exec uruchamia skrypty w składni sqs, natomiast execVM kompiluje i uruchamia skrypty o składni sqf ( http://www.armedassault.com.pl/viewtopic.php?f=54&t=700 )
o szczegoły exec i execVM doczytaj z linka z mojego poprzedniego postu
Skrypt
Posty: 9
Rejestracja: 07 sierpnia 2008, 18:04
ID Steam:
ID gracza: 0

Re: Własny Przycisk - Problem z Funkcją Action

Post autor: Skrypt »

Udało się.
Już miałem wysyłać na forum komunikat o błędzie, ale zobaczyłem cudzysłów.
Ja wpisywałem tak:
action = "[] execVM "Gotowy_Dialog.sqf"";
a trzeba tak:
action = "[] execVM ""Gotowy_Dialog.sqf""";

Czerwone cudzysłowia oznaczają pocztątek i koniec funkcji, te zielone są częścią polecenia execVM, więc skąd te dodatkowe 2?

I czy skrypty sqf trzeba kompilować, czy można je uruchamiać funcją exec?
Awatar użytkownika
kondor
Posty: 1526
Rejestracja: 13 marca 2007, 11:50
ID Steam: Przemek_kondor
Kontakt:

Re: Własny Przycisk - Problem z Funkcją Action

Post autor: kondor »

Skrypt pisze: Czerwone cudzysłowia oznaczają pocztątek i koniec funkcji, te zielone są częścią polecenia execVM, więc skąd te dodatkowe 2?
zapewne cudzysłów jest znakiem, który zmienia znaczenie innych znaków, tj. np \ w niektórych językach programowania. Gdyby nie było drugiego znaku (") w (pogrubiłem ten o który mi chodzi):
action = "[] execVM ""Gotowy_Dialog.sqf""";
to interpreter tego polecenia mógłby sobie pomyśleć o takiej linicje:
action = "[] execVM "Gotowy_Dialog.sqf"";
że (to niebieskie) jest jako jeden tekst, gdyż jest między cudzysłowami. natomiast dodanie jeszcze jednego cudzysłowia mówi: traktuj następny cudzysłów jako literał, a nie jako znak specjalny zamykający napis
Skrypt pisze: I czy skrypty sqf trzeba kompilować, czy można je uruchamiać funcją exec?
polecenie execVM jednoczesnie kompiluje i uruchamia skrypt sqf. polecenie exec nie zadziała poprawnie dla skryptu sqf
polecam również na przyszłość zapoznanie się z komendami comile, preprocessFile oraz spawn, które potrafią tylko raz skompilować skrypt sqf i wywoływać go dużo wydajniej (bo bez potrzeby kompilacji) wielokrotnie. - przydaje się to bardzo dla skryptów, które często się wywołuje - dla przykładu skrypt uruchamiany po śmierci gracza (w misji typu DM)
Skrypt
Posty: 9
Rejestracja: 07 sierpnia 2008, 18:04
ID Steam:
ID gracza: 0

Re: Własny Przycisk - Problem z Funkcją Action

Post autor: Skrypt »

Bardzo dziękuje za pomoc, jestem naprawdę wdzięczny.

Czyli rozumiem, że kompilacja pochłania zasoby komputera, więć często uzywane skrypty lepiej skopilować raz a potem tylko używać wielokrotnie? Takie raz skopilowane skrypty i później tylko uruchamiane będą dziłały szybciej, tak?

I ostatnie pytanie, żeby nie zaśmiecać forum. Znasz może jeszcze jakieś tutoriale co do Dialogów, bo ja swoją wiedzę czerpałem z BIKI
http://community.bistudio.com/wiki/Dialog_Control
A chciałby się coś dowiedzieć np. o Text box, Listbox, Toolbox.
Awatar użytkownika
kondor
Posty: 1526
Rejestracja: 13 marca 2007, 11:50
ID Steam: Przemek_kondor
Kontakt:

Re: Własny Przycisk - Problem z Funkcją Action

Post autor: kondor »

Kompilacja jest względnie kosztowna, co znaczy, że zajmuje przypuścmy pół sekundy max (co np przy kompilacji bardzo wiele razy skryptu uruchamianego przy zbiorowej śmierci może spowodować pewne problemy).
Skrypty (kompilowane raz - poprzez komendy: compile, preprocessFile, spawn) nie będą działały szybciej tylko szybciej się uruchomią. Dla typowych zastosowań nie zauważysz żadnej różnicy.

Odnośnie tutoriali, to nie znam nic innego, ale wiem, że istnieje coś takiego: http://www.armaholic.com/page.php?id=1329 ,czyli szablon dialogów
Skrypt
Posty: 9
Rejestracja: 07 sierpnia 2008, 18:04
ID Steam:
ID gracza: 0

Re: Własny Przycisk - Problem z Funkcją Action

Post autor: Skrypt »

Właśnie to miałem na myśli, że skompilowany skrypt działa szybciej bo nie trzeba go za każdym razem kompilować.

Mam ten Flamework Dialog, problem w tym, że cieżko mi się tak połapać na gotowcu. Najgorzej nie rozumiem tych odwołań do pliku .sqf o tej samej nazwie co .hpp. To wygląda tak jakby sam dialog był w pliku .hpp(co jest normalne) a jego konfiguracja i parametry w pliku .sqf o tej same nazwie, ale może jakoś się połapię.

Teraz sprawdzam zmienne.

Wiem, że są trzy rodzaje, Lokalne, Globalne i Publiczne.
Ale może coś wiesz więcej na ten temat. Np. czy lokalna zmienna, czyli taka, która jest używana tylko w jednym skrypcie jest potem usuwana. I można w innym skrypcie użyć drugie zmiennej lokalnej o tej samej nazwie?

Jak robie misje to lepiej używać zmiennych globalnych czy publicznych, na wypadek gdybym chciał przerobić tą misje na multiplayer?
I jak zmienna mają wpływ na pamięć, czy nalerzy je usuwać po użycie, czyścić, ogólnie może jesteś w stanie mi udzielić kilku ważnych rad na ten temat? Będę bardzo wdzięczny.
ODPOWIEDZ

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