1local minDist = 3
2local c = {
3 skulls = {SKULL_NONE, SKULL_GREEN}, -- tipos de skull em que o modo seguro funcionara
4 ignorePVPE = true, -- modo seguro funcionara mesmo em PVP-Enforced? (true / false)
5 ignoreArena = false -- modo seguro funcionara mesmo em arenas? (true / false)
6}
7function Creature:onChangeOutfit(outfit)
8 return true
9end
10function Creature:onAreaCombat(tile, isAggressive)
11 return RETURNVALUE_NOERROR
12end
13function getDistanceBetween(fromPosition, toPosition)
14 local x, y = math.abs(fromPosition.x - toPosition.x), math.abs(fromPosition.y - toPosition.y)
15 local diff = math.max(x, y)
16 if(fromPosition.z ~= toPosition.z) then
17 diff = diff + 9 + 6
18 end
19 return diff
20end
21function Creature:onHear(speaker, words, type)
22end
23function Creature:onTargetCombat(target)
24 if not self then return true end
25 if self:isPlayer() and target:isPlayer() then
26 if self:hasSecureMode()== true then
27 return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER
28 end
29 end
30 if self:isPlayer() and target:isPlayer() then
31 if self:getStorageValue(_PVP_ROOM[00].PVP_SALA_ID) > 00 then
32 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
33 if target:getStorageValue(_PVP_ROOM[00].PVP_SALA_ID) > 00 then
34 if self:getStorageValue(_PVP_ROOM[00].TIME_ID) == target:getStorageValue(_PVP_ROOM[00].TIME_ID) then
35 return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER
36 end
37 end
38 end
39 end
40 if Game.getStorageValue(_GLOBAL_RANDOM.WARZONE.STORAGE_START_WARZONE) == 01 then
41 if self:getStorageValue(_SYSTEM.WARZONE) == 01 and target:getStorageValue(_SYSTEM.WARZONE) == 01 then
42 return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER
43 end
44 if self:getStorageValue(_SYSTEM.WARZONE) == 02 and target:getStorageValue(_SYSTEM.WARZONE) == 02 then
45 return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER
46 end
47 end
48 end
49 if self:isPlayer() and target:isMonster() then
50 local master = target:getMaster()
51 if master and master:isPlayer() then
52 return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER
53 end
54 end
55 if self:isPlayer() then
56 local slotItem = self:getSlotItem(CONST_SLOT_LEFT)
57 if slotItem == nil then
58 self:addItem(7366)
59 if slotItem == nil then
60 return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER
61 end
62 end
63 end
64 if (self:isPlayer() and target:isNpc()) then
65 local distance = getDistanceBetween(self:getPosition(), target:getPosition())
66 if (distance > minDist) then
67 return RETURNVALUE_NOTPOSSIBLE
68 else
69 if _NPCS_MISSION[target:getName()] then
70 local getMission = 0 local getTalk = 0
71 for X = 01, #_NPCS_MISSION[target:getName()] do
72 if self:getStorageValue(_NPCS_MISSION[target:getName()][X][01]) == _NPCS_MISSION[target:getName()][X][02] then
73 if _NPCS_MISSION[target:getName()][X][04] == "NORMAL" then
74 getMission = 1 getTalk = _NPCS_MISSION[target:getName()][X][03]
75 break
76 else
77 local itemID = _NPCS_MISSION[target:getName()][X][05]
78 local SlotID = _ITEMS[itemID].SLOT_EQUIP
79
80 if SlotID > 9 or SlotID == 0 then SlotID = 3 end
81
82 local QntNeed = _NPCS_MISSION[target:getName()][X][06]
83 local ext = 0
84 doBackpack(self, 03, SlotID, ext, 01, itemID) -- Procurar
85 local QntBag = doBackpack(self, 04)
86
87 if QntBag >= QntNeed then
88 getMission = 1 getTalk = _NPCS_MISSION[target:getName()][X][03]
89 break
90 end
91 end
92 end
93 end
94
95 if getMission == 1 then
96 self:say("hi", TALKTYPE_PRIVATE_PN, false, target)
97 self:sendCancelMessage("@NPC " ..target:getName().. " TRUE " ..getTalk)
98 else
99 self:say("hi", TALKTYPE_PRIVATE_PN, false, target)
100 self:sendCancelMessage("@NPC " ..target:getName().. " FALSE")
101 end
102 else
103 self:say("hi", TALKTYPE_PRIVATE_PN, false, target)
104 self:sendCancelMessage("@NPC " ..target:getName().. " FALSE")
105 end
106
107 return RETURNVALUE_NOTPOSSIBLE
108 end
109 end
110
111 return RETURNVALUE_NOERROR
112end
113