Skocz do zawartości
GieNkoV

Przydatne Komendy

Wiadomość dodana przez Rutek

Prosimy nie odpowiadać w tym wątku, tylko stworzyć stronę na Wiki ACC w odpowiednim dziale: 

https://forum.armacoopcorps.pl/wiki/

Rekomendowane odpowiedzi

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.

  • Upvote 3
Odnośnik do odpowiedzi
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"];}];
Odnośnik do odpowiedzi
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";
Odnośnik do odpowiedzi
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
Odnośnik do odpowiedzi
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.

Odnośnik do odpowiedzi
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
Odnośnik do odpowiedzi
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
  • Upvote 2
Odnośnik do odpowiedzi
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

  • Upvote 5
Odnośnik do odpowiedzi
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
  • Upvote 1
Odnośnik do odpowiedzi
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'/>
  • Upvote 2
Odnośnik do odpowiedzi
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;

 

  • Upvote 2
Odnośnik do odpowiedzi
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
  • Upvote 3
Odnośnik do odpowiedzi
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

  • Upvote 2
Odnośnik do odpowiedzi
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.

  • Upvote 1
Odnośnik do odpowiedzi
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

  • Upvote 2
Odnośnik do odpowiedzi
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ł. 
Odnośnik do odpowiedzi
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
  • Upvote 1
Odnośnik do odpowiedzi
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
  • Upvote 3
Odnośnik do odpowiedzi
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
  • Upvote 2
Odnośnik do odpowiedzi
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
  • Upvote 2
Odnośnik do odpowiedzi
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
  • Upvote 2
Odnośnik do odpowiedzi
Udostępnij na innych stronach


  • Ostatnio przeglądający   0 użytkowników

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

×
×
  • Dodaj nową pozycję...