Jump to content

Dodawanie nowego slotu (1.0007rc1)


LVutner
 Share

Recommended Posts

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
Link to comment
Share on other sites

  • 5 months later...

@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.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.

Comunity