AdiMit
c(;
- Joined
- May 2, 2016
- Messages
- 70
- Solutions
- 2
- Reaction score
- 3
Hello
I'm currently using the [8.60] The Forgotten Server 0.3.6 (Crying Damson) V8 by Printer, from the thread: [8.60] The Forgotten Server 0.3.6 (Crying Damson) V8;
I was trying to redo the guard NPC(s) so that they would attack the PKers with melee attacks at the range of <=1; and with distance attacks at the range of >=2...
However, I get the following error after implementing the 'distance' part (works just fine without it).
By the way, I want the distance attacks to be carried out even if there is an obstacle on the way (for example another player who blocks the way), which seems to bug the NPC at the momoment...
The error:
The script.lua:
The NPC.xml:
Do you have any ideas how to resolve the issue?
Thanks in advance!
Best regards.
I'm currently using the [8.60] The Forgotten Server 0.3.6 (Crying Damson) V8 by Printer, from the thread: [8.60] The Forgotten Server 0.3.6 (Crying Damson) V8;
I was trying to redo the guard NPC(s) so that they would attack the PKers with melee attacks at the range of <=1; and with distance attacks at the range of >=2...
However, I get the following error after implementing the 'distance' part (works just fine without it).
By the way, I want the distance attacks to be carried out even if there is an obstacle on the way (for example another player who blocks the way), which seems to bug the NPC at the momoment...
The error:
Lua:
[03/08/2017 13:22:15] [Error - Npc interface]
[03/08/2017 13:22:15] data/npc/scripts/guard.lua:onThink
[03/08/2017 13:22:15] Description:
[03/08/2017 13:22:15] data/npc/scripts/guard.lua:108: attempt to call global 'sendDistanceEffect' (a nil value)
[03/08/2017 13:22:15] stack traceback:
[03/08/2017 13:22:15] data/npc/scripts/guard.lua:108: in function <data/npc/scripts/guard.lua:70>
The script.lua:
Lua:
local target = 0
local prevTarget = 0
local maxChaseDistance = 20
local origPos = 0
local lastAttack = 0
local followTimeout = 10
local function isSkulled(cid)
if(getCreatureSkullType(cid) >= SKULL_WHITE and isPlayerPzLocked(cid)) then
return true
end
return false
end
local function goToOrigPos()
target = 0
lastAttack = 0
selfFollow(0)
doTeleportThing(getNpcCid(), origPos)
end
local function updateTarget()
if(not isPlayer(target)) then
goToOrigPos()
elseif(not isSkulled(target)) then
selfSay("Now, behave in the future.")
goToOrigPos()
end
if(target == 0) then
local list = getSpectators(getNpcPos(), 9, 9, false)
for i = 1, table.getn(list) do
local _target = list[i]
if(_target ~= 0) then
if(isPlayer(_target) and isSkulled(_target)) then
if(not getTilePzInfo(getCreaturePosition(_target))) then
if(selfFollow(_target)) then
target = _target
if(target ~= prevTarget) then
selfSay("We do not tolerate people like you here!")
end
prevTarget = target
break
end
end
end
end
end
end
end
function onCreatureAppear(cid)
if(cid == getNpcCid()) then
origPos = getNpcPos()
end
end
function onCreatureDisappear(cid)
if(cid == target) then
goToOrigPos()
end
end
function onCreatureMove(creature, oldPos, newPos)
--
end
function onThink()
updateTarget()
if(target == 0) then
return
end
local playerPos = getCreaturePosition(target)
local myPos = getNpcPos()
if(myPos.z ~= playerPos.z) then
goToOrigPos()
return
end
if(math.abs(myPos.x - origPos.x) > maxChaseDistance or math.abs(myPos.y - origPos.y) > maxChaseDistance) then
selfSay("I'll catch you next time.")
goToOrigPos()
return
end
if(lastAttack == 0) then
lastAttack = os.clock()
end
if(os.clock() - lastAttack > followTimeout) then
selfSay("You got me this time, but just wait.")
goToOrigPos()
return
end
if((math.abs(playerPos.x - myPos.x) <= 1) and (math.abs(playerPos.y - myPos.y) <= 1)) then
doTargetCombatHealth(getNpcCid(), target, COMBAT_LIFEDRAIN, -220, -330, CONST_ME_BLOCKHIT)
lastAttack = os.clock()
end
if((math.abs(playerPos.x - myPos.x) >= 2) and (math.abs(playerPos.y - myPos.y) >= 2)) then
doTargetCombatHealth(getNpcCid(), target, COMBAT_PHYSICAL, -110, -220, CONST_ME_HITAREA)
sendDistanceEffect(target, CONST_ANI_WHIRLWINDSWORD)
lastAttack = os.clock()
end
end
The NPC.xml:
Lua:
<?xml version="1.0" encoding="UTF-8"?>
<npc name="Guardsman" script="guard.lua" walkinterval="0" floorchange="0" speed="1100">
<health now="100000" max="100000"/>
<look type="131" head="95" body="132" legs="96" feet="116" addons="3"/>
<interaction range="3" idletime="60">
<interact keywords="hi" focus="1">
<keywords>hello</keywords>
<response text="Nothing to see here, move along.">
<action name="idle" value="1"/>
</response>
</interact>
<interact keywords="bye" focus="0">
<keywords>farewell</keywords>
<response text="Good bye."/>
</interact>
</interaction>
</npc>
Do you have any ideas how to resolve the issue?
Thanks in advance!
Best regards.