lokalność zdarzeń i tak dalej.

Moderator: Inkwizytor

ODPOWIEDZ
gremdek
Posty: 261
Rejestracja: 13 grudnia 2006, 16:53
ID Steam:

lokalność zdarzeń i tak dalej.

Post autor: gremdek »

mam taki skrypt odpalany za pomocą akcji

Kod: Zaznacz cały

hel = _this select 0;publicvariable "hel";
carr = _this select 1;publicvariable "carr";

? hel == h1: skrz=s1;publicvariable "skrz";
? hel == h2: skrz=s2;publicvariable "skrz";
? hel == h3: skrz=s3;publicvariable "skrz";
? hel == h4: skrz=s4;publicvariable "skrz";
? hel == h5: skrz=s5;publicvariable "skrz";
? hel == h6: skrz=s6;publicvariable "skrz";
? hel == h7: skrz=s7;publicvariable "skrz";
? hel == h8: skrz=s8;publicvariable "skrz";
? hel == h9: skrz=s9;publicvariable "skrz";
? hel == h10: skrz=s10;publicvariable "skrz";

akcja = "skrzynka";publicvariable "akcja";

exit
wiem że nieładny, ale na razie mi wystarcza.

teraz gdy akcja bedzie równa skrzynka czy coś innego odpali się(za pomocą triggera(wyzwalacza), one jakoś tak globalnie działają):

Kod: Zaznacz cały

goto format["%1",akcja]
#exit
akcja="zero"; publicvariable "akcja"
exit

#skrzynka
[skrz,carr,hel] exec "podnies.sqs"
goto "exit"

#wyladuj
[veh,ilosc] exec "wywal.sqs"
goto "exit"
a oto jest i plik podnies.sqs

Kod: Zaznacz cały

_obj = _this select 0
_car = _this select 1
_h = _this select 2
_cel = woz
_cel2 = woz2
? _car in carriers:hint "masz zajete rece";exit;
? behaviour _car == "safe" :goto "before";

_car playmove "combattostand"
_car setbehaviour "safe"
hint "nie masz sily, sprobuj za chwile"
exit 
#before
_h removeaction banan
carriers = carriers + [_car]; publicvariable "carriers"
#loop
? speed _car > 6 OR !(alive _car) OR (behaviour _car != "safe") : goto "wywal"
? _obj distance _cel < 2.5 : goto "doniesione"
? _obj distance _cel2 < 2.5 : goto "doniesione2"
;? ((time - _t)> 15) && (behaviour _car != "safe") : exit
_dir = getdir _car
_posstart = getpos _car
_ox = GetPos _car Select 0
_oy = GetPos _car Select 1
_pos = [_ox+sin(_dir)*(0.9),_oy+cos(_dir)*(0.9),0.75]
_obj setpos _pos
_obj setdir (_dir+90)
~0.01
goto "loop"

#wywal
_ox = GetPos _obj Select 0
_oy = GetPos _obj Select 1
_pos = [_ox,_oy,0]
_obj setpos _pos
banan = _h addaction ["podnies","podniesakcja.sqs"]
carriers = carriers - [_car]; publicvariable "carriers"
exit

#doniesione
woz1ban = woz1ban + 1; publicvariable "woz1ban"
goto "p"
#doniesione2
woz2ban = woz2ban + 1; publicvariable "woz2ban;
#p
_obj setpos [0,0,0]
banzeb = banzeb + [_obj]; publicvariable "banzeb";
hint format["doniesione skrzynki:%1/10",count banzeb]
carriers = carriers - [_car]
banan = _h addaction ["podnies","podniesakcja.sqs"]
exit

teraz tak.
ten hint format["doniesione skrzynki:%1/10",count banzeb] nie wyswietla się nikomu innemu jak tylko temu co odpali tę akcję.
a jest to sprawa kluczowa, żeby macierz banzeb była dostępna dla każdego, a nie jest, pomimo publicvariable.
proszę o propozycje rozwiązania problemu.

/* --------------------------------------------------------- */

problem drugi

Kod: Zaznacz cały

? !(local Server): exit
_n=0
_rp = (_this select 1) + (random 10)
_r = _rp - (_rp mod 1)
_obj = _this select 0
#loop
?_n==_r: exit
_r1 = random 5
_r2 = 1 - random _r1
_pos = [(getpos _obj select 0) + _r1, (getpos _obj select 1) - _r2, 0]
_ban = "weaponholder" createVehicle _pos
_ban setpos _pos
_ban setdir (random 360)
banust = banust + [_ban]; publicvariable "banust";
_n=_n+1
goto "loop"

exit
czyli createvehicle tylko po stronie serwera.
potem dla macierzy banust odpalam(z triggera). (banust exec "banany.sqs")

Kod: Zaznacz cały

_n = 0
#loop
? _n >= (count _this): exit
(_this select _n) addmagazinecargo ["AS_banana",1]
_n = _n + 1
goto "loop"
no i lokalnie odpalone jak jest to widze wszystko bardzo ładnie. na serwerze nie.





no i to by było na tyle.
aha, to jest pod ofp jeszcze, ale pod armą powinno być tak samo.
cfog skończył się na kill'em all
Awatar użytkownika
kondor
Posty: 1526
Rejestracja: 13 marca 2007, 11:50
ID Steam: Przemek_kondor
Kontakt:

Re: lokalność zdarzeń i tak dalej.

Post autor: kondor »

nie wczytałem się w całą logikę, ale zauważyłem przynajmniej 1 błąd:
publicVariable ogłasza zmienną tablicową (array/macierz) dopiero od wersji 1.09 ArmA:
biwiki pisze: Broadcast variable value to all computers.

Only type Number is supported in version 1.33 and before.

Following Types are supported since version 1.34:

* Number
* Boolean
* Object
* Group

Following Types are supported since version ArmA v1.00:

* String

Since version ArmA v1.09: Any value can be transferred, including

* Array
* Code

The only limitation is you cannot transfer references to entities which are local, like scripts, displays, or local objects.
(też się kiedyś na to złapałem)
gremdek
Posty: 261
Rejestracja: 13 grudnia 2006, 16:53
ID Steam:

Re: lokalność zdarzeń i tak dalej.

Post autor: gremdek »

hmm, to już wiem gdzie się wywala.
trzeba po prostu zrobić numerację dziesiętną dla zmienna akcja a nie żeby to były stringi.



co do problemu drugiego, chyba po prostu wywale żeby tylko na serwerze robiło, niech wali u każdego na komputerze i tyle.
jeśli nie da się globalnie z publicvariable tablicy dać, to tylko lepiej, weźmie tylko tyle ile powinno być doda wtedy(tym drugim skrytpem, bo tablica z której jest odpalana będzie i tak uzupełniona tymi createvehicle co lokalnie się stworzyły).


pytanie, można jakoś odpalić skrypt przesyłając adres tablicy, a nie ją samą? tak żeby była podatna na zmiany które zachodzą w między czasie?
cfog skończył się na kill'em all
Awatar użytkownika
kondor
Posty: 1526
Rejestracja: 13 marca 2007, 11:50
ID Steam: Przemek_kondor
Kontakt:

Re: lokalność zdarzeń i tak dalej.

Post autor: kondor »

gremdek pisze: pytanie, można jakoś odpalić skrypt przesyłając adres tablicy, a nie ją samą? tak żeby była podatna na zmiany które zachodzą w między czasie?
Nie słyszałem o czymś takim, gdy potrzebuję czegoś takiego, używam zmiennych globalnych, ktorych mogę zapisać wartości z każdego miejsca i później mogę je odczytać wszędzie. Trochę to brzydkie ale nie umiem inaczej
gremdek
Posty: 261
Rejestracja: 13 grudnia 2006, 16:53
ID Steam:

Re: lokalność zdarzeń i tak dalej.

Post autor: gremdek »

no trochę brzydkie, a jak się okazuje to z tablicami globalnymi w ofp jest problem.
cfog skończył się na kill'em all
ODPOWIEDZ

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