OT

To Com Uma Duvida Em Um Script.

Por othereality, 04 de jun. de 2011 em Scripts

otserv
tibia
script
10
1.3k
otherealityO
04 de junho de 2011 às 00:24

eai galera eu estou com um escript do Doidin aqui,

foi até apriveitar pra agradecer ele por ter feito =D

 

mas ele tem um unico problema que eu não consegui resolver,

o scrip a seguir:

 

-- [( Script created by Doidin for XTibia.com )] --
function onUse(cid, item, fromPosition, item2, toPosition)

local itemid = 2195  -- ID do item que o player ganhará!
local monstername1 = "Dragon Lord" -- Nome dos monstros que serão sumonados após o player clicar no item!
local monstername2 = "Dragon" -- Nome dos monstros que serão sumonados após o player clicar no item!
local monster1 = {x=161,y=101,z=7} -- Coordenas de a onde o monstro irá aparecer! (Dragon Lord)
local monster2 = {x=162,y=102,z=7} -- Coordenas de a onde o monstro irá aparecer! (Dragon Lord)
local monster3 = {x=163,y=103,z=7} -- Coordenas de a onde o monstro irá aparecer! (Dragon Lord)
local monster4 = {x=164,y=104,z=7} -- Coordenas de a onde o monstro irá aparecer! (Dragon)
local monster5 = {x=165,y=105,z=7} -- Coordenas de a onde o monstro irá aparecer! (Dragon)

actionstatus = getPlayerStorageValue(cid,6666)
if actionstatus == -1 then
if doCreatureSay(cid,"You went in the wrong place, beware!",TALKTYPE_ORANGE_1) then
setPlayerStorageValue(cid,6666,1)
else
doPlayerSendTextMessageCancel(cid,MESSAGE_INFO_DESCR,"Sorry is not possible.")
end

function Quest()
doPlayerSendTextMessage(cid,22,"You have found the secret item!")
doPlayerAddItem(cid,itemid,1)
end

function Summon()
doSummonCreature(monstername1,monster1)
doSummonCreature(monstername1,monster2)
doSummonCreature(monstername1,monster3)
doSummonCreature(monstername2,monster4)
doSummonCreature(monstername2,monster5)
doSendMagicEffect(monster1,36)
doSendMagicEffect(monster2,36)
doSendMagicEffect(monster3,36)
doSendMagicEffect(monster4,36)
doSendMagicEffect(monster5,36)
end

addEvent(Summon,100)
addEvent(Summon,15000)
addEvent(Summon,30000)
addEvent(Summon,45000)
addEvent(Summon,60000)
addEvent(Summon,75000)
addEvent(Quest,6000)
end
end

 

 

na parte onde aparece:

 

addEvent(Summon,100)
addEvent(Summon,15000)
addEvent(Summon,30000)
addEvent(Summon,45000)
addEvent(Summon,60000)
addEvent(Summon,75000)
addEvent(Quest,6000)

 

Não está funcionando todos os summons aparecem ao mesmo tempo,

não importa o tempo que eu bote.

 

e tem um:

 

addEvent(Summon,time)

 

a mais do que a quantidade de monstros a ser sumonados é assim mesmo?

 

 

vlw Doidin pelo script,

e obrigado a quem poder me ajudar.

Editado Junho 4 por OtheReality

infernityI
04 de junho de 2011 às 00:59

Mano não intendo disso mas vo tenta ajuda.

Normal:

addEvent(Summon,100)
addEvent(Summon,15000)
addEvent(Summon,30000)
addEvent(Summon,45000)
addEvent(Summon,60000)
addEvent(Summon,75000)
addEvent(Quest,6000)

Mude para:

addEvent(monster1,100)
addEvent(monster2,15000)
addEvent(monster3,30000)
addEvent(monster4,45000)
addEvent(monster5,60000)
addEvent(Quest,6000)

 

Se isso não der certo o erro pode ter sido ocorido porque tem addEvent(Summon,time) a mais, retire 1 deles e teste.Espero ter ajudado.

_____________________________________________________________________________________________________________________________________

Ajudei? verdinha :button_ok:

61ec48409f664c3bb1ef6ef151dcbd11.0.gif

otherealityO
04 de junho de 2011 às 12:14

eai infernity,

vlw pela ajuda mas nem funcionou.

 

mas dando mais uma mechida eu percebi o seguinte:

o script sumona todos os bixos para cada addEvent(Summon,time), e no tempo certo.

 

se eu retirar oque tem a mais ele buga,

e se eu trocar por "monster1" também buga.

 

ainda nada.

se tiver alguma outra idéia diz ae que eu testo. =D

Henrique MouraH
04 de junho de 2011 às 12:22

Não sei não, não era pra acontecer isso. Mas o que você pode fazer é adicionar uma função para cada evento.

 

Exemplo:

 

function Summon1()
doSummonCreature(monstername1,monster1)
doSendMagicEffect(monster1,36)

 

addEvent(Summon1, time)

 

É uma possível solução, mas como não manjo disso não posso dizer muita coisa.

Abraços e boa sorte.

04 de junho de 2011 às 18:23

Hmm, parece que o nosso amigo Doidin se equivocou um pouquinho.

 

Vamos lá, observe esta parte do código:

 

function Summon()
doSummonCreature(monstername1,monster1)
doSummonCreature(monstername1,monster2)
doSummonCreature(monstername1,monster3)
doSummonCreature(monstername2,monster4)
doSummonCreature(monstername2,monster5)
doSendMagicEffect(monster1,36)
doSendMagicEffect(monster2,36)
doSendMagicEffect(monster3,36)
doSendMagicEffect(monster4,36)
doSendMagicEffect(monster5,36)
end

addEvent(Summon,100)
addEvent(Summon,15000)
addEvent(Summon,30000)
addEvent(Summon,45000)
addEvent(Summon,60000)
addEvent(Summon,75000)

 

Agora pense comigo. Ele criou uma função que sumona 5 monstros quando executada. E ele usou a função addEvent que faz essa função ser executada após tanto tempo.

 

Porém, ele usou o addEvent 5 vezes, logo, 5 monstros vão ser criados depois de tanto tempo, depois de mais tanto tempo mais 5, e assim vai... (se eles não estão sendo criado deve ser por falta de espaço na área)

 

A solução é fazer como henrique sugeriu.

Editado Junho 4 por Demonbholder

otherealityO
04 de junho de 2011 às 21:03

vlw henrique,

e vlw demonbeholder está acontecendo exatamente isso.

acabei conseguindo resolver do jeito que o henrique sugerio.

 

e só pra comentar:

é impressionante a habilidade pra lidar com scripts que eu percebo em algumas pessoas aqui no xtibia,

demonbeholder conseguio descrever exatamente que erro ocorreria sem testar o script.

 

 

vlw a todos.

Garou12G
05 de junho de 2011 às 15:09

Olá,

 

Juntando tudo o que nossos amigos falaram e também com algumas modificações que eu mesmo fiz, acho que o script poderá ficar assim :)

 

local config = {
storageNumber = 6666,
giveItem = 2195,
msg = {
	found = "You have found the secret item!",
	warn = "You went to the wrong place, beware!",
	cancel = "Sorry, not possible."
},
monster = {
	["Dragon Lord"] = 3,
	["Dragon"] = 2
}
}


function onUse(cid, item, fromPosition, itemEx, toPosition)
local function summon()
	for monster, times in pairs(config.monster) do
		for i = 1, times do
			addEvent(doSummonCreature, i*1000, monster, {x = 160+i, y = 100+i, z = 7})
		end
	end
end

local status = getPlayerStorageValue(cid, config.storageNumber)
if(status ~= 1) then
	doCreatureSay(cid, config.msg.warn, TALKTYPE_ORANGE_1)
	doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, config.msg.found)
	doPlayerAddItem(cid, config.giveItem, 1)
	addEvent(summon, 0)
else
	doPlayerSendCancel(cid, config.msg.cancel)
end
return true
end

 

Eu não testei, mas acho que funciona (y)

 

Abraços,

Editado Junho 5 por Garou

otherealityO
06 de junho de 2011 às 15:10

o meu funcionando direitonho ficou assim:

 

 

function onUse(cid, item, fromPosition, item2, toPosition)

local itemid = 2195
local monstername1 = "Dragon Lord"
local monstername2 = "Dragon"
local monster1 = {x=161,y=101,z=7}
local monster2 = {x=162,y=102,z=7}
local monster3 = {x=163,y=103,z=7}

actionstatus = getPlayerStorageValue(cid,6666)
if actionstatus == -1 then
if doCreatureSay(cid,"You went in the wrong place, beware!",TALKTYPE_ORANGE_1) then
setPlayerStorageValue(cid,6666,1)
else
doPlayerSendTextMessageCancel(cid,MESSAGE_INFO_DESCR,"Sorry is not possible.")
end

function Quest()
doPlayerSendTextMessage(cid,22,"You have found the secret item!")
doPlayerAddItem(cid,itemid,1)
end

function Summon1()
doSummonCreature(monstername1,monster1)
doSendMagicEffect(monster1,36)
end

function Summon2()
doSummonCreature(monstername1,monster2)
doSendMagicEffect(monster2,36)
end

function Summon3()
doSummonCreature(monstername2,monster3)
doSendMagicEffect(monster3,36)
end

addEvent(Summon1,100)
addEvent(Summon2,15000)
addEvent(Summon3,30000)
addEvent(Quest,6000)
end
end

 

Se alguem quer está ai. /\

acho que o seu ficou menor mas esse e mais facinho de editar.

 

=P

06 de junho de 2011 às 19:07

Sua dúvida foi sanda? Posso mover para dúvidas sanadas?

 

Abraços.

otherealityO
07 de junho de 2011 às 02:19

Pode mover claro,

Duvida sanada.