• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Solved onCastSpell

freddzor11

Member
Joined
May 25, 2009
Messages
695
Reaction score
5
Hello Why do I get this error when someone use destroy field rune?

5y1sI.png
 
check your destroyfield.lua if exist, if you find, send it here
Code:
UNREMOVABLE_FIELDS = {1497, 1498, 1499, 1505, 1506, 1507, 1508, 7465, 7466, 7467, 7468, 7469, 7470, 7471, 7472, 7473, 11094, 11095}

local function doRemoveField(cid, pos)
    local field = getTileItemByType(pos, ITEM_TYPE_MAGICFIELD)
    if(not isInArray(UNREMOVABLE_FIELDS, field.itemid)) then
        doRemoveItem(field.uid)
        doSendMagicEffect(pos, CONST_ME_POFF)
        return true
    end

    doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
    doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
    return false
end

function onCastSpell(cid, var)
    local pos = variantToPosition(var)
    if(pos.x == CONTAINER_POSITION) then
        pos = getThingPos(cid)
    end

    if(pos.x ~= 0 and pos.y ~= 0) then
        return doRemoveField(cid, pos)
    end

    doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
    doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
    return false
end
 
try ths:

local function doRemoveField(cid, pos)
pos.stackpos = 254
local field = getThingfromPos(pos)
local playerPos = getPlayerPosition(cid)

if(field.uid > 0 and isInArray(FIELDS, field.itemid) == TRUE) then
doRemoveItem(field.uid)
doSendMagicEffect(pos, CONST_ME_POFF)
return LUA_NO_ERROR
end

doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
doSendMagicEffect(playerPos, CONST_ME_POFF)
return LUA_ERROR
end

function onCastSpell(cid, var)
local pos = variantToPosition(var)
if(pos.x ~= 0 and pos.y ~= 0 and pos.z ~= 0) then
return doRemoveField(cid, pos)
end

doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
return LUA_ERROR
end
 
try ths:

local function doRemoveField(cid, pos)
pos.stackpos = 254
local field = getThingfromPos(pos)
local playerPos = getPlayerPosition(cid)

if(field.uid > 0 and isInArray(FIELDS, field.itemid) == TRUE) then
doRemoveItem(field.uid)
doSendMagicEffect(pos, CONST_ME_POFF)
return LUA_NO_ERROR
end

doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
doSendMagicEffect(playerPos, CONST_ME_POFF)
return LUA_ERROR
end

function onCastSpell(cid, var)
local pos = variantToPosition(var)
if(pos.x ~= 0 and pos.y ~= 0 and pos.z ~= 0) then
return doRemoveField(cid, pos)
end

doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
return LUA_ERROR
end
thanks think it works
 
Try
Code:
function onCastSpell(cid, var)
local pos = variantToPosition(var)
if(pos.x ~= 0 and pos.y ~= 0 and pos.z ~= 0) then
return doRemoveField(cid, pos)
end

doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
return LUA_ERROR
end

local function doRemoveField(cid, pos)
pos.stackpos = 254
local field = getThingfromPos(pos)
local playerPos = getPlayerPosition(cid)

if(field.uid > 0 and isInArray(FIELDS, field.itemid) == TRUE) then
doRemoveItem(field.uid)
doSendMagicEffect(pos, CONST_ME_POFF)
return LUA_NO_ERROR
end

doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
doSendMagicEffect(playerPos, CONST_ME_POFF)
return LUA_ERROR
end
 
Try
Code:
function onCastSpell(cid, var)
local pos = variantToPosition(var)
if(pos.x ~= 0 and pos.y ~= 0 and pos.z ~= 0) then
return doRemoveField(cid, pos)
end

doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
return LUA_ERROR
end

local function doRemoveField(cid, pos)
pos.stackpos = 254
local field = getThingfromPos(pos)
local playerPos = getPlayerPosition(cid)

if(field.uid > 0 and isInArray(FIELDS, field.itemid) == TRUE) then
doRemoveItem(field.uid)
doSendMagicEffect(pos, CONST_ME_POFF)
return LUA_NO_ERROR
end

doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
doSendMagicEffect(playerPos, CONST_ME_POFF)
return LUA_ERROR
end
no
 
Code:
UNREMOVABLE_FIELDS = {1497, 1498, 1499, 1505, 1506, 1507, 1508, 7465, 7466, 7467, 7468, 7469, 7470, 7471, 7472, 7473, 11094, 11095}

local function doRemoveField(cid, pos)
   local field = getTileItemByType(pos, ITEM_TYPE_MAGICFIELD)

   if(field.uid == 0) then
     doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
     doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
     return false
   end

   if(not isInArray(UNREMOVABLE_FIELDS, field.itemid)) then
     doRemoveItem(field.uid)
     doSendMagicEffect(pos, CONST_ME_POFF)
     return true
   end

   doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
   doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
   return false
end

function onCastSpell(cid, var)
   local pos = variantToPosition(var)
   if(pos.x == CONTAINER_POSITION) then
     pos = getThingPos(cid)
   end

   if(pos.x ~= 0 and pos.y ~= 0) then
     return doRemoveField(cid, pos)
   end

   doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
   doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
   return false
end
 
Code:
UNREMOVABLE_FIELDS = {1497, 1498, 1499, 1505, 1506, 1507, 1508, 7465, 7466, 7467, 7468, 7469, 7470, 7471, 7472, 7473, 11094, 11095}

local function doRemoveField(cid, pos)
   local field = getTileItemByType(pos, ITEM_TYPE_MAGICFIELD)

   if(field.uid == 0) then
     doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
     doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
     return false
   end

   if(not isInArray(UNREMOVABLE_FIELDS, field.itemid)) then
     doRemoveItem(field.uid)
     doSendMagicEffect(pos, CONST_ME_POFF)
     return true
   end

   doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
   doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
   return false
end

function onCastSpell(cid, var)
   local pos = variantToPosition(var)
   if(pos.x == CONTAINER_POSITION) then
     pos = getThingPos(cid)
   end

   if(pos.x ~= 0 and pos.y ~= 0) then
     return doRemoveField(cid, pos)
   end

   doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
   doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
   return false
end
thank you but found another so... SOLVED I guess
 
I'm using this on Avesta 7.4 and it works great!

data\spells\lib\spells.lua
LUA:
FIELDS = {1487,1488,1489,1490,1491,1492,1493,1494,1495,1496,1500,1501,1502,1503,1504}

data\spells\scripts\support\destroy_field_rune.lua
LUA:
local function doRemoveField(cid, pos)
    -- stackpos = 255. Get the top thing(item moveable or creature)
    -- stackpos = 254. Get MagicFieldtItem
    -- stackpos = 253. Get Creature
    pos.stackpos = 254
    local field = getTileItemByType(pos, ITEM_TYPE_MAGICFIELD)
  
    if (isInArray(FIELDS, field.itemid) == TRUE) then
        doRemoveItem(field.uid)
        doSendMagicEffect(pos, CONST_ME_POFF)
        return LUA_NO_ERROR
    end

    doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
    doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
    return LUA_ERROR
end

function onCastSpell(cid, var)
    local pos = variantToPosition(var)
    if(pos.x == CONTAINER_POSITION) then
        pos = getThingPos(cid)
    end

    if(pos.x ~= 0 and pos.y ~= 0) then
        return doRemoveField(cid, pos)
    end

    doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
    doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
    return LUA_ERROR
end
 
Back
Top