Ir para conteúdo
  • Cadastre-se

(Resolvido)[Pedido] Comando para evento


Ir para solução Resolvido por Danyel Varejao,

Posts Recomendados

Bom tenho uma base derivada de dbo, e queria um comando da seguinte forma:
 

O Staff ao usar um comando (exemplo: /abrireventopega-pega) , irá abrir para os player's um comando (exemplo: /evento) que ficará ativo por 30 segundos, ao player digitar /evento ele é teletransportado para uma coordenada X aonde acontecerá o evento. 
Ao término do evento o staff usará um comando (exemplo: /fechareventopega-pega nick do player1 que ganhou,nick do player que ficou em 2°lugar, nick do player que ficou em 3°lugar) assim o evento será encerrado e os players irão para uma coordenada Y e o prêmio é adcionado (em certa quantia de acordo com a colocação no evento) aos players. 

 

Alguém ae pode ajudar !

Link para o post
Compartilhar em outros sites
  • Moderador
1 hora atrás, moviebr disse:

Você já tem o evento pronto?

O evento não é automático. Tipo o administrador irá abrir o comando , e o player iria utiliza-lo para ir para tal coordenada x y z

Link para o post
Compartilhar em outros sites
  • Moderador
1 hora atrás, moviebr disse:

Você quer que crie um evento para você?

N Seria bem isto, seria como se fosse um teleport, mas com comando, e só funcionaria quando o (ADMIN ou GM) abrisse. Assim o Player ia ser teleportado para tal Coordenada X Y Z.

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

Veja se é isso que fiz.

 

Lib

Pega_Pega = {
	Storage_Open = 20000,
	Storage_Player = 20001,
	Time_Event = 30, -- Tempo em segundos
	Position_Go = {x = 149, y = 388, z = 7},
	Position_Finish = {x = 144, y = 388, z = 7},
	Winners = {
		[1] = {ItemID = 2160, Count = 20},
		[2] = {ItemID = 2160, Count = 10},
		[3] = {ItemID = 2160, Count = 5}
	}
}

function Open_PegaPega(cid, Time)
	if getGlobalStorageValue(Pega_Pega.Storage_Open) >= os.time() then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "[Pega-Pega] O evento já está ocorrendo.")
	else
		setGlobalStorageValue(Pega_Pega.Storage_Open, os.time() + Time)
		doBroadcastMessage("[Pega-Pega] Foi iniciado, todos os players tem ".. Time .." segundos para utilizar o comando /evento.")
	end
end

function Close_PegaPega(WinnersArray)
	for i, Name in pairs(WinnersArray) do 
		local Player = getCreatureByName(Name)
		if isPlayer(Player) then
			doPlayerAddItem(Player, Pega_Pega.Winners[i].ItemID, Pega_Pega.Winners[i].Count)
			doPlayerSendTextMessage(Player, MESSAGE_STATUS_WARNING, "[Pega-Pega] Você venceu o evento em ".. i .."º lugar e ganhou ".. Pega_Pega.Winners[i].Count .."x ".. getItemNameById(Pega_Pega.Winners[i].ItemID) ..".")
		end
	end
	for i, pid in pairs(getPlayersOnline()) do 
		if getPlayerStorageValue(pid, Pega_Pega.Storage_Player) == 1 then
			doTeleportThing(pid, Pega_Pega.Position_Finish, true)
			doSendMagicEffect(getThingPos(pid), CONST_ME_TELEPORT)
			setPlayerStorageValue(pid, Pega_Pega.Storage_Player, -1)
		end
	end
	doBroadcastMessage("[Pega-Pega] O evento foi encerrado e os ganhadores foram: 1º, 2º e 3º: ".. table.concat(WinnersArray, ', ') ..".")
end

function Enter_PegaPega(cid)
	if getGlobalStorageValue(Pega_Pega.Storage_Open) >= os.time() then
		if getPlayerStorageValue(cid, Pega_Pega.Storage_Player) == -1 then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "[Pega-Pega] Você entrou no evento.")
			setPlayerStorageValue(cid, Pega_Pega.Storage_Player, 1)
			doTeleportThing(cid, Pega_Pega.Position_Go, true)
			doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT)
		else
			doPlayerSendCancel(cid, "[Pega-Pega] Você já está no evento.")
			doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
		end
	else
		doPlayerSendCancel(cid, "[Pega-Pega] O evento não está aberto.")
	end
end

Talkaction Enter_PegaPega.lua

function onSay(cid, words, param, channel)
	if not getTilePzInfo(getPlayerPosition(cid)) then    
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "[Pega-Pega] Só pode usar o comando em area protect zone.")
		return true
	end
	if getPlayerAccess(cid) >= 3 then
		doTeleportThing(cid, Pega_Pega.Position_Go, true)
	else
		Enter_PegaPega(cid)
	end
	return true
end

Talkaction Close_PegaPega.lua

function onSay(cid, words, param, channel)
	local CommandParam = string.explode(param, ",")
	if not CommandParam[1] or CommandParam[1] == "" then
		doPlayerSendCancel(cid, "Digite o nome do 1º lugar a vencer o evento.")
	elseif not CommandParam[2] or CommandParam[2] == "" then
		doPlayerSendCancel(cid, "Digite o nome do 2º lugar a vencer o evento.")
	elseif not CommandParam[3] or CommandParam[3] == "" then
		doPlayerSendCancel(cid, "Digite o nome do 3º lugar a vencer o evento.")
	else
		Close_PegaPega({CommandParam[1], CommandParam[2], CommandParam[3]})
	end
	return true
end

Talkaction Open_PegaPega.lua

function onSay(cid, words, param, channel)
	Open_PegaPega(cid, Pega_Pega.Time_Event)
	return true
end

Talkactions.xml tags

<talkaction log="yes" words="/evento" event="script" value="Enter_PegaPega.lua"/>
<talkaction log="yes" access="3" words="/fechareventopega-pega" event="script" value="Close_PegaPega.lua"/>
<talkaction log="yes" access="3" words="/abrireventopega-pega" event="script" value="Open_PegaPega.lua"/>

 

Link para o post
Compartilhar em outros sites
Em 17/10/2017 em 03:23, Danyel Varejao disse:

Veja se é isso que fiz.

 

Lib


Pega_Pega = {
	Storage_Open = 20000,
	Storage_Player = 20001,
	Time_Event = 30, -- Tempo em segundos
	Position_Go = {x = 149, y = 388, z = 7},
	Position_Finish = {x = 144, y = 388, z = 7},
	Winners = {
		[1] = {ItemID = 2160, Count = 20},
		[2] = {ItemID = 2160, Count = 10},
		[3] = {ItemID = 2160, Count = 5}
	}
}

function Open_PegaPega(cid, Time)
	if getGlobalStorageValue(Pega_Pega.Storage_Open) >= os.time() then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "[Pega-Pega] O evento já está ocorrendo.")
	else
		setGlobalStorageValue(Pega_Pega.Storage_Open, os.time() + Time)
		doBroadcastMessage("[Pega-Pega] Foi iniciado, todos os players tem ".. Time .." segundos para utilizar o comando /evento.")
	end
end

function Close_PegaPega(WinnersArray)
	for i, Name in pairs(WinnersArray) do 
		local Player = getCreatureByName(Name)
		if isPlayer(Player) then
			doPlayerAddItem(Player, Pega_Pega.Winners[i].ItemID, Pega_Pega.Winners[i].Count)
			doPlayerSendTextMessage(Player, MESSAGE_STATUS_WARNING, "[Pega-Pega] Você venceu o evento em ".. i .."º lugar e ganhou ".. Pega_Pega.Winners[i].Count .."x ".. getItemNameById(Pega_Pega.Winners[i].ItemID) ..".")
		end
	end
	for i, pid in pairs(getPlayersOnline()) do 
		if getPlayerStorageValue(pid, Pega_Pega.Storage_Player) == 1 then
			doTeleportThing(pid, Pega_Pega.Position_Finish, true)
			doSendMagicEffect(getThingPos(pid), CONST_ME_TELEPORT)
			setPlayerStorageValue(pid, Pega_Pega.Storage_Player, -1)
		end
	end
	doBroadcastMessage("[Pega-Pega] O evento foi encerrado e os ganhadores foram: 1º, 2º e 3º: ".. table.concat(WinnersArray, ', ') ..".")
end

function Enter_PegaPega(cid)
	if getGlobalStorageValue(Pega_Pega.Storage_Open) >= os.time() then
		if getPlayerStorageValue(cid, Pega_Pega.Storage_Player) == -1 then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "[Pega-Pega] Você entrou no evento.")
			setPlayerStorageValue(cid, Pega_Pega.Storage_Player, 1)
			doTeleportThing(cid, Pega_Pega.Position_Go, true)
			doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT)
		else
			doPlayerSendCancel(cid, "[Pega-Pega] Você já está no evento.")
			doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
		end
	else
		doPlayerSendCancel(cid, "[Pega-Pega] O evento não está aberto.")
	end
end

Talkaction Enter_PegaPega.lua


function onSay(cid, words, param, channel)
	if not getTilePzInfo(getPlayerPosition(cid)) then    
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "[Pega-Pega] Só pode usar o comando em area protect zone.")
		return true
	end
	if getPlayerAccess(cid) >= 3 then
		doTeleportThing(cid, Pega_Pega.Position_Go, true)
	else
		Enter_PegaPega(cid)
	end
	return true
end

Talkaction Close_PegaPega.lua


function onSay(cid, words, param, channel)
	local CommandParam = string.explode(param, ",")
	if not CommandParam[1] or CommandParam[1] == "" then
		doPlayerSendCancel(cid, "Digite o nome do 1º lugar a vencer o evento.")
	elseif not CommandParam[2] or CommandParam[2] == "" then
		doPlayerSendCancel(cid, "Digite o nome do 2º lugar a vencer o evento.")
	elseif not CommandParam[3] or CommandParam[3] == "" then
		doPlayerSendCancel(cid, "Digite o nome do 3º lugar a vencer o evento.")
	else
		Close_PegaPega({CommandParam[1], CommandParam[2], CommandParam[3]})
	end
	return true
end

Talkaction Open_PegaPega.lua


function onSay(cid, words, param, channel)
	Open_PegaPega(cid, Pega_Pega.Time_Event)
	return true
end

Talkactions.xml tags


<talkaction log="yes" words="/evento" event="script" value="Enter_PegaPega.lua"/>
<talkaction log="yes" access="3" words="/fechareventopega-pega" event="script" value="Close_PegaPega.lua"/>
<talkaction log="yes" access="3" words="/abrireventopega-pega" event="script" value="Open_PegaPega.lua"/>

 

Quase deu certo, a unica coisa que faltou , foi que não teleporta o player para a posição do evento, Ao player dar /evento ele continua na mesma posição

Link para o post
Compartilhar em outros sites
3 horas atrás, TheKiler disse:

Quase deu certo, a unica coisa que faltou , foi que não teleporta o player para a posição do evento, Ao player dar /evento ele continua na mesma posição

Acho que você configurou uma posição que não existe, por favor verifique novamente.

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