Ir para conteúdo
  • Cadastre-se

(Resolvido)Setar storage para todos em uma determinada área


Ir para solução Resolvido por Tottin,

Posts Recomendados

Boa noite galera! 

 

Postei cedo sobre esse script, a duvida foi sanada, mas surgiu outro problema depois que teste.

 

esse script serve para setar uma storage e criar um tp de saída para quando o boss for morto e isso esta acontecendo certinho, mas existe um problema, ele esta setando somente para o player que mata o boss e não para o time inteiro.

 

Então gostaria de pedir o suporte a vocês. Será que da para por o storage para setar para todos os players dentro de uma determinada área?

 

por exemplo usar, frompos e topos da área e fazer com que todos os players dentro desta posição , após matar o boss todos setarem a storage (46000, 5)

 

Meus sinceros agradecimentos a todos do TibiaKing!

 

local tps = {
                        ["hyaena"] = {pos = {x=349, y=1103, z=15}, toPos = {x = 518, y = 840, z = 7}, time = 10, storage = 46000},
}
local storage = 46000
local function removeTp(tp)
local t = getTileItemById(tp.pos, 5023).uid
return t > 0 and doRemoveItem(t) and doSendMagicEffect(tp.pos, CONST_ME_POFF)
end
function onKill(cid, target)
                        local tp = tps[getCreatureName(target)]
                        if tp then
						setPlayerStorageValue(cid, tp.storage, 5)
                        doCreateTeleport(5023, tp.toPos, tp.pos)
                        doCreatureSay(target, "O teleport irá sumir em "..tp.time.." segundos.", TALKTYPE_ORANGE_1)
                        addEvent(removeTp, tp.time*1000, tp)
                        end
						
                        return true
end 

 

 

 

Link para o post
Compartilhar em outros sites

Cara, isso aqui q to te mandando funciona, mas nao sei se vai dar certo pq n sei a versão do seu tfs ?

 

local tps = {
                        ["hyaena"] = {pos = {x=349, y=1103, z=15}, toPos = {x = 518, y = 840, z = 7}, time = 10, storage = 46000},
}
local storage = 46000
local function removeTp(tp)
local t = getTileItemById(tp.pos, 5023).uid
return t > 0 and doRemoveItem(t) and doSendMagicEffect(tp.pos, CONST_ME_POFF)
end

function onKill(cid, target)
                        local tp = tps[getCreatureName(target)]
                        if tp then
	local spect = getSpectators(target:getPosition(), 10, 10, false)
	for i = 1, #spect do
						setPlayerStorageValue(spect[i], tp.storage, 5)
	end
                        doCreateTeleport(5023, tp.toPos, tp.pos)
                        doCreatureSay(target, "O teleport irá sumir em "..tp.time.." segundos.", TALKTYPE_ORANGE_1)
                        addEvent(removeTp, tp.time*1000, tp)
                        end
						
                        return true
end 

 

Editado por Mor3nao (veja o histórico de edições)

MEUS POSTS:

 

SE AJUDEI, DÁ O REP+, ESQUECE NÃO, VLW BB <3

Link para o post
Compartilhar em outros sites

@Mor3nao  boa noite amigo!

 

entao a versão é TheForgottenServer, version 0.3.6 (Crying Damson)

deu erro na distro amigo!

7 minutos atrás, Mor3nao disse:

Cara, isso aqui q to te mandando funciona, mas nao sei se vai dar certo pq n sei a versão do seu tfs ?

 


local tps = {
                        ["hyaena"] = {pos = {x=349, y=1103, z=15}, toPos = {x = 518, y = 840, z = 7}, time = 10, storage = 46000},
}
local storage = 46000
local function removeTp(tp)
local t = getTileItemById(tp.pos, 5023).uid
return t > 0 and doRemoveItem(t) and doSendMagicEffect(tp.pos, CONST_ME_POFF)
end

function onKill(cid, target)
                        local tp = tps[getCreatureName(target)]
                        if tp then
	local spect = Game.getSpectators(target:getPosition(), false, true, 10, 10, 10, 10)
	for i = 1, #spect do
						setPlayerStorageValue(spect[i], tp.storage, 5)
	end
                        doCreateTeleport(5023, tp.toPos, tp.pos)
                        doCreatureSay(target, "O teleport irá sumir em "..tp.time.." segundos.", TALKTYPE_ORANGE_1)
                        addEvent(removeTp, tp.time*1000, tp)
                        end
						
                        return true
end 

 

 

 

[04/08/2020 21:24:46] [Error - CreatureScript Interface] 
[04/08/2020 21:24:46] data/creaturescripts/scripts/boss15.lua:onKill
[04/08/2020 21:24:46] Description: 
[04/08/2020 21:24:46] data/creaturescripts/scripts/boss15.lua:13: attempt to index global 'Game' (a nil value)
[04/08/2020 21:24:46] stack traceback:
[04/08/2020 21:24:46]     data/creaturescripts/scripts/boss15.lua:13: in function <data/creaturescripts/scripts/boss15.lua:10>

Link para o post
Compartilhar em outros sites
  • Moderador
41 minutos atrás, Mor3nao disse:

Cara, isso aqui q to te mandando funciona, mas nao sei se vai dar certo pq n sei a versão do seu tfs ?

 


local tps = {
                        ["hyaena"] = {pos = {x=349, y=1103, z=15}, toPos = {x = 518, y = 840, z = 7}, time = 10, storage = 46000},
}
local storage = 46000
local function removeTp(tp)
local t = getTileItemById(tp.pos, 5023).uid
return t > 0 and doRemoveItem(t) and doSendMagicEffect(tp.pos, CONST_ME_POFF)
end

function onKill(cid, target)
                        local tp = tps[getCreatureName(target)]
                        if tp then
	local spect = Game.getSpectators(target:getPosition(), false, true, 10, 10, 10, 10)
	for i = 1, #spect do
						setPlayerStorageValue(spect[i], tp.storage, 5)
	end
                        doCreateTeleport(5023, tp.toPos, tp.pos)
                        doCreatureSay(target, "O teleport irá sumir em "..tp.time.." segundos.", TALKTYPE_ORANGE_1)
                        addEvent(removeTp, tp.time*1000, tp)
                        end
						
                        return true
end 

 

Isso não vai funcionar, o seu código está para quem usa 1.x, no caso dele é 0.x.

 

A ideia é a mesma que ele fez, mas no 0.x creio que não há o getSpectators, terá que fazer um for para x e outro for para y e pegar os players nesse área.

Link para o post
Compartilhar em outros sites
12 horas atrás, Movie disse:

mas no 0.x creio que não há o getSpectators

Tem sim.

getSpectators(centerPos, rangex, rangey[, multifloor = false])

 

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link para o post
Compartilhar em outros sites

Editei lá, seguindo a função que o Woox mandou, ve se dá cerrto xD

MEUS POSTS:

 

SE AJUDEI, DÁ O REP+, ESQUECE NÃO, VLW BB <3

Link para o post
Compartilhar em outros sites

@Mor3nao  fala amigo, poxa deu o mesmo erro :(

 

[05/08/2020 21:45:03] [Error - CreatureScript Interface] 
[05/08/2020 21:45:03] data/creaturescripts/scripts/boss15.lua:onKill
[05/08/2020 21:45:03] Description: 
[05/08/2020 21:45:03] data/creaturescripts/scripts/boss15.lua:13: attempt to index global 'Game' (a nil value)
[05/08/2020 21:45:03] stack traceback:
[05/08/2020 21:45:03]     data/creaturescripts/scripts/boss15.lua:13: in function <data/creaturescripts/scripts/boss15.lua:10>

 

poxa será que não da? :(

Link para o post
Compartilhar em outros sites
7 minutos atrás, Lisbeky disse:

@Mor3nao  fala amigo, poxa deu o mesmo erro :(

 

[05/08/2020 21:45:03] [Error - CreatureScript Interface] 
[05/08/2020 21:45:03] data/creaturescripts/scripts/boss15.lua:onKill
[05/08/2020 21:45:03] Description: 
[05/08/2020 21:45:03] data/creaturescripts/scripts/boss15.lua:13: attempt to index global 'Game' (a nil value)
[05/08/2020 21:45:03] stack traceback:
[05/08/2020 21:45:03]     data/creaturescripts/scripts/boss15.lua:13: in function <data/creaturescripts/scripts/boss15.lua:10>

 

poxa será que não da? :(

vc n editou nao kk tenta dnv

MEUS POSTS:

 

SE AJUDEI, DÁ O REP+, ESQUECE NÃO, VLW BB <3

Link para o post
Compartilhar em outros sites

@Mor3nao  editei sim ... coloquei o script que vc editou la em cima. Mas vou tentar novamente :D

@Mor3nao Funcionou mano :D, Massss rsrsrs não setou o storage para o time, somente o que matou que conseguiu.

 

Obs estou fazendo o teste com apenas 1 batendo, mas os dois na party, justamente para testar se o outro vai conseguir o storage.

Link para o post
Compartilhar em outros sites

O script deveria dar pra todos os jogadors q estão a um raio de 10sqm do boss quando ele morrer.. os q nao estao batendo estao ao menos perto?

MEUS POSTS:

 

SE AJUDEI, DÁ O REP+, ESQUECE NÃO, VLW BB <3

Link para o post
Compartilhar em outros sites

@Mor3nao amigo , para diferenciar acabei nesse momento de fazer um teste com os dois players batendo e deu esse erro na distro. Tipo eles matam o monstro, mas a life do boss some e ele nao morre , entao a distro fica dando esse erro ai em baixo repetidamente.

 

[05/08/2020 22:21:35] [Error - CreatureScript Interface] 
[05/08/2020 22:21:35] data/creaturescripts/scripts/boss15.lua:onKill
[05/08/2020 22:21:35] Description: 
[05/08/2020 22:21:35] data/creaturescripts/scripts/boss15.lua:13: attempt to index local 'target' (a number value)
[05/08/2020 22:21:35] stack traceback:
[05/08/2020 22:21:35]     data/creaturescripts/scripts/boss15.lua:13: in function <data/creaturescripts/scripts/boss15.lua:10>

Link para o post
Compartilhar em outros sites
  • Solução

Resolvendo seu problema onde ao matar o monstro só quem fragava recebia o storage:
 

local tps = {
                        ["hyaena"] = {pos = {x=349, y=1103, z=15}, toPos = {x = 518, y = 840, z = 7}, time = 10, storage = 46000},
}
local storage = 46000
local function removeTp(tp)
local t = getTileItemById(tp.pos, 5023).uid
return t > 0 and doRemoveItem(t) and doSendMagicEffect(tp.pos, CONST_ME_POFF)
end


function onDeath(cid, corpse, deathList, frompos, topos)
        local tp = tps[getCreatureName(cid)]
        if tp then
                doCreateTeleport(5023, tp.toPos, tp.pos)
                doCreatureSay(cid, "O teleport irá sumir em "..tp.time.." segundos.", TALKTYPE_ORANGE_1)
                addEvent(removeTp, tp.time*1000, tp)
        for _, check in pairs(deathList) do
                if isPlayer(check) then
                        setPlayerStorageValue(check, tp.storage, 5)
                end
        end  

        end
return true
end 

registra no creaturescripts:
<event type="death" name="Storage" event="script" value="seuarquivo.lua"/>

registra no arquivo.xml do boss:
<script>
<event name="Storage"/>
</script>

Editado por Tottin (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

@Tottin  opa boa noite amigo! 

 

deu erro na distro

 

[05/08/2020 22:33:53] [Error - LuaScriptInterface::loadFile] data/creaturescripts/scripts/boss15.lua:23: 'end' expected (to close 'function' at line 11) near '<eof>'
[05/08/2020 22:33:53] [Warning - Event::loadScript] Cannot load script (data/creaturescripts/scripts/boss15.lua)
[05/08/2020 22:33:53] data/creaturescripts/scripts/boss15.lua:23: 'end' expected (to close 'function' at line 11) near '<eof>'

Link para o post
Compartilhar em outros sites
1 minuto atrás, Lisbeky disse:

@Tottin  opa boa noite amigo! 

 

deu erro na distro

 

[05/08/2020 22:33:53] [Error - LuaScriptInterface::loadFile] data/creaturescripts/scripts/boss15.lua:23: 'end' expected (to close 'function' at line 11) near '<eof>'
[05/08/2020 22:33:53] [Warning - Event::loadScript] Cannot load script (data/creaturescripts/scripts/boss15.lua)
[05/08/2020 22:33:53] data/creaturescripts/scripts/boss15.lua:23: 'end' expected (to close 'function' at line 11) near '<eof>'

Tenta denovo, editei ali, estava faltando o fechamento de um if.

Link para o post
Compartilhar em outros sites

@Tottin  deu erro tambem ... o teleporte nao esta sendo criado :(

 


[05/08/2020 22:41:33] [Error - CreatureScript Interface] 
[05/08/2020 22:41:33] data/creaturescripts/scripts/boss15.lua:onDeath
[05/08/2020 22:41:33] Description: 
[05/08/2020 22:41:33] (luaGetCreatureName) Creature not found

Link para o post
Compartilhar em outros sites
2 minutos atrás, Lisbeky disse:

@Tottin  deu erro tambem ... o teleporte nao esta sendo criado :(

 


[05/08/2020 22:41:33] [Error - CreatureScript Interface] 
[05/08/2020 22:41:33] data/creaturescripts/scripts/boss15.lua:onDeath
[05/08/2020 22:41:33] Description: 
[05/08/2020 22:41:33] (luaGetCreatureName) Creature not found

Testa agora

Link para o post
Compartilhar em outros sites

@Tottin  show mano funcionou! :D 

 

deu o storage para os dois que bateram no boss... mas deu um erro , só vê se da pra consertar esse erro, q é a msg do tempo do teleport.

 

e tambem me tira uma duvida... somente quem bater no boss é que ganhará a storage ne? ou todos da party? ou todos que estiver proximo sem atk incluido? tira essa duvida.

 

[05/08/2020 22:50:12] [Error - CreatureScript Interface] 
[05/08/2020 22:50:12] data/creaturescripts/scripts/boss15.lua:onDeath
[05/08/2020 22:50:12] Description: 
[05/08/2020 22:50:12] (luaDoCreatureSay) Creature not found

Link para o post
Compartilhar em outros sites
1 minuto atrás, Lisbeky disse:

@Tottin  show mano funcionou! ?

 

deu o storage para os dois que bateram no boss... mas deu um erro , só vê se da pra consertar esse erro, q é a msg do tempo do teleport.

 

e tambem me tira uma duvida... somente quem bater no boss é que ganhará a storage ne? ou todos da party? ou todos que estiver proximo sem atk incluido? tira essa duvida.

 

[05/08/2020 22:50:12] [Error - CreatureScript Interface] 
[05/08/2020 22:50:12] data/creaturescripts/scripts/boss15.lua:onDeath
[05/08/2020 22:50:12] Description: 
[05/08/2020 22:50:12] (luaDoCreatureSay) Creature not found

Deu editei lá denovo, e sim somente quem bater no boss vai receber a storage, mesmo que esteja perto ou na party, não irá receber se não atacar.

Link para o post
Compartilhar em outros sites

@Tottin SHOWWWW, funcionou 100% , obrigada mesmo mano :D segura meu rep+ ai , pois vc merece tmj

@Tottin  amigo, então.... acabei esquecendo de pedir um detalhe, já que é vinculado ao mesmo script então não vou abrir outro tópico. 

 

teria como vc por pra o tp ser criado aonde o boss morre... pois ele vai pra uma localização sendo que as vezes o player ta longe e pode perder o tp...então fica mais fácil o teleporte aparecer onde o boss morre. Teria como fazer essa mudança? obrigada meu amigo! 

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo