Teraz jest Pt 17 kwi, 2026 22:07


Bullet Cam script - ma to ktoś?

Archiwum działów sekcji Operation Flashpoint
  • Autor
  • Wiadomość
Offline
Avatar użytkownika

gremdek

Porucznik

Porucznik

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

PostCz 05 paź, 2006 16:09

Yarek napisał(a):Ja niedawno popełniłem taki skrpyt (z ciekawości):
Kod: Zaznacz cały
;bulletcam.sqs
;uruchomienie:
; this AddEventHandler ["Fired", { _this exec "BulletCam.sqs"}]

_unit = _this select 0
_projectile = nearestObject [vehicle(_unit), _this select 4]

_camera = "camera" camCreate getPos _projectile
_camera CameraEffect ["INTERNAL","BACK"]

_unit  removeEventHandler ["Fired", 0]


SetAccTime 0.1


#JMP
_Pos = position _projectile
_vel = velocity _projectile
_vx = _vel select 0
_vy = _vel select 1
_vz = _vel select 2

_camera SetPos _Pos
_camera camSetTarget [(_Pos select 0) + _vx, (_Pos select 1) + _vy, (_Pos select 2) + _vz]

_camera CamCommit 0

? alive _projectile : goto "JMP"

#END
SetAccTime 1

_camera CameraEffect ["TERMINATE","BACK"]
CamDestroy _camera

_unit AddEventHandler ["Fired", { _this exec "BulletCam.sqs"}]


Czasami występuje problem przy przywróceniu widoku na gracza (nie reaguje na ruch myszy) i nie bardzo wiem jak go rozwiązać.


zastanawia mnie czy nie masz małego błędu, usuwasz eventhandlera korzystajac z jego indexu, czyli zalozmy ze usunales pierwszy z numerem 0, pod koniec skryptu dodajesz nastepny i jaki on bedzie mial numerek? tez 0?
:(
Offline

zGuba

Moderator

Moderator

  • Posty: 1182
  • Dołączył(a): N 05 lut, 2006 19:15

PostCz 05 paź, 2006 16:45

Dzięki za wspaniałą pomoc :D

Mam już gotowy skrypt, jest nieco zaskakujący - NIE tworzę nowej kamery, lecz wykorzystuję pocisk w tej roli.

Kod: Zaznacz cały
; w polu inicjacji jednostki: this AddEventHandler ["Fired", { _this exec "bulletcam.sqs"}]

_unit = _this select 0
_projectile = nearestObject [vehicle(_unit), _this select 4]

_projectile CameraEffect ["INTERNAL","BACK"]

showcinemaborder false

_unit  removeEventHandler ["Fired", 0]
SetAccTime 0.5
~1.0
SetAccTime 1

_camera CameraEffect ["TERMINATE","BACK"]
CamDestroy _camera

_unit AddEventHandler ["Fired", { _this exec "bulletcam.sqs"}]

exit


Efekt wygląda naprawdę imponująco; niestety, jako że pocisk sam jest kamerą, nie zobaczymy np. korpusu wystrzelonej rakiety, chyba że zmienimy typ kamery. Poza tym, można przypisać go do konkretnego rodzaju pocisku, amunicji lub broni (_this select 4, _this select 2 lub _this select 1).
Offline

Yarek

Szeregowy

Szeregowy

  • Posty: 33
  • Dołączył(a): So 25 lut, 2006 04:07

PostCz 05 paź, 2006 21:40

To fajnie że nie trzeba tworzyć oddzielnej kamery tylo można skorzystać z pocisku.
Napisałem kawałek kodu pozwalający oglądać lecący pocisk z zewnątrz ale efekt nie jest zbyt fajny jakby co to mogę podrzucić, może wykombinujesz coś lepszego.
Co do twojego kodu to widze, że czekasz sekunde i zmieniasz widok. Nie wiem czy nie lepszy byłby mój sposób:

#JMP
? alive _projectile : goto "JMP"

Ostatnio podpiąłem handlera do modu CoC artillery. Efekt jest zaj...efajny.
Super efekt gdy pocisk artyleryjski wystrzelony z jednego końca planszy leci pare sekund i robi duże BUM ;)

-----------------------------------
zastanawia mnie czy nie masz małego błędu, usuwasz eventhandlera korzystajac z jego indexu, czyli zalozmy ze usunales pierwszy z numerem 0, pod koniec skryptu dodajesz nastepny i jaki on bedzie mial numerek? tez 0?


Dobra uwaga będe musiał sprawdzić. Jeśli dobrze zrozumiałem z instrukcji to w sytuacji gdy mamy dwa handlery (np. o indeksach 0 i 1) i usuwamy ten '0' to indeks drgugiego zmiejsza się o 1 (czyli gdy chcemy usunąć drugi to usuwamy też handler o indeksie '0'). Czyli stąd wnioskuje, że następny (ten na końcu skryptu) dodany ma indeks 0 (no chyba, że w międzyczasie instaluje inne wtedy jest problem)
Offline

zGuba

Moderator

Moderator

  • Posty: 1182
  • Dołączył(a): N 05 lut, 2006 19:15

PostCz 05 paź, 2006 22:57

Wypróbuj mój skrypt w akcji. Kamera nie wyłącza się po sekundzie, tylko trochę później; tymczasem po trafieniu chwilę oglądamy miejsce uderzenia pocisku.

Niszczenie kamery nie jest potrzebne, oto ostateczny skrypt:

Kod: Zaznacz cały
; w polu inicjacji jednostki: this AddEventHandler ["Fired", { _this exec "bulletcam.sqs"}]

_unit = _this select 0
_projectile = nearestObject [vehicle(_unit), _this select 4]
?_projectile = "nabój_pistoletu": goto "end"

_projectile CameraEffect ["INTERNAL","BACK"]

showcinemaborder false

_unit  removeEventHandler ["Fired", 0]
SetAccTime 0.5
~1.0
SetAccTime 1

#end:
_unit AddEventHandler ["Fired", { _this exec "bulletcam.sqs"}]

exit


? alive _projectile nie działa u mnie.


Z moim skryptem fajnie strzela się z Remingtona 700 (ma snajper ruchhu oporu) :D
Offline

Yarek

Szeregowy

Szeregowy

  • Posty: 33
  • Dołączył(a): So 25 lut, 2006 04:07

PostPt 06 paź, 2006 00:43

1. Sprawdziłem indeksy przy AddEventHandler. Zawsze jest 0.
2. Masz bład w: ?_projectile = "nabój_pistoletu": goto "end"
po wywaleniu tej linijki działa (zrobiłeś przypisanie łańcucha znaków do obiektu)
3. Przy kamerze korzystającej z pocisku niewiadomo czemu widok szybko przełącza się na gracza (spróbuj strzelić z granatika z mojej kamery i z twojej) :(
4. ? alive _projectile : goto "JMP" działa tylko jak napisałem wyżej widok sam się zmienia wcześniej. Zauważ, że po zmianie kamery upływ czasu wciąż jet <1. Dopier o gdy pocisk przestanie istnieć zmieni się na 1.

Muszę wyeliminować w swojej kamerce błąd przy powrocie do widoku gracza bo się kaszani często. Spróbuje potem zrobić jakąś działającą wersję z widokiem pocisku. Jak mi się uda to wrzuce na forum.
Ja chyba zrobie sobie parę skryptów. Np. twój jest dużo lepszy na wszelkie najperki, mój będzie dobry do widoku długo lecących pocisków.

Znalazłem jeszcze jeden problem, skrypt ten nie działa z addonem broni SJB może ktoświe co z tym zrobić??
Offline

zGuba

Moderator

Moderator

  • Posty: 1182
  • Dołączył(a): N 05 lut, 2006 19:15

PostPt 06 paź, 2006 11:42

Yarek napisał(a):2. Masz bład w: ?_projectile = "nabój_pistoletu": goto "end"
po wywaleniu tej linijki działa (zrobiłeś przypisanie łańcucha znaków do obiektu)

Może, chciałem zrobić "odsiew", żeby np. kamera nie włączała się dla nabojów pistoletowych (to jest przykadowy opis). Może weź caly argument _projectile = "nabój" w nawias?

3. Przy kamerze korzystającej z pocisku niewiadomo czemu widok szybko przełącza się na gracza (spróbuj strzelić z granatika z mojej kamery i z twojej) :(
4. ? alive _projectile : goto "JMP" działa tylko jak napisałem wyżej widok sam się zmienia wcześniej. Zauważ, że po zmianie kamery upływ czasu wciąż jet <1. Dopier o gdy pocisk przestanie istnieć zmieni się na 1.

Muszę wyeliminować w swojej kamerce błąd przy powrocie do widoku gracza bo się kaszani często. Spróbuje potem zrobić jakąś działającą wersję z widokiem pocisku.

Wciśnij klawisz odpowiadający za rozglądanie się niezależnie od celowania i problem zniknie.

A w moim skrypcie wystarczy podmienić "INTERNAL" na "EXTERNAL" i rakieta będzie już widoczna i to dłużej.
Znalazłem jeszcze jeden problem, skrypt ten nie działa z addonem broni SJB może ktoświe co z tym zrobić??


Fakt, nie wszystkie pociski mogą być kamerami. Poza tym skrypt nie zawsze zdąży "złapać" kulę, zwłaszcza gdy CPU lub GPU jest obciążony wieloma jednostkami / szczegółowymi modelami.
Offline

Yarek

Szeregowy

Szeregowy

  • Posty: 33
  • Dołączył(a): So 25 lut, 2006 04:07

PostPt 06 paź, 2006 17:09

Hmm u mnie External nie zmienia za dużo (pocisku wciąż nie widać i widać chyba nie dużo dłużej). A co do SJB to raczej nie wina obciążenia, wygląda to tak jakby wytrzeliwane było coś innego niż standardowe pociski. Wtedy handler nie łapie
Offline

zGuba

Moderator

Moderator

  • Posty: 1182
  • Dołączył(a): N 05 lut, 2006 19:15

PostPt 06 paź, 2006 22:08

Puść rakietę np. z AT4. Naboje karabinowe są w OFP niewidzialne. To nie jest Max Payne, szkoda mocy CPU.

EDIT

Mini misja - "demo dema" :mrgreen: - wykorzystująca mój skrypt, zrobiona dla FFUR 2006 2.0. Rzecz dzieje się na Desert Island i z tego powodu użyłem żołnierzy ACU.

http://www.ofp.pl/zguba/zGubaDesertBattle.zip - 3 KB

Obserwujemy zmagania Rosjan i Amerykanów, w każdej chwili możemy wziąć sprawę w swoje ręce i odstrzelić paru sołdatów, riflemanów albo tanków (w GAZ-ie są magazynki i wyrzutnia przeciwpancerna), do czego bardzo przydaje się bullet cam...

Ze względu na lenistwo nie zrobiłem warunku zwycięstwa, tylko informację o kompletnym zniszczeniu każdej ze stron osobno.

[ot]Zaznaczam że korzystam z mojego configu... bez niego gra może być nieco uciążliwa. Info na pw.[/ot]
Poprzednia strona

Powrót do Operation Flashpoint

Kto przegląda forum

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