Está faltando a Função selfAttackCreature no seu servidor/source.
- Fórum
- OTServ
- Suporte
- Tópicos Sem Resposta
- [Encerrado] erro npc gyn
info
Grupo: Conde
Registrado: 23/05/17
Posts: 584
Reputação: +113
Gênero: Masculino
Char no Tibia: Não Tenho

info
Grupo: Visconde
Registrado: 21/05/13
Posts: 303
Reputação: +25

15 horas atrás, DarkWore disse:Está faltando a Função selfAttackCreature no seu servidor/source.
sera que pode me ajudar a colocar ela na source? estou pesquisando, procurando por ela mas não encontro
info
Grupo: Conde
Registrado: 23/05/17
Posts: 584
Reputação: +113
Gênero: Masculino
Char no Tibia: Não Tenho

4 horas atrás, wevertonvrb disse:sera que pode me ajudar a colocar ela na source? estou pesquisando, procurando por ela mas não encontro
Essa função não existe tutorial para colocar ela nem nada do tipo, você vai ter que encontrar alguem que faça a função para você, Acredito que não vá conseguir isso de graça.
info
Grupo: Visconde
Registrado: 21/05/13
Posts: 303
Reputação: +25

21 horas atrás, DarkWore disse:Essa função não existe tutorial para colocar ela nem nada do tipo, você vai ter que encontrar alguem que faça a função para você, Acredito que não vá conseguir isso de graça.
voce faria ela pra mim? quanto cobraria???
info
Grupo: Conde
Registrado: 23/05/17
Posts: 584
Reputação: +113
Gênero: Masculino
Char no Tibia: Não Tenho

2 horas atrás, wevertonvrb disse:voce faria ela pra mim? quanto cobraria???
Não faria, Acredito que eu não tenha o conhecimento necessário para desenvolver uma função dessa.
Irei de ajudar essa função não é nada menos do que mostro abaixo simplesmente agora e so adptar.
if #getCreatureSummons(_target) > 0 then
doMonsterSetTarget(getCreatureSummons(getNpcCid())[1], getCreatureSummons(_target)[1])
else
doMonsterSetTarget(getCreatureSummons(getNpcCid())[1], _target)
end
Editado Outubro 14 por nociam
info
Grupo: Visconde
Registrado: 21/05/13
Posts: 303
Reputação: +25

7 horas atrás, nociam disse:Irei de ajudar essa função não é nada menos do que mostro abaixo simplesmente agora e so adptar.
if #getCreatureSummons(_target) > 0 then
doMonsterSetTarget(getCreatureSummons(getNpcCid())[1], getCreatureSummons(_target)[1])
else
doMonsterSetTarget(getCreatureSummons(getNpcCid())[1], _target)
end
isso vai no xml do monstro no npc? some functions?
poderia dar uma luz??
23 horas atrás, nociam disse:Irei de ajudar essa função não é nada menos do que mostro abaixo simplesmente agora e so adptar.
if #getCreatureSummons(_target) > 0 then
doMonsterSetTarget(getCreatureSummons(getNpcCid())[1], getCreatureSummons(_target)[1])
else
doMonsterSetTarget(getCreatureSummons(getNpcCid())[1], _target)
end
Mano muita gente precisa dela... Eu sou um dos... obg por compartilhar! Só explica onde ela vai ficar.
É isso, vlw e REP pela iniciativa! ^ ^
Se tem que adaptar no lugar do selfAttackCreature.
Tipo existe o metodo getSpectators ai se pega os pokemons ao redor do seu npc que ele ira atacar e por um for se chama o metodo doMonsterSetTarget e faz o pokemon do npc atacar os da lista vale lembrar que se fazer certo funciona pois tenho no meu servidor antigo.
2 horas atrás, nociam disse:Se tem que adaptar no lugar do selfAttackCreature.
Tipo existe o metodo getSpectators ai se pega os pokemons ao redor do seu npc que ele ira atacar e por um for se chama o metodo doMonsterSetTarget e faz o pokemon do npc atacar os da lista vale lembrar que se fazer certo funciona pois tenho no meu servidor antigo.
Vou adaptar então. Vlw ^^
info
Grupo: Visconde
Registrado: 21/05/13
Posts: 303
Reputação: +25

Em 15/10/2018 em 18:31, nociam disse:Se tem que adaptar no lugar do selfAttackCreature.
Tipo existe o metodo getSpectators ai se pega os pokemons ao redor do seu npc que ele ira atacar e por um for se chama o metodo doMonsterSetTarget e faz o pokemon do npc atacar os da lista vale lembrar que se fazer certo funciona pois tenho no meu servidor antigo.
mano eu não entedi nada, ate pq o pokemon no npc ja esta atacando o do player porem o pokemon do player esta tipo imune a dano fisico e magico, unica coisa que esta surtindo efeitos são maldições e envenenamentos
se puder esclarecer um pouco mais agradeceria
mas te agradeço por tentar ajudar, talvez seja eu que ainda não tenha conhecimento suficiente para entender
info
Grupo: Visconde
Registrado: 21/05/13
Posts: 303
Reputação: +25

Em 15/10/2018 em 21:19, Sepulturaa disse:Vou adaptar então. Vlw ^^
conseguil?
12 minutos atrás, wevertonvrb disse:conseguil?
Ainda não ;-;
info
Grupo: Conde
Registrado: 21/04/16
Posts: 831
Reputação: +271
Gênero: Masculino

+ 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.





info
Grupo: Visconde
Registrado: 21/05/13
Posts: 303
Reputação: +25
TFS 0.3.6
erro nos gyn
o pokemon do npc não esta dando rit no pokemon dos players e esta gerando este erro http://prntscr.com/l5dkc7
script npc myst
local focus = 0
local max_distance = 8
local talk_start = 0
local conv = 0
local fighting = false
local challenger = 0
local afk_limit_time = 100 -- 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 = "Gyarados", optionalLevel = 450, sex = SEX_MALE, nick = "", ball = "normal"},
{name = "Tentacruel", optionalLevel = 450, sex = SEX_MALE, nick = "", ball = "normal"},
{name = "Vaporeon", optionalLevel = 450, sex = SEX_FEMALE, nick = "", ball = "normal"},
{name = "Golduck", optionalLevel = 450, sex = SEX_MALE, nick = "", ball = "normal"},
{name = "Shiny Blastoise", optionalLevel = 450, sex = SEX_MALE, nick = "", ball = "normal"},
{name = "Starmie", optionalLevel = 450, 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 - ? 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 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
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
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 = 1
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
Editado Outubro 12 por wevertonvrb