Alguém pelo menos uma ideia de como fazer fazer ficar o target no pokemon A por 60 segundos sem conseguir tirar esse target do pokemon A.
- Fórum
- OTServ
- Suporte
- Tópicos Sem Resposta
- [Encerrado] Magia Shadow tag
Alguém?
info
Grupo: Marquês
Registrado: 03/02/13
Posts: 1.2k
Reputação: +254
Gênero: Masculino
Char no Tibia: Partiu Baladinha

Tópico Movido
Este tópico foi movido de "OTServ → Suporte OTServ → Suporte Derivados"
para "OTServ → Suporte OTServ → Suporte Derivados → Pedidos e dúvidas resolvidos - Servidores derivados".
topico resolvido? pera ai mas como? gostaria saber pfv tb preciso do script
info
Grupo: Visconde
Registrado: 08/12/15
Posts: 309
Reputação: +133
Gênero: Masculino

Up
Palavras do @dalvorsn em
"como faço monster trocar o target?" :
CitarPara um target especifico:
doMonsterSetTarget(cid, target)
Para qualquer um da lista de targets:
doMonsterChangeTarget(cid)
Resposta baseada em tfs 036
Up
Você primeiro precisa pegar as criaturas que estão em volta, os spectators. Apos isso basta para cada um da lista setar o target.
getSpectators(centerPos, rangex, rangey[, multifloor = false])
doMonsterSetTarget(cid, target)
Além disso, para evitar que troquem de target, como tem uma duração de 60s, aconselho a fazer uma função recursiva que utilize addEvent com um delay razoavel(acho que 1s ja deve ser suficiente, se necessario reduza isso)
Agora a questão é definir quem são os oponentes, quais as caracteristicas que determinam ser um oponente?
Seria algo proximo disso:
function focusAttackInArea( target, range, delay, time, counter ) if not isCreature(target) then return end if not counter then counter = 0 end for _, thing in pairs(getSpectators(getThingPosition(target), range, range)) do -- verificar aqui se thing.uid é oponente -- se sim entao doMonsterSetTarget(thing.uid, target) end if counter < time then addEvent(focusAttackInArea, delay, range, time, counter + delay) end endlocal delay = 500 -- mslocal totalTime = 6 * 60 * 1000 -- 6slocal range = 5focusAttackInArea(cid, range, delay, totalTime)
esta acontecendo um erro
1- ta sempre um erro no console
erro linha 6714 doMonsterSetTarget(thing.uid, target)
[28/08/2016 20:49:13] [Error - TalkAction Interface]
[28/08/2016 20:49:13] data/talkactions/scripts/move1.lua:onSay
[28/08/2016 20:49:13] Description:
[28/08/2016 20:49:13] data/lib/pokemon moves.lua:6714: attempt to index local 'thing' (a number value)
[28/08/2016 20:49:13] stack traceback:
[28/08/2016 20:49:13] data/lib/pokemon moves.lua:6714: in function 'focusAttackInArea'
[28/08/2016 20:49:13] data/lib/pokemon moves.lua:6723: in function 'docastspell'
[28/08/2016 20:49:13] data/talkactions/scripts/move1.lua:288: in function <data/talkactions/scripts/move1.lua:24>
2- quanto uso essa magia eu tenho que colocar target na criatura pra funcionar
3- ele perde o target se eu mudar da target
Editado Agosto 28 por nociam
9 minutos atrás, nociam disse:esta acontecendo um erro
1- ta sempre um erro no console
erro linha 6714 doMonsterSetTarget(thing.uid, target)
[28/08/2016 20:49:13] [Error - TalkAction Interface]
[28/08/2016 20:49:13] data/talkactions/scripts/move1.lua:onSay
[28/08/2016 20:49:13] Description:
[28/08/2016 20:49:13] data/lib/pokemon moves.lua:6714: attempt to index local 'thing' (a number value)
[28/08/2016 20:49:13] stack traceback:
[28/08/2016 20:49:13] data/lib/pokemon moves.lua:6714: in function 'focusAttackInArea'
[28/08/2016 20:49:13] data/lib/pokemon moves.lua:6723: in function 'docastspell'
[28/08/2016 20:49:13] data/talkactions/scripts/move1.lua:288: in function <data/talkactions/scripts/move1.lua:24>
2- quanto uso essa magia eu tenho que colocar target na criatura pra funcionar
3- ele perde o target se eu mudar da target
Erro meu então, o spectators retorna um uid, e não um thing como eu pensei.
basta mudar de thing.uid para thing, ou renomear no for e usar como uid
for _, uid in pairs(getSpectators(getThingPosition(target), range, range)) do -- verificar aqui se uid é oponente -- se sim entao doMonsterSetTarget(uid, target)end
esta com esse erro agora e tem como fazer pra não aceitar outro target ate acabar a condição desse sistema porque se eu to target em outro pokemon mesmo colocando uma condição ele anula essa magia
[28/08/2016 22:29:34] [Error - TalkAction Interface]
[28/08/2016 22:29:34] data/talkactions/scripts/move1.lua:onSay
[28/08/2016 22:29:34] Description:
[28/08/2016 22:29:34] (luaDoMonsterSetTarget) Monster not found
19 minutos atrás, nociam disse:esta com esse erro agora e tem como fazer pra não aceitar outro target ate acabar a condição desse sistema porque se eu to target em outro pokemon mesmo colocando uma condição ele anula essa magia
[28/08/2016 22:29:34] [Error - TalkAction Interface]
[28/08/2016 22:29:34] data/talkactions/scripts/move1.lua:onSay
[28/08/2016 22:29:34] Description:
[28/08/2016 22:29:34] (luaDoMonsterSetTarget) Monster not found
Era pra tu fazer alguma verificação se é de fato um oponente né, e provavelmente nisso iria incluir o isMonster(uid), mas ja que nao fez vou fazer um basico
for _, uid in pairs(getSpectators(getThingPosition(target), range, range)) do if isMonster(uid) then doMonsterSetTarget(uid, target) endend
info
Grupo: Herói
Registrado: 28/11/10
Posts: 3.4k
Reputação: +585
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: Conde
Registrado: 04/02/13
Posts: 541
Reputação: +90
Gênero: Masculino
Bom gostaria de fazer um pedido dessa magia shadow tag como ele funciona esta na foto.