Ir para conteúdo

Featured Replies

Postado

Estou Com Problemas Com o(a) NPC NURSE  Ela(e) Nao Heala :/ Algum erro que Nao Consigui Achar :D

 

Por Isso Peço Ajuda de vcs do TK!

 

 

ERRO NA DISTRO E PRINT :D

 

 

[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 :D

Editado por mat0977 (veja o histórico de edições)

  • Respostas 5
  • Visualizações 614
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

Postado

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
  • 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 por mat0977 (veja o histórico de edições)

Postado

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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo