wybuch miny po najechaniu/nadepnięciu

Wszystko o modach, patchach i błędach w OW oraz ogólnym programowaniu.
Répondre
Avatar de l’utilisateur
Lavigo
Soldier level 4
Soldier level 4
Messages : 86
Inscription : lun. oct. 04, 2010 3:39 pm

wybuch miny po najechaniu/nadepnięciu

Message par Lavigo »

Witam
Jak wiadomo SAIL em mozna postawić minę dowolnym żołnierzem dowolnej nacji...
dzieje sie tak z kodu:

Code : Tout sélectionner

ComPlaceRemoteCharge(identyfikator_postaci,x,y,0);

Wartości x i y to współrzędne ładunku, a 0 (zero) to obrót.
Ale jak zrobić tak, aby mina się zdetonowała automatycznie po tym jak wejdzie/wjedzie na nią wróg ?
Avatar de l’utilisateur
Serpent
Soldier level 10
Soldier level 10
Estonia
Messages : 4169
Inscription : mar. juil. 07, 2009 9:13 pm
Localisation : Polska - EuroStan ZSRE
Contact :

Re: wybuch miny po najechaniu/nadepnięciu

Message par Serpent »

Code : Tout sélectionner

MineExplosion(x, y, f);
x i y - koordynaty, położenie miny (miejsce gdzie ma nastąpić wybuch)
f - nie pamiętam dokładnie, ale to jest chyba siła wybuchu


No więc dajesz kod:

Code : Tout sélectionner

Przykład:
Mamy na mapie aree pole_minowe, w której po wejściu jakiegoś ludzika nastąpi wybuch

Export mina;
Every 0$1 do
begin
mina = false;
end;

Every 0$01 trigger mina = false do
var enemy_units, un;
begin
enable;

enemy_units = FilterUnitsInArea(pole_minowe, [f_side, {strona_jednostek które mają aktywować wybuch np.} 1);

If enemy_units > 0 then
for un in enemy_units do
begin
MineExplosion(GetX(un), GetY(un), 1);
mina = true;
end;

end; // kod powinien działać, niestety nie mam teraz pod ręką edytora żeby go sprawdzić
Założenie jest takie że pierwsza jednostka która znajdzie się na polu minowym zostanie wysłana w kosmos.

Oczywiście można odnieść się do danej jednostki która posiada swój własny ident:

Code : Tout sélectionner

Every 0$01 trigger IsInArea(Burlak, Base3) do
begin
MineExplosion(GetX(Burlak), GetY(Burlak), 1);
end;
Oczywiście powyższe kody wykonają się tylko raz.
Możesz kombinować z every i areeami by stworzyć bardziej zaawansowane pole minowe.
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
Lavigo
Soldier level 4
Soldier level 4
Messages : 86
Inscription : lun. oct. 04, 2010 3:39 pm

Re: wybuch miny po najechaniu/nadepnięciu

Message par Lavigo »

dzięki... a w tym długim kodzie jest taka wzmianka:

Code : Tout sélectionner

MineExplosion(GetX(un), GetY(un), 1);
co to jest to 1 na końcu? myslałem ze to moze byc siła wybuchu, ale kiedy wpisałem tam inne liczby praktycznie nie wpłyneło to na człowieka ani na pojazd...

człowiek po przejściu przez aree miał końcówke żółtego zycia niezależnie od tego czy na koncu kodu było 1, czy 99, a pojazd bez broblemu zniszczyło na 1...

Co to 1 oznacza ?
Avatar de l’utilisateur
Serpent
Soldier level 10
Soldier level 10
Estonia
Messages : 4169
Inscription : mar. juil. 07, 2009 9:13 pm
Localisation : Polska - EuroStan ZSRE
Contact :

Re: wybuch miny po najechaniu/nadepnięciu

Message par Serpent »

Musisz zajrzeć do spisu SAILa i sprawdzić.

Zawsze możesz dać kilka eksplozji naraz w tym samym miejscu aby zwiększyć siłę wybuchu.
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
Lavigo
Soldier level 4
Soldier level 4
Messages : 86
Inscription : lun. oct. 04, 2010 3:39 pm

Re: wybuch miny po najechaniu/nadepnięciu

Message par Lavigo »

to z kilkoma eksplozjami juz opatentowałem,
a jeszcze, czy w tej linijce:

Code : Tout sélectionner

MineExplosion(GetX(un), GetY(un), 1);
można zamiast GetX i GetY podać współrzędne z mapy, i czy tego kodu, który mi podałeś można użyć dla wielu areii jednocześnie, bo próbowałem dodawać nowe aree i tam gdzie jest

Code : Tout sélectionner

enemy_units = FilterUnitsInArea(pole_minowe, [f_side,  1]);
i

Code : Tout sélectionner

MineExplosion(GetX(un), GetY(un), 1);
próbowałem to powielać ale nic mi z tego nie wyszło, w sailu było ok, edytor nie znajdywał błedów, ale mode--> go to gamemode po najechaniu na aree nic sie nie stało :/
Avatar de l’utilisateur
Serpent
Soldier level 10
Soldier level 10
Estonia
Messages : 4169
Inscription : mar. juil. 07, 2009 9:13 pm
Localisation : Polska - EuroStan ZSRE
Contact :

Re: wybuch miny po najechaniu/nadepnięciu

Message par Serpent »

GetX(nawias) i GetY(nawias) - podają obecne współrzędne identu w nawiasie.

Równie dobrze możesz wpisać koordy z mapy.
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
Lavigo
Soldier level 4
Soldier level 4
Messages : 86
Inscription : lun. oct. 04, 2010 3:39 pm

Re: wybuch miny po najechaniu/nadepnięciu

Message par Lavigo »

ok
a jeśli chodzi o ten kod:

Code : Tout sélectionner

Export mina;
Every 0$1 do
begin
mina = false;
end;

Every 0$01 trigger mina = false do
var enemy_units, un;
begin
enable;

enemy_units = FilterUnitsInArea(pole_minowe, [f_side, {strona_jednostek które mają aktywować wybuch np.} 1);

If enemy_units > 0 then
for un in enemy_units do
begin
MineExplosion(GetX(un), GetY(un), 1);
mina = true;
end;

end; 
To czy można tutaj jakos wstawić kilka min, bo ja próbowałem i mi nie wyszło,
kiedy zrobiłem 2 takie kody i exportowałem drugą minę to działało, a chciałbym to zrobić w jednym kodzie, bo troche dużo miejsca zajeło by robienie takiego kodu dla każdej miny osobno...
Avatar de l’utilisateur
Serpent
Soldier level 10
Soldier level 10
Estonia
Messages : 4169
Inscription : mar. juil. 07, 2009 9:13 pm
Localisation : Polska - EuroStan ZSRE
Contact :

Re: wybuch miny po najechaniu/nadepnięciu

Message par Serpent »

Możesz spróbować takie coś:

Code : Tout sélectionner

Every 0$01 trigger mina = false do
var enemy_units, un;
begin
enable;

enemy_units = FilterUnitsInArea(pole_minowe, [f_side, {strona_jednostek które mają aktywować wybuch np.} 1);

If enemy_units > 0 then
for un in enemy_units do
begin
MineExplosion(GetX(un[1]), GetY(un[1]), 1);
mina = true;

If enemy_units > 1 then
MineExplosion(GetX(un[2]), GetY(un[2]), 1);

If enemy_units > 2 then
MineExplosion(GetX(un[3]), GetY(un[3]), 1);

If enemy_units > 3 then
MineExplosion(GetX(un[4]), GetY(un[4]), 1);
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
Antitheus
Kung Führer
Kung Führer
Korea North
Messages : 2526
Inscription : jeu. janv. 04, 2007 9:45 pm
Localisation : Gorzów Wlkp.
Contact :

Re: wybuch miny po najechaniu/nadepnięciu

Message par Antitheus »

Ja bym posłużył się już gotowym kodem, a takowy oferuje nam rosyjska 7. misja.

Code : Tout sélectionner

Function init_miny;
Var M;
Begin
  If Difficulty = 1 then Miny = []
  else Begin
    Miny = [[62,14],[64,17],[66,17],[65,12],[68,15],[64,14],[60,5],[60,15],[59,18],[56,16],[49,15],[33,18],[42,42],[112,42]];
    For M in Miny do PlaceMine (M [1], M [2], side_Ar, 0);
  End;
End;

Function testuj_minu (X, Y);
Var Jednotky;
Begin
  // Mina bouchne, pokud je v blízkosti Rusák.
  Jednotky = FilterAllUnits ([[F_SIDE, side_Ru], [F_DISTXY, X, Y, 2]]);
  If Jednotky then
  Begin
    LaunchMineAtPos (X, Y, side_Ar);
    Result = true;
  End else Result = false;
End;


Every 0$1.1+0$0.7 do
Var M, Bouchlo;
Begin
  // Otestovat, zda nemá bouchnout nějaká mina.
  If not Miny then Exit;
  Bouchlo = [];
  For M in Miny do
    If testuj_minu (M [1], M [2]) then
      Bouchlo = Bouchlo ^ [M];
  If Bouchlo then Miny = Miny diff Bouchlo;
  If Miny then Enable;
End;
Avatar de l’utilisateur
Lavigo
Soldier level 4
Soldier level 4
Messages : 86
Inscription : lun. oct. 04, 2010 3:39 pm

Re: wybuch miny po najechaniu/nadepnięciu

Message par Lavigo »

Co do kodu z kampanii to coś mi nie pasuje...
wpisałem koordy swoich min tak gdzie jest

Code : Tout sélectionner

Miny = [[62,14], ...];
i dodałem opcję:

Code : Tout sélectionner

 Export miny;
bo inaczej edytor znajdował błąd,
dodatkowo błąd był tu, zaraz pod koordami min:

Code : Tout sélectionner

For M in Miny do PlaceMine (M [1], M [2], side_Ar, 0);
opcja side_Ar była oznaczona jako błąd, więc ją podmieniłem na cyfrę 2 (odpowiednik arabskiej strony) i side_Ru na cyfrę 3 (odpowiednik rosyjskiej strony)

I w tym momencie edytor nie znajdował już błędów, ale miny nie wybuchają kiedy wejdzie na nie jakaś jednostka rosyjska...

Może jeszcze czegoś nie exportowałem, albo inaczej trzeba uzupełnić to co ja podmieniłem (side_Ar i side_Ru)

Znalazłem ten kod w orginalnej misji, ale nie znalazłem co tam jeszcze jest inaczej niż u mnie
nawet ustawiłem na mapie kilku żołnierzy arabskich... i nic :(
Avatar de l’utilisateur
Serpent
Soldier level 10
Soldier level 10
Estonia
Messages : 4169
Inscription : mar. juil. 07, 2009 9:13 pm
Localisation : Polska - EuroStan ZSRE
Contact :

Re: wybuch miny po najechaniu/nadepnięciu

Message par Serpent »

Dziwnie ten kod wygląda no ale cóż:

Code : Tout sélectionner

Every 0$1 do
init_miny;

Function init_miny;
Begin

Miny = [[62,14],[64,17],[66,17],[65,12],[68,15],[64,14],[60,5],[60,15],[59,18],[56,16],[49,15],[33,18],[42,42],[112,42]];

End;

Function testuj_minu(X, Y);
Var Jednotky;
Begin

  Jednotky = FilterAllUnits ([[F_SIDE, side_Ru], [F_DISTXY, X, Y, 2]]);
  
If Jednotky then
  Begin
    MineExplosion(X, Y, 1);
    Result = true;
  End else Result = false;
End;


Every 0$02 do
Var M, Bouchlo;
Begin

If not Miny then Exit;

  Bouchlo = [];

For M in Miny do
    If testuj_minu(M [1], M [2]) then
      Bouchlo = Bouchlo ^ [M];

If Bouchlo then 
   Miny = Miny diff Bouchlo;

If Miny then Enable;
End;
Spróbuj takie coś.
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
Lavigo
Soldier level 4
Soldier level 4
Messages : 86
Inscription : lun. oct. 04, 2010 3:39 pm

Re: wybuch miny po najechaniu/nadepnięciu

Message par Lavigo »

dzięki :)
Teraz działa :)
Répondre