NO

[Encerrado] Magia Shadow tag

Por nociam, 14 de jul. de 2015 em Tópicos Sem Resposta

12
1.4k
nociamN
14 de julho de 2015 às 21:31

Bom gostaria de fazer um pedido dessa magia shadow tag como ele funciona esta na foto.

 

gbXJarJ.png

2 semanas depois...
nociamN
26 de julho de 2015 às 17:53

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.

1 mês depois...
nociamN
02 de agosto de 2015 às 19:55

Alguém?

1 mês depois...
LumusL
18 de setembro de 2015 às 02:14

Tópico Movido
Este tópico foi movido de "OTServSuporte OTServSuporte Derivados"
para "OTServSuporte OTServSuporte DerivadosPedidos e dúvidas resolvidos - Servidores derivados".

 

 

4 meses depois...
JosegvbJ
13 de janeiro de 2016 às 16:14

topico resolvido? pera ai mas como? gostaria saber pfv tb preciso do script

7 meses depois...
samlecterS
28 de agosto de 2016 às 16:59

Up

 

Palavras do @dalvorsn em

"como faço monster trocar o target?" :

 

Citar

Para um target especifico:

doMonsterSetTarget(cid, target)

 

Para qualquer um da lista de targets:

doMonsterChangeTarget(cid)

 

Resposta baseada em tfs 036

 

Up

 

 

dalvorsnD
28 de agosto de 2016 às 18:37

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)

 

nociamN
28 de agosto de 2016 às 20:53

esta acontecendo um erro 

 

1- ta sempre um erro no console

erro linha 6714 doMonsterSetTarget(thing.uid, target)

Spoiler

[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

dalvorsnD
28 de agosto de 2016 às 21:04
9 minutos atrás, nociam disse:

esta acontecendo um erro 

 

1- ta sempre um erro no console

erro linha 6714 doMonsterSetTarget(thing.uid, target)

  Ocultar conteúdo

[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 

 

nociamN
28 de agosto de 2016 às 22:31

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

dalvorsnD
28 de agosto de 2016 às 22:52
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 

 

1 ano depois...
StigalS
21 de abril de 2018 às 03:43
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.