JE
pedido

Creature Script E Spell

Por JeanCristian, 31 de mar. de 2014 em Scripts

resolvido
script
15
1.8k
JeanCristianJ
01 de abril de 2014 às 10:19

spells:

queria um script que fize-se o seguinte, eu escreve-se uma magia por exemplo "invocar anjos" dai tenha 1 tabela configuravel de levels, para cada level sumona 1 monstro diferente. e se possivel cara monstro ou level poder sumonar configuravel 1 ou mais summons,

-----------------------------------

agora creaturescript ( eu acho)

objetivo final:

o jogador só poderia me atacar, ou o monstro, se matar meu summon primeiro, caso eu tenha meu summon ativo nao poderei ser atingido.


alguem consegue?


alguem poderia me ajudar?

01 de abril de 2014 às 10:21

Tenha paciência amigo , se ninguém ajudou ainda espere , até que alguém tenha o conhecimento e o ajude .

 

  • O uso de "up" ou "bump" é considerado flood, passível de punição, quando feito em um intervalo menor de 24 (vinte e quatro) horas da criação do tópico de pedido e/ou dúvida e apenas e também, se, o tópico já possuir respostas.
lucasromeroL
01 de abril de 2014 às 13:59

Spell:

function onCastSpell(cid, var)
local summons = getCreatureSummons(cid)
local MaximoSummon = 1 --Quantos pode fazer

local config = {
{lvl = {150, 200}, monster = 'vidaloka', totalmonster = 1},
{lvl = {200, 250}, monster = 'ostentacao', totalmonster = 2},
{lvl = {250, 999}, monster = 'soofluxo', totalmonster = 5},
}

for i = 1, #config do
if getPlayerLevel(cid) >= config[i].lvl[1] and getPlayerLevel(cid) <= config[i].lvl[2] then
if(table.maxn(summons) <= config[i].totalmonster) then
local anjo = doCreateMonster(config[i].monster, getPlayerPosition(cid))

doConvinceCreature(cid, anjo)
doSendMagicEffect(getPlayerPosition(cid), 10)
else
return doPlayerSendTextMessage(cid, 27, "Voce ja tem "... MaximoSummon ..." feitos.")
end
end
end
return true
end

creaturescripts:

local config = {
{monster = 'vidaloka'},
{monster = 'ostentacao'},
{monster = 'soofluxo'},
}

function onCombat(cid, target)

for i = 1, #config do
if(table.maxn(getCreatureSummons(target)) == config[i]) then
doPlayerSendCancel(cid, "Voce nao pode atacar seu oponente enquanto ele estiver um Anjo.")
return false
end
end
return true
end

Editado Abril 3 por lucasromero

JeanCristianJ
01 de abril de 2014 às 17:12

qual tag eu ponho no creaturescripts.xml? precisa registrar no login?

lucasromeroL
01 de abril de 2014 às 17:33

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

Login:
registerCreatureEvent(cid, "NameEvent")

Editado Abril 1 por lucasromero

JeanCristianJ
01 de abril de 2014 às 17:39

agora eu descobri sozinho ja kkkkkkkkkkkkkkkk mais vlw pelomenos aprendi algo hoje u.u


seu rep+ esta láh :)

vou testar agora, tomara que de certo xD


tem como aparecer uma mensagem quando o player nao tiver level, ou level maior para sumonar?

se é possivel por uma exaustation que nao interfere na exaustation das demais magias?

lucasromeroL
01 de abril de 2014 às 17:41

Qualquer erro,dúvida poste aqui.
sempre registre o evento no login e na tag

<event type="combat"

esse combat é o:

function onCombat

sempre ponha com letra minuscula depois do on.

JeanCristianJ
01 de abril de 2014 às 17:52

sim eu aprendi isso de primeira u.u foi algo tao logico kkkk eu coparei com os outros scripts xD, mais tipo quando eu uso a magia aparece o say da magia mais nao aparece nada por exemplo, eu to level 5.000.000 com meu char, eu escrevo a magia e o ultimo summon vai até level 900.000 e nao aparece uma mensagem tipo, vc nao tem level ou algo do tipo, ela só aparece o say da magia e nao acontece nada, queria algo para oplayer saber que nao pode sumonar entende? se possivel um efeitozinho tambem


ai man, os monstros estao me atacando tambem, junto com meu summon, tem como fazer para os monstro só conseguir dar danos em mim se meu summon morrer, se eu nao tiver com summon?

lucasromeroL
01 de abril de 2014 às 18:48

function onCastSpell(cid, var)
local summons = getCreatureSummons(cid)
local MaximoSummon = 1 --Quantos pode fazer

local config = {
{lvl = {150, 200}, monster = 'vidaloka', totalmonster = 1},
{lvl = {200, 250}, monster = 'ostentacao', totalmonster = 2},
{lvl = {250, 999}, monster = 'soofluxo', totalmonster = 5},
}

for i = 1, #config do
if getPlayerLevel(cid) >= config[i].lvl[1] and getPlayerLevel(cid) <= config[i].lvl[2] then
if(table.maxn(summons) <= config[i].totalmonster) then
local anjo = doCreateMonster(config[i].monster, getPlayerPosition(cid))

doConvinceCreature(cid, anjo)
doSendMagicEffect(getThinPos(cid), 10)
return doPlayerSendTextMessage(cid, 27, "Voce ja tem MaximoSummon feitos.")
end
else
return doPlayerSendTextMessage(cid, 27, "Voce nao pode fazer summon.")
end
end
return true
end

Sobre o monstro atacar, tente utilizar esse creature:

 

 

 

local config = {
{monster = 'vidaloka'},
{monster = 'ostentacao'},
{monster = 'soofluxo'},
}
local combatt = {'PHYSICALDAMAGE','ENERGYDAMAGE','EARTHDAMAGE','POISONDAMAGE','UNDEFINEDDAMAGE','MANADRAIN','LIFEDRAIN','DROWNDAMAGE','ICEDAMAGE','HOLYDAMAGE','DEATHDAMAGE'}


function onStatsChange(cid, attacker, _type, combat, value)
for i = 1, #config do
for n = 1, #combatt do
  if _type == STATSCHANGE_HEALTHLOSS then
   if combat == COMBAT_combatt[n] then
    if(table.maxn(getCreatureSummons(cid)) >= config[i]) and isMonster(attacker) then
	return false
end
end
end
end
end
return true
end

Não sei se ira dar certo.

Editado Abril 1 por lucasromero

JeanCristianJ
01 de abril de 2014 às 19:33

testando


[01/04/2014 19:31:29] [Warning - Event::loadScript] Event onCombat not found (data/creaturescripts/scripts/invoc.lua)


atah só ponhar o statschange malz agora que fui ver


mais existe 2 "t" no combat do seu script, vai dar erro nao?

lucasromeroL
01 de abril de 2014 às 19:34

esse script que eu postei em cima é outro. não é pra subistui pelo outro.

function onStatsChange(cid, attacker, _type, combat, value)

JeanCristianJ
02 de abril de 2014 às 09:41

perae que to testando


atah, é para deixa os 2?


o script funciono perfeitamente, nao tomo hit, mais o bixo fica toda hora virando em mim, ta ligado? tem como mudar isso? fazer ele atacar o monstro automaticamente primeiro, para dps vir ne mim, +- como no pokemon vc ja jogo? vc sumona o poke se o poke morre o monstro vai te matar, e vc nao toma hit do monstro se o poke tiver sumonado, é +- isso.

e ta dando esse erro aki olha

[01/04/2014 19:43:19] [Error - CreatureScript Interface]
[01/04/2014 19:43:19] data/creaturescripts/scripts/invocc.lua:onStatsChange
[01/04/2014 19:43:19] Description:
[01/04/2014 19:43:19] data/creaturescripts/scripts/invocc.lua:13: attempt to index global 'COMBAT_combatt' (a nil value)
[01/04/2014 19:43:19] stack traceback:
[01/04/2014 19:43:19] data/creaturescripts/scripts/invocc.lua:13: in function <data/creaturescripts/scripts/invocc.lua:9>

eu nao tomo hit em nenhuma ocasiao, lol meu summon morreu e eu ainda nao to tomando hit, acho que o script nao deu certo '-'


um cara postou isso olha

 

ñ sei se vc manja de scripts mais se manja, faça o seguinte, abra o groups.xml dentro da pasta (data/xml), crie um grupo com nome pokemon e altere as flags igual a de players normais, depois crie um outro grupo com noattackplayer e coloque o frags de q n pode ser atacado..

agora no creaturescript crie um arquivo para q qndo ele "sumonar o pokemon" ele vire grupo noattackplayer e registre o summon como pokemon, e se o pokemon morrer ou voltar pra ball o player volta ao grupo certo...

alguem me ajuda a fazer isso dar certo?


'

lucasromeroL
02 de abril de 2014 às 18:20

function onThink(cid, interval)
if isPlayer(cid) and (table.maxn(getCreatureSummons(cid)) >= 1) and getPlayerGroupId(cid) == 1 then
setPlayerGroupId(cid, 7)
end

if isPlayer(cid) and (table.maxn(getCreatureSummons(cid)) < 1) and getPlayerGroupId(cid) == 7 then
setPlayerGroupId(cid, 1)
end

return true
end

Login:

 

 

function onLogin(cid)
if isPlayer(cid) and getPlayerGroupId(cid) == 7 then
setPlayerGroupId(cid, 1)
end
return true
end

Editado Abril 2 por lucasromero

JeanCristianJ
02 de abril de 2014 às 19:14

vlw rep+

OmegaO
03 de abril de 2014 às 00:27

Tópico movido para a seção de dúvidas e pedidos resolvidos.