Kennt ihr das lästige hinzufügen von Items durch AddVendorShop? Es nervt, dass es keine Funktion dafür gibt einzelne Items hinzufügen zu können. Deswegen stelle ich euch hier meine Mod zur Verfügung und ein kleines How To wie ihr sie einfach in euren Source hinzufügen könnt.
Nach dem einfügen könnt ihr einfach in der character.inc die Funktion AddShopItem benutzen.
Beispiel: AddShopItem( 0, II_WEA_WOODEN );
Das würde ein Wooden Sword im Tab 0 hinzufügen
1. Datei Project.cpp
Ihr sucht nach
PHP Code:
else if( script.Token == "AddTeleport" )
PHP Code:
#endif // __TELEPORTER
PHP Code:
#ifdef __ADDSHOPITEM
else if( script.Token == "AddShopItem" )
{
script.GetToken(); // (
int nSlot = script.GetNumber(); script.GetToken(); //
DWORD dwId = script.GetNumber(); script.GetToken(); //
LPVENDOR_ITEM pVendorItem = new VENDOR_ITEM;
pVendorItem->m_dwItemId = dwId;
lpCharacter->m_venderItemAry3[ nSlot ].Add( pVendorItem );
}
#endif
2. Datei Project.cpp
Danach sucht ihr nach
PHP Code:
CProject::~CProject()
PHP Code:
#endif //__CSC_VER11_3
PHP Code:
#ifdef __ADDSHOPITEM
for( j = 0; j < MAX_VENDOR_INVENTORY_TAB; j++ )
{
for( i = 0; i < lpCharacter->m_venderItemAry3[ j ].GetSize(); i++)
safe_delete( (LPVENDOR_ITEM)lpCharacter->m_venderItemAry3[ j ].GetAt(i) );
}
#endif
3. Datei Mover.cpp
Dann sucht ihr nach
PHP Code:
void CMover::ProcessRegenItem()
PHP Code:
#if __VER >= 11 // __CSC_VER11_3
}
#endif //__CSC_VER11_3
PHP Code:
#ifdef __ADDSHOPITEM
if( pCharacter->m_venderItemAry3[i].GetSize() )
{
fShop = TRUE;
for( int j = 0; j < pCharacter->m_venderItemAry3[i].GetSize(); j++)
{
pVendor = (LPVENDOR_ITEM)pCharacter->m_venderItemAry3[i].GetAt(j);
CItemElem itemElem;
itemElem.m_dwItemId = pVendor->m_dwItemId;
itemElem.m_nItemNum = (short)( prj.GetItemProp( pVendor->m_dwItemId )->dwPackMax );
itemElem.m_nHitPoint = prj.GetItemProp( pVendor->m_dwItemId )->dwEndurance;
if( m_ShopInventory[i]->Add( &itemElem ) == FALSE )
break;
}
}
#endif
4. Datei Project.h
Sucht ihr
PHP Code:
} CHARACTER,* LPCHARACTER;
PHP Code:
#ifdef __ADDSHOPITEM
CPtrArray m_venderItemAry3[ 4 ];
#endif
5. Datei Mover.cpp
Und zum Schluss sucht ihr
PHP Code:
BOOL CMover::IsVendorNPC()
PHP Code:
return FALSE;
PHP Code:
#ifdef __ADDSHOPITEM
for( int i = 0; i < MAX_VENDOR_INVENTORY_TAB; i++ )
{
if( pCharacter->m_venderItemAry3[i].GetSize() )
return TRUE;
}
#endif
Beispiel Cashshop NPC
PHP Code:
MaFl_Is
{
setting
{
AddMenu( MMI_DIALOG );
AddMenu( MMI_TRADE );
AddShopItem( 0, II_SYS_SYS_SCR_SMELPROT ); //Sprotect
AddShopItem( 0, II_SYS_SYS_SCR_PIEPROT ); //GProtect
AddShopItem( 0, II_SYS_SYS_SCR_SMELPROT4 ); //AProtect
AddShopItem( 0, II_SYS_SYS_SCR_SMELPROT3 ); //XProtect
AddShopItem( 0, II_SYS_SYS_SCR_AWAKECANCEL ); //Reversion
AddShopItem( 0, II_SYS_SYS_SCR_SOKCHANG ); // Element Change
AddShopItem( 0, II_SYS_SYS_SCR_AMPES ); //Scroll of Experience
AddShopItem( 0, II_SYS_SYS_SCR_LEVELDOWN01 ); //Level Down Low
AddShopItem( 0, II_SYS_SYS_SCR_LEVELDOWN02 ); //Level Down High
AddShopItem( 0, II_SYS_SYS_SCR_PARTYEXPUP01 ); //Scroll of Party EXP (7 Tage)
AddShopItem( 0, II_SYS_SYS_SCR_PARTYSKILLUP01 ); //Scroll of Party Skill (7 Tage)
AddShopItem( 0, II_CHR_SYS_SCR_PSKILLFULL15 ); //Full Party Skill 15
AddShopItem( 0, II_SYS_SYS_SCR_SCUD ); //Scroll of Sprint
AddShopItem( 0, II_SYS_SYS_SCR_BLESSEDNESS ); //Blessing of Goddess
AddShopItem( 0, II_CHR_SYS_SCR_RESTATE ); //Restat
AddShopItem( 0, II_SYS_SYS_SCR_RECCURENCE ); //Reskill
AddShopItem( 0, II_CHR_SYS_SCR_RESTATE_STR ); //Restat STR
AddShopItem( 0, II_CHR_SYS_SCR_RESTATE_DEX ); //Restat DEX
AddShopItem( 0, II_CHR_SYS_SCR_RESTATE_STA ); //Restat STA
AddShopItem( 0, II_CHR_SYS_SCR_RESTATE_INT ); //Restat INT
AddShopItem( 0, II_SYS_SYS_SCR_BLESSING ); //Blessing
AddShopItem( 0, II_CHR_SYS_SCR_SHOUTFULL15 ); //FullShout 15
AddShopItem( 0, II_SYS_TICKET_CISLAND01 ); // Koralleninsel 1 Tag
AddShopItem( 0, II_SYS_TICKET_KEBARAS01 ); // Azria Ticket 7
AddShopItem( 0, II_SYS_TICKET_KEBARAS02 ); // Azria Ticket 15
AddShopItem( 0, II_SYS_TICKET_GUILDHOUSE_COMEBACK01 ); // Scroll of Guild Return
AddShopItem( 0, II_CHR_SYS_SCR_ITEMTRANSY_A ); // Item Transy A
AddShopItem( 0, II_CHR_SYS_SCR_ITEMTRANSY_B ); // Item Transy B
AddShopItem( 1, II_CHR_SYS_SCR_ACTIVITION ); //Activation
AddShopItem( 1, II_CHR_REF_REF_HOLD ); //Refresher Hold
AddShopItem( 1, II_CHR_POT_DRI_VITALX ); //VitalX
AddShopItem( 1, II_CHR_FOO_COO_GRILLEDEEL ); //Grilled Eel
AddShopItem( 1, II_CHR_SYS_SCR_UPCUTSTONE ); //Upcut Stone
AddShopItem( 2, II_SYS_SYS_SCR_PET_LIFE ); // Pet Energy
AddShopItem( 2, II_SYS_SYS_SCR_PET_TAMER_MISTAKE ); // Mistake of Pet Trainer
AddShopItem( 2, II_SYS_SYS_SCR_PET_TAMER_MIRACLE ); // Miracle of Pet Trainer
AddShopItem( 2, II_SYS_SYS_SCR_PET_NAMING ); // Pet Name Change
AddShopItem( 2, II_SYS_SYS_SCR_PETAWAKECANCEL ); // Scroll of Cancel Pet Awa
AddShopItem( 2, II_SYS_SYS_VIS_KEY01 ); // Buff Slot Release
AddShopItem( 2, II_SYS_SYS_SCR_PET_MAGIC ); //Buff Pet Transy
AddShopItem( 2, II_PET_DOG1 ); //Doggy
AddShopItem( 2, II_PET_CAT1 ); //Kitty
//AddShopItem( 2, II_PET_SOCCERBALL ); //Soccerball
AddShopItem( 3, II_SYS_VIS_LV1_STR ); // Beads
AddShopItem( 3, II_SYS_VIS_LV1_DEX ); // Beads
AddShopItem( 3, II_SYS_VIS_LV1_INT ); // Beads
AddShopItem( 3, II_SYS_VIS_LV1_STA ); // Beads
AddShopItem( 3, II_SYS_VIS_LV1_DMG ); // Beads
AddShopItem( 3, II_SYS_VIS_LV1_SPELLRATE ); // Beads
AddShopItem( 3, II_SYS_VIS_LV1_CRIRATE ); // Beads
AddShopItem( 3, II_SYS_VIS_LV1_BLOMELEE ); // Beads
AddShopItem( 3, II_SYS_VIS_LV1_BLRANGE ); // Beads
AddShopItem( 3, II_SYS_VIS_LV1_CRITICAL ); // Beads
AddShopItem( 3, II_SYS_VIS_LV1_SPEED ); // Beads
AddShopItem( 3, II_SYS_VIS_LV1_HITRATE ); // Beads
AddShopItem( 3, II_SYS_VIS_LV1_ATKSPEED ); // Beads
AddShopItem( 3, II_SYS_VIS_LV1_ATKPOWER ); // Beads
AddShopItem( 3, II_SYS_VIS_LV1_ADJDEF ); // Beads
AddShopItem( 3, II_SYS_VIS_LV1_ADDMAGIC ); // Beads
AddShopItem( 3, II_SYS_VIS_LV1_PARRY ); // Beads
AddShopItem( 3, II_SYS_VIS_LV1_HPMAX ); // Beads
AddShopItem( 3, II_SYS_VIS_LV1_KILLHP ); // Beads
AddShopItem( 3, II_SYS_VIS_LV2_STR ); // Beads
AddShopItem( 3, II_SYS_VIS_LV2_DEX ); // Beads
AddShopItem( 3, II_SYS_VIS_LV2_INT ); // Beads
AddShopItem( 3, II_SYS_VIS_LV2_STA ); // Beads
AddShopItem( 3, II_SYS_VIS_LV2_DMG ); // Beads
AddShopItem( 3, II_SYS_VIS_LV2_SPELLRATE ); // Beads
AddShopItem( 3, II_SYS_VIS_LV2_CRIRATE ); // Beads
AddShopItem( 3, II_SYS_VIS_LV2_BLOMELEE ); // Beads
AddShopItem( 3, II_SYS_VIS_LV2_BLRANGE ); // Beads
AddShopItem( 3, II_SYS_VIS_LV2_CRITICAL ); // Beads
AddShopItem( 3, II_SYS_VIS_LV2_CRIBONUS ); // Beads
AddShopItem( 3, II_SYS_VIS_LV2_SPEED ); // Beads
AddShopItem( 3, II_SYS_VIS_LV2_HITRATE ); // Beads
AddShopItem( 3, II_SYS_VIS_LV2_ATKSPEED ); // Beads
AddShopItem( 3, II_SYS_VIS_LV2_ATKPOWER ); // Beads
AddShopItem( 3, II_SYS_VIS_LV2_ADJDEF ); // Beads
AddShopItem( 3, II_SYS_VIS_LV2_ADDMAGIC ); // Beads
AddShopItem( 3, II_SYS_VIS_LV2_PARRY ); // Beads
AddShopItem( 3, II_SYS_VIS_LV2_HPMAX ); // Beads
AddShopItem( 3, II_SYS_VIS_LV2_KILLHP ); // Beads
AddShopItem( 3, II_SYS_VIS_LV2_MONSTERDMG ); // Beads
AddShopItem( 3, II_SYS_VIS_LV3_WARRIOR ); // Beads
AddShopItem( 3, II_SYS_VIS_LV3_KNIGHT ); // Beads
AddShopItem( 3, II_SYS_VIS_LV3_BUBBLE ); // Beads
AddShopItem( 3, II_SYS_VIS_LV3_IBLIS ); // Beads
AddShopItem( 3, II_SYS_VIS_LV3_SHADE ); // Beads
SetImage
(
IDS_CHARACTER_INC_000064
);
m_szDialog= "MaFl_Is.txt";
}
SetName
(
IDS_CHARACTER_INC_000065
);
AddVendorSlot( 0,
IDS_CHARACTER_CUS_100006
);
AddVendorSlot( 1,
IDS_CHARACTER_CUS_100007
);
AddVendorSlot( 2,
IDS_CHARACTER_CUS_100008
);
AddVendorSlot( 3,
IDS_CHARACTER_CUS_100009
);
}
Für die die ihren Source noch nicht in den Dateien Mover.cpp,Project.cpp,Project.h geändert haben hier ist ein Downloadlink
Natürlich müsst ihr noch in jeder VersionCommon.h #define __ADDSHOPITEM hinzufügen
Nicht vergessen alle Server und die Neuz neu zu kompilieren
Die Funktion wird nicht funktionieren, falls in der character.inc AddVendorItem benutzt wird. Das heißt entweder AddShopItem oder AddVendorItem benutzen.
Credits: 100% me