Nie działające enable

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

Nie działające enable

Post by MasterKiller »

Mam problem - mam w misji 2 naukowcow, nazywaja sie oni McBrain i Surray. Jesli najpierw pojdziemy do McBraina, mowi nam, ze Surray ma nam cos opowiedziec o pewnej rzeczy. Jeśli najpierw odwiedzimy Surraya, on przedstawi sie, odpowie nam, ze nie ma czasu na nic. Jesli drugi raz odwiedzimy Surraya, on juz nie przedstawi sie, tylko powie ze nie ma czasu. Czyli mamy 4 warianty:

1. Nie wiemy o tym, ze surray ma nam cos opowiedziec, nie bylismy u niego - on przedstawia sie, mowi ze nie ma czasu.
2. Nie wiemy o tym, ze surray ma nam cos opowiedziec, bylismy u niego, on mowi ze nie ma czasu
3. Wiemy, ze surray ma nam cos opowiedziec, nie bylismy u niego, on sie przedstawia i opowiada nam, idziemy z nim
4. Wiemy, ze surray ma nam cos opowiedziec, bylismy u niego, on nam opowiada, idziemy z nim gdzies tam

I mam takie cos:

Code: Select all

every 0$2 trigger IsInArea(sasza, nauk4) MARKED 07 do

  Case surray_przedstawil_sie of
      
  1:Case surray_wiem of

        1:begin
         Enable(07);
         InGameOn;
         DialogueOn;
         AddComTurnUnit(sasza, naukowiec5);
         Say(naukowiec5, 'nauk4_1');
         Say(sasza, 'nauk4_2');
         Say(naukowiec5, 'nauk4_3');
         InGameOff;
         DialogueOff;
         surray_przedstawil_sie=2;
         ComMoveXY(sasza, 34, 43);
        
         end;
        2:begin
         Disable(07);
         InGameOn;
         DialogueOn;
         AddComTurnUnit(sasza, naukowiec5);
         Say(naukowiec5, 'nauk4_1');
         Say(sasza, 'nauk4_101');
         Say(naukowiec5, 'nauk4_5');
         surray_przedstawil_sie=2;
         surray_wiem=2;
         Disable(06);
         DialogueOff;
         AddComMoveXY(sasza, 11, 5);
         AddComMoveXY(naukowiec5, 12, 6);
         wait(0$25);
         InGameOff;
         
         end;
  2:Case surray_wiem of


         1:begin
         Enable(07);
         InGameOn;
         DialogueOn;
         AddComTurnUnit(sasza, naukowiec5);
         Say(sasza, 'nauk4_99');
         Say(naukowiec5, 'nauk4_3');
         ComMoveXY(sasza, 34, 43);
         InGameOff;
         DialogueOff;
         
         end;
         2:begin
         Disable(07);
         InGameOn;
         DialogueOn;
         AddComTurnUnit(sasza, naukowiec5);
         Say(sasza, 'nauk4_101');
         Say(naukowiec5, 'nauk4_4');
         Say(sasza, 'nauk4_5');
         surray_przedstawil_sie=2;
         surray_wiem=2;
         Disable(06);
         DialogueOff;
         AddComMoveXY(sasza, 11, 5);
         AddComMoveXY(naukowiec5, 12, 6);
         wait(0$25);
         Say(naukowiec5, 'nauk4_6');
         InGameOff;
         
         end;

    end;
    end;
    end;
to jest kod na warianty rozmowy z surrayem, a rozmowa z mcbrainem wyglada tak:

Code: Select all

every 0$2 trigger IsInArea(sasza, nauk3) MARKED 01 do
 begin
      InGameOn;
      DialogueOn;
      AddComTurnUnit(sasza, naukowiec3);
      Say(sasza, 'nauk3_1');
      Say(naukowiec3, 'nauk3_2');
 Case Query('nauk3pytanie') of
      1:begin
      Disable(01);
      Say(sasza, 'nauk3_3');
      DialogueOff;
      AddComMoveXY(sasza, 60, 52);
      AddComEnterUnit(naukowiec3, lab2);
      Wait(0$5);
      RemoveUnit(sasza);
      Say(naukowiec3, 'nauk3_4');
      Say(sasza, 'nauk3_5');
      Say(naukowiec3, 'nauk3_6');
      Say(naukowiec3, 'nauk3_7');
      Say(sasza, 'nauk3_8');
      Say(naukowiec3, 'nauk3_9');
      Say(naukowiec3, 'nauk3_10');
      Say(naukowiec3, 'nauk3_11');
      PlaceUnitXY(sasza, 60, 52, false);
      informacje=informacje+1;
      surray_wiem=2;
      InGameOff;
 end;
      2:begin
      Enable(01);
      ComMoveXY(sasza, 50, 48);
      Say(sasza, 'nauk3_99');
      InGameOff;
      DialogueOff;
 end;
 end;
 end;
oczywiscie wyeksportowalem zmienne surray_wiem i surray_przedstawil_sie, i ustawilem domyslna wartosc na 1


i problem w tym, ze najpierw porozmawiam z surrayem, jest OK, potem pojde do mcbraina i juz enable nie dziala, kod sie nie powtarza. tak samo jak chce wyprobowac opcje 2., czyli wejsc 2 raz do tej arei nauk4, nie dzieje sie nic. nie mam pojecia dlaczego to nie dziala, nie wiem, moze cos pominalem, moze enablesy nie dzialaja z Case'ami, nie wiem. moze jest jakis prostszy sposob zeby zrobic to, co wyzej podalem?

PS
mam nadzieje, ze przedstawilem sprawe w miare jasno :D
Wszyscy jesteśmy żołnierzami: WYDANE
https://original-war.net/files.php?id=174
shoter
Soldier level 1
Soldier level 1
Posts: 13
Joined: Thu Jul 25, 2013 12:23 am

Re: Nie działające enable

Post by shoter »

Narazie nie widze jeszcze problemu, zaraz to głębiej przestudiuje ale najpierw wytkne ci to co ci przeszkadza w tym kodzie :) :
1) switch dla wartości 0/1 (tutaj 1/2) jest brzydki według mnie. Lepiej użyć konstrukcji if/else.
2) Wytnij komendy związane z rozmowami i umieść je w oddzielnej funkcji, to ci poprawi czytelność kodu kilkukrotnie

Prawdopobnie zasięg switchy jest nie taki jak myślisz. Dodaj w odpowiednich miejscach beginy (Na początku funkcji oraz po każdym case ).
User avatar
Serpent
Soldier level 10
Soldier level 10
Estonia
Posts: 4175
Joined: Tue Jul 07, 2009 9:13 pm
Location: Polska - EuroStan ZSRE
Contact:

Re: Nie działające enable

Post by Serpent »

Code: Select all

Export Spotkanie;
Every 1 do
Spotkanie = 0;

Every 0$01 trigger WarunekSpotkania and Spotkanie < 1 do
begin
Spotkanie = Spotkanie + 1;
// kod na gadanie przy pierwszym spotkaniu.
end;

Every 0$01 trigger WarunekSpotkania and Spotkanie >= 1 do
begin
enable; // zapętla to

// kod na gadanie przy drugim lub kolejnym spotkaniu
end;
Btw nie stosuj markedów bo to bullshit ;p
Epickie teksty:
Marek1906: jak zrobic aby sail był zielony?
Kvantovy: Wszystko normalne, wszystko w koło było dziwne
Kvantovy:: To jest fajne, że to nie jest takie głupie
Kvantovy:: remove sos from kanapeczka
Kvantovy:: zdarzają się rzezy które sie filozofom nie śniły
Cenwen: problemem jest gejostwo
"Taki z niego fizyk jak ze mnie baletnica" - Profesor Scholtze o Kvantovym.
JAKBYŁ BYM CZECHEM TO BYM ROZŁOŻYŁ NAMIOT ~Kvanciak
MasterKiller
Soldier level 6
Soldier level 6
Posts: 343
Joined: Tue Aug 09, 2011 5:51 pm

Re: Nie działające enable

Post by MasterKiller »

a jedno pytanie: co robi ten fragment:

Every 1 do
Spotkanie = 0;

co każde 1, spotkanie=0 ale 1 czego?
Wszyscy jesteśmy żołnierzami: WYDANE
https://original-war.net/files.php?id=174
shoter
Soldier level 1
Soldier level 1
Posts: 13
Joined: Thu Jul 25, 2013 12:23 am

Re: Nie działające enable

Post by shoter »

1 oznacza 1 tick gry. Na normalnej szybkości pojedynczy tick wykonuje się 1/35 sekundy.

0$01 oznacza 35 ticków.

Every 0$01 jest równorzędne z Every 35
User avatar
Serpent
Soldier level 10
Soldier level 10
Estonia
Posts: 4175
Joined: Tue Jul 07, 2009 9:13 pm
Location: Polska - EuroStan ZSRE
Contact:

Re: Nie działające enable

Post by Serpent »

MasterKiller wrote:a jedno pytanie: co robi ten fragment:

Every 1 do
Spotkanie = 0;

co każde 1, spotkanie=0 ale 1 czego?

Every 1 // w pierwszym tzw. ticku czyli jednostce czasu

A spotkanie możesz dać gdzieś indziej, grunt żeby zdefiniować że spotkanie = 0.
Epickie teksty:
Marek1906: jak zrobic aby sail był zielony?
Kvantovy: Wszystko normalne, wszystko w koło było dziwne
Kvantovy:: To jest fajne, że to nie jest takie głupie
Kvantovy:: remove sos from kanapeczka
Kvantovy:: zdarzają się rzezy które sie filozofom nie śniły
Cenwen: problemem jest gejostwo
"Taki z niego fizyk jak ze mnie baletnica" - Profesor Scholtze o Kvantovym.
JAKBYŁ BYM CZECHEM TO BYM ROZŁOŻYŁ NAMIOT ~Kvanciak
MasterKiller
Soldier level 6
Soldier level 6
Posts: 343
Joined: Tue Aug 09, 2011 5:51 pm

Re: Nie działające enable

Post by MasterKiller »

dzieki, dobrze wiedziec takie rzeczy.

mam kolejny problem, chcialbym, aby wreszcie, gdy pojdziemy z surrayem gdziestam, w trakcie drogi inzynier zaczal budowac elektrownie na syberyt, i mniej wiecej gdy dojdziemy, surray cos powie, a elektrownia nagle wybuchnie no i mam:

Code: Select all

export function eksplozjaElektrowni;
 begin
      AddComBuild(inz1, 28, 10, 6, 3);
      wait(0$7);
      DestroyUnit(bud);
      Say(sasza, 'gen3');
      InGameOff;
 end;


on BuildingStarted(bud, inz) do
 begin
  if inz=inz1 then
  if GetBType(bud)=b_siberite_power then
 begin
  syb_elek=bud;
 end;
 end;
ten event, zeby nadac budynkowi ident
no i w trakcie kodu:

Code: Select all

//cos tam cos tam
         AddComMoveXY(sasza, 11, 5);
         AddComMoveXY(naukowiec5, 12, 6);
         wait(0$8);
         CenterNowOnUnits(sasza);
         wait(0$8);
         CenterNowOnUnits(sasza);
         wait(0$4);
         eksplozjaElektrowni;
         wait(0$5);
         Say(naukowiec5, 'nauk4_6');

//cos tam cos tam
i podczas kompilacji wyskakuje bład 'undefined identifier:bud' i zaznacza linijke z DestroyUnit. do tego inzynier nie buduje nawet elektrowni. sklad jest, surowce sa, technologie i restrykcje tez sa.
Wszyscy jesteśmy żołnierzami: WYDANE
https://original-war.net/files.php?id=174
shoter
Soldier level 1
Soldier level 1
Posts: 13
Joined: Thu Jul 25, 2013 12:23 am

Re: Nie działające enable

Post by shoter »

Jeśli są błędy podczas kompilacji to nie licz na dobre działanie skryptów.
Proponuje zamiast bud postawić syb_elek
User avatar
Serpent
Soldier level 10
Soldier level 10
Estonia
Posts: 4175
Joined: Tue Jul 07, 2009 9:13 pm
Location: Polska - EuroStan ZSRE
Contact:

Re: Nie działające enable

Post by Serpent »

Code: Select all

Export kopalnia;
On BuildingStarted(b, eng) do
begin

If GetSide(b) = STRONA_KTORA_BUDUJE then
begin

If GetBType(b) = b_siberium_mine then
kopalnia := GetBType(b)
end;

end;


Export function EksplozjaElektrowni;
begin
SetLives(kopalnia, 1);
end;
Epickie teksty:
Marek1906: jak zrobic aby sail był zielony?
Kvantovy: Wszystko normalne, wszystko w koło było dziwne
Kvantovy:: To jest fajne, że to nie jest takie głupie
Kvantovy:: remove sos from kanapeczka
Kvantovy:: zdarzają się rzezy które sie filozofom nie śniły
Cenwen: problemem jest gejostwo
"Taki z niego fizyk jak ze mnie baletnica" - Profesor Scholtze o Kvantovym.
JAKBYŁ BYM CZECHEM TO BYM ROZŁOŻYŁ NAMIOT ~Kvanciak
MasterKiller
Soldier level 6
Soldier level 6
Posts: 343
Joined: Tue Aug 09, 2011 5:51 pm

Re: Nie działające enable

Post by MasterKiller »

Zrobilem tak jak mi serpent powiedzial, mam cos takiego

Code: Select all

export syb_elek;

on BuildingStarted(bud, inz) do
 begin
  if GetSide(bud)=1 then
  begin
  if GetBType(bud)=28 then
  syb_elek=GetBType(bud);
 end;
 end;


//cos tam
Say(naukowiec5, 'nauk4_6');
         SetLives(syb_elek, 0);
         Say(sasza, 'gen3');
         InGameOff;
//cos tam
i co najdziwniejsze wybucha elektrownia, ale na rope, stojaca nieopodal w bazie. 28 to stala oznaczajaca b_siberite_power, i probowalem wpisywac zarowno liczbe jak i 'b_siberite_power' i wybucha ciagle elektrownia na rope. nie wiem, moze te ciagle dziwne bledy maja cos wspolnego z tym, ze przypadkowo zapisalem na go to game mode? jak rok temu tak zrobilem, to mi sie cala misja zwalila, no ale tutaj wszystko chodzilo, wiec sie nie przejmowalem tym. jedynie mam problem, ze jak rozpoczyna sie misja, to mam portrecik zabitego gl. bohatera(testowalem , obok samego bohatera i glupio to wyglada. no i jak odpalam gre w edytorze przez game mode, to sa ostre bugi, koles jest zolnierzem, a nie naukowcem, dialogi nie dzialaja, ingameony/offy czasem tak, czasem nie. jak wlaczam przez OW to wszystko dziala, oprocz tej nieszczesnej elektrowni. pamietam, ze rok temu nefarem jakos mi naprawil misje, ale jak to zrobil-nie powiedzial :P a troche szkoda mi, bo mam tam swoja wlasna mape, i troche czasu zajeloby mi ponowne nakladanie struktury, wysokosci, trawy, bazy, drzew itp.
Wszyscy jesteśmy żołnierzami: WYDANE
https://original-war.net/files.php?id=174
User avatar
Serpent
Soldier level 10
Soldier level 10
Estonia
Posts: 4175
Joined: Tue Jul 07, 2009 9:13 pm
Location: Polska - EuroStan ZSRE
Contact:

Re: Nie działające enable

Post by Serpent »

Usuń event i daj:

syb_elekt := FilterAllUnits([[f_side, strona_kopalni], [f_btype, b_siberite_mine]]);

I potem w every:
SetLives(syb_elekt[1], 1);
Epickie teksty:
Marek1906: jak zrobic aby sail był zielony?
Kvantovy: Wszystko normalne, wszystko w koło było dziwne
Kvantovy:: To jest fajne, że to nie jest takie głupie
Kvantovy:: remove sos from kanapeczka
Kvantovy:: zdarzają się rzezy które sie filozofom nie śniły
Cenwen: problemem jest gejostwo
"Taki z niego fizyk jak ze mnie baletnica" - Profesor Scholtze o Kvantovym.
JAKBYŁ BYM CZECHEM TO BYM ROZŁOŻYŁ NAMIOT ~Kvanciak
MasterKiller
Soldier level 6
Soldier level 6
Posts: 343
Joined: Tue Aug 09, 2011 5:51 pm

Re: Nie działające enable

Post by MasterKiller »

ale z jakiej paki to wyzej nie dziala? b_siberite_power to b_siberite_power, a nie b_oil_power

PS.
caly czas chodzi mi o elektrownie(b_siberite_power), nie kopalnie(b_siberite_mine) :P

SetLives(syb_elekt[1], 1);
za co odpowiada ta jedynka w kwadratowych nawiasach?
Wszyscy jesteśmy żołnierzami: WYDANE
https://original-war.net/files.php?id=174
User avatar
Serpent
Soldier level 10
Soldier level 10
Estonia
Posts: 4175
Joined: Tue Jul 07, 2009 9:13 pm
Location: Polska - EuroStan ZSRE
Contact:

Re: Nie działające enable

Post by Serpent »

Jedynka to pierwszy element z filtra, czyli 1 elektrownia. Pytanie czy działa.
Epickie teksty:
Marek1906: jak zrobic aby sail był zielony?
Kvantovy: Wszystko normalne, wszystko w koło było dziwne
Kvantovy:: To jest fajne, że to nie jest takie głupie
Kvantovy:: remove sos from kanapeczka
Kvantovy:: zdarzają się rzezy które sie filozofom nie śniły
Cenwen: problemem jest gejostwo
"Taki z niego fizyk jak ze mnie baletnica" - Profesor Scholtze o Kvantovym.
JAKBYŁ BYM CZECHEM TO BYM ROZŁOŻYŁ NAMIOT ~Kvanciak
MasterKiller
Soldier level 6
Soldier level 6
Posts: 343
Joined: Tue Aug 09, 2011 5:51 pm

Re: Nie działające enable

Post by MasterKiller »

Tak, nareszcie dziala, tylko musialem ustawic setlives na 0, bo jak bylo na 1, to inzynier blyskawicznie naprawial(ta scenka miala wygladac tak, ze inz zaczyna budowac elektrownie, i w trakcie budowy jebudlo). A i mialem obok druga elektrownie, stojaca od poczatku i musialem ja usunac bo wybuchala zamiast tej :D jak da sie wybrac ktory to element z filtra to gites.
Wszyscy jesteśmy żołnierzami: WYDANE
https://original-war.net/files.php?id=174
Post Reply