Alarm po detonacji ładunku.

Edytor Arma (Arma, Arma2, Arma2OA)

Moderatorzy: kondor, Inkwizytor

Awatar użytkownika
Vari
Posty: 46
Rejestracja: 15 stycznia 2010, 16:50
ID Steam:
Numer GG: 1022354
ID gracza: 0

Alarm po detonacji ładunku.

Post autor: Vari »

Witam. Mam kolejne pytanie odnośnie edytora. Czy i jak można nadać zmiennej ambush wartość true w momencie, kiedy w określonym regionie nastąpi wybuch?
Bomba będzie podkładana przez gracza i chcę, żeby w momencie detonacji zewsząd zbiegli się wrogowie. Jeśli ktoś ma łatwiejszy pomysł, to czekam na propozycje.
Awatar użytkownika
Zajcew
Posty: 51
Rejestracja: 16 grudnia 2006, 15:35
ID Steam:
Lokalizacja: Piaseczno

Re: Alarm po detonacji ładunku.

Post autor: Zajcew »

Postaw przy bombie jakiś mały przedmiot i daj w warunku wyzwalacza getdammage przedmiot > 0,5 w polu aktywacji alarm=true
Awatar użytkownika
Vari
Posty: 46
Rejestracja: 15 stycznia 2010, 16:50
ID Steam:
Numer GG: 1022354
ID gracza: 0

Re: Alarm po detonacji ładunku.

Post autor: Vari »

Z tym, że bomba rozstawiana będzie przez gracza. Generalnie zależy mi na czymś w tym stylu:
Jeśli w obszarze wyzwalacza zostanie użyta bomba to alarm = true. Tylko tego pierwszego nie umiem zrobić, ale jestem pewien, że się da. Na odczepnego mogę poustawiać każdemu pojazdowi, który mam zniszczyć, getdammage, ale co, jeśli gracz stwierdzi, że walnie sobie bombkę gdzieś indziej? :P Wrogowie w cudowny sposób nic nie zauważą?
Awatar użytkownika
kondor
Posty: 1522
Rejestracja: 13 marca 2007, 11:50
ID Steam: Przemek_kondor
Kontakt:

Re: Alarm po detonacji ładunku.

Post autor: kondor »

Podejrzewam, że detonacja ładunku jest traktowana jako wystrzał z broni. Więc mógłbyś użyć sposobu podobnego do wykrywania odpowiedniej flary.
Awatar użytkownika
Vari
Posty: 46
Rejestracja: 15 stycznia 2010, 16:50
ID Steam:
Numer GG: 1022354
ID gracza: 0

Re: Alarm po detonacji ładunku.

Post autor: Vari »

Jak będę miał czas, to to sprawdzę, z tym, że potrzeben mi to w określonym regionie. Powiedzmy, że wstawiam wyzwalacz, ustawiam jego wielkość odpowiednio i nazywam powiedzmy ambsh. Jak mam zmodyfikować warunek w skrypcie, żeby uwzględnić konkretny region odpalenia?

I jeszcze jedno:

Kod: Zaznacz cały

_pocisk = _this select 0;
Od czego zależy, jaką liczbę mam tam wpisać?
gremdek
Posty: 261
Rejestracja: 13 grudnia 2006, 16:53
ID Steam:

Re: Alarm po detonacji ładunku.

Post autor: gremdek »

jakby co, to geometria w armie tez działa. odległości między punktami w przestrzeni da się obliczyć bez wyzwalaczy.


ad. i jeszcze jedno:
to jest ze skryptu odpalanego eventhandlerem, sprawdź sobie cały ten przykład co ktoś tam zamieścił.
cfog skończył się na kill'em all
Awatar użytkownika
kondor
Posty: 1522
Rejestracja: 13 marca 2007, 11:50
ID Steam: Przemek_kondor
Kontakt:

Re: Alarm po detonacji ładunku.

Post autor: kondor »

Vari pisze: I jeszcze jedno:

Kod: Zaznacz cały

_pocisk = _this select 0;
Od czego zależy, jaką liczbę mam tam wpisać?
Skrypt dostaje tylko 1 parametr - co widać w linii dodawania eventhandlera:
plyr2 addEventHandler ["fired", {[_this select 4] execVM "wykryj_flare.sqf";}];
wiec akurat zawsze będzie tam 0
Awatar użytkownika
Vari
Posty: 46
Rejestracja: 15 stycznia 2010, 16:50
ID Steam:
Numer GG: 1022354
ID gracza: 0

Re: Alarm po detonacji ładunku.

Post autor: Vari »

Teraz mój skrypt wygląda tak:

Kod: Zaznacz cały

_pocisk = _this select 0;
if ((_pocisk == "F_40mm_Green") and (not czerwonaWystrzelona)) then
{
  zielonaWystrzelona = true;
  publicVariable "zielonaWystrzelona";
}
else
{
  if ((_pocisk == "F_40mm_Red") and (not zielonaWystrzelona)) then
  {
    czerwonaWystrzelona = true;
    publicVariable "czerwonaWystrzelona";
else
{
  if ((_pocisk == "PipeBomb")) then
  {
    ambsh = true;
    publicVariable "ambsh";
  };
};
Dla testu rzuciłem pojazd z waypointem o warunku ambsh i... Nie działa. Nie jestem pewien, czy użyłem dobrej nazwy pocisku, to jest "PipeBomb", bo z tego, co pamiętam, nawet dla flary była użyta jakaś inna nazwa, niż tutaj: http://www.forum.armacenter.pl/viewtopic.php?t=9755
Problem jest pewnie banalny, ale jakoś nie przychodzi mi nic do głowy.
Przy okazji zapytam, jakimi komendami określę region działania skryptu?
Awatar użytkownika
Vari
Posty: 46
Rejestracja: 15 stycznia 2010, 16:50
ID Steam:
Numer GG: 1022354
ID gracza: 0

Re: Alarm po detonacji ładunku.

Post autor: Vari »

Odświeżam, bo jeszcze nie dostałem odpowiedzi.
Mam dwa skrypty:
init:

Kod: Zaznacz cały

zielonaWystrzelona = false;
czerwonaWystrzelona = false;
plyr1 addEventHandler ["fired", {[_this select 4] execVM "eq.sqf";}];
plyr2 addEventHandler ["fired", {[_this select 4] execVM "eq.sqf";}];
escape1 = false;
escape2 = false;
ambsh = false;
i eq:

Kod: Zaznacz cały

_pocisk = _this select 0;
if ((_pocisk == "F_40mm_Green") and (not czerwonaWystrzelona)) then
{
  zielonaWystrzelona = true;
  publicVariable "zielonaWystrzelona";
}
else
{
  if ((_pocisk == "F_40mm_Red") and (not zielonaWystrzelona)) then
  {
    czerwonaWystrzelona = true;
    publicVariable "czerwonaWystrzelona";
else
{
  if ((_pocisk == "PipeBomb")) then
  {
    ambsh = true;
    publicVariable "ambsh";
  };
};
Potrzebuję czegoś następującego:
Flary (czerwonaWystrzelona i zielonaWystrzelona) mają działać tylko w danym regionie, zakreślonym w sposób, o jakim wspomniał gremdek (nie znam tego sposobu), a PipeBomb, to jest detonacja bomby działać ma tylko w innym tak samo określonym regionie. Mniemam, że będę musiał rozdzielić te skrypty, ale jak mam określić sobie ten region i czy to co napisałem tu:

Kod: Zaznacz cały

 if ((_pocisk == "PipeBomb")) then
  {
    ambsh = true;
    publicVariable "ambsh";
jest poprawne?

Naprawdę tego potrzebuję, a niewątpliwie przyda się to też innym. Dzięki z góry.
krzysiek2222
Posty: 77
Rejestracja: 31 grudnia 2009, 14:51
ID Steam:
ID gracza: 0

Re: Alarm po detonacji ładunku.

Post autor: krzysiek2222 »

Ja bym trochę przerobił te skrypty.

Kod: Zaznacz cały

zielonaWystrzelona = false;
czerwonaWystrzelona = false;
plyr1 addEventHandler ["fired", {[_this select 4] execVM "eq.sqf";}];
plyr2 addEventHandler ["fired", {[_this select 4] execVM "eq.sqf";}];
obj1 addEventHandler ["firedNear", {[_this select 2, this select 6] execVM "bomb.sqf";}];
escape1 = false;
escape2 = false;
ambsh = false;
I teraz skrypt eq.sqf

Kod: Zaznacz cały

_pocisk = _this select 0;
if (((_pocisk == "F_40mm_Green") and (not czerwonaWystrzelona)) and (TriggerActivated wyzwalacz1)) then
{
  zielonaWystrzelona = true;
  publicVariable "zielonaWystrzelona";
}
else
{
  if (((_pocisk == "F_40mm_Red") and (not zielonaWystrzelona)) and (TriggerActivated wyzwalacz1)) then
  {
    czerwonaWystrzelona = true;
    publicVariable "czerwonaWystrzelona";
};
};
i bomb.sqf

Kod: Zaznacz cały

_pocisk = _this select 1;
_dystans = _this select 0;
if (dystans < 50) {
if ((_pocisk == "PipeBomb")) then
  {
    ambsh = true;
    publicVariable "ambsh";
  };
};
Gdzie wyzwalacz1, to wyzwalacz aktywujący się, gdy gracz jest w strefie ewakuacji. A obj1 to obiekt, od którego w promieniu 50m musi eksplodować bomba, żeby włączyć alarm. Oczywiście to 50 można czymś zastąpić, ale maksymalny dystans jak podaje BIS Wiki to ok 69m.

Pzdr
Awatar użytkownika
Vari
Posty: 46
Rejestracja: 15 stycznia 2010, 16:50
ID Steam:
Numer GG: 1022354
ID gracza: 0

Re: Alarm po detonacji ładunku.

Post autor: Vari »

Walnąłem wyzwalacz i nazwałem go obj1, zaznaczyłem sobie miejsce w jego obrębie (50) i zdetonowałem bombę. Drugi hammer z warunkiem ambsh nie ruszył. Coś musi być nie tak. Zamieniłem w skrypcie PipeBomb na flarę i wystrzał flary w tym miejscu też nic nie dał. Czy ktś mógłby sprawdzić to u siebie i, w miarę możliwości, wrzucił, jeżeliby działało? Najdziwniejsze jest to, że wszystko wygląda idealnie, a i tak coś zgrzyta ;/

I jeszcze: Nie jestem pewien ale w tym:

Kod: Zaznacz cały

_pocisk = _this select 1;
_dystans = _this select 0;
if (dystans < 50) {
if ((_pocisk == "PipeBomb")) then
  {
    ambsh = true;
    publicVariable "ambsh";
  };
};
Za drugim razem zmienna dystans nie powinna mieć także "_" przed sobą? Nawet po dodaniu tego, nie działa.
ODPOWIEDZ

Wróć do „Edycja oraz tworzenie misji, skrypty oraz programowanie”