Mod, pare problemów z kodem.

Wszelkie pytania na temat SAIL'a i modowania OW.
Avatar de l’utilisateur
Mezrox
Soldier level 1
Soldier level 1
Príspevky: 27
Dátum registrácie: sam. mai 01, 2010 9:05 pm
Localisation: Trójmiasto

Mod, pare problemów z kodem.

Message 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

Code : Tout sélectionner

//[...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 : Tout sélectionner

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 : Tout sélectionner

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 : Tout sélectionner

# 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 : Tout sélectionner

//[...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 : Tout sélectionner

//[...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 l’utilisateur
Serpent
Soldier level 10
Soldier level 10
Estonia
Príspevky: 4169
Dátum registrácie: mar. juil. 07, 2009 9:13 pm
Localisation: Polska - EuroStan ZSRE
Kontaktovať používateľa:

Re: Mod, pare problemów z kodem.

Message od používateľa Serpent »

Code : Tout sélectionner

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 : Tout sélectionner

//[...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 : Tout sélectionner

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 : Tout sélectionner

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 l’utilisateur
Mezrox
Soldier level 1
Soldier level 1
Príspevky: 27
Dátum registrácie: sam. mai 01, 2010 9:05 pm
Localisation: Trójmiasto

Re: Mod, pare problemów z kodem.

Message od používateľa Mezrox »

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

Code : Tout sélectionner

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 l’utilisateur
Serpent
Soldier level 10
Soldier level 10
Estonia
Príspevky: 4169
Dátum registrácie: mar. juil. 07, 2009 9:13 pm
Localisation: Polska - EuroStan ZSRE
Kontaktovať používateľa:

Re: Mod, pare problemów z kodem.

Message od používateľa Serpent »

Spróbuj event:

Code : Tout sélectionner

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 l’utilisateur
Mezrox
Soldier level 1
Soldier level 1
Príspevky: 27
Dátum registrácie: sam. mai 01, 2010 9:05 pm
Localisation: Trójmiasto

Re: Mod, pare problemów z kodem.

Message 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.
Avatar de l’utilisateur
Serpent
Soldier level 10
Soldier level 10
Estonia
Príspevky: 4169
Dátum registrácie: mar. juil. 07, 2009 9:13 pm
Localisation: Polska - EuroStan ZSRE
Kontaktovať používateľa:

Re: Mod, pare problemów z kodem.

Message od používateľa Serpent »

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

Code : Tout sélectionner

RemoveEnvironmentArea(area);
Lub:

Code : Tout sélectionner

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 l’utilisateur
Mezrox
Soldier level 1
Soldier level 1
Príspevky: 27
Dátum registrácie: sam. mai 01, 2010 9:05 pm
Localisation: Trójmiasto

Re: Mod, pare problemów z kodem.

Message 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...
Avatar de l’utilisateur
Serpent
Soldier level 10
Soldier level 10
Estonia
Príspevky: 4169
Dátum registrácie: mar. juil. 07, 2009 9:13 pm
Localisation: Polska - EuroStan ZSRE
Kontaktovať používateľa:

Re: Mod, pare problemów z kodem.

Message 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
Avatar de l’utilisateur
Mezrox
Soldier level 1
Soldier level 1
Príspevky: 27
Dátum registrácie: sam. mai 01, 2010 9:05 pm
Localisation: Trójmiasto

Re: Mod, pare problemów z kodem.

Message 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 ;)
Avatar de l’utilisateur
Nitek
Community Veteran
Community Veteran
Príspevky: 997
Dátum registrácie: lun. avr. 13, 2009 4:13 pm
Localisation: Białystok
Kontaktovať používateľa:

Re: Mod, pare problemów z kodem.

Message od používateľa Nitek »

Serpent a écrit :Everteiment
W00T? Co to Everteiment?
Avatar de l’utilisateur
Serpent
Soldier level 10
Soldier level 10
Estonia
Príspevky: 4169
Dátum registrácie: mar. juil. 07, 2009 9:13 pm
Localisation: Polska - EuroStan ZSRE
Kontaktovať používateľa:

Re: Mod, pare problemów z kodem.

Message od používateľa Serpent »

Nitek a écrit :
Serpent a écrit :Everteiment
W00T? Co to Everteiment?
Czepiasz się -.-

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

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

Code : Tout sélectionner

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 l’utilisateur
Mezrox
Soldier level 1
Soldier level 1
Príspevky: 27
Dátum registrácie: sam. mai 01, 2010 9:05 pm
Localisation: Trójmiasto

Re: Mod, pare problemów z kodem.

Message od používateľa Mezrox »

Serpent a écrit :Spróbuj event:

Code : Tout sélectionner

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 l’utilisateur
Serpent
Soldier level 10
Soldier level 10
Estonia
Príspevky: 4169
Dátum registrácie: mar. juil. 07, 2009 9:13 pm
Localisation: Polska - EuroStan ZSRE
Kontaktovať používateľa:

Re: Mod, pare problemów z kodem.

Message od používateľa Serpent »

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

Code : Tout sélectionner

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 : Tout sélectionner

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 l’utilisateur
Mezrox
Soldier level 1
Soldier level 1
Príspevky: 27
Dátum registrácie: sam. mai 01, 2010 9:05 pm
Localisation: Trójmiasto

Re: Mod, pare problemów z kodem.

Message 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

Code : Tout sélectionner

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 : Tout sélectionner

--------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 l’utilisateur
Serpent
Soldier level 10
Soldier level 10
Estonia
Príspevky: 4169
Dátum registrácie: mar. juil. 07, 2009 9:13 pm
Localisation: Polska - EuroStan ZSRE
Kontaktovať používateľa:

Re: Mod, pare problemów z kodem.

Message od používateľa Serpent »

Code : Tout sélectionner

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ď