Akcja- wsparcie, pomoc taktyczna, rozkazy dla innych grup.

Moderator: Inkwizytor

Awatar użytkownika
Kubicor
Posty: 10
Rejestracja: 16 listopada 2008, 15:56
ID Steam:
ID gracza: 0

Akcja- wsparcie, pomoc taktyczna, rozkazy dla innych grup.

Post autor: Kubicor »

Witam, chcę zrobić mapę super-taktyczną, i potrzebuję do tego pomocy, czy ktoś może ma sposób na coś takiego:
1. Artyleria- np. w menu akcji mogę 3 razy w misji wezwać wsparcie artylerii. Czyli wybrać takową akcję i kilkając na mapie sprawić, by artyleria obłożyła to miejsce salwą pocisków. Każda po 3 strzały, albo coś w tym stylu.
2. Wsparcie śmigłowca szturmowego- np. mogę 2 razy wezwać na 5 minut AH-1, w miejsce wybrane na mapie ( opcja w menu akcji).
3. Nalot- np. w menu akcji móc wezwać raz, czy dwa atak z powietrza, żeby rozwalić zbyteczną formację wrogich czołgów. Chodzi mi o to, aby móc wybrać w menu akcji opcję "Nalot", kliknąć na mapie miejsce docelowe i żeby w to miejsce nadleciał/y samolot/y i odpaliły kilka rakiet.
4. I ostatnie, jakiś skrypt, plik, najlepiej przykładowa misja, w której jako dowódca mogę wybrać w menu akcji oddział ( np. Grupa pancerna 3, grupa piechoty 2 itd.), wybrać dla niego akcję atakuj/utrzymaj/ruszaj/wsiądź/wyładuj transport piechoty... uciekaj itp. i klikając na mapie wybrać miejsce docelowe dla rozkazu.
5. Trochę nietypowe, ale jak wykonam jakieś zadanie dodatkowe, to żeby mi dowództwo przyznało dodatkowe wsparcie artyleryjskie, powietrzne itp.
6. Po oczyszczeniu wrogiego miasta, chciałbym, aby powiewała teraz flaga np. USA a nie AWS w centrum i żeby na mapie markery zmieniły kolor z czerwonego na niebieski/zielony czy jakiś tam.
7. Ściągnąłem sobie ten addon z rozpoznaniem UAV. Chciałbym porobić screeny i następnie stworzyć w odprawie misji dział ze zdjęciami rozpoznania.
8. I takie najmniej ważne, ale wdzięczny będę za pomoc. Czy ktoś zrobił addon okrętu, czysto wojennego. Szukałem i znalazłem kilka lotniskowów, ale chodziło mi o taki bojowy okręt, którym można by było kierować jak w przypadku pytania nr4.

Z góry dziękuję za wszelką pomoc. ;) Mam nadzieję, że zdołam tą mapę doprowadzić do końca i udostępnić ją publicznie :D
"Jeden człowiek z pistoletem, może kontrolować stu nieuzbrojonych mężczyzn."- W. Lenin
Obrazek
Awatar użytkownika
SaS TrooP
Posty: 1586
Rejestracja: 30 października 2008, 17:30
ID Steam:
ID gracza: 0
Lokalizacja: Wodzisław Śl.
Kontakt:

Re: Akcja- wsparcie, pomoc taktyczna, rozkazy dla innych grup.

Post autor: SaS TrooP »

A co wiesz o robieniu misji? Bo ja je robię dość długo i sam bym tego nie wyrobił? W życiu.
Awatar użytkownika
Kubicor
Posty: 10
Rejestracja: 16 listopada 2008, 15:56
ID Steam:
ID gracza: 0

Re: Akcja- wsparcie, pomoc taktyczna, rozkazy dla innych grup.

Post autor: Kubicor »

W starym Flashpointcie grałem w co najmniej kilkanaście misji, które tak funkcjonowały. Tzn, z tym wydawaniem rozkazów grupom, więc myślę, a nawet jestem pewien, że w Armed Assault również jest to możliwe. Tak samo te zdjęcia rozpoznawcze. A co do zawezwania wsparcia, to już chyba na pewno się da. Tylko to jedno pytanie... jak?

A właśnie, odpowiedź na twoje pytanie. Robię misje od 2003 roku :)
"Jeden człowiek z pistoletem, może kontrolować stu nieuzbrojonych mężczyzn."- W. Lenin
Obrazek
Awatar użytkownika
SaS TrooP
Posty: 1586
Rejestracja: 30 października 2008, 17:30
ID Steam:
ID gracza: 0
Lokalizacja: Wodzisław Śl.
Kontakt:

Re: Akcja- wsparcie, pomoc taktyczna, rozkazy dla innych grup.

Post autor: SaS TrooP »

Musiałbyś się popytać lepszych ode mnie jak Kondora czy kogoś na innym forum. Fora BISu na przykład. Albo naturalnie powyciągać z misji.
Awatar użytkownika
Kubicor
Posty: 10
Rejestracja: 16 listopada 2008, 15:56
ID Steam:
ID gracza: 0

Re: Akcja- wsparcie, pomoc taktyczna, rozkazy dla innych grup.

Post autor: Kubicor »

Zapytałem się wszystkich na forum, czyli Kondora między innymi też :P
"Jeden człowiek z pistoletem, może kontrolować stu nieuzbrojonych mężczyzn."- W. Lenin
Obrazek
Awatar użytkownika
kondor
Posty: 1526
Rejestracja: 13 marca 2007, 11:50
ID Steam: Przemek_kondor
Kontakt:

Re: Akcja- wsparcie, pomoc taktyczna, rozkazy dla innych grup.

Post autor: kondor »

Jutro napiszę ogólnie jak to zrobić/rozbić to na mniejsze problemy/skrypty. Nie będzie żadnych szczegółów dla leniuszków.
Awatar użytkownika
Kubicor
Posty: 10
Rejestracja: 16 listopada 2008, 15:56
ID Steam:
ID gracza: 0

Re: Akcja- wsparcie, pomoc taktyczna, rozkazy dla innych grup.

Post autor: Kubicor »

Nie proszę o szczegóły, każda pomoc będzie przydatna. Jednak jeśli nie znajdę sposobu na to dowodzenie grupami, to ta misja nie będzie miała sensu ;)
"Jeden człowiek z pistoletem, może kontrolować stu nieuzbrojonych mężczyzn."- W. Lenin
Obrazek
Awatar użytkownika
SaS TrooP
Posty: 1586
Rejestracja: 30 października 2008, 17:30
ID Steam:
ID gracza: 0
Lokalizacja: Wodzisław Śl.
Kontakt:

Re: Akcja- wsparcie, pomoc taktyczna, rozkazy dla innych grup.

Post autor: SaS TrooP »

A ja również się tym zainteresuje, a zwłaszcza, że nie wiem jak zrobić niektóre rzeczy.

BTW, Kondor, w zasadzie to gdzie ty się tego nauczyłeś? Ja próbowałem podglądać w misjach, ale słabo mi to szło.
Awatar użytkownika
kondor
Posty: 1526
Rejestracja: 13 marca 2007, 11:50
ID Steam: Przemek_kondor
Kontakt:

Re: Akcja- wsparcie, pomoc taktyczna, rozkazy dla innych grup.

Post autor: kondor »

Dowódców grup, lub jakichś ich członków przydałoby się jakoś charakterystycznie nazwać(, żeby ze skryptów można było łatwo uzyskać dostęp do poszczególnych grup), np d1, d2, ..., dN
W init.sqf przydadzą się zmienne przechowujące ilość dostępnych wezwań (artylerii, nalotu, cobry), pozycje (lub otoczeniem pozycji) którymi mają się "zająć"/"odwiedzić", zmienne mówiące, czy kliknieto na mapie, tablica opisów grup, tablica grup, tablica pozycji docelowych dla grup:

Kod: Zaznacz cały

//liczba grup (do zarzadzania - nie licza sie te heli, ani z nalotu)
groups_count = N; //zamiast N wpisz odpowiednia liczbe
//dostepne wezwania
arty_count_left = 3;
heli_count_left = 2;
air_strike_count_left = 1;
//pozycje dla powyzszych
arty_target_pos = [0,0];
heli_taget_pos = [0,0];
air_Strike_pos = [0,0];
group_dest_pos = [0,0];
//znaczniki klikniecia
arty_clicked = false;
heli_cliked = false;
air_strike_cliked = false;
group_dest_clicked = false;

//tablica grup
groups_array = [group d1, group d2, ..., group dN];
//tablica opisow grup (pokaza się w okienku zarzadzania grupami)
groups_descr_array = ["Grupa pancerna 1", "Black Ops", ..., "Vulcany"];

//w tej tablicy wpisujesz typy waypointow, ktore bys chcial miec do dyspozycji (spis: http://community.bistudio.com/wiki/setWaypointType ), np:
waypoint_types = ["MOVE", "DESTROY", "SAD", "GUARD"];
Np w tym samym pliku przydałoby się dodać akcje:

Kod: Zaznacz cały

arty_action = gracz addAction [format["Artyleria (pozostalo:%1)",arty_count_left], "enable_arty.sqf"];
heli_action = gracz addAction [format["Wsparcie AH1 (pozostalo:%1)",heli_count_left], "enable_heli.sqf"];
air_strike_action = gracz addAction [format["Nalot (pozostalo:%1)",air_strike_count_left], "enable_air_strike.sqf"];
manage_group_action = gracz addAction ["Rozkazy dla grup", "enable_manage_group.sqf"];
gdzie gracz to nazwa gracza, bo nie jestem pewny czy komenda player zadziała w init.sqf.

enable_arty.sqf:

Kod: Zaznacz cały

//zmniejszamy ilosc dostepnej arty
arty_count_left = arty_count_left - 1;
gracz removeAction arty_action;
//i jesli pozostala jeszcze dostepna arty, to ja znow dodajemy
if( arty_count_left > 0 )then{
  arty_action = gracz addAction [format["Artyleria (pozostalo:%1)",arty_count_left], "enable_arty.sqf"];
};

//wychwytujemy klikniecie na mapie
TitleText["Kliknij na mapie, by zaznaczyc obszar do ostrzalu", "PLAIN DOWN"];
onMapSingleClick "arty_target_pos = [_pos select 0, _pos select 1]; onMapSingleClick""""; arty_clicked = true; ";

//czekaj az gracz kliknie	
waitUntil { arty_clicked };
//zresetuj zmienna dla nastepnego razu
arty_clicked = false;
//mozna tu stworzyl jakis marker zeby byla pewnosc (komedna createMarker)

//wywolanie skryptu artylerii, ktorych na sieci jest duzo - pozycja do ostrzalu znajduje sie w zmiennej arty_target_pos

//po jakims czasie jesli stworzono marker ostrzalu, to go usunac
enable_heli.sqf/enable_air_strike.sqf

Kod: Zaznacz cały

//w sumie tak samo jak wczesniejszy skrypt, tylko z innymi zmiennymi

//stworzenie heli/samolotu jesli nie byl wczesniej stworzony i nakierowanie go na pozycje uzyskana z klikniecia

//usuniecie heli/samolotu z goracego terenu
co do zarządzani grupami, to może luknij na to cudo: http://www.armaholic.com/page.php?id=1976
albo stwórz okienko do zarządzania:
description.ext (zdefiniowanie okienka)

Kod: Zaznacz cały

#define CT_BUTTON 1 
#define GUI_COMBO 4
#define ST_CENTER 0x02  
#define FontM "Zeppelin32"
class GUIList
{
	style = ST_CENTER;
	idc = -1;
	colorText[] = { 0, 0, 0, 1 }; 
	colorBackground[] = { 0.7, 0.7, 0.0, 0.75 };
	colorSelect[] = {0.7, 0.7, 0.0, 1.0};
	colorSelectBackground[] = {0,0,0,1};
	font = FontM;
	sizeEx = 0.016;
	rowHeight = 0.03;
	soundSelect[] = {"",0.1,1};
	soundExpand[] = {"",0.1,1};
	soundCollapse[] = {"",0.1,1};		
	w = 0.275;
	h = 0.03;
};

class GUIComboBox:GUIList
{
	type = GUI_COMBO;
	wholeHeight = 0.4;
};

class GroupManagerDialog{
	
	idd = 100;
	movingEnable = false;
	controlsBackground[] = { };
	objects[] = { };
	controls[] = {Background, GroupsCombo, WaypointCombo, OrderButton, CloseButton };
	
	class AbstractButton : RscButton{		
		idc = -1;
		type = CT_BUTTON;
		style = ST_CENTER;
		w = 0.12; h = 0.03;
		colorText[] = { 0, 0, 0, 1 }; 
		colorBackground[] = { 0.7, 0.7, 0.0, 0.75 }; 
		colorDisabled[] = {0.5, 0.5, 0.5, 0.5};
		colorFocused[] = {0.9, 0.96, 0.0, 0.75};
		colorShadow[] = {0.1, 0.1, 0.0, 0.5};
		offsetX = 0.01;
		offsetY = 0.01;
		offsetPressedX = 0.005;
		offsetPressedY = 0.005;
		colorBorder[] = {0.9, 0.3, 0.0, 0.9};
		borderSize = 0.0;
		colorBackgroundActive[] = {0.8, 0.8, 0.0, 0.8};
		colorBackgroundDisabled[] = {0.2, 0.2, 0.2, 0.75};
		font = FontM; sizeEx = 0.016;
		soundEnter[] = { "", 0, 1 };
		soundPush[] = { "", 0, 1 }; 
		soundClick[] = { "", 0, 1 };
		soundEscape[] = { "", 0, 1 };
	}
	class Background: RscText
	{
		x = 0.25;
		y = 0.27;
                //tu trzeba troche powiekszyc obszar tla:
		w = 0.04 + 0.46;
		h = 0.04 + 0.16;
		text = "";
		colorBackground[] = {0.1, 0.1, 0.1, 0.3};
	};
	class GroupsCombo: GUIComboBox{
		idc = 101;
		x = 0.29; y = 0.30;		
	};
        class WaypointCombo: GUIComboBox{
		idc = 102;
		x = 0.29; y = 0.41;		
	};
	class OrderButton : AbstractButton {		
		idc = 103;
                text = "Wydaj rozkaz";
		action = "";
		x = 0.29; y = 0.49;
	};
	class CloseButton : AbstractButton {		
		text = "Anuluj";
		action = "closeDialog 100";
		x = 0.59; y = 0.49;
	};	
	
}//GroupMangerDialog

enable_manage_group.sqf: (obsługa okienka)

Kod: Zaznacz cały

createDialog "GroupManagerDialog";

//wypełnienie 1. comboboxa opisami grup:
//id comboboxa grup to 101 (patrz: description.ext)
for[{_i=0},{_i<groups_count},{_i=_i+1}]do
{
	_ind = lbAdd[101, groups_descr_array select _i];
	lbSetValue [101, _ind, _i];
};
lbSetCurSel [101, 0];

//wypełnienie 2. comboboxa typami waypointow:
//id tego comboboxa grup to 102 (patrz: description.ext)
for[{_i=0},{_i<(count _types)},{_i=_i+1}]do
{
	_ind = lbAdd[102, waypoint_types select _i];
	lbSetValue [102, _ind, _i];
};
lbSetCurSel [102, 0];

//ustawienie akcji dla przycisku order, ktory uruchomi skrypt w postaci:
//[nr_grupy, typ_waypointa] execVM "send_order.sqf"
_action = "[lbValue [101, (lbCurSel 101)], lbValue [102, (lbCurSel 102)]] execVM ""send_order.sqf""; closeDialog 100";
//id tego przycisku to 103 (patrz: description.ext)
buttonSetAction [103, _action];
send_order.sqf

Kod: Zaznacz cały

_group_ind = _this select 0;
_group = groups_array select _group_ind;
_waypoint_type_ind = _this select 1;
//to nie to samo, co waypoint_typeS:
waypoint_type = waypoint_types select _waypoint_type_ind;
TitleText[format["Kliknij na mapie, by ustawic miejsce docelowe dla grupy: (%1)",groups_descr_array select _group_ind], "PLAIN DOWN"];
onMapSingleClick "group_dest_pos = [_pos select 0, _pos select 1]; onMapSingleClick""""; group_dest_clicked = true; ";

//czekaj az gracz kliknie	
waitUntil { group_dest_clicked };
//zresetuj zmienna dla nastepnego razu
group_dest_clicked = false;
//mozna tu stworzyl jakis ladny marker z opisem ze to dla tej grupy

//stworzenie waypointu - komendy addWaypoint, setWaypointType -grupa w tym skrypcie to _group, typ waypointu to waypoint_type a pozycja docelowa to group_dest_pos
Zmiana flagi i markerów przy wyczyszczeniu miasta:
-nazwać flage jakos sensownie, nazwac marker jakos sensownie
-stworzyc wyzwalacz aktywowany nieobecnoscia jednostek wroga, ktory aktywuje skrypt w postaci:

Kod: Zaznacz cały

siakis_ptr = [flaga, marker] execVM "area_is_clean.sqf"
area_is_clean.sqf

Kod: Zaznacz cały

//zmiana tekstury flagi
//zmiana koloru markera
Prawie na pewno się gdzieś machnąłem przy takiej ilości tekstu
Awatar użytkownika
Kubicor
Posty: 10
Rejestracja: 16 listopada 2008, 15:56
ID Steam:
ID gracza: 0

Re: Akcja- wsparcie, pomoc taktyczna, rozkazy dla innych grup.

Post autor: Kubicor »

Dzięki Kondor, ocaliłeś mi misję :dworship
"Jeden człowiek z pistoletem, może kontrolować stu nieuzbrojonych mężczyzn."- W. Lenin
Obrazek
Awatar użytkownika
SaS TrooP
Posty: 1586
Rejestracja: 30 października 2008, 17:30
ID Steam:
ID gracza: 0
Lokalizacja: Wodzisław Śl.
Kontakt:

Re: Akcja- wsparcie, pomoc taktyczna, rozkazy dla innych grup.

Post autor: SaS TrooP »

Kondor - ponawiam pytanie. JA TEŻ TAK CHCE! Gdzie się tego nauczyłeś? Tutoriale? Jakieś misje? Gdzie?
ODPOWIEDZ

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