Skocz do zawartości

Dodawanie nowego slotu (1.0007rc1)


LVutner

Rekomendowane odpowiedzi

Siema. Jako że jest ulewa u mnie to muszę się uspokoić i dać poradnik kolejny... tym razem tworzymy slota.

Korzystałem z poradnika Kondra48 z amk-team za co jestem mu wdzięczny :)

 

Przypominam o uprzednim przeczytaniu poradnika dotyczącego kompilacji patcha 1.0007 na którym będziemy pracować.

 

 

UIInventoryWnd.cpp. 

Na wstępie musimy znaleźć plik o nazwie  UIInventoryWnd.cpp.  Ścieżka do niego: X:\trunk\xray\xr_3da\xrGame\ui

Otwórzmy go zatem Notepadem++.

 

Naszym zadaniem jest znaleźć owy fragment kodu:
 

m_pUISlotQuickAccessList_3			= xr_new<CUIDragDropListEx>(); AttachChild(m_pUISlotQuickAccessList_3); m_pUISlotQuickAccessList_3->SetAutoDelete(true);
xml_init.InitDragDropListEx			(uiXml, "dragdrop_slot_quick_access_3", 0, m_pUISlotQuickAccessList_3);
BindDragDropListEnents				(m_pUISlotQuickAccessList_3);

 

Jeśli już go znaleźliśmy to pod nim umieszczamy część kodową naszego nowego slotu.

m_pUIDetAdvList						= xr_new<CUIDragDropListEx>(); AttachChild(m_pUIDetAdvList); m_pUIDetAdvList->SetAutoDelete(true);
xml_init.InitDragDropListEx			(uiXml, "dragdrop_slot_det_adv", 0, m_pUIDetAdvList);
BindDragDropListEnents				(m_pUIDetAdvList);

 

I znowu musimy użyć funkcji szukania w notepadzie. Tym razem chodzi o to:

 

m_slots_array[SLOT_QUICK_ACCESS_3]		= m_pUISlotQuickAccessList_3; 

 

I pod nim umieszczamy taki krótki kodzik:

m_slots_array[DET_ADV_SLOT] 	        = m_pUIDetAdvList; 

 

 

I zapisujemy nasz plik.

 

UIInventoryWnd.h:

Część kolejna, musimy otworzyć owy pliczek i znaleźć znowu jakiś kod...

CUIDragDropListEx*			m_pUISlotQuickAccessList_3; 

 

Pod nim dodajemy naszą formułkę:

CUIDragDropListEx* m_pUIDetAdvList;

 

 

Zapisujemy plik i przechodzimy do następnego, tym razem będzie to...

 

 

UIInventoryWnd2.cpp:

Tutaj tak samo musimy szukać kodów (niestety :))

Musimy znaleźć to:
 

_itm			         = m_pInv->m_slots[SLOT_QUICK_ACCESS_3].m_pIItem;
if(_itm)
{
	CUICellItem* itm				= create_cell_item(_itm);
	m_pUISlotQuickAccessList_3->SetItem		(itm);
} 

 

I pod nim to dodać:

_itm		           		= m_pInv->m_slots[DET_ADV_SLOT].m_pIItem;
if(_itm)
{
	CUICellItem* itm				= create_cell_item(_itm);
	m_pUIDetAdvList->SetItem		(itm);
}

 

Potem kolejne poszukiwania...

m_pUISlotQuickAccessList_3->ClearAll	(true);

 

I pod tym dodajemy:
 

m_pUIDetAdvList->ClearAll				(true); 

 

Zapisujemy plik i przechodzimy do części kolejnej, najgorsze już za nami :)


UIInventoryWnd3.cpp:

Krótkie zadanie bo tutaj ogranicza się do dodania kodu w jednym miejscu.

Mianowicie pod tym:
 

case INVENTORY_TO_SLOT15_ACTION:
	CurrentIItem()->SetSlot(SLOT_QUICK_ACCESS_3);
	break; 

 

Dodamy to:

case INVENTORY_TO_SLOT16_ACTION:
	CurrentIItem()->SetSlot(DET_ADV_SLOT);
	break; 

 

Zapisujemy i przechodzimy dalej.

 

inventory_space.h:

Szukamy teraz zdefiniowanego szybkiego slotu nr.3:

#define SLOT_QUICK_ACCESS_3 15 

 

Poniżej zdefiniujemy nasz slot:

#define DET_ADV_SLOT        16

 

Trochę niżej mamy takie cuś:

#define SLOTS_TOTAL	    16

Zamiast szesnastki dajemy 17, bo doszedł nam nowy slot.

 

Zapisujemy plik. Teraz będzie ostatnia część.

 

UIMessages.h:

Tutaj sprawa prosta jak drut.

Dopisujemy tylko nasz kodzik pod:

INVENTORY_TO_SLOT15_ACTION, 

 

A to nasz kodzik:

INVENTORY_TO_SLOT16_ACTION, 

 

Zapisujemy i tym kończymy naszą pracę z silnikiem stalkera.

Kompilujemy teraz xrGame.dll tak jak w poprzednim poradniku. Jeśli wszystko poprawnie się skompilowało można strzelić browara.

 

UI, czyli dodajemy nasz slot do gry.

Rzecz prosta jak 2+2, choć niektórzy tego działania nie umieją to żaden problem.

W plikach UI tj. inventory_new.xml i inventory_new_16.xml

Dodajemy nasz slot:

 <dragdrop_slot_det_adv x="581" y="673" width="100" height="50" cell_width = "48" cell_height="50" rows_num="1" cols_num="2" custom_placement="0" show_grid = "0"/>

 

Zapisujemy plik i otwieramy system.ltx.

Mamy nasze sloty :D

 

slot_persistent_1  = false		;noże
slot_persistent_2  = false		;pistolety
slot_persistent_3  = false		;automaty
slot_persistent_4  = true		;granaty
...

Ta sekcja kończy się z numerem 16 (slot_persistent)...

Zatem pod 16tką dodajemy nasz slot:

slot_persistent_17  = false		;detektor nasz

 

 

Testujemy czy wszystko działa i się radujemy :D

  • Dodatnia 2
Odnośnik do komentarza
Udostępnij na innych stronach

  • 5 miesięcy temu...

@Junx może pamiętasz jak wysłałem Ci archiwum na nowe sloty w CS? 
X-Rays of Hope to nazwa była.

W Zewie Prypeci nie wiem jak to jest obecnie, nie bawiłem się kodem zatem mało pomogę. Jeśli 

się dowiem czegoś od bardziej doświadczonej osoby to zrobię nowy temat. 
Póki co spójrz jak to jest zrobione w X-Rays of Hope. W archiwum miałeś nawet dwa pliczki odpowiadające
za sloty, prosto z kodu Czystego Nieba.

Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.
Uwaga: Twój wpis zanim będzie widoczny, będzie wymagał zatwierdzenia moderatora.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Korzystając z tej strony, zgadzasz się na nasze Warunki użytkowania.