local minDist = 3 local c = { skulls = {SKULL_NONE, SKULL_GREEN}, -- tipos de skull em que o modo seguro funcionara ignorePVPE = true, -- modo seguro funcionara mesmo em PVP-Enforced? (true / false) ignoreArena = false -- modo seguro funcionara mesmo em arenas? (true / false) } function Creature:onChangeOutfit(outfit) return true end function Creature:onAreaCombat(tile, isAggressive) return RETURNVALUE_NOERROR end function getDistanceBetween(fromPosition, toPosition) local x, y = math.abs(fromPosition.x - toPosition.x), math.abs(fromPosition.y - toPosition.y) local diff = math.max(x, y) if(fromPosition.z ~= toPosition.z) then diff = diff + 9 + 6 end return diff end function Creature:onHear(speaker, words, type) end function Creature:onTargetCombat(target) if not self then return true end if self:isPlayer() and target:isPlayer() then if self:hasSecureMode()== true then return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER end end if self:isPlayer() and target:isPlayer() then if self:getStorageValue(_PVP_ROOM[00].PVP_SALA_ID) > 00 then if self:getStorageValue(_PVP_ROOM[00].PVP_SALA_ID) == 01 or self:getStorageValue(_PVP_ROOM[00].PVP_SALA_ID) == 02 or self:getStorageValue(_PVP_ROOM[00].PVP_SALA_ID) == 03 or self:getStorageValue(_PVP_ROOM[00].PVP_SALA_ID) == 05 then if target:getStorageValue(_PVP_ROOM[00].PVP_SALA_ID) > 00 then if self:getStorageValue(_PVP_ROOM[00].TIME_ID) == target:getStorageValue(_PVP_ROOM[00].TIME_ID) then return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER end end end end if Game.getStorageValue(_GLOBAL_RANDOM.WARZONE.STORAGE_START_WARZONE) == 01 then if self:getStorageValue(_SYSTEM.WARZONE) == 01 and target:getStorageValue(_SYSTEM.WARZONE) == 01 then return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER end if self:getStorageValue(_SYSTEM.WARZONE) == 02 and target:getStorageValue(_SYSTEM.WARZONE) == 02 then return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER end end end if self:isPlayer() and target:isMonster() then local master = target:getMaster() if master and master:isPlayer() then return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER end end if self:isPlayer() then local slotItem = self:getSlotItem(CONST_SLOT_LEFT) if slotItem == nil then self:addItem(7366) if slotItem == nil then return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER end end end if (self:isPlayer() and target:isNpc()) then local distance = getDistanceBetween(self:getPosition(), target:getPosition()) if (distance > minDist) then return RETURNVALUE_NOTPOSSIBLE else if _NPCS_MISSION[target:getName()] then local getMission = 0 local getTalk = 0 for X = 01, #_NPCS_MISSION[target:getName()] do if self:getStorageValue(_NPCS_MISSION[target:getName()][X][01]) == _NPCS_MISSION[target:getName()][X][02] then if _NPCS_MISSION[target:getName()][X][04] == "NORMAL" then getMission = 1 getTalk = _NPCS_MISSION[target:getName()][X][03] break else local itemID = _NPCS_MISSION[target:getName()][X][05] local SlotID = _ITEMS[itemID].SLOT_EQUIP if SlotID > 9 or SlotID == 0 then SlotID = 3 end local QntNeed = _NPCS_MISSION[target:getName()][X][06] local ext = 0 doBackpack(self, 03, SlotID, ext, 01, itemID) -- Procurar local QntBag = doBackpack(self, 04) if QntBag >= QntNeed then getMission = 1 getTalk = _NPCS_MISSION[target:getName()][X][03] break end end end end if getMission == 1 then self:say("hi", TALKTYPE_PRIVATE_PN, false, target) self:sendCancelMessage("@NPC " ..target:getName().. " TRUE " ..getTalk) else self:say("hi", TALKTYPE_PRIVATE_PN, false, target) self:sendCancelMessage("@NPC " ..target:getName().. " FALSE") end else self:say("hi", TALKTYPE_PRIVATE_PN, false, target) self:sendCancelMessage("@NPC " ..target:getName().. " FALSE") end return RETURNVALUE_NOTPOSSIBLE end end return RETURNVALUE_NOERROR end