Как получить Крисы без опций в MU Online

Автор Alykar, 2010 Июнь 23, 20:08

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Ключевые слова [SEO] mu onlineмосс мерчант багкак получить крисы без опций

Alykar

MossMerchant.cpp
Спойлер
PBYTE MossClass::BuyCheck(DWORD PlayerID,int ItemPosition, int TypeItem)
{
OBJECTSTRUCT *pObj = (OBJECTSTRUCT*)(PlayerID*gObjSize + gObjOffset);



DWORD pItemDataAddr;
WORD ItemSize = GS_ITEMSIZE;
int canSlot = 0;
BOOL Luck,Skill,isExc,isSocket = FALSE;
BYTE Level,Options,Exc,Socket = 0;
BYTE b[2] = {0} ;


Level = 0x00;
Options = 0x00;
Luck = 0x00;
Skill = 0x00;
Exc = 0x00;

b[1] = Exc;
b[0] += Luck * 4;
b[0] += Skill * 80;
b[0] += Level * 8;

_asm
{
push eax
push edx
MOV EDX,pObj
MOV EAX,DWORD PTR DS:[EDX+gObjInventory]
mov pItemDataAddr,eax
pop edx
pop eax
}
ITEMSTRUCT *iObj = (ITEMSTRUCT*) (pItemDataAddr + ItemPosition * ItemSize ) ;

iObj->m_Type    = 0x00;
iObj->m_Level        = 0x00;
iObj->m_Option1        = 0x00;
iObj->m_Option2        = 0x00;
iObj->m_Option3        = 0x00;
iObj->m_NewOption    = 0x00;


return b;
}
[свернуть]

protocol.cpp
Спойлер
    case 0x32: // Moss Merchant;

{
OBJECTSTRUCT *pObj = (OBJECTSTRUCT*)(aIndex*gObjSize + gObjOffset);
if(pObj->TargetShopNumber == 0x12)
{

if((pProtocol[0]==0xC1)&&(pProtocol[1]==0x10))
{
iKorSend =1;
dwNewLen=pProtocol[1];
memcpy(pNewProtocol,pProtocol,11);
pNewProtocol[1] = dwNewLen;


PBYTE b1 = Moss.BuyCheck(aIndex,pProtocol[3],pProtocol[4]);


pNewProtocol[4] = 0x00; //item Nubmer
pNewProtocol[5] = 0x00; //Normal Option
pNewProtocol[6] = 0x40; //Durability
pNewProtocol[7] = 0x00;    //Exl Option
pNewProtocol[8] = 0x00; // Ancient Option
pNewProtocol[9] = 0x00; // Type Item
pNewProtocol[10] = 0x00; // Harmony

pNewProtocol[11]= 0xFF; //Socket
pNewProtocol[12]= 0xFF;
pNewProtocol[13]= 0xFF;
pNewProtocol[14]= 0xFF;
pNewProtocol[15]= 0xFF;
}
}

}


break;
[свернуть]

shop.cpp

Спойлер
BYTE gObjShopBuyInventoryInsertItem(int aIndex, CItem item)
{


OBJECTSTRUCT *pObj = (OBJECTSTRUCT*)(aIndex*gObjSize + gObjOffset);
if(pObj->TargetShopNumber == 0x12)
{
item.m_Type = 0x00;
}
return gObjShopBuyInventoryInsertItem_JMP(aIndex,item);

}

HookThis((DWORD)&gObjShopBuyInventoryInsertItem,gObjShopBuyInventoryInsertItem_HOOK);

#define gObjShopBuyInventoryInsertItem_HOOK 0x00406DFC
#define gObjShopBuyInventoryInsertItem_JMP ((BYTE(*)(int aIndex, CItem item)) 0x0051B520)


[свернуть]



При покупки вещей получаю Крисс  без опции и вродебы всё хорошо , но я его почемуто не могу одеть сразу , если выкинуть и подобрать то всё нормально. НЕзнаю даже в какую сторону и копать.

LeGrand

Теория:
Возможно не формируется превью.
После перезахода все "ок" ?

Alykar

#2
после перезаходи всё ок, можно просто выкинуть вещь. Через пакет я передаю  по плану превью , и в двух местах меняю саму вещь на другую , вот думаю может ещё надо гдето поменять .

Нашёл способ решения :
71 [color=#FF0000]0[/color] 0 2 3 1 0 0 "Sword/Mace/Spear" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1
72 [color=#FF0000]0[/color] 0 2 3 1 0 0 "Staff" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1
73 [color=#FF0000]0[/color] 0 2 3 1 0 0 "Bow/Crossbow" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1
74 [color=#FF0000]0[/color] 0 2 3 1 0 0 "Scepter" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1
75 [color=#FF0000]0[/color] 0 2 3 1 0 0 "Stick" 0 255 0 0 0 0 0 0 0 0 1 1 1 1 1 1

пытался в  коде вписать (в момент подмены вещи ),
ItemAttribute[item.m_Type].ItemSlot = 0;
не помогает  (headbang)

Похожие темы (5)