Ir para conteúdo
  • 0

NPC Gym não inicia luta


kaleudd

Pergunta

estou com problemas se alguém puder ajudar,fico grato.

 

O problema é que o npc não inicia o duelo,e ele solta a seguinte frase: To battle agains't a gym leader you need pokemons.

 

segue a conversa:

 

Player:Hi

Npc:Admin, my name is Sabrina and I'm Saffron's Gym Leader. How may I help you?

Player:duel

Npc:To battle agains't a gym leader you need pokemons.

e não inicia nada,ele so diz isto direto  To battle agains't a gym leader you need pokemons.

 

meu npc:

 

local focus = 0local max_distance = 8local talk_start = 0local conv = 0local fighting = falselocal challenger = 0local afk_limit_time = 30	-- secondslocal afk_time = 0		-- don't changelocal battle_turn = 1		-- don't changelocal challenger_turn = 0	-- don't changelocal pokemons = {{name = "Rhydon", level = 1, extralevel = 60, sex = SEX_MALE, nick = "", ball = "normal"},{name = "Regirock", level = 1, extralevel = 60, sex = SEX_MALE, nick = "", ball = "normal"},{name = "Shiny Regirock", level = 1, extralevel = 60, sex = SEX_MALE, nick = "", ball = "normal"},{name = "Tyranitar", level = 1, extralevel = 60, sex = SEX_MALE, nick = "", ball = "normal"},{name = "Steelix", level = 1, extralevel = 60, sex = SEX_MALE, nick = "", ball = "normal"},{name = "Mega Aggron", level = 1, extralevel = 60, sex = SEX_MALE, nick = "", ball = "normal"},}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 + 1endlocal function doWinDuel(cid, npc)	if not isCreature(cid) then return true end	local this = npc	local a = gymbadges[getCreatureName(this)] + 8	doCreatureSay(npc, "You won the duel! Congratulations, take this "..getItemNameById(a - 8).." as a prize.", 1)	local b = getPlayerItemById(cid, true, a)	if b.uid > 0 then doTransformItem(b.uid, b.itemid - 8) endendfunction 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("Hello "..getCreatureName(cid)..", my name is Brock and I'm Pewter's Gym Leader. How may I help you?")	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 Boulder Badge, maybe some other day we can fight.")		--	focus = 0		--return true		--end		if not hasPokemon(cid) then			selfSay("To battle agains't a gym leader you need pokemons.")		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 = 6	return true	end	if isNegMsg(msg) and conv == 2 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	endendlocal afk_warning = falselocal change = falsefunction onThink()	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 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 > #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)	endreturn trueend

 

<?xml version="1.0" encoding="UTF-8"?><npc name="Brock" script="brock.lua" walkinterval="350000" floorchange="0" speed="0" lookdir="2">	<health now="150" max="150"/>	<look type="529" head="91" body="114" legs="86" feet="0"/>	<parameters>	</parameters></npc>

 

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

qual sua base?

tenta:

Spoiler
local focus = 0local max_distance = 8local talk_start = 0local conv = 0local fighting = falselocal challenger = 0local afk_limit_time = 30	-- secondslocal afk_time = 0		-- don't changelocal battle_turn = 1		-- don't changelocal challenger_turn = 0	-- don't changelocal pokemons = {{name = "Rhydon", level = 1, extralevel = 60, sex = SEX_MALE, nick = "", ball = "normal"},{name = "Regirock", level = 1, extralevel = 60, sex = SEX_MALE, nick = "", ball = "normal"},{name = "Shiny Regirock", level = 1, extralevel = 60, sex = SEX_MALE, nick = "", ball = "normal"},{name = "Tyranitar", level = 1, extralevel = 60, sex = SEX_MALE, nick = "", ball = "normal"},{name = "Steelix", level = 1, extralevel = 60, sex = SEX_MALE, nick = "", ball = "normal"},{name = "Mega Aggron", level = 1, extralevel = 60, sex = SEX_MALE, nick = "", ball = "normal"},}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 + 1endlocal function doWinDuel(cid, npc)	if not isCreature(cid) then return true end	local this = npc	local a = gymbadges[getCreatureName(this)] + 8	doCreatureSay(npc, "You won the duel! Congratulations, take this "..getItemNameById(a - 8).." as a prize.", 1)	local b = getPlayerItemById(cid, true, a)	if b.uid > 0 then doTransformItem(b.uid, b.itemid - 8) endendfunction 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("Hello "..getCreatureName(cid)..", my name is Brock and I'm Pewter's Gym Leader. How may I help you?")	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 Boulder Badge, maybe some other day we can fight.")		--	focus = 0		--return true		--end	--	if not hasPokemon(cid) then	--		selfSay("To battle agains't a gym leader you need pokemons.")	--	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 = 6	return true	end	if isNegMsg(msg) and conv == 2 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	endendlocal afk_warning = falselocal change = falsefunction onThink()	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 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 > #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)	endreturn trueend

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

@Deadpool a base é a dash v9, deu quase certo,agora ele disse a frase: 11:21 Brock: You are challenging me to a battle. It will be a 6 pokemon limit battle, let's start?

 

porém apos isso deu esse erro na distro e ele não chamo nenhum pokémon

 

[21/01/2017 11:21:16] [Error - Npc interface]
[21/01/2017 11:21:16] In a timer event called from:
[21/01/2017 11:21:16] data/npc/scripts/brock.lua:onCreatureSay
[21/01/2017 11:21:16] Description:
[21/01/2017 11:21:16] data/npc/scripts/brock.lua:37: attempt to call global 'doSetMonsterGym' (a nil value)
[21/01/2017 11:21:16] stack traceback:
[21/01/2017 11:21:16]     data/npc/scripts/brock.lua:37: in function <data/npc/scripts/brock.lua:22>

 

 

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

  • 0

Qual a base amigo? 

 

Teste esse ai:

 

 

 

local focus = 0local max_distance = 8local talk_start = 0local conv = 0local fighting = falselocal challenger = 0local afk_limit_time = 30    -- secondslocal afk_time = 0        -- don't changelocal battle_turn = 1        -- don't changelocal challenger_turn = 0    -- don't changelocal pokemons = {{name = "Geodude", optionalLevel = 50, sex = SEX_MALE, nick = "", ball = "normal"},{name = "Rhyhorn", optionalLevel = 80, sex = SEX_MALE, nick = "", ball = "normal"},   --alterado v1.3{name = "Graveler", optionalLevel = 80, sex = SEX_MALE, nick = "", ball = "normal"},{name = "Onix", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "normal"},{name = "Golem", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "normal"},{name = "Shiny Golem", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "normal"},}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)    addEvent(adjustWildPoke, 15, summon, it.optionalLevel)    local name = it.nick ~= "" and it.nick or getCreatureName(this).."s "..it.name    --alterado v1.3    doCreatureSay(this, gobackmsgs[math.random(#gobackmsgs)].go:gsub("doka", getPlayerStorageValue(summon, 1007)), 1)    fighting = true    battle_turn = battle_turn + 1endlocal function doWinDuel(cid, npc)    if not isCreature(cid) then return true end    local this = npc    local a = gymbadges[getCreatureName(this)] + 8    doCreatureSay(npc, "You won the duel! Congratulations, take this "..getItemNameById(a - 8).." as a prize.", 1)    local b = getPlayerItemById(cid, true, a)    if b.uid > 0 then doTransformItem(b.uid, b.itemid -  end        doPlayerSendCancel(cid, "#getBadges# "..getCreatureName(this).." "..getPlayerItemCount(cid, gymbadges[getCreatureName(this)]))endfunction 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("Hello "..getCreatureName(cid)..", my name is Brock and I'm Pewter's Gym Leader. How may I help you?")    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 Boulder Badge, maybe some other day we can fight.")        --    focus = 0        --return true        --end        if not hasPokemon(cid) then            selfSay("To battle agains't a gym leader you need pokemons.")        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("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    endendlocal afk_warning = falselocal change = falsefunction onThink()    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                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 > #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)    endreturn trueend

 

 

Link para o comentário
Compartilhar em outros sites

  • 0
Agora, Nooob II disse:

Qual a base amigo? 

 

Teste esse ai:

 

 

  Ocultar conteúdo

 

local focus = 0local max_distance = 8local talk_start = 0local conv = 0local fighting = falselocal challenger = 0local afk_limit_time = 30    -- secondslocal afk_time = 0        -- don't changelocal battle_turn = 1        -- don't changelocal challenger_turn = 0    -- don't changelocal pokemons = {{name = "Geodude", optionalLevel = 50, sex = SEX_MALE, nick = "", ball = "normal"},{name = "Rhyhorn", optionalLevel = 80, sex = SEX_MALE, nick = "", ball = "normal"},   --alterado v1.3{name = "Graveler", optionalLevel = 80, sex = SEX_MALE, nick = "", ball = "normal"},{name = "Onix", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "normal"},{name = "Golem", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "normal"},{name = "Shiny Golem", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "normal"},}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)    addEvent(adjustWildPoke, 15, summon, it.optionalLevel)    local name = it.nick ~= "" and it.nick or getCreatureName(this).."s "..it.name    --alterado v1.3    doCreatureSay(this, gobackmsgs[math.random(#gobackmsgs)].go:gsub("doka", getPlayerStorageValue(summon, 1007)), 1)    fighting = true    battle_turn = battle_turn + 1endlocal function doWinDuel(cid, npc)    if not isCreature(cid) then return true end    local this = npc    local a = gymbadges[getCreatureName(this)] + 8    doCreatureSay(npc, "You won the duel! Congratulations, take this "..getItemNameById(a - 8).." as a prize.", 1)    local b = getPlayerItemById(cid, true, a)    if b.uid > 0 then doTransformItem(b.uid, b.itemid -  end        doPlayerSendCancel(cid, "#getBadges# "..getCreatureName(this).." "..getPlayerItemCount(cid, gymbadges[getCreatureName(this)]))endfunction 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("Hello "..getCreatureName(cid)..", my name is Brock and I'm Pewter's Gym Leader. How may I help you?")    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 Boulder Badge, maybe some other day we can fight.")        --    focus = 0        --return true        --end        if not hasPokemon(cid) then            selfSay("To battle agains't a gym leader you need pokemons.")        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("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    endendlocal afk_warning = falselocal change = falsefunction onThink()    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                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 > #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)    endreturn trueend

 

 

isse ai é npc de pda ^^

Link para o comentário
Compartilhar em outros sites

  • 0

Testado e aqui está funcionando ^^ 

 

 

 

local focus = 0local max_distance = 4local talk_start = 0local conv = 0local fighting = falselocal challenger = 0local pokeNpc = nillocal pokeChalenger = nillocal afk_limit_time = 15    -- secondslocal afk_time = 0        -- don't changelocal battle_turn = 0        -- don't changelocal challenger_turn = 0    -- don't changelocal pokemons = {    {name = "Rhydon", optionalLevel = 400, sex = SEX_MALE, nick = "", ball = "poke"},    {name = "Regirock", optionalLevel = 300, sex = SEX_MALE, nick = "", ball = "poke"},     {name = "Shiny Regirock", optionalLevel = 400, sex = SEX_MALE, nick = "", ball = "poke"},    {name = "Tyranitar", optionalLevel = 300, sex = SEX_MALE, nick = "", ball = "poke"},    {name = "Steelix", optionalLevel = 300, sex = SEX_MALE, nick = "", ball = "poke"},    {name = "Mega Aggron", optionalLevel = 300, sex = SEX_MALE, nick = "", ball = "poke"},}local function doSummonGymPokemon(npc)    battle_turn = battle_turn + 1    local this = npc    if #getCreatureSummons(this) >= 1 or focus == 0 then return true end    local it = pokemons[battle_turn]    pokeNpc = doSummonCreature(it.name, getThingPos(this))    local summon = getCreatureSummons(this)[1]    local balleffect = pokeballs["poke"].effect    if it.ball and pokeballs[it.ball] then        balleffect = pokeballs[it.ball].effect    end    doSendMagicEffect(getThingPos(pokeNpc), balleffect)        setPlayerStorageValue(pokeNpc, 990, this)    setPlayerStorageValue(pokeNpc, 991, "battle")    setPlayerStorageValue(pokeNpc, 8595, 1)    registerCreatureEvent(pokeNpc, "Gym1")    registerCreatureEvent(pokeNpc, "Gym2")    registerCreatureEvent(pokeNpc, "Gym3")    registerCreatureEvent(pokeNpc, "Gym4")    setPlayerStorageValue(this, 990, 1)    setPlayerStorageValue(this, 995, 1)    mgo = gobackmsgs[math.random(1, #gobackmsgs)].go:gsub("doka", it.name)    doCreatureSay(this, mgo, 1)    fighting = trueendlocal function doWinDuel(cid, npc)    if not isCreature(cid) then return true end    local this = npc    local a = gymbadges[getCreatureName(this)].off    local c = gymbadges[getCreatureName(this)].on    doCreatureSay(npc, "You won the duel! Congratulations, take this "..getItemNameById©.." as a prize.", 1)    local b = getPlayerItemById(cid, true, a)    if b.uid > 0 then doTransformItem(b.uid, c) end    setPlayerStorageValue(cid, 992, 1)endfunction 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("Hello "..getCreatureName(cid)..", my name is Misty and I'm Cerulean's Gym Leader. How may I help you?")        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 Cascade Badge, maybe some other day we can fight.")        --    focus = 0        --return true        --end                -- if not hasPokemon(cid) then        -- selfSay("To battle agains't a gym leader you need pokemons.")        -- return true        -- end        if getPlayerStorageValue(cid, 992) == 1 then            focus = 0            selfSay("already battled with you , find another leader of gym!")            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)        if #getCreatureSummons(cid) >= 1 then            local pk = getCreatureSummons(cid)[1]            setPlayerStorageValue(pk, 990, 1)        end        selfSay("Yea, let's fight!")        talk_start = os.clock()        setPlayerStorageValue(getThis(), 990, 1)        addEvent(doSummonGymPokemon, 5, getThis())        conv = 3        return true    end        if isNegMsg(msg) and conv == 2 and focus == cid then        focus = 0        selfSay("It is better for you to refuse a battle against me!")        return true    end        local function doRemove(npc)        local it = pokemons[battle_turn]        local balleffect = pokeballs["normal"].effect        if it.ball and pokeballs[it.ball] then            balleffect = pokeballs[it.ball].effect        end        doSendMagicEffect(getThingPos(pokeNpc), balleffect)        doRemoveCreature(pokeNpc)    end        if msgcontains(msg, 'bye') and focus == cid then        selfSay('Bye and do your best trainer!')            setPlayerStorageValue(focus, 990, -1)            if #getCreatureSummons(cid) >= 1 then                local pk = getCreatureSummons(cid)[1]                setPlayerStorageValue(pk, 990, -1)            end            if getPlayerStorageValue(getThis(), 995) >= 1 then                setPlayerStorageValue(getThis(), 995, -1)                addEvent(doRemove, 50, this)            end            focus = 0            return true        end    end        local afk_warning = false        function checkPoke(player, poke)            end        function onThink()                local function doRemove(npc)            local it = pokemons[battle_turn]            local balleffect = pokeballs["normal"].effect            if it.ball and pokeballs[it.ball] then                balleffect = pokeballs[it.ball].effect            end            doSendMagicEffect(getThingPos(pokeNpc), balleffect)            doRemoveCreature(pokeNpc)        end                if focus == 0 then            selfTurn(2)            fighting = false            challenger = 0            challenger_turn = 0            battle_turn = 0            afk_time = 0            afk_warning = false            setPlayerStorageValue(getThis(), 990, -1)            return true        else            if not isCreature(focus) then                focus = 0                return true            end            if fighting then                talk_start = os.clock()                                if #getCreatureSummons(challenger) >= 1 then                    if pokeChalenger == nil then                        pokeChalenger = getCreatureName(getCreatureSummons(challenger)[1])                        afk_time = 0                        challenger_turn = challenger_turn + 1                    elseif pokeChalenger == getCreatureName(getCreatureSummons(challenger)[1]) then                        afk_time = 0                    else                        afk_time = 0                        challenger_turn = challenger_turn + 1                        pokeChalenger = getCreatureName(getCreatureSummons(challenger)[1])                    end                else                    afk_time = afk_time + 0.5                end                                if afk_time > afk_limit_time then                    if getPlayerStorageValue(getThis(), 995) >= 1 then                        addEvent(doRemove, 50, this)                    end                    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 getPlayerStorageValue(getThis(), 990) == 0 then                    if battle_turn >= #pokemons then                        addEvent(doWinDuel, 1000, focus, getThis())                        setPlayerStorageValue(focus, 990, -1)                        focus = 0                        return true                    end                    setPlayerStorageValue(getThis(), 990, 1)                    addEvent(doSummonGymPokemon, 1000, getThis())                end                                if 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)                    if #getCreatureSummons(getThis()) >= 1 then                        addEvent(doRemove, 50, this)                    end                    focus = 0                    return true                end            end                        local npcpos = getThingPos(getThis())            local focpos = getThingPos(focus)                        if npcpos.z ~= focpos.z then                setPlayerStorageValue(focus, 990, -1)                if #getCreatureSummons(getThis()) >= 1 then                    addEvent(doRemove, 50, this)                end                focus = 0                selfSay("Bye then.")                return true            end                        if (os.clock() - talk_start) > 15 then                selfSay("Good bye and keep training!")                setPlayerStorageValue(focus, 990, -1)                if #getCreatureSummons(getThis()) >= 1 then                    setPlayerStorageValue(getThis(), 995, -1)                    addEvent(doRemove, 50, this)                end                focus = 0            end                        if getDistanceToCreature(focus) > max_distance then                setPlayerStorageValue(focus, 990, -1)                selfSay("tchau gostoso!")                if #getCreatureSummons(focus) >= 1 then                    local pk = getCreatureSummons(focus)[1]                    setPlayerStorageValue(pk, 990, -1)                end                if getPlayerStorageValue(getThis(), 995) >= 1 then                    setPlayerStorageValue(getThis(), 995, -1)                    addEvent(doRemove, 50, this)                end                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

  • 0

surgiu um erro ele diz isto: 13:33 Brock: Eu Escolho você, Rhydon!

 

porém o rhydon não apareçe e segue o erro na distro: 

 

[21/01/2017 13:33:12] [Error - Npc interface]
[21/01/2017 13:33:12] In a timer event called from:
[21/01/2017 13:33:12] data/npc/scripts/brock.lua:onCreatureSay
[21/01/2017 13:33:12] Description:
[21/01/2017 13:33:12] (luaRegisterCreatureEvent) Creature not found

 

Link para o comentário
Compartilhar em outros sites

  • 0

Baixei a base aqui e tá funcionando normal, ver ai: 

 

 
local focus = 0local max_distance = 4local talk_start = 0local conv = 0local fighting = falselocal challenger = 0local pokeNpc = nillocal pokeChalenger = nillocal afk_limit_time = 15 -- secondslocal afk_time = 0 -- don't changelocal battle_turn = 0 -- don't changelocal challenger_turn = 0 -- don't changelocal pokemons = {    {name = "Geodude", level = 1, extralevel = 107, sex = SEX_MALE, nick = "", ball = "normal"},    {name = "Rhyhorn", level = 1, extralevel = 110, sex = SEX_MALE, nick = "", ball = "normal"},    {name = "Graveler", level = 1, extralevel = 110, sex = SEX_MALE, nick = "", ball = "normal"},    {name = "Onix", level = 1, extralevel = 115, sex = SEX_MALE, nick = "", ball = "normal"},    {name = "Golem", level = 1, extralevel = 118, sex = SEX_MALE, nick = "", ball = "normal"},    {name = "Rhydon", level = 1, extralevel = 117, sex = SEX_MALE, nick = "", ball = "normal"},}local function doSummonGymPokemon(npc)    battle_turn = battle_turn + 1    local this = npc    if #getCreatureSummons(this) >= 1 or focus == 0 then return true end    local it = pokemons[battle_turn]    pokeNpc = doSummonCreature(it.name, getThingPos(this))    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(pokeNpc), balleffect)        setPlayerStorageValue(pokeNpc, 990, this)    setPlayerStorageValue(pokeNpc, 991, "battle")    setPlayerStorageValue(pokeNpc, 8595, 1)    registerCreatureEvent(pokeNpc, "Gym1")    registerCreatureEvent(pokeNpc, "Gym2")    registerCreatureEvent(pokeNpc, "Gym3")    registerCreatureEvent(pokeNpc, "Gym4")    setPlayerStorageValue(this, 990, 1)    setPlayerStorageValue(this, 995, 1)    setWildPokemonLevel(summon, it.level, getPokemonStatus(it.name, (it.extralevel + it.level)), name, 1.5)    mgo = gobackmsgs[math.random(1, #gobackmsgs)].go:gsub("doka", it.name)    doCreatureSay(this, mgo, 1)    fighting = trueendlocal function doWinDuel(cid, npc)    if not isCreature(cid) then return true end    local this = npc    local a = gymbadges[getCreatureName(this)].off    local c = gymbadges[getCreatureName(this)].on    doCreatureSay(npc, "You won the duel! Congratulations, take this "..getItemNameById©.." as a prize.", 1)    local b = getPlayerItemById(cid, true, a)    if b.uid > 0 then doTransformItem(b.uid, c) end    setPlayerStorageValue(cid, 992, 1)endfunction 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("Hello "..getCreatureName(cid)..", my name is Misty and I'm Cerulean's Gym Leader. How may I help you?")        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 Cascade Badge, maybe some other day we can fight.")        -- focus = 0        --return true        --end                -- if not hasPokemon(cid) then        -- selfSay("To battle agains't a gym leader you need pokemons.")        -- return true        -- end        if getPlayerStorageValue(cid, 992) == 1 then            focus = 0            selfSay("already battled with you , find another leader of gym!")            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)        if #getCreatureSummons(cid) >= 1 then            local pk = getCreatureSummons(cid)[1]            setPlayerStorageValue(pk, 990, 1)        end        selfSay("Yea, let's fight!")        talk_start = os.clock()        setPlayerStorageValue(getThis(), 990, 1)        addEvent(doSummonGymPokemon, 5, getThis())        conv = 3        return true    end        if isNegMsg(msg) and conv == 2 and focus == cid then        focus = 0        selfSay("It is better for you to refuse a battle against me!")        return true    end        local function doRemove(npc)        local it = pokemons[battle_turn]        local balleffect = pokeballs["normal"].effect        if it.ball and pokeballs[it.ball] then            balleffect = pokeballs[it.ball].effect        end        doSendMagicEffect(getThingPos(pokeNpc), balleffect)        doRemoveCreature(pokeNpc)    end        if msgcontains(msg, 'bye') and focus == cid then        selfSay('Bye and do your best trainer!')            setPlayerStorageValue(focus, 990, -1)            if #getCreatureSummons(cid) >= 1 then                local pk = getCreatureSummons(cid)[1]                setPlayerStorageValue(pk, 990, -1)            end            if getPlayerStorageValue(getThis(), 995) >= 1 then                setPlayerStorageValue(getThis(), 995, -1)                addEvent(doRemove, 50, this)            end            focus = 0            return true        end    end        local afk_warning = false        function checkPoke(player, poke)            end        function onThink()                local function doRemove(npc)            local it = pokemons[battle_turn]            local balleffect = pokeballs["normal"].effect            if it.ball and pokeballs[it.ball] then                balleffect = pokeballs[it.ball].effect            end            doSendMagicEffect(getThingPos(pokeNpc), balleffect)            doRemoveCreature(pokeNpc)        end                if focus == 0 then            selfTurn(2)            fighting = false            challenger = 0            challenger_turn = 0            battle_turn = 0            afk_time = 0            afk_warning = false            setPlayerStorageValue(getThis(), 990, -1)            return true        else            if not isCreature(focus) then                focus = 0                return true            end            if fighting then                talk_start = os.clock()                                if #getCreatureSummons(challenger) >= 1 then                    if pokeChalenger == nil then                        pokeChalenger = getCreatureName(getCreatureSummons(challenger)[1])                        afk_time = 0                        challenger_turn = challenger_turn + 1                    elseif pokeChalenger == getCreatureName(getCreatureSummons(challenger)[1]) then                        afk_time = 0                    else                        afk_time = 0                        challenger_turn = challenger_turn + 1                        pokeChalenger = getCreatureName(getCreatureSummons(challenger)[1])                    end                else                    afk_time = afk_time + 0.5                end                                if afk_time > afk_limit_time then                    if getPlayerStorageValue(getThis(), 995) >= 1 then                        addEvent(doRemove, 50, this)                    end                    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 getPlayerStorageValue(getThis(), 990) == 0 then                    if battle_turn >= #pokemons then                        addEvent(doWinDuel, 1000, focus, getThis())                        setPlayerStorageValue(focus, 990, -1)                        focus = 0                        return true                    end                    setPlayerStorageValue(getThis(), 990, 1)                    addEvent(doSummonGymPokemon, 1000, getThis())                end                                if 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)                    if #getCreatureSummons(getThis()) >= 1 then                        addEvent(doRemove, 50, this)                    end                    focus = 0                    return true                end            end                        local npcpos = getThingPos(getThis())            local focpos = getThingPos(focus)                        if npcpos.z ~= focpos.z then                setPlayerStorageValue(focus, 990, -1)                if #getCreatureSummons(getThis()) >= 1 then                    addEvent(doRemove, 50, this)                end                focus = 0                selfSay("Bye then.")                return true            end                        if (os.clock() - talk_start) > 15 then                selfSay("Good bye and keep training!")                setPlayerStorageValue(focus, 990, -1)                if #getCreatureSummons(getThis()) >= 1 then                    setPlayerStorageValue(getThis(), 995, -1)                    addEvent(doRemove, 50, this)                end                focus = 0            end                        if getDistanceToCreature(focus) > max_distance then                setPlayerStorageValue(focus, 990, -1)                selfSay("tchau gostoso!")                if #getCreatureSummons(focus) >= 1 then                    local pk = getCreatureSummons(focus)[1]                    setPlayerStorageValue(pk, 990, -1)                end                if getPlayerStorageValue(getThis(), 995) >= 1 then                    setPlayerStorageValue(getThis(), 995, -1)                    addEvent(doRemove, 50, this)                end                focus = 0                return true            end                        local dir = doRedirectDirection(getDirectionTo(npcpos, focpos))            selfTurn(dir)        end        return true    end

 

imagens para provar (sem nenhum erro na distro)

 

Screenshot_1.png


Screenshot_2.png


Screenshot_3.png

 

 

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

  • 0
33 minutos atrás, Nooob II disse:

Baixei a base aqui e tá funcionando normal, ver ai: 

 

  Ocultar conteúdo
local focus = 0local max_distance = 4local talk_start = 0local conv = 0local fighting = falselocal challenger = 0local pokeNpc = nillocal pokeChalenger = nillocal afk_limit_time = 15 -- secondslocal afk_time = 0 -- don't changelocal battle_turn = 0 -- don't changelocal challenger_turn = 0 -- don't changelocal pokemons = {    {name = "Geodude", level = 1, extralevel = 107, sex = SEX_MALE, nick = "", ball = "normal"},    {name = "Rhyhorn", level = 1, extralevel = 110, sex = SEX_MALE, nick = "", ball = "normal"},    {name = "Graveler", level = 1, extralevel = 110, sex = SEX_MALE, nick = "", ball = "normal"},    {name = "Onix", level = 1, extralevel = 115, sex = SEX_MALE, nick = "", ball = "normal"},    {name = "Golem", level = 1, extralevel = 118, sex = SEX_MALE, nick = "", ball = "normal"},    {name = "Rhydon", level = 1, extralevel = 117, sex = SEX_MALE, nick = "", ball = "normal"},}local function doSummonGymPokemon(npc)    battle_turn = battle_turn + 1    local this = npc    if #getCreatureSummons(this) >= 1 or focus == 0 then return true end    local it = pokemons[battle_turn]    pokeNpc = doSummonCreature(it.name, getThingPos(this))    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(pokeNpc), balleffect)        setPlayerStorageValue(pokeNpc, 990, this)    setPlayerStorageValue(pokeNpc, 991, "battle")    setPlayerStorageValue(pokeNpc, 8595, 1)    registerCreatureEvent(pokeNpc, "Gym1")    registerCreatureEvent(pokeNpc, "Gym2")    registerCreatureEvent(pokeNpc, "Gym3")    registerCreatureEvent(pokeNpc, "Gym4")    setPlayerStorageValue(this, 990, 1)    setPlayerStorageValue(this, 995, 1)    setWildPokemonLevel(summon, it.level, getPokemonStatus(it.name, (it.extralevel + it.level)), name, 1.5)    mgo = gobackmsgs[math.random(1, #gobackmsgs)].go:gsub("doka", it.name)    doCreatureSay(this, mgo, 1)    fighting = trueendlocal function doWinDuel(cid, npc)    if not isCreature(cid) then return true end    local this = npc    local a = gymbadges[getCreatureName(this)].off    local c = gymbadges[getCreatureName(this)].on    doCreatureSay(npc, "You won the duel! Congratulations, take this "..getItemNameById©.." as a prize.", 1)    local b = getPlayerItemById(cid, true, a)    if b.uid > 0 then doTransformItem(b.uid, c) end    setPlayerStorageValue(cid, 992, 1)endfunction 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("Hello "..getCreatureName(cid)..", my name is Misty and I'm Cerulean's Gym Leader. How may I help you?")        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 Cascade Badge, maybe some other day we can fight.")        -- focus = 0        --return true        --end                -- if not hasPokemon(cid) then        -- selfSay("To battle agains't a gym leader you need pokemons.")        -- return true        -- end        if getPlayerStorageValue(cid, 992) == 1 then            focus = 0            selfSay("already battled with you , find another leader of gym!")            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)        if #getCreatureSummons(cid) >= 1 then            local pk = getCreatureSummons(cid)[1]            setPlayerStorageValue(pk, 990, 1)        end        selfSay("Yea, let's fight!")        talk_start = os.clock()        setPlayerStorageValue(getThis(), 990, 1)        addEvent(doSummonGymPokemon, 5, getThis())        conv = 3        return true    end        if isNegMsg(msg) and conv == 2 and focus == cid then        focus = 0        selfSay("It is better for you to refuse a battle against me!")        return true    end        local function doRemove(npc)        local it = pokemons[battle_turn]        local balleffect = pokeballs["normal"].effect        if it.ball and pokeballs[it.ball] then            balleffect = pokeballs[it.ball].effect        end        doSendMagicEffect(getThingPos(pokeNpc), balleffect)        doRemoveCreature(pokeNpc)    end        if msgcontains(msg, 'bye') and focus == cid then        selfSay('Bye and do your best trainer!')            setPlayerStorageValue(focus, 990, -1)            if #getCreatureSummons(cid) >= 1 then                local pk = getCreatureSummons(cid)[1]                setPlayerStorageValue(pk, 990, -1)            end            if getPlayerStorageValue(getThis(), 995) >= 1 then                setPlayerStorageValue(getThis(), 995, -1)                addEvent(doRemove, 50, this)            end            focus = 0            return true        end    end        local afk_warning = false        function checkPoke(player, poke)            end        function onThink()                local function doRemove(npc)            local it = pokemons[battle_turn]            local balleffect = pokeballs["normal"].effect            if it.ball and pokeballs[it.ball] then                balleffect = pokeballs[it.ball].effect            end            doSendMagicEffect(getThingPos(pokeNpc), balleffect)            doRemoveCreature(pokeNpc)        end                if focus == 0 then            selfTurn(2)            fighting = false            challenger = 0            challenger_turn = 0            battle_turn = 0            afk_time = 0            afk_warning = false            setPlayerStorageValue(getThis(), 990, -1)            return true        else            if not isCreature(focus) then                focus = 0                return true            end            if fighting then                talk_start = os.clock()                                if #getCreatureSummons(challenger) >= 1 then                    if pokeChalenger == nil then                        pokeChalenger = getCreatureName(getCreatureSummons(challenger)[1])                        afk_time = 0                        challenger_turn = challenger_turn + 1                    elseif pokeChalenger == getCreatureName(getCreatureSummons(challenger)[1]) then                        afk_time = 0                    else                        afk_time = 0                        challenger_turn = challenger_turn + 1                        pokeChalenger = getCreatureName(getCreatureSummons(challenger)[1])                    end                else                    afk_time = afk_time + 0.5                end                                if afk_time > afk_limit_time then                    if getPlayerStorageValue(getThis(), 995) >= 1 then                        addEvent(doRemove, 50, this)                    end                    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 getPlayerStorageValue(getThis(), 990) == 0 then                    if battle_turn >= #pokemons then                        addEvent(doWinDuel, 1000, focus, getThis())                        setPlayerStorageValue(focus, 990, -1)                        focus = 0                        return true                    end                    setPlayerStorageValue(getThis(), 990, 1)                    addEvent(doSummonGymPokemon, 1000, getThis())                end                                if 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)                    if #getCreatureSummons(getThis()) >= 1 then                        addEvent(doRemove, 50, this)                    end                    focus = 0                    return true                end            end                        local npcpos = getThingPos(getThis())            local focpos = getThingPos(focus)                        if npcpos.z ~= focpos.z then                setPlayerStorageValue(focus, 990, -1)                if #getCreatureSummons(getThis()) >= 1 then                    addEvent(doRemove, 50, this)                end                focus = 0                selfSay("Bye then.")                return true            end                        if (os.clock() - talk_start) > 15 then                selfSay("Good bye and keep training!")                setPlayerStorageValue(focus, 990, -1)                if #getCreatureSummons(getThis()) >= 1 then                    setPlayerStorageValue(getThis(), 995, -1)                    addEvent(doRemove, 50, this)                end                focus = 0            end                        if getDistanceToCreature(focus) > max_distance then                setPlayerStorageValue(focus, 990, -1)                selfSay("tchau gostoso!")                if #getCreatureSummons(focus) >= 1 then                    local pk = getCreatureSummons(focus)[1]                    setPlayerStorageValue(pk, 990, -1)                end                if getPlayerStorageValue(getThis(), 995) >= 1 then                    setPlayerStorageValue(getThis(), 995, -1)                    addEvent(doRemove, 50, this)                end                focus = 0                return true            end                        local dir = doRedirectDirection(getDirectionTo(npcpos, focpos))            selfTurn(dir)        end        return true    end

 

imagens para provar (sem nenhum erro na distro)

 

Screenshot_1.png

 

Screenshot_2.png

 

Screenshot_3.png

 

 

opa agora deu quase boa,ele solto o pokémon normalmente,porém o corpse do pokémon do lider de ginasio fica no chao após derrota,e ele não chama o proximo pokémon,ele so chama o geodude

 

e deu esto erro na distro

 

[21/01/2017 22:48:09] [Error - Npc interface]

[21/01/2017 22:48:09] In a timer event called from:

[21/01/2017 22:48:09] data/npc/scripts/brock.lua:onCreatureSay

[21/01/2017 22:48:09] Description:

[21/01/2017 22:48:09] data/npc/scripts/brock.lua:126: attempt to index local 'it' (a nil value)

[21/01/2017 22:48:09] stack traceback:

[21/01/2017 22:48:09]     data/npc/scripts/brock.lua:126: in function <data/npc/scripts/brock.lua:123>

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

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...