Ir para conteúdo

[Encerrado] Pedido - Npc Duel


Bepovi

Posts Recomendados

Bom dia, gostaria de um script basico de um treinador que aceita duels, e que ao vencer ganha um item. (só pode duelar 1x)

​Base KPDO

 

 

 

Já tentei usar scripts de outras bases, mas sempre da erro dizendo attempt to call global "getthis"
Usei o seguinte:

local prize_id = 1234 -- id do item que vai ganhar

local focus = 0
local max_distance = 8
local talk_start = 0
local conv = 0
local fighting = false
local challenger = 0
local afk_limit_time = 30    -- seconds
local afk_time = 0        -- don't change
local battle_turn = 1        -- don't change
local challenger_turn = 0    -- don't change

local pokemons = {
{name = "Clone Blastoise", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Clone Charizard", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Clone Gengar", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Clone Venusaur", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "super"},
}

local function doSummonGymPokemon(npc)
    local this = npc
    if #getCreatureSummons(this) >= 1 or focus == 0 then return true end
    local it = pokemons[battle_turn]
    doSummonMonster(this, it.name)
    local summon = getCreatureSummons(this)[1]
    local balleffect = pokeballs["normal"].effect
        if it.ball and pokeballs[it.ball] then
            balleffect = pokeballs[it.ball].effect
        end
    doSendMagicEffect(getThingPos(summon), balleffect)
    setPlayerStorageValue(summon, 10000, balleffect)
    setPlayerStorageValue(summon, 10001, gobackmsgs[math.random(#gobackmsgs)].back:gsub("doka", it.nick ~= "" and it.nick or it.name))
    setPlayerStorageValue(summon, 1007, it.nick ~= "" and it.nick or it.name)
    doSetMonsterGym(summon, focus)
    addEvent(adjustWildPoke, 15, summon, it.optionalLevel)
    local name = it.nick ~= "" and it.nick or getCreatureName(this).."s "..it.name
    doCreatureSay(this, gobackmsgs[math.random(#gobackmsgs)].go:gsub("doka", getPlayerStorageValue(summon, 1007)), 1)
    fighting = true
    battle_turn = battle_turn + 1
end

local function doWinDuel(cid, npc)
    if not isCreature(cid) then return true end
    doPlayerAddItem(cid, prize_id, 1)
    doCreatureSay(npc, "You won the duel! Congratulations, take this "..getItemNameById(prize_id).." as a prize.", 1)
end

function onCreatureSay(cid, type, msg)

    local msg = string.lower(msg)

    if focus == cid then
        talk_start = os.clock()
    end

    if msgcontains(msg, 'hi') and focus == 0 and getDistanceToCreature(cid) <= 4 then
        focus = cid
        talk_start = os.clock()
        conv = 1
        selfSay("Olhe so "..getCreatureName(cid)..", mais um viajante fracassado,voce veio aqui por vontade propria,mais para sair sera obrigado a seguir minhas regras,diga {duel} para acabarmos logo com isso")
    return true
    end

    if isDuelMsg(msg) and conv == 1 and focus == cid then

        --if getPlayerItemCount(cid, gymbadges[getCreatureName(getThis())]) >= 1 then
        --    selfSay("You have already won my Marsh Badge, maybe some other day we can fight.")
        --    focus = 0
        --return true
        --end

        if not hasPokemon(cid) then
            selfSay("Solte seu pokemon para comecarmos a batalha.")
        return true
        end

        selfSay("You are challenging me to a battle. It will be a "..#pokemons.." pokemon limit battle, let's start?")
        conv = 2

    return true
    end

    if isConfirmMsg(msg) and conv == 2 and focus == cid then

        challenger = focus
        setPlayerStorageValue(cid, 990, 1)
        selfSay("Yea, let's fight!")
        talk_start = os.clock()
        addEvent(doSummonGymPokemon, 850, getThis())
        conv = 3

    return true
    end

    if isNegMsg(msg) and conv == 2 and focus == cid then

        focus = 0
        selfSay("Era melhor sevoce tivesse ficado fora do meu caminho!")

    return true
    end

    if msgcontains(msg, 'bye') and focus == cid then
        selfSay('Bye and do your best trainer!')
        setPlayerStorageValue(focus, 990, -1)
        focus = 0
    return true
    end
end

local afk_warning = false

function onThink()

    --doSendAnimatedText(getThingPos(getThis()), getCreatureName(getThis()), 215)

    if focus == 0 then
        selfTurn(2)
        fighting = false
        challenger = 0
        challenger_turn = 0
        battle_turn = 1
        afk_time = 0
        afk_warning = false

        if #getCreatureSummons(getThis()) >= 1 then
            setPlayerStorageValue(getCreatureSummons(getThis())[1], 1006, 0)
            doCreatureAddHealth(getCreatureSummons(getThis())[1], -getCreatureMaxHealth(getCreatureSummons(getThis())[1]))
        end

    return true
    else

    if not isCreature(focus) then
        focus = 0
    return true
    end

    if fighting then

        talk_start = os.clock()

        if not isCreature(getCreatureTarget(getThis())) then
            if #getCreatureSummons(challenger) >= 1 then
                if getCreatureOutfit(getCreatureSummons(challenger)[1]).lookType ~= 2 then --alterado v1.6
                 selfAttackCreature(getCreatureSummons(challenger)[1])
                 challenger_turn = challenger_turn + 1
                 afk_time = 0
     end
            else
                afk_time = afk_time + 0.5
            end
        end

        if afk_time > afk_limit_time then
            setPlayerStorageValue(focus, 990, -1)
            focus = 0
            selfSay("Fraco!Ja esperava isso de viajantes desse tipo!")
        return true
        end

        if not afk_warning and afk_time > afk_limit_time / 2 then
            selfSay("Where's your pokemon? Let's fight!")
            afk_warning = true
        end


        if #getCreatureSummons(getThis()) == 0 then
            if battle_turn > #pokemons then
                addEvent(doWinDuel, 1000, focus, getThis())
                setPlayerStorageValue(focus, 990, -1)
                focus = 0
            return true
            end
            addEvent(doSummonGymPokemon, 1000, getThis())
        end

        if not hasPokemon(challenger) or challenger_turn >= 7 or challenger_turn > #pokemons then
            selfSay("You lost our duel! Maybe some other time you'll defeat me.")
            setPlayerStorageValue(focus, 990, -1)
            focus = 0
        return true
        end

    end

        local npcpos = getThingPos(getThis())
        local focpos = getThingPos(focus)

        if npcpos.z ~= focpos.z then
            setPlayerStorageValue(focus, 990, -1)
            focus = 0
            selfSay("Bye then.")
        return true
        end

        if (os.clock() - talk_start) > 30 then
            selfSay("Good bye and keep training!")
            setPlayerStorageValue(focus, 990, -1)
            focus = 0
        end

        if getDistanceToCreature(focus) > max_distance then
            setPlayerStorageValue(focus, 990, -1)
            focus = 0
        return true
        end

        local dir = doRedirectDirection(getDirectionTo(npcpos, focpos))    
        selfTurn(dir)
    end
return true
end 

Obrigado!

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

Sobre o item está configurado para ganhar um item já local prize_id = 1234 -- id do item que vai ganhar

E sobre duelar uma vez vc quer que o player depois que ganhou o prêmio ele não possa duelar mais?

Link para o comentário
Compartilhar em outros sites

tente assim:

 

 

 

local prize_id = 1234 -- id do item que vai ganhar
local focus = 0
local max_distance = 8
local talk_start = 0
local conv = 0
local fighting = false
local challenger = 0
local afk_limit_time = 30 -- seconds
local afk_time = 0 -- don't change
local battle_turn = 1 -- don't change
local challenger_turn = 0 -- don't change
local pokemons = {
{name = "Clone Blastoise", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Clone Charizard", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Clone Gengar", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Clone Venusaur", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "super"},
}
local function doSummonGymPokemon(npc)
local this = npc
if #getCreatureSummons(this) >= 1 or focus == 0 then return true end
local it = pokemons[battle_turn]
doSummonMonster(this, it.name)
local summon = getCreatureSummons(this)[1]
local balleffect = pokeballs["normal"].effect
if it.ball and pokeballs[it.ball] then
balleffect = pokeballs[it.ball].effect
end
doSendMagicEffect(getThingPos(summon), balleffect)
setPlayerStorageValue(summon, 10000, balleffect)
setPlayerStorageValue(summon, 10001, gobackmsgs[math.random(#gobackmsgs)].back:gsub("doka", it.nick ~= "" and it.nick or it.name))
setPlayerStorageValue(summon, 1007, it.nick ~= "" and it.nick or it.name)
doSetMonsterGym(summon, focus)
addEvent(adjustWildPoke, 15, summon, it.optionalLevel)
local name = it.nick ~= "" and it.nick or getCreatureName(this).."s "..it.name
doCreatureSay(this, gobackmsgs[math.random(#gobackmsgs)].go:gsub("doka", getPlayerStorageValue(summon, 1007)), 1)
fighting = true
battle_turn = battle_turn + 1
end
local function doWinDuel(cid, npc)
if not isCreature(cid) then return true end
doPlayerAddItem(cid, prize_id, 1)
doCreatureSay(npc, "You won the duel! Congratulations, take this "..getItemNameById(prize_id).." as a prize.", 1)
end
function onCreatureSay(cid, type, msg)
local msg = string.lower(msg)
if focus == cid then
talk_start = os.clock()
end
if msgcontains(msg, 'hi') and focus == 0 and getDistanceToCreature(cid) <= 4 then
focus = cid
talk_start = os.clock()
conv = 1
selfSay("Olhe so "..getCreatureName(cid)..", mais um viajante fracassado,voce veio aqui por vontade propria,mais para sair sera obrigado a seguir minhas regras,diga {duel} para acabarmos logo com isso")
return true
end
if isDuelMsg(msg) and conv == 1 and focus == cid then
--if getPlayerItemCount(cid, gymbadges[getCreatureName(getThis())]) >= 1 then
--selfSay("You have already won my Marsh Badge, maybe some other day we can fight.")
--focus = 0
--return true
--end
if not hasPokemon(cid) then
selfSay("Solte seu pokemon para comecarmos a batalha.")
return true
end
selfSay("You are challenging me to a battle. It will be a "..#pokemons.." pokemon limit battle, let's start?")
conv = 2
return true
end
if isConfirmMsg(msg) and conv == 2 and focus == cid then
challenger = focus
setPlayerStorageValue(cid, 990, 1)
selfSay("Yea, let's fight!")
talk_start = os.clock()
addEvent(doSummonGymPokemon, 850, getThis())
conv = 3
return true
end
if isNegMsg(msg) and conv == 2 and focus == cid then
focus = 0
selfSay("Era melhor sevoce tivesse ficado fora do meu caminho!")
return true
end
if msgcontains(msg, 'bye') and focus == cid then
selfSay('Bye and do your best trainer!')
setPlayerStorageValue(focus, 990, -1)
focus = 0
return true
end
end
local afk_warning = false
function onThink()
--doSendAnimatedText(getThingPos(getThis()), getCreatureName(getThis()), 215)
if focus == 0 then
selfTurn(1)
fighting = false
challenger = 0
challenger_turn = 0
battle_turn = 1
afk_time = 0
afk_warning = false
if #getCreatureSummons(getThis()) >= 1 then
setPlayerStorageValue(getCreatureSummons(getThis())[1], 1006, 0)
doCreatureAddHealth(getCreatureSummons(getThis())[1], -getCreatureMaxHealth(getCreatureSummons(getThis())[1]))
end
return true
else
if not isCreature(focus) then
focus = 0
return true
end
if fighting then
talk_start = os.clock()
if not isCreature(getCreatureTarget(getThis())) then
if #getCreatureSummons(challenger) >= 1 then
if getCreatureOutfit(getCreatureSummons(challenger)[1]).lookType ~= 2 then --alterado v1.6
selfAttackCreature(getCreatureSummons(challenger)[1])
challenger_turn = challenger_turn + 1
afk_time = 0
end
else
afk_time = afk_time + 0.5
end
end
if afk_time > afk_limit_time then
setPlayerStorageValue(focus, 990, -1)
focus = 0
selfSay("Fraco!Ja esperava isso de viajantes desse tipo!")
return true
end
if not afk_warning and afk_time > afk_limit_time / 2 then
selfSay("Where's your pokemon? Let's fight!")
afk_warning = true
end
if #getCreatureSummons(getThis()) == 0 then
if battle_turn > #pokemons then
addEvent(doWinDuel, 1000, focus, getThis())
setPlayerStorageValue(focus, 990, -1)
focus = 0
return true
end
addEvent(doSummonGymPokemon, 1000, getThis())
end
if not hasPokemon(challenger) or challenger_turn >= 7 or challenger_turn > #pokemons then
selfSay("You lost our duel! Maybe some other time you'll defeat me.")
setPlayerStorageValue(focus, 990, -1)
focus = 0
return true
end
end
local npcpos = getThingPos(getThis())
local focpos = getThingPos(focus)
if npcpos.z ~= focpos.z then
setPlayerStorageValue(focus, 990, -1)
focus = 0
selfSay("Bye then.")
return true
end
if (os.clock() - talk_start) > 30 then
selfSay("Good bye and keep training!")
setPlayerStorageValue(focus, 990, -1)
focus = 0
end
if getDistanceToCreature(focus) > max_distance then
setPlayerStorageValue(focus, 990, -1)
focus = 0
return true
end
local dir = doRedirectDirection(getDirectionTo(npcpos, focpos))
selfTurn(dir)
end
return true
end

Link para o comentário
Compartilhar em outros sites

Obrigado, mas obtive o mesmo erro, attempt to call global getthis.

Acho que seria mais interessante alterar um npc de GYM para que ele funcione normalmente.. bastaria tirar o teleport dele, e configurar os pokemons.. já tentei fazer.. mas parece que os npcs de gym procuram outros arquivos de script além do .lua deles.. então não consegui;

Segue abaixo um modelo de GYM que funciona no server:

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)






function onCreatureAppear(cid)




npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) 


npcHandler:onCreatureDisappear(cid) 
end
function onCreatureSay(cid, type, msg)  npcHandler:onCreatureSay(cid, type, msg) end
function onThink() 


npcHandler:onThink() 


end
 local talkState = {}
local focus = 0
function creatureSayCallback(cid, type, msg)


local testar = getNpcCid()
if getPlayerStorageValue(testar, 5000) == 1 then


return false


end




if not npcHandler:isFocused(cid) then


return false




elseif msgcontains(msg, 'duel') or msgcontains(msg, 'battle') or msgcontains(msg, 'yes')  then


if getPlayerStorageValue(cid, 9355) == 1 then
selfSay('Hey Man you Defeated me, dont come Back here')
npcHandler:releaseFocus(cid) 
return false
end


local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
talkState[talkUser] = 1 
  if #getCreatureSummons(cid) >= 1 then
local pos = getNpcPos()
pos.stackpos = 0


pos.z = 7
pos.x = 1092
pos.y = 897
local posplayer = getNpcPos()
posplayer.stackpos = 0
posplayer.z = 7
posplayer.x = 1095
posplayer.y = 897
if getPlayerGroupId(cid) <= 9 then
setPlayerGroupId(cid, 7)
end
setPlayerStorageValue(cid, 4982, 1093)
setPlayerStorageValue(cid, 4983, 906)
setPlayerStorageValue(cid, 4984, 7)
setPlayerStorageValue(cid, 19987,1)


local rand = ginasio["Misty"]["poke"]
local randomico = math.random(1,rand.poke)
local monster = ginasio["Misty"][randomico]


gopoke = monster.poke






--doTeleportThing(k, pos)
doTeleportThing(getCreatureSummons(cid)[1], posplayer)
doTeleportThing(testar, pos)
doTeleportThing(cid, posplayer)


local k = doCreateMonster(gopoke, getNpcPos())
local vids = (getCreatureHealth(k) - 2)
doCreatureAddHealth(k, -vids)
setCreatureMaxHealth(k, monster.Health)
doCreatureAddHealth(k, monster.Health)
doMonsterSetTarget(k, getCreatureSummons(cid)[1])
--registerCreatureEvent(k, "Gambiarra")
setPlayerStorageValue(cid, 9999, testar)
setPlayerStorageValue(cid, 8888, 1)
setPlayerStorageValue(cid, 4578, 0)
setPlayerStorageValue(cid, 6569, k)
setPlayerStorageValue(cid, 6578, getNpcName())
setPlayerStorageValue(k, 4555, 1)
setPlayerStorageValue(k, 4559, monster.level)
setPlayerStorageValue(k, 4655, testar)
setPlayerStorageValue(k, 9548, cid)
setPlayerStorageValue(cid, 8333, 1)
registerCreatureEvent(k, "Summonkill")
registerCreatureEvent(k, "Summondeath")
registerCreatureEvent(k, "Summonthink")
setPlayerStorageValue(cid, 7787, 6) 
--setPlayerGroupId(cid, 1)






--doCreatureSetNoMove(cid, 1)
--registerCreatureEvent(k, "Gambiarra")


setPlayerStorageValue(testar, 5000, 1)
setPlayerStorageValue(testar, 4982, 1093)
setPlayerStorageValue(testar, 4983, 906)
setPlayerStorageValue(testar, 4984, 7)
--registerCreatureEvent(cid, "Gymkill")
npcHandler:releaseFocus(cid) 
else
selfSay('Please go you pokemon for battle') 


end




end
return true
end


npcHandler:setMessage(MESSAGE_GREET, "Hello |PLAYERNAME|, I just a pokemon trainer and I Leader Gym Cerulean,like to fight, go battle a me?")
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

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

se quiser adicionar mais premios, é só adicionar mais tags, exemplo:

[2] = {{itemid = 2393, count = 40}, {itemid = 2392, count = 30}},
[3] = {{itemid = 2393, count = 50}, {itemid = 2392, count = 40}},  
[4] = {{itemid = 2393, count = 60}, {itemid = 2392, count = 50}},
[5] = {{itemid = 2393, count = 70}, {itemid = 2392, count = 60}},
[6] = {{itemid = 2393, count = 80}, {itemid = 2392, count = 70}}}


OBS: no final da última tem q ter 3 chaves.

script:

 

 

 

local focus = 0
local max_distance = 8
local talk_start = 0
local conv = 0
local fighting = false
local challenger = 0
local afk_limit_time = 30 -- seconds
local afk_time = 0 -- don't change
local battle_turn = 1 -- don't change
local challenger_turn = 0 -- don't change
local masterpos = {}
local time_to_fight_again = 15 -- segundos
local can_walk = true -- verdadeiro pro npc andar
local max_distance = 5 -- maximo de sqm que vai andar
local walk_delay = 7 -- segundos pra fazer o npc andar
local cooldown_table = {}
local min_pokemons_to_battle = 1-- minimo de poke pra batalhar
local number_of_pokemons = 0 -- nao mude
local prizes = {
[1] = {{itemid = 2393, count = 30}, {itemid = 2392, count = 20}}} -- id do item que vai ganhar
local pokemons = {
{name = "Clone Blastoise", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Clone Charizard", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Clone Gengar", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "super"},
{name = "Clone Venusaur", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "super"},
}
local function doSummonGymPokemon(npc)
local this = npc
if not isCreature(this) then return true end
if #getCreatureSummons(this) >= 1 or focus == 0 then return true end
local it = pokemons[battle_turn]
doSummonMonster(this, it.name)
local summon = getCreatureSummons(this)[1]
local balleffect = pokeballs["normal"].effect
if it.ball and pokeballs[it.ball] then
balleffect = pokeballs[it.ball].effect
end
doSendMagicEffect(getThingPos(summon), balleffect)
setPlayerStorageValue(summon, 10000, balleffect)
setPlayerStorageValue(summon, 10001, gobackmsgs[math.random(#gobackmsgs)].back:gsub("doka", it.nick ~= "" and it.nick or it.name))
setPlayerStorageValue(summon, 1007, it.nick ~= "" and it.nick or it.name)
doSetMonsterGym(summon, focus)
local name = it.nick ~= "" and it.nick or getCreatureName(this).."s "..it.name
setWildPokemonLevel(summon, it.level, getPokemonStatus(it.name, (it.extralevel + it.level)), name, 1.5)
doCreatureSay(this, gobackmsgs[math.random(#gobackmsgs)].go:gsub("doka", getPlayerStorageValue(summon, 1007)), 1)
fighting = true
battle_turn = battle_turn + 1
end
local function doWinDuel(cid, npc)
if not isCreature(cid) then return true end
local this = npc
local x = prizes[number_of_pokemons]
for n = 1, #x do
doPlayerAddItem(cid, x[n].itemid, x[n].count)
end
doCreatureSay(npc, "Congratulations! You won, here is your prize.", 1)
setPlayerStorageValue(cid, 918271, 1)
cooldown_table[getCreatureName(cid)] = os.clock() + time_to_fight_again
return true
end
function onCreatureSay(cid, type, msg)
local msg = string.lower(msg)
if focus == cid then
talk_start = os.clock()
end
if msgcontains(msg, 'hi') and focus == 0 and getDistanceToCreature(cid) <= 4 then
if cooldown_table[getCreatureName(cid)] and cooldown_table[getCreatureName(cid)] - os.clock() > 0 then
selfSay("Hello "..getCreatureName(cid)..", I really enjoyed our last battle!")
conv = 10
else
selfSay("Hello "..getCreatureName(cid)..", are you up to a duel? I can give prizes if you win!")
conv = 1
end
focus = cid
talk_start = os.clock()
return true
end
if (isDuelMsg(msg) or isConfirmMsg(msg)) and (conv == 1 or conv == 10) and focus == cid then
if conv == 10 then
selfSay("We have just battled! Please wait for me to recover from out last battle!")
focus = 0
return true
end
if not hasPokemon(cid) then
selfSay("You need pokemons to battle!")
return true
end
if getPlayerStorageValue(cid, 918271) > -1 then
selfSay("Sorry, you already won a battle against me.")
focus = 0
return true
end
selfSay("Ok, tell me how many pokemons will fight.")
conv = 2
return true
end
if conv == 2 and focus == cid then
if not tonumber(msg) then
selfSay("Tell me the number of pokemons that will battle.")
return true
elseif tonumber(msg) > #pokemons then
selfSay("I have only "..#pokemons..", so the maximum is "..#pokemons.."!")
return true
elseif tonumber(msg) < min_pokemons_to_battle or tonumber(msg) < 1 then
selfSay("It has to be more than "..min_pokemons_to_battle..".")
return true
else
number_of_pokemons = tonumber(msg)
selfSay("Ok, the first that defeats "..number_of_pokemons.." wins, let's start!")
challenger = focus
setPlayerStorageValue(cid, 990, 1)
addEvent(doSummonGymPokemon, 850, getThis())
conv = 3
return true
end
return true
end
if isNegMsg(msg) and conv == 1 and focus == cid then
focus = 0
selfSay("It is better for you to refuse a battle against me!")
return true
end
if msgcontains(msg, 'bye') and focus == cid then
selfSay('Bye and do your best trainer!')
setPlayerStorageValue(focus, 990, -1)
focus = 0
return true
end
end
local afk_warning = false
local change = false
local walkdelay = 0
function onThink()
if not masterpos.x then
masterpos = getThingPos(getThis())
end
if focus == 0 then
selfTurn(2)
fighting = false
challenger = 0
change = false
challenger_turn = 0
battle_turn = 1
afk_time = 0
afk_warning = false
if #getCreatureSummons(getThis()) >= 1 then
setPlayerStorageValue(getCreatureSummons(getThis())[1], 1006, 0)
doCreatureAddHealth(getCreatureSummons(getThis())[1], -getCreatureMaxHealth(getCreatureSummons(getThis())[1]))
end
walkdelay = walkdelay - 0.5
if walkdelay <= 0 then
walkdelay = walk_delay
local pos = getThingPos(getThis())
local npos = {}
for a = 0, 3 do
if getDistanceBetween(getPosByDir(pos, a), masterpos) <= max_distance and canWalkOnPos(getPosByDir(pos, a), true, false, true, true, false) then
table.insert(npos, getPosByDir(pos, a))
end
end
if npos and #npos > 0 then
doTeleportThing(getThis(), npos[math.random(#npos)])
end
end
return true
else
if not isCreature(focus) then
focus = 0
return true
end
if fighting then
talk_start = os.clock()
if not isCreature(getCreatureTarget(getThis())) then
if #getCreatureSummons(challenger) >= 1 then
if getCreatureOutfit(getCreatureSummons(challenger)[1]).lookType ~= 2 then --alterado v2.6
selfAttackCreature(getCreatureSummons(challenger)[1])
challenger_turn = challenger_turn + 1
afk_time = 0
end
else
afk_time = afk_time + 0.5
if change then
change = false
challenger_turn = challenger_turn + 1
end
end
end
if afk_time > afk_limit_time then
setPlayerStorageValue(focus, 990, -1)
focus = 0
selfSay("I have waited too long, come back when you are ready!")
return true
end
if not afk_warning and afk_time > afk_limit_time / 2 then
selfSay("Where's your pokemon? Let's fight!")
afk_warning = true
end
if #getCreatureSummons(getThis()) == 0 then
if battle_turn > number_of_pokemons then
addEvent(doWinDuel, 1000, focus, getThis())
setPlayerStorageValue(focus, 990, -1)
focus = 0
return true
end
addEvent(doSummonGymPokemon, 1000, getThis())
end
if not hasPokemon(challenger) or challenger_turn > 6 or challenger_turn >= number_of_pokemons then
selfSay("You lost our duel! Maybe some other time you'll defeat me.")
setPlayerStorageValue(focus, 990, -1)
focus = 0
return true
end
end
local npcpos = getThingPos(getThis())
local focpos = getThingPos(focus)
if npcpos.z ~= focpos.z then
setPlayerStorageValue(focus, 990, -1)
focus = 0
selfSay("Bye then.")
return true
end
if (os.clock() - talk_start) > 30 then
selfSay("Good bye and keep training!")
setPlayerStorageValue(focus, 990, -1)
focus = 0
end
if getDistanceToCreature(focus) > max_distance then
setPlayerStorageValue(focus, 990, -1)
focus = 0
return true
end
local dir = doRedirectDirection(getDirectionTo(npcpos, focpos))
selfTurn(dir)
end
return true
end

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

cara.. to falando.. qualquer coisa que mexe buga. vc pode até pegar um texto por exemplo:

 

 

Teste

 

alterar pra

 

Test

 

e voltar pra Teste, se você salvar.. mesmo que IGUAL, buga o server, e vc tem que pegar um backup pra voltar ao normal..

eu entendo o basico de script.. nao ia cometer essa cagada de errar um caracter..ou dar um espaço a mais neste caso.. eu testei muitas vezes.. a pasta LIB do KPDO é horrivel, apenas alguns arquivos podem editar. KPDO é uma merda pra editar isso.

 

o grande problema é justamente que o arquivo de ginásio tbm não aceita mudança

 

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

  • 2 years later...
A questão neste tópico de suporte foi encerrada por falta de respostas. Este tópico está fechado e foi movido para Suporte - Tópicos Sem Resposta.

+ Caso a dúvida não tenha sido resolvida você poderá criar outro tópico solicitando ajuda.
* Lembre-se que é permitido dar UP no tópico a cada 24 horas para assim o destacar e manter movimentado.
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...