Mod, pare problemów z kodem.

Wszelkie pytania na temat SAIL'a i modowania OW.
Používateľov profilový obrázok
Mezrox
Soldier level 1
Soldier level 1
Príspevky: 27
Dátum registrácie: So Máj 01, 2010 9:05 pm
Bydlisko: Trójmiasto

Mod, pare problemów z kodem.

Príspevok od používateľa Mezrox »

Witam!
Swego czasu zacząłem robić moda do gry, w celu czysto rozrywkowym,potem dałem sobie z nim spokój na jakiś czas i teraz zrobilem wielki powrót ;p, ale po paru godzinach męczenie się z kodem wiem, że sam sobie nie poradzę.
Oto moje problemy:
1. Zapis Bazy i wczytanie jej w następnej(znalazłem kod ale nie wiem jak go umieścić)
Zapis

Kód: Vybrať všetko

//[...jakiś wcześniejszy kod]
every 0$10 do
var gorky, tmp, t, filter,un;
begin
    gorky:=[];
    filter:=FilterAllUnits([[f_side,3],[f_type,unit_building]]);
    for un in filter do
    begin
      if GetBType(un) in [b_lab, b_lab_half, b_lab_full] then
        gorky:=gorky^[[GetBType(un),GetX(un),GetY(un),GetDir(un),GetBLevel(un),GetNation(un),GetLabKind(un,1),GetLabKind(un,2)]]
      else
        if GetBType(un) in [b_bunker,b_turret] then
          gorky:=gorky^[[getbtype(un),getx(un),gety(un),getdir(un),getblevel(un),getnation(un),getbweapon(un)]]
      else
        gorky:=gorky^[[GetBType(un),GetX(un),GetY(un),GetDir(un),GetBLevel(un),GetNation(un)]]
    end;
    SaveVariable(gorky,'gorky');
end;
//[...jakiś późniejszy kod]
Wczytanie

Kód: Vybrať všetko

var zakladna,tmp,tmp1,x,y,r;

starting
begin
  if testvariable('gorky') then zakladna=loadvariable('gorky',[])
  else msg('neny kair');

  uc_nation=nation_russian;
  uc_side=2;
  x=0;y=0;
  for tmp in zakladna do
    case tmp[1] of
      b_lab,b_lab_half,b_lab_full:begin
        bc_type=tmp[1];
        bc_level=tmp[5];
        bc_kind1=tmp[6];
        bc_kind2=tmp[7];
        tmp1=createandplacebuildingxyd(tmp[2],tmp[3],tmp[4]);
        x=x+tmp[2];y=y+tmp[3];
        setLives(tmp1,1000);
      end;
      b_bunker,b_turret:begin
        bc_type=tmp[1];
        bc_level=tmp[5];
        tmp1=createandplacebuildingxyd(tmp[2],tmp[3],tmp[4]);
        if tmp1 then placeweaponturret(tmp1,tmp[6]);
        x=x+tmp[2];y=y+tmp[3];
      end;
      b_oil_mine,b_oil_power,b_solar_power,b_siberite_power,b_siberite_mine:begin
        bc_type=tmp[1];
        bc_level=tmp[5];
        tmp1=createandplacebuildingxyd(tmp[2],tmp[3],tmp[4]);
        x=x+tmp[2];y=y+tmp[3];
      end;
   end;
//[...jakiś późniejszy kod]
2. zmiana misji po śmierci (JMM) i przyznanie medali

Kód: Vybrať všetko

every 0$01 trigger IsDead(JMM) do
Begin
ChangeMissionObjectives('C7');
if IsDead(JMM) then AddMedal('med2', 1) else AddMedal('med2', -1);
end;
w pliku txt mam:

Kód: Vybrať všetko

# C5
Add Secondary zabij
- Zabij J. Morpheusa-Matoła.
#

# C7
Out zabij
#
3. gdy wszyscy ocaleli są w arei następuje kod końca misji

Kód: Vybrať všetko

//[...jakiś wcześniejszy kod]
every 0$1 trigger filterunitsinarea(A6,[[f_alive],[f_side,3],[f_type,unit_human]]) do
Begin
...//kod końca misji który wydaje się puki co działac
end;
4. Kod usunięcia celu misji gdy surowiec(syberyt) jest w magazynie

Kód: Vybrať všetko

//[...jakiś wcześniejszy kod]
every 0$1 trigger depot1 do
begin
sibu:=GetResourceType(GetBase(depot1), mat_siberit);///mam var sibu; na początku
    if sibu>30 then
    ChangeMissionObjectives('C3');
    AddMedal('med3',1)
end;
//[...jakiś późniejszy kod]
to są skrawki kodów wycięte z różnych misji, jeżeli trzeba będzie czegoś więcej to postaram się dodać, Oczywiście proszę o pomoc z wyżej wymienionymi problemami(kompilacja działa poprawnie).
Z góry dzięki ;]
Používateľov profilový obrázok
Serpent
Soldier level 10
Soldier level 10
Estonia
Príspevky: 4169
Dátum registrácie: Ut Júl 07, 2009 9:13 pm
Bydlisko: Polska - EuroStan ZSRE
Kontaktovať používateľa:

Re: Mod, pare problemów z kodem.

Príspevok od používateľa Serpent »

Kód: Vybrať všetko

every 0$01 trigger IsDead(JMM) do
Begin
ChangeMissionObjectives('C7');
if IsDead(JMM) then AddMedal('med2', 1) else AddMedal('med2', -1);
end;
Jeżeli zginie JMM i jeśli zginie JMM, jednym słowem brak logiki w tym kodzie.

Kód: Vybrať všetko

//[...jakiś wcześniejszy kod]
every 0$1 trigger filterunitsinarea(A6,[[f_alive],[f_side,3],[f_type,unit_human]]) do
Begin
...//kod końca misji który wydaje się puki co działac
end;
Brak definicji ilu ma ich być tych ocalonych.

Kód: Vybrať všetko

every 0$1 trigger depot1 do
begin
sibu:=GetResourceType(GetBase(depot1), mat_siberit);///mam var sibu; na początku
    if sibu>30 then
    ChangeMissionObjectives('C3');
    AddMedal('med3',1)
Nie lepiej tak?

Kód: Vybrať všetko

Every 0$01 trigger GetResourceType(GetBase(depot1), mat_siberit) > 30 do

Kod na zapis bazy jest zbyt nieczytelny jak dla mnie ;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
Používateľov profilový obrázok
Mezrox
Soldier level 1
Soldier level 1
Príspevky: 27
Dátum registrácie: So Máj 01, 2010 9:05 pm
Bydlisko: Trójmiasto

Re: Mod, pare problemów z kodem.

Príspevok od používateľa Mezrox »

odp A) wiem że brak logiki ale nie wiem jak to połączyć a nawet w takiej postaci

Kód: Vybrať všetko

every 0$01 trigger IsDead(JMM) do
Begin
ChangeMissionObjectives('C7');
end;
nie uwzględnia mi zmiany celów

ODP B) właśnie o to chodzi że w zależności ilu przeżyje, wcześniej miałem >=6 ale jak mam 8 to 2 nie musi dojść i to nie wygląda estetycznie.

ODP C) oo wygląda ładnie sprawdzę ;)

ODP D) Dla mnie też;p bo próbowałem różnych jedne działały w części inne wcale xD
Používateľov profilový obrázok
Serpent
Soldier level 10
Soldier level 10
Estonia
Príspevky: 4169
Dátum registrácie: Ut Júl 07, 2009 9:13 pm
Bydlisko: Polska - EuroStan ZSRE
Kontaktovať používateľa:

Re: Mod, pare problemów z kodem.

Príspevok od používateľa Serpent »

Spróbuj event:

Kód: Vybrať všetko

On UnitDestroy(un) do
begin

      If un = JMM then
      begin
      ChangeMissionObjectives('C7');
      end;

end;

Co wygląda nieestetycznie? Sorly ale twój kod też nie jest szczytem estetyki x)


EDIT:
Tu napisałeś że działa ci kod na zapis bazy:
http://forum.original-war.net/viewtopic ... 0&start=30
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
Používateľov profilový obrázok
Mezrox
Soldier level 1
Soldier level 1
Príspevky: 27
Dátum registrácie: So Máj 01, 2010 9:05 pm
Bydlisko: Trójmiasto

Re: Mod, pare problemów z kodem.

Príspevok od používateľa Mezrox »

tu nie chodzi o estetykę kodu tylko o to że 2 ludków stoi na końcu mapy a 6 dojdzie do arei a i tak jest koniec, a jak bym machnał >= 8 to przy śmierci jednego misja jest nie do przejścia.

jest właśnie tak jak napisałem, działa ale po części, nie zapisuje mi środowiska i budynki na drzewach powstać nie mogą, dlatego szukałem jakiegoś zmodyfikowanego kodu ale jednak tamten jest najlepszy tylko muszę się dowiedzieć jak zapisać środowisko.
Používateľov profilový obrázok
Serpent
Soldier level 10
Soldier level 10
Estonia
Príspevky: 4169
Dátum registrácie: Ut Júl 07, 2009 9:13 pm
Bydlisko: Polska - EuroStan ZSRE
Kontaktovať používateľa:

Re: Mod, pare problemów z kodem.

Príspevok od používateľa Serpent »

Środowiska z tego co wiem nie da się zapisać. Możesz usunąć drzewa za pomocą kodu.

Kód: Vybrať všetko

RemoveEnvironmentArea(area);
Lub:

Kód: Vybrať všetko

RemoveEnvironment(x, y);
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
Používateľov profilový obrázok
Mezrox
Soldier level 1
Soldier level 1
Príspevky: 27
Dátum registrácie: So Máj 01, 2010 9:05 pm
Bydlisko: Trójmiasto

Re: Mod, pare problemów z kodem.

Príspevok od používateľa Mezrox »

ale ja chcę by tylko te drzewa co wykoszę znikły, a nie wszystkie. Wydaje mi się, że SaveVariable(gorky,'gorky'); powinno zapisywać wykarczowane krzaki...
Používateľov profilový obrázok
Serpent
Soldier level 10
Soldier level 10
Estonia
Príspevky: 4169
Dátum registrácie: Ut Júl 07, 2009 9:13 pm
Bydlisko: Polska - EuroStan ZSRE
Kontaktovať používateľa:

Re: Mod, pare problemów z kodem.

Príspevok od používateľa Serpent »

Po to masz komendę RemoveEverteiment(x,y) ... Wystarczy za x i y wpisać odpowiednio
GetX(budynek) GetY(budynek), włącz myślenie -.-
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
Používateľov profilový obrázok
Mezrox
Soldier level 1
Soldier level 1
Príspevky: 27
Dátum registrácie: So Máj 01, 2010 9:05 pm
Bydlisko: Trójmiasto

Re: Mod, pare problemów z kodem.

Príspevok od používateľa Mezrox »

kk, ale nie wiem kto jakie budynki tam wybuduje podczas misji, to musiała by być komenda "jeśli wybudowano tam jakikolwiek budynek to usuń krzak", jak znasz to chętnie go poznam ;)
Používateľov profilový obrázok
Nitek
Community Veteran
Community Veteran
Príspevky: 997
Dátum registrácie: Po Apr 13, 2009 4:13 pm
Bydlisko: Białystok
Kontaktovať používateľa:

Re: Mod, pare problemów z kodem.

Príspevok od používateľa Nitek »

Serpent napísal:Everteiment
W00T? Co to Everteiment?
Používateľov profilový obrázok
Serpent
Soldier level 10
Soldier level 10
Estonia
Príspevky: 4169
Dátum registrácie: Ut Júl 07, 2009 9:13 pm
Bydlisko: Polska - EuroStan ZSRE
Kontaktovať používateľa:

Re: Mod, pare problemów z kodem.

Príspevok od používateľa Serpent »

Nitek napísal:
Serpent napísal:Everteiment
W00T? Co to Everteiment?
Czepiasz się -.-

Mezrox:
Wklep tu swój kod na wczytywanie bazy.

Niżej moja propozycja, powinno działać:

Kód: Vybrať všetko

export base;
var jedn, uni;
Begin
baza=LoadVariable('Baza',[]);
for jedn in baza do
  Begin
   uc_side=jedn[7];
   uc_nation=jedn[6];
   bc_type=jedn[1];
   bc_level=jedn[5];
   
If jedn[1] in [6,7,8] then
   Begin
    bc_kind1=jedn[8];
    bc_kind2=jedn[9];
   end;

RemoveEnvironment(jedn[2], jedn[3]);  
uni=CreateAndPlaceBuildingXYD(jedn[2],jedn[3],jedn[4]);
   
If jedn[1] in [32,33] then
    PlaceWeaponTurret(uni,jedn[8]);
   end;

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
Používateľov profilový obrázok
Mezrox
Soldier level 1
Soldier level 1
Príspevky: 27
Dátum registrácie: So Máj 01, 2010 9:05 pm
Bydlisko: Trójmiasto

Re: Mod, pare problemów z kodem.

Príspevok od používateľa Mezrox »

Serpent napísal:Spróbuj event:

Kód: Vybrať všetko

On UnitDestroy(un) do
begin

      If un = JMM then
      begin
      ChangeMissionObjectives('C7');
      end;

end;
wyskakuje "error 'ow_event' expected but 'UnitDestroy' found"

Co do kodu na wczytanie bazy to pojawia się tylko skład, drzewa które wyciołęm są na swoim miejscu ;(, chyba muszę się jeszcze kodem zapisu pobawić...

PS. czy za każdym razem gdy zmienię coś w sailu muszę od początku wszystkie misje przechodzić czy wystarczy że przejdę tą w której kod zmieniłem?
Používateľov profilový obrázok
Serpent
Soldier level 10
Soldier level 10
Estonia
Príspevky: 4169
Dátum registrácie: Ut Júl 07, 2009 9:13 pm
Bydlisko: Polska - EuroStan ZSRE
Kontaktovať používateľa:

Re: Mod, pare problemów z kodem.

Príspevok od používateľa Serpent »

Co do eventu to moja pomyłka, powinno być:

Kód: Vybrať všetko

On UnitDestroyed(un) do
Co do kodu na wczytanie bazy to pojawia się tylko skład, drzewa które wyciołęm są na swoim miejscu ;(, chyba muszę się jeszcze kodem zapisu pobawić...
Miałeś wkleić swój kod -.-

Kód: Vybrať všetko

PS. czy za każdym razem gdy zmienię coś w sailu muszę od początku wszystkie misje przechodzić czy wystarczy że przejdę tą w której kod zmieniłem?
Nie. Wystarczy tylko ta zedytowana chyba że dodajesz nowych bohaterów i chcesz ich wczytać z poprzedniej misji.
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
Používateľov profilový obrázok
Mezrox
Soldier level 1
Soldier level 1
Príspevky: 27
Dátum registrácie: So Máj 01, 2010 9:05 pm
Bydlisko: Trójmiasto

Re: Mod, pare problemów z kodem.

Príspevok od používateľa Mezrox »

Ze wszystkich problemów pozostał jeszcze jeden, zapis i wczytanie środowiska, budynki się ładnie pojawiają, ale krzaczki też. Co do

Kód: Vybrať všetko

On UnitDestroyed(un) do
begin

      If un = JMM then
      begin
      ChangeMissionObjectives('C7');
      end;

end;
to ładnie wygląda i się kompiluje, ale celu nie skreśla, pewnie gdzieś mam jakiś głupi błąd, ale to trzeciożędna sprawa.

Kod na zapis i wczytanie wygląda teraz tak(jak wcześniej zresztą)Kod Moonstrider-a:

Kód: Vybrať všetko

--------ZAPIS--------
export Baza;
var jedn, filtr;

SaveVariable(ListEnvironmentArea(CCA),'Envir');
Baza=[];
filtr=FilterAllUnits([[f_side,3],[f_type,3]]);
for jedn in filtr do
  Begin
   if GetBType(jedn) in [6,7,8] then
    baza=baza^[[GetBType(jedn),GetX(jedn),GetY(jedn),GetDir(jedn),GetBLevel(jedn),GetNation(jedn),GetSide(jedn),GetLabKind(jedn,1),GetLabKind(jedn,2)]]
   else
    if GetBType(jedn) in [32,33] then
     baza=baza^[[GetBType(jedn),GetX(jedn),GetY(jedn),GetDir(jedn),GetBLevel(jedn),GetNation(jedn),GetSide(jedn),GetBWeapon(jedn)]]
    else
    baza=baza^[[GetBType(jedn),GetX(jedn),GetY(jedn),GetDir(jedn),GetBLevel(jedn),GetNation(jedn),GetSide(jedn)]];
  end;
SaveVariable(Baza,'Baza');


------ODCZYT--------
export baza;
var jedn, uni;
var map_env;


Starting
Begin

map_env:=LoadVariable('Envir',[]);
if map_env then
  PlaceEnvironmentList(map_env);


baza=LoadVariable('Baza',[]);
for jedn in baza do
  Begin
  uc_side=jedn[7];
  uc_nation=jedn[6];
  bc_type=jedn[1];
  bc_level=jedn[5];
   if jedn[1] in [6,7,8] then
    Begin
    bc_kind1=jedn[8];
    bc_kind2=jedn[9];
    end;
  uni=CreateAndPlaceBuildingXYD(jedn[2],jedn[3],jedn[4]);
   if jedn[1] in [32,33] then
    PlaceWeaponTurret(uni,jedn[8]);
  end;
Používateľov profilový obrázok
Serpent
Soldier level 10
Soldier level 10
Estonia
Príspevky: 4169
Dátum registrácie: Ut Júl 07, 2009 9:13 pm
Bydlisko: Polska - EuroStan ZSRE
Kontaktovať používateľa:

Re: Mod, pare problemów z kodem.

Príspevok od používateľa Serpent »

Kód: Vybrať všetko

Every 0$01 do
begin
Evenr;
PrepareBase;
end;


Function Evenr;
var map_env;
begin
map_env:=LoadVariable('Envir',[]);

If map_env then
  PlaceEnvironmentList(map_env);
end;

Function PrepareBase;
var jedn, baza, uni;
begin

baza=LoadVariable('Baza',[]);

for jedn in baza do
  Begin
  uc_side=jedn[7];
  uc_nation=jedn[6];
  bc_type=jedn[1];
  bc_level=jedn[5];
   
  If jedn[1] in [6,7,8] then
    Begin
    bc_kind1=jedn[8];
    bc_kind2=jedn[9];
    end;
  
  uni=CreateAndPlaceBuildingXYD(jedn[2],jedn[3],jedn[4]);
  
  If jedn[1] in [32,33] then
    PlaceWeaponTurret(uni,jedn[8]);
end;


Jak dla mnie wszystko wygląda ok. Sprawdź czy dobrze jeszcze zapisuje ci środowisko.
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
Napísať odpoveď