wybuch miny po najechaniu/nadepnięciu

Wszystko o modach, patchach i błędach w OW oraz ogólnym programowaniu.
Ответить
Аватара пользователя
Lavigo
Soldier level 4
Soldier level 4
Сообщения: 86
Зарегистрирован: Пн окт 04, 2010 3:39 pm

wybuch miny po najechaniu/nadepnięciu

Сообщение Lavigo »

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

Код: Выделить всё

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 ?
Аватара пользователя
Serpent
Soldier level 10
Soldier level 10
Estonia
Сообщения: 4169
Зарегистрирован: Вт июл 07, 2009 9:13 pm
Откуда: Polska - EuroStan ZSRE
Контактная информация:

Re: wybuch miny po najechaniu/nadepnięciu

Сообщение Serpent »

Код: Выделить всё

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:

Код: Выделить всё

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:

Код: Выделить всё

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
Аватара пользователя
Lavigo
Soldier level 4
Soldier level 4
Сообщения: 86
Зарегистрирован: Пн окт 04, 2010 3:39 pm

Re: wybuch miny po najechaniu/nadepnięciu

Сообщение Lavigo »

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

Код: Выделить всё

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 ?
Аватара пользователя
Serpent
Soldier level 10
Soldier level 10
Estonia
Сообщения: 4169
Зарегистрирован: Вт июл 07, 2009 9:13 pm
Откуда: Polska - EuroStan ZSRE
Контактная информация:

Re: wybuch miny po najechaniu/nadepnięciu

Сообщение 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
Аватара пользователя
Lavigo
Soldier level 4
Soldier level 4
Сообщения: 86
Зарегистрирован: Пн окт 04, 2010 3:39 pm

Re: wybuch miny po najechaniu/nadepnięciu

Сообщение Lavigo »

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

Код: Выделить всё

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

Код: Выделить всё

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

Код: Выделить всё

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 :/
Аватара пользователя
Serpent
Soldier level 10
Soldier level 10
Estonia
Сообщения: 4169
Зарегистрирован: Вт июл 07, 2009 9:13 pm
Откуда: Polska - EuroStan ZSRE
Контактная информация:

Re: wybuch miny po najechaniu/nadepnięciu

Сообщение 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
Аватара пользователя
Lavigo
Soldier level 4
Soldier level 4
Сообщения: 86
Зарегистрирован: Пн окт 04, 2010 3:39 pm

Re: wybuch miny po najechaniu/nadepnięciu

Сообщение Lavigo »

ok
a jeśli chodzi o ten kod:

Код: Выделить всё

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...
Аватара пользователя
Serpent
Soldier level 10
Soldier level 10
Estonia
Сообщения: 4169
Зарегистрирован: Вт июл 07, 2009 9:13 pm
Откуда: Polska - EuroStan ZSRE
Контактная информация:

Re: wybuch miny po najechaniu/nadepnięciu

Сообщение Serpent »

Możesz spróbować takie coś:

Код: Выделить всё

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
Аватара пользователя
Antitheus
Kung Führer
Kung Führer
Korea North
Сообщения: 2526
Зарегистрирован: Чт янв 04, 2007 9:45 pm
Откуда: Gorzów Wlkp.
Контактная информация:

Re: wybuch miny po najechaniu/nadepnięciu

Сообщение Antitheus »

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

Код: Выделить всё

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;
Аватара пользователя
Lavigo
Soldier level 4
Soldier level 4
Сообщения: 86
Зарегистрирован: Пн окт 04, 2010 3:39 pm

Re: wybuch miny po najechaniu/nadepnięciu

Сообщение Lavigo »

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

Код: Выделить всё

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

Код: Выделить всё

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

Код: Выделить всё

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 :(
Аватара пользователя
Serpent
Soldier level 10
Soldier level 10
Estonia
Сообщения: 4169
Зарегистрирован: Вт июл 07, 2009 9:13 pm
Откуда: Polska - EuroStan ZSRE
Контактная информация:

Re: wybuch miny po najechaniu/nadepnięciu

Сообщение Serpent »

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

Код: Выделить всё

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
Аватара пользователя
Lavigo
Soldier level 4
Soldier level 4
Сообщения: 86
Зарегистрирован: Пн окт 04, 2010 3:39 pm

Re: wybuch miny po najechaniu/nadepnięciu

Сообщение Lavigo »

dzięki :)
Teraz działa :)
Ответить