Jagged Alliance Center - Forum

Nowy temat Odpowiedz w temacie  [ Posty: 4 ] 
Autor Wiadomość
Maxwell
Post : 18 wrz 2006 00:00
Cytowanie selektywne Odpowiedz z cytatem
Offline
Awatar użytkownika
Starszy kapral
Starszy kapral
  • Posty: 90
  • Dołączył: 31.08.2006


Nie jest to kompletny 'tutorial' o tych plikach, a jedynie o pewnych elementach, ale może w przyszłości się rozbuduje jeśli będzie taka potrzeba.

Tematem przewodnim jest umieszczanie nowych obiektów w Items.xml - najlepiej to zrobić z jakimś przykładem, a że umieszczenie przeciwpancernej koszulki było by nudne to o czymś wymagającym większej pracy czyli jak wrzucić nową broń.

Zaczniemy od Items.xml

Plik składa się z wielu sekcji (wielu znaczy 1028) - każda zaczyna się <ITEM> i kończy </ITEM>. Możemy edytować tu część parametrów przedmiotów lub dodawać własne. Dodawanie można zrobić na 2 sposoby - zastępując obiekty "Nada", lub dodając nowe na końcu pliku. Trzeba tu wspomnieć że każdy przedmiot ma swój 'uiIndex' i przedmioty muszą być poukładane w pliku w kolejności rosnącej tego parametru - jeśli będzie przerwa w numerowaniu, np. po uiIndex 9 mamy uiIndex 11, to gra się zawiesi. Jeżeli dwa przedmioty będą miały ten sam uiIndex to gra się zawiesi, jeśli będzie zła kolejność np. najpierw 9 potem 8, to... gra się zawiesi.
Obiektów "Nada" jest około setki i w większości spełniają rolę odstępu - 'pustych' uiIndex tak by można było w przyszłości umieścić tu ekwipunek który przeważnie jest poumieszczany grupami (np. amunicja do granatników blisko siebie itp). Jednak niektóre specjalnie są "Nada" więc najbezpieczniej jest wykonać to drugą metodą.

Jako że robimy broń, ułatwimy sobie trochę życie i skopiujemy najpierw istniejącą - .50 Beowulf Rifle i umieścimy ją na końcu, zmieniając uiIndex na odpowiedni, w tym wypadku 1029. Zmieniamy krótką i długą nazwę broni, opis, oraz nazwę i opis u Bobby Ray'a (z lenistwa identyczny z tym ogólnym).
Kod:
   <ITEM>
      <uiIndex>1029</uiIndex>
      <szItemName>Invader</szItemName>
      <szLongItemName>Mk XIb Invader</szLongItemName>
      <szItemDesc>Powerfull assault rifle manufactured under license by Fieldhausen Arms.</szItemDesc>
      <szBRName>Mk XIb Invader</szBRName>
      <szBRDesc>Powerfull assault rifle manufactured under license by Fieldhausen Arms.</szBRDesc>
   </ITEM>


Teraz pora na 'usItemClass' - pozostawiamy na '2' ale oto krótki spis wszystkich klas:

2 = Broń palna (wszystko co strzela wliczając w to strzałki, minirakiety, a nawet jednorazowe wyrzutnie się tu zaliczają)
4 = Broń biała tnąca (noże itp.)
8 = Noże do rzucania
16 = Wyrzutnie (granatniki, wyrzutnie rakiet - te ładowane)
64 = Rzucane obiekty nie będące bronią (kamienie...)
128 = Broń biała tępa (Kastet, łom...)
256 = Rzucane lub wystrzeliwane ładunki wybuchowe (granaty, amunicja do granatników, rakiety)
512 = Bomby (ale również amunicja do moździerzy)
1024 = Magazynki
2048 = Pancerz
4096 = Apteczki (również zestawy PP)
8192 = inne zestawy bojowe
32768 = 'Face Items'
65536 = Klucze
268435456 = różne przedmioty (wszystko co nie pasuje powyżej)
536870912 = pieniądze (nie tylko banknoty, ale również portfele, bryłki złota etc.)

Teraz pora na 'ubClassIndex' - tu się zaczynają schody bo trzeba edytować inne pliki xml w zależności co robimy (weapons.xml, armours.xml etc.). Obecnie mamy tu '760' (gdyż kopiowaliśmy istniejącą broń), oznacza to że kod odnosi się do pliku Weapons.xml (ustawiliśmy klasę jako '2') do uiIndex 760 w tym pliku. Zmieniamy na 1029 - takiego czegoś nie ma w Weapons.xml i trzeba będzie tam to umieścić, ale opiszę to nieco niżej.

Przechodzimy do 'ubGraphicNum' i zmieniamy grafikę na taką jak ma FN SCAR-H czyli 246
'ubWeight' podnosimy do 71 (czyli 7.1kg no cóż będzie dobre, ale ciężkie ;) )
'usPrice' podnosimy do 6000 ($)
'ubCoolnes' damy 10 bo to bardzo fajna broń ;)
'bReliability' 4 ... niech będzie niezawodny.
'bRepairEase' zmieniamy na -4 bo pewnie nie łatwo się naprawia ;)
'BR_ROF' ... co by tu wpisać... powiedzmy 600 - to chyba tylko informacja u Bobby Raya i innego wpływu nie ma na grę.
Resztę zostawiamy jak jest, zresztą opcje są chyba dość czytelne.

Pora na inne pliki:

Otwieramy Weapons.xml, szukamy uiIndex 760 i kopiujemy cały fragment kodu od <WEAPONS> do </WEAPONS> po czym wklejamy na końcu pliku Weapons.xml i zmieniamy uiIndex na 1029 - tym razem nie musimy się martwić że nie ma 1028 bo tu mogą być odstępy dopóki zachowana jest kolejność.

Po zmianie wygląda to tak:
Kod:
   <WEAPON>
      <uiIndex>1029</uiIndex>
      <szWeaponName>Mk XIb Invader</szWeaponName>
      <ubWeaponClass>3</ubWeaponClass>
      <ubWeaponType>6</ubWeaponType>
      <ubCalibre>38</ubCalibre>
      <ubReadyTime>3</ubReadyTime>
      <ubShotsPer4Turns>13</ubShotsPer4Turns>
      <ubShotsPerBurst>3</ubShotsPerBurst>
      <ubBurstPenalty>7</ubBurstPenalty>
      <ubBulletSpeed>23</ubBulletSpeed>
      <ubImpact>40</ubImpact>
      <ubDeadliness>38</ubDeadliness>
      <bAccuracy>5</bAccuracy>
      <ubMagSize>20</ubMagSize>
      <usRange>500</usRange>
      <usReloadDelay>200</usReloadDelay>
      <BurstAniDelay>50</BurstAniDelay>
      <ubAttackVolume>85</ubAttackVolume>
      <ubHitVolume>7</ubHitVolume>
      <sSound>420</sSound>
      <sBurstSound>39</sBurstSound>
      <sSilencedBurstSound>111</sSilencedBurstSound>
      <sReloadSound>102</sReloadSound>
      <sLocknLoadSound>108</sLocknLoadSound>
      <SilencedSound>156</SilencedSound>
      <bBurstAP>3</bBurstAP>
      <bAutofireShotsPerFiveAP>3</bAutofireShotsPerFiveAP>
      <APsToReload>4</APsToReload>
      <SwapClips>1</SwapClips>
      <MaxDistForMessyDeath>9</MaxDistForMessyDeath>
      <AutoPenalty>7</AutoPenalty>
      <NoSemiAuto>0</NoSemiAuto>
      <APsToReloadManually>0</APsToReloadManually>
      <ManualReloadSound>476</ManualReloadSound>
   </WEAPON>

Oznacza kolejno:
Id
Nazwę
Klasę broni (0 - NOGUNCLASS; 1 - HANDGUNCLASS; 2 - SMGCLASS; 3 - RIFLECLASS; 4 - MGCLASS; 5 - SHOTGUNCLASS; 6 - KNIFECLASS; 7 - MONSTERCLASS)
Typ broni (0 - NOT_GUN; 1 - GUN_PISTOL; 2 - GUN_M_PISTOL; 3 - GUN_SMG; 4 - GUN_RIFLE; 5 - GUN_SN_RIFLE; 6 - GUN_AS_RIFLE; 7 - GUN_LMG; 8 - GUN_SHOTGUN)
ubCalibre - Kaliber - 38 oznacza .50 Beowulf produkcji Alexander Arms
ubReadyTime - Ilość punktów akcji potrzebna by przygotować broń do strzału.
ubShotsPer4Turns - Szybkostrzelność broni dla pojedynczego strzału
(warto tu zapodać 'tabelkę' starwalker'a:
S4T__AP
_4___22
_5___18
_6___15
_7___13
_8___11
_9___10
10____9
11____8
12____7
13____7
14____6
15____6
16____6
17____5
18____5
19____5
20____4
21____4
22____4
23____4
24____4)
ubShotsPerBurst - Ilość kul podczas serii
ubBurstPenalty - kara do każdej kuli po pierwszej przy strzale z serii
ubBulletSpeed - szybkość z jaką kula leci
ubImpact - obrażenia zadawane przez broń
ubDeadliness - 'zabójczość' broni - najemnicy mogą się skarżyć jeśli za niska
bAccuracy - bonus do celności przy użyciu tej broni
ubMagSize - pojemność magazynka - tu pojawia się kolejny problem. Jeśli podasz tu wielkość magazynka która nie istnieje (tak jak u mnie - Alexander Arms nie produkuje takich magazynków - największe to 10, a nawet takich nie ma w grze) to gra się zwiesi, więc musisz utworzyć nowy w Magazines.xml, o czym później.
usRange - maksymalny zasięg broni
usReloadDelay - prędkość przeładowania w RT.
ubAttackVolume - hałaśliwość broni
ubHitVolume - głośność uderzenia kuli
sSound - dźwięk dla pojedynczego strzału
sBurstSound - dźwięk dla serii
sReloadSound - dźwięk przeładowania
sLocknLoadSound - używany przy 'autoresolve'
bBurstAP - koszt punktowy serii
bAutofireShotsPerFiveAP - ilość kul przy ogniu ciągłym na każde 5 PA
APsToReload - koszt punktowy wymiany magazynka
SwapClips - rodzaj wymiany magazynka: 1 to normalna zamiana, 0 to jak w strzelbach, czyli dokładanie kolejnych naboi
MaxDistForMessyDeath - maksymalna odległość na jakiej broń może wywołać specjalną animację (headshot etc).
AutoPenalty - karny modyfikator dla serii
NoSemiAuto - broń ma tylko tryb automatyczny
APsToReloadManually - jeśli większe od zera broń jest powtarzalna - czyli trzeba ręcznie przeładować po każdym strzale.
ManualReloadSound - dźwięk dla ręcznego przeładowania.

Jako że nasza broń ma magazynek nie występujący w grze, pora zając się nim.
Otwieramy Magazines.xml... Nasze szczęście polega na tym że amunicja .50 Beowulf jest ostatnia. Dodając nowe magazynki, muszą one być koło pozostały o tym samym kalibrze, następnie troszcząc się o wielkości (najpierw np. wszystkie magazynki 9x19 po 8 naboi, potem wszystkie 9x19 po 15 itd), pamiętając jednoczesnie by uiIndex był w kolejności, czyli nowy magazynek po uiIndex 3 będzie miał uiIndex 4, a więc ten który jest ponim trzeba przemianować na '5' i tak dalej aż do ostatniego... a jest ich w sumie 276 (!) - masakra.
My dodajemy do ostatniej grupy więc to łatwizna, wystarczy pod koniec dokleić:
Kod:
   <MAGAZINE>
      <uiIndex>277</uiIndex>
      <ubCalibre>38</ubCalibre>
      <ubMagSize>20</ubMagSize>
      <ubAmmoType>1</ubAmmoType>
   </MAGAZINE>
   <MAGAZINE>
      <uiIndex>278</uiIndex>
      <ubCalibre>38</ubCalibre>
      <ubMagSize>20</ubMagSize>
      <ubAmmoType>2</ubAmmoType>
   </MAGAZINE>

Jak widać mamy tu ID, numer kalibru, wielkośc magazynka i typ amunicji. Możliwe typy to:
0 = Normal (ball)
1 = Hollow Point
2 = Armor Piercing
3 = Extra Armor Piercing
4 = Buckshot
5 = Unused...
6 = Unused...
7 = Monster Spit
8 = Knife Damage (ignores armor)
9 = High Explosive Minirockets
10 = High Explosive Armor Piercing Minirockets
11 = Tranquilizer
12 = Flame
13 = AET (Armor Piercing + Hollow Point)
14 = Glaser (Extra Hollow Point)
15 = Tracer
16 = Armor Piercing Tracer
17 = Match
18 = Armor Piercing Match
19 = Cold Ball
20 = Cold Hollow Point
21 = Cold Armor Piercing
22 = Cold Extra Armor Piercing
23 = Cold Glaser for small caliber ammo
24 = Cold Glaser for large caliber ammo
25 = Lockbusting shells
26 = Depleted Uranium

To tyle, jednak nie zrobiliśmy jeszcze przedmiotu magazynka więc wracamy do Items.xml

Odnajdujemy '.50 Beowulf 7' (wersja HP i AP są obok siebie - 555 i 556) i kopiujemy na koniec, zmieniając uiIndex na 1030 oraz 1031, oraz poprawiając nazwy, opisy, ubClassIndex, wagę, cenę i takie tam.
Kod:
      <uiIndex>1030</uiIndex>
      <szItemName>.50 Beowulf 20</szItemName>
      <szLongItemName>.50 Beowulf Magazine, 20</szLongItemName>
      <szItemDesc>A 20-round FMJ clip for the Invader AR</szItemDesc>
      <szBRName>.50 Beowulf 20</szBRName>
      <szBRDesc>20 rounds of the highpowered .50 Beowulf ammo, just the thing for stopping vehicles.</szBRDesc>
      <usItemClass>1024</usItemClass>
      <ubClassIndex>278</ubClassIndex>
      <ubCursor>0</ubCursor>
      <bSoundType>0</bSoundType>
      <ubGraphicType>1</ubGraphicType>
      <ubGraphicNum>515</ubGraphicNum>
      <ubWeight>6</ubWeight>
      <ubPerPocket>4</ubPerPocket>
      <usPrice>360</usPrice>


Zasadniczo to koniec - broń działa itd, jeżeli gramy od nowa to powinna się posegregować normalnie u Bobby Raya, jeżeli używamy save'a sprzed zmiany, nowa broń/przedmioty będzie na samym początku lub końcu (u mnie jest na początku, ale niektórzy zgłaszali na BPF że wrzuciło im na koniec i się 'zaklikają' na śmierć). Oczywiście najpierw trzeba poczekać do 9:00 by Bobby odświeżył swój zapas broni ;)

EDIT: zapomniałem - to nie wszystko - trzeba jeszcze edytować plik 'Attachments.xml' i dopisać nową broń do wszystkich dodatków jakie chcemy by były montowane na broni.


*
 
Maxwell
Post : 18 wrz 2006 15:54
Cytowanie selektywne Odpowiedz z cytatem
Offline
Awatar użytkownika
Starszy kapral
Starszy kapral
  • Posty: 90
  • Dołączył: 31.08.2006


Ciąg dalszy czitowania... errr... modowania.

Wspomniane 'załączniki' do broni.

Jeżeli chcemy by była możliwość montowania konkretnych dodatków wystarczy otworzyć Attachments.xml i dopisać odpowiedni fragment kodu, np.:

Cytuj:
<ATTACHMENT>
<attachmentIndex>241</attachmentIndex>
<itemIndex>1029</itemIndex>
<APCost>5</APCost>
</ATTACHMENT>

Oznacza to że dodatek '241' (celownik laserowy) można montować na przedmiocie '1029' (nasz nowo stworzony Invader), kosztem 5 pkt akcji.

Wklejamy to zaraz za ostatnim 'attachmentIndex' 241 by były wszystkie w jednej grupie (nie wiem czy gdyby beztrosko wkleić na koniec miało by to przykre konsekwencje, ale lepiej dmuchać na zimne ;) )

Podobnie postępujemy z pozostałymi które nas interesują jak np. 1004 - reflex scope; 1005 - LAM-200; 1006 - reflex sight; 1007 - Battle Scope; etc.

Jeżeli chcemy by nasza broń miała taki dodatek już na stałe, nie zapychając slotu to zaglądamy do Items.xml, do niższych wierszy naszego nowo powstałego karabinu:

Tłumiki/supressory:
Kod:
      <PercentNoiseReduction>75</PercentNoiseReduction>
      <HideMuzzleFlash>1</HideMuzzleFlash>
Zmiana paramentów z zer na powyższe sprawi że broń będzie się zachowywać jakby miała mały tłumik.

Kod:
      <PercentNoiseReduction>90</PercentNoiseReduction>
      <HideMuzzleFlash>1</HideMuzzleFlash>
Mały integralny tłumik (znaczy nie wypada tego dać dla szturmówki ;) )

Kod:
      <PercentNoiseReduction>55</PercentNoiseReduction>
      <HideMuzzleFlash>1</HideMuzzleFlash>
Duży tłumik

Kod:
      <PercentNoiseReduction>85</PercentNoiseReduction>
      <HideMuzzleFlash>1</HideMuzzleFlash>
Integralny supressor (duży kaliber - coś takiego mamy m.in. w VAL).

Flash Suppressor:
Kod:
      <HideMuzzleFlash>1</HideMuzzleFlash>
0 - brak, 1 - wbudowany.

Bipod:
Kod:
      <Bipod>10</Bipod>
0 - brak, 10 - wbudowany.

Celowniki laserowe:
Kod:
      <ToHitBonus>20</ToHitBonus>
      <BestLaserRange>90</BestLaserRange>
Laser Sight

Kod:
      <ToHitBonus>20</ToHitBonus>
      <BestLaserRange>100</BestLaserRange>
      <NightVisionRangeBonus>8</NightVisionRangeBonus>
      <CaveVisionRangeBonus>8</CaveVisionRangeBonus>
LAM-200

Celowniki optyczne:
Kod:
      <AimBonus>15</AimBonus>
      <MinRangeForAimBonus>45</MinRangeForAimBonus>
      <DamageBonus>1</DamageBonus>
      <VisionRangeBonus>50</VisionRangeBonus>
      <PercentTunnelVision>70</PercentTunnelVision>
Battle Scope

Kod:
      <AimBonus>20</AimBonus>
      <MinRangeForAimBonus>70</MinRangeForAimBonus>
      <PercentAPReduction>-9</PercentAPReduction>
      <DamageBonus>2</DamageBonus>
      <VisionRangeBonus>90</VisionRangeBonus>
      <PercentTunnelVision>90</PercentTunnelVision>
Sniper Scope

Kod:
      <PercentAPReduction>20</PercentAPReduction>
Reflex Scope

Kod:
      <AimBonus>10</AimBonus>
      <MinRangeForAimBonus>20</MinRangeForAimBonus>
      <PercentAPReduction>20</PercentAPReduction>
      <VisionRangeBonus>20</VisionRangeBonus>
      <PercentTunnelVision>20</PercentTunnelVision>
Reflex Sight

Inne:
Kod:
      <BurstToHitBonus>5</BurstToHitBonus>
      <AutoFireToHitBonus>5</AutoFireToHitBonus>
Foregrip

Kod:
      <ToHitBonus>-1</ToHitBonus>
      <PercentReadyTimeAPReduction>30</PercentReadyTimeAPReduction>
Rectable/Folding Stock

Invader jest fikcyjny, ale dobrze opisany i nawet ma grafikę ;)
Powinien posiadać integralny granatnik bębnowy 37mm (z tym kalibrem przesadzili - raczej coś między 20-25mm), ale w v1.13 mamy gotowe cylindry 40mm więc się nimi posłużymy (jeżeli ktoś jest chętny do zrobienia poradnika "jak wykonać grafikę, oraz umieścić w grze magazynek bębnowy 25mm o pojemności 12 pocisków" to ja chętnie przeczytam ;) ).

Potrzebny nam granatnik. W tym celu idziemy do Weapons.xml i szukamy granatnika bębnowego Milkor, kopiujemy go i zmieniamy nazwę etc.:
Kod:
   <WEAPON>
      <uiIndex>1032</uiIndex>
      <szWeaponName>Harbinger UBGL</szWeaponName>
      ...
      <ubShotsPer4Turns>10</ubShotsPer4Turns>  (będzie szybsza)
      <ubShotsPerBurst>3</ubShotsPerBurst>     (tak, tak - seria z 3 pocisków 40mm)
      ...
      <sBurstSound>74</sBurstSound>            (dźwięk serii zapożyczony z innego GL)
      ...
      <bBurstAP>3</bBurstAP>
      ...
   </WEAPON>


Pora na Items.xml

Ponownie kopiujemy Milkora na koniec i dokonujemy zmian:
Kod:
   <ITEM>
      <uiIndex>1032</uiIndex>
      <szItemName>Harbinger UBGL</szItemName>
      <szLongItemName>Harbinger UBGL</szLongItemName>
      <szItemDesc>The 40mm integrated grenade launcher makes this weapon unique: the world's only drum-fed undermount grenade launcher.</szItemDesc>
      <szBRName>Harbinger UBGL</szBRName>
      <szBRDesc>The 40mm integrated grenade launcher makes this weapon unique: the world's only drum-fed undermount grenade launcher, allowing for great firing endurance, but also making the weapon quite bulky.</szBRDesc>
      ...
      <ubClassIndex>1032</ubClassIndex>
      ...
      <ubGraphicNum>39</ubGraphicNum> (zmiana grafiki na jeden z podczepianych)
      <ubWeight>0</ubWeight> (kasujemy wagę, bo wystepuje tylko z bronią i to ona będzie podawała masę uwzględniającą granatnik)
      ...
      <usPrice>0</usPrice>   (to samo z ceną)
      ...
      <bReliability>4</bReliability>  (zmieniamy na takie jak broń - niekonieczne,
      <bRepairEase>-4</bRepairEase>    ale u nas tak będzie)
      ...
      <TwoHanded>0</TwoHanded>
      ...
      <Attachment>1</Attachment> (ekwipunek zmienił się w 'załacznik'/dodatek)
      ...
      <NotInEditor>1</NotInEditor>
      ...
      <Inseparable>1</Inseparable> (nie można go odłączyć)
      <BR_NewInventory>0</BR_NewInventory> (Bobby nie posiada na stanie)
      <BR_UsedInventory>0</BR_UsedInventory> (nawet używanych)
      <BR_ROF>14</BR_ROF> (a niech zostanie jak jest)
   </ITEM>


Zaglądamy do naszego Invader'a i zmieniamy linijkę kodu:
Kod:
      <DefaultAttachment>1032</DefaultAttachment>
Teraz broń jest dostępna od razu z zamontowanym granatnikiem.

Zaglądamy do Attachment.xml i na końcu dodajemy:
Kod:
   <ATTACHMENT>
      <attachmentIndex>1032</attachmentIndex>
      <itemIndex>1029</itemIndex>
      <APCost>5</APCost>
   </ATTACHMENT>


To jeszcze nie wszystko.

Teraz zaglądamy do Launchables.xml by nasz granatnik mógł używać jakiejś amunicji.

Wiemy że chcemy używać tej samej amunicji co Milkor więc wyszukujemy jego ID w tym pliku (906) i kopiujemy te fragmenty zmieniając itemIndex na 1032 np. było:
Kod:
   <LAUNCHABLE>
      <launchableIndex>964</launchableIndex>
      <itemIndex>906</itemIndex>
   </LAUNCHABLE>

Jest:
Kod:
   <LAUNCHABLE>
      <launchableIndex>964</launchableIndex>
      <itemIndex>906</itemIndex>
   </LAUNCHABLE>
   <LAUNCHABLE>
      <launchableIndex>964</launchableIndex>
      <itemIndex>1032</itemIndex>
   </LAUNCHABLE>

...i tak z wszystkimi 906 jakie znajdziemy.

To już chyba koniec i broń powinna działać.


*
 
Gość
Post : 14 lut 2007 13:38
Cytowanie selektywne Odpowiedz z cytatem


Maxwell pisze:
Nie jest to kompletny 'tutorial' o tych plikach, a jedynie o pewnych elementach, ale może w przyszłości się rozbuduje jeśli będzie taka potrzeba.

Tematem przewodnim jest umieszczanie nowych obiektów w Items.xml - najlepiej to zrobić z jakimś przykładem, a że umieszczenie przeciwpancernej koszulki było by nudne to o czymś wymagającym większej pracy czyli jak wrzucić nową broń.

Zaczniemy od Items.xml

Plik składa się z wielu sekcji (wielu znaczy 1028) - każda zaczyna się <ITEM> i kończy </ITEM>. Możemy edytować tu część parametrów przedmiotów lub dodawać własne. Dodawanie można zrobić na 2 sposoby - zastępując obiekty "Nada", lub dodając nowe na końcu pliku. Trzeba tu wspomnieć że każdy przedmiot ma swój 'uiIndex' i przedmioty muszą być poukładane w pliku w kolejności rosnącej tego parametru - jeśli będzie przerwa w numerowaniu, np. po uiIndex 9 mamy uiIndex 11, to gra się zawiesi. Jeżeli dwa przedmioty będą miały ten sam uiIndex to gra się zawiesi, jeśli będzie zła kolejność np. najpierw 9 potem 8, to... gra się zawiesi.
Obiektów "Nada" jest około setki i w większości spełniają rolę odstępu - 'pustych' uiIndex tak by można było w przyszłości umieścić tu ekwipunek który przeważnie jest poumieszczany grupami (np. amunicja do granatników blisko siebie itp). Jednak niektóre specjalnie są "Nada" więc najbezpieczniej jest wykonać to drugą metodą.

Jako że robimy broń, ułatwimy sobie trochę życie i skopiujemy najpierw istniejącą - .50 Beowulf Rifle i umieścimy ją na końcu, zmieniając uiIndex na odpowiedni, w tym wypadku 1029. Zmieniamy krótką i długą nazwę broni, opis, oraz nazwę i opis u Bobby Ray'a (z lenistwa identyczny z tym ogólnym).
Kod:
   <ITEM>
      <uiIndex>1029</uiIndex>
      <szItemName>Invader</szItemName>
      <szLongItemName>Mk XIb Invader</szLongItemName>
      <szItemDesc>Powerfull assault rifle manufactured under license by Fieldhausen Arms.</szItemDesc>
      <szBRName>Mk XIb Invader</szBRName>
      <szBRDesc>Powerfull assault rifle manufactured under license by Fieldhausen Arms.</szBRDesc>
   </ITEM>


Teraz pora na 'usItemClass' - pozostawiamy na '2' ale oto krótki spis wszystkich klas:

2 = Broń palna (wszystko co strzela wliczając w to strzałki, minirakiety, a nawet jednorazowe wyrzutnie się tu zaliczają)
4 = Broń biała tnąca (noże itp.)
8 = Noże do rzucania
16 = Wyrzutnie (granatniki, wyrzutnie rakiet - te ładowane)
64 = Rzucane obiekty nie będące bronią (kamienie...)
128 = Broń biała tępa (Kastet, łom...)
256 = Rzucane lub wystrzeliwane ładunki wybuchowe (granaty, amunicja do granatników, rakiety)
512 = Bomby (ale również amunicja do moździerzy)
1024 = Magazynki
2048 = Pancerz
4096 = Apteczki (również zestawy PP)
8192 = inne zestawy bojowe
32768 = 'Face Items'
65536 = Klucze
268435456 = różne przedmioty (wszystko co nie pasuje powyżej)
536870912 = pieniądze (nie tylko banknoty, ale również portfele, bryłki złota etc.)

Teraz zmieniamy grafikę na taką jak ma FN SCAR-H czyli 246
'ubWeight' podnosimy do 71 (czyli 7.1kg no cóż będzie dobre, ale ciężkie ;) )
'usPrice' podnosimy do 6000 ($)
'ubCoolnes' damy 10 bo to bardzo fajna broń ;)
'bReliability' 4 ... niech będzie niezawodny.
'bRepairEase' zmieniamy na -4 bo pewnie nie łatwo się naprawia ;)
'BR_ROF' ... co by tu wpisać... powiedzmy 600 - to chyba tylko informacja u Bobby Raya i innego wpływu nie ma na grę.
Resztę zostawiamy jak jest, zresztą opcje są chyba dość czytelne.

Pora na inne pliki:

Otwieramy Weapons.xml, szukamy uiIndex 760 i kopiujemy cały fragment kodu od <WEAPONS> do </WEAPONS> po czym wklejamy na końcu pliku Weapons.xml i zmieniamy uiIndex na 1029 - tym razem nie musimy się martwić że nie ma 1028 bo tu mogą być odstępy dopóki zachowana jest kolejność.

Po zmianie wygląda to tak:
Kod:
   <WEAPON>
      <uiIndex>1029</uiIndex>
      <szWeaponName>Mk XIb Invader</szWeaponName>
      <ubWeaponClass>3</ubWeaponClass>
      <ubWeaponType>6</ubWeaponType>
      <ubCalibre>38</ubCalibre>
      <ubReadyTime>3</ubReadyTime>
      <ubShotsPer4Turns>13</ubShotsPer4Turns>
      <ubShotsPerBurst>3</ubShotsPerBurst>
      <ubBurstPenalty>7</ubBurstPenalty>
      <ubBulletSpeed>23</ubBulletSpeed>
      <ubImpact>40</ubImpact>
      <ubDeadliness>38</ubDeadliness>
      <bAccuracy>5</bAccuracy>
      <ubMagSize>20</ubMagSize>
      <usRange>500</usRange>
      <usReloadDelay>200</usReloadDelay>
      <BurstAniDelay>50</BurstAniDelay>
      <ubAttackVolume>85</ubAttackVolume>
      <ubHitVolume>7</ubHitVolume>
      <sSound>420</sSound>
      <sBurstSound>39</sBurstSound>
      <sSilencedBurstSound>111</sSilencedBurstSound>
      <sReloadSound>102</sReloadSound>
      <sLocknLoadSound>108</sLocknLoadSound>
      <SilencedSound>156</SilencedSound>
      <bBurstAP>3</bBurstAP>
      <bAutofireShotsPerFiveAP>3</bAutofireShotsPerFiveAP>
      <APsToReload>4</APsToReload>
      <SwapClips>1</SwapClips>
      <MaxDistForMessyDeath>9</MaxDistForMessyDeath>
      <AutoPenalty>7</AutoPenalty>
      <NoSemiAuto>0</NoSemiAuto>
      <APsToReloadManually>0</APsToReloadManually>
      <ManualReloadSound>476</ManualReloadSound>
   </WEAPON>

Oznacza kolejno:
Id
Nazwę
Klasę broni (0 - NOGUNCLASS; 1 - HANDGUNCLASS; 2 - SMGCLASS; 3 - RIFLECLASS; 4 - MGCLASS; 5 - SHOTGUNCLASS; 6 - KNIFECLASS; 7 - MONSTERCLASS)
Typ broni (0 - NOT_GUN; 1 - GUN_PISTOL; 2 - GUN_M_PISTOL; 3 - GUN_SMG; 4 - GUN_RIFLE; 5 - GUN_SN_RIFLE; 6 - GUN_AS_RIFLE; 7 - GUN_LMG; 8 - GUN_SHOTGUN)
ubCalibre - Kaliber - 38 oznacza .50 Beowulf produkcji Alexander Arms
ubReadyTime - Ilość punktów akcji potrzebna by przygotować broń do strzału.
ubShotsPer4Turns - Szybkostrzelność broni dla pojedynczego strzału
(warto tu zapodać 'tabelkę' starwalker'a:
S4T__AP
_4___22
_5___18
_6___15
_7___13
_8___11
_9___10
10____9
11____8
12____7
13____7
14____6
15____6
16____6
17____5
18____5
19____5
20____4
21____4
22____4
23____4
24____4)
ubShotsPerBurst - Ilość kul podczas serii
ubBurstPenalty - kara do każdej kuli po pierwszej przy strzale z serii
ubBulletSpeed - szybkość z jaką kula leci
ubImpact - obrażenia zadawane przez broń
ubDeadliness - 'zabójczość' broni - najemnicy mogą się skarżyć jeśli za niska
bAccuracy - bonus do celności przy użyciu tej broni
ubMagSize - pojemność magazynka - tu pojawia się kolejny problem. Jeśli podasz tu wielkość magazynka która nie istnieje (tak jak u mnie - Alexander Arms nie produkuje takich magazynków - największe to 10, a nawet takich nie ma w grze) to gra się zwiesi, więc musisz utworzyć nowy w Magazines.xml, o czym później.
usRange - maksymalny zasięg broni
usReloadDelay - prędkość przeładowania w RT.
ubAttackVolume - hałaśliwość broni
ubHitVolume - głośność uderzenia kuli
sSound - dźwięk dla pojedynczego strzału
sBurstSound - dźwięk dla serii
sReloadSound - dźwięk przeładowania
sLocknLoadSound - używany przy 'autoresolve'
bBurstAP - koszt punktowy serii
bAutofireShotsPerFiveAP - ilość kul przy ogniu ciągłym na każde 5 PA
APsToReload - koszt punktowy wymiany magazynka
SwapClips - rodzaj wymiany magazynka: 1 to normalna zamiana, 0 to jak w strzelbach, czyli dokładanie kolejnych naboi
MaxDistForMessyDeath - maksymalna odległość na jakiej broń może wywołać specjalną animację (headshot etc).
AutoPenalty - karny modyfikator dla serii
NoSemiAuto - broń ma tylko tryb automatyczny
APsToReloadManually - jeśli większe od zera broń jest powtarzalna - czyli trzeba ręcznie przeładować po każdym strzale.
ManualReloadSound - dźwięk dla ręcznego przeładowania.

Jako że nasza broń ma magazynek nie występujący w grze, pora zając się nim.
Otwieramy Magazines.xml... Nasze szczęście polega na tym że amunicja .50 Beowulf jest ostatnia. Dodając nowe magazynki, muszą one być koło pozostały o tym samym kalibrze, następnie troszcząc się o wielkości (najpierw np. wszystkie magazynki 9x19 po 8 naboi, potem wszystkie 9x19 po 15 itd), pamiętając jednoczesnie by uiIndex był w kolejności, czyli nowy magazynek po uiIndex 3 będzie miał uiIndex 4, a więc ten który jest ponim trzeba przemianować na '5' i tak dalej aż do ostatniego... a jest ich w sumie 276 (!) - masakra.
My dodajemy do ostatniej grupy więc to łatwizna, wystarczy pod koniec dokleić:
Kod:
   <MAGAZINE>
      <uiIndex>277</uiIndex>
      <ubCalibre>38</ubCalibre>
      <ubMagSize>20</ubMagSize>
      <ubAmmoType>1</ubAmmoType>
   </MAGAZINE>
   <MAGAZINE>
      <uiIndex>278</uiIndex>
      <ubCalibre>38</ubCalibre>
      <ubMagSize>20</ubMagSize>
      <ubAmmoType>2</ubAmmoType>
   </MAGAZINE>

Jak widać mamy tu ID, numer kalibru, wielkośc magazynka i typ amunicji. Możliwe typy to:
0 = Normal (ball)
1 = Hollow Point
2 = Armor Piercing
3 = Extra Armor Piercing
4 = Buckshot
5 = Unused...
6 = Unused...
7 = Monster Spit
8 = Knife Damage (ignores armor)
9 = High Explosive Minirockets
10 = High Explosive Armor Piercing Minirockets
11 = Tranquilizer
12 = Flame
13 = AET (Armor Piercing + Hollow Point)
14 = Glaser (Extra Hollow Point)
15 = Tracer
16 = Armor Piercing Tracer
17 = Match
18 = Armor Piercing Match
19 = Cold Ball
20 = Cold Hollow Point
21 = Cold Armor Piercing
22 = Cold Extra Armor Piercing
23 = Cold Glaser for small caliber ammo
24 = Cold Glaser for large caliber ammo
25 = Lockbusting shells
26 = Depleted Uranium

To tyle, jednak nie zrobiliśmy jeszcze przedmiotu magazynka więc wracamy do Items.xml

Odnajdujemy '.50 Beowulf 7' (wersja HP i AP są obok siebie - 555 i 556) i kopiujemy na koniec, zmieniając uiIndex na 1030 oraz 1031, oraz poprawiając nazwy, opisy, ubClassIndex, wagę, cenę i takie tam.
Kod:
      <uiIndex>1030</uiIndex>
      <szItemName>.50 Beowulf 20</szItemName>
      <szLongItemName>.50 Beowulf Magazine, 20</szLongItemName>
      <szItemDesc>A 20-round FMJ clip for the Invader AR</szItemDesc>
      <szBRName>.50 Beowulf 20</szBRName>
      <szBRDesc>20 rounds of the highpowered .50 Beowulf ammo, just the thing for stopping vehicles.</szBRDesc>
      <usItemClass>1024</usItemClass>
      <ubClassIndex>278</ubClassIndex>
      <ubCursor>0</ubCursor>
      <bSoundType>0</bSoundType>
      <ubGraphicType>1</ubGraphicType>
      <ubGraphicNum>515</ubGraphicNum>
      <ubWeight>6</ubWeight>
      <ubPerPocket>4</ubPerPocket>
      <usPrice>360</usPrice>


Zasadniczo to koniec - broń działa itd, jeżeli gramy od nowa to powinna się posegregować normalnie u Bobby Raya, jeżeli używamy save'a sprzed zmiany, nowa broń/przedmioty będzie na samym początku lub końcu (u mnie jest na początku, ale niektórzy zgłaszali na BPF że wrzuciło im na koniec i się 'zaklikają' na śmierć). Oczywiście najpierw trzeba poczekać do 9:00 by Bobby odświeżył swój zapas broni ;)

EDIT: zapomniałem - to nie wszystko - trzeba jeszcze edytować plik 'Attachments.xml' i dopisać nową broń do wszystkich dodatków jakie chcemy by były montowane na broni.


*
 
Lemur
Post : 14 lut 2007 13:47
Cytowanie selektywne Odpowiedz z cytatem
Offline
Awatar użytkownika
Starszy sierżant
Starszy sierżant
  • Posty: 361
  • Dołączył: 11.01.2007


Ej! To w 1.13 jest .50 Beowulf?? :kosci: . wow!

_________________
http://www.taktykazone.pl/


*
 
Nowy temat Odpowiedz w temacie