Teraz jest N 22 cze, 2025 13:21


Realistyczny pancerz dla czołgów

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

reyhard

Pułkownik

Pułkownik

  • Posty: 1455
  • Dołączył(a): So 12 mar, 2005 09:56
  • Lokalizacja: wielkiego brata

Realistyczny pancerz dla czołgów

PostPt 22 sie, 2008 14:36

Ostatnio eksperymentowałem z różnymi skryptami i metodami, który w jakiś tam sposób pozwoliłby na troszkę lepsze odwzorowanie zachowania sprzętu z drugiej wojny światowej. Na pierwszy ogień poszły skrypty z modyfikacji Liberation 1941-1945, takoż i lwia część powinna iść w stronę ich twórców za wytyczenie szlaku na tym polu. Dalej, podziękowania powinny iść do Unnamed, który to wykonał skrypt i model testowy do wykrywania obrotu wieżyczki.

W configu jednostki trzeba wpisać
Kod: Zaznacz cały
      class EventHandlers
             {
                init="_this exec {\RDS_Test_Obj01\init.sqs};UNN_CreateProxy=loadfile ""\MyT72\UNNCreateProxy.sqf"" ; [(_This Select 0)] Call UNN_CreateProxy";
         hit= "[_this,400,1.0002,0.1937,{t26},1.3,0.5,8.8,8.2,8.5] exec {\RDS_Test_Obj01\tank_damage.sqs}";
             };

Objaśnienie
[_this - tego nie modyfikujemy,400,1.0002 - ogólny modyfikator opancerzenia,0.1937,{t26} - zostawiamy w spokoju,1.3 - pancerz przedni, kadłub,0.5 - pancerz tylni,8.8 - przedni pancerz wiezyczki,8.2 - tylni pancerz wiezyczki,8.5 boczny pancerz wiezyczki]

Kod: Zaznacz cały
_hints = true
_obj = (_this select 0) select 0
_killer = (_this select 0) select 1
_ddam0 = (_this select 0) select 2
?(format ["%1", GLOBAL_HIT] == "scalar bool array string 0xfcffffef"):GLOBAL_HIT =[]
?(_obj in Global_hit):exit
GLOBAL_HIT = GLOBAL_HIT + [_obj]

Powyższy kod zapobiega wielokrotnemu odpaleniu skryptu

Kod: Zaznacz cały
_j = random(1)
_getdam = getdammage _obj
;Modyfikator obrażeń - bok kadłuba
_ks = 1
;Modyfikator obrażeń - front kadłuba
_ks_lob = _this select 5 
;Modyfikator obrażeń - tył kadłuba
_ks_rear = _this select 6
;Modyfikator obrażeń - front wieżyczki
_ks_lob_tur = _this select 7 
;Modyfikator obrażeń - tył wieżyczki
_ks_rear_tur = _this select 8
;Modyfikator obrażeń - bok wieżyczki
_ks_bok_tur = _this select 9

Lekki wyjaśnienie powyższego - wartość armor, jaką wpisujemy w configu jednostki jest
wartością odporności pancerze bocznego. Na przykład, boczny pancerz tygrysa ma 80mm grubości, więc w configu wpisujemy armor=80*4; (pomnożyłem to raz 4, co byle KMem nie dało się tego rozwalić. Niestety, eventhandler hit nie reaguje na małe obrażenia...). Przedni pancerz ma 100mm, czyli jest o 25% grubszy od pancerza grubszego. Dlatego też dajemy _ks_lob wartość 1.25. Oczywiście bronie muszą być odpowiednio wyważone dla takich jednostek.

Kod: Zaznacz cały
_dist = _obj distance _killer
?_dist>1600:_dist = 1600

Skrypt uwzględnia odległość jaką przebył pocisk, powyżej 1600m wartość modyfikatora jest stała.

Kod: Zaznacz cały
_side="bort";
if(_dist>0 AND !(canfire _obj))then{_ks=_ks_bok_tur;_turDir=[_obj] Call UNN_Direction;_side = [_obj,_killer,_turDir] call detect_side;if(_side=="lob")then{_ks=_ks_lob_tur;player globalchat "front wiezyczki"};if(_side=="rear")then{_ks=_ks_rear_tur;player globalchat "tyl wiezyczki";};if(_side=="bort")then{player globalchat "bok wiezyczki"};}else{if(_dist>0)then{_side = [_obj,_killer] call detect_side;if(_side=="lob")then{_ks=_ks_lob;player globalchat "front"};if(_side=="rear")then{_ks=_ks_rear;player globalchat "tyl"};}};
[_obj,_ddam0] exec "\RDS_Test_Obj01\hit.sqs"

Cała sztuczka z wykryciem uderzenia w wieżyczkę polega na tym, że w armorTurret dajemy jakąś małą wartość, co by każdy strzał, mógł ją uszkodzić. Gdy wieżyczka jest uszkodzona, spełniony jest warunek !(canFire _obj), co powoduje uruchomienie funkcji (_turDir=[_obj] Call UNN_Direction) sprawdzającej obrót wieżyczki. Obecna metoda, wymaga edycji modelu jednostki i jest średnio satysfakcjonująca. Można by było to obejść, poprzez wzięcie pozycji strzelca i dopiero w przypadku, gdy go nie ma, wsadzenie tam elementu logicznego ale to jak starczy mi czasu zaimplementuje.

Kod: Zaznacz cały
?(player in _obj):playSound "EarRing10"
_a = (_this select 1)
_b = _this select 2
_gamedam = (_this select 3)*_ks
_type = _this select 4
_razbros = _dist*0.1
_dist = _dist - _razbros/2 + random(_razbros)
? !alive _obj:[_obj,_type,_ddam0,_killer] exec "\RDS_Test_Obj01\destroyed.sqs"; exit
_koef = _b^(-_dist+_a)
_koef =_koef/_gamedam
_ddam=_ddam0*_koef

Modyfikowanie obrażeń, im mniejsza wartość parametru _a, tym pancerz jest odporniejszy.

Kod: Zaznacz cały
?_hints :player globalchat format ["ddam %1 getdam %2",_ddam,_getdam]
?("Man" countType [_killer])>0 AND (_ddam0 !=_getdam) AND _dist<50:goto "grenade"
;czolg zaczyna sie palic
?(_ddam > 1 AND (canmove _obj)):goto "destroyed"
;instant kill
?(_ddam > 1.4 AND (_ddam0 != _getdam)):[_obj,_type,_ddam0,_killer] exec "\RDS_Test_Obj01\destroyed.sqs";driver _killer addrating 250; gunner _killer addrating 350; commander _killer addrating 400;exit
?(_ddam > 1 AND (_obj in GLOBAL_DAMAGED)):goto "destroyed"
;?(!(canfire _obj) AND (_j<0.2)): _obj removeWeapon (Primaryweapon _obj);_ddam0=1;goto "effects"
? ((!canmove _obj) AND !(_obj in GLOBAL_DAMAGED)):goto "effects"
goto "heal"

*Jeśli wartość obrażeń (już po zmodyfikowaniu przez miejsce trafienie i odległość) jest większa niż 1, to nastąpi nie aż tak gwałtowne zniszczenie czołgu.
*Powyżej 1.4 następuje natychmiastowe zabicie załogi
*Jeśli trafione zostaną gąsienice to czołg zostanie pozbawiony paliwa (w addonie testowym pancerz gąsienic jest zbyt duży więc trudno je zniszczyć pojedynczym strzałem)
*W przypadku gdy żaden z warunków nie jest spełniony czołg nie odnosi żadnych obrażeń


Poniżej są zdefiniowane efekty trafień, do edycji wedle woli
Kod: Zaznacz cały
#effects
?(_obj in GLOBAL_DAMAGED):goto "heal"
GLOBAL_DAMAGED = GLOBAL_DAMAGED+[_obj]
driver _killer addrating 100; gunner _killer addrating 200; commander _killer addrating 200
_obj setdamage 0
[_obj,_type,_killer,_ddam0] exec "\RDS_Test_Obj01\tracks.sqs"
~0.5
GLOBAL_HIT = GLOBAL_HIT - [_obj]
exit

#destroyed
[_obj,_type,_ddam0,_killer] exec "\RDS_Test_Obj01\destroyed.sqs";
driver _killer addrating 250;gunner _killer addrating 350;commander _killer addrating 400;
~0.5
GLOBAL_HIT = GLOBAL_HIT - [_obj]
exit

#heal
?_obj in GLOBAL_DESTROYED:exit
;[_killer,5,_obj] exec "\RDS_Test_Obj01\rus_inf\gen_sound.sqs"
[_obj] exec "\RDS_Test_Obj01\heal_crew.sqs"
_obj setdammage 0;
~0.5
GLOBAL_HIT = GLOBAL_HIT - [_obj]
exit

#grenade
?(_ddam0 > 0.13 AND (canmove _obj)):_ddam0=0.2;goto "destroyed";
?(!canmove _obj):goto "effects"
goto "heal"


W załączniku dałem addon i misje testową.
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Po prostu przyjmij do wiadomości, że nadciąga rewolucja proletariacka, lada dzień Chavez z Castro i Bin Ladenem nadjadą na białym traktorze i uwolnią ciemiężony lud polski spod władzy międzynarodowego kapitału.
Online

xersius

Pułkownik

Pułkownik

  • Posty: 99987
  • Dołączył(a): Pn 29 lip, 2024 15:01

Re: Realistyczny pancerz dla czołgów

PostSo 14 gru, 2024 04:08

audiobookkeepercottageneteyesvisioneyesvisionsfactoringfeefilmzonesgadwallgaffertapegageboardgagrulegallductgalvanometricgangforemangangwayplatformgarbagechutegardeningleavegascauterygashbucketgasreturngatedsweepgaugemodelgaussianfiltergearpitchdiameter
geartreatinggeneralizedanalysisgeneralprovisionsgeophysicalprobegeriatricnursegetintoaflapgetthebouncehabeascorpushabituatehackedbolthackworkerhadronicannihilationhaemagglutininhailsquallhairyspherehalforderfringehalfsiblingshallofresidencehaltstatehandcodinghandportedheadhandradarhandsfreetelephone
hangonparthaphazardwindinghardalloyteethhardasironhardenedconcreteharmonicinteractionhartlaubgoosehatchholddownhaveafinetimehazardousatmosphereheadregulatorheartofgoldheatageingresistanceheatinggasheavydutymetalcuttingjacketedwalljapanesecedarjibtypecranejobabandonmentjobstressjogformationjointcapsulejointsealingmaterial
journallubricatorjuicecatcherjunctionofchannelsjusticiablehomicidejuxtapositiontwinkaposidiseasekeepagoodoffingkeepsmthinhandkentishglorykerbweightkerrrotationkeymanassurancekeyserumkickplatekillthefattedcalfkilowattsecondkingweakfishkinozoneskleinbottlekneejointknifesethouseknockonatomknowledgestate
kondoferromagnetlabeledgraphlaborracketlabourearningslabourleasinglaburnumtreelacingcourselacrimalpointlactogenicfactorlacunarycoefficientladletreatedironlaggingloadlaissezallerlambdatransitionlaminatedmateriallammasshootlamphouselancecorporallancingdielandingdoorlandmarksensorlandreformlanduseratio
languagelaboratorylargeheartlasercalibrationlaserlenslaserpulselatereventlatrinesergeantlayaboutleadcoatingleadingfirmlearningcurveleavewordmachinesensiblemagneticequatormagnetotelluricfieldmailinghousemajorconcernmammasdarlingmanagerialstaffmanipulatinghandmanualchokemedinfobooksmp3lists
nameresolutionnaphtheneseriesnarrowmouthednationalcensusnaturalfunctornavelseedneatplasternecroticcariesnegativefibrationneighbouringrightsobjectmoduleobservationballoonobstructivepatentoceanminingoctupolephononofflinesystemoffsetholderolibanumresinoidonesticketpackedspherespagingterminalpalatinebonespalmberry
papercoatingparaconvexgroupparasolmonoplaneparkingbrakepartfamilypartialmajorantquadruplewormqualityboosterquasimoneyquenchedsparkquodrecuperetrabbetledgeradialchaserradiationestimatorrailwaybridgerandomcolorationrapidgrowthrattlesnakemasterreachthroughregionreadingmagnifierrearchainrecessionconerecordedassignment
rectifiersubstationredemptionvaluereducingflangereferenceantigenregeneratedproteinreinvestmentplansafedrillingsagprofilesalestypeleasesamplingintervalsatellitehydrologyscarcecommodityscrapermatscrewingunitseawaterpumpsecondaryblocksecularclergyseismicefficiencyselectivediffusersemiasphalticfluxsemifinishmachiningspicetradespysale
stunguntacticaldiametertailstockcentertamecurvetapecorrectiontappingchucktaskreasoningtechnicalgradetelangiectaticlipomatelescopicdampertemperateclimatetemperedmeasuretenementbuildingtuchkasultramaficrockultraviolettesting
Online

xersius

Pułkownik

Pułkownik

  • Posty: 99987
  • Dołączył(a): Pn 29 lip, 2024 15:01

Re: Realistyczny pancerz dla czołgów


Powrót do Operation Flashpoint

Kto przegląda forum

Użytkownicy przeglądający ten dział: xersius i 3 gości