grzesiek1925
New Member
- Joined
- Aug 21, 2009
- Messages
- 81
- Reaction score
- 2
Hi,
I have error in starshoter.lua
anyone knows how to fix it?
I have error in starshoter.lua
anyone knows how to fix it?
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 0)
setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 0)
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_HOLY)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -4.2, -55, -4.2, -9)
local manaNeededPerTarget = 200
local hitExtraTargets = 2
local hitExtraTargetsInRange = 2
function getCreaturesInRange(position, radiusx, radiusy, showMonsters, showPlayers)
local creaturesList = {}
for x = -radiusx, radiusx do
for y = -radiusy, radiusy do
if not (x == 0 and y == 0) then
if getTilePzInfo({x = position.x+x, y = position.y+y, z = position.z}) ~= TRUE then
creature = getTopCreature({x = position.x+x, y = position.y+y, z = position.z, stackpos = STACKPOS_TOP_CREATURE})
if (creature.type == 1 and showPlayers == 1) or (creature.type == 2 and showMonsters == 1) then
table.insert(creaturesList, creature.uid)
end
end
end
end
end
return creaturesList
end
function onUseWeapon(cid, var)
local ret = doCombat(cid, combat, var)
if(ret == LUA_ERROR) then
return LUA_ERROR
end
doCreatureAddMana(cid, -manaNeededPerTarget)
local target = variantToNumber(var)
local hitplayers = 0
if(target ~= 0) then
if(isPlayer(target) == TRUE) then
hitplayers = 1
end
local nowHit = 0
local randomId = 0
local otherTargets = getCreaturesInRange(getCreaturePosition(target), hitExtraTargetsInRange, hitExtraTargetsInRange, 1, hitplayers)
if(#otherTargets > 0) then
for i = 1, hitExtraTargets do
if(getCreatureMana(cid) > manaNeededPerTarget) then
randomId = math.random(1, #otherTargets)
nowHit = otherTargets[randomId]
if(isCreature(nowHit) == TRUE) then
table.remove(otherTargets, randomId)
ret = doCombat(cid, combat, numberToVariant(nowHit))
if(ret ~= LUA_ERROR) then
doCreatureAddMana(cid, -manaNeededPerTarget)
end
end
if(#otherTargets == 0) then
break
end
else
break
end
end
end
end
return TRUE
end
<distance id="7735" script="starshoter.lua">
<vocation name="Druid"/><vocation name="Elder Druid"/>
<vocation name="Sorcerer"/><vocation name="Master Sorcerer"/>
</distance>
[Error - Action Interface]
data/actions/scripts/quests/system.lua:onUse
Description:
data/lib/050-function.lua:222: attempt to index a boolean value
stack traceback:
data/lib/050-function.lua:222: in function 'getItemNameById'
data/actions/scripts/quests/system.lua:39: in function <data/actions/scripts/quests/system.lua:21>
function copyItem(item)
if (isContainer(item.uid) == TRUE) then
uid = copyContainer(item.uid, item.itemid)
if item.actionid > 0 then
doSetItemActionId(uid, item.actionid)
end
return uid
else
return doCreateItemEx(item.itemid, item.type)
end
end
function copyContainer(uid, itemid)
local container = doCreateItemEx(itemid, 1)
local iterator = getContainerSize(uid)
while iterator > 0 do
iterator = iterator - 1
doAddContainerItemEx(container, copyItem(getContainerItem(uid, iterator)))
end
return container
end
function onUse(cid, item, fromPosition, itemEx, toPosition)
if getPlayerStorageValue(cid, item.uid) ~= 1 then
local items = {}
local item_in = {}
local item_slot = 0
local item_to_give = 0
local item_desc = ''
while(true) do
item_in = getContainerItem(item.uid, item_slot)
if item_in.itemid > 0 then
table.insert(items, item_in)
else
break
end
item_slot = item_slot+1
end
if #items == 0 then
item_to_give = doCreateItemEx(item.uid)
item_desc = getItemNameById(item.uid)
elseif #items == 1 then
item_to_give = doCreateItemEx(items[1].itemid, items[1].type)
if items[1].actionid > 0 then
doSetItemActionId(item_to_give, items[1].actionid)
end
item_desc = getItemNameById(items[1].itemid)
else
if #items <= 8 then
item_to_give = doCreateItemEx(1987, 1)
else
item_to_give = doCreateItemEx(1988, 1)
end
local n = 0
local uid = 0
for i=1, #items do
n = #items - i + 1
uid = doAddContainerItemEx(item_to_give, copyItem(items[n]))
if items[n].actionid > 0 then
doSetItemActionId(uid, items[n].actionid)
end
item_desc = getItemNameById(items[n].itemid) .. item_desc
if i ~= #items then
item_desc = ", " .. item_desc
end
end
end
if doPlayerAddItemEx(cid, item_to_give, 0) == RETURNVALUE_NOERROR then
doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, 'You have found a ' .. item_desc .. '.')
setPlayerStorageValue(cid, item.uid, 1)
if item.uid < 2000 then
setPlayerStorageValue(cid, 1000, getPlayerStorageValue(cid,1000)+1)
end
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'You don\'t have enought capacity or free place in backpack for a ' .. item_desc .. '.')
end
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is empty.")
end
return TRUE
end
Why don't you use the standard quest system instead of Gesior's? :S
why not just use the most up-to-date version of the script apparently you didnt read the thread at all. if you have 3.6 it works perfectly
why not just use the most up-to-date version of the script apparently you didnt read the thread at all. if you have 3.6 it works perfectly