ED
dúvida

Player Não Pode Atacar Seu Proprio Summon.

Por eduardo190696, 16 de set. de 2012 em Scripts

script
15
5.6k
eduardo190696E
16 de setembro de 2012 às 18:13

opa, eu e um amigo criamos esse script

 

creaturescript

function onCombat(cid, target)
if isPlayer(cid) and isSummon(target) then
doPlayerSendCancel(cid, "You can't attack your dragon or best.")
return false
end
return true
end

 

lib

function isSummon(sid)
   for i, pid in ipairs(getPlayersOnline()) do
       for c, cid in pairs(getCreatureSummons(pid)) do
           if (cid == sid) then
               return true
           end
       end 
   end
   return false
end  

 

desse jeito, o player não pode atacar nem um summon, e eu quero para que ele não possa atacar só o seu summon.

SkymagnumS
16 de setembro de 2012 às 18:33

function isSummon(sid)
       for c, cid in pairs(getCreatureSummons(cid)) do
           if (cid == sid) then
               return true
       end 
   end
   return false
end 

 

 

test

EskyloE
16 de setembro de 2012 às 18:40

function isSummon(cid, monster)
return getCreatureMaster(monster) == cid
end

 

function onCombat(cid, target)
if isPlayer(cid) and isSummon(cid, target) then
doPlayerSendCancel(cid, "You can't attack your dragon or best.")
return false
end
return true
end

 

deqlqr forma fica mais facil, somente:

function onCombat(cid, target)
if cid == getCreatureMaster(target) then
doPlayerSendCancel(cid, "You can't attack your dragon or best.")
return false
end
return true
end

Editado Setembro 16 por Eskylo

brun123B
16 de setembro de 2012 às 21:53

Beleza amigo, qual sua dúvida? Já leu o post que você fez? Colocou sua script e a função que você fez (que por acaso podia ser 1000x mais simples, rápida e limpa) e não perguntou nada...

 

Se o problema for não funcionar a script, é provavelmente porque você esqueceu de registrar o creature event nos players pelo login.lua

eduardo190696E
16 de setembro de 2012 às 23:57

@Eskylo, funcionou 100% +rep, Só que agora como eu faço para que o summon não acerte o dono, porque quando o summon solta uma spell e acaba acertando o seu dono, o dono leva um rit do próprio summon, faço para não ocorrer isso ?

 

@Edit

 

@Brun123

 

desse jeito, o player não pode atacar nem um summon, e eu quero para que ele não possa atacar só o seu summon.

ou seja, o player não podia atacar o summon que ele invocou, mais pode atacar o summon de outros players.

Editado Setembro 17 por eduardobean

EskyloE
17 de setembro de 2012 às 21:10

pros summons nao 'combaterem' os donos seria:

 

 

function onCombat(cid, target)

if isInArray(getCreatureSummons(target), cid) then

return false

end

return true

end

eduardo190696E
18 de setembro de 2012 às 01:07

@Eskylo, eu dei rep, mais não funcionou, e o player fica com uma Yellow Skull.

 

login.lua

 

registerCreatureEvent(cid, "SummonAntKillPlayer")

 

no creaturescript.xml

<event type="combat" name="SummonAntKillPlayer" event="script" value="SummonAntKillPlayer.lua"/>

 

e o script

 

function onCombat(cid, target)
if isInArray(getCreatureSummons(target), cid) then
return false
end
return true
end

Editado Setembro 18 por eduardobean

brun123B
18 de setembro de 2012 às 11:40

você tem que registrar essa creature event no summon...

eduardo190696E
18 de setembro de 2012 às 12:53

Desculpe mais não entendi.

EskyloE
19 de setembro de 2012 às 21:27
@Eskylo, eu dei rep, mais não funcionou, e o player fica com uma Yellow Skull. login.lua
 registerCreatureEvent(cid, "SummonAntKillPlayer") 

no creaturescript.xml

  

e o script

 function onCombat(cid, target) if isInArray(getCreatureSummons(target), cid) then return false end return true end 

você tem que registrar essa creature event no summon...

exatamente como ele falou, pq nesse caso o cid é o summon e sendo assim o registerCreatureEvent() tem q ser no summon, exemplo

 

no script do summon vc procura essa parte

 

creature = doSummonCreature(nome, getCreaturePosition(cid))
doConvinceCreature(cid, creature)

 

aí vc add embaixo disso, isto:

 

registerCreatureEvent(creature, "SummonAntKillPlayer")

 

creature em vez de cid, pq creature foi a variavel q usei aki -> creature = doSummonCreature(..

Editado Setembro 19 por Eskylo

eduardo190696E
20 de setembro de 2012 às 01:14

valeu ai :D

Editado Setembro 20 por eduardobean

2 semanas depois...
nbb147N
30 de setembro de 2012 às 22:11

eu tambem to prescisando disso mais nao sei onde adicionar essas coisas, onde adiciono?

eduardo190696E
03 de outubro de 2012 às 02:54

CreatureScripts.

nbb147N
03 de outubro de 2012 às 17:23

como? diz ae todos os passos...

05 de outubro de 2012 às 02:08

eu tentei adicionar no meu ot e nao deu, eu acabo nao conseguindo atacar nenhum monstro diz ajuda to prescisando tambem.. ^^