Mod, pare problemów z kodem.

Wszelkie pytania na temat SAIL'a i modowania OW.
Répondre
Avatar de Usuario
Mezrox
Soldier level 1
Soldier level 1
Messages : 27
Inscription : Sab May 01, 2010 9:05 pm
Ubicación : Trójmiasto

Mod, pare problemów z kodem.

Mensaje par 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

Código: Seleccionar todo

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

Código: Seleccionar todo

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

Código: Seleccionar todo

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:

Código: Seleccionar todo

# 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

Código: Seleccionar todo

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

Código: Seleccionar todo

//[...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 ;]
Avatar de Usuario
Serpent
Soldier level 10
Soldier level 10
Estonia
Messages : 4169
Inscription : Mar Jul 07, 2009 9:13 pm
Ubicación : Polska - EuroStan ZSRE
Contact :

Re: Mod, pare problemów z kodem.

Mensaje par Serpent »

Código: Seleccionar todo

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.

Código: Seleccionar todo

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

Código: Seleccionar todo

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?

Código: Seleccionar todo

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
Avatar de Usuario
Mezrox
Soldier level 1
Soldier level 1
Messages : 27
Inscription : Sab May 01, 2010 9:05 pm
Ubicación : Trójmiasto

Re: Mod, pare problemów z kodem.

Mensaje par Mezrox »

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

Código: Seleccionar todo

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
Avatar de Usuario
Serpent
Soldier level 10
Soldier level 10
Estonia
Messages : 4169
Inscription : Mar Jul 07, 2009 9:13 pm
Ubicación : Polska - EuroStan ZSRE
Contact :

Re: Mod, pare problemów z kodem.

Mensaje par Serpent »

Spróbuj event:

Código: Seleccionar todo

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
Avatar de Usuario
Mezrox
Soldier level 1
Soldier level 1
Messages : 27
Inscription : Sab May 01, 2010 9:05 pm
Ubicación : Trójmiasto

Re: Mod, pare problemów z kodem.

Mensaje par 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.
Avatar de Usuario
Serpent
Soldier level 10
Soldier level 10
Estonia
Messages : 4169
Inscription : Mar Jul 07, 2009 9:13 pm
Ubicación : Polska - EuroStan ZSRE
Contact :

Re: Mod, pare problemów z kodem.

Mensaje par Serpent »

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

Código: Seleccionar todo

RemoveEnvironmentArea(area);
Lub:

Código: Seleccionar todo

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
Avatar de Usuario
Mezrox
Soldier level 1
Soldier level 1
Messages : 27
Inscription : Sab May 01, 2010 9:05 pm
Ubicación : Trójmiasto

Re: Mod, pare problemów z kodem.

Mensaje par 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...
Avatar de Usuario
Serpent
Soldier level 10
Soldier level 10
Estonia
Messages : 4169
Inscription : Mar Jul 07, 2009 9:13 pm
Ubicación : Polska - EuroStan ZSRE
Contact :

Re: Mod, pare problemów z kodem.

Mensaje par 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
Avatar de Usuario
Mezrox
Soldier level 1
Soldier level 1
Messages : 27
Inscription : Sab May 01, 2010 9:05 pm
Ubicación : Trójmiasto

Re: Mod, pare problemów z kodem.

Mensaje par 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 ;)
Avatar de Usuario
Nitek
Community Veteran
Community Veteran
Messages : 997
Inscription : Lun Abr 13, 2009 4:13 pm
Ubicación : Białystok
Contact :

Re: Mod, pare problemów z kodem.

Mensaje par Nitek »

Serpent escribió:Everteiment
W00T? Co to Everteiment?
Avatar de Usuario
Serpent
Soldier level 10
Soldier level 10
Estonia
Messages : 4169
Inscription : Mar Jul 07, 2009 9:13 pm
Ubicación : Polska - EuroStan ZSRE
Contact :

Re: Mod, pare problemów z kodem.

Mensaje par Serpent »

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

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

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

Código: Seleccionar todo

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
Avatar de Usuario
Mezrox
Soldier level 1
Soldier level 1
Messages : 27
Inscription : Sab May 01, 2010 9:05 pm
Ubicación : Trójmiasto

Re: Mod, pare problemów z kodem.

Mensaje par Mezrox »

Serpent escribió:Spróbuj event:

Código: Seleccionar todo

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?
Avatar de Usuario
Serpent
Soldier level 10
Soldier level 10
Estonia
Messages : 4169
Inscription : Mar Jul 07, 2009 9:13 pm
Ubicación : Polska - EuroStan ZSRE
Contact :

Re: Mod, pare problemów z kodem.

Mensaje par Serpent »

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

Código: Seleccionar todo

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

Código: Seleccionar todo

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
Avatar de Usuario
Mezrox
Soldier level 1
Soldier level 1
Messages : 27
Inscription : Sab May 01, 2010 9:05 pm
Ubicación : Trójmiasto

Re: Mod, pare problemów z kodem.

Mensaje par Mezrox »

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

Código: Seleccionar todo

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:

Código: Seleccionar todo

--------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;
Avatar de Usuario
Serpent
Soldier level 10
Soldier level 10
Estonia
Messages : 4169
Inscription : Mar Jul 07, 2009 9:13 pm
Ubicación : Polska - EuroStan ZSRE
Contact :

Re: Mod, pare problemów z kodem.

Mensaje par Serpent »

Código: Seleccionar todo

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
Répondre