Ir para conteúdo
  • 0

Erro Na Spell


IsaqueTeixeira

Pergunta

aqui o erro:

 

[04/08/2012 21:08:21] [Error - Spell Interface]

[04/08/2012 21:08:21] data/spells/scripts/naruto/Senpo Rasenshuriken.lua:onCastSpell

[04/08/2012 21:08:21] Description:

[04/08/2012 21:08:21] (luaGetThingPosition) Thing not found

[04/08/2012 21:08:21] [Error - Spell Interface]

[04/08/2012 21:08:21] data/spells/scripts/naruto/Senpo Rasenshuriken.lua:onCastSpell

[04/08/2012 21:08:21] Description:

[04/08/2012 21:08:21] data/spells/scripts/naruto/Senpo Rasenshuriken.lua:11: attempt to index a boolean value

[04/08/2012 21:08:21] stack traceback:

[04/08/2012 21:08:21] data/spells/scripts/naruto/Senpo Rasenshuriken.lua:11: in function <data/spells/scripts/naruto/Senpo Rasenshuriken.lua:9>

 

 

 

Aqui a spell:

 

local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

function onGetFormulaValues(cid, level, maglevel)

min = -(level * 0.28 + maglevel * 1.48) * 1.4

max = -(level * 0.34 + maglevel * 2.34) * 1.4

return min, max

end

setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onCastSpell(cid, var)

target = getCreatureTarget(cid)

local position = {x=getPlayerPosition(target).x+6, y=getPlayerPosition(target).y, z=getPlayerPosition(target).z}

doSendMagicEffect(position, 135)

return doCombat(cid, combat, var)

end

 

 

 

Aqui a tag:

 

<instant name="Senpo RasenShuriken!" words="senpo rasenshuriken" lvl="150" mana="8000" prem="0" casterTargetOrDirection="1" range="4" blockwalls="1" exhaustion="5000" needlearn="0" event="script" value="naruto/Senpo Rasenshuriken.lua">

<vocation id="42"/>

<vocation id="43"/>

<vocation id="44"/>

<vocation id="45"/>

<vocation id="46"/>

<vocation id="47"/>

<vocation id="48"/>

<vocation id="49"/>

<vocation id="50"/>

<vocation id="51"/>

 

 

lembrando que a spell pega normalmente no serve, mais da esse erro ai.

Link para o comentário
Compartilhar em outros sites

  • Respostas 31
  • Created
  • Última resposta

Top Posters For This Question

Top Posters For This Question

Posts Recomendados

  • 0

aqui a onde fica o exani hur: pasta 0.50 function acho que é ai mesmo

 

function doPlayerGiveItem(cid, itemid, amount, subType)

local item = 0

if(isItemStackable(itemid)) then

item = doCreateItemEx(itemid, amount)

if(doPlayerAddItemEx(cid, item, true) ~= RETURNVALUE_NOERROR) then

return false

end

else

for i = 1, amount do

item = doCreateItemEx(itemid, subType)

if(doPlayerAddItemEx(cid, item, true) ~= RETURNVALUE_NOERROR) then

return false

end

end

end

return true

end

function doPlayerGiveItemContainer(cid, containerid, itemid, amount, subType)

for i = 1, amount do

local container = doCreateItemEx(containerid, 1)

for x = 1, getContainerCapById(containerid) do

doAddContainerItem(container, itemid, subType)

end

if(doPlayerAddItemEx(cid, container, true) ~= RETURNVALUE_NOERROR) then

return false

end

end

return true

end

function doPlayerTakeItem(cid, itemid, amount)

return getPlayerItemCount(cid, itemid) >= amount and doPlayerRemoveItem(cid, itemid, amount)

end

function doPlayerBuyItem(cid, itemid, count, cost, charges)

return doPlayerRemoveMoney(cid, cost) and doPlayerGiveItem(cid, itemid, count, charges)

end

function doPlayerBuyItemContainer(cid, containerid, itemid, count, cost, charges)

return doPlayerRemoveMoney(cid, cost) and doPlayerGiveItemContainer(cid, containerid, itemid, count, charges)

end

function doPlayerSellItem(cid, itemid, count, cost)

if(not doPlayerTakeItem(cid, itemid, count)) then

return false

end

if(not doPlayerAddMoney(cid, cost)) then

error('[doPlayerSellItem] Could not add money to: ' .. getPlayerName(cid) .. ' (' .. cost .. 'gp).')

end

return true

end

function doPlayerWithdrawMoney(cid, amount)

if(not getBooleanFromString(getConfigInfo('bankSystem'))) then

return false

end

local balance = getPlayerBalance(cid)

if(amount > balance or not doPlayerAddMoney(cid, amount)) then

return false

end

doPlayerSetBalance(cid, balance - amount)

return true

end

function doPlayerDepositMoney(cid, amount)

if(not getBooleanFromString(getConfigInfo('bankSystem'))) then

return false

end

if(not doPlayerRemoveMoney(cid, amount)) then

return false

end

doPlayerSetBalance(cid, getPlayerBalance(cid) + amount)

return true

end

function isPremium(cid)

return (isPlayer(cid) and (getPlayerPremiumDays(cid) > 0 or getBooleanFromString(getConfigInfo('freePremium'))))

end

function getMonthDayEnding(day)

if(day == "01" or day == "21" or day == "31") then

return "st"

elseif(day == "02" or day == "22") then

return "nd"

elseif(day == "03" or day == "23") then

return "rd"

end

return "th"

end

function getMonthString(m)

return os.date("%B", os.time{year = 1970, month = m, day = 1})

end

function getArticle(str)

return str:find("[AaEeIiOoUuYy]") == 1 and "an" or "a"

end

function isNumber(str)

return tonumber(str) ~= nil

end

function doPlayerAddAddons(cid, addon)

for i = 0, table.maxn(maleOutfits) do

doPlayerAddOutfit(cid, maleOutfits, addon)

end

for i = 0, table.maxn(femaleOutfits) do

doPlayerAddOutfit(cid, femaleOutfits, addon)

end

end

function doPlayerWithdrawAllMoney(cid)

return doPlayerWithdrawMoney(cid, getPlayerBalance(cid))

end

function doPlayerDepositAllMoney(cid)

return doPlayerDepositMoney(cid, getPlayerMoney(cid))

end

function doPlayerTransferAllMoneyTo(cid, target)

return doPlayerTransferMoneyTo(cid, target, getPlayerBalance(cid))

end

function playerExists(name)

return getPlayerGUIDByName(name) ~= 0

end

function getTibiaTime()

local minutes = getWorldTime()

local hours = 0

while (minutes > 60) do

hours = hours + 1

minutes = minutes - 60

end

return {hours = hours, minutes = minutes}

end

function doWriteLogFile(file, text)

local f = io.open(file, "a+")

if(not f) then

return false

end

f:write("[" .. os.date("%d/%m/%Y %H:%M:%S") .. "] " .. text .. "\n")

f:close()

return true

end

function getExperienceForLevel(lv)

lv = lv - 1

return ((50 * lv * lv * lv) - (150 * lv * lv) + (400 * lv)) / 3

end

function doMutePlayer(cid, time)

local condition = createConditionObject(CONDITION_MUTED)

setConditionParam(condition, CONDITION_PARAM_TICKS, time * 1000)

return doAddCondition(cid, condition)

end

function getPlayerGroupName(cid)

return getGroupInfo(getPlayerGroupId(cid)).name

end

function getPlayerVocationName(cid)

return getVocationInfo(getPlayerVocation(cid)).name

end

function getPromotedVocation(vid)

return getVocationInfo(vid).promotedVocation

end

function doPlayerRemovePremiumDays(cid, days)

return doPlayerAddPremiumDays(cid, -days)

end

function getPlayerMasterPos(cid)

return getTownTemplePosition(getPlayerTown(cid))

end

function getHouseOwner(houseId)

return getHouseInfo(houseId).owner

end

function getHouseName(houseId)

return getHouseInfo(houseId).name

end

function getHouseEntry(houseId)

return getHouseInfo(houseId).entry

end

function getHouseRent(houseId)

return getHouseInfo(houseId).rent

end

function getHousePrice(houseId)

return getHouseInfo(houseId).price

end

function getHouseTown(houseId)

return getHouseInfo(houseId).town

end

function getHouseTilesCount(houseId)

return getHouseInfo(houseId).tiles

end

function getItemNameById(itemid)

return getItemDescriptionsById(itemid).name

end

function getItemPluralNameById(itemid)

return getItemDescriptionsById(itemid).plural

end

function getItemArticleById(itemid)

return getItemDescriptionsById(itemid).article

end

function getItemName(uid)

return getItemDescriptions(uid).name

end

function getItemPluralName(uid)

return getItemDescriptions(uid).plural

end

function getItemArticle(uid)

return getItemDescriptions(uid).article

end

function getItemText(uid)

return getItemDescriptions(uid).text

end

function getItemSpecialDescription(uid)

return getItemDescriptions(uid).special

end

function getItemWriter(uid)

return getItemDescriptions(uid).writer

end

function getItemDate(uid)

return getItemDescriptions(uid).date

end

function getTilePzInfo(pos)

return getTileInfo(pos).protection

end

function getTileZoneInfo(pos)

local tmp = getTileInfo(pos)

if(tmp.pvp) then

return 2

end

if(tmp.nopvp) then

return 1

end

return 0

end

function doShutdown()

return doSetGameState(GAMESTATE_SHUTDOWN)

end

function doSummonCreature(name, pos, displayError)

local displayError, cid = displayError or true, doCreateMonster(name, pos, displayError)

if(not cid) then

cid = doCreateNpc(name, pos, displayError)

end

return cid

end

function getOnlinePlayers()

local tmp = getPlayersOnline()

local players = {}

for i, cid in ipairs(tmp) do

table.insert(players, getCreatureName(cid))

end

return players

end

function getPlayerByName(name)

local cid = getCreatureByName(name)

return isPlayer(cid) and cid or nil

end

function isPlayer(cid)

return isCreature(cid) and cid >= AUTOID_PLAYERS and cid < AUTOID_MONSTERS

end

function isPlayerGhost(cid)

if(not isPlayer(cid)) then

return false

end

return getCreatureCondition(cid, CONDITION_GAMEMASTER, GAMEMASTER_INVISIBLE) or getPlayerFlagValue(cid, PLAYERFLAG_CANNOTBESEEN)

end

function isMonster(cid)

return isCreature(cid) and cid >= AUTOID_MONSTERS and cid < AUTOID_NPCS

end

function isNpc(cid)

return isCreature(cid) and cid >= AUTOID_NPCS

end

function doPlayerSetExperienceRate(cid, value)

return doPlayerSetRate(cid, SKILL__LEVEL, value)

end

function doPlayerSetMagicRate(cid, value)

return doPlayerSetRate(cid, SKILL__MAGLEVEL, value)

end

function doPlayerAddLevel(cid, amount, round)

local experience, level = 0, getPlayerLevel(cid)

if(amount > 0) then

experience = getExperienceForLevel(level + amount) - (round and getPlayerExperience(cid) or getExperienceForLevel(level))

else

experience = -((round and getPlayerExperience(cid) or getExperienceForLevel(level)) - getExperienceForLevel(level + amount))

end

return doPlayerAddExperience(cid, experience)

end

function doPlayerAddMagLevel(cid, amount)

for i = 1, amount do

doPlayerAddSpentMana(cid, (getPlayerRequiredMana(cid, getPlayerMagLevel(cid, true) + 1) - getPlayerSpentMana(cid)) / getConfigInfo('rateMagic'))

end

return true

end

function doPlayerAddSkill(cid, skill, amount, round)

if(skill == SKILL__LEVEL) then

return doPlayerAddLevel(cid, amount, round)

elseif(skill == SKILL__MAGLEVEL) then

return doPlayerAddMagLevel(cid, amount)

end

return doPlayerAddSkillTry(cid, skill, (getPlayerRequiredSkillTries(cid, skill, getPlayerSkillLevel(cid, skill) + 1) - getPlayerSkillTries(cid, skill)) / getConfigInfo('rateSkill'))

end

function getPartyLeader(cid)

local party = getPartyMembers(cid)

if(type(party) ~= 'table') then

return 0

end

return party[1]

end

function isInParty(cid)

return type(getPartyMembers(cid)) == 'table'

end

function isPrivateChannel(channelId)

return channelId >= CHANNEL_PRIVATE

end

function doPlayerResetIdleTime(cid)

return doPlayerSetIdleTime(cid, 0)

end

function doBroadcastMessage(text, class)

local class = class or MESSAGE_STATUS_WARNING

if(type(class) == 'string') then

local className = MESSAGE_TYPES[class]

if(className == nil) then

return false

end

class = className

elseif(class < MESSAGE_FIRST or class > MESSAGE_LAST) then

return false

end

local players = getPlayersOnline()

for _, pid in ipairs(players) do

doPlayerSendTextMessage(pid, class, text)

end

print("> Broadcasted message: \"" .. text .. "\".")

return true

end

function doPlayerBroadcastMessage(cid, text, class, checkFlag, ghost)

local checkFlag, ghost, class = checkFlag or true, ghost or false, class or TALKTYPE_BROADCAST

if(checkFlag and not getPlayerFlagValue(cid, PLAYERFLAG_CANBROADCAST)) then

return false

end

if(type(class) == 'string') then

local className = TALKTYPE_TYPES[class]

if(className == nil) then

return false

end

class = className

elseif(class < TALKTYPE_FIRST or class > TALKTYPE_LAST) then

return false

end

local players = getPlayersOnline()

for _, pid in ipairs(players) do

doCreatureSay(cid, text, class, ghost, pid)

end

print("> " .. getCreatureName(cid) .. " broadcasted message: \"" .. text .. "\".")

return true

end

function getBooleanFromString(input)

local tmp = type(input)

if(tmp == 'boolean') then

return input

end

if(tmp == 'number') then

return input > 0

end

local str = string.lower(tostring(input))

return (str == "yes" or str == "true" or (tonumber(str) ~= nil and tonumber(str) > 0))

end

function doCopyItem(item, attributes)

local attributes = attributes or false

local ret = doCreateItemEx(item.itemid, item.type)

if(attributes) then

if(item.actionid > 0) then

doItemSetAttribute(ret, "aid", item.actionid)

end

end

if(isContainer(item.uid)) then

for i = (getContainerSize(item.uid) - 1), 0, -1 do

local tmp = getContainerItem(item.uid, i)

if(tmp.itemid > 0) then

doAddContainerItemEx(ret, doCopyItem(tmp, true).uid)

end

end

end

return getThing(ret)

end

function doRemoveThing(uid)

if(isCreature(uid)) then

return doRemoveCreature(uid)

end

return doRemoveItem(uid)

end

function setAttackFormula(combat, type, minl, maxl, minm, maxm, min, max)

local min, max = min or 0, max or 0

return setCombatFormula(combat, type, -1, 0, -1, 0, minl, maxl, minm, maxm, min, max)

end

function setHealingFormula(combat, type, minl, maxl, minm, maxm, min, max)

local min, max = min or 0, max or 0

return setCombatFormula(combat, type, 1, 0, 1, 0, minl, maxl, minm, maxm, min, max)

end

function doChangeTypeItem(uid, subtype)

local thing = getThing(uid)

if(thing.itemid < 100) then

return false

end

local subtype = subtype or 1

return doTransformItem(thing.uid, thing.itemid, subtype)

end

function doSetItemText(uid, text, writer, date)

local thing = getThing(uid)

if(thing.itemid < 100) then

return false

end

doItemSetAttribute(uid, "text", text)

if(writer ~= nil) then

doItemSetAttribute(uid, "writer", tostring(writer))

if(date ~= nil) then

doItemSetAttribute(uid, "date", tonumber(date))

end

end

return true

end

function getFluidSourceType(itemid)

local item = getItemInfo(itemid)

return item and item.fluidSource or false

end

function getDepotId(uid)

return getItemAttribute(uid, "depotid") or false

end

function getItemDescriptions(uid)

local thing = getThing(uid)

if(thing.itemid < 100) then

return false

end

local item = getItemInfo(thing.itemid)

return {

name = getItemAttribute(uid, "name") or item.name,

plural = getItemAttribute(uid, "pluralname") or item.plural,

article = getItemAttribute(uid, "article") or item.article,

special = getItemAttribute(uid, "description") or "",

text = getItemAttribute(uid, "text") or "",

writer = getItemAttribute(uid, "writer") or "",

date = getItemAttribute(uid, "date") or 0

}

end

function getItemWeightById(itemid, count, precision)

local item, count, precision = getItemInfo(itemid), count or 1, precision or false

if(not item) then

return false

end

if(count > 100) then

-- print a warning, as its impossible to have more than 100 stackable items without "cheating" the count

print('[Warning] getItemWeightById', 'Calculating weight for more than 100 items!')

end

local weight = item.weight * count

--[[if(precision) then

return weight

end

local t = string.explode(tostring(weight), ".")

if(table.maxn(t) == 2) then

return tonumber(t[1] .. "." .. string.sub(t[2], 1, 2))

end]]--

return weight

end

function getItemWeaponType(uid)

local thing = getThing(uid)

if(thing.itemid < 100) then

return false

end

return getItemInfo(thing.itemid).weaponType

end

function getItemRWInfo(uid)

local thing = getThing(uid)

if(thing.itemid < 100) then

return false

end

local item, flags = getItemInfo(thing.itemid), 0

if(item.readable) then

flags = 1

end

if(item.writable) then

flags = flags + 2

end

return flags

end

function getItemLevelDoor(itemid)

local item = getItemInfo(itemid)

return item and item.levelDoor or false

end

function isItemStackable(itemid)

local item = getItemInfo(itemid)

return item and item.stackable or false

end

function isItemRune(itemid)

local item = getItemInfo(itemid)

return item and item.clientCharges or false

end

function isItemDoor(itemid)

local item = getItemInfo(itemid)

return item and item.type == 5 or false

end

function isItemContainer(itemid)

local item = getItemInfo(itemid)

return item and item.group == 2 or false

end

function isItemFluidContainer(itemid)

local item = getItemInfo(itemid)

return item and item.group == 12 or false

end

function isItemMovable(itemid)

local item = getItemInfo(itemid)

return item and item.movable or false

end

function isCorpse(uid)

local thing = getThing(uid)

if(thing.itemid < 100) then

return false

end

local item = getItemInfo(thing.itemid)

return item and item.corpseType ~= 0 or false

end

function getContainerCapById(itemid)

local item = getItemInfo(itemid)

if(not item or item.group ~= 2) then

return false

end

return item.maxItems

end

function getMonsterAttackSpells(name)

local monster = getMonsterInfo(name)

return monster and monster.attacks or false

end

function getMonsterHealingSpells(name)

local monster = getMonsterInfo(name)

return monster and monster.defenses or false

end

function getMonsterLootList(name)

local monster = getMonsterInfo(name)

return monster and monster.loot or false

end

function getMonsterSummonList(name)

local monster = getMonsterInfo(name)

return monster and monster.summons or false

end

 

 

essa é minha tag

 

<instant name="Exani hur" words="Jump" lvl="23" mana="100" aggressive="0" params="1" exhaustion="950" needlearn="0" event="function" value="Levitate">

 

 

 

pra colocar spoiler, procura no editor quando estiver escrevendo um iconem chamado bbcode especial e seleciona spoiler ou adiciona [spoiler.] o que vc quer falar [/spoiler.] lembra de tirar o ponto que eu coloquei em os spoilers.

Link para o comentário
Compartilhar em outros sites

  • 0

<instant name="Exani hur" words="Jump" lvl="23" mana="100" aggressive="0" params="1" exhaustion="950" needlearn="0" event="function" value="Levitate">

 

Obs: Não existe nenhum levitate em seu arquivo function

Link para o comentário
Compartilhar em outros sites

  • 0

Jovens, a função Levitate, se não estou enganado, se localiza nas sources. Se você não tiver acesso às sources do seu server, você tem 2 opções:

 

1) Mudar para outro distro que venha com sources

 

2) Verificar se a borda é a mesma dos dois servers. Pode acontecer o seguinte. Muitos items nos servers tem aparência igual, tipo a escada, que tem ID 1386 (que dá pra subir) e de ID 8599 (que não dá pra subir em alguns servers). Então, pode ser que o ID da borda do outro server seja diferente, tornando impossível de subir no seu.

 

Só uma dúvida. O .dat do seu client é o mesmo que do outro server?

Editado por LuckOake
Link para o comentário
Compartilhar em outros sites

  • 0

Distro igual=TheForgottenServer?

Tem que pegar outro serve?

 

Edit

Aproveitando tem como colocar uma spell baseada em outra skill tipo ao inves dela ser baseada no seu MAGICLEVEL, basea-la no dano FIRST, OU CLUB.

Editado por isaque555
Link para o comentário
Compartilhar em outros sites

  • 0

Distro é o executável pra abrir seu server.

 

Pra colocar baseado em skill, se não estou enganado, é só mudar a formula pra essa:

 

setCombatFormula(combat, COMBAT_FORMULA_SKILL, xxx, xxx, xxx, xxx)

 

PS: Eu não tenho certeza se funciona e não sei como configura, mas acho que isso dá pra resolver alguma coisa.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.

×
×
  • Criar Novo...