Page 1 of 1

ActiveUnitChanged nie działa

Posted: Fri Sep 12, 2014 3:25 pm
by zhtk
Zastanawiam się czy w silnik OW pozwala na zrobienie gry RPG. Dialog z NPC wywoływałoby się zaznaczając rozmówcę.

Niestety ten kod się nie wykonuje (NPC mają inny side, przyjazne nastawienie):

Code: Select all

on ActiveUnitChanged(NewUnit) do
var selection;
begin
     if jakas_jednostka in NewUnit then
     begin
          repeat
          selection := SelectiveQuery('Dialog_1', Dialog_s1);
          // ...
     end;
end;
Pytania:
- Jakiego typu jest NewUnit - listą, liczbą, tekstem, ... ?
- Co zrobić żeby działało?
- Jaki może być substytut tego kodu (np. coś w rodzaju every 0$01 sprawdź zaznaczony unit)?

Pytania poza tematem:
- Czy zmienne są silnie typowane?
- Czy jest dostępna struktura słownikowa?
- Czy da się inicjować zmienne przy deklaracji (var x := 5;)?

Re: ActiveUnitChanged nie działa

Posted: Fri Sep 12, 2014 5:42 pm
by Serpent

Code: Select all

On ActiveUnitChanged(un) do
begin

     if un = ident_jednostki then
        // kod wywoła się za każdym razem po zaznaczeniu danej jednostki

End;
Czy zmienne są silnie typowane?
Zależy, zmienne lokalne nie są silnie typowane. Co do reszty to jest różnie.

Czy da się inicjować zmienne przy deklaracji (var x := 5;)?
Nie, tylko i wyłącznie tak:

Code: Select all

var x;
begin
x := 5;
end;

Re: ActiveUnitChanged nie działa

Posted: Sun Sep 14, 2014 1:49 pm
by zhtk
Ok, działa.

Przypuśćmy że zaznaczyłem kilka jednostek naraz. Wtedy un będzie listą czy event będzie wywołany kilka razy? A może aktywna jednostka to będzie ta z największym imp wśród zaznaczonych?

Re: ActiveUnitChanged nie działa

Posted: Sun Sep 14, 2014 2:17 pm
by Serpent
Nie, un to jednostka. Nie może być inaczej.

Jeżeli zaznaczysz kilka jednostek to event nie wykona się. Event wykonuje się tylko w przypadku JEDNEJ zaznaczonej jednostki.

// Tutaj sprawdzenie

Code: Select all

On ActiveUnitChanged(un) do
begin
display_strings := un;
End;

Re: ActiveUnitChanged nie działa

Posted: Mon Sep 15, 2014 10:59 am
by zhtk
To wszystko co chciałem wiedzieć, dzięki.