Ir para conteúdo

Tony Araujo

Visconde
  • Total de itens

    446
  • Registro em

  • Última visita

  • Dias Ganhos

    30

Posts postados por Tony Araujo

  1. [CREATURESCRIPT] Exp Aura System (OTP Based)

    Autor: Tony Araújo (OrochiElf)

     

    Vídeo demonstrativo: https://imgur.com/8OFTfL8 

    (por algum motivo não carregou link direto kk)

     

    Eai rapeize, beleza? Espero que sim. Bom, hoje vim trazer a vocês o sistema de Exp Aura, fiz ele baseado no do OTPokemon.

    Bom, o sistema funciona da seguinte forma, você mata um monstro e tem uma chance desse monstro criar uma aura, que no caso será um efeito que ficará se repetindo por determinado tempo, ou caso preferência, até o corpo do monstro sumir, caso apareça essa aura, você precisa ficar na posição do efeito para coletar esse bônus. É um sistema bem simples, porém legal (acredito eu kkkkkk).

    Bom, vamos lá.

     

    1. Vá em [data/creaturescripts/scripts] e lá crie um arquivo chamado (CODDINGS-ExpAura.lua), e dentro adicione:

    LINK DO HASTEBIN AQUI

     

    A configuração é bem simples, vamos lá:

    local EXPAURA = {
    	aura_effect = 11, -- É o ID do efeito que irá ficar se repetindo, até o bonus ser coletado.
    	gain_effect = 14, -- É o ID do efeito que irá aparecer quando o bonus for coletado.
    	spawn_chance = 25, -- É a chance que este bônus tem de acontecer, sendo 25 = 25%
    	use_specific_time = 15 -- Aqui você configura por quanto tempo o bônus esperará ser coletado, em segundos, porém caso prefira que espere até o corpo sumir, troque o número por false
    }

     

    2. Continuando dentro do scripts, vá em (login.lua) e procure por:

    registerCreatureEvent

    E acima do primeiro resultado, você adicione:

    registerCreatureEvent(cid, "ExpAura+")

     

    3. Agora vá no creaturescripts.xml e adicione a tag:

    <event type="kill" name="ExpAura+" event="script" value="CODDINGS-ExpAura.lua"/>

     

    Bom galera, feito isso, está pronto para se divertir. Espero que gostem e façam bom proveito.

  2. Em 12/11/2020 em 14:51, peitiolate disse:

    Naice

    Noix pae

     

    Em 12/11/2020 em 14:51, underewarr disse:

    Obrigado por contribuir com este sistema para a comunidade.

    Muito bem explicado.

     

    Aguardando próximas versões 

     

    Valeu brother, quem sabe uns modules novos kkkkkk

     

    Em 12/11/2020 em 18:28, Gabrieltxu disse:

    Muito bom, tony namoral o/ ❤️

    Tmjj brother xD

     

    Em 13/11/2020 em 00:25, FlamesAdmin disse:

    namoral

    Sem cutcharra, selo padrão tonynamoral.

  3. [OTClient - Module] Caught Achievement v1.4 - Atualizado

    Autor: Tony Araújo (OrochiElf)

     

    image.png.8d25b3fe578a5ca712045225a6faab14.png

     

    Fala meus bacanos, de boas? Espero que sim. Bom, há uns 4 anos atrás, cheguei a fazer  ultima atualização do sistema de Caught Achievement, que nada mais é do que aquele sistema da PxG, onde você ganha um determinado XP pela captura de um pokemon, além de mostrar quantas pokebolas foram utilizadas, porém, aquela versão não estava muito boa, pois era necessário fazer diversas adaptações para adição de novas pokebolas, fora o código que não estava mais me agradando, então resolvi fazer uma nova atualização e deixar o sistema "auto-adaptável", onde não é necessário mais nenhuma edição nele, pois ele recebe os dados do servidor e interpreta de forma automática, sendo assim, suportando um número ilimitado de pokebolas e sem burocracias. Bom, sem mais, vamos lá. 

     

    PS: Como não existe uma base única de servidor utilizada atualmente, e sim diversas, não tem como eu fazer um tutorial único e pré-destinado de instalação, então tentarei explicar mais ou menos o que é necessário fazer para o sistema funcionar perfeitamente, mas fiquem tranquilos, é algo beeem simples. 

     

     

    Primeiramente, precisaremos criar um arquivo no [data/lib], chamado (CODDINGS-CaughtWindow.lua) (sugestivo não? kkk) e dentro adicione o código:

    LINK DO HASTEBIN AQUI

     

    Bom, a configuração é bem auto explicativa, não tem muito mistério, vamos lá:

    ["Nome do Pokemon" = {portrait = Item ID do portrait, experience = Quantidade de Exp pelo Caught, storage_balls = Storage de armazenamento, aconselho seguir o fluxo}
    
    ex: ["bulbasaur"] = {portrait = 11989, experience = 3000, storage_balls = 15050},

     

     

    Bom, segunda parte da instalação é o seguinte, agora nós vamos adicionar o contador de balls, acredito que o melhor local e o de mais fácil instalação, seria no script de catch do actions, então vá nesse arquivo e procure por esse código aqui

    doRemoveItem(item.uid, 1)

     

    E então, acima dele, você adiciona:

    -- Caught Window System
    CaughtWindow.ballcount(cid, name, item.itemid)

    Sendo o (name) necessariamente o nome do pokemon, então caso a variável onde guarda esse valor seja diferente, você só arruma ali na função e pronto

     

    Bom, para finalizarmos, vamos agora enviar a sinalização de quando o pokemon é capturado. O servidor que estou usando aqui (não sei o nome dele, achei perdido no pc), ele possui uma lib onde existe essa função responsável, então acredito que possa existir no de vocês também. Procurem por algo como catch system, catch ou algo deste genero. Aqui, existe a função chamada: doCapturePokemon, tentem procurar por ela ou similar. 

    Dentro desta função, procure por essa função aqui, ou também, similar a ela: doPlayerSendTextMessage(cid, 27, "Congratulations, you caught a pokemon ("..poke..")!")

    e logo acima, adicione:

    -- Caught Window System
    CaughtWindow.sendcaught(cid, poke)

    Seguindo a mesma lógica da anterior, a variavel (poke), necessariamente precisa ser o nome do pokemon. 

     

    Bom galera, feito isso, o sistema está perfeitamente instalado, bastando apenas vocês adicionarem o módulo no cliente. Só fazer o download dele aqui no tópico, que deixarei o .zip anexado, aconselho adicionarem ele dentro da pasta mods e não da modules, por conta do auto-carregamento de forma mais simplificada (no caso, não sendo necessário criar dependencia no game_interface), mas caso seu client não tenha, você pode criar esta pasta sem nenhum prejuízo.

     

    Bom, por hoje é isso rapeize, tamu junto e até a próxima xD

    [coddings]caughtwindow.rar

  4. 2 minutos atrás, kamus9629 disse:

    @Tony Araujo foi mal Tony vou explica quero fazer com que determinado item de inventory, não seje arrastado para o piso do game,e que players não consigam dar trade entre-si sobre tais itens de inventory 

    Certo, cê instalou o código ? daí deu algum problema de funcionamento? porque tipo, o sistema deve funcionar exatamente como você quer. 

    você só precisa adicionar o atributo "unique" no item, com valor 1, e o player não pode se livrar dele de forma alguma

  5. A imagem pode conter: texto

     

    É com grande honra que tenho o prazer de anunciar que o servidor oldPokemon online está oficialmente lançado, trazendo consigo toda a nostalgia do poketibia oldschool e com muitas outras novidades em sua essência. Eu convido-os para viajar ao passado, mais especificadamente 2009 onde todo esse sonho começou e onde teve seus dias mais gloriosos. Vamos nessa?

     

     

    Bom, junto ao servidor, como lançamos juntos ao feriado de páscoa, estamos com um singelo evento de páscoa ativo. Para todos os jogadores que criarem suas contas e logarem pelos próximos 15 dias, automaticamente ganharão a outfit exclusiva de páscoa.

     

    Site: http://www.oldpokemon.online

    Discord: https://discord.gg/MzT2EAN

    Facebook: https://www.facebook.com/oldPokemonOT

    Instagram: https://www.instagram.com/oldPokemon.online

  6. Eai galera, tranquilo? Ontem aconteceu do meu servidor dar um crash, na hora do save, que eu não tinha visto ainda. Porém, não é em todo save, o servidor vai salvando normalmente, porém chega uma hora que ele crasha. Ele deu o local no gdb do linux, porém a linha do crash é apenas uma query como várias outras, sem nada de especial.

     

    Linha:

    
    query << "DELETE FROM `player_caughts` WHERE `player_id` = " << player->getGUID();
    
    

     

    Função:

    
        // Save Caught
        query.str("");
        query << "DELETE FROM `player_caughts` WHERE `player_id` = " << player->getGUID();
        if(!db->executeQuery(query.str()))
            return false;
    
        query_insert.setQuery("INSERT INTO `player_caughts` (`player_id`, `pokename`, `catched`, `balltype`, `pokeball`, `greatball`, `superball`, `ultraball`, `saffariball`) VALUES ");
        for(PokeBallsMap::iterator it = player->pokeBallsMap.begin(); it != player->pokeBallsMap.end(); ++it)
        {
            sprintf(buffer, "%u, %s, %u, %u, %u, %u, %u, %u, %u", player->getGUID(), db->escapeString(it->first).c_str(), it->second.catched, it->second.ball, it->second.poke, it->second.great, it->second.super, it->second.ultra, it->second.saffari);
            if(!query_insert.addRow(buffer))
                return false;
        }
        if(!query_insert.execute())
            return false;
    
    

     

    Erro:

    image.thumb.png.88bb4ef2bf545e838df5d2efadaa0f37.png

  7. 34324234copia.png

     

    Fala galera, tranquilão? Bom, hoje eu to aqui pra apresentar pra vocês o meu xodó. O projeto no qual já trabalho tem 4 anos, e de muita luta e sofrimento kkkkkkk, afinal, passamos por trancos e barrancos. Foi um servidor que eu pensei em fazer diferente, a forma que ele funcionava. Trabalhei em cima de uma source até eu criar a minha própria, voltada completamente para pokémon, para ter um melhor desempenho, tirando todas as funções do tibia e deixando o servidor bem mais leve. 

     

    Bom, vamos falar exatamente o que é o oldPokemon. Eu criei esse servidor, junto com meu primo João, na ideia de trazer o oldschool do poketibia de volta a vida. Eu vejo muita gente comentando em vários forums / canais de poketibia / grupos do fb, que sentem saudades do antigo SvkE, e olha, eu também sentia, então foi de onde partimos nessa dura jornada de trazer um servidor que fosse fielmente o SvkE, porém com vários sistemas novos e funções inovadoras em nosso client e servidor. É com grande alegria que compartilho com vocês o Beta Test deste servidor, após uma longa caminhada.

     

     

    Algumas imagens do servidor:

     

     


    image.thumb.png.64a92e01cbe04836ac02c5ae35dc94b6.png
    image.thumb.png.48f5345cdbf1db33810b429a8383fdf2.png
    image.thumb.png.263e3605f14d277b3c6bba4ac4bf0d60.png
    image.thumb.png.14c33d320badc9bec79da444a3792c42.png
     

     

     

    O servidor está contando com os seguintes sistemas:

     

     


    Catch System / Goback Systems
    > !pokeballs pokename, para verificar quantas pokeballs já tacou
    > Caught Archvments (Ganha xp ao capturar pokemons)

    > Marca os pokemons selvagens que já capturou com o tipo da pokebola.
    > Janela de notificação mostrando quando capturou e quantas balls usou. (Só mostra no primeiro catch)

     

    Moves System
    > Com passivas
    > Janelas de moves que contam o cooldown

     

    Food System / Happiness / Hungry System 
    > Mostra o tempo de food no lugar onde ficava o tempo da stamina

    > !love, para subir um estágio de felicidade
    > !check, para verificar em qual estágio está o pokemon
    > São 5 estágios de felicidades, cada um responsável por 20% do poder do pokemon (sendo: furioso: 20% / super feliz: 100%)

     

    Fight Factor System
    > Cada fator altera em 20% o ataque do pokemon (Sendo: Full defense - Pokemon recebe 20% menos de dano e também dá 20% menos de dano / Balanced attack - Recebe 100% e dá 100% / Full attack - Recebe 120% e dá 120%)

     

    Auto Loot System
    > Mostra uma janela de notificação dos items coletados e de quem foram na parte superior esquerda da tela

     

    Pokedex System

    > Quando usado em sí, abre a lista de pokemons que o treinador já desbloqueou

     

    Full Map Window System
    > Abre o mapa do servidor em uma janela grande, onde você pode se localizar

     

    Party System

    >Para abrir party existem 2 formas: Abrir o menu do jogador, onde aparece o "Set Outfit", e clicar na opção "Party", ou pela lista de canais. Para convidar, basta abrir o menu do jogador que quer convidar e selecionar Invite do Party. Para aceitar convites, basta abrir a lista de canais e selecionar qual party deseja participar.

     

    Effect on Drop Stone System

    Teleport System

    Gym Leader System
    Npc Battle System (Npcs de batalhas que ficam pelas cidades) 

    Npc Icon (Balões que se dividem em NPCs talkers, NPCs sellers e NPCs missions)

     

    Player Duel System

    Effectiveness System
    Passive / Agressive System
    Pokeball Icons System
    Tv / Cam System

    Order System (Rock Smash, Cut, Dig, Control Mind, Ride, Transform / Untransform, Flash, Blink, Fly, Surf)
    Potions System
    Revive System
    Antidote System

    Carry System (Máximo de 6 pokémons)

    Fishing System = Ok

    Evolution System
    Unique Item
     

     

     

    E MUITO MAIS!

     

     

     

    Para criar a conta, basta entrar no 1/1 e criar pelo Account Manager.

     

    Discord Link:

    https://discord.gg/UsKAPP2

     

    Download Link (Atualizado 10/04): 

    [MEGA.NZ]: https://mega.nz/#!hltigY4Z!CEncVtvPfuUzATIgK6Y9rPbrXGsCJ2xR6GxnCuWC_Dg
    
    [MEDIAFIRE]: https://www.mediafire.com/file/cbe23xa63trdc7t/oldPokemon_%2802.04%29.rar/file
    
    [DROPBOX]: https://www.dropbox.com/s/frcj0fotzfp2k56/oldPokemon%20%2802.04%29.rar?dl=0
    SCAN DO CLIENT: https://www.virustotal.com/gui/file/64cb6d5bb3896fba98408336d4671e61b6c49bb57faf782f3f9bcfd393880f8d/detection

     

    asd.png

     

  8. Eai galera do Eks, tudo bão? Quanto tempo que eu não venho por esses lados, saudades xD

    Bom, sem muita enrolação, eu vim postar pra vocês o sistema de auto loot que eu fiz aqui rapidinho (literalmente, 10 mins), porém que ficou bem bacana. É aquele esquema, você coleta o loot quando abre o corpo do bicho morto. Está bem simples, porém funcional. Eu pesquisei a respeito, pra ter uma ideia e não encontrei nenhum que tivesse com um código legal, todos estavam bem antigos.

     

    Eu não tive muito tempo testando, então caso encontrem qualquer bug, me avise pfv.

     

    function onUse(cid, item, fromPosition, itemEx, toPosition)
    	if getItemAttribute(item.uid, "corpseowner") ~= cid then
    		return doPlayerSendCancel(cid, "You're not the owner.")
    	end
    	local items = {}
    	for i = 0, getContainerSize(item.uid) do
    		local it = getContainerItem(item.uid, i)
    		if it.uid > 0 then
    			table.insert(items, {it.itemid, it.type})
    			doRemoveItem(it.uid)
    		end
    	end
    	if #items > 0 then
    		for k = 1, #items do
    			local playerItem = getPlayerItemById(cid, true, items[k][1])
    			if playerItem.uid > 0 then
    				if (playerItem.type + items[k][2]) > 100 then
    					doPlayerAddItem(cid, items[k][1], (playerItem.type + items[k][2]) - 100)
    					doTransformItem(playerItem.uid, items[k][1], 100)
    				else
    					doTransformItem(playerItem.uid, items[k][1], playerItem.type + items[k][2])
    				end
    			else
    				doPlayerAddItem(cid, items[k][1], items[k][2])
    			end
    		end
    		return true
    	end
    	return false
    end

     

  9. Fazer scripts sem testar, tem dessas coisas kkkkk. São erros mto toscos

     

    local configs = {
    	hours = 2, -- quantas em quantas horas, vai acontecer.
    	winners = 1, -- qntos players podem ganhar.
    	premio = {
    		[1] = {item = 2160, count = 10},
    	}
    }
    
    function onThink(interval, lastExecution)
    	if #getPlayersOnline() >= configs.winners then
    		local str = "Lottery:"
    		for i = 1, configs.winners do
    			local lucky_player = getPlayersOnline()[math.random(#getPlayersOnline())]
    			if getPlayerAccess(lucky_player) <= 1 then
    				local random_reward = configs.premio[math.random(#configs.premio)]
    				doPlayerAddItem(lucky_player, random_reward.item, random_reward.count)
    				str = str .. "\n" .. getCreatureName(lucky_player) .. " - " .. random_reward.count .. "x " .. getItemNameById(random_reward.item)
    			end
    		end
    		doBroadcastMessage(str .. "\n (Next in " .. configs.hours .. " hours.)")
    	end
    	return true
    end

     

  10. 26 minutos atrás, Tio Lukz disse:

    Bom dia queridão, eu testei aqui, mas deu erro, na distro informa isso:

    
    [Error - GlobalEvent Interface]
    data/globalevents/scripts/incendio.lua:onThink
    Description:
    data/globalevents/scripts/incendio.lua:10: attempt to compare number with table
    stack traceback:
    data/globalevents/scripts/incendio.lua:10: in function <data/globalevents/scripts/incendio.lua:9>
    [Error - GlobalEvents::think] Couldn't execute event: lotery

     

     

     

     

    Aah sim, perdão mano, tinha esquecido de um pequeno detalhe.

    local configs = {
    	hours = 2, -- quantas em quantas horas, vai acontecer.
    	winners = 1, -- qntos players podem ganhar.
    	premio = {
            [1] = {item = 2160, count = 10},
    	}
    }
    
    function onThink(interval, lastExecution)
    	if #getPlayersOnline() >= configs.winners then
    		local str = "Lottery:"
    		for i = 1, configs.winners do
    			local lucky_player = getPlayersOnline()[math.random(#getPlayersOnline())]
    			if getPlayerAcess(lucky_player) <= 1 then
    				local random_reward = configs.premio[math.random(#configs.premio)]
    				doPlayerAddItem(lucky_player, random_reward.item, random_reward.count)
    				str = str .. "\n" .. getCreatureName(lucky_player) .. " - " .. random_reward.count .. "x " .. getItemNameById(random_reward.item)
    			end
    		end
    		doBroadcastMessage(str .. "\n (Next in " .. configs.hours .. " hours.)")
    	end
    	return true
    end

     

  11. Eai bro, eu fiz aqui mas não testei. Vê aí

    local configs = {
    	hours = 2, -- quantas em quantas horas, vai acontecer.
    	winners = 1, -- qntos players podem ganhar.
    	premio = {
            [1] = {item = 2160, count = 10},
    	}
    }
    
    function onThink(interval, lastExecution)
    	if getPlayersOnline() >= configs.winners then
    		local str = "Lottery:"
    		for i = 1, configs.winners do
    			local lucky_player = getPlayersOnline()[math.random(#getPlayersOnline())]
    			if getPlayerAcess(lucky_player) <= 1 then
    				local random_reward = configs.premio[math.random(#configs.premio)]
    				doPlayerAddItem(lucky_player, random_reward.item, random_reward.count)
    				str = str .. "\n" .. getCreatureName(lucky_player) .. " - " .. random_reward.count .. "x " .. getItemNameById(random_reward.item)
    			end
    		end
    		doBroadcastMessage(str .. "\n (Next in " .. configs.hours .. " hours.)")
    	end
    	return true
    end

     

  12. Aí maninho, tentei dar uma arrumadinha aqui, mas eu não testei. Vê se funciona aí

    local events = {
        'ElementalSpheresOverlords',
        'BigfootBurdenVersperoth',
        'Razzagorn',
        'Shatterer',
        'Zamulosh',	
    	'The Hunger',
    	'The Rage',
    	'Eradicator',
    	'Eradicator1',
    	'Rupture',
    	'World Devourer',	
        'Tarbaz',
        'Shulgrax',
        'Ragiaz',
        'Plagirath',
        'Mazoran',
        'Destabilized',
        'BigfootBurdenWiggler',
        'SvargrondArenaKill',
        'NewFrontierShardOfCorruption',
        'NewFrontierTirecz',
        'ServiceOfYalaharDiseasedTrio',
        'ServiceOfYalaharAzerus',
        'ServiceOfYalaharQuaraLeaders',
        'InquisitionBosses',
        'InquisitionUngreez',
        'KillingInTheNameOfKills',
    	'KillingInTheNameOfKillss',
    	'KillingInTheNameOfKillsss',
        'MastersVoiceServants',
        'SecretServiceBlackKnight',
        'ThievesGuildNomad',
        'WotELizardMagistratus',
        'WotELizardNoble',
        'WotEKeeper',
    	'Maxxed',
        'WotEBosses',
        'WotEZalamon',
        'WarzoneThree',
        'PlayerDeath',
        'AdvanceSave',
        'bossesWarzone',
        'AdvanceRookgaard',
        'PythiusTheRotten',
        'DropLoot',
        'Yielothax',
        'BossParticipation',
        'Energized Raging Mage',
        'Raging Mage', 
        'modalMD1',
    	'VibrantEgg',
        'DeathCounter',
        'KillCounter',
        'bless1',
    	'lowerRoshamuul',
    	'SpikeTaskQuestCrystal',
    	'SpikeTaskQuestDrillworm'
    }
     
    local function onMovementRemoveProtection(cid, oldPosition, time)
        local player = Player(cid)
        if not player then
            return true
        end
     
        local playerPosition = player:getPosition()
        if (playerPosition.x ~= oldPosition.x or playerPosition.y ~= oldPosition.y or playerPosition.z ~= oldPosition.z) or player:getTarget() then
            player:setStorageValue(Storage.combatProtectionStorage, 0)
            return true
        end
     
        addEvent(onMovementRemoveProtection, 1000, cid, oldPosition, time - 1) 
    end
     
    function onLogin(player)
    	local loginStr = 'Welcome to ' .. configManager.getString(configKeys.SERVER_NAME) .. '!'
    	if player:getLastLoginSaved() <= 0 then
    		loginStr = loginStr .. ' Please choose your outfit.'		
    		player:setBankBalance(0)
    
    		if player:getSex() == 1 then
    			player:setOutfit({lookType = 128, lookHead = 78, lookBody = 106, lookLegs = 58, lookFeet = 76})		
    		else
    			player:setOutfit({lookType = 136, lookHead = 78, lookBody = 106, lookLegs = 58, lookFeet = 76})	
    		end
    
    		player:sendTutorial(1)
    	else
    		if loginStr ~= "" then
    			player:sendTextMessage(MESSAGE_STATUS_DEFAULT, loginStr)
    		end
    
    		loginStr = string.format('Your last visit was on %s.', os.date('%a %b %d %X %Y', player:getLastLoginSaved()))
    	end
     
        player:sendTextMessage(MESSAGE_STATUS_DEFAULT, loginStr)
       
        local playerId = player:getId()
        
        player:loadSpecialStorage()
    
        --[[-- Maintenance mode
        if (player:getGroup():getId() < 2) then
            return false
        else
            
        end--]]
    
        if (player:getGroup():getId() >= 4) then
            player:setGhostMode(true)
        end
    
        -- Stamina
        nextUseStaminaTime[playerId] = 1
    
        -- EXP Stamina
        nextUseXpStamina[playerId] = 1
    
        -- Prey Stamina
        nextUseStaminaPrey[playerId+1] = {Time = 1}
        nextUseStaminaPrey[playerId+2] = {Time = 1}
        nextUseStaminaPrey[playerId+3] = {Time = 1}
    
        -- Prey Data
        if (player:getVocation():getId() ~= 0) then
            local columnUnlocked = getUnlockedColumn(player)
            if (not columnUnlocked) then
                columnUnlocked = 0
            end
    
            for i = 0, columnUnlocked do
                sendPreyData(player, i)
            end
        end
    
        if (player:getAccountType() == ACCOUNT_TYPE_TUTOR) then
            local msg = [[:: Regras Tutor ::
                1*>3 Advertências você perde o cargo.
                2*>Sem conversas paralelas com jogadores no Help, se o player começar a ofender, você simplesmente o mute.
                3*>Seja educado com os player no Help e principalmente no Privado, tenta ajudar o máximo possível.
                4*>Sempre logue no seu horário, caso não tiver uma justificativa você será removido da staff.
                5*>Help é somente permitido realizar dúvidas relacionadas ao tibia.
                6*>Não é Permitido divulgar time pra upar ou para ajudar em quest.
                7*>Não é permitido venda de itens no Help.
                8*>Caso o player encontre um bug, peça para ir ao site mandar um ticket e explicar em detalhes.
                9*>Mantenha sempre o Chat dos Tutores aberto. (obrigatório).
                10*>Você terminou de cumprir seu horário, viu que não tem nenhum tutor Online, você comunica com algum CM in-game ou ts e fica no help até alguém logar, se der.
                11*>Mantenha sempre um ótimo português no Help, queremos tutores que dêem suporte, não que fiquem falando um ritual satânico.
                12*>Se ver um tutor fazendo algo que infrinja as regras, tire uma print e envie aos superiores."
                -- Comandos --
                Mutar Player: /mute nick,90. (90 segundos)
                Desmutar Player: /unmute nick.
                -- Comandos --]]
            player:popupFYI(msg)
        end
       
         -- ABRIR CHANNELS
        if player:getVocation():getId() < 1 or player:getLevel() < 6 then
            player:openChannel(6)   -- advertsing rook main
        else
            player:openChannel(5)   -- advertsing main 
        end
    
          --
        -- Rewards
        local rewards = #player:getRewardList()
        if(rewards > 0) then
            player:sendTextMessage(MESSAGE_EVENT_ADVANCE, string.format("You have %d %s in your reward chest.", rewards, rewards > 1 and "rewards" or "reward"))
        end
     
        -- Update player id
        local stats = player:inBossFight()
        if stats then
            stats.playerId = player:getId()
        end
     
        -- fury gates
        local messageType = nil
        if (player:getClient().os == 3 or
        	player:getClient().os == 5) then
        	messageType = MESSAGE_EVENT_ADVANCE
        end
    
    	player:sendTextMessage(messageType or MESSAGE_STATUS_CONSOLE_ORANGE, 'Bem vindo ao Tibia Global!')
        
        if Game.getStorageValue(GlobalStorage.FuryGates, (9710)) == 1 then
            player:sendTextMessage(messageType or MESSAGE_STATUS_CONSOLE_BLUE, 'Fury Gate is on Venore Today.')
        elseif Game.getStorageValue(GlobalStorage.FuryGates, (9711)) == 2 then
            player:sendTextMessage(messageType or MESSAGE_STATUS_CONSOLE_BLUE, 'Fury Gate is on Abdendriel Today.')
        elseif Game.getStorageValue(GlobalStorage.FuryGates, (9712)) == 3 then
            player:sendTextMessage(messageType or MESSAGE_STATUS_CONSOLE_BLUE, 'Fury Gate is on Thais Today.')
        elseif Game.getStorageValue(GlobalStorage.FuryGates, (9713)) == 4 then
            player:sendTextMessage(messageType or MESSAGE_STATUS_CONSOLE_BLUE, 'Fury Gate is on Carlin Today.')
        elseif Game.getStorageValue(GlobalStorage.FuryGates, (9714)) == 5 then
            player:sendTextMessage(messageType or MESSAGE_STATUS_CONSOLE_BLUE, 'Fury Gate is on Edron Today.')
        elseif Game.getStorageValue(GlobalStorage.FuryGates, (9716)) == 6 then
            player:sendTextMessage(messageType or MESSAGE_STATUS_CONSOLE_BLUE, 'Fury Gate is on Kazordoon Today.')
        end
    
        player:sendTextMessage(messageType or MESSAGE_STATUS_CONSOLE_ORANGE, '[PREY SYSTEM and IMBUIMENT] Desfrute de todos os nossos sistemas disponiveis no servidor.')
       
        -- Events
        for i = 1, #events do
            player:registerEvent(events[i])
        end
     	
        if player:getStorageValue(Storage.combatProtectionStorage) <= os.time() then
            player:setStorageValue(Storage.combatProtectionStorage, os.time() + 10)
            onMovementRemoveProtection(playerId, player:getPosition(), 10)
        end
        return true
    end

     

  13. Então maninho, eu fiz assim, você não precisa colocar pra verificar se a pessoa tem a storage não, porque ja é uma "ordem" que ao equipar ela ganhe a storage e ao remover, ela perca. Testa aí!

     

    function onEquip(cid, item, slot)
    	setPlayerStorageValue(cid, 23000, 1)
    	return true
    end
    
    function onDeEquip(cid, item, slot)
    	setPlayerStorageValue(cid, 23000, -1)
    	return true
    end

     

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...