Mod, pare problemów z kodem.

Wszelkie pytania na temat SAIL'a i modowania OW.
Post Reply
User avatar
Mezrox
Soldier level 1
Soldier level 1
Posts: 27
Joined: Sat May 01, 2010 9:05 pm
Location: Trójmiasto

Mod, pare problemów z kodem.

Post by 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

Code: Select all

//[...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

Code: Select all

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

Code: Select all

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:

Code: Select all

# 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

Code: Select all

//[...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

Code: Select all

//[...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 ;]
User avatar
Serpent
Soldier level 10
Soldier level 10
Estonia
Posts: 4169
Joined: Tue Jul 07, 2009 9:13 pm
Location: Polska - EuroStan ZSRE
Contact:

Re: Mod, pare problemów z kodem.

Post by Serpent »

Code: Select all

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.

Code: Select all

//[...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.

Code: Select all

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?

Code: Select all

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
User avatar
Mezrox
Soldier level 1
Soldier level 1
Posts: 27
Joined: Sat May 01, 2010 9:05 pm
Location: Trójmiasto

Re: Mod, pare problemów z kodem.

Post by Mezrox »

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

Code: Select all

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
User avatar
Serpent
Soldier level 10
Soldier level 10
Estonia
Posts: 4169
Joined: Tue Jul 07, 2009 9:13 pm
Location: Polska - EuroStan ZSRE
Contact:

Re: Mod, pare problemów z kodem.

Post by Serpent »

Spróbuj event:

Code: Select all

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
User avatar
Mezrox
Soldier level 1
Soldier level 1
Posts: 27
Joined: Sat May 01, 2010 9:05 pm
Location: Trójmiasto

Re: Mod, pare problemów z kodem.

Post by 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.
User avatar
Serpent
Soldier level 10
Soldier level 10
Estonia
Posts: 4169
Joined: Tue Jul 07, 2009 9:13 pm
Location: Polska - EuroStan ZSRE
Contact:

Re: Mod, pare problemów z kodem.

Post by Serpent »

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

Code: Select all

RemoveEnvironmentArea(area);
Lub:

Code: Select all

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
User avatar
Mezrox
Soldier level 1
Soldier level 1
Posts: 27
Joined: Sat May 01, 2010 9:05 pm
Location: Trójmiasto

Re: Mod, pare problemów z kodem.

Post by 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...
User avatar
Serpent
Soldier level 10
Soldier level 10
Estonia
Posts: 4169
Joined: Tue Jul 07, 2009 9:13 pm
Location: Polska - EuroStan ZSRE
Contact:

Re: Mod, pare problemów z kodem.

Post by 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
User avatar
Mezrox
Soldier level 1
Soldier level 1
Posts: 27
Joined: Sat May 01, 2010 9:05 pm
Location: Trójmiasto

Re: Mod, pare problemów z kodem.

Post by 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 ;)
User avatar
Nitek
Community Veteran
Community Veteran
Posts: 997
Joined: Mon Apr 13, 2009 4:13 pm
Location: Białystok
Contact:

Re: Mod, pare problemów z kodem.

Post by Nitek »

Serpent wrote:Everteiment
W00T? Co to Everteiment?
User avatar
Serpent
Soldier level 10
Soldier level 10
Estonia
Posts: 4169
Joined: Tue Jul 07, 2009 9:13 pm
Location: Polska - EuroStan ZSRE
Contact:

Re: Mod, pare problemów z kodem.

Post by Serpent »

Nitek wrote:
Serpent wrote:Everteiment
W00T? Co to Everteiment?
Czepiasz się -.-

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

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

Code: Select all

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
User avatar
Mezrox
Soldier level 1
Soldier level 1
Posts: 27
Joined: Sat May 01, 2010 9:05 pm
Location: Trójmiasto

Re: Mod, pare problemów z kodem.

Post by Mezrox »

Serpent wrote:Spróbuj event:

Code: Select all

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?
User avatar
Serpent
Soldier level 10
Soldier level 10
Estonia
Posts: 4169
Joined: Tue Jul 07, 2009 9:13 pm
Location: Polska - EuroStan ZSRE
Contact:

Re: Mod, pare problemów z kodem.

Post by Serpent »

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

Code: Select all

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 -.-

Code: Select all

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
User avatar
Mezrox
Soldier level 1
Soldier level 1
Posts: 27
Joined: Sat May 01, 2010 9:05 pm
Location: Trójmiasto

Re: Mod, pare problemów z kodem.

Post by Mezrox »

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

Code: Select all

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:

Code: Select all

--------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;
User avatar
Serpent
Soldier level 10
Soldier level 10
Estonia
Posts: 4169
Joined: Tue Jul 07, 2009 9:13 pm
Location: Polska - EuroStan ZSRE
Contact:

Re: Mod, pare problemów z kodem.

Post by Serpent »

Code: Select all

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
Post Reply