Author: JeanksJeanks 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 ) 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.
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.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;
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
Topic: http://forum.original-war.net/viewtopic.php?f=6&t=1767