Teraz jest Cz 28 mar, 2024 11:28


EventHandler "GetIn" i "GetOut"

Dział poświęcony edytorowi ArmA II i Operation Arrowhead, czyli tworzeniu misji.
  • Autor
  • Wiadomość
Offline
Avatar użytkownika

Mustang185

Pułkownik

Pułkownik

  • Posty: 1032
  • Dołączył(a): N 04 kwi, 2010 00:30
  • Lokalizacja: Jasło

EventHandler "GetIn" i "GetOut"

PostWt 06 mar, 2012 20:12

Priwiet. W związku z naszymi ostatnimi kłopotami z modułem HC postanowiłem sporządzić mały skrypt, który będzie przekazywał dowodzenie nad oddziałami AI graczowi, który wsiądzie do określonego pojazdu na pozycję 'commander'. Miało się to opierać na EventHandlerach.
Póki co doszedłem to czegoś takiego:
Kod: Zaznacz cały
_dowo = _dowodzenie addEventHandler ["GetIn", {IF (_this select 1 = "commander") THEN "format(%1 execVM "skrypt.sqf",_this select 2"]

Jako, że to moje pierwsze podejście do EH, to robię to troszkę 'na czuja'. I, jak można się domyślać, skrypt.sqf nie odpala (póki co zawiera tylko prostą komendę 'this sidechat "cośtam"). No właśnie, dlaczego?
Próbowałem też w formie:
Kod: Zaznacz cały
_dowo = _dowodzenie addEventHandler ["GetIn", {IF (_this select 1 = "commander") THEN (_this select 2) execVM "skrypt.sqf"]


Pewnie jakiś błąd składniowy, ale niestety, nie mam czasu aby go znaleźć...
Offline
Avatar użytkownika

gremdek

Porucznik

Porucznik

  • Posty: 428
  • Dołączył(a): Pn 27 lut, 2006 15:02

Re: EventHandler "GetIn" i "GetOut"

PostWt 06 mar, 2012 23:46

Kod: Zaznacz cały
_dowo = _dowodzenie addEventHandler ["GetIn", {IF (_this select 1 == "commander") THEN {(_this select 2) execVM "skrypt.sqf";}]


pamiętaj że:
Kod: Zaznacz cały
if (warunek) then {
   instrukcja_1;
   instrukcja_2;
   .
   .
   .
   instrukcja_n;
}



a zagnieżdżane w sobie "" nie działają. używaj ich tylko do stringów.

dlatego też w drugim kodzie co dałeś brakuje ci {}



sprawa druga:
a = b <- przypisanie (jako warunek było brane "commander" w tym przypadku).
a == b <- porównanie (zwróci true/false).

sprawa trzecia:
format(%1 execVM "skrypt.sqf",_this select 2 - to jakiś twór niemający żadnego sensu. komedna format zwróci ci string. w dodatku zła jest składnia



polecam przerobienie najprostszych programów na przyszłość:
http://en.wikibooks.org/wiki/C_Programming
składnia podobna do sqf
:(
Offline
Avatar użytkownika

Mustang185

Pułkownik

Pułkownik

  • Posty: 1032
  • Dołączył(a): N 04 kwi, 2010 00:30
  • Lokalizacja: Jasło

PostŚr 07 mar, 2012 06:58

Dzięki! Skaszaniłem na całej lini ;D
Offline
Avatar użytkownika

Mustang185

Pułkownik

Pułkownik

  • Posty: 1032
  • Dołączył(a): N 04 kwi, 2010 00:30
  • Lokalizacja: Jasło

PostŚr 07 mar, 2012 16:42

Za wcześnie się ucieszyłem - dalej nie odpala. Gdy próbuję wpisać w init jednostki 'dowodzenie' to wywala błąd. A raczej tylko puste okienko błędu, nic nie ma nim napisanego, ale przenosi mi wskaźnik pisania przed IF.
Offline
Avatar użytkownika

gremdek

Porucznik

Porucznik

  • Posty: 428
  • Dołączył(a): Pn 27 lut, 2006 15:02

PostŚr 07 mar, 2012 17:58

takie rzeczy lepiej robić w init.sqf. wtedy sobie możesz ładne wcięcia porobić itd. wtedy szybciej znajdziesz błąd. no i lepiej mieć wszystko w jednym miejscu, a nie szukać na mapie powpisywanych komend.

pamiętaj jeszcze:
_zmienna - zmienna lokalna(np. w obrębie funkcji/skryptu)
zmienna - zmienna globalna
:(
Offline
Avatar użytkownika

Mustang185

Pułkownik

Pułkownik

  • Posty: 1032
  • Dołączył(a): N 04 kwi, 2010 00:30
  • Lokalizacja: Jasło

PostŚr 07 mar, 2012 23:04

Mhm, dzięki. Wyczaiłem brakujący nawias klamrowy, ale skrypt dalej nie odpala. Spróbowałem komendę po THEN podmienić na proste hint "dziala", ale nawet to nie zaskakuje.

Dzisiaj już mi się nie chce sprawdzać, ale może zamiast dodawać EH do pojazdu, to powinienem go dodać playerowi?
Z drugiej strony pewnie nie w tym problem, bo wcześniej użyłem takiej jak niżej formy, i wszystko działało (dodane do pojazdu, tylko dla wstępnego sprawdzenia jak działają EH).

Kod: Zaznacz cały
this addEventHandler ["GetIn", "hint format['wsiadl %1',_this select 1]"]
Offline
Avatar użytkownika

gremdek

Porucznik

Porucznik

  • Posty: 428
  • Dołączył(a): Pn 27 lut, 2006 15:02

PostCz 08 mar, 2012 12:58

dopóki nie napiszesz dokładnie co zrobiłeś to będzie zgadywanie co może być źle
:(
Offline
Avatar użytkownika

Mustang185

Pułkownik

Pułkownik

  • Posty: 1032
  • Dołączył(a): N 04 kwi, 2010 00:30
  • Lokalizacja: Jasło

PostCz 08 mar, 2012 19:20

Póki co i tak nie będę miał czasu przy tym grzebać, więc napiszę za tydzień lub dwa. Jak nic się nie dzieje, to nic. Ale jak zaczyna się coś dziać, to od razu wszystko na raz :/

Powrót do [ArmA II] Edytor

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 14 gości

cron