SAIL - Funkcja "możliwych" błędów - test

Gotowe kody SAIL'a, informacje na temat moddingu, itd.

Moderator: zoNE

Post Reply
User avatar
zoNE
The Great Uniter & Site Administrator
The Great Uniter & Site Administrator
Posts: 2061
Joined: Fri Feb 17, 2006 3:44 pm
Location: Poland
Contact:

SAIL - Funkcja "możliwych" błędów - test

Post by zoNE »

Jeanks wrote:Posiedziałem nad tym już jakiś czas temu (z pół roku), ale nie publikowałem. Jest to prosty kod (z 3-4dni aby działał się namęczyłem :D) aby uzsykać Query podobne w działaniu do tego znanego z Gothic II:NK w sekwencji rozmów z Quarhodronem tzn. odpowiadamy na szereg pytań (na wszystkie trzeba odpowiedzieć poprawnie), ale w trakcie nie wiemy na które odpowiadamy dobrze a które źle. Dopiero po zakończeniu sekwencji NPC odpowiada nam czy przeszliśmy test czy nie jeżeli nie to z nie wiedzą przystępujemy do pytań ponownie (lub nie zależy od tego jak chcemy tego użyć). Kod będzie się znajdował w jednej z moich misji w nowym modzie którego robię od jakiegoś czasu.

Code: Select all

Var  GetPoint, GetPoint1, GetPoint2, GetPoint3, GetPoint4, GetPoint5;

////
Gdzieś w kodzie  question2
////


Function QUESTIoN2;
begin
Case Query ('Zapytanie3') of
1: begin
GetPoint=0 ;
priv;
end;
2: begin
GetPoint=0;
priv;
end;
3: begin
GetPoint=1 ;
priv;
end;
4: begin
GetPoint=0;
priv;
end;
5: begin
GetPoint=0;
priv;
end;



end;
end;



Function priv;
begin
Case Query ('Zapytanie4') of
1: Begin
GetPoint1=0 ;
priv_next;
end;
2: Begin
GetPoint1=1 ;
priv_next;
end;
3: Begin
GetPoint1=0 ;
priv_next;
end;
4: Begin
GetPoint1=0 ;
priv_next;
end;
end;
end;

Function priv_next;
begin
Case Query ('Zapytanie5') of
1: Begin
GetPoint2=0 ;
next_priv;
end;
2: Begin
GetPoint2=0 ;
next_priv;
end;
3: Begin
GetPoint2=1 ;
next_priv;
end;
end;
end;

Function next_priv;
begin
Case Query ('Zapytanie6') of
1: Begin
GetPoint3=1 ;
next_priv1;
end;
2: Begin
GetPoint3=0 ;
next_priv1;
end;
3: Begin
GetPoint3=0 ;
next_priv1;
end;
4: Begin
GetPoint3=0 ;
next_priv1;
end;
end;
end;

Function next_priv1;
begin
Case Query ('Zapytanie7') of
1: Begin
GetPoint4=0 ;
ComAttackUnit(error,abc);
end;
2: Begin
GetPoint4=0 ;
ComAttackUnit(error,abc);
end;
3: Begin
GetPoint4=1 ;
bet;
end;
4: Begin
GetPoint4=0;
ComAttackUnit(error,abc);
end;
5: Begin
GetPoint4=0 ;
ComAttackUnit(error,abc);
end;
end;
end;
Oczywiście aby miało znaczenie czy dobrze odpowiadalismy czy źle musimy napisać kolejny kod który wywołuję jedną z dwóch funkcji zależnie od tego czy odpowiadaliśmy dobrze czy źle.

Jak działa kod ? Przy każdej poprawnej odpowiedzi otrzymujemy GetPointa jeżeli otrzymamy wszystkie tzn że odpowiadaliśmy dobrze jeżeli któryś bedzie równy 0 to przegrywamy. Następnie wystarczy wywołać funkcję

Code: Select all

Every 0$1 trigger GetPoint=1 and GetPoint1=1 and GetPoint2=1 and  GetPoint3=1 and GetPoint4=1 and FilterUnitsInArea(area51,[f_side,1])  do
begin

LUB zastąpić ją prościej

/// GDZIEŚ W KODZIE  KODZIK=1 if GetPoint=1;
GetPoint1=1;
GetPoint2=1;
GetPoint3=1;
GetPoint4=1;

i wtedy

Every 0$1 trigger Kodzik=1 and FilterUnitsInArea(area51,[f_side,1])  do
begin


Przydaje się oczywiście nie tylko przy Query (włączyć myślenie). Dzięki temu można stworzyć sekwencję prób i błędów i w jednej misji (bądź w kolejnej) naszę poczyniania będą miały wpływ na to jakie dialogi będą mówione przez NPC lub kto będzie po naszej stronie bądź nie, ale nie będe aż tyle pomagał. POWODZENIA ;P
Author: Jeanks
Topic: http://forum.original-war.net/viewtopic.php?f=6&t=1767
Post Reply