Postado Novembro 16, 2014 10 anos Estou Com Problemas Com o(a) NPC NURSE Ela(e) Nao Heala :/ Algum erro que Nao Consigui Achar Por Isso Peço Ajuda de vcs do TK! ERRO NA DISTRO E PRINT : [17/11/2014 15:20:52] [Error - Npc interface] [17/11/2014 15:20:52] data/npc/scripts/heal.lua:onCreatureSay [17/11/2014 15:20:52] Description: [17/11/2014 15:20:52] data/npc/scripts/heal.lua:42: bad argument #1 to 'gsub' (string expected, got nil) [17/11/2014 15:20:52] stack traceback: [17/11/2014 15:20:52] [C]: in function 'gsub' [17/11/2014 15:20:52] data/npc/scripts/heal.lua:42: in function <data/npc/scripts/heal.lua:36> PRINT:http://prntscr.com/57c6ty Data/lib/configurations: nurseHealsPokemonOut = true Data/npc/Nurse.xml : Spoiler <?xml version="1.0" encoding="UTF-8"?> <npc name="Nurse Joy" script="heal.lua" walkinterval="350000" floorchange="0" speed="0"> <health now="150" max="150"/> <look type="532" head="91" body="102" legs="83" feet="0"/> <parameters> <parameter key="message_greet" value="Welcome to the pokemon center! We can {heal} your pokemons here!"/> <parameter key="message_farewell" value="Always remember to treat well your pokemons!"/> <parameter key="message_idletimeout" value="Have a nice day."/> <parameter key="message_walkaway" value="Good bye young trainer!"/> </parameters> </npc> Data/npc/heal.Lua: local posis = { --[storage da city] = {pos da nurse na city}, [897530] = {x = 1053, y = 1046, z = 7}, --saffron --alterado v2.9 TUDO!! \/ [897531] = {x = 1060, y = 900, z = 7}, --cerulean [897532] = {x = 1204, y = 1042, z = 7}, --lavender [897533] = {x = 1213, y = 1321, z = 7}, --fuchsia [897534] = {x = 862, y = 1094, z = 6}, --celadon [897535] = {x = 705, y = 1086, z = 7}, --viridian [897536] = {x = 1075, y = 1233, z = 7}, --vermilion [897537] = {x = 723, y = 847, z = 7}, --pewter [897538] = {x = 850, y = 1396, z = 7}, --cinnabar [897539] = {x = 1429, y = 1597, z = 6}, --snow [897540] = {x = 542, y = 675, z = 7}, --golden } function onThingMove(creature, thing, oldpos, oldstackpos) end function onCreatureAppear(creature) end function onCreatureDisappear(cid, pos) if focus == cid then selfSay('Good bye sir!') focus = 0 talk_start = 0 end end function onCreatureTurn(creature) end function msgcontains(txt, str) return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)')) end function onCreatureSay(cid, type, msg) local msg = string.lower(msg) local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid for a, b in pairs(gobackmsgs) do local gm = string.gsub(b.go, "doka!", "") local bm = string.gsub(b.back, "doka!", "") if string.find(string.lower(msg), string.lower(gm)) or string.find(string.lower(msg), string.lower(bm)) then return true end end if((msgcontains(msg, 'hi') or msgcontains(msg, 'heal') or msgcontains(msg, 'help')) and (getDistanceToCreature(cid) <= 3)) then if exhaustion.get(cid, 9211) then selfSay('Please wait a few moment before asking me to heal your pokemons again!') return true end if not getTileInfo(getThingPos(cid)).protection and nurseHealsOnlyInPZ then selfSay("Please, get inside the pokémon center to heal your pokemons!") return true end if getPlayerStorageValue(cid, 52480) >= 1 then selfSay("You can't do that while in a Duel!") return true end for e, f in pairs(posis) do local pos = getThingPos(getNpcCid()) if isPosEqual(pos, f) then if getPlayerStorageValue(cid, e) <= -1 then setPlayerStorageValue(cid, e, 1) end end end exhaustion.set(cid, 9211, 5) doCreatureAddHealth(cid, getCreatureMaxHealth(cid)-getCreatureHealth(cid)) doCureStatus(cid, "all", true) doSendMagicEffect(getThingPos(cid), 132) local mypb = getPlayerSlotItem(cid, 8) if #getCreatureSummons(cid) >= 1 then if not nurseHealsPokemonOut then selfSay("Please, return your pokemon to his ball!") return true end local s = getCreatureSummons(cid)[1] doCreatureAddHealth(s, getCreatureMaxHealth(s)) doSendMagicEffect(getThingPos(s), 13) doCureStatus(s, "all", false) if getPlayerStorageValue(s, 1008) < baseNurseryHappiness then setPlayerStorageValue(s, 1008, baseNurseryHappiness) end if getPlayerStorageValue(s, 1009) > baseNurseryHunger then setPlayerStorageValue(s, 1009, baseNurseryHunger) end else if mypb.itemid ~= 0 and isPokeball(mypb.itemid) then doItemSetAttribute(mypb.uid, "hp", 1) if getItemAttribute(mypb.uid, "hunger") and getItemAttribute(mypb.uid, "hunger") > baseNurseryHunger then doItemSetAttribute(mypb.uid, "hunger", baseNurseryHunger) end for c = 1, 15 do local str = "move"..c setCD(mypb.uid, str, 0) end if getItemAttribute(mypb.uid, "happy") and getItemAttribute(mypb.uid, "happy") < baseNurseryHappiness then doItemSetAttribute(mypb.uid, "happy", baseNurseryHappiness) end if getPlayerStorageValue(cid, 17000) <= 0 and getPlayerStorageValue(cid, 17001) <= 0 and getPlayerStorageValue(cid, 63215) <= 0 then for a, b in pairs (pokeballs) do if isInArray(b.all, mypb.itemid) then doTransformItem(mypb.uid, b.on) end end end end end local bp = getPlayerSlotItem(cid, CONST_SLOT_BACKPACK) local balls = getPokeballsInContainer(bp.uid) if #balls >= 1 then for _, uid in ipairs(balls) do doItemSetAttribute(uid, "hp", 1) for c = 1, 15 do local str = "move"..c setCD(uid, str, 0) end if getItemAttribute(uid, "hunger") and getItemAttribute(uid, "hunger") > baseNurseryHunger then doItemSetAttribute(uid, "hunger", baseNurseryHunger) end if getItemAttribute(uid, "happy") and getItemAttribute(uid, "happy") < baseNurseryHappiness then doItemSetAttribute(uid, "happy", baseNurseryHappiness) end local this = getThing(uid) for a, b in pairs (pokeballs) do if isInArray(b.all, this.itemid) then doTransformItem(uid, b.on) end end end end selfSay('There you go! You and your pokemons are healthy again.') if useKpdoDlls then doUpdateMoves(cid) end end end REP+++ Pra quem me ajuda VLW Editado Novembro 17, 2014 10 anos por mat0977 (veja o histórico de edições)
Postado Novembro 16, 2014 10 anos Creio que seja algo na linha 42 e linha 36 do seu Script. Nem todo loop infinito é ruim ;P User *eu = new User("otteN"); RepSystem<User> *myRep = new RepSystem<User>("jóinha"); myRep->setAlvo(eu); /* só por ser criado já sou o melhor membro */ while(eu->isMelhorMembro()){ myRep->reputar(); }
Postado Novembro 16, 2014 10 anos Autor aki o script do heal local posis = { --[storage da city] = {pos da nurse na city}, [897530] = {x = 1053, y = 1046, z = 7}, --saffron --alterado v2.9 TUDO!! \/ [897531] = {x = 1060, y = 900, z = 7}, --cerulean [897532] = {x = 1204, y = 1042, z = 7}, --lavender [897533] = {x = 1213, y = 1321, z = 7}, --fuchsia [897534] = {x = 862, y = 1094, z = 6}, --celadon [897535] = {x = 705, y = 1086, z = 7}, --viridian [897536] = {x = 1075, y = 1233, z = 7}, --vermilion [897537] = {x = 723, y = 847, z = 7}, --pewter [897538] = {x = 850, y = 1396, z = 7}, --cinnabar [897539] = {x = 1429, y = 1597, z = 6}, --snow [897540] = {x = 542, y = 675, z = 7}, --golden } function onThingMove(creature, thing, oldpos, oldstackpos) end function onCreatureAppear(creature) end function onCreatureDisappear(cid, pos) if focus == cid then selfSay('Good bye sir!') focus = 0 talk_start = 0 end end function onCreatureTurn(creature) end function msgcontains(txt, str) return (string.find(txt, str) and not string.find(txt, '(hi)' .. str) and not string.find(txt, str .. '(hi)')) end function onCreatureSay(cid, type, msg) local msg = string.lower(msg) local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid for a, b in pairs(gobackmsgs) do local gm = string.gsub(b.go, "doka!", "") local bm = string.gsub(b.back, "doka!", "") if string.find(string.lower(msg), string.lower(gm)) or string.find(string.lower(msg), string.lower(bm)) then return true end end if((msgcontains(msg, 'hi') or msgcontains(msg, 'heal') or msgcontains(msg, 'help')) and (getDistanceToCreature(cid) <= 3)) then if exhaustion.get(cid, 9211) then selfSay('Please wait a few moment before asking me to heal your pokemons again!') return true end if not getTileInfo(getThingPos(cid)).protection and nurseHealsOnlyInPZ then selfSay("Please, get inside the pokémon center to heal your pokemons!") return true end if getPlayerStorageValue(cid, 52480) >= 1 then selfSay("You can't do that while in a Duel!") return true end for e, f in pairs(posis) do local pos = getThingPos(getNpcCid()) if isPosEqual(pos, f) then if getPlayerStorageValue(cid, e) <= -1 then setPlayerStorageValue(cid, e, 1) end end end exhaustion.set(cid, 9211, 5) doCreatureAddHealth(cid, getCreatureMaxHealth(cid)-getCreatureHealth(cid)) doCureStatus(cid, "all", true) doSendMagicEffect(getThingPos(cid), 132) local mypb = getPlayerSlotItem(cid, 8) if #getCreatureSummons(cid) >= 1 then if not nurseHealsPokemonOut then selfSay("Please, return your pokemon to his ball!") return true end local s = getCreatureSummons(cid)[1] doCreatureAddHealth(s, getCreatureMaxHealth(s)) doSendMagicEffect(getThingPos(s), 13) doCureStatus(s, "all", false) if getPlayerStorageValue(s, 1008) < baseNurseryHappiness then setPlayerStorageValue(s, 1008, baseNurseryHappiness) end if getPlayerStorageValue(s, 1009) > baseNurseryHunger then setPlayerStorageValue(s, 1009, baseNurseryHunger) end else if mypb.itemid ~= 0 and isPokeball(mypb.itemid) then doItemSetAttribute(mypb.uid, "hp", 1) if getItemAttribute(mypb.uid, "hunger") and getItemAttribute(mypb.uid, "hunger") > baseNurseryHunger then doItemSetAttribute(mypb.uid, "hunger", baseNurseryHunger) end for c = 1, 15 do local str = "move"..c setCD(mypb.uid, str, 0) end if getItemAttribute(mypb.uid, "happy") and getItemAttribute(mypb.uid, "happy") < baseNurseryHappiness then doItemSetAttribute(mypb.uid, "happy", baseNurseryHappiness) end if getPlayerStorageValue(cid, 17000) <= 0 and getPlayerStorageValue(cid, 17001) <= 0 and getPlayerStorageValue(cid, 63215) <= 0 then for a, b in pairs (pokeballs) do if isInArray(b.all, mypb.itemid) then doTransformItem(mypb.uid, b.on) end end end end end local bp = getPlayerSlotItem(cid, CONST_SLOT_BACKPACK) local balls = getPokeballsInContainer(bp.uid) if #balls >= 1 then for _, uid in ipairs(balls) do doItemSetAttribute(uid, "hp", 1) for c = 1, 15 do local str = "move"..c setCD(uid, str, 0) end if getItemAttribute(uid, "hunger") and getItemAttribute(uid, "hunger") > baseNurseryHunger then doItemSetAttribute(uid, "hunger", baseNurseryHunger) end if getItemAttribute(uid, "happy") and getItemAttribute(uid, "happy") < baseNurseryHappiness then doItemSetAttribute(uid, "happy", baseNurseryHappiness) end local this = getThing(uid) for a, b in pairs (pokeballs) do if isInArray(b.all, this.itemid) then doTransformItem(uid, b.on) end end end end selfSay('There you go! You and your pokemons are healthy again.') if useKpdoDlls then doUpdateMoves(cid) end end end Editado Novembro 16, 2014 10 anos por mat0977 (veja o histórico de edições)
Postado Novembro 16, 2014 10 anos 3 perguntas: qual sua base? Ele está healando o Pokémon? Você alterou algo? Nem todo loop infinito é ruim ;P User *eu = new User("otteN"); RepSystem<User> *myRep = new RepSystem<User>("jóinha"); myRep->setAlvo(eu); /* só por ser criado já sou o melhor membro */ while(eu->isMelhorMembro()){ myRep->reputar(); }
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.