Ir para conteúdo
  • 0

Bug NPC GYM


Pergunta

Estou com um BUG no npc de GYM.

 

BUG 

  Mostrar conteúdo oculto

 

NPC

local focus = 0
local max_distance = 8
local talk_start = 0
local conv = 0
local fighting = false
local challenger = 0
local afk_limit_time = 300	-- 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 = "Alakazam", optionalLevel = 400, sex = SEX_MALE, nick = "", ball = "normal"},
{name = "Shiny Hypno", optionalLevel = 400, sex = SEX_MALE, nick = "", ball = "normal"},
{name = "Mr. Mime", optionalLevel = 400, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Porygon", optionalLevel = 400, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Espeon", optionalLevel = 400, sex = SEX_FEMALE, nick = "", ball = "normal"},
}


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
	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) end
doPlayerSendCancel(cid, "#getBadges# "..getCreatureName(this).." "..getPlayerItemCount(cid, gymbadges[getCreatureName(this)]))
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("Hello "..getCreatureName(cid)..", my name is Sabrina and I'm Saffron'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 Marsh 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
	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("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)
	end
return true
end

Bom como testei so um mas creio eu que esteja todos BUGADOS meus npcs de GYM.

 

Quem puder ajuda com este bug e poder me passa a tag ou a linha da solução ^^

 

Rep+++

Link para o comentário
https://xtibia.com/forum/topic/251239-bug-npc-gym/
Compartilhar em outros sites

Posts Recomendados

  • 0

Poxa pleno 2020 e ninguém ai joga  a solução.

 

Acima do método doSummonGymPokemon coloque o método abaixo, lembrando esse método esta em lua mais todos seus métodos existem em C++ aonde pode ser escrito em C++ se desejar assim como esta feito nos sources do tfs 1.3 que tenho basta analisar o código abaixo e fazer em C++ se assim desejar.

 

após colocar o método local se quiser pode adaptar e tb fazer global substituir os método  

selfAttackCreature(getCreatureSummons(challenger)[1]) por selfAttackCreature()

 

No final do método doSummonGymPokemon tb colocar o selfAttackCreature() assim o pokemon já sai atacando sem delay.

 

E boa sorte na jornada.

 

function selfAttackCreature()

local function selfAttackCreature()
if #getCreatureSummons(getNpcCid()) > 0 and not isCreature(getCreatureTarget(getCreatureSummons(getNpcCid())[1])) then
	local list = getSpectators(getCreaturePosition(getNpcCid()), 7, 7, false)
	for i=0, table.getn(list) do
		local _target = list[i]
		if(_target ~= 0) then
			if isPlayer(_target) and not getTileInfo(getThingPos(_target)).protection then
				if #getCreatureSummfighting = falseons(_target) > 0 then
					doMonsterSetTarget(getCreatureSummons(getNpcCid())[1], getCreatureSummons(_target)[1])
					setPlayerStorageValue(getCreatureSummons(getNpcCid())[1], 99856201, getNpcCid())
				else
				  fighting = false
				end
				target = _target
				break
			end
		end
	end
end

end

 Enfim abaixo exemplo de como esta em C++ não é o completo apenas base vejam o exemplo.

sssssssssssssssssssssss.png.12f162ecbe62e4838fd6b5d6379ba6fe.png

Editado por nociam
Link para o comentário
https://xtibia.com/forum/topic/251239-bug-npc-gym/#findComment-1757907
Compartilhar em outros sites

  • 0
  Em 21/03/2020 em 14:53, nociam disse:

Poxa pleno 2020 e ninguém ai joga  a solução.

 

Acima do método doSummonGymPokemon coloque o método abaixo, lembrando esse método esta em lua mais todos seus métodos existem em C++ aonde pode ser escrito em C++ se desejar assim como esta feito nos sources do tfs 1.3 que tenho basta analisar o código abaixo e fazer em C++ se assim desejar.

 

após colocar o método local se quiser pode adaptar e tb fazer global substituir os método  

selfAttackCreature(getCreatureSummons(challenger)[1]) por selfAttackCreature()

 

No final do método doSummonGymPokemon tb colocar o selfAttackCreature() assim o pokemon já sai atacando sem delay.

 

E boa sorte na jornada.

 

function selfAttackCreature()

local function selfAttackCreature()
if #getCreatureSummons(getNpcCid()) > 0 and not isCreature(getCreatureTarget(getCreatureSummons(getNpcCid())[1])) then
	local list = getSpectators(getCreaturePosition(getNpcCid()), 7, 7, false)
	for i=0, table.getn(list) do
		local _target = list[i]
		if(_target ~= 0) then
			if isPlayer(_target) and not getTileInfo(getThingPos(_target)).protection then
				if #getCreatureSummfighting = falseons(_target) > 0 then
					doMonsterSetTarget(getCreatureSummons(getNpcCid())[1], getCreatureSummons(_target)[1])
					setPlayerStorageValue(getCreatureSummons(getNpcCid())[1], 99856201, getNpcCid())
				else
				  fighting = false
				end
				target = _target
				break
			end
		end
	end
end

end

 Enfim abaixo exemplo de como esta em C++ não é o completo apenas base vejam o exemplo.

sssssssssssssssssssssss.png.12f162ecbe62e4838fd6b5d6379ba6fe.png

Expand  

tipo assim !!!

 

Eu queria arrumar este BUG so que em script.lua 

 

Assim imagino eu como eu disse creio eu que todos npcs de gym aqui devem ta bugado ai queria a tag onde arrumo.

 

So que queria arrumar ou adptar em script.lua se tem como ??

 

Source nao manjo =/ 

Link para o comentário
https://xtibia.com/forum/topic/251239-bug-npc-gym/#findComment-1757910
Compartilhar em outros sites

  • 0
  Em 21/03/2020 em 17:59, nociam disse:

já esta ali mano em lua só observar.

Expand  

Beleza mais tipo assim 

 

Onde eu troco ou onde eu adciono ??

 

Tipo:

 

Abaixo de tal linha adciona isto 

 

No npc do gym

local function selfAttackCreature()
if #getCreatureSummons(getNpcCid()) > 0 and not isCreature(getCreatureTarget(getCreatureSummons(getNpcCid())[1])) then
	local list = getSpectators(getCreaturePosition(getNpcCid()), 7, 7, false)
	for i=0, table.getn(list) do
		local _target = list[i]
		if(_target ~= 0) then
			if isPlayer(_target) and not getTileInfo(getThingPos(_target)).protection then
				if #getCreatureSummfighting = falseons(_target) > 0 then
					doMonsterSetTarget(getCreatureSummons(getNpcCid())[1], getCreatureSummons(_target)[1])
					setPlayerStorageValue(getCreatureSummons(getNpcCid())[1], 99856201, getNpcCid())
				else
				  fighting = false
				end
				target = _target
				break
			end
		end
	end
end

end

/\ em que parte eu coloco isto ??

Link para o comentário
https://xtibia.com/forum/topic/251239-bug-npc-gym/#findComment-1757914
Compartilhar em outros sites

  • 0
  Em 21/03/2020 em 15:28, BrunooMaciell disse:

tipo assim !!!

 

Eu queria arrumar este BUG so que em script.lua 

 

Assim imagino eu como eu disse creio eu que todos npcs de gym aqui devem ta bugado ai queria a tag onde arrumo.

 

So que queria arrumar ou adptar em script.lua se tem como ??

 

Source nao manjo =/ 

Expand  

ta dando erro aqui 

if #getCreatureSummfighting = falseons(_target) > 0 then

 

Estou mandando o script do npc sabrina. tem como vc fazer a edicao para nos?

 

  Mostrar conteúdo oculto

Link para o comentário
https://xtibia.com/forum/topic/251239-bug-npc-gym/#findComment-1757917
Compartilhar em outros sites

  • 0
  Em 21/03/2020 em 19:27, Taiger disse:

ta dando erro aqui 

if #getCreatureSummfighting = falseons(_target) > 0 then

 

Estou mandando o script do npc sabrina. tem como vc fazer a edicao para nos?

 

 

  Mostrar conteúdo oculto

 

Expand  

Ja postei a script da sabrina kkkkkkkkkkk

Link para o comentário
https://xtibia.com/forum/topic/251239-bug-npc-gym/#findComment-1757919
Compartilhar em outros sites

  • 0
  Mostrar conteúdo oculto

linha do erro altere para.

 

if #getCreatureSummons(_target) > 0 then

Editado por nociam
Link para o comentário
https://xtibia.com/forum/topic/251239-bug-npc-gym/#findComment-1757923
Compartilhar em outros sites

  • 0
  Em 21/03/2020 em 20:56, nociam disse:
  Mostrar conteúdo oculto

linha do erro altere para.

 

if #getCreatureSummons(_target) > 0 then

Expand  

1.png.597d61126481ccad8f4bce27fe8e0a61.png

 

Deu esse ERRO 

Link para o comentário
https://xtibia.com/forum/topic/251239-bug-npc-gym/#findComment-1757926
Compartilhar em outros sites

  • 0
  Em 21/03/2020 em 21:50, nociam disse:

linha 131 para min não faz sentido.

 

image.thumb.png.635a71f63cd05b7a85e327dd098554ab.png

Expand  

mas sabe onde pode ser este erro eu mudei aqui nao sei se foi a errada mais aque deu erro mudei aii começa da este erro da foto no EXE do server 

Link para o comentário
https://xtibia.com/forum/topic/251239-bug-npc-gym/#findComment-1757928
Compartilhar em outros sites

  • 0
  Em 21/03/2020 em 22:17, nociam disse:

Cara tem Skype? se não baixa compartilha a tela e vamos ajustar isso.

Expand  

ate tenho mas tenho tbem discord 

Link para o comentário
https://xtibia.com/forum/topic/251239-bug-npc-gym/#findComment-1757930
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

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