monsterDeterrent = MoveEvent()
monstersCantWalkOnTheseItemIds = {11098, 11099}
for _,itemid in pairs(monstersCantWalkOnTheseItemIds) do
monsterDeterrent:id(itemid)
end
function monsterDeterrent.onStepIn(creature, item, position, fromPosition)
if creature:isMonster() then
creature:teleportTo(fromPosition, false)
end
return false
end
monsterDeterrent:register()
data/scripts/monsterdeterrent.lua
LUA:monsterDeterrent = MoveEvent() monstersCantWalkOnTheseItemIds = {11098, 11099} for _,itemid in pairs(monstersCantWalkOnTheseItemIds) do monsterDeterrent:id(itemid) end function monsterDeterrent.onStepIn(creature, item, position, fromPosition) if creature:isMonster() then creature:teleportTo(fromPosition, false) end return false end monsterDeterrent:register()
I've tried something like that already, but creatures still "think" they can pass trough wall and they all getting stacked on 1 square.data/scripts/monsterdeterrent.lua
LUA:monsterDeterrent = MoveEvent() monstersCantWalkOnTheseItemIds = {11098, 11099} for _,itemid in pairs(monstersCantWalkOnTheseItemIds) do monsterDeterrent:id(itemid) end function monsterDeterrent.onStepIn(creature, item, position, fromPosition) if creature:isMonster() then creature:teleportTo(fromPosition, false) end return false end monsterDeterrent:register()
ReturnValue Tile::queryAdd(int32_t, const Thing& thing, uint32_t, uint32_t flags, Creature*) const
{
***
const Item* item = thing.getItem();
if (const Monster* monster = creature->getMonster()) {
if ((item->getID() == 11099 || item->getID() == 110098) && !monster->isPet()) {
return RETURNVALUE_NOTPOSSIBLE;
}
}
***
}
got fixed?As Gunz sugessted I edited tile.cpp, queryADD function,
I'm trying to add something like that
Maybe someone have idea what i should modify in it becouse its not working.Code:ReturnValue Tile::queryAdd(int32_t, const Thing& thing, uint32_t, uint32_t flags, Creature*) const { *** const Item* item = thing.getItem(); if (const Monster* monster = creature->getMonster()) { if ((item->getID() == 11099 || item->getID() == 110098) && !monster->isPet()) { return RETURNVALUE_NOTPOSSIBLE; } } *** }
I recive "Segmentation fault" in console on launch OT