Quote:
Originally Posted by yannickminecraft
Jow ich habs auch schon nachgecodet. Fixx mal in meiner 15 minuten pause .. blender.
Es gibt keinen der das Recoden kann da es einfach zuviel wissen und zeit benötigt.
Gibt aber noch das Problem mit den rumschieben der items etc. So einfach ist das ganze nicht und du müsstest 100th von funktionen umschreiben da sie auf das alte system basieren und deswegen umgeschrieben werden müssen.
|
Theoretisch muss man da gar nicht so viel machen :D
1. das Inventar muss bearbeitet werden, sodass 3 weitere Tabs geaddet werden... schnell gemacht:
Code:
for( int i=0;i<4;i++ )
m_pInventory[i].SetItemContainer( ITYPE_ITEM, 42 );//ItemContainer erzeugen
for( int i=0;i<(int)g_pPlayer->m_Inventory.m_dwItemMax;i++ )
{
int index = g_pPlayer->m_Inventory.m_apItem[i].GetProp()->GetInvenIndex();
m_pInventory[ index ].Add( &g_pPlayer->m_Inventory.m_apItem[i] );
//Items in die Container einfügen... habe eine Funktion, die den Index returnt, in Abhängigkeit vom Itemtyp
}
m_wndItemCtrl.Create( WLVS_ICON, CRect( 0, 0, 250, 250 ), pTabCtrl, 11 );//Tab erstellen
m_wndItemCtrl.InitItem( &m_pInventory[0], APP_INVENTORY, 1 );//und initialisieren
m_wndItemCtrl_ext[0].Create( WLVS_ICON, CRect( 0, 0, 250, 250 ), pTabCtrl, 12 );
m_wndItemCtrl_ext[0].InitItem( &m_pInventory[1], APP_INVENTORY, 2 );
m_wndItemCtrl_ext[1].Create( WLVS_ICON, CRect( 0, 0, 250, 250 ), pTabCtrl, 13 );
m_wndItemCtrl_ext[1].InitItem( &m_pInventory[2], APP_INVENTORY, 3 );
m_wndItemCtrl_ext[2].Create( WLVS_ICON, CRect( 0, 0, 250, 250 ), pTabCtrl, 14 );
m_wndItemCtrl_ext[2].InitItem( &m_pInventory[3], APP_INVENTORY, 4 );
2. Das Inventar auf das 4-fache vergrößern... Hintergedanke: alle Inventarsize/4 beginnt ein neues Tab... dadurch muss dann net so viel geproggt werden.
3. die WndItemCtrl Klasse umprogrammieren, damit die richtigen Items angezeigt werden, bei bewegen eines Items der richtige Index abgefragt wird usw...
...so würde ich mir das mit dem Tabbed Inv vorstellen... abe es allerdings noch nicht umgesetzt, weil ich nicht genug Zeit hatte^^
ach ja... die Index Funktion nicht vergessen^^
die habe ich in die ItemProp Klasse rein:
Code:
int GetInvenIndex( )
{
switch( dwItemKind3 )
{
case IK3_GEM:
return 3;
break;
case IK3_SUMMON_NPC:
case IK3_PET:
return 1;
break;
case IK3_GLOVE:
case IK3_CLOTH:
case IK3_CLOAK:
case IK3_SHOES:
case IK3_MASK:
case IK3_HAT:
return 2;
break;
default:
return 0;
break;
}
return 0;
}
Edit: Man muss noch ein paar andere Funktionen umproggen, wie zB die CreateItem Funktion, damit er erkennt, wann das Inventar voll ist, was allerdings auch direkt in die >CItemContainer Klasse programmiert werden kann^^