CA

onDropLoot(cid, item)

Por caotic, 29 de mar. de 2014 em Linguagens de Programação

ondroploot
droploot
otserv
tibia
script
21
4.4k
BennyhappyB
24 de outubro de 2015 às 09:23

alreves:

 

function onDropLoot(cid, item)
local block = {2221, 1221, 2922}
for i=1, #block do
if item.itemid == block[i] then
return true

else

return false
end
end

return true
end

RefeR
24 de outubro de 2015 às 13:46

Para quem tá tendo erro::

 

vai em creatureevent.h e acha:

		bool playerLogin(Player* player);

Pula duas linhas e coloca:

		bool dropLoot(Creature* creature, Item* item);
BennyhappyB
26 de outubro de 2015 às 02:06

por el momento estoy teniendo error em creatureevent.cpp xD


agora errror em monster.cpp xD :/ i use tfs 0.4 :p


update para 0.4 pls :)

TiagoneT
29 de outubro de 2015 às 23:58

nessa parte "Vá em player.h na função:" seria em Player.cpp não é? e nessa aqui "...Vá em monster.cpp e procure:..." fais oq? '-' da erro se eu coloco oq ta no codigo ai

RefeR
31 de outubro de 2015 às 19:42

nessa parte "Vá em player.h na função:" seria em Player.cpp não é? e nessa aqui "...Vá em monster.cpp e procure:..." fais oq? '-' da erro se eu coloco oq ta no codigo ai

Em monster.cpp procure:

void MonsterType::dropLoot(Container* corpse)
{
if(corpse && lootDrop == LOOT_DROP_FULL)
mType->dropLoot(corpse);
}

Troque por:

void MonsterType::dropLoot(Container* corpse)
{
Item* tmpItem = NULL;
for(LootItems::const_iterator it = lootItems.begin(); it != lootItems.end() && !corpse->full(); ++it)
{
uint32_t owner = corpse->getCorpseOwner();
Creature* creature = g_game.getCreatureByID(owner);
if((tmpItem = createLoot(*it)))
{
if(Container* container = tmpItem->getContainer())
{
if(createChildLoot(container, (*it)))
corpse->__internalAddThing(tmpItem);
else
delete container;
}
else
corpse->__internalAddThing(tmpItem);
}
}


corpse->__startDecaying();
uint32_t ownerId = corpse->getCorpseOwner();
if(!ownerId)
return;


Player* owner = g_game.getPlayerByID(ownerId);
if(!owner)
return;


LootMessage_t message = lootMessage;
if(message == LOOTMSG_IGNORE)
message = (LootMessage_t)g_config.getNumber(ConfigManager::LOOT_MESSAGE);


if(message < LOOTMSG_PLAYER)
return;


std::stringstream ss;
ss << "Loot of " << nameDescription << ": " << corpse->getContentDescription() << ".";
if(owner->getParty() && message > LOOTMSG_PLAYER)
owner->getParty()->broadcastMessage((MessageClasses)g_config.getNumber(ConfigManager::LOOT_MESSAGE_TYPE), ss.str());
else if(message == LOOTMSG_PLAYER || message == LOOTMSG_BOTH)
owner->sendTextMessage((MessageClasses)g_config.getNumber(ConfigManager::LOOT_MESSAGE_TYPE), ss.str());
}

Editado Outubro 31 por Danny0

11 meses depois...
08 de setembro de 2016 às 22:01

Olha, no meu deu esse erro aqui.

 

112 C:\Users\Luquinhas Brito\Desktop\Sources 7.0\creatureevent.cpp no 'bool CreatureEvents::dropLoot(Creature*, Item*)' member function declared in class 'CreatureEvents'