Ir para conteúdo
  • Cadastre-se

(Resolvido)Comando para evento.


Ir para solução Resolvido por zipter98,

Posts Recomendados

Irei fazer evento bag, mas para isso preciso da ajuda de voces. Ok?

Vamos la:

Quero quando a staff falar o comando "/eventbag" abra um portal no meio do templo e libere o comando "/bag" para os player ate o evento acabar. Não quero que os player entre no evento duas vezes, nem pelo comando e nem pelo portal.

O comando "/bag" ira teleportar o player para o evento, e ele não pode estar de battle red.

O portal e o comando ficara liberado ate a staff falar "/enceventbag".

Por favor faça por ajudar e não por rep+. Porque voce podera receber em dobro o por teu esforço.

Desculpas por não ter editado, porque eu estou fiz este topico pelo celular. Agradeço a compreenção.

"O sucesso é uma consequência e não um objetivo. A persistência é o caminho do êxito".
Link para o post
Compartilhar em outros sites

Intão o seu pedido seria um script que o GM libera o evento de sua escolha e quem entrar recebe uma storage e quando o evento acabar a storage sai, correto?

wq3bBzt.png
Pokémon Dust Evolution
 
É aonde começa sua nova aventura!! 

 

Facebook

 
Verifique Atualizações

 

Link para o post
Compartilhar em outros sites

Esse /bag é um comando seu para teleportar os players para o evento ao invez de entrar no teleport?

 

Posta seu script desse comando em spoiler ai pra eu poder modificar.


De qualquer forma, fiz o comando do teleport e o movement do teleport, depois quando fizer o comando de teleport para o evento eu edito aqui.

 

Em talkations\scripts, crie um arquivo.lua com nome a escolha, e ponha dentro:

--[[ CRIADO POR xBlackWolf para duvida no TibiaKING ]]--
function onSay(cid, words, param, channel)
if(param == "") then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command requires param.")
return true
end


local teleportPos = {x = 992, y = 1167, z = 7, stackpos = 1} -- onde vai criar tp
local storageOn = 0000 -- storage que vai salvar se o evento está rolando ou não
    local q1 = getThingfromPos(teleportPos)


if(param == "on" and getGlobalStorageValue(storageOn) ~= 1) then
        broadcastMessage('Evento de Backpack começou! Entre no Teleport no templo, depois de entrar não poderá entrar nomante.', MESSAGE_STATUS_CONSOLE_RED)   
             doSetItemActionId(doCreateItem(1387, 1, teleportPos), 0001) -- actionID que terá no teleport
             setGlobalStorageValue(storageOn,1)
end
    if(param == "off" and getGlobalStorageValue(storageOn) == 1) then
        if(doRemoveItem(q1.uid, 1) == true) then  
           broadcastMessage('Evento acabou!', MESSAGE_STATUS_CONSOLE_RED)
           setGlobalStorageValue(storageOn, 0)
           db.executeQuery("DELETE FROM 'player_storage' WHERE 'key' = '0002';") -- altere para o valor da storage que vai salvar se o player entrou ou não, deverá ser o mesmo que o movements
        end  
    end
return true
end

Em talkations.xml adicione:

<talkaction log="yes" group="4" access="3" words="/eventbag" event="script" value="arquivo.lua"/>

OBS: Troque o nome arquivo.lua para o nome do arquivo que você criou em talkations\scripts

 

Agora em movements\scripts, crie um arquivo.lua e adicione dentro:

--[[ CRIADO POR xBlackWolf para duvida no TibiaKING ]]--
function onStepIn(cid, item, position, fromPosition)

local teleConfig = {
kickPos = fromPosition, 
kickEffect = CONST_ME_POFF,
kickMsg = "Você já entrou nesse evento uma vez, ou o evento está offline!",
enterMsg = "Bem vindo ao evento backpack!",
enterEffect = CONST_ME_MAGIC_RED,
storageOn = 8585,       -- mesma storage do arquivo no talkations, ela vai salvar se o evento está on ou não
storageEnter = 8587,   -- storage que salva se o player entrou ou não. MUITO IMPORTANTE!! DEVERÁ SER IGUAL AO DA QUERY NO ARQUIVO TALKATIONS
toPos = {x = 995, y = 1180, z = 5},   -- pos que o player vai ser teleportado para entrar no evento.
}

if getGlobalStorageValue(teleConfig.storageOn) == 1 and getPlayerStorageValue(cid, teleConfig.storageEnter) ~= 1 then
   doTeleportThing(cid, teleConfig.toPos)
   doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, teleConfig.enterMsg)
   setPlayerStorageValue(cid, teleConfig.storageEnter, 1)
   return true
end
    if getPlayerStorageValue(cid, teleConfig.storageEnter) == 1 or getGlobalStorageValue(teleConfig.storageOn) == 0 then
       doTeleportThing(cid, teleConfig.kickPos)
       doSendMagicEffect(teleConfig.kickPos, teleConfig.kickEffect)
       doPlayerSendCancel(cid, teleConfig.kickMsg)
       return true
       end

return true
end 

Agora em movements.xml adicione:

<movevent type="StepIn" actionid="0001" event="script" value="arquivo.lua"/> -- altere o numero 0001 para o mesmo do arquivo talkations, o actionID do teleport

Pronto, agora deve estar funcionando o teleport aparecendo e sendo removido, o player podendo entrar apenas uma vez, depois ele só conseguirá subir no teleport de novo se você fechar o evento.

 

COMANDOS:

GOD:

/eventbag on 

Liga o evento.

/eventbag off

Desliga o evento.

 

OBS: Seu servidor deverá ser MYSQL, caso contrário dará erro a remover a storage do player, e ele nunca mais vai conseguir entrar no evento.

 

Por favor, teste e me avisa se deu certo, depois da um REP pra ajudar =)

 

Abrs,

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

xBlackWolf

THX @Storm Night

Best Avatar Ever

 

9p0FoTd.png

Link para o post
Compartilhar em outros sites

Intão o seu pedido seria um script que o GM libera o evento de sua escolha e quem entrar recebe uma storage e quando o evento acabar a storage sai, correto?

Ss, mas é para qualquer um da staff e não so GM. E eu quero tudo q pedi.

Esse /bag é um comando seu para teleportar os players para o evento ao invez de entrar no teleport?

 

Eu não tenho este comando, por isso quero tudo completo.

Esse comando é de preferencia para os player, tipo o Portal ira nasce no templo, e é capaz que os player estejam em outro lugar longe, ai para poupar tempo, eu quero este comando.

 

/eventbag: Abre o Portal do evento e o libera o comando /bag.

/bag: Assim que o player falar /bag ele será teleportado para o evento.

/enceventbag: Encerra o evento bag e desativa o Comando /bag para os player.

Editado por Storm Night (veja o histórico de edições)
"O sucesso é uma consequência e não um objetivo. A persistência é o caminho do êxito".
Link para o post
Compartilhar em outros sites

OLha ai em cima que eu postei, está funcionando corretamente, porém tenho que arrumar 1 erro, onde, depois de fechar o evento, ele não está deletando a storage, ai se vc abrir de novo o player não entra. Vou arrumar isso jajá aguenta ai.

xBlackWolf

THX @Storm Night

Best Avatar Ever

 

9p0FoTd.png

Link para o post
Compartilhar em outros sites

Voce editou de novo foi?

Pq eu testei o primeiro, mas ai quando eu falo /eventbag on, não acontece nada.

Se tiver editado eu testo de novo.

 

 

OK, posso espera ate amanha...

Editado por Storm Night (veja o histórico de edições)
"O sucesso é uma consequência e não um objetivo. A persistência é o caminho do êxito".
Link para o post
Compartilhar em outros sites

Sim, eu editei e agora ele abre e fecha certinho, porém ainda falta arrumar a questão da storage, assim que voltar do almoço vou tentar .

--[[ CRIADO POR xBlackWolf para duvida no TibiaKING ]]--
function onSay(cid, words, param, channel)
	if(param == "") then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command requires param.")
		return true
	end

	local teleportPos = {x = 992, y = 1167, z = 7, stackpos = 1} -- onde vai criar tp
	local storageOn = 0000 -- storage que vai salvar se o evento está rolando ou não
    local q1 = getThingfromPos(teleportPos)
    local storageEnter = 0002

	if(param == "on" and getGlobalStorageValue(storageOn) ~= 1) then
	         broadcastMessage('Evento de Backpack começou! Entre no Teleport no templo, depois de entrar não poderá entrar nomante.', MESSAGE_STATUS_CONSOLE_RED)   
             doSetItemActionId(doCreateItem(1387, 1, teleportPos), 0001) -- actionID que terá no teleport
             setGlobalStorageValue(storageOn,1)
end
    if(param == "off" and getGlobalStorageValue(storageOn) == 1) then
        if(doRemoveItem(q1.uid, 1) == true) then  
           broadcastMessage('Evento acabou!', MESSAGE_STATUS_CONSOLE_RED)
           setGlobalStorageValue(storageOn, 0)
 -- altere para o valor da storage que vai salvar se o player entrou ou não, deverá ser o mesmo que o movements
          db.executeQuery("UPDATE `player_storage` SET `value`='0' WHERE `key` = '0002';")
        end  
    end
	return true
end

Seguinte, fiz um globalevent aqui, que se você desligar o evento e o player deslogar, ele vai perder a storage e qnd vc abrir o evento de novo, ele vai poder entrar no evento.  Então, se você for fazer por exemplo esse evento a cada algumas horas, se o cara não morrer nem deslogar, ele não vai conseguir entrar de novo no evento, acho bem dificil alguem n deslogar em algumas horas, seja por morte, ou sei la... assim, se alguem reclamar que não consegue entrar é só você avisar para relogarem. =)) 

 

Em Globalevents\scripts adicione um arquivo.lua com nome a definir, e adicione dentro:

--[[ CRIADO POR xBlackWolf para duvida no TibiaKING ]]--
function onThink(cid, interval, lastExecution)
         local storageEnter = 0002
         local storageOn = 0000
         
    if(getGlobalStorageValue(storageOn) == 0)then
       db.executeQuery("UPDATE `player_storage` SET `value`='0' WHERE `key` = '0002';")
    end 
    return TRUE
end

Em globalevents.xml adicione:

<globalevent name="bagevent" interval="300" script="arquivo.lua" />

O intervalo tem que ser pequeno mesmo, porque ai será praticamente no mesmo instante que o player deslogar.

 

Espero que ajude, agora só falta o talkation para teleportar se estiver de longe. Te pergunto, posso colocar para teleportar para perto do TP, ao invez de ir direto para o evento ? Porque acho que vamos enfrentar o mesmo problema...

 

Ja retorno com o outro evento.

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

xBlackWolf

THX @Storm Night

Best Avatar Ever

 

9p0FoTd.png

Link para o post
Compartilhar em outros sites

 

Espero que ajude, agora só falta o talkation para teleportar se estiver de longe. Te pergunto, posso colocar para teleportar para perto do TP, ao invez de ir direto para o evento ? Porque acho que vamos enfrentar o mesmo problema...

 

Ja retorno com o outro evento.

 

Ss, o que for melhor para você ja esta muito bom... 

 

Se precisar de uma foto de perfil para imitar um pouco o xwhitewolf, eu posso tentar fazer...

 

 

 

 

edit:

 

Testei esse novo script, mas tem 3 erros.

 

 post-127785-0-52650600-1423597474_thumb.

 

 : Aparece o portal no Templo mas ele não esta teleportando.

 

  Quando eu falo /eventbag off, o evento e o portal não fecha e nem desaparece, na verdade não acontece nada e não da nenhum erro.

Editado por Storm Night (veja o histórico de edições)
"O sucesso é uma consequência e não um objetivo. A persistência é o caminho do êxito".
Link para o post
Compartilhar em outros sites
  • Solução

Talkaction:

Tag:

<talkaction words="/eventbag;/bag;/enceventbag" event="script" value="nome_do_arquivo.lua"/>

Código:

local config = {
    tp = {
        pos = {x = x, y = y, z = z},       --Onde o teleporte será criado.
        toPos = {x = x, y = y, z = z},     --Para onde jogador será teleportado ao usar o comando /bag.
        tpId = 1328,                       --Id do teleporte.
        aid = 91801,
    },
    storages = {
        event_storage = 8591,
        storage = 9591,
    },
    groupId = 6,                           --Group ID mínimo para abrir o evento.
}
function onSay(cid, words)
    if words == "/eventbag" then
        if getPlayerGroupId(cid) < config.groupId then
            return false
        elseif getGlobalStorageValue(config.storages.event_storage) > -1 then
            return doPlayerSendCancel(cid, "The event is already openned.")
        end
        setGlobalStorageValue(config.storages.event_storage, 1)
        local item = doCreateItem(config.tp.tpId, 1, config.tp.pos)
        doItemSetAttribute(item, "aid", config.tp.aid)
        broadcastMessage("The bag event is open! You can enter only 1 time, then good luck!")
    elseif words == "/bag" then
        if getPlayerStorageValue(cid, config.storages.storage) > -1 then
            return doPlayerSendCancel(cid, "You already got into the event.")
        elseif getGlobalStorageValue(config.storages.event_storage) < 1 then
            return doPlayerSendCancel(cid, "The event isn't open.")
        end
        doPlayerSendTextMessage(cid, 27, "You were teleported to the event.")
        doTeleportThing(cid, config.tp.toPos)
        setPlayerStorageValue(cid, config.storages.storage, 1)
    elseif words == "/enceventbag" then
        if getPlayerGroupId(cid) < config.groupId then
            return false
        elseif getGlobalStorageValue(config.storages.event_storage) < 1 then
            return doPlayerSendCancel(cid, "The event isn't open.")
        end
        local teleport = getTileItemById(config.tp.pos, config.tp.tpId).uid
        if teleport and teleport > 0 then
            doRemoveItem(teleport)
        end
        for _, pid in pairs(getPlayersOnline()) do
            if getPlayerStorageValue(pid, config.storages.storage) > -1 then
                setPlayerStorageValue(pid, config.storages.storage, -1)
            end
        end
        db.executeQuery("UPDATE player_storage SET value = -1 WHERE key = "..config.storages.storage.." AND value > -1")
        setGlobalStorageValue(config.storages.event_storage, -1)
        broadcastMessage("The bag event is closed!")
    end
    return true
end
Movement:
Tag:
<movevent type="StepIn" actionid="91801" event="script" value="nome_do_arquivo.lua"/>
Código:
local config = {
    toPos = {x = x, y = y, z = z},     --Para onde o teleporte levará.
    event_storage = 8591,
    storage = 9591,
}
function onStepIn(cid, item, position, fromPosition)
    if not isPlayer(cid) then
        return true
    elseif getGlobalStorageValue(config.event_storage) < 1 then
        return doPlayerSendCancel(cid, "The event is closed.") and doTeleportThing(cid, fromPosition)
    elseif getPlayerStorageValue(cid, config.storage) > -1 then
        return doPlayerSendCancel(cid, "You can't go to the event.") and doTeleportThing(cid, fromPosition)
    end
    doTeleportThing(cid, config.toPos)
    doPlayerSendTextMessage(cid, 27, "You were teleported to the event.")
    setPlayerStorageValue(cid, config.storage, 1)
    return true
end
Editado por zipter98 (veja o histórico de edições)

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

 

Talkaction:

Tag:

<talkaction words="/eventbag;/bag;/enceventbag" event="script" value="nome_do_arquivo.lua"/>

Código:

local config = {
    tp = {
        pos = {x = x, y = y, z = z},       --Onde o teleporte será criado.
        toPos = {x = x, y = y, z = z},     --Para onde jogador será teleportado ao usar o comando /bag.
        tpId = 1328,                       --Id do teleporte.
        aid = 91801,
    },
    storages = {
        event_storage = 8591,
        storage = 9591,
    },
    groupId = 6,                           --Group ID mínimo para abrir o evento.
}
function onSay(cid, words)
    if words == "/eventbag" then
        if getPlayerGroupId(cid) < config.groupId then
            return false
        elseif getGlobalStorageValue(config.storages.event_storage) > -1 then
            return doPlayerSendCancel(cid, "The event is already openned.")
        end
        setGlobalStorageValue(config.storages.event_storage, 1)
        local item = doCreateItem(config.tp.tpId, 1, config.tp.pos)
        doItemSetAttribute(item, "aid", config.tp.aid)
        broadcastMessage("The bag event is open! You can enter only 1 time, then good luck!")
    elseif words == "/bag" then
        if getPlayerStorageValue(cid, config.storages.storage) > -1 then
            return doPlayerSendCancel(cid, "You already got into the event.")
        elseif getGlobalStorageValue(config.storages.event_storage) < 1 then
            return doPlayerSendCancel(cid, "The event isn't open.")
        end
        doPlayerSendTextMessage(cid, 27, "You were teleported to the event.")
        doTeleportThing(cid, config.tp.toPos)
        setPlayerStorageValue(cid, config.storages.storage, 1)
    elseif words == "/enceventbag" then
        if getPlayerGroupId(cid) < config.groupId then
            return false
        elseif getGlobalStorageValue(config.storages.event_storage) < 1 then
            return doPlayerSendCancel(cid, "The event isn't open.")
        end
        local teleport = getTileItemById(config.tp.pos, config.tp.tpId).uid
        if teleport and teleport > 0 then
            doRemoveItem(teleport)
        end
        for _, pid in pairs(getPlayersOnline()) do
            if getPlayerStorageValue(pid, config.storages.storage) > -1 then
                setPlayerStorageValue(pid, config.storages.storage, -1)
            end
        end
        db.executeQuery("UPDATE player_storage SET value = -1 WHERE key = "..config.storages.storage.." AND value > -1")
        setGlobalStorageValue(config.storages.event_storage, -1)
        broadcastMessage("The bag event is closed!")
    end
    return true
end
Movement:
Tag:
<movevent type="StepIn" actionid="91801" event="script" value="nome_do_arquivo.lua"/>
Código:
local config = {
    toPos = {x = x, y = y, z = z},     --Para onde o teleporte levará.
    event_storage = 8591,
    storage = 9591,
}
function onStepIn(cid, item, position, fromPosition)
    if not isPlayer(cid) then
        return true
    elseif getGlobalStorageValue(config.event_storage) < 1 then
        return doPlayerSendCancel(cid, "The event is closed.") and doTeleportThing(cid, fromPosition)
    elseif getPlayerStorageValue(cid, config.storage) > -1 then
        return doPlayerSendCancel(cid, "You can't go to the event.") and doTeleportThing(cid, fromPosition)
    end
    doTeleportThing(cid, config.toPos)
    doPlayerSendTextMessage(cid, 27, "You were teleported to the event.")
    setPlayerStorageValue(cid, config.storage, 1)
    return true
end

 

 

Vlw amno tu é muito foda, fez certinho como eu queria sem nenhum erro. Poxaa tu é zikaaa!!

@xBlackWolf

Fiz uma foto de perfil para você:

200x350px

post-127785-0-90097700-1423603965_thumb.

 

598x682px

post-127785-0-71602100-1423603987_thumb.

 

 

 

Se gostar avisa, se não falar por favor...

"O sucesso é uma consequência e não um objetivo. A persistência é o caminho do êxito".
Link para o post
Compartilhar em outros sites

HAHAHA muito obrigado! VOu utilziar =))

 

Pow, tentei ajudar, meu server é 10.35 e funcionou, acho que seu server não tem as funções que utilizei... Se puder dar REP eu agradeço, alguem pode servir... 

 

=)

xBlackWolf

THX @Storm Night

Best Avatar Ever

 

9p0FoTd.png

Link para o post
Compartilhar em outros sites

HAHAHA muito obrigado! VOu utilziar =))

 

Pow, tentei ajudar, meu server é 10.35 e funcionou, acho que seu server não tem as funções que utilizei... Se puder dar REP eu agradeço, alguem pode servir... 

 

=)

Q bom q gostou, te dei REP+++

"O sucesso é uma consequência e não um objetivo. A persistência é o caminho do êxito".
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