Postado Julho 25, 2018 6 anos Opa, eai tk. tenho um servidor online, caso queiram conhecer: http://www.orgpokemon.com mas esse não é o ponto... Estou com um problema no meu sistema de smeargle, consigo fazer ele copiar as spells e até soltar mas ele não dá dano... (detalhe: se eu deixo ele bater no meele sem ter usado nenhuma skill, ele dá dano normal mas a partir da hora que eu uso uma magia ele para de dar dano) Acredito que o problema seja em getEffectivineSpell, whatever, aqui está o erro: Spoiler [25/07/2018 16:06:56] [Error - CreatureScript Interface] [25/07/2018 16:06:56] data/creaturescripts/scripts/player/statsChange.lua:onStatsChange [25/07/2018 16:06:56] Description: [25/07/2018 16:06:56] data/lib/011-string.lua:16: bad argument #1 to 'find' (string expected, got nil) [25/07/2018 16:06:56] stack traceback: [25/07/2018 16:06:56] [C]: in function 'find' [25/07/2018 16:06:56] data/lib/011-string.lua:16: in function '(for generator)' [25/07/2018 16:06:56] data/lib/011-string.lua:16: in function 'explode' [25/07/2018 16:06:56] data/lib/106-main functions.lua:526: in function 'getMoveTypeSmeargle' [25/07/2018 16:06:56] data/lib/106-main functions.lua:365: in function 'getEffectvineSpell' [25/07/2018 16:06:56] data/creaturescripts/scripts/player/statsChange.lua:249: in function <data/creaturescripts/scripts/player/statsChange.lua:6> a função getMoveTypeSmeargle: Spoiler function getMoveTypeSmeargle(name, moveName, attacker) local x = {} --------------SMEARGLETABLE if name == "Smeargle" and isSummon(attacker) then local move1 = getItemAttribute(getPlayerSlotItem(getCreatureMaster(attacker), 8).uid, "Sketch1") local move2 = getItemAttribute(getPlayerSlotItem(getCreatureMaster(attacker), 8).uid, "Sketch2") local move3 = getItemAttribute(getPlayerSlotItem(getCreatureMaster(attacker), 8).uid, "Sketch3") local move4 = getItemAttribute(getPlayerSlotItem(getCreatureMaster(attacker), 8).uid, "Sketch4") local move5 = getItemAttribute(getPlayerSlotItem(getCreatureMaster(attacker), 8).uid, "Sketch5") local move6 = getItemAttribute(getPlayerSlotItem(getCreatureMaster(attacker), 8).uid, "Sketch6") local move7 = getItemAttribute(getPlayerSlotItem(getCreatureMaster(attacker), 8).uid, "Sketch7") local move8 = getItemAttribute(getPlayerSlotItem(getCreatureMaster(attacker), 8).uid, "Sketch8") local movename1, movecd1, moveforce1, movetype1, movetarget1, movelevel1, movedist1 = string.explode(move1, "|")[1], string.explode(move1, "|")[2], string.explode(move1, "|")[3], string.explode(move1, "|")[4], string.explode(move1, "|")[5], string.explode(move1, "|")[6], string.explode(move1, "|")[7] local movename2, movecd2, moveforce2, movetype2, movetarget2, movelevel2, movedist2 = string.explode(move2, "|")[1], string.explode(move2, "|")[2], string.explode(move2, "|")[3], string.explode(move2, "|")[4], string.explode(move2, "|")[5], string.explode(move2, "|")[6], string.explode(move2, "|")[7] local movename3, movecd3, moveforce3, movetype3, movetarget3, movelevel3, movedist3 = string.explode(move3, "|")[1], string.explode(move3, "|")[2], string.explode(move3, "|")[3], string.explode(move3, "|")[4], string.explode(move3, "|")[5], string.explode(move3, "|")[6], string.explode(move3, "|")[7] local movename4, movecd4, moveforce4, movetype4, movetarget4, movelevel4, movedist4 = string.explode(move4, "|")[1], string.explode(move4, "|")[2], string.explode(move4, "|")[3], string.explode(move4, "|")[4], string.explode(move4, "|")[5], string.explode(move4, "|")[6], string.explode(move4, "|")[7] local movename5, movecd5, moveforce5, movetype5, movetarget5, movelevel5, movedist5 = string.explode(move5, "|")[1], string.explode(move5, "|")[2], string.explode(move5, "|")[3], string.explode(move5, "|")[4], string.explode(move5, "|")[5], string.explode(move5, "|")[6], string.explode(move5, "|")[7] local movename6, movecd6, moveforce6, movetype6, movetarget6, movelevel6, movedist6 = string.explode(move6, "|")[1], string.explode(move6, "|")[2], string.explode(move6, "|")[3], string.explode(move6, "|")[4], string.explode(move6, "|")[5], string.explode(move6, "|")[6], string.explode(move6, "|")[7] local movename7, movecd7, moveforce7, movetype7, movetarget7, movelevel7, movedist7 = string.explode(move7, "|")[1], string.explode(move7, "|")[2], string.explode(move7, "|")[3], string.explode(move7, "|")[4], string.explode(move7, "|")[5], string.explode(move7, "|")[6], string.explode(move7, "|")[7] local movename8, movecd8, moveforce8, movetype8, movetarget8, movelevel8, movedist8 = string.explode(move8, "|")[1], string.explode(move8, "|")[2], string.explode(move8, "|")[3], string.explode(move8, "|")[4], string.explode(move8, "|")[5], string.explode(move8, "|")[6], string.explode(move8, "|")[7] local smeargletable = {move1 = {name = movename1, level = tonumber(movelevel1), cd = tonumber(movecd1), dist = tonumber(movedist1), target = tonumber(movetarget1), f = tonumber(moveforce1), t = movetype1}, move2 = {name = movename2, level = tonumber(movelevel2), cd = tonumber(movecd2), dist = tonumber(movedist2), target = tonumber(movetarget2), f = tonumber(moveforce2), t = movetype2}, move3 = {name = movename3, level = tonumber(movelevel3), cd = tonumber(movecd3), dist = tonumber(movedist3), target = tonumber(movetarget3), f = tonumber(moveforce3), t = movetype3}, move4 = {name = movename4, level = tonumber(movelevel4), cd = tonumber(movecd4), dist = tonumber(movedist4), target = tonumber(movetarget4), f = tonumber(moveforce4), t = movetype4}, move5 = {name = movename5, level = tonumber(movelevel5), cd = tonumber(movecd5), dist = tonumber(movedist5), target = tonumber(movetarget5), f = tonumber(moveforce5), t = movetype5}, move6 = {name = movename6, level = tonumber(movelevel6), cd = tonumber(movecd6), dist = tonumber(movedist6), target = tonumber(movetarget6), f = tonumber(moveforce6), t = movetype6}, move7 = {name = movename7, level = tonumber(movelevel7), cd = tonumber(movecd7), dist = tonumber(movedist7), target = tonumber(movetarget7), f = tonumber(moveforce7), t = movetype7}, move8 = {name = movename8, level = tonumber(movelevel8), cd = tonumber(movecd8), dist = tonumber(movedist8), target = tonumber(movetarget8), f = tonumber(moveforce8), t = movetype8}, } x =smeargletable end --------------SMEARGLETABLE if not x then return "" end local z = "\n" local tables = {x.move1, x.move2, x.move3, x.move4, x.move5, x.move6, x.move7, x.move8, x.move9, x.move10, x.move11, x.move12} for i = 1, #tables do if tables[i].name == moveName then return tables[i].t end end return true end função getEffectvineSpell: Spoiler function getEffectvineSpell(attacker, spellNameFromAttacker, value, cid) -- printar os elementos if(spellNameFromAttacker ~= -1) then -- checagem de efetividades local name = getCreatureName(attacker) -- reflect system if isMega(attacker) then name = getPlayerStorageValue(attacker, storages.isMega) end local spellRace, pokeElement1, pokeElement2 = getMoveType(name, spellNameFromAttacker), getPokemonType(cid).type1, getPokemonType(cid).type2 if getCreatureName(attacker) == "Smeargle" and isSummon(attacker) then spellRace = getMoveTypeSmeargle(getCreatureName(attacker), spellNameFromAttacker, attacker) end if spellNameFromAttacker == "X Elemental" then spellRace = getPokemonType(attacker).type1 end if getCreatureName(cid) == "Kecleon" then local elementospell = spellRace KecleonColor(cid, elementospell) pokeElement1= getPlayerStorageValue(cid, 21113) end if getCreatureName(cid) == "Kecleon" and getPlayerStorageValue(cid, 21113) ==nil then setPlayerStorageValue(cid, 21113, "normal") end if not typeTable[spellRace] then local remover = removeSpellInXML(doCorrectString(name), spellNameFromAttacker) if remover then print("Magia: " .. spellNameFromAttacker .. " removida do XML: " .. doCorrectString(name) .. ".xml") end return 0 end if spellRace == "poison" and (pokeElement1 == "steel" or pokeElement2 == "steel") then value = 0 end if isInArray(typeTable[spellRace].non, pokeElement1) or isInArray(typeTable[spellRace].non, pokeElement2) then -- elemento atacante ser mais forte que os elementos de defesa value = 0 end if isInArray(typeTable[spellRace].super, pokeElement1) or isInArray(typeTable[spellRace].super, pokeElement2) then -- elemento atacante ser mais forte que os elementos de defesa value = value * 1.3 end if isInArray(typeTable[spellRace].week, pokeElement1) or isInArray(typeTable[spellRace].week, pokeElement2) then -- elemento atacante ser mais forte que os elementos de defesa value = value * 0.7 end if getCreatureName(cid) == "Venusaur" and value ~= 0 and isMega(cid) and isInArray({"ice", "fire"}, spellRace)then -- Passiva thick fat value = value / 2 end if getCreatureName(cid) == "Kecleon" then local elementospell = spellRace setPlayerStorageValue(cid, 21113, elementospell) end if isSummon(cid) and isSummon(attacker) then value = value /4 end end return value end não sei se interfere mas tem mais uma, getEffectvineCombat: Spoiler function getEffectvineCombat(cid, attacker, value) if isPlayer(cid) or isPlayer(attacker) then return false end -- seguranca do player nao atacar local pokeRaceAttacker, pokeRaceDefender = getPokemonType(attacker).type1, getPokemonType(cid).type1 if pokeRaceAttacker == nil or pokeRaceDefender == nil then print ("bugado "..cid .." o " ..attacker) return 0 end if isInArray(typeTable[pokeRaceAttacker].super, pokeRaceDefender) or isInArray(typeTable[pokeRaceAttacker].super, pokeRaceDefender) then -- elemento atacante ser mais forte que os elementos de defesa value = value * 2.0 end if isInArray(typeTable[pokeRaceAttacker].week, pokeRaceDefender) or isInArray(typeTable[pokeRaceAttacker].week, pokeRaceDefender) then -- elemento atacante ser mais forte que os elementos de defesa value = value end if pokeRaceDefender == "ghost" then -- apenas ghost não toma alguns melees local hasforesight = true if hasforesight then value = value / 2 else value = 0 end end if getCreatureName(cid) == "Venusaur" and value ~= 0 and isMega(cid) and isInArray({"ice", "fire"}, pokeRaceAttacker)then -- Passiva thick fat value = value / 2 end return value end desde já agradeço!! Editado Julho 25, 2018 6 anos por Lordjanden (veja o histórico de edições)
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.