Jump to content

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


Go to solution Solved by Tottin,

Recommended Posts

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 to post
Share on other 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 

 

Edited by Mor3nao (see edit history)

MEUS POSTS:

 

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

Link to post
Share on other 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 to post
Share on other sites

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 to post
Share on other 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 to post
Share on other 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 to post
Share on other 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 to post
Share on other 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 to post
Share on other 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 to post
Share on other 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 to post
Share on other 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 to post
Share on other sites

  • Solution

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>

Edited by Tottin (see edit history)
Link to post
Share on other 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 to post
Share on other 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 to post
Share on other 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 to post
Share on other 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 to post
Share on other 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 to post
Share on other 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 to post
Share on other 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 to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

Confirmação de Termo