📄 basedef.cpp
字号:
/* by My Destiny Team */#include "basedef.h"#ifdef __cplusplusextern "C" {#endif// Tipos de refinacoesstatic const char refine[11] = { 43, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125};// Calcula o id do item com o valor da// refinaçao dele. Usado em pacotes de spawns// para a visualizacao de items ancts e refinados//// Retorna o id do item e o valor do refinamento// Ex: ItemID = 900h ; EFVX = 5h ;// novo item id = 5900hu16 GetItemIDAndEffect(sItem *item, u8 mont){ u32 value = 0, x; if(mont) { // Montarias if(item->ItemID > 0) value = item->EF2 / 10; } else { // Outros Equipamentos // Verifica o Tipo da refinacao for(x = 0; x < sizeof(refine); x++) { if (item->EF1 == refine[x]) value = item->EFV1; else if (item->EF2 == refine[x]) value = item->EFV2; else if (item->EF3 == refine[x]) value = item->EFV3; else // Continua a verificacao continue; // Tipo da refinacao encontrado break; } // Verifica se o tipo da refinacao foi encontrado if(x == sizeof(refine)) value = 0; else if (value < 230) value %= 10; else if (value < 234) value = 10; else if (value < 238) value = 11; else if (value < 242) value = 12; else if (value < 246) value = 13; else if (value < 250) value = 14; else if (value < 254) value = 15; else// value < 256 value = 16; } return (value << 12) | item->ItemID;}// Calcula o tipo de refinamento do item//// Retorna 0 se o item é invalido ou sem refinação// Retorna 2Bh se foi refinado normalmente// Retorna 10h se foi refinado com Diamante// Retorna 20h se foi refinado com Esmeralda// Retorna 30h se foi refinado com Coral// Retorna 40h se foi refinado com Garnetu16 GetAnctCode(sItem *item, u8 mont){ u32 value = 0, ref = 0, x; if(mont) { // Montarias if(item->ItemID > 0 && item->EF2 >= 10) value = 43; } else { // Outros Equipamentos // Verifica o Tipo da refinacao for(x = 0; x < sizeof(refine); x++) { if (item->EF1 == refine[x]) { ref = item->EF1; value = item->EFV1; } else if (item->EF2 == refine[x]) { ref = item->EF2; value = item->EFV2; } else if (item->EF3 == refine[x]) { ref = item->EF3; value = item->EFV3; } else // Continua a verificacao continue; // Tipo da refinacao encontrado break; } // Verificacao do tipo de refinamento if(x == sizeof(refine)) { // Item nao tem refinacao value = 0; } else if (value < 230) { // Item refinado normalmente ou modificado com tintas value = refine[x]; } else { // Item Anct value %= 4; if(value == 2) { // Items refinados com Diamante value = 0x10; } else if(value == 3) { // Items refinados com Esmeralda value = 0x20; } else if(value == 0) { // Items refinados com Coral value = 0x30; } else { // Items refinados com Garnet value = 0x40; } if(ref != 43) { // Modificado o item com tinta value += (ref - 115); } } } return value;}#ifdef __cplusplus};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -