Ciekawe promocje na Steam:

 

-66% – Arma 3 – 11,89€ (50,08 zł) 
-66% – Arma 3 Apex – 10,19€ (42,92 zł)  

-66% – Arma 3 DLC Bundle 1 – 5,77€ (~20 zł)   (Arma 3 KartsArma 3 Helicopters oraz Arma 3 Marksmen DLC)
-20% – Arma 3 DLC Bundle 2 – 18,39€ (77,46 zł)  (Arma 3 Jets, Arma 3 „Orange” (nazwa robocza), Arma 3 Tac-Ops oraz Arma 3 Tanks!)
-66% – Arma 3 Helicopters – 3,39€ (14,28 zł)

Witaj gościu!

Zamierzasz spróbować swoich sił w zadaniach kooperacyjnych w świecie milsimu? Zapraszamy do rekrutacji.
Nie wymagamy regularnej obecności. Chcesz zagrać raz na tydzień lub miesiąc ? Proszę bardzo !
Jesteś w innej grupie? Nie mamy nic przeciwko !
Na naszym TeamSpeaku zawsze panuje miła atmosfera, jeśli masz pytania wbijaj i pytaj.
Rozgrywki prowadzimy codziennie (o ile są chętni) lub na zapisy (patrz w kalendarzu), zaczynamy zawsze o 20:00.

 

Zapraszamy do tematu z filmami z naszych rozgrywek. Miłego oglądania!

GieNkoV

A3
Przydatne Komendy

39 postów w tym temacie

RHS posiada moduł nalepek i napisów. Powiedziałbym pokaźną selekcję: rosyjskich, radzieckich, polskich, CDF, NRD, fińskich, IS, Irak.

 

http://doc.rhsmods.org/index.php/AFRF_Decals#CDF

 

 

zawieramy w inicie kod:

 

[VehNATO_IFV1,[["Label", [2,6,7], "Army", [5,0]]]] spawn rhs_fnc_decalsInit;
[VehNATO_IFV1,[["Label", [4], "Army", [5,1]]]] spawn rhs_fnc_decalsInit;
[VehNATO_IFV1,[["Number", [9,10,11], "Default",420]]] spawn rhs_fnc_decalsInit;

 

Gdzie VehNATO_IFV1 to BTR-70

W rezultacie otrzymujemy BTR-70 z Ukraińskimi naklejkami na wieżyczce, z przodu i z tyłu w dodatku z numerem seryjnym 420:

Nie znalazłem jeszcze opcji by móc zmieniać tablice rejestracyjne pojazdów.

3

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Sprawdzenie wartości skillFinal z uwzględnieniem wszystkich wartości sub-skill jednostki która znajduje się pod naszym kursorem:

 

W inicie jednostki którą będziemy sterować wklejamy:

this addAction ["Show skills",{
hintsilent format["aimingAccuracy %1\n
aimingShake %2\n
aimingSpeed %3\n
spotDistance %4\n
spotTime %5\n
courage %6\n
reloadSpeed %7\n
commanding %8\n
general %9\n", cursortarget skillfinal "aimingAccuracy",cursortarget skillfinal "aimingShake",cursortarget skillfinal "aimingSpeed",cursortarget skillfinal "spotDistance",cursortarget skillfinal "spotTime",cursortarget skillfinal "courage",cursortarget skillfinal "reloadSpeed",cursortarget skillfinal "commanding",cursortarget skillfinal "general"];}];
0

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Wyłączanie komputerka artyleryjskiego w moździerzach i nie tylko

enableEngineArtillery false;
Edytowane przez kosteK
0

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Zaczęcie z zatyczkami w uszach i opuszczoną bronią. Tworzymy initPlayerLocal.sqf. Wklejamy do niego te komendy:
 

// Zatyczki
player setVariable ["ACE_hasEarPlugsIn", true, true];
// Opuszczona broń
player switchMove "AmovPercMstpSrasWrflDnon_AmovPercMstpSlowWrflDnon";
0

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Latarki włączone w patrolach AI. Wpiąć do dowódcy( pamiętając o dodaniu odpowiedniej latarki w skrypcie) :

 

{_x enableGunLights "forceOn"} forEach (units group this); {_x addPrimaryWeaponItem "rhs_acc_2dpZenit"} forEach (units group this);


Animacje dla AI. Lepiej wyglądają przy wartach. 

 

 OBJECT - unit the anim & gear changes are going to be applied to
1: STRING (optional, default "STAND") - animation set id, describing what the unit's action looks like.
  > "STAND" - standing still, slightly turning to the sides. Needs a rifle!
  > "STAND_IA" - default a3 animations for standing, rifle lowered
  > "SIT_LOW" - sitting on the ground, with weapon.
  > "KNEEL" - kneeling, with weapon.
  > "LEAN" - standing while leaning (on wall)
  > "WATCH"/"WATCH1"/"WATCH2" - standing and turning around
 
2: STRING (optional, default "RANDOM") - equipment level id, describing how heavily is the unit equipped.
  > "NONE"   - no goggles, headgear, vest, weapon
  > "LIGHT"   - no goggles, headgear, vest
  > "MEDIUM" - no goggles, headgear
  > "FULL"   - no goggles
  > "ASIS" (default) - no touches to the gear
  > "RANDOM" - gear is randomized according to the animation set
 
Np:
[this,"WATCH","ASIS"] call BIS_fnc_ambientAnimCombat
[this,"STAND","ASIS"] call BIS_fnc_ambientAnimCombat
[this,"LEAN","MEDIUM"] call BIS_fnc_ambientAnimCombat
Edytowane przez STALKER14
0

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Usunięcie pojazdu i jednostek wewnątrz AI:

 

{deleteVehicle _x} forEach crew variablenamenazwajednostki; deleteVehicle variablenamenazwajednostki;

 

Ewentualnei można jej zrobić kaboom:

 

bomb="Bo_GBU12_LGB" createVehicle (getPos variablenamenazwajednostki); variablenamenazwajednostki setDamage 100;

 

 

Wrzucam, bo ostatnio na paru misjach zauważyłem stojące bezużytecznie po zużytych trigerach jednostki.

0

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

hasWeapon nie działa w A3.

 

Zamiast tego użyj:

"rhs_Weapon_m4" in (items s1 + assignedItems s1);

Co do ustawienia stron, musisz określić status wrogi dla obydwu frakcji czyli:

resistance setFriend [west, 0];
west setFriend [resistance, 0];
Edytowane przez GieNkoV
0

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Zasadzka AI (ogień zaporowy)

 

Korzysta z nowego polecenia doSuppresiveFire.

 

Tworzymy trigger w miejscu, gdzie chcemy ustanowić zasadzkę na graczy, rozmiar musi być duży, co najmniej 100m x 100m. Aktywacja BLUFOR (lub strona po której są gracze).

Czasomierz ustawiamy na około 10 sekund LUB tworzymy własny warunek jaki musi zostać spełniony i wklejamy go do pola condition, np.

(count thislist) > 4 // poczekaj aż wewnątrz triggera znajdzie się 4 graczy

Na początek polecam przetestować opcję z czasomierzem, nigdy nie wiadomo ilu graczy przez taki trigger przejdzie.

 

Do triggera onActivation wklejamy:

[{
   params ["_args", "_pfhID"];
   _args params ["_targets", "_units"];
   
   if ((_units select { alive _x }) isEqualTo []) then {
       _pfhID call CBA_fnc_removePerFrameHandler;
   } else {
        {
            _x doSuppressiveFire (selectRandom _targets);
        } forEach _units;
   };

}, 5, [thislist, [sup1,sup2,sup3,sup4]]] call CBA_fnc_addPerFrameHandler;

Tworzymy jednostki AI, najlepiej z karabinem maszynowym, ilość dowolna, muszą mieć widok na obszar triggera. Nie muszą być zgrupowani. Ustawiamy każdemu z osobna wymuszone wstrzymanie ognia i zmieniamy ich pozycję na leżącą. Nazywamy ich odpowiednio:

  • sup1
  • sup2
  • sup3
  • sup4

Możemy stworzyć ich więcej, wtedy musimy edytować ostatnią linię skryptu:

[sup1,sup2,sup3,sup4,sup5,...,sup10]

itd.

 

Testujemy w edytorze i cieszymy się gradem kul rodem z VBS.

Ostrzał nie jest kierowany bezpośrednio w danego gracza, ma raczej za zadanie zmusić go do natychmiastowego znalezienia osłony terenowej, więc najlepiej taki trigger sprawuje się na otwartej przestrzeni.

Edytowane przez GieNkoV
2

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

"Grajek" - muzyka wydobywająca się od gracza.

 

nazwa jednostki

s1 

init jednostki (naszego grajka)

this addAction ["<t color='#FF0000'>Graj na dudach</t>","pipes.sqf",[],1,false,true,"","_this == _target"];

description.ext

class CfgSounds
{
	class dudy
	{
		name = "pipes";
		sound[] = {"pipes.ogg", 2, 1};
		titles[] = {};
	};
}; 

pipes.sqf

[s1, "dudy"] call CBA_fnc_globalSay3d;

Przykład:

graj_na_dudach.pbo

5

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Flara

 

Tworzy flarę w wybranym przez nas miejscu i kolorze (pełna dowolność).

_flare = "ACE_G_HandFlare_Red" createVehicle _position;
[-2,{
   [_this, [0, 1, 0], 0.9, 240] call ace_grenades_fnc_flare;
}, _flare] call CBA_fnc_globalExecute;

gdzie:

_position - wybrana pozycja np.
_position = position helipad1;

[0, 1, 0] - odpowiednie kanały RGB, wartości od 0 do 1, gdzie 1 to maksymalna wartość kanału, w tym przykładzie otrzymamy flarę koloru zielonego
0.9 - intensywność flary, od 0 do 1, gdzie 1 oznacza najjaśniejszą flarę
240 - czas życia flary w sekundach
1

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Poniżej prezentuję jak poszczególne opcje powinny wyglądać. Można to stosować w briefing.sqf lub modułach w edytorze.

Więcej info: https://community.bistudio.com/wiki/createDiaryRecord
 
Kolor czcionki.

<font color='#ffc0cb'> ... </font>

 
Rozmiar czcionki.

<font size='20'> ... </font>

 
Zmiana czcionki.

<font face='TahomaB'> ... </font>

Dostępne czcionki w Arma 3 (niektóre nie posiadają polskich znaków):

PuristaLight
PuristaMedium
PuristaSemiBold
PuristaBold
LucidaConsoleB
EtelkaMonospacePro
EtelkaMonospaceProBold
EtelkaNarrowMediumPro
TahomaB

Arma3Fonts.png

 

Wszystko powyższe:

<font color='#ffc0cb' size='20' face='TahomaB'> ... </font>

Praktyczny przykład, briefing.sqf

player createDiaryRecord ["Diary",["Sytuacja","<font face='TahomaB'>Złowrogie krakersy zaatakowały fabrykę placków, czas na odwet!</font>"]];

Zdjęcie/obrazek w briefingu.

<img image='foto.jpg' width='360' height='1099'/>

Nie ma znaczenia dla army jakich rozmiarów jest obrazek (ma to znaczenie w wadze i jakości obrazka), dla naszego briefingu liczą się wartości przez nas wpisane jw.
width - szerokość

(tutaj nie bez znaczenia w przykładzie jest 360, jest to maksimum jakie możemy wykorzystać jeżeli nie chcemy aby nasz obrazek był ucięty w połowie. Dzieje się tak, ponieważ w briefingu nie da się przewijać na boki (w poziomie). Polecam przeskalować dany obrazek, gdzie szerokość będzie wynosić 360.

height - wysokość
 
Jeżeli obrazek umieszczony jest w jakimś folderze w naszej misji to adekwatnie należy podać ścieżkę dostępu:

<img image='jakis_folder\foto.jpg' width='360' height='1099'/>
2

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

"Jedynka siadaj"

 

Umieszcza jednostkę jednostka na krześle taboret.

[taboret, jednostka] call acex_sitting_fnc_sit;

Obsługiwane są tylko krzesła z vanilla A3 i kompatybilne z ACE3.

 

Edit Rutek:

"Jedynka wstawaj"

jednostka call acex_sitting_fnc_stand;

 

2

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
Tekst wyświetlany dla danej grupy

 



if (!isDedicated) then
{
if (group player == grp1) then //grp1 - grupa 1
{
titleText ["Tekst dla grupy 1", "PLAIN DOWN", 1];
}
else
{
titleText ["Tekst dla innych grup.", "PLAIN DOWN", 1];
};
};

Edytowane przez canadian
2

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Zapętlanie wyzwalacza.

  1. Metoda: http://forum.armacoopcorps.pl/topic/3618-przydatne-komendy/?p=73573
  2. Metoda:

 

mR4n2Fg.jpg

 

Co to robi?

Zaznaczając opcję Repeatable (powtarzalny) pozwalamy na to, aby wyzwalacz mógł być wielokrotnie odpalany.

W polu Condition wpisujemy warunek (słowo warunek jest przykładowe) do spełnienia, aby móc odpalić wyzwalacz.

W polu On Activation wpisujemy warunek=false, to sprawi, że gdy wyzwalacz się odpali wyłączy warunek co pozwoli na to aby mógł być ponownie odpalony. W polu On Deactivation wpisujemy warunek=true, sprawi to, że wyzwalacz po wykonaniu określonych zadań w polu On Activation, sam siebie ponownie odpali po określonym czasie (w sekundach) w polach Timer Values.

 

Odpalenie pętli:

Aby zapoczątkować zapętlanie wyzwalacza musimy go pierw odpalić za pomocą: warunek=true jeżeli wyzwalacz ma być odpalony od startu misji to najlepiej wpisać to w init.sqf, jeżeli wyzwalacz ma się odpalić w trakcie gry to wpisujemy to w skrypcie lub w innym miejscu które pozwoli nam na wyzwolenie w dogodnym dla nas momencie. 

Mimo to należy zwrócić uwagę na to, że wyzwalacz odpalając się musi przeczekać czas, który określiliśmy w polach Timer Value.

Aby uniknąć czekania możemy stworzyć drugi wyzwalacz z wpisanym w polu condition: warunek, bez opcji Repeatable(powtarzalnej) i czasem ustawionym na 0 (Timer Value : 0,0,0), w polu aktywacji wpisujemy to samo co w pierwszym wyzwalaczu. - drugi wyzwalacz odpali się tylko raz i gdy zakończy się, dalszą akcję przejmie wyzwalacz zapętlony.

 

Wyłączenie pętli:

Po prostu usuń zapętlony wyzwalacz w odpowiednim dla Ciebie momencie.

Nazwij wyzwalacz w polu Trigger: Init -> Variable Name, a następnie użyj komendy deleteVehicle w skrypcie czy w innym wyzwalaczu. Wyzwalacz usunie się od razu z momentem użycia powyższej komendy, ale efekt wyzwalacza pozostanie do końca ostatniej sekwencji. Po czym już się nie zapętli.

Lub w polu condition dopisz drugi warunek np. warunek AND warunek2 i w odpowiednim momencie zmień warunek2=false; (patrz niżej przykład generatorONOFF.)

 

  • Przykład (dźwięk w tle - ambient).

Ambient.Desert_E.pbo

  • Przykład (dźwięk z obiektu - generator prądu + wyłączenie za pomocą addaction). 

generator.Desert_E.pbo

  • Przykład (dźwięk z obiektu - generator prądu + wielokrotna możliwość włączenia i wyłączenia za pomocą addaction)

generatorONOFF.Desert_E.pbo

2

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Wrzucam kilka ciekawych komend, które pokazał mi [m=Doman]. Wiem, że niektórzy z MM już z nich korzystali. Więc w tym miejscu proszę, aby każdy kto znajdzie coś ciekawego i działającego niech się tym podzieli w tym temacie. (niekoniecznie musi być to opisane jak ja to robiłem wyżej - ale jest to mile widziane i sporo ułatwia).

 

Jak znajdę czas, to opiszę co i jak.

1

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

 

2. Jak zrobić by uruchomieniu triggera lub jakimś czasie, wrogie moździerze otworzyły ogień na wskazany obszar?

 

Ewentualnie jeszcze to:

mosiek doArtilleryFire [getmarkerpos "obszar", "8Rnd_82mm_Mo_shells", 8]
Mosiek po aktywacji triggera wystrzeli 8 pocisków we wskazany obszar. Classname pocisku musi być zgodny z danym moździerzem/haubicą.

 

Poczytałem, poszukałem i napisałem.

Prosty skrypt do ostrzału artyleryjskiego lub moździerzowego na wskazany obszar przez postawiony już moździerz z AI.

 

arty.sqf

//null = ["marker",mortar1,"",5,10,200] execVM "arty.sqf";
//this addeventhandler ["fired", {(_this select 0) setvehicleammo 1}];

if (isServer) then {
	_marker = _this select 0;
	_gun = _this select 1;
	_ammoType = _this select 2;
	_b = _this select 3;
	_frequency = _this select 4;
	_radius = _this select 5;

	if (_ammoType=="") then {_ammoType = getArtilleryAmmo [_gun] select 0;};
	_center = getmarkerpos _marker;

	for "_i" from 1 to _b do {
		_pos = [(_center select 0) - _radius + (2 * random _radius),(_center select 1) - _radius + (2 * random _radius),0];
		_gun doArtilleryFire [_pos, _ammoType, 1]; 
		sleep _frequency;
	};
};

Wywołanie: (polecam odpalać na serwerowym wyzwalaczu, czyt. zaznaczyć opcję server only lub dopisać do warunku AND isServer - uchroni nas to przed ewentualnym kilkukrotnym odpaleniem, gdzie zamiast ustawionej przez nas ilości wystrzałów mogłoby ich być więcej.

null = ["marker",mortar1,"",5,10,200] execVM "arty.sqf";
  • "marker" = nazwa markera,
  • mortar1 = nazwa moździerza/artylerii,
  • "" = typ amunicji, jeżeli zostawimy puste to zostanie użyta domyślnie załadowana (najprawdopodobniej HE w większości moździerzy), możemy też zdefiniować pociski np. dymne dla rosyjskiego moździerza 2B14 Podnos to będzie "rhs_mag_d832du_10",
  • 5 = ilość wystrzałów,
  • 10 = czas pomiędzy wystrzelonymi pociskami - reload (na testach mi wychodziło, że nie mniej niż 4),
  • 200 = promień określający obszar od centrum wcześniej zdefiniowanego markera - "marker".

Dodatkowo:

init moździerza: (Jeżeli nie chcemy się martwić czy starczy amunicji.)

this addeventhandler ["fired", {(_this select 0) setvehicleammo 1}];

Jest to najprościej mówiąc kod na nieskończoną ilość amunicji - bez potrzeby przeładowywania.

 

Podsumowanie:

 

 

  • Zapisujemy skrypt arty.sqf do folderu misji.
  • Stawiamy moździerz/artylerię z obsadą AI gdzieś na mapie - odległość od celu ma znaczenie!
  • Wpisujemy w init moździerza/artylerii - this addeventhandler ["fired", {(_this select 0) setvehicleammo 1}];
  • Tworzymy wyzwalacz, zaznaczamy opcję server only i ustawiamy warunek jaki nam odpowiada. W polu aktywacja wpisujemy null = ["nazwaMarkera",nazwaMoździerzaLubArtylerii,"",5,10,200] execVM "arty.sqf";

 

 

 

Jak znaleźć nazwy magazynków, inaczej pocisków:

 

 

  • Można wpisać w init moździerza/artylerii this addEventhandler ["fired",{hint format["%1",_this]}]; następnie wsiąść na strzelca i wystrzelić interesujący nas pocisk - wtedy pojawią się w hincie wszystkie potrzebne informacje. http://i.imgur.com/goqQUY6.jpg - nas interesuje tutaj magazynek - rhs_mag_3vo18_10, rhs_ammo_3v18.
  • Można znaleźć nazwy magazynków w Tools => Config Viewer... (Ctrl+G) - po lewej stronie szukać nazwy nas interesującego moździerza np. rhs_2b14_82mm_msv następnie Turret i mamy. http://i.imgur.com/hVEGq6W.jpg

 

 

 

Przykład: testArty.Desert_E.pbo

 

P.S.

( ͡° ͜ʖ ͡°) gradFUN.Chernarus.pbo

2

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Rozumiem że moździerz desantowy 60mm też bedzie tym sposobem działał?

 

Zaraz zobaczę i edytuję tego posta :)

 

Edit:

Sam skrypt działa, w tym przypadku jedynie trzeba zdefiniować amunicję, aby nie wyrzucało błędów. Jednakże komenda doArtilleryFire widocznie nie działa na moździerz M6 z 3CB, ponieważ niby celuje ale nie chce strzelać.

 

Tym próbowałem wystrzelić chociaż jeden pocisk:

mortar1 doArtilleryFire [getmarkerpos "marker", "UK3CB_BAF_1Rnd_60mm_Mo_Shells", 1];
Tym sprawdzałem czy cel jest w zasięgu moździerza:

isInRange = getMarkerPos "marker" inRangeOfArtillery [[mortar1], "UK3CB_BAF_1Rnd_60mm_Mo_Shells"]
Podsumowując, nie będzie działał. 
0

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jakby ktoś chciał wysadzać pancerne Abramsy, które są dosyć odporne na obrażenia:
 

Definiujemy zmienną czołgu - w tym przypadku tusk

Dodajemy akcje podłożenia i uzbrojenia ładunku:
 

action1 = this addAction ["<t color='#FF0000'>Podłóż i uzbrójładunek</t>","charge.sqf"];

action1 - zmienna przypisana do akcji podkładania i uzbrajania

W charge.sqf opisujemy co ma się dziać dalej:
 

tusk removeAction action1;
hint "Ładunek uzbrojony!";
action2 = eod addAction ["<t color='#FF0000'>Wysadź ładunek</t>","armed.sqf"];

-Najpierw usuwamy action1 z menu pod scrollką.
-Potem w prawym górnym rogu wyświetlamy nam komunikat Ładunek uzbrojony!
-Finalnie dodajemy kolejną akcję (zdefiniowaną jako action2), która wyświetli się EOD czy też saperowi.  Jest  przypisana pod kolejny skrypt (armed.sqf).

eod removeAction action2;
hint "Detonacja!";
tusk setDamage 1;

-Usuwamy action2.

-Wyświetlamy hint Detonacja!

-Całkowicie niszczymy Abramsa ustawiając jego otrzymane obrażenia na 1 (wartość maksymalna)

Edytowane przez canadian
1

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Przykładowe użycie HoldAction

Zakładnik (gracz) przywiązany do krzesła

 

nazwa jednostki:

s1 
nazwa krzesła, do którego jest przywiazana:

krzeslo 
w inicie s1:

[this,"SIT2"] call BIS_fnc_ambientAnim;
Stawiamy jednostkę możliwie najbliżej krzesła.

 

w pliku "init.sqf":

[
krzeslo,    //nazwa obiektu do którego "przyczepiona" jest akcja
"Rozwiąż więźnia",    //tekst, który będzie wyświetlany przy ikonce akcji
"\a3\ui_f\data\IGUI\Cfg\holdactions\holdAction_unbind_ca.paa",    //ikonka widoczna przed rozpoczęciem akcji (w tym przypadku kajdanki)
"\a3\ui_f\data\IGUI\Cfg\holdactions\holdAction_unbind_ca.paa",    //ikonka widoczna w trakcie wykonywania akcji (również kajdanki)
"s1 distance _target < 2",    //warunek rozpoczęcia akcji (w tym przypadku zakładnik w odległości <2m od krzesła)
"s1 distance _target < 2",    //warunek kontynuowania akcji (w tym przypadku zakładnik w odległości <2m od krzesła)
{hint "Rozpoczęto rozwiązywanie"},    //kod, który wykona się przy rozpoczęciu akcji
{hint "Rozwiązywanie w toku"},    //kod, który wykona się podczas wykonywania akcji
{[-2, {s1 call BIS_fnc_ambientAnim__terminate;}] call CBA_fnc_globalExecute;},    //kod, który wykona się po zakończeniu akcji (kończymy animację siedzenia, postać wstaje)
{hint "Przerwano rozwiązywanie"},    //kod, który wykona się w wyniku przerwania akcji (puszczamy ENTER przed czasem lub nie spełniamy warunku kontynuowania akcji)
[],    //argumenty przesyłane do skryptów
10,    //czas trwania akcji w sekundach
nil,   //priorytet (akcje układane są malejąco wg. tego parametru)
true,   //określa, czy akcja będzie usuwana po wykonaniu (true=tak/false=nie)
false    //określa, czy akcję może wykonać nieprzytomna osoba (true=tak/false=nie)
] call BIS_fnc_holdActionAdd;
Rozwiązanie jest uproszczone: Akcja rozwiązywania zakładnika nie jest usuwana za pomocą holdActionRemove. Zamiast tego możemy ją wykonać jedynie w momencie, gdy zakładnik znajduje się w odległości mniejszej od 2m od krzesła, nie ma zatem takiej potrzeby.

 


Użyte funkcje:

https://community.bistudio.com/wiki/BIS_fnc_holdActionAdd

https://community.bistudio.com/wiki/BIS_fnc_holdActionRemove

http://dev.withsix.com/docs/cba/files/network/fnc_globalExecute-sqf.html#CBA_fnc_globalExecute

https://community.bistudio.com/wiki/BIS_fnc_ambientAnim

 



 

Przykładowe użycie addAction

Nieuzbrojony gracz pilnowany przez strażnika z karabinem wyszarpuje mu broń.

 

stawiamy strażnika, nazywamy go:

cel
w inicie strażnika:

this addAction ["Ukradnij karabin", "getrifle.sqf"];    //dodajemy akcję pod scrollką, która wykona skrypt umieszczony w getrifle.sqf
this addMagazine "rhs_mag_30Rnd_556x45_Mk318_Stanag";    //dodajemy magazynek do wyposażenia strażnika
this addWeapon "rhs_weap_hk416d10_LMT";    //dodajemy broń do wyposażenia strażnika
//Dwie końcowe linijki są umieszczone jedynie w celach pokazowych - broń i magazynek możemy naturalnie dodać wybranym przez nas sposobem
w pliku "getrifle.sqf":

cel removeWeapon "rhs_weap_hk416d10_LMT";    //usuwamy strażnikowi broń (razem z załadowanym do niej magazynkiem) 
player addMagazine "rhs_mag_30Rnd_556x45_Mk318_Stanag";    //dodajemy graczowi magazynek do broni (ważna jest kolejność, jeśli chcemy żeby broń była załadowana!)
player addWeapon "rhs_weap_hk416d10_LMT";     //dodajemy graczowi broń
[-2, {cel removeAction 0}, "TEST"] call CBA_fnc_globalExecute; //usuwamy wszystkim graczom możliwość wykonania akcji ponownie

 

Użyte funkcje:

http://dev.withsix.com/docs/cba/files/network/fnc_globalExecute-sqf.html%23CBA_fnc_globalExecute]http://dev.withsix.com/docs/cba/files/network/fnc_globalExecute-sqf.html#CBA_fnc_globalExecute]http://dev.withsix.com/docs/cba/files/network/fnc_globalExecute-sqf.html#CBA_fnc_globalExecute

https://community.bistudio.com/wiki/removeWeapon

https://community.bistudio.com/wiki/addWeapon

https://community.bistudio.com/wiki/addMagazine

https://community.bistudio.com/wiki/addAction

https://community.bistudio.com/wiki/removeAction

Edytowane przez Rizzet
3

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Przykładowe użycie funkcji playSubtitles

Prezentacja możliwości

 

 

1) Stawiamy wyzwalacz, ustawiamy jego aktywację na np. *RADIO BRAVO*

2) W zakładce "On Activation" wyzwalacza umieszczamy:

 

 

_handle = execVM "test.sqf";
3) W folderze misji tworzymy plik "test.sqf"

4) W pliku "test.sqf" umieszczamy:

[  
  ["<t color='#cd3232'>Mama muminka</t>","Ta osoba wyświetli się na czerwono.",0],  
  ["<t color='#3a9e38'>Włóczykij</t>","Ta osoba wyświetli się na zielono.",5],  
  ["Tata Muminka","<t color='#8080e1'>Ten tekst jest wrzosowy (tak, taki kolor istnieje).</t>",10],  
  ["Panna Migotka","Ta osoba wyświetli się na domyślny kolor.",15]  
] spawn BIS_fnc_EXP_camp_playSubtitles;
Funkcja składa się z dowolnej liczby arrayów o strukturze: ["nazwa osoby mówiącej","Wyświetlona kwestia",liczba]

gdzie liczba określa, w której sekundzie od wywołania funkcji zostanie wyświetlona kwestia.

 

Jeśli chcemy, żeby dana kwestia wyświetlała się przez 2 sekundy ustawiamy przy niej wartość N a przy kwestii następnej - wartość N+2.

Jeśli przy dwóch kwestiach jest taka sama wartość, wyświetli się jedynie ta późniejsza.

Chcąc określić kolor kwestii/osoby postępujemy jak w przykładzie (koloru dwukropka miedzy osobą a kwestią nie da się niestety zmienić (jeśli ktoś ma magiczny sposób na to, prosze o uzupełnienie).

 


Przydatne linki:

https://community.bistudio.com/wiki/BIS_fnc_EXP_camp_playSubtitles

https://community.bistudio.com/wiki/Structured_Text

Edytowane przez Rizzet
2

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeżeli chcecie mieć czarne tło w trakcie tego co podał Rizzet zróbcie drugi plik SQF i dodajcie nasze stare intro gdzie będzie tylko

 
if ([] call BIS_fnc_didJIP) exitWith {};
 
 
titleCut ["","BLACK OUT"];
sleep 20;
 
if ([] call BIS_fnc_didJIP) exitWith {};
[
[
["Panama","<t color=#FF0000' align = 'center' shadow = '1' size = '0.7' font='PuristaBold'>%1</t><br/&gt],
["Wyspa San Jose","<t color=#FF0000' align = 'center' shadow = '1' size = '1.0'>%1</t><br/&gt],
["1600 HRS","<t color=#FF0000' align = 'center' shadow = '1' size = '1.0'>%1</t><br/&gt]
]
] spawn BIS_fnc_typeText;
sleep 55;
titleCut ["", "BLACK IN"];
 
 
Przed Black IN dajcie tak długi sleep ile trwają napisy od rizzeta. 
Edytowane przez STALKER14
2

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Interakcja w ACE na siebie w celu udawania trupa. AI nie będą do nas strzelać, animacja trwa 60 sekund. Otwierana pod ACE>ekwipunek>udawaj trupa

 

_action = ["vip_cyanide", "Udawaj trupa", "", {[player, true, 30, true] call ace_medical_fnc_setUnconscious}, {true}] call ace_interact_menu_fnc_createAction;
[typeOf player, 1, ["ACE_SelfActions", "ACE_Equipment"], _action] call ace_interact_menu_fnc_addActionToClass;
 
 
Wkleić do init.sqf
2

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Tylko zarejestrowani użytkownicy mogą dodawać komentarze

Dodaj konto

Załóż nowe konto. To bardzo proste!


Zarejestruj nowe konto

Zaloguj się

Posiadasz już konto? Zaloguj się tutaj.


Zaloguj się teraz

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.