Ir para conteúdo
  • Cadastre-se

Posts Recomendados

A ideia do "CLICK UP" já vem de algum tempo de alguns servidores onlines atualmente, então aprimorei e automatizei esse sistema.

O Click UP já conhecido funciona da seguinte forma, é necessário um ADM de um servidor utilizar um comando, melhor dizendo uma "SPELL" onde irá aparecer um item em diversos SQM's em uma área X em volta do ADM. Onde os jogadores podem sair clicando no mesmo ganhando "leveis".

Venho lançar o CLICK UP 2.0 Onde o sistema consiste não apenas em ganhar em cada uso, e sim em ter uma possibilidade facilmente editável de ao utilizar o item o jogador ganhar level e criar um "Monstro" configurado pelo ADM na script. Podendo ser um Boss, uma Trap, um Rotworm que seja, indo da vontade do dono do servidor.

O sistema funciona da seguinte maneira -> Ao utilizar o item que aparece no chão do evento, irá aparecer um "número" em laranja no jogador, esse número pode variar em uma quantidade X que será definida pelo ADM, Quanto maior o número, mais difícil a chance de sucesso em criar o monstro após o uso do item. Exemplo: Se o sistema estiver configurado em 100, o sistema irá funcionar como um DICE, porém será 100 números e não apenas 6. Nesse caso a chance de criar o monstro ao utilizar o item será de 1 em 100. Para o monstro aparecer é necessário aparecer o número "4". Sempre que um jogador utilizar o item e surgir o número "4" o mesmo irá criar automaticamente um Monstro, onde poderá ser morto por todos participantes do evento! Além é claro, de ganhar a quantidade X de level que o item está configurado para dar.

 

Vamos Ao Script

 

Primeiro criamos uma ACTION onde iremos configurar a principal parte do sistema, onde está relacionado a quantidade de level máximo que poderá receber level, configurar a quantidade de leveis que cada click irá dar e por final configurar a chance de surgir um monstro ao utilizar o item. Crie o arquivo.lua com o nome de sua preferencia, no meu caso utilizei por "evento"

Citar

exp = 50
local monster = "Boss Reward"
function onUse(cid,item)
local r1 = math.random(150)
if (getPlayerStorageValue(cid, 11577) >= os.time()) then
doCreatureSay(cid, "Você só pode usar em  ".. (getPlayerStorageValue(cid, 11577)-os.time()+(1)) .."  segundos. ", TALKTYPE_ORANGE_1)
return true
end
if getPlayerLevel(cid) <= 100000 then
if r1 == 4 then
doCreateMonster(monster, getPlayerPosition(cid))
doRemoveItem(item.uid,1)
setPlayerStorageValue(cid,11577,os.time()+4)
doCreatureSay(cid, "Achei o Boss [".. monster .."]\nSorte ".. r1 .."", TALKTYPE_ORANGE_1)
doSendMagicEffect(getPlayerPosition(cid), 65)
elseif r1 ~= 4 then
doPlayerAddLevel(cid,exp)
doRemoveItem(item.uid,1)
setPlayerStorageValue(cid,11577,os.time()+4)
doCreatureSay(cid, "Upando!!!\nSorte ".. r1 .."", TALKTYPE_ORANGE_1)
doSendMagicEffect(getPlayerPosition(cid), 35)
end
else
doPlayerSendTextMessage(cid, 22, "Você já está level muito alto para participar deste evento.")
end
return true
end

Level ganho por CLICK

Monstro que irá surgir ao sair o número da sorte

Chance de surgir o monstro

Level máximo para participar do evento

Número da sorte que fará surgir o Monstro

Tempo necessário para utilizar novamente o item do evento "OBS: o número sempre será somado em +1, como está no script "4" o tempo para reutilizar será 5 segundos".

 

Em action.xml iremos adicionar a seguinte linha:

Citar

<action itemid="9911" script="evento.lua"/>

ID do item a ser usado no evento que será usado nos clicks para ganhar leveis e tentar a sorte para surgir monstros.

 

Seguimos para próxima etapa. Para o evento ser realizado manualmente pelo ADM, basta criar uma SPELL utilizando o seguinte codigo.

Citar

local combat = createCombatObject() 
setCombatParam(combat, COMBAT_PARAM_CREATEITEM, 9911)
arr = { 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1} 

local area = createCombatArea(arr) 
setCombatArea(combat, area) 

function spellCallbackHappy(param) 
        if param.count > 0 or math.random(0, 1) == 1 then 
            doSendMagicEffect(param.pos, math.random(28,30)) 
            if math.random(0, 6) == 1 then 
                doCreatureSay(param.cid, "Evento FKZOT!", TALKTYPE_MONSTER, false, 0, param.pos) 
            end 
            param.count = param.count - 1 
            addEvent(spellCallbackHappy, math.random(2000, 7000), param) 
        end 
end 

function onTargetTileHappy(cid, pos) 
    addEvent(spellCallbackHappy, math.random(500, 2000), {["cid"] = cid, ["pos"] = pos, ["count"] = 20}) 
end 

setCombatCallback(combat, CALLBACK_PARAM_TARGETTILE, "onTargetTileHappy") 

function onCastSpell(cid, var) 
        doBroadcastMessage("O evento CLICK UP começou, venha se divertir.")
    return doCombat(cid, combat, var) 
end

 

Em Spells.xml Adicione a seguinte função:

Citar

        <instant name="event" words="/click" aggressive="0" selftarget="1" lvl="99999999" mana="1000" exhaustion="1500" event="script" value="event.lua">
                <vocation id="1"/>
    </instant>

 

Até aqui o sistema já está funcionando perfeitamente, porém sendo realizado manualmente pelo ADM do servidor, agora vamos a outra ETAPA, automatizar o evento!

 

Primeiro, vamos em GlobalEvents iremos adicionar um novo script lua com o nome de "clickUp".

Citar

function onTime()
    clickOpen()
    return true
end

Em globalevents.xml iremos adicionar 2 linhas:

Citar

        <globalevent name="ClickUpOpen" time="21:10" event="script" value="clickUp.lua"/>
        <globalevent name="ClickUpClose" time="21:25" event="script" value="clickUp.lua"/>

Horário de inicio do evento.

Horário de termino do evento.

 

Agora iremos na pasta LIB, iremos criar uma função, onde será toda magica da automatização do sistema. Criaremos um arquivo lua com o nome de "clickuplib":

Citar

click = {
    teleportPosition = {x = 167, y = 53, z = 7},
    toTeleportPosition = {x = 75, y = 525, z = 7},
    inicioSala = {x = 43, y = 513, z = 7},
    fimSala = {x = 71, y = 539, z = 7},
    templo = {x = 154, y = 50, z = 7}
}

function criaItens(cid)
    for x = click.inicioSala.x, click.fimSala.x do
        for y = click.inicioSala.y, click.fimSala.y do
            if not isPlayer(getThingFromPos({x=x,y=y,z=click.inicioSala.z, stackpos = 253}).uid) then
                doCreateItem(9911, 1, {x=x, y=y, z=click.inicioSala.z})
            end
        end
    end
end

function removePlayersTime(cid)
    for x = click.inicioSala.x, click.fimSala.x  do
        for y = click.inicioSala.y, click.fimSala.y do
            local remove, clean = true, true
            local pos = {x = x, y = y, z = click.inicioSala.z}
            local m = getTopCreature(pos).uid
            if m ~= 0 and isPlayer(m) then
                doTeleportThing(m, click.templo)
            end
        end
    end
    return true
end

function resetaSala(cid)
    for x = click.inicioSala.x, click.fimSala.x  do
        for y = click.inicioSala.y, click.fimSala.y do
            local remove, clean = true, true
            local pos = {x = x, y = y, z = click.inicioSala.z}
            local m = getTopCreature(pos).uid
            if m ~= 0 and isPlayer(m) then
                doTeleportThing(m, click.toTeleportPosition)
            end
        end
    end
    return true
end

function limparSala()
    for x = click.inicioSala.x, click.fimSala.x do
        for y = click.inicioSala.y, click.fimSala.y do
            doRemoveItem(getThingFromPos({x=x,y=y,z=click.inicioSala.z, stackpos = 1}).uid, 1)
        end
    end
end

function clickClose()
    removePlayersTime(cid)
    doRemoveItem(getTileThingByPos({x = 167, y = 53, z = 7, stackpos = 2}).uid, 1)
    limparSala()
    doBroadcastMessage("[CLICK UP] Evento acabou flw.")
    return true
end

function clickOpen()
    doBroadcastMessage("[CLICK UP] Teleport para o evento click up foi criado no templo.")
    doCreateTeleport(1387, click.toTeleportPosition, click.teleportPosition)
    addEvent(function()
        criaItens(cid)
        doBroadcastMessage("[CLICK UP] Comecou a primeira rodada.")
    end, 2000)
    addEvent(function()
        limparSala()
        criaItens(cid)
        doBroadcastMessage("[CLICK UP] Comecou a segunda rodada.")
        resetaSala(cid)
    end, 3*60*1000)
    addEvent(function()
        limparSala()
        criaItens(cid)
        doBroadcastMessage("[CLICK UP] Comecou a terceira rodada.")
        resetaSala(cid)
    end, 6*60*1000)
    addEvent(function()
        limparSala()
        criaItens(cid)
        doBroadcastMessage("[CLICK UP] Comecou a quarta rodada.")
        resetaSala(cid)
    end, 9*60*1000)
    addEvent(function()
        limparSala()
        criaItens(cid)
        doBroadcastMessage("[CLICK UP] Comecou a quinta rodada.")
        resetaSala(cid)
    end, 12*60*1000)
    addEvent(function()
        limparSala()
        clickClose()
    end, 16*60*1000)
    return true
end

Posição do teleporte que será criado para levar os jogadores ao EVENTO.

Posição que será configurada no teleporte que irá levar os jogadores ao EVENTO.

Dimensão inicial da sala do evento! Canto superior esquerdo!

Dimensão final da sala do evento! Canto inferior direito!

Posição do templo do servidor, onde jogadores serão levados ao finalizar o evento!

 

O evento automatizado funciona em rodadas, que acontecem a cada determinado templo, atualmente configurado de 4 em 4 minutos, A cada ROUND os jogadores serão levados ao inicio da sala do evento, e os itens do evento "mais conhecidos como: Click UP" Serão reiniciados em toda a sala configurada!

O sistema é totalmente funcional, testado e comprovado!

 

 

CRÉDITOS

 

60% a mim @Carrascohsf pela criação do CLICK UP 2.0 onde é possível surgir monstros durante o evento.

40% ao @AdmNewTibia por toda automatização do evento. Obs: Melhor programador para qualquer tipo de sistema, desde o mais simples como automatizar um evento, quanto ao mais complexo como sistema de imbuiment na versão 8.6. Qualquer necessidade de contratar os serviços do mesmo aqui está o contato: [email protected] Ou através do whatsapp: (11) 93006-3905.

Link para o post
Compartilhar em outros sites

Parabéns, seu tópico de conteúdo foi aprovado!
Muito obrigado pela sua contribuição, nós do Tibia King agradecemos.
Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP.

Spoiler

Congratulations, your content has been approved!
Thank you for your contribution, we of Tibia King we are grateful.
Your content will help many other users, you received +1 REP.

 

Compre seus Scripts Agora totalmente seguro e de forma rápida, aceitamos também encomendas.

discord.gg/phJZeHa2k4

 

Projeto ATS (Naruto)

Informações Abaixo

Facebook

Youtube
Discord

 

Tutoriais / Conteúdos

Clique Aqui

Link para o post
Compartilhar em outros sites
  • 2 months later...

 

Em 03/01/2020 em 23:38, Carrascohsf disse:

A ideia do "CLICK UP" já vem de algum tempo de alguns servidores onlines atualmente, então aprimorei e automatizei esse sistema.

O Click UP já conhecido funciona da seguinte forma, é necessário um ADM de um servidor utilizar um comando, melhor dizendo uma "SPELL" onde irá aparecer um item em diversos SQM's em uma área X em volta do ADM. Onde os jogadores podem sair clicando no mesmo ganhando "leveis".

Venho lançar o CLICK UP 2.0 Onde o sistema consiste não apenas em ganhar em cada uso, e sim em ter uma possibilidade facilmente editável de ao utilizar o item o jogador ganhar level e criar um "Monstro" configurado pelo ADM na script. Podendo ser um Boss, uma Trap, um Rotworm que seja, indo da vontade do dono do servidor.

O sistema funciona da seguinte maneira -> Ao utilizar o item que aparece no chão do evento, irá aparecer um "número" em laranja no jogador, esse número pode variar em uma quantidade X que será definida pelo ADM, Quanto maior o número, mais difícil a chance de sucesso em criar o monstro após o uso do item. Exemplo: Se o sistema estiver configurado em 100, o sistema irá funcionar como um DICE, porém será 100 números e não apenas 6. Nesse caso a chance de criar o monstro ao utilizar o item será de 1 em 100. Para o monstro aparecer é necessário aparecer o número "4". Sempre que um jogador utilizar o item e surgir o número "4" o mesmo irá criar automaticamente um Monstro, onde poderá ser morto por todos participantes do evento! Além é claro, de ganhar a quantidade X de level que o item está configurado para dar.

 

Vamos Ao Script

 

Primeiro criamos uma ACTION onde iremos configurar a principal parte do sistema, onde está relacionado a quantidade de level máximo que poderá receber level, configurar a quantidade de leveis que cada click irá dar e por final configurar a chance de surgir um monstro ao utilizar o item. Crie o arquivo.lua com o nome de sua preferencia, no meu caso utilizei por "evento"

Level ganho por CLICK

Monstro que irá surgir ao sair o número da sorte

Chance de surgir o monstro

Level máximo para participar do evento

Número da sorte que fará surgir o Monstro

Tempo necessário para utilizar novamente o item do evento "OBS: o número sempre será somado em +1, como está no script "4" o tempo para reutilizar será 5 segundos".

 

Em action.xml iremos adicionar a seguinte linha:

ID do item a ser usado no evento que será usado nos clicks para ganhar leveis e tentar a sorte para surgir monstros.

 

Seguimos para próxima etapa. Para o evento ser realizado manualmente pelo ADM, basta criar uma SPELL utilizando o seguinte codigo.

 

Em Spells.xml Adicione a seguinte função:

 

Até aqui o sistema já está funcionando perfeitamente, porém sendo realizado manualmente pelo ADM do servidor, agora vamos a outra ETAPA, automatizar o evento!

 

Primeiro, vamos em GlobalEvents iremos adicionar um novo script lua com o nome de "clickUp".

Em globalevents.xml iremos adicionar 2 linhas:

Horário de inicio do evento.

Horário de termino do evento.

 

Agora iremos na pasta LIB, iremos criar uma função, onde será toda magica da automatização do sistema. Criaremos um arquivo lua com o nome de "clickuplib":

Posição do teleporte que será criado para levar os jogadores ao EVENTO.

Posição que será configurada no teleporte que irá levar os jogadores ao EVENTO.

Dimensão inicial da sala do evento! Canto superior esquerdo!

Dimensão final da sala do evento! Canto inferior direito!

Posição do templo do servidor, onde jogadores serão levados ao finalizar o evento!

 

O evento automatizado funciona em rodadas, que acontecem a cada determinado templo, atualmente configurado de 4 em 4 minutos, A cada ROUND os jogadores serão levados ao inicio da sala do evento, e os itens do evento "mais conhecidos como: Click UP" Serão reiniciados em toda a sala configurada!

O sistema é totalmente funcional, testado e comprovado!

 

 

CRÉDITOS

 

60% a mim @Carrascohsf pela criação do CLICK UP 2.0 onde é possível surgir monstros durante o evento.

40% ao @AdmNewTibia por toda automatização do evento. Obs: Melhor programador para qualquer tipo de sistema, desde o mais simples como automatizar um evento, quanto ao mais complexo como sistema de imbuiment na versão 8.6. Qualquer necessidade de contratar os serviços do mesmo aqui está o contato: [email protected] Ou através do whatsapp: (11) 93006-3905.

 

Coloque os DEVIDOS CREDITOS AMIGO, EU SOU O CRIADOR do sistema e eu que fiz a VERSÃO 2.0

547657261_assinaturatibiaking.jpg.c1cc2728d9b7e7142cd10bf237f3370d.jpg

'' Uma ideia é apenas uma ideia, até ser desenvolvida, mastigada, retratada, analisada e por fim se tornar uma boa ideia. ''

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.


  • Conteúdo Similar

    • Por luanluciano93
      Olá pessoal, estou desenvolvendo esse sistema vip para TFS 1.x, se precisarem de alguma função nova é só comentar, criei para usar em um servidor meu e resolvi postar, bom proveito a todos.
       
      É só ir no arquivo data/lib/core/player.lua e adicionar esse código no começo do script:
      -- ALTER TABLE `accounts` ADD `vip_time` BIGINT(20) NOT NULL DEFAULT 0; -- player:getVipTime() function Player.getVipTime(self) local resultId = db.storeQuery("SELECT `vip_time` FROM `accounts` WHERE `id` = '".. self:getAccountId() .."';") local time = resultId ~= false and result.getNumber(resultId, "vip_time") or 0 result.free(resultId) return time end -- player:isVip() function Player.isVip(self) return self:getVipTime() > os.time() and true or false end -- player:addVipDays(days) function Player.addVipDays(self, days) return(self:isVip() and tonumber((days * 86400))) and db.query("UPDATE `accounts` SET `vip_time` = '".. (self:getVipTime() + (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") or db.query("UPDATE `accounts` SET `vip_time` = '".. (os.time() + (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") end -- player:removeVipDays(days) function Player.removeVipDays(self, days) return(self:isVip() and tonumber((days * 86400))) and db.query("UPDATE `accounts` SET `vip_time` = '".. (self:getVipTime() - (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") or db.query("UPDATE `accounts` SET `vip_time` = '".. (os.time() - (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") end -- player:setVipDays(days) function Player.setVipDays(self, days) return db.query("UPDATE `accounts` SET `vip_time` = '".. (os.time() - (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") end -- player:removeVip() function Player.removeVip(self) db.query("UPDATE `accounts` SET `vip_time` = '0' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") end -- player:sendVipDaysMessage() function Player.sendVipDaysMessage(self) if self:isVip() then local vipTime = self:getVipTime() - os.time() local vipDays = 1 + (math.floor(vipTime / 86400)) return self:getVipTime() ~= false and self:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'You have '.. vipDays .. ' vip day(s) in your account.') end end -- player:checkVipLogin() function Player.checkVipLogin(self) if self:getVipTime() > 0 and not self:isVip() then return self:removeVip() and self:teleportTo(self:getTown():getTemplePosition()) end end  
       
      As funções são:
      • player:getVipTime() - Retorna o valor da tabela vip_time (igual esta na database).
      • player:isVip() - Retorna se o player é vip ou não.
      • player:addVipDays(days) - Usa-se em algum script para para adicionar dias de vip ao player (parâmetro de entrada "days").
      • player:removeVipDays(days) - Usa-se em algum script para para remover dias de vip do player (parâmetro de entrada "days").
      • player:setVipDays(days) - Usa-se em algum script para para mudar os dias de vip do player (parâmetro de entrada "days").
      • player:removeVip() - Usa-se em algum script para para remover todo tempo de vip do player.
      • player:sendVipDaysMessage() - Retorna uma mensagem no player mostrando os dias de vip que ainda restam ao player.
      • player:checkVipLogin() - Checa se a vip do player acabou, se sim teleporta ele para o templo.
       

      Qualquer dúvida ou erro/bug poste aqui.
    • Por Killua
      Como funciona?
      A cada monstro que vc mata, seus itens equipados ganham 1 de exp. Quando seus itens chegarem às quantidades de exp definidas, eles upam e ficam com o nome assim: Demon Helmet + 1. Helmets, armors, legs, e boots recebem 1 de arm a cada vez que upam. Armas recebem 1 de ataque e escudos 1 de defesa.
       
      Para o monstro contar, ele deve dar um mínimo de exp (definido no script). O número de exp a que me refiro é aquele um presente no arquivo .xml.
       
      Para instalar, crie Killua Items Upgrade.lua em data/creaturescripts/scripts e coloque:
        Em data/creaturescripts/creaturescripts.xml coloque essas duas tags:
      <event type="kill" name="Item level" event="script" value="Killua Items Upgrade.lua"/> <event type="login" name="Item levell" event="script" value="Killua Items Upgrade.lua"/> Configurando: Na tabela table_of_slots, coloque em quais slots os itens upam.
      min_exp é a experiência mínima que o monstro deve ter para contar exp para o item. Se vc colocar 500, somente os monstros que tem exp igual ou superior a 500 no arquivo.xml vão valer.
      exp_levels são os valores de exp que os itens devem atingir para upar. No meu caso, quando o item alcançar 50 de exp, ele upa para o level 1. Quando alcançar 50 de exp, upa para o level 2 e assim por diante.
    • Por Sekk
      Bom, procurei esse Castle por MUITO TEMPO, mas não achei em NENHUM LUGAR DA INTERNET. Ontem, eu estava vendo alguns mapas do @Deathrocks, e vi nos prints, que o mapa possuia o evento que eu queria!
       
      Então baixei o mapa e extrai o evento, então venho lhes trazer!
       
       
      Nome: Castle 24H
      Cliente: 8.6
      Versão TFS: 0.4
      Tipo: Evento
       
      Bom, para começar, vamos em actions/scripts e crie 2 arquivos:
       
      castledoor1.lua
       
      castlewar1.lua
       
        Agora em actions.xml adicione as tags:
       
      Agora em monster/traps crie 3 arquivos:
       
      porta.xml
       
      protectcastle.xml  
      statue.xml  
      Agora em monsters.xml adicione as tags:    
      Vamos para movements/scripts e crie 2 arquivos:
       
      castlewar2.lua
       
      level.lua  
      Agora em movements.xml adicione as tags:  
       
      Pronto. Agora você só precisa baixar o mapa, inserir o mesmo ao seu servidor, configurar os teleports, e as hunts dentro do castle etc.
       
      PRINTS:
      1ª parte
       
      2ª parte:
       
      Obs.: Todos os ActionID e monsters já estão no mapa! Você só precisa configurar as coordenadas dos teleports, e o que possui no castle!
       
      Obs².: Tudo o que você pode configurar, já está escrito em cada script!
       
       
      Créditos:
      @DeathRocks
      PC98
      mapa.rar
    • Por gpedro
      Testado: MySQL & SQLite
      Distro: TFS 0.4_SVN & TFS 0.3.6

      MySQL

      ALTER TABLE `players` ADD `resets` INT(11) NOT NULL DEFAULT "0"; SQLite ALTER TABLE players ADD resets INTEGER not null default 0 Adicionando nas sources player.h procure por: uint32_t level; logo abaixo, adicione: uint32_t resets; iologindata.cpp procure por query << "SELECT `id`, `account_id`, `group_id`, `world_id`, `sex`, `vocation`, `experience`, `level`," substitua por: query << "SELECT `id`, `account_id`, `group_id`, `world_id`, `sex`, `vocation`, `experience`, `level`, `resets`, " procure por player->level = std::max((uint32_t)1, (uint32_t)result->getDataInt("level")); logo abaixo adicione: player->resets = (uint32_t)result->getDataInt("resets"); procure por query << "`maglevel` = " << player->magLevel << ", "; logo abaixo adicione: query << "`resets` = " << player->resets << ", "; players.cpp procure por: s << " (Level " << level << ")"; substitua por: s << " (Level " << level << ") [Reset " << resets << "]"; players.h procure por: void setPromotionLevel(uint32_t pLevel); logo abaixo adicione: uint32_t getResets() { return resets;} void setResets(int32_t amount) { resets += amount; if (resets < 0) {resets = 0;} } luascript.cpp para 0.3.6 static int32_t luaDoPlayerSetIdleTime(lua_State* L); logo abaixo adicione: static int32_t luaGetResets(lua_State* L); static int32_t luaSetResets(lua_State* L); talkactions.xml <talkaction words="!rank;/rank" event="script" value="ranks.lua"/> <talkaction words="!reset;/reset" script="reset.lua"/> ranks.lua
      Créditos: Dark Skyllen, Marcryzius, Mock, Kydrai, Cykotitan, gpedro*.
      * adaptação para 0.4
    • Por VitorSubhi
      Apresentação: Olá galera do Tibia King, este é meu primeiro tutorial que desenvolvo após anos apenas sugando da comunidade, chegou a hora de compartilhar um pouco de conhecimento, rsrs...
      Após ver que muitos usuários tinham interesse em um sistema de Trade de Points in-game resolvi trazer um sistema totalmente completo para vocês.
       
      Funcionamento:
      Player 1 após adquirir os Points, pode iniciar uma negociação com o Player 2 através do comando /tradepoints Player 2, Quantidade. Será aberto uma Janela de Trade com o item referente aos Points. Após ambos aceitarem a negociação será realizado a troca de Points pelo item requisitado.
      Observações:
      Necessário ter acesso às Sources de sua Distro. Testado em servidor 8.6 (The Forgotten Server 0.4). Antes que venham falar que possui sistemas parecidos, veja o diferencial (Item não aparece em nenhum inventário, e não é necessário usar/comprar qualquer item).  
      Algumas Imagens:
       
      Instalação:
      Sources > Luascript.cpp Sources > Luascript.cpp Sources > Luascript.h  
       
      Server > Data > Lib > 050-function Server > Data > Creaturescripts > Scripts >Trade_Orbs.lua Server > Data > Creaturescripts > Creaturescripts.xml Server > Data > Creaturescripts > Scripts > Login.lua Server > Data > Talkactions > Scripts > Points_Trade.lua Server > Data > Talkactions > Talkactions.xml Créditos:
      Todo o sistema foi feito completamente por mim: Vítor Subhi.
      The Forgotten Server (Pelas Sources)
      Vodkart, White Wolf, Natanael Beckman, e a todos os demais membros do TK que não lembro o nome, que contribuíram indiretamente através de seus tutoriais.
       
       
       
       
       
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo