Mod, pare problemów z kodem.

Wszelkie pytania na temat SAIL'a i modowania OW.
Antworten
Benutzeravatar
Mezrox
Soldier level 1
Soldier level 1
Beiträge: 27
Registriert: Sa Mai 01, 2010 9:05 pm
Wohnort: Trójmiasto

Mod, pare problemów z kodem.

Beitrag von 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: Alles auswählen

//[...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: Alles auswählen

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: Alles auswählen

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: Alles auswählen

# 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: Alles auswählen

//[...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: Alles auswählen

//[...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 ;]
Benutzeravatar
Serpent
Soldier level 10
Soldier level 10
Estonia
Beiträge: 4169
Registriert: Di Jul 07, 2009 9:13 pm
Wohnort: Polska - EuroStan ZSRE
Kontaktdaten:

Re: Mod, pare problemów z kodem.

Beitrag von Serpent »

Code: Alles auswählen

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: Alles auswählen

//[...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: Alles auswählen

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: Alles auswählen

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
Benutzeravatar
Mezrox
Soldier level 1
Soldier level 1
Beiträge: 27
Registriert: Sa Mai 01, 2010 9:05 pm
Wohnort: Trójmiasto

Re: Mod, pare problemów z kodem.

Beitrag von Mezrox »

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

Code: Alles auswählen

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
Benutzeravatar
Serpent
Soldier level 10
Soldier level 10
Estonia
Beiträge: 4169
Registriert: Di Jul 07, 2009 9:13 pm
Wohnort: Polska - EuroStan ZSRE
Kontaktdaten:

Re: Mod, pare problemów z kodem.

Beitrag von Serpent »

Spróbuj event:

Code: Alles auswählen

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
Benutzeravatar
Mezrox
Soldier level 1
Soldier level 1
Beiträge: 27
Registriert: Sa Mai 01, 2010 9:05 pm
Wohnort: Trójmiasto

Re: Mod, pare problemów z kodem.

Beitrag von 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.
Benutzeravatar
Serpent
Soldier level 10
Soldier level 10
Estonia
Beiträge: 4169
Registriert: Di Jul 07, 2009 9:13 pm
Wohnort: Polska - EuroStan ZSRE
Kontaktdaten:

Re: Mod, pare problemów z kodem.

Beitrag von Serpent »

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

Code: Alles auswählen

RemoveEnvironmentArea(area);
Lub:

Code: Alles auswählen

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
Benutzeravatar
Mezrox
Soldier level 1
Soldier level 1
Beiträge: 27
Registriert: Sa Mai 01, 2010 9:05 pm
Wohnort: Trójmiasto

Re: Mod, pare problemów z kodem.

Beitrag von 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...
Benutzeravatar
Serpent
Soldier level 10
Soldier level 10
Estonia
Beiträge: 4169
Registriert: Di Jul 07, 2009 9:13 pm
Wohnort: Polska - EuroStan ZSRE
Kontaktdaten:

Re: Mod, pare problemów z kodem.

Beitrag von 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
Benutzeravatar
Mezrox
Soldier level 1
Soldier level 1
Beiträge: 27
Registriert: Sa Mai 01, 2010 9:05 pm
Wohnort: Trójmiasto

Re: Mod, pare problemów z kodem.

Beitrag von 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 ;)
Benutzeravatar
Nitek
Community Veteran
Community Veteran
Beiträge: 997
Registriert: Mo Apr 13, 2009 4:13 pm
Wohnort: Białystok
Kontaktdaten:

Re: Mod, pare problemów z kodem.

Beitrag von Nitek »

Serpent hat geschrieben:Everteiment
W00T? Co to Everteiment?
Benutzeravatar
Serpent
Soldier level 10
Soldier level 10
Estonia
Beiträge: 4169
Registriert: Di Jul 07, 2009 9:13 pm
Wohnort: Polska - EuroStan ZSRE
Kontaktdaten:

Re: Mod, pare problemów z kodem.

Beitrag von Serpent »

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

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

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

Code: Alles auswählen

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
Benutzeravatar
Mezrox
Soldier level 1
Soldier level 1
Beiträge: 27
Registriert: Sa Mai 01, 2010 9:05 pm
Wohnort: Trójmiasto

Re: Mod, pare problemów z kodem.

Beitrag von Mezrox »

Serpent hat geschrieben:Spróbuj event:

Code: Alles auswählen

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?
Benutzeravatar
Serpent
Soldier level 10
Soldier level 10
Estonia
Beiträge: 4169
Registriert: Di Jul 07, 2009 9:13 pm
Wohnort: Polska - EuroStan ZSRE
Kontaktdaten:

Re: Mod, pare problemów z kodem.

Beitrag von Serpent »

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

Code: Alles auswählen

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: Alles auswählen

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
Benutzeravatar
Mezrox
Soldier level 1
Soldier level 1
Beiträge: 27
Registriert: Sa Mai 01, 2010 9:05 pm
Wohnort: Trójmiasto

Re: Mod, pare problemów z kodem.

Beitrag von Mezrox »

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

Code: Alles auswählen

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: Alles auswählen

--------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;
Benutzeravatar
Serpent
Soldier level 10
Soldier level 10
Estonia
Beiträge: 4169
Registriert: Di Jul 07, 2009 9:13 pm
Wohnort: Polska - EuroStan ZSRE
Kontaktdaten:

Re: Mod, pare problemów z kodem.

Beitrag von Serpent »

Code: Alles auswählen

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
Antworten