wat

Wszelkie pytania na temat SAIL'a i modowania OW.
MasterKiller
Soldier level 6
Soldier level 6
Posts: 343
Joined: Tue Aug 09, 2011 5:51 pm

wat

Post by MasterKiller »

Mamy aree, w ktorej dzieja sie rozne rzeczy, w zaleznosci, jakim pojazdem wjedziemy, czy tez wejdziemy tam na piechote. Gdy prowadzimy komora_2 lub komora_AR, wszystko jest OK, lecz gdy IsInUnit(sol3)=0, niezleznie, czy zmienna przenikniecie_dostepne jest true czy false odpala sie InGameOn; (ktorego nie ma-??) i nic sie dalej nie dzieje. Na pewno nie odpala sie jakies inne every, bo jak to nizej wylaczylem to w ogole nic sie nie dzialo.

nie wycinam nic, bo moze to wazne

Code: Select all

every 0$1 trigger IsInArea(sol3,out_bas_dol) and GetNation(sol3)=nation_american MARKED 20 do
var i,x,y;
begin

     ComStop(sol3);
     CenterNowOnUnits(sol3);
        

     Case IsInUnit(sol3) of
     komora_2:
        begin
             InGameOn;
             x=GetX(sol_down_AM);
             y=GetY(sol_down_AM);
             repeat
              begin
                   ComMoveXY(sol_down_AM,GetX(komora_2),GetY(komora_2));
                   wait(0$1);
              end;
             until GetDistUnits(komora_2,sol_down_AM)<=4;

             ComStop(sol_down_AM);
             ComTurnUnit(sol_down_AM,komora_2);
             Say(sol_down_AM, 'OUTDOWN1');
             ComMoveXY(sol3,85,92);
             ComMoveXY(sol_down_AM,x,y);
             wait(0$2);
             InGameOff;
             enable;
       end;

     komora_AR:
        begin
             InGameOn;
             x=GetX(sol_down_AM);
             y=GetY(sol_down_AM);

             repeat
              begin
                   ComMoveXY(sol_down_AM,GetX(komora_AR),GetY(komora_AR));
                   wait(0$1);
              end;
             until GetDistUnits(komora_AR,sol_down_AM)<=4;

             ComStop(sol_down_AM);
             ComTurnUnit(sol_down_AM,komora_AR);
             Say(sol3,'OUTDOWNAR1');
             Say(sol_down_AM,'OUTDOWNAR2');
             ComMoveXY(sol_down_AM,x,y);
             uc_side=1;
             PlaceUnitXY(informator,37,45,false);
             enable(11);
             enable(21);
             AddComMoveXY(sol3,49,72);
             AddComMoveXY(sol3,40,50);
             AddComExitVehicle(sol3);

             repeat
                   begin
                        wait(0$1);
                        CenterNowOnUnits(sol3);
                   end;
             until IsAT(komora_AR, 40,50);

             ComMoveXY(informator,GetX(sol3),GetY(sol3));
             wait(0$2);
             ComStop(informator);
             ComTurnUnit(informator,sol3);
             ComTurnUnit(sol3,informator);
             Say(informator,'BASE3');
             Say(sol3,'BASE4');
             Say(informator,'BASE5');

             AddComEnterUnit(informator,komora_AR);
             AddComMoveXY(informator,121,4);

             InGameOff;
        end;

       0:
       begin
            //InGameOn;
            RevealFogArea(3, spawn_informator);
            CenterNowOnXY(63,83);

            if przenikniecie_dostepne=true then
               begin
                    uc_side=1;
                    PlaceUnitArea(informator,spawn_informator,false);
                    
                    repeat
                     begin
                         wait(0$1);
                         ComMoveXY(informator,GetX(sol3),GetY(sol3));
                     end;
                    until GetDistUnits(sol3,informator)<=4;

                    ComStop(informator);
                    ComTurnUnit(informator,sol3);
                    ComTurnUnit(sol3,informator);
                    Say(informator,'ENTBASE1');
                    Say(sol3,'ENTBASE2');
                    ComMoveXY(informator,44,78);
                    wait(15);
                    ComMoveXY(sol3,44,79);

                    repeat
                          wait(0$1);
                    until IsAT(informator,44,78) and IsAT(sol3,44,79);

                    Say(sol3,'ENTBASE3');
                    InGameOff;
                    ComMoveXY(sol_walk,47,79);
                    AddComMoveXY(informator,58,64);
                    AddComMoveXY(informator,42,23);
                    AddComMoveXY(informator,93,14);
               end else
               begin
                    repeat
                     begin
                         ComMoveXY(sol_down_AM,GetX(sol3),GetY(sol3));
                         wait(0$1);
                     end;
                    until GetDistUnits(sol3,sol_down_AM)<=4;

                    ComStop(sol_down_AM);
                    ComTurnUnit(sol_down_AM,sol3);
                    ComTurnUnit(sol3,sol_down_AM);
                    Say(sol_down_AM,'OUTDOWNNOVEH');
                    wait(0$1);
                    YouLost('BUSTED');
               end;

           InGameOff;
       end;
       end;
end;
Wszyscy jesteśmy żołnierzami: WYDANE
https://original-war.net/files.php?id=174
User avatar
Jeanks
Soldier level 6
Soldier level 6
Posts: 305
Joined: Fri Feb 16, 2007 1:34 pm
Location: Grudziądz

Re: wat

Post by Jeanks »

Sprawdź czy zmienna przenikniecie_dostepne nie jest zwracana zbyt szybko ostatnio miałem ten sam problem. Zwróciłem funkcji false po starting begin jej wartość zmieniłem po 10 sek na true patrze nie dziala. Okazuje sie ze gdy sprawdzałem warunkiem IF jej wartość to było to szybciej bo po 8 sekundach i wtedy nadal był false.

Pewnie o tym pamiętałeś bo nie jesteś początkujący ale:
- Sprawdź czy zwróciłeś odpowiednią wartość boolean dla tej zmiennej.
- Czy na pewno jest zwrócona przed wywołaniem warunku IF

Podpowiedź: display_strings =['Przenikanie jest:', przenikniecie_dostepne];


//Edit: Co do InGameOn nie dziwi mnie nic bo skoro w Case of komora_2 masz zapętlone po ingameoff znów ingameon no to nie widzę w tym nic nadzwyczajnego chociaż więcej bym wiedział gdybym miał mape i sam odpalił kod :D
Jeanks zgarnia wszystko ot co xD
MasterKiller
Soldier level 6
Soldier level 6
Posts: 343
Joined: Tue Aug 09, 2011 5:51 pm

Re: wat

Post by MasterKiller »

Ale przeciez to enable enabluje sie tylko gdy odpali sie kod z komora_2.
Wszyscy jesteśmy żołnierzami: WYDANE
https://original-war.net/files.php?id=174
MasterKiller
Soldier level 6
Soldier level 6
Posts: 343
Joined: Tue Aug 09, 2011 5:51 pm

Re: wat

Post by MasterKiller »

Wszystko zmienia sie w odpowiednim momencie. wprawdzie nie pisze ze przenikniecie_dostepne true czy false, tylko 0 i 1, ale to chyba to samo.
Wszyscy jesteśmy żołnierzami: WYDANE
https://original-war.net/files.php?id=174
User avatar
Jeanks
Soldier level 6
Soldier level 6
Posts: 305
Joined: Fri Feb 16, 2007 1:34 pm
Location: Grudziądz

Re: wat

Post by Jeanks »

Jeżeli wywołujesz kod jako true czy false to tak samo go definiuj choćby dla estetyki. I pokaż kod gdzie przypisujesz tej zmiennej true itd
Jeanks zgarnia wszystko ot co xD
MasterKiller
Soldier level 6
Soldier level 6
Posts: 343
Joined: Tue Aug 09, 2011 5:51 pm

Re: wat

Post by MasterKiller »

Code: Select all

every 0$1 trigger FilterUnitsInArea(stop_konwoju,[[f_side,4]])>1
              and GetDistUnits(sol3,konwoj_1[1])<=7 do
var calosc,kolo,i,j;
      begin
            InGameOn;
            j=1;

            for i in konwoj_1 do
                ComStop(i);

            calosc=FilterUnitsInArea(stop_konwoju,[[f_side,4]]);
            kolo=IsDrivenBy(calosc[1]);

            ComMoveXY(sol3,102,26);
            CenterNowOnUnits(kolo);
            Say(kolo,'KONW1');
            if tajne_haslo=false then
            begin
                 Case Query('quest_nie_znam_odpowiedzi') of
                 1:begin
                        Say(sol3,'KONW2');
                        Say(kolo,'KONW_BUSTED');
                        YouLost('BUSTED');
                 end;
                 2:begin
                        Say(sol3,'KONW2_2');
                        Say(kolo,'KONW_BUSTED');
                        YouLost('BUSTED');
                 end;
                 3:begin
                        Say(sol3,'KONW2_3');
                        Say(kolo,'KONW_BUSTED');
                        YouLost('BUSTED');
                 end;
                 end;
            end else
             begin
                Case Query('quest_znam_odpowiedz') of
                1:begin
                       Say(sol3,'KONW2');
                       Say(kolo,'KONW_BUSTED');
                       YouLost('BUSTED');
                end;
                2:begin
                       Say(sol3,'KONW2_4');
                       Say(kolo,'KONW3');
                       Say(sol3,'KONW4');
                       ComMoveXY(sol3,GetX(kolo),GetY(kolo));
                end;
                3:begin
                       Say(sol3,'KONW2_3');
                       Say(kolo,'KONW_BUSTED');
                       YouLost('BUSTED');
                end;
                end;
             end;

            wait(0$7);
            ComMoveXY(konwoj_1, 115,1);

            repeat
                  CenterOnUnits(konwoj_1[1]);
                  wait(1);
            until GetDistUnitXY(NearestUnitToXY(konwoj_1,105,25),105,25)>=13;

            wait(10);
            CenterNowOnUnits(sol3);
            ComMoveXY(sol3,107,25);
            ComExitBuilding(sol1);
            ComExitBuilding(sol2);

            repeat
                  wait(0$1);
                  ComMoveXY(sol1,GetX(sol3),GetY(sol3));
            until GetDistUnits(sol1,sol3)<=3;

            ComStop(sol1);
            wait(1);
            ComTurnUnit(sol3,sol1);
            ComTurnUnit(sol1,sol3);
            ComTurnUnit(sol2,sol3);
            Say(sol3,'KONW5');
            wait(0$2);
            Say(sol1,'KONW6');
            SayRadio(informator,'KONW7');
            wait(0$2);
            Say(sol3,'KONW_OUT_ALL');
            ChangeMissionObjectives('03');
            ComMoveXY([sol1,sol2],149,29);
            przenikniecie_dostepne=true;
            InGameOff;
            wait(0$6);
            SayRadio(solOGLOSZ,'KONW8');
            Say(sol2,'KONW9');
            wait(0$20);
            OdbiciePostGora;
            wait(0$20);
            OdbiciePostDol;
      end;
takie every
Wszyscy jesteśmy żołnierzami: WYDANE
https://original-war.net/files.php?id=174
MasterKiller
Soldier level 6
Soldier level 6
Posts: 343
Joined: Tue Aug 09, 2011 5:51 pm

Re: wat

Post by MasterKiller »

przeszukalem caly kod czy gdzies jeszcze moze przypadkiem cos sie zawieruszylo, jakas zmiana zmiennej, ale nic a nic nie ma, jedynie pare every wykorzystujacych zmienna w triggerze.
Wszyscy jesteśmy żołnierzami: WYDANE
https://original-war.net/files.php?id=174
User avatar
Jeanks
Soldier level 6
Soldier level 6
Posts: 305
Joined: Fri Feb 16, 2007 1:34 pm
Location: Grudziądz

Re: wat

Post by Jeanks »

No ok jeżeli ten kod wywołuje się wcześniej no to niby wszystko dobrze. Zrób więc jak mówiłem
display stringa z tą funkcją i sprawdź czy faktycznie przyjmuje wartość TRUE i czy podczas warunku także ją ma
Jeanks zgarnia wszystko ot co xD
MasterKiller
Soldier level 6
Soldier level 6
Posts: 343
Joined: Tue Aug 09, 2011 5:51 pm

Re: wat

Post by MasterKiller »

Wszystko zmienia sie w odpowiednim momencie. wprawdzie nie pisze ze przenikniecie_dostepne true czy false, tylko 0 i 1, ale to chyba to samo.
no mowie przeciez ze to zrobilem XD
Wszyscy jesteśmy żołnierzami: WYDANE
https://original-war.net/files.php?id=174
User avatar
Nitek
Community Veteran
Community Veteran
Posts: 999
Joined: Mon Apr 13, 2009 4:13 pm
Location: Białystok
Contact:

Re: wat

Post by Nitek »

Spróbuj dać ify zamiast switch'a, może będzie działać lub chociaż wskaże w którym miejscu jest błąd.
MasterKiller
Soldier level 6
Soldier level 6
Posts: 343
Joined: Tue Aug 09, 2011 5:51 pm

Re: wat

Post by MasterKiller »

ku**a NIE WIEZE

IFy mialem na samym poczatku, ale zmienilem, gdyz jak widac, na koncu obu przypadkow komora_2 i komora_AR kolo wysiada nam z wozu, a wtedy sprawdzal sie dopiero ostatni przypadek i bugi. Zamienilem to miejscami i dziala.. !?!??!

#justoriginalwareditorthinks
Wszyscy jesteśmy żołnierzami: WYDANE
https://original-war.net/files.php?id=174
MasterKiller
Soldier level 6
Soldier level 6
Posts: 343
Joined: Tue Aug 09, 2011 5:51 pm

Re: wat

Post by MasterKiller »

Noooo jednak nie. Chociaz skrypt sie odpala,

Code: Select all

uc_side=1;
                    PlaceUnitArea(informator,spawn_informator,false);

                    repeat
                     begin
                         wait(0$1);
                         ComMoveXY(informator,GetX(sol3),GetY(sol3));
                     end;
                    until GetDistUnits(sol3,informator)<=4;

                    ComStop(informator);
                    ComTurnUnit(informator,sol3);
                    ComTurnUnit(sol3,informator);
                    Say(informator,'ENTBASE1');
                    Say(sol3,'ENTBASE2');
                    ComMoveXY(informator,44,78);
                    wait(15);
                    ComMoveXY(sol3,44,79);

                    repeat
                          wait(0$1);
                    until IsAT(informator,44,78) and IsAT(sol3,44,79);

                    CenterOnUnits(sol3);
                    ComTurnUnit(informator,sol3);
                    ComTurnUnit(sol3,informator);
                    Say(informator,'ENTBASE3');
                    InGameOff;
                    ComMoveXY(sol_walk,47,79);
                    AddComMoveXY(informator,58,64);
                    AddComMoveXY(informator,42,23);
                    AddComMoveXY(informator,93,14);
wykonuje sie WSZYSTKO oprocz InGameOff; ???

Code: Select all

ingame_video=false;
                    interface_hidden=false;
                    ExclusiveOff;
tak samo nie dziala
Wszyscy jesteśmy żołnierzami: WYDANE
https://original-war.net/files.php?id=174
User avatar
Jeanks
Soldier level 6
Soldier level 6
Posts: 305
Joined: Fri Feb 16, 2007 1:34 pm
Location: Grudziądz

Re: wat

Post by Jeanks »

MasterKiller wrote:
Wszystko zmienia sie w odpowiednim momencie. wprawdzie nie pisze ze przenikniecie_dostepne true czy false, tylko 0 i 1, ale to chyba to samo.
no mowie przeciez ze to zrobilem XD
No skoro nie jest napisane czy zmienna przyjmuje odpowiednią wartość to sam sobie odpowiedziałeś na pytanie, że coś z nią spartoliłeś :P. Ja bym zaczął od uporządkowania kodu bo w jednym bloku masz nawalonego tego od groma. Ciężko się w tym połapac. Dla Case of można użyć różnych bloków tak samo tych pętli repeat od groma. To tylko jednak SAIL i przy tylu pętlach na raz może po prostu dostaje szajby miałem tak nie dawno z tworzeniem ludzi przy pomocy pętli for. Dałem wszystko osobno i śmigało mimo iż samego kodu nie zmieniłem. Zacznij jednak od tej zmiennej bo ewidentnie jest coś nie tak być może z warunkiem nie wiem bo widzę tylko część kodu i nie znam kolejności jego wywoływania podczas gry. Jednak na pewno coś z tą zmienną jest nie tak i nie przyjmuje ona tej wartości którą wyznaczyłeś.
Jeanks zgarnia wszystko ot co xD
MasterKiller
Soldier level 6
Soldier level 6
Posts: 343
Joined: Tue Aug 09, 2011 5:51 pm

Re: wat

Post by MasterKiller »

Chodzilo mi o to ze nie wyswietla sie dokladnie "przenikniecie jest: false/true" tylko "przenikniecie jest: 0/1". 0 dla false, 1 dla true.

TERAZ TAK:
gdy zmienilem Case na kilka IF-ow, zaczelo dzialac, ALE nie dziala InGameOff;. w tym bloku:

Code: Select all

CenterOnUnits(sol3);
                    ComTurnUnit(informator,sol3);
                    ComTurnUnit(sol3,informator);
                    Say(informator,'ENTBASE3');
                    InGameOff;
                    ComMoveXY(sol_walk,47,79);
                    AddComMoveXY(informator,58,64);
                    AddComMoveXY(informator,42,23);
                    AddComMoveXY(informator,93,14);
centruje z przewijaniem na sol3;
zwraca jednostki ku sobie;
informator mowi swoja kwestie;
NIE WYLACZA SIE INGAME(pozostaja czarne paski na gorze i dole);
sol_walk idzie gdzie trzeba;
informator idzie gdzie trzeba;

mam nadzieje ze teraz czaisz XD
Wszyscy jesteśmy żołnierzami: WYDANE
https://original-war.net/files.php?id=174
User avatar
Jeanks
Soldier level 6
Soldier level 6
Posts: 305
Joined: Fri Feb 16, 2007 1:34 pm
Location: Grudziądz

Re: wat

Post by Jeanks »

Użyj gdzieś w kodzie ExclusiveOn/Off albo sprawdź czy liczbe Ingameon i off się zgadza w każdej z możliwości.
Jeanks zgarnia wszystko ot co xD
Post Reply