Ir para conteúdo
  • Cadastre-se

(Resolvido)(PEDIDO) alguém poderia me ajudar nesse script da anihi


Ir para solução Resolvido por Danyel Varejao,

Posts Recomendados

Boa noite tk, Bom vou ser breve, alguém poderia adicionar 3 coisas nesse script para mim ?.

1- Remover monstros( exemplo: Puxei a lavanca e morri lá dentro, aí quando outra pessoa for, o monstro que me matou lá some e nasce outro com a vida full.

2- Mensagens ( exemplo: Quando estiver faltando players, ou quando o player não tiver level suficiente, dinheiro e tals ... essas mensagens.

3- Apenas um time entrar por vez na quest, aí só pode entrar quando o time que estiver fazendo sair ou morrer é claro kk...( que no caso também mande uma mensagem pra quem puxar a alavanca, falando que tem outro time fazendo a quest...

desde já agradeço REP+ Pra quem me ajudar.

local config = {
    money = 1000,                     --Preço cobrado para cada jogador.
    daily = "no",                    -- allow only one enter per day? (like in global Tibia)
    level = 5,
    storage = 30015,
    entry =
    {
        {x = 1736, y = 1855, z = 8},

    },
    destination =
    {
        {x = 1737, y = 1868, z = 8},
    
     }, 
      TOWERPosition =
      {
   {x = 1737, y = 1869, z = 8},
    }
}
 
config.daily = getBooleanFromString(config.daily)

function onUse(cid, item, fromPosition, itemEx, toPosition)
    if(item.itemid == 1946) then
        if(config.daily) then
            doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
        else
            doTransformItem(item.uid, item.itemid - 1)
        end
     
        return true
    end
     
    if(item.itemid ~= 1945) then
        return true
    end
     
  local players = {}
    for _, position in ipairs(config.entry) do
        local pid = getTopCreature(position).uid
        if(pid == 0 or not isPlayer(pid) or getCreatureStorage(pid, config.storage) > 0 or getPlayerLevel(pid) < config.level) then
            doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
            return true
        end

        table.insert(players, pid)
    end
    
    for j = 1, 1 do

        doSummonCreature("Destroyer TOWER", config.TOWERPosition[j])
    end

    for i, pid in ipairs(players) do
        doSendMagicEffect(config.entry[i], CONST_ME_POFF)
        doTeleportThing(pid, config.destination[i], false)
        doSendMagicEffect(config.destination[i], CONST_ME_ENERGYAREA)
    end

    doTransformItem(item.uid, item.itemid + 1)
    return true
end

 

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

 

local config = {
	money = 1000,
	daily = "no",
	level = 5,
	storage = 30015,
	areas = {
		[1] = {
			topLeftPos = {x = 1736, y = 1855, z = 8},
			bottomRightPos = {x = 1736, y = 1855, z = 8},
		},
		[2] = {
			topLeftPos = {x = 1736, y = 1855, z = 8},
			bottomRightPos = {x = 1736, y = 1855, z = 8},
		},
	},
	entry = {
		{x = 1736, y = 1855, z = 8},
	},
	destination = {
		{x = 1737, y = 1868, z = 8},
	}, 
	TOWERPosition = {
		{x = 1737, y = 1869, z = 8},
	}
}
 
config.daily = getBooleanFromString(config.daily)

local function CheckAnihilationInUse()
	for i = 1, #config.areas do
		for x = config.areas[i].topLeftPos.x, config.areas[i].bottomRightPos.x do
			for y = config.areas[i].topLeftPos.y, config.areas[i].bottomRightPos.y do
				for z = config.areas[i].topLeftPos.z, config.areas[i].bottomRightPos.z do
					local creature = getTopCreature({x = x, y = y, z = z}).uid
					if isPlayer(creature) then
						return true
					end
				end
			end
		end
	end
	return false
end

local function RemoveMonsters()
	local monsters = {}
	for i = 1, #config.areas do
		for x = config.areas[i].topLeftPos.x, config.areas[i].bottomRightPos.x do
			for y = config.areas[i].topLeftPos.y, config.areas[i].bottomRightPos.y do
				for z = config.areas[i].topLeftPos.z, config.areas[i].bottomRightPos.z do
					local position = {x = x, y = y, z = z, stackpos = 253}
					local creature = getThingfromPos(position)
					if isMonster(creature.uid) then
						table.insert(monsters, creature.uid)
					end
				end
			end
		end
	end
	for i = 1, #monsters do
		doRemoveCreature(monsters[i])
	end
end

function onUse(cid, item, fromPosition, itemEx, toPosition)
	if(item.itemid == 1946) then
		if(config.daily) then
			doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
		else
			doTransformItem(item.uid, item.itemid - 1)
		end
		return true
	end
     
	if(item.itemid ~= 1945) then
		return true
	end
    
	if CheckAnihilationInUse() then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "A arena esta em uso, espere.")
		return true
	end
	
	local players = {}
	for _, position in ipairs(config.entry) do
		local pid = getTopCreature(position).uid
		if(pid == 0 or not isPlayer(pid) or getCreatureStorage(pid, config.storage) > 0 or getPlayerLevel(pid) < config.level or getPlayerMoney(cid) < config.money) then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "No minimo players de level ".. config.level .." e possuir ".. config.money .." gold coins.")
			return true
		end
		table.insert(players, pid)
	end
	RemoveMonsters()
	for i = 1, #config.TOWERPosition do
		doSummonCreature("Destroyer TOWER", config.TOWERPosition[i])
	end

	for i, pid in ipairs(players) do
		doSendMagicEffect(config.entry[i], CONST_ME_POFF)
		doTeleportThing(pid, config.destination[i], false)
		doSendMagicEffect(config.destination[i], CONST_ME_ENERGYAREA)
	end
    doTransformItem(item.uid, item.itemid + 1)
    return true
end

 

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

Opa meu amigo, só não entendi essa parte, poderia me explicar ? 

topLeftPos = {x = 1736, y = 1855, z = 8}, -- Topo de cima < /\
		bottomRightPos = {x = 1736, y = 1855, z = 8}, --  Area de baixo V \/

 

16 minutos atrás, Danyel Varejao disse:

 


local config = {
	money = 1000,
	daily = "no",
	level = 5,
	storage = 30015,
	area =
	{
		topLeftPos = {x = 1736, y = 1855, z = 8}, -- Topo de cima < /\
		bottomRightPos = {x = 1736, y = 1855, z = 8}, --  Area de baixo V \/
	},
	entry =
	{
		{x = 1736, y = 1855, z = 8},
	},
	destination =
	{
		{x = 1737, y = 1868, z = 8},
	}, 
	TOWERPosition =
	{
		{x = 1737, y = 1869, z = 8},
	}
}
 
config.daily = getBooleanFromString(config.daily)

local function checkAnihilationToUse()
	for x = config.area.topLeftPos.x, config.area.bottomRightPos.x do
		for y = config.area.topLeftPos.y, config.area.bottomRightPos.y do
			for z = config.area.topLeftPos.z, config.area.bottomRightPos.z do
				local position = {x = x, y = y, z = z, stackpos=253}
				local thing = getThingfromPos(position)
				if not isPlayer(thing.uid) then
					return true
				end
			end
		end
	end
	return false
end

local function RemoveMonsters()
	local monsters = {}
	for x = config.area.topLeftPos.x, config.area.bottomRightPos.x do
		for y = config.area.topLeftPos.y, config.area.bottomRightPos.y do
			for z = config.area.topLeftPos.z, config.area.bottomRightPos.z do
				local Creature = getTopCreature({x = x, y = y, z = z})
				if Creature.type == 1 then
					return
				elseif Creature.type == 2 then
					table.insert(monsters, Creature.uid)
				end
			end
		end
	end
	for i = 1, #monsters do
		doRemoveCreature(monsters[i])
	end
end

function onUse(cid, item, fromPosition, itemEx, toPosition)
	if(item.itemid == 1946) then
		if(config.daily) then
			doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
		else
			doTransformItem(item.uid, item.itemid - 1)
		end
		return true
	end
     
    if(item.itemid ~= 1945) then
        return true
    end
    
	if not checkAnihilationToUse() then
		doPlayerSendDefaultCancel(cid, MESSAGE_EVENT_ORANGE, "A arena esta em uso, espere.")
		return true
	end
	
	local players = {}
	for _, position in ipairs(config.entry) do
		local pid = getTopCreature(position).uid
		if(pid == 0 or not isPlayer(pid) or getCreatureStorage(pid, config.storage) > 0 or getPlayerLevel(pid) < config.level) then
			doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
			return true
		end
		table.insert(players, pid)
	end
	RemoveMonsters()
    for i = 1, #config.TOWERPosition do
        doSummonCreature("Destroyer TOWER", config.TOWERPosition[i])
    end

	for i, pid in ipairs(players) do
		doSendMagicEffect(config.entry[i], CONST_ME_POFF)
		doTeleportThing(pid, config.destination[i], false)
		doSendMagicEffect(config.destination[i], CONST_ME_ENERGYAREA)
	end
    doTransformItem(item.uid, item.itemid + 1)
    return true
end

 

amigo, acabei de testar aqui, não está mandando a mensagem, e não está removendo as tower e também está dando pra entrar varias pessoas ao mesmo tempo.....

Editado por ZeenG (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
6 minutos atrás, Danyel Varejao disse:

Se você não configurou a area certa não vai remover..

 

Screenshot_1.jpg

Então no caso vai ser, onde começa e onde termina as torres ? e se for dois andares ? posso só adicionar mais duas linhas de left e battom ?

pronto agora está removendo, mas não está mandando as mensagem, e ainda pode entrar dois times de uma vez...

Editado por ZeenG (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
5 minutos atrás, Danyel Varejao disse:

Editei lá, da uma olhada e testa, não to testando

[21:39:52.404] [Error - Action Interface]
[21:39:52.405] data/actions/scripts/QUEST/sss.lua:onUse
[21:39:52.408] Description:
[21:39:52.408] data/actions/scripts/QUEST/sss.lua:58: attempt to index global 'thing' (a nil value)
[21:39:52.411] stack traceback:
[21:39:52.413]  data/actions/scripts/QUEST/sss.lua:58: in function 'RemoveMonsters'
[21:39:52.415]  data/actions/scripts/QUEST/sss.lua:98: in function <data/actions/scripts/QUEST/sss.lua:70>

[21:39:53.915] [Error - Action Interface]
[21:39:53.916] data/actions/scripts/QUEST/sss.lua:onUse
[21:39:53.919] Description:
[21:39:53.924] data/actions/scripts/QUEST/sss.lua:58: attempt to index global 'thing' (a nil value)
[21:39:53.925] stack traceback:
[21:39:53.929]  data/actions/scripts/QUEST/sss.lua:58: in function 'RemoveMonsters'
[21:39:53.931]  data/actions/scripts/QUEST/sss.lua:98: in function <data/actions/scripts/QUEST/sss.lua:70>

[21:39:54.467] [Error - Action Interface]
[21:39:54.468] data/actions/scripts/QUEST/sss.lua:onUse
[21:39:54.470] Description:
[21:39:54.471] data/actions/scripts/QUEST/sss.lua:58: attempt to index global 'thing' (a nil value)
[21:39:54.475] stack traceback:
[21:39:54.477]  data/actions/scripts/QUEST/sss.lua:58: in function 'RemoveMonsters'
[21:39:54.481]  data/actions/scripts/QUEST/sss.lua:98: in function <data/actions/scripts/QUEST/sss.lua:70>

deu esses erros :x

Link para o post
Compartilhar em outros sites
3 minutos atrás, Danyel Varejao disse:

Coloca dnv, tinha esquecido de editar essa parte

[21:44:52.065] [Error - LuaInterface::loadFile] data/actions/scripts/QUEST/sss.lua:30: '}' expected (to close '{' at line 1) near 'config'
[21:44:52.066] [Warning - Event::loadScript] Cannot load script (data/actions/scripts/QUEST/sss.lua)
[21:44:52.066] data/actions/scripts/QUEST/sss.lua:30: '}' expected (to close '{' at line 1) near 'config'

esse agora :s

Link para o post
Compartilhar em outros sites
5 minutos atrás, Danyel Varejao disse:

Posta ele aqui com sua edição, você deve ter errado em colocar as areas.

Perdão erro meu, agora está enviando a mensagem > 21:52 No minimo players de level 5 e possuir 1000 gold coins. Mas ainda está dando pra entrar com outro time dentro :s, e a mensagem que avisa se tem outro time ou não , também não aparece.

Link para o post
Compartilhar em outros sites
12 minutos atrás, Danyel Varejao disse:

Vê agr

[22:18:24.409] [Error - Action Interface]
[22:18:24.411] data/actions/scripts/QUEST/sss.lua:onUse
[22:18:24.412] Description:
[22:18:24.413] data/actions/scripts/QUEST/sss.lua:57: attempt to index global 'thing' (a nil value)
[22:18:24.414] stack traceback:
[22:18:24.414]  data/actions/scripts/QUEST/sss.lua:57: in function 'RemoveMonsters'
[22:18:24.416]  data/actions/scripts/QUEST/sss.lua:97: in function <data/actions/scripts/QUEST/sss.lua:69>

erro :s, consegui arrumar, agora está perfeito rep + dúvida sanada <3

Editado por ZeenG (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • 2 weeks later...

tem como por pra fazer a quest varias vezes ao dia? sendo que pra entrar nela o jogador deve ter 1 item especifico na bag!

 

OBS: A QUEST É PRA UM JOGADOR E NAO TIME.

 

OBS2: TER TEMPO LIMITE DENTRO DA AREA DA QUEST, 2 MIN, DPS DISSO O JOGADOR É MANDADO PRA FORA!

 

DESDE DE JA OBG!

Editado por Joaoafp (veja o histórico de edições)
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.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo