Fusion32 1 Postado Abril 22, 2008 Share Postado Abril 22, 2008 (editado) eae pessoal eu notei ja q o svn nao tem o comando preventLoss q eh necessario no amulet of loss entao vamos ao codigo em item.h abaixo de virtual void __startDecaying(); adicione #ifdef __PREVENT_LOSS__ bool isPreventLoss() const {return items[id].preventLoss != 0;} bool isPreventLossItemRemovable() const {return items[id].isPreventLossItemRemovable != 0;} #endif agora em items.cpp abaixo de replaceable = true; adicione #ifdef __PREVENT_LOSS__ preventLoss = 0; isPreventLossItemRemovable = false; #endif e abaixo de else if(strcasecmp(strValue.c_str(), "noSleeper") == 0) { if(readXMLInteger(itemAttributesNode, "value", intValue)) { it.noSleeperID = intValue; } } adicione #ifdef __PREVENT_LOSS__ else if(strcasecmp(strValue.c_str(), "preventLoss") == 0) { if(readXMLInteger(itemAttributesNode, "value", intValue)){ it.preventLoss = intValue; } if(readXMLInteger(itemAttributesNode, "remove", intValue)){ it.isPreventLossItemRemovable = intValue; } } #endif em items.h abaixo de bool replaceable; adicione #ifdef __PREVENT_LOSS__ int preventLoss; bool isPreventLossItemRemovable; #endif e pra termina em player.cpp na funçao void Player::dropLoot(Container* corpse) depois de if(corpse && lootDrop){ for(int i = SLOT_FIRST; i < SLOT_LAST; ++i){ Item* item = inventory[i]; adicione #ifdef __PREVENT_LOSS__ if(item && item->isPreventLoss() && getSkull() != SKULL_RED){ if(item->isPreventLossItemRemovable()) g_game.internalRemoveItem(item, 1); return; } #endif Project >> Project Options >> Parameters >> C++ Compiler >> -D__PREVENT_LOSS__ REBUILD ALL Exemplo de como usar em items.xml <attribute key="preventLoss" value="1" <!-- QUALQUER VALOR DIFERENTE DE 0 SERA INTERPRETADO COMO ATIVADO --> remove="1" <!-- SE IRA REMOVER OU NAO O ITEM APOS A MORTE --> /> bom é isso ae pessoal qualquer duvidas ou bugs reportem aqui flw Editado Outubro 4, 2008 por Fusion32 Link para o comentário Compartilhar em outros sites More sharing options...
Shenlong 2 Postado Julho 21, 2008 Share Postado Julho 21, 2008 eu nao intendi essa parte aqui e pra termina na funçao CODE void Player::dropLoot(Container* corpse) depois de CODE if(corpse && lootDrop){ for(int i = SLOT_FIRST; i < SLOT_LAST; ++i){ Item* item = inventory; adicione CODE #ifdef __PREVENT_LOSS__ if(item && item->isPreventLoss() && getSkull() != SKULL_RED){ if(item->isPreventLossItemRemovable()) g_game.internalRemoveItem(item, 1); return; } #endif em qual arquivo seria isto? Link para o comentário Compartilhar em outros sites More sharing options...
Deragon 0 Postado Agosto 18, 2008 Share Postado Agosto 18, 2008 acho q eh em player.cpp Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados