Ir para conteúdo
  • 0

[Urgente] Preciso De Ajuda Em Dosendmagiceffect!


GiovaneM

Pergunta

Bom pessoal, eu tenho um server de Wodbo, e estou precisando de uma imensa ajuda. É o seguinte, quando uma pessoa vai se transformar, algumas vocações possuem o outfit e mais uns "raios" que ficam saindo pelo o corpo, eu consigo fazer com que a pessoa se transforme e saia o raio, porem, o problema é quando o player faz um logout, o outfit eu consegui que ao deslogar, e logar novamente, ele fique, porem, os raios não. Peço que alguem me ajude, eu ja tentei criar pelo creaturescript uma função onLogin, porem, sem sucesso, então acredito eu como, eu eu consegui que a outfit fique ao deslogar, acredito que os raios podem ser configurados para não sair ao deslogar em uma tag na Spell de transform. Vou postar aqui um exemplo de como funciona o raio na spell:

 

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)
local condition = createConditionObject(CONDITION_OUTFIT)
setConditionParam(condition, CONDITION_PARAM_TICKS, 86400000)
addOutfitCondition(condition, 0, 71, 0, 0, 0, 0)
setCombatCondition(combat, condition)
ext = 1000
function gokussj5(cid)
if getPlayerVocation(cid) == 502 then
doSendMagicEffect(getPlayerPosition(cid), 180)								  
					addEvent(gokussj5,ext,cid)
  end
end
function onCastSpell(cid, var)
if getPlayerVocation(cid) == 999 then
if getPlayerLevel(cid) >= 30 then
doPlayerSay(cid, 'Transformar!', TALKTYPE_ORANGE_1)
doPlayerSetVocation(cid,502)
doSetCreatureOutfit(cid, {lookType=30}, -1)
addEvent(gokussj5,ext,cid)
doSendMagicEffect(getPlayerPosition(cid), 33)
doSetOutfit(cid, 30)
else
doPlayerSendCancel(cid, "Você precisa estar no level 30!")
doSendMagicEffect(getPlayerPosition(cid), 2)
end
else
doPlayerSendCancel(cid, "Você não tem mais transformações!")
 doSendMagicEffect(getPlayerPosition(cid), 2)
end
end

 

Aguardo anciosamente a ajuda de todos. Att. Giovane

 

Peço a ajuda de todos neste tópico também: http://www.xtibia.com/forum/topic/191064-ao-dar-look-em-player-aparecer-seu-level-e-vocacao/

Editado por GiovaneM
Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0

Olhá só, usa eu script aqui que eu fiz:

 

Em data/creaturescripts/scripts, duplica um arquivo e nomeia pra "outfitEffects" sem as aspas e nele cole:

function onLogin(cid)
registerCreatureEvent(cid, "OutfitEffects")
effectOut(cid, effect, out)    
end

local effect = {
   [136] = {3}, -- [looktype] = {effects}
   [279] = {17, 18},
   [141] = {66},
   [155] = {31, 32, 15},
   [288] = {6}
}

function onOutfit(cid, old, current)			  
   if effect[current.lookType] then
       for i=0, #effect[current.lookType] do
           effectOut(cid, effect, out)    
       end
   end
return true
end

function effectOut(cid, effect, out)
   if isPlayer(cid) and getCreatureOutfit(cid).lookType == out.lookType then
       doSendMagicEffect(cid, effect)
       addEvent(effectOut, 1000, cid, effect[current.lookType][i], current)
   end
end

 

Agora em creaturescripts.xml cole as tags:

<event type="login" name="OutfitLoginEffect" event="script" value="outfitEffects.lua"/>
<event type="outfit" name="OutfitEffects" event="script" value="outfitEffects.lua"/>

 

Prontinho, vai funcionar da seguinte maneira, ali você vai poder configurar quando o player tiver com tal outfit qual o effect vai ficar saindo nele, e é possível configurar mais de um effect por player.

Link para o comentário
Compartilhar em outros sites

  • 0

Olhá só, usa eu script aqui que eu fiz:

 

Em data/creaturescripts/scripts, duplica um arquivo e nomeia pra "outfitEffects" sem as aspas e nele cole:

function onLogin(cid)
registerCreatureEvent(cid, "OutfitEffects")
effectOut(cid, effect, out)	
end

local effect = {
[136] = {3}, -- [looktype] = {effects}
[279] = {17, 18},
[141] = {66},
[155] = {31, 32, 15},
[288] = {6}
}

function onOutfit(cid, old, current)			  
if effect[current.lookType] then
	for i=0, #effect[current.lookType] do
		effectOut(cid, effect, out)	
	end
end
return true
end

function effectOut(cid, effect, out)
if isPlayer(cid) and getCreatureOutfit(cid).lookType == out.lookType then
	doSendMagicEffect(cid, effect)
	addEvent(effectOut, 1000, cid, effect[current.lookType][i], current)
end
end

 

Agora em creaturescripts.xml cole as tags:

<event type="login" name="OutfitLoginEffect" event="script" value="outfitEffects.lua"/>
<event type="outfit" name="OutfitEffects" event="script" value="outfitEffects.lua"/>

 

Prontinho, vai funcionar da seguinte maneira, ali você vai poder configurar quando o player tiver com tal outfit qual o effect vai ficar saindo nele, e é possível configurar mais de um effect por player.

 

Primeiramente, muito obrigado pela sua ajuda, e agora eu lhe peço mas uma ajuda. Eu fiz tudo certinho e quando fui testar, apareceu esse erro no distro:

 

"Error: [CreatureEvent::configureEvent] No valid type for creature event.outfit

Warning: [baseEvetns::loadFromXml] Can not configure event"

 

Acredito que server wodbo, não conseguem registrar events. Alguma solução?

 

Peço sua ajuda aqui também: http://www.xtibia.com/forum/topic/191064-ao-dar-look-em-player-aparecer-seu-level-e-vocacao/

Editado por GiovaneM
Link para o comentário
Compartilhar em outros sites

  • 0

Tenta usar um dbo mais atual, porque fazer scripts pra coisa velha não é nada fácil.

 

Entao, eu ja pensei nisso, até mesmo em usar o seu 8.6, mas esse meu não é antigo, só é 8.0. Eu ja tentei passar o meu server para o seu, porem, só não consigo converter o map de 8.00 pra 8.6. Alguma dica?

Link para o comentário
Compartilhar em outros sites

  • 0

Bom pessoal, eu consegui fazer um script que funciona, porem, em partes. Ele faz a sua função, faz com que quando um player chegue em tal vocation ID, ele fique soltando raios e mesmo se deslogar, os raios não iram sair. Mas o problema é, mesmo que o player mude de vocation ID, ele continua soltando os raios, eu quero fazer um script que faze com que os raios saia somente na vocation ID que está no script, e não em todas a frente dessa. Peço a colaboração de todos. Vou postar o script:

 

 

 

 

function onLogin(cid)

 

if isInArray(getPlayerVocation(cid) == 782) then

doEffect(cid)

return TRUE

end

return TRUE

end

 

function doEffect(cid)

 

local efeito = 180

local delay = 1

 

if isCreature(cid) == TRUE then

doSendMagicEffect(getCreaturePosition(cid), 180)

addEvent(doEffect, delay*1000, cid)

end

return TRUE

end

 

 

 

Só uma observação, o script faz com que todas as vocation ID maior ou igual a 782 solte o raio e não só a vocation 782 que é o que eu quero.

Editado por GiovaneM
Link para o comentário
Compartilhar em outros sites

  • 0
function onLogin(cid)
if getPlayerVocation(cid) == 782 then
   doEffect(cid)
end
return TRUE
end

function doEffect(cid)
local efeito = 180
local delay = 1
if isCreature(cid) == TRUE and getPlayerVocation(cid) == 782 then
   doSendMagicEffect(getCreaturePosition(cid), 180)
   addEvent(doEffect, delay*1000, cid)
end
return TRUE
end

Link para o comentário
Compartilhar em outros sites

  • 0

function onLogin(cid)
if getPlayerVocation(cid) == 782 then
doEffect(cid)
end
return TRUE
end

function doEffect(cid)
local efeito = 180
local delay = 1
if isCreature(cid) == TRUE and getPlayerVocation(cid) == 782 then
doSendMagicEffect(getCreaturePosition(cid), 180)
addEvent(doEffect, delay*1000, cid)
end
return TRUE
end

 

Muito obrigado pela sua ajuda, funcionou. Mas agora, eu preciso que outra vocação tenha outro tipo de raio, por exemplo, a vocation ID 993 tenha o raio effect 180. Tem como me ajuda?

Link para o comentário
Compartilhar em outros sites

  • 0
config = {
   [782] = 180, -- [looktype] = effect
   [783] = 181,
   [784] = 182,
   [785] = 183
}

function onLogin(cid)
if config[getPlayerVocation(cid)] then
   doEffect(cid)
end
return TRUE
end

function doEffect(cid)
local delay = 1
if isCreature(cid) == TRUE and config[getPlayerVocation(cid)] then
    doSendMagicEffect(getCreaturePosition(cid), config[getPlayerVocation(cid)])
    addEvent(doEffect, delay*1000, cid)
end
return TRUE
end

Link para o comentário
Compartilhar em outros sites

  • 0

config = {
[782] = 180, -- [looktype] = effect
[783] = 181,
[784] = 182,
[785] = 183
}

function onLogin(cid)
if config[getPlayerVocation(cid)] then
doEffect(cid)
end
return TRUE
end

function doEffect(cid)
local delay = 1
if isCreature(cid) == TRUE and config[getPlayerVocation(cid)] then
	doSendMagicEffect(getCreaturePosition(cid), config[getPlayerVocation(cid)])
	addEvent(doEffect, delay*1000, cid)
end
return TRUE
end

 

Cara, você está de parabéns, funcionou perfeitamente, parabéns e muito obrigado. Só uma pergunta, o script não funciona quando eu coloco vocations ID como por exemplo 993, 992, 995, mas funciona perfeitamente com vocations ID 783, 710, 756. É normal isso?

Link para o comentário
Compartilhar em outros sites

  • 0

Não é normal, ta configurado pra funcionar com qualquer vocationId, verifica se tais adicionando as "," virgulas depois do effect, pois só o ultimo effect adicionado não precisa da virgula. E verifica se o char estão com essas vocationId mesmo.

Link para o comentário
Compartilhar em outros sites

  • 0

Não é normal, ta configurado pra funcionar com qualquer vocationId, verifica se tais adicionando as "," virgulas depois do effect, pois só o ultimo effect adicionado não precisa da virgula. E verifica se o char estão com essas vocationId mesmo.

 

Tudo verificado, e está coerente como deveria ser, porem, não funciona, mas, por sorte, eu não uso as vocations ID que não estao funcionando. Muito obrigado pela sua ajuda, logo, logo, terão mais duvidas rsrs, peço que me ajuda. Peço também que feche o tópico, pois a duvida foi sanada.

Link para o comentário
Compartilhar em outros sites

  • 0

[25/11/2012 15:47:54] [Warning - Event::loadScript] Event onOutfit not found (data/creaturescripts/scripts/outfitEffects.lua)

 

 

estou configurando o seu dbo 8.6 mais está dando esse erro !

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...