Skrypt do SLX (leczenie przez medyka)
Moderator: Inkwizytor
Skrypt do SLX (leczenie przez medyka)
Witam, nie jestem zbyt biegły w pisaniu skryptów i mam prośbę, czy mógł by ktoś napisać skrypt (do SLX) w którym medyk (nie angażując się w walkę) by ciągną rannych do wyznaczonego punktu i taki w którym inny by opatrywał tylko rannych również nie angażując się w walkę.
Re: Skrypt do SLX
Nie znam SLX, nawet nie wiem, czy 'ciągnięcie' rannych jest możliwe, ale skrypt, który pisałem 'whoneedsupport.sqs' (w ramach wątku o AWACS) ma całą potrzebną mechnikę do udzielania pomocy na polu walki (przerobiłem Ci ma potrzeby medyka):
'WhoNeedsSupport.sqs'
Skryptu nie testowałem (napisałem z palca), więc daj znać czy działa.
Jeśli w SLX jest jakaś komenda pozwalająca na 'ciągnięcie' rannych, to skrypt może być punktem wyjścia (do przeróbek) na potrzeby takiej operacji - tyle, że ja nie mam pojęcia o SLX.
Jeśli chcesz, aby medyk po udzieleniu pomocy wracał do pierwotnego WP (pozycji), to dopiszę jeszcze 3 linie.
'WhoNeedsSupport.sqs'
Kod: Zaznacz cały
; WhoNeedsSupport.sqs, wersja 2 (wsparcie medyczne)
;[_unitsToSupport, _supportUnit] exec "WhoNeedsSupport.sqm";
; np: [[h1,h2], medyk] exec "WhoNeedsSupport.sqm";
; np: [(units group this) + (units group westGroupB), medyk]
; parametry wejściowe:
; _unitsToSupport - tablica jednostek które wspiera medyk,
; np: [units group this],
; albo: [aP1, aP2, unit group aP3]
; _supportUnit - medyk,
; np: [westUnit],
; medyk nie musi (nawet nie powinien) należeć do grupy którą wpiera !
_unitsToSupport = _this select 0;
_supportUnit = _this select 1;
_UnitNeedSupport = objNull;
_supportUnit enableAttack false;
_supportUnit lockWP true;
_supportUnit setCombatMode "BLUE";
_supportUnit setBehaviour "AWARE";
_supportUnit setSpeedMode "FULL";
_supportUnit disableAI "TARGET";
_supportUnit disableAI "AUTOTARGET";
; jak chcesz mieć medyka z czerwonego krzyża (konwencja zabrania walenia do takich jednostek), to:
; _supportUnit setcaptive true;
_index = 0;
#find
? not (Alive _supportUnit) : goto "end";
? not (CanMove _supportUnit) : goto "end";
_unitA = _unitsToSupport select _index;
_index = _index + 1;
? not (Alive _unitA) : {_unitsToSupport = _unitsToSupport - [_unitA]; _index = _index - 1; goto "find"};
; zamiast sprawdzać, czy jednostka oberwała, można np: sprawdzić czy może: CanStand, CanMove,
; lub zmniejszyć tolerancję na uszkodzenia: (damage _unitA > 0.3)
? (damage _unitA != 0) : {_UnitNeedSupport = _unitA; goto "support"};
? count _unitsToSupport == 0 : goto "end";
? (_index <= count _unitsToSupport) : goto "find"
_index = 0;
~1
goto "find"
#support
_UnitNeedSupport lockWP true;
_UnitNeedSupport disableAI "MOVE";
doStop _UnitNeedSupport;
_supportUnit setUnitPos "UP";
_supportUnit Move (getpos _UnitNeedSupport);
@(UnitReady _supportUnit);
_supportUnit setUnitPos "DOWN";
_UnitNeedSupport action ["heal", _supportUnit];
@(UnitReady _supportUnit);
_UnitNeedSupport lockWP false;
_UnitNeedSupport enableAI "MOVE";
_UnitNeedSupport doFollow leader _UnitNeedSupport;
_UnitNeedSupport = objNull;
goto "find";
#end
exit;
Jeśli w SLX jest jakaś komenda pozwalająca na 'ciągnięcie' rannych, to skrypt może być punktem wyjścia (do przeróbek) na potrzeby takiej operacji - tyle, że ja nie mam pojęcia o SLX.
Jeśli chcesz, aby medyk po udzieleniu pomocy wracał do pierwotnego WP (pozycji), to dopiszę jeszcze 3 linie.
"True glory consists in doing what deserves to be written, in writing what deserves to be read." - Pliny The Elder
Re: Skrypt do SLX
Przepraszam za zwłokę. Sprawdziłem twój skrypt i wyskakuje error:
a jak ktoś jest poważnie ranny to leży na ziemi i nie możne się ruszać a jak się do niego podejdzie to wyskakuje akcja "give First Aid (tu imię NPC lub gracza), i akcja od ciągnięcia rannego "Drag (tu imię NPC lub gracza)", żeby przestać ciągnąć rannego używa się akcji "wysiądź"
. Niewiem czy to coś pomoże ale w SLX jest tak że jak ktoś jest ranny a ty jesteś blisko niego to wyskakuje akcja "Bandage (tu imię NPC lub gracza),_supportUnit = _this |#| select 1 Error Zerowy podzielnik
a jak ktoś jest poważnie ranny to leży na ziemi i nie możne się ruszać a jak się do niego podejdzie to wyskakuje akcja "give First Aid (tu imię NPC lub gracza), i akcja od ciągnięcia rannego "Drag (tu imię NPC lub gracza)", żeby przestać ciągnąć rannego używa się akcji "wysiądź"
Re: Skrypt do SLX
Nawet z tym błędem medyk opatruje rannych leżących (niemogących się poruszyć) jak i rannych mogących walczyć tylko nie ciągnie rannych leżących do punktu. Czy dało by się zrobić żeby ich ciągną do punktu a potem leczył?
Re: Skrypt do SLX (leczenie przez medyka)
Pokaż z jakimi parametrami wywołujesz skrypt, bo chyba nie podałeś ich poprawnie. Powinna się tam znaleść tablica zagnieżdzona [A] w tablicy parametrów [] dla skryptu:
[ [A] , medyk ] exec
Czy chcesz, aby 'medyk' w skrypcie był sterowany przez AI, czy 'medykiem' będzie player ? Spekuluje, że player ma pewnie podczepione skrypty pod 'addaction', które po aktywacji lekko zmniejszają uszkodzenia, tylko po co potrzebe to AI w skrypcie ? Chyba tylko graczowi.
Jak już wspominałem nie znam SLX, ale jeśli podpowiesz mi jaka komenda powoduje 'wlecznie' rannych (pewnie trzeba by pogrzebać w .pbo SLXa), lub znasz nazwę animacji która symulowałaby 'wleczenie', to nie wykluczone, że dałoby się taką procedurę wykonać.
[ [A] , medyk ] exec
Czy chcesz, aby 'medyk' w skrypcie był sterowany przez AI, czy 'medykiem' będzie player ? Spekuluje, że player ma pewnie podczepione skrypty pod 'addaction', które po aktywacji lekko zmniejszają uszkodzenia, tylko po co potrzebe to AI w skrypcie ? Chyba tylko graczowi.
Jak już wspominałem nie znam SLX, ale jeśli podpowiesz mi jaka komenda powoduje 'wlecznie' rannych (pewnie trzeba by pogrzebać w .pbo SLXa), lub znasz nazwę animacji która symulowałaby 'wleczenie', to nie wykluczone, że dałoby się taką procedurę wykonać.
"True glory consists in doing what deserves to be written, in writing what deserves to be read." - Pliny The Elder
Re: Skrypt do SLX (leczenie przez medyka)
Faktycznie miałeś racje, źle wpisałem parametry. AI też potrafi "wlec" rannych tylko nie wie gdzie ma ich zawlec i głównie zaczyna akcje wleczenia i stoi a potem puszcza rannego i go leczy. A co do grzebania w plikach .pbo to nie mogę ich rozpakować (próbowałem za pomocą depbo i cpbo i zawsze jest jakiś błąd).