JE
pedido

[Pedido] monstro só ataca player com storage (10 reps)

Por Jefferson14789, 16 de ago. de 2015 em Scripts

13
2.8k
16 de agosto de 2015 às 07:33

Como o título vem dizendo eu quero uma script para determinado mostro so ataque o player com um determinado storage, caso o player não tenha ele fica parado e nem ataca o player, eu tenho as sources e quero pedir a vcs essa ajuda oq for preciso.

10 reps+

StrogmanS
16 de agosto de 2015 às 08:21

em creaturescript/script faça um arquivo chamado noatk.lua

 

coloque dentro

 

function onTarget(cid, target)
if getPlayerStorageValue(target, 8595) == 1 then
return false
end
return true
end

function onAttack(cid, target)
if getPlayerStorageValue(target, 8595) == 1 then
return false
end
return true
end

 

e em creaturescript.xml

 

adicione

 

 

    <event type="attack" name="Natk" event="script" value="noatk.lua"/>
    <event type="target" name="Ntag" event="script" value="noatk.lua"/>
  

 

e no xml do monstro que você quer que só atk o player se tiver a storage

 

coloque em baixo do primeiro <script>

<event name="Natk"/>

<event name="Ntag"/>

 

 

obs: a storage é 8595 e é = a 1 mais voce pode mudar ela e a quantia ali no creatureevent nas partes

getPlayerStorageValue(target, 8595) == 1

 

 

 

16 de agosto de 2015 às 09:58

não deu nem um erro mas n funcionou, o monstro ataca do mesmo jeito

XtudomuitoX
16 de agosto de 2015 às 11:38

Eu acho que vc quer o msm que eu.

http://www.xtibia.com/forum/topic/234460-saga-system-wodbo/?p=1665365

 

mas eu acho difícil.

16 de agosto de 2015 às 11:44

exatamente isso que quero.

StrogmanS
16 de agosto de 2015 às 17:26

não deu nem um erro mas n funcionou, o monstro ataca do mesmo jeito

 

tenta assim

function onTarget(cid, target) 
if getPlayerStorageValue(target, 8595) == -1 then 
return false
end 
return true 
end 
function onAttack(cid, target) 
if getPlayerStorageValue(target, 8595) == -1 then
return false
end 
return true 
end​
1 mês depois...
05 de setembro de 2015 às 08:43

n dá erro mas tbm n funciona ;/

LumusL
05 de setembro de 2015 às 12:15

Tenta assim.

function onTarget(cid, target)
if isMonster(cid) and isPlayer(target) and getPlayerStorageValue(target, 3241) < 1 then
return false
end
return true
end
<event type="target" name="MobStor" event="script" value="nome do seu script.lua"/>
registerCreatureEvent(cid, "MobStor")

Créditos Vodkart.

zipter98Z
05 de setembro de 2015 às 20:22

Você não vai conseguir fazer isso sem modificações nas sources.

http://www.xtibia.com/forum/topic/236635-ontarget-tambem-executado-por-monstros/

1 mês depois...
nbb147N
01 de outubro de 2015 às 02:11

Jefferson14789 me tira uma duvida você está atrás desse disso para criar um sistema de saga não é?

02 de outubro de 2015 às 18:43

Exatamente meu amigo.

Night WolfN
07 de outubro de 2015 às 05:45

eu tava brincando com esse código aqui e pelo que eu lembre ele funciona perfeito no meu 0.3.6.. no máximo você tem que adicionar os outros callbacks (onAttack, onTarget)

 

local notattackable = {1,2,5,6} --- vocações que não receberão ataque
function onCombat(cid, target)
 
 
if(not isPlayer(target)) then
return true
else
 
targets = getMonsterTargetList(cid)
if isInArray(notattackable, getPlayerVocation(target)) then
   addEvent(check,1000,cid,targets)
   return false
else
return true
end
end
end
 
function check(cid,targets)
 
for i=1, #targets do
	if isInArray(notattackable, getPlayerVocation(targets[i])) then
	  
	   addEvent(check,1000,cid,targets)
	   return false
	else
		stopEvent(check)
		return true
	end
end
end

 



Pra mudar pra aceitar saga é só trocar as checagens de vocação pelas de storage. O esquema é o mesmo de registrar o event para o monstro em questão. Espero que dê certo pra vocês ;]

3 meses depois...
LumusL
20 de janeiro de 2016 às 16:27

Tópico Movido
Este tópico foi movido de "OTServScriptingSuporte Scripting"
para "OTServScriptingSuporte ScriptingPedidos e dúvidas resolvidos - Scripting".