Teraz jest Cz 28 mar, 2024 10:05


Problem ze skryptami

Dział poświęcony edytorowi ArmA II i Operation Arrowhead, czyli tworzeniu misji.
  • Autor
  • Wiadomość
Offline
Avatar użytkownika

Trela

Szeregowy

Szeregowy

  • Posty: 25
  • Dołączył(a): Pn 16 kwi, 2012 14:55

Problem ze skryptami

PostN 27 sty, 2013 14:45

Cześć, mam problem.

W misji mam kilka skryptów działających niezależnie od siebie, oraz cutscenki w trakcie. Problem polega na tym, że gra czasami zapomina odpalić niektóre z nich. Każdy z nich osobno jest testowany i działa, a w połączeniu już nie. Wygląda to tak, że np. rozmowa rwie się w połowie, gra czasami zapomina uruchomić skrypt odpowiedzialny za wyposażenie itp.

Widziałem w kilku misjach na początku taki trick zaciemnienie ekranu i napis "scripts are loading . . .", jak zrobić u siebie coś takiego, tzn. dać misji na początku trochę więcej czasu na wczytanie wszystkiego?
aka LostBeyondRetrieval tyle, że kilka dobrych lat później.
Offline
Avatar użytkownika

Artek3333

Chorąży

Chorąży

  • Posty: 223
  • Dołączył(a): Śr 18 lip, 2007 19:17
  • Lokalizacja: Żywiec

Re: Problem ze skryptami

PostN 27 sty, 2013 20:06

Widocznie masz coś namieszane. Czy owe skrypty są w osobnych plikach sqs lub sqf ? Jeśli nie, to daj każdy w osobny plik i w edytorze wywołuj je wyzwalaczami. Jeśli chodzi o opóźnienie, to dla pliku sqs jest
Kod: Zaznacz cały
~10
a dla sqf
Kod: Zaznacz cały
Sleep 10;
liczba to 10 sekund
Offline
Avatar użytkownika

gremdek

Porucznik

Porucznik

  • Posty: 428
  • Dołączył(a): Pn 27 lut, 2006 15:02

Re: Problem ze skryptami

PostPn 28 sty, 2013 12:51

Trela napisał(a):Cześć, mam problem.

W misji mam kilka skryptów działających niezależnie od siebie, oraz cutscenki w trakcie. Problem polega na tym, że gra czasami zapomina odpalić niektóre z nich. Każdy z nich osobno jest testowany i działa, a w połączeniu już nie. Wygląda to tak, że np. rozmowa rwie się w połowie, gra czasami zapomina uruchomić skrypt odpowiedzialny za wyposażenie itp.


gra nie zapomina, ty robisz coś źle.

Trela napisał(a):Widziałem w kilku misjach na początku taki trick zaciemnienie ekranu i napis "scripts are loading . . .", jak zrobić u siebie coś takiego, tzn. dać misji na początku trochę więcej czasu na wczytanie wszystkiego?


to pewnie jakieś skrypty, które muszą wykonać trochę (czyt. dużo) operacji po starcie misji, założę się, że twoje nie są tak obciążające.
:(
Offline
Avatar użytkownika

Trela

Szeregowy

Szeregowy

  • Posty: 25
  • Dołączył(a): Pn 16 kwi, 2012 14:55

Re: Problem ze skryptami

PostPn 28 sty, 2013 15:17

Kolejny raz sprawdziłem, kolejny raz moim zdaniem bez błędów w notatniku, ale z błędami w grze. Najczęściej wykrzacza w rozmowie z POW. Nie jest ona po prostu kontynuowana:

INIT:
Kod: Zaznacz cały
{_x setVariable ["BIS_noCoreConversations", true];
_x allowFleeing 0;
_x removeWeapon "ItemRadio";
_x removeWeapon "NVGoggles";
} forEach allUnits;

enableRadio false;

0 fadeSound 0;

titleCut ["", "BLACK FADED", 9999];

startCam = "CAMERA" camCreate [9179.90,2707.96,1.94];
startCam cameraEffect ["INTERNAL", "BACK"];

startCam camPrepareTarget [-88082.88,-15630.69,-14405.95];
startCam camPreparePos [9179.90,2707.96,1.94];
startCam camPrepareFOV 0.700;
startCam camCommitPrepared 0;

waitUntil {!(isNil "BIS_fnc_init")};

player setHit ["body",0.3]; 
player setHit ["head_hit",0.6];

[] spawn {
    _light_player = "#lightpoint" createVehicle position pl;
    _light_player attachTo [pl, [0, 0, 12]];
    while {Alive pl} do {
    _light_player setLightBrightness 0.05;
    _light_player setLightAmbient [0.2, 0.2, 0.2];
    _light_player setLightColor [0.2, 0.2, 0.2];
  };
};

setViewDistance 4000;

execVM "start.sqf";
execVM "gear.sqf";

AIsoldierFlare_units = [];
player addEventHandler ["fired", {_this execVM "scripts\EH_lightflare.sqf";

sleep 1;

showCinemaBorder false;

exit



Rozmowa (wszystko działa):
Kod: Zaznacz cały
bad3 dowatch pl;
bad2 dowatch pl;
bad1 dowatch pl;

cutText ["blabla.","PLAIN DOWN",2];
sleep 5;
POW dowatch pl;
cutText ["blabla.","PLAIN DOWN",2];
sleep 5;
cutText ["blabla!","PLAIN DOWN",2];
sleep 5;
cutText ["blabla?","PLAIN DOWN",2];
sleep 5;
cutText ["blalbla.","PLAIN DOWN",2];
sleep 5;
cutText ["blblabla.","PLAIN DOWN",2];
sleep 5;
cutText ["blalbla!","PLAIN DOWN",2];
sleep 5;


hint "Choose one answer from action menu";
odp1 = player addaction ["Release him.", "1.sqf"];
odp2 = player addaction ["You are right, I'm leaving.", "2.sqf"];


exit



opcja 1 (częściej działa, niż nie):

Kod: Zaznacz cały
player removeaction odp1;
player removeaction odp2;

sleep 1;
POW = true;

cutText ["Me: Release him. Now.","PLAIN DOWN",2];
sleep 4;
cutText ["Soldier: Your choice.","PLAIN DOWN",2];
sleep 1;
bad1 setcaptive false;
bad2 setcaptive false;
bad3 setcaptive false;
pl setcaptive false;
bad1 dotarget pl;
bad2 dotarget pl;
bad3 dotarget pl;
sleep 1;
POW enableAI "move";
POW setunitpos "middle"
POW setbehaviour "aware";
bad1 dofire pl;
bad2 dofire pl;
bad3 dofire pl;
sleep 1;
POW setcaptive false;

exit


opcja 2 (moment, w którym przestaje najczęściej działać zaznaczony emotką, wcześniej działało):

Kod: Zaznacz cały
player removeaction odp1;
player removeaction odp2;


sleep 1;

cutText ["Me: You are right, I'm leaving.","PLAIN DOWN",2];
sleep 3;
cutText ["Soldier: Good, go away, dumpass.","PLAIN DOWN",2];  :P  :P  :P  :P
sleep 10;
bad1 dotarget POW;
bad2 dotarget POW;
bad3 dotarget POW;
sleep 3;
POW setcaptive false;
bad1 dofire POW;
bad2 dofire POW;
bad3 dofire POW;
sleep 5;
bad1 doMove (position move);
bad1 doMove (position move);
bad1 doMove (position move);
cutText ["Me: He said something about Nemsk.. I've got map. Maybe I should seek for help there.","PLAIN DOWN",2];
sleep 5;
SAVEGAME;
move = true;
pl setcaptive false;


wyzwalacz, który działał, a przy większej ilości skryptów nie działa w ogóle:
warunek: !alive bad1
przy aktywacji: null = [] execVM "bad1dead.sqf"

bad1dead.sqf:

Kod: Zaznacz cały
POW enableAI "move";
sleep 1;
POW setbehaviour "aware";
POW doMove (position bad1);
sleep 1;
POW action ["TakeWeapon", bad1, "Sa58P_EP1"];
POW action ["TakeMagazine", bad1, "30Rnd_762x39_SA58"];
POW action ["TakeMagazine", bad1, "30Rnd_762x39_SA58"];
POW action ["TakeMagazine", bad1, "30Rnd_762x39_SA58"];

sleep 5;

exit


Kolejny popsuty wyzwalacz (skrypt nie odpala wcale):
warunek: !alive bad1 AND !alive bad2 AND !alive bad3 AND alive POW
Przy aktywacji: null = [] execVM "czysto1.sqf"

czysto1.sqf
Kod: Zaznacz cały
sleep 3;

cutText ["blabla.","PLAIN DOWN",2];
sleep 5;
cutText ["blabla?","PLAIN DOWN",2];
sleep 5;
cutText ["blabla.","PLAIN DOWN",2];
sleep 5;
cutText ["blabla.","PLAIN DOWN",2];
sleep 5;
cutText ["blabla.","PLAIN DOWN",2];
sleep 5;
cutText ["blalbla.","PLAIN DOWN",2];
sleep 5;
move = true;
POW = true;
[POW] Joinsilent (Group player);
POW setunitpos "auto";
SAVEGAME;

exit


Pierwszy raz mam taką sytuacje. Czy mógłbyś zerknąć, na całość i powiedzieć mi, gdzie popełniam błąd i jak mu można zaradzić?
aka LostBeyondRetrieval tyle, że kilka dobrych lat później.
Offline
Avatar użytkownika

Artek3333

Chorąży

Chorąży

  • Posty: 223
  • Dołączył(a): Śr 18 lip, 2007 19:17
  • Lokalizacja: Żywiec

Re: Problem ze skryptami

PostPn 28 sty, 2013 23:17

Na pierwszy rzut oka wygląda wszystko ok. Należy wziąć pod uwagę komendę DoFire gdyż zauważyłem po swoich doświadczeniach, że po najnowszym patchu gry, nie działa jak należy. Czasem jednostka ignoruje, olewa tą Komedę i nie strzela. W wcześniejszej wersji gry działało bez zarzutu, tak to jest z tymi łatkami gry jeden element poprawi a dwa elementy spieprzy.
Trela napisał(a):Kolejny popsuty wyzwalacz (skrypt nie odpala wcale):
warunek: !alive bad1 AND !alive bad2 AND !alive bad3 AND alive POW
Przy aktywacji: null = [] execVM "czysto1.sqf"

Czy na pewno bad1,bad2,bad3 nie żyją, a POW jest przy życiu? bo to ma spowodować odpalenie skryptu.
Offline
Avatar użytkownika

Trela

Szeregowy

Szeregowy

  • Posty: 25
  • Dołączył(a): Pn 16 kwi, 2012 14:55

Re: Problem ze skryptami

PostWt 29 sty, 2013 01:49

Czy na pewno bad1,bad2,bad3 nie żyją, a POW jest przy życiu? bo to ma spowodować odpalenie skryptu.

Dokładnie tak jest, już więcej kulek nie mogę im zapakować :D

Sprawdzę jeszcze jutro bez komendy dofire, jednak moim zdaniem coś po prostu psuje się samo z siebie ;D
aka LostBeyondRetrieval tyle, że kilka dobrych lat później.
Offline
Avatar użytkownika

Artek3333

Chorąży

Chorąży

  • Posty: 223
  • Dołączył(a): Śr 18 lip, 2007 19:17
  • Lokalizacja: Żywiec

Re: Problem ze skryptami

PostWt 29 sty, 2013 12:20

Zobacz czy czasem nie masz jakiejś literówki w nazwach jednostki i spróbuj warunku

Kod: Zaznacz cały
(alive pow) and (not alive bad1) and (not alive bad2) and (not alive bad3)


Odnośnie działania pewnych komend też miałem problem w długim skrypcie, który gdzieś w pewnym momencie przestawał działać. Poradziłem sobie w banalnie prosty sposób, mianowicie po każdej komendzie, używałem
Kod: Zaznacz cały
Hint"taka i taka komenda działa";
i wiedziałem, po jakiej linijce skrypt przerywało, bo nie wyświetlał się tekst z Hintu. Musiałem wtedy użyć innej komendy czy alternatywy bądź poprawić błąd, czasem mała literówka lub jakaś klamra itp.
Ostatnio edytowano Wt 29 sty, 2013 14:09 przez Artek3333, łącznie edytowano 1 raz
Offline
Avatar użytkownika

Algrab

Generał

Generał

  • Posty: 2990
  • Dołączył(a): So 10 paź, 2009 23:35
  • Lokalizacja: x+2=1

Re: Problem ze skryptami

PostWt 29 sty, 2013 13:16

w pewnym Momocie


musi to być specyficzny stan umysłu ;)
Obrazek
Offline
Avatar użytkownika

Artek3333

Chorąży

Chorąży

  • Posty: 223
  • Dołączył(a): Śr 18 lip, 2007 19:17
  • Lokalizacja: Żywiec

Re: Problem ze skryptami

PostWt 29 sty, 2013 14:11

@Algrab, miło, że wytknąłeś mi błąd literówki. Żeby cię oczy nie bolały, już to poprawiłem. Z ciekawości przeglądnąłem twoje posty i chyba byś musiał rok poświęcić na poprawę twoich literówek. Bez obrazy :) Zajmijmy się bieżącym tematem. :]
Offline
Avatar użytkownika

Algrab

Generał

Generał

  • Posty: 2990
  • Dołączył(a): So 10 paź, 2009 23:35
  • Lokalizacja: x+2=1

Re: Problem ze skryptami

PostWt 29 sty, 2013 17:36

Już się tak nie stresuj Kolego, bo złość piękności szkodzi :) Mistrzem Dyktanda Polskiego zapewne nie jestem i być też nie zamierzam.
A Momot zabrzmiało na tyle ciekawie że zwróciło to moją uwagę :)
Z ciekawości przejrzałem swoje posty i chyba nie tego usera kliknąłes z opcją "Zobacz posty użytkownika". Takie odniosłem wrażenie ;]
Obrazek
Offline
Avatar użytkownika

Blackburn

Pułkownik

Pułkownik

  • Posty: 1437
  • Dołączył(a): Cz 15 lip, 2010 11:36
  • Lokalizacja: Raz tu, raz tam...

Re: Problem ze skryptami

PostWt 29 sty, 2013 17:37

Ja bym sprawdził to w taki sposób: dofire i dotarget zamienić na komende setdammage 1. Dlaczego tak? Jak już wcześniej było tutaj wspominane komenda dofire ostatnio się zepsuła i AI nie chce jej wykonywać bezwzględnie.

Powrót do [ArmA II] Edytor

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 8 gości

cron