Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 02/08/16 em todas áreas

  1. Administrador

    Herói

    Introdução Herói é um título (cargo). É concedido à membros que foram importantes para a comunidade. Em tempos passados, este título fora desvalorizado e permaneceu sem supervisão ou definição qualquer enquanto ativo. Herói 1.0 Heróis são avaliados pela contribuição realizada no fórum; 2.0 Alertas, dependendo da seriedade, podem remover o título de um membro. • Atualizado 30/05/17
    1 ponto
  2. RigBy

    Akatsuki System Advance 1.0 + Heart System

    Akatsuki System + Heart System Introdução - tava vendo muitas pessoas precisando desses dois sistema então resolvi criar o meu próprio. - Não ta igual ao do NTOUltimate pois nunca joguei esse servidor. O que tem no Akatsuki system 1.0? - Verifica se sua vocação pode fazer parte da akatsuki - Verificar sua vocação e adiciona outra diferente? - Troca de outfit dependendo da sua vocação - Da bonus de hp e mp - Adicionar o nome [Akatsuki] no seu nick exemplo [Akatsuki] RigBy - Aplica uma storage quando você entra pra akatsuki (com isso da pra você fazer bonusXp) - storage é 85798723243 valor 1 O que tem no Heart System - Ele só te da o coração se você for acima de tal level - adiciona o nome da pessoa no coração Vamos la a script Npc.xml <?xml version="1.0" encoding="UTF-8"?> <npc name="[Akatsuki] Tobi" script="data/npc/scripts/AkatsukiSystem.lua" walkinterval="2000" speed="0" floorchange="0"> <health now="100" max="100"/> <look type="128" head="0" body="0" legs="0" feet="0" addons="0"/> <parameters> <parameter key="message_greet" value="Hello You who joins {akatsuki}?"/> </parameters> </npc> Npc/Script/AkatsukiSystem.lua -- Do not remove the credits -- -- [NPC] Akatsuki System -- -- developed by Rigby -- -- Especially for the Xtibia.com -- local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end local level = 1 -- Level preciso pra entra para akatsuki local itemid = 5943 -- id do coração local quantidade = 6 -- quantos hearts e preciso local bonushp = 300000 -- quanto de bonus de life vai ganha local bonusmp = 30000 -- quanto de bonus de mana vai ganha local config = { --[Vocation] = ( Nova Vocation, New Outfit ) [1] = { 5, 128}, [2] = { 6, 129}, [3] = { 7, 130}, [4] = { 8, 131}, } function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'akatsuki') then if getPlayerVocation(cid) ~= config then if getPlayerStorageValue(cid, 85798723243) == -1 then if getPlayerLevel(cid) >= level then selfSay('Are you sure you want to join the Akatsuki?.', cid) talkState[talkUser] = 1 else selfSay('You there and very weak, vain talk to you when you have level '..level..'.', cid) end else selfSay('You already part of the akatsuki!', cid) end else selfSay('Do not need you now!', cid) end end if talkState[talkUser] == 1 and msgcontains(msg, 'yes') then selfSay('To prove their loyalty, you have to bring '..quantidade..' {hearts}.', cid) talkState[talkUser] = 2 end if talkState[talkUser] == 2 and msgcontains(msg, 'hearts') then if getPlayerItemCount(cid, 5943) >= 6 then local voc = config[getPlayerVocation(cid)] doPlayerSetVocation(cid, voc[1]) local outfit = {lookType = voc[2]} doCreatureChangeOutfit(cid, outfit) setCreatureMaxHealth(cid, getCreatureMaxHealth(cid)+bonushp) setCreatureMaxMana(cid, getCreatureMaxMana(cid)+bonusmp) doCreatureAddHealth(cid, getCreatureMaxHealth(cid)) doPlayerRemoveItem(cid, 5943, 6) doCreatureAddMana(cid, getCreatureMaxMana(cid)) setPlayerStorageValue(cid,85798723243,1) db.executeQuery("UPDATE `players` SET `name` = '[Akatsuki] "..getCreatureName(cid).."' WHERE `id` = "..getPlayerGUID(cid)..";") addEvent(doRemoveCreature, 5*1000, cid, true) doPlayerSendTextMessage(cid,25,'You will be kicked in 5 seconds to enter the akatsuki!') selfSay('Congratulations now you are part of akatsuki.', cid) talkState[talkUser] = 0 else selfSay('No use to fool me, you do not have '..quantidade..' hearts, goes behind.', cid) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Heart System Creaturescript/script/heartsystem -- Do not remove the credits -- -- [CREATURESCRIPT] Heart System -- -- developed by Rigby -- -- Especially for the Xtibia.com -- function onKill(cid, target, lastHit) local item = 5943 -- id do coração local level = 300 -- level necessário para tira o coração if isPlayer(cid) and isPlayer(target) then if getPlayerLevel(target) >= level then local add = doPlayerAddItem(cid, item, 1) doItemSetAttribute(add, "description","Esse coração é de "..getPlayerName(target).." que foi morto no level "..getPlayerLevel(target).." por "..getPlayerName(cid)..".") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Voce Mato " ..getPlayerName(target).. ".") doSendMagicEffect(getPlayerPosition(cid),12) end end return true end Creaturescript.xml Tag <event type="kill" name="HeartSys" event="script" value="heartsystem.lua"/> Podem comenta duvidas, opiniões ou melhoramento para que haja a versão 2.0
    1 ponto
  3. PokeTournament

    Poke tournament (pokemon)

    POKE TOURNAMENT lute em arenas por fama e premiações, participe de campeonatos e faça amigos em poke tournament. Estamos online!!! Crie sua conta e faça download aqui! sobre: Em poke tournament você encontrara um novo estilo de jogo entre os Poketibias, nele você poderá controlar seu pokemon diretamente, fazer fases PVE fechadas tanto individual como em grupo, lutar PVP com seus amigos em arenas fechadas rankiado ou não, personalizar os combos dos seus pokemons e se divertir de montão com uma jogabilidade facil e competitiva! estilo: O Poke Tournament pode ser considerado um jogo do estilo M.O.B.A. (Multiplayer Online Battle Arena) apesar do jogo não contar com fases no estilo do jogo DOTA, o PkT tem como foco principal as batalhas pvp levando um novo estilo de jogo de luta 2D com a variedade estrategica de cada pokemon da serie. graficos: Alem desse novo estilo de jogo tambem estamos trabalhando em graficos novos para interface do client e movimentos de combate no pokemon, então você irá encontrar telas que facilitam a jogabilidade e movimentos para todos os ataques dos pokemons do jogo. Por enquanto estamos trabalhando somente com pokemons não evoluidos "pequenos". jogabilidade: A jogabilidade do PkT é um pouco baseada nos jogos de luta, com combos e contra ataques você terá a experiencia da adrenalina enquanto joga. Alem de poder customizar os combos de seus pokemons ao seu gosto o jogo conta com varios sistemas de batalhas inovadores, entre eles vocês encontrarão sistema de movimento ao bater, contra ataque, defesa, avanço rapido, sistema de dor, sistema de Special e muito mais. historia: A historia do jogo e baseada na primeira versão da serie de games pokemon rpg (Pokemon Red/Green), sem diferenças relevantes, a unica diferença e que depois de pallet o seu personagem irá para um Lobby onde será sua unica cidade para sempre. quests: Apesar do Pkt ser um jogo de Arena PVP, não podiamos deixar de ter aquelas quests premiadas não e mesmo? alem de quests de historia você tambem poderá fazer missões diarias, missões premiadas e missões secretas. premios: Depois de tudo isso ainda temos premios diarios para quem marcar presança, permanecer online e ate uma quantidade de Vip Points por participar de batalhas PVP Rankiadas. Progresso Final: 65% Fases (mapa): 50% prontas - (Route1, Viridian Forest, MT. Moon, Bills Route,Rock Tunel) Pokemons: 60% falta - (os pokemons que vem vem depois do numero 105) Ataques: 60% falta - (a maioria dos pokemons ainda faltam 1 ou 2 ataques) Sistemas: 95% falta - (testes e ajuste de danos e seleção de premios) Client: 60% falta - (novo designer base, recompilação do client, nova janela de health bar, equipamentos, nova janela de skills pro pokemon e nova pokedex). Prints: alguns golpes Escolhendo a fase tela pvp rankiada - fases e oponentes são sorteados tela de conversa com npc npc de produção npc de quests equipando skill no combo nosso mascote e premio especial Lucky Draw Sistema de Colisão Videos Pokeball System Vídeo da primeira fase tutorial https://www.facebook.com/Pok%C3%A9-Tournament-1398028193775843/
    1 ponto
  4. kaleudd

    [ANTI-CLONE] 100% NOVO

    Créditos: Absolute Thales Valentim Como funciona? Toda vez que um ItemVIP ou qualquer Item comprado no SHOP do seu site, quando ele for entregar ao player, irá ficar; COMPRADOR POR:, ou seja; irá adicionar uma "KEY" algo que realmente saiu direto do seu SHOP, pois quando o item é disparado para o player ele vai entregar normal com a função "doCreateItemEx" e então adicionar a descrição no mesmo com a função "doItemSetAttribute". E como evitará os clones? Você terá uma QUERY para executar no seu banco de dados, fazendo uma checagem dos items VIPS que não possuem esse SERIAL KEY (o script também já faz a checagem), ou seja; os que não tiverem a KEY foram clonados (não saíram do SHOP), e então vocês poderão deleta-los manualmente caso necessário. É muito simples, apenas um script e a QUERY de checagem. Vamos a instalação! Em data/globalevents/scripts substitua o seu arquivo shop.lua por este: -- ### CONFIG ### -- message send to player by script "type" (types you can check in "global.lua") SHOP_MSG_TYPE = 19 -- time (in seconds) between connections to SQL database by shop script SQL_interval = 30 -- ### END OF CONFIG ### function onThink(interval, lastExecution) local result_plr = db.getResult("SELECT * FROM z_ots_comunication WHERE `type` = 'login';") if(result_plr:getID() ~= -1) then while(true) do id = tonumber(result_plr:getDataInt("id")) action = tostring(result_plr:getDataString("action")) delete = tonumber(result_plr:getDataInt("delete_it")) cid = getCreatureByName(tostring(result_plr:getDataString("name"))) if isPlayer(cid) == TRUE then local itemtogive_id = tonumber(result_plr:getDataInt("param1")) local itemtogive_count = tonumber(result_plr:getDataInt("param2")) local container_id = tonumber(result_plr:getDataInt("param3")) local container_count = tonumber(result_plr:getDataInt("param4")) local add_item_type = tostring(result_plr:getDataString("param5")) local add_item_name = tostring(result_plr:getDataString("param6")) local received_item = 0 local full_weight = 0 if add_item_type == 'container' then container_weight = getItemWeightById(container_id, 1) if isItemRune(itemtogive_id) == TRUE then items_weight = container_count * getItemWeightById(itemtogive_id, 1) else items_weight = container_count * getItemWeightById(itemtogive_id, itemtogive_count) end full_weight = items_weight + container_weight else full_weight = getItemWeightById(itemtogive_id, itemtogive_count) if isItemRune(itemtogive_id) == TRUE then full_weight = getItemWeightById(itemtogive_id, 1) else full_weight = getItemWeightById(itemtogive_id, itemtogive_count) end end local free_cap = getPlayerFreeCap(cid) if full_weight <= free_cap then if add_item_type == 'container' then local new_container = doCreateItemEx(container_id, 1) doItemSetAttribute(new_container, "description", 'Bought by ' .. getCreatureName(cid) .. ' [ID:' .. id .. '].') local iter = 0 while iter ~= container_count do local new_item = doCreateItemEx(itemtogive_id, itemtogive_count) doItemSetAttribute(new_item, "description", 'Bought by ' .. getCreatureName(cid) .. ' [ID:' .. id .. '].') doAddContainerItemEx(new_container, new_item) iter = iter + 1 end received_item = doPlayerAddItemEx(cid, new_container) else local new_item = doCreateItemEx(itemtogive_id, itemtogive_count) doItemSetAttribute(new_item, "description", 'Bought by ' .. getCreatureName(cid) .. ' [ID:' .. id .. '].') received_item = doPlayerAddItemEx(cid, new_item) end if received_item == RETURNVALUE_NOERROR then doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received >> '.. add_item_name ..' << from OTS shop.') doPlayerSave(cid) db.executeQuery("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";") db.executeQuery("UPDATE `z_shop_history_item` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. ";") else doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from OTS shop is waiting for you. Please make place for this item in your backpack/hands and wait about '.. SQL_interval ..' seconds to get it.') end else doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from OTS shop is waiting for you. It weight is '.. full_weight ..' oz., you have only '.. free_cap ..' oz. free capacity. Put some items in depot and wait about '.. SQL_interval ..' seconds to get it.') end end if not(result_plr:next()) then break end end result_plr:free() end return TRUE end Confira se no seu globalevents.xml já possui a tag: <globalevent name="shop" interval="30000" script="shop.lua"/> PRONTO!! Para fazer a checagem se há items clonados, abra o seu phpmyadmin e execute a seguinte query: ------------------- COMANDO SQL BY ABSOLUTE PARA VERIFICAR A TABELA PLAYER_DEPOTITEMS---------------------- SELECT `player_id`,`pid`,`sid`,CONVERT( `attributes` USING latin1 ) FROM `player_depotitems` WHERE CONVERT( `attributes` USING latin1 ) LIKE '%description%' ------------------- COMANDO SQL BY ABSOLUTE PARA VERIFICAR A TABELA PLAYER_ITEMS---------------------- SELECT `player_id`,`pid`,`sid`,CONVERT( `attributes` USING latin1 ) FROM `player_items` WHERE CONVERT( `attributes` USING latin1 ) LIKE '%description%' OBSERVAÇÃO IMPORTANTE: Caso seu servidor já esteja online e já possua vendas no seu SHOP, você terá que adicionar a "KEY" em todos os items ou reseta-los. OUTRA OBSERVAÇÃO: Nunca crie items VIP com o ADMIN e de aos jogadores, pois eles ficaram sem a "KEY" e poderão ser deletados. ESTE SCRIPT FUNCIONA PERFEITAMENTE NAS REVS 0.3.6 e 0_4, caso necessário passo para a 1.x.
    1 ponto
  5. kaleudd

    [Remake] De 4 pokémons.

    Bem,estou trazendo para vocês algumas remakes,segue a lista: Remake do beedrill (1th) Remake do Starly (4th) Remake do Staravia (4th) Remake do Staraptor (4th) Download + Scan: Créditos: kpdo (de onde eu peguei) pokexgames (beedrill)
    1 ponto
  6. Bom, sem muito a falar irei tentar explicar tudo O Pokemon T.E.S foi começou a 9 meses atrais por 3 pessoas, tinha a intençao de ser um servidor serio porem pouco a pouco aprendi que PDA, tem muitas limitaçoes. Eu simplemente iria pagar o host, outros 2 amigos iriam ficar encargados dos scripts e maps, porem ambos desistiram do projecto poucos dias apos ter começado ate agora fikei só com esse server tentando arrumar bugs com meus conenhimentos (nemhum) em td... o Servidor tem uns 9 meses online, no momento esta com host mesmo assim muito lagado por causa de bugs o projecto é 1 coisa pequena, e estou procurando 1 scripter, tenho a intençao de pagar por scripts porem sem ser muito oque tiver que pagar, é um servidor PDA por isso acho que não vale a pena usar muita grana para um servidor sem sources. Emfin... resumindo: procuro scripter que estiver querendo ganhar 1 pouco de grana mas sem exagerar... fikei louco qndo me pediram 700 reais por um launcher emfin irei deixar o grupo do meu servidor https://www.facebook.com/groups/1618330061742838/ qualquer coisa manda PM seja no FB ou aqui Eu vi que Xtibia quer que eu fale as "Metas" entao... simples: ter um servidor estavel sem lag por causa de scripts mal feitos.
    1 ponto
  7. https://mega.nz/#F!p0UWSKoK!Fp-_KFOWrpSKpkcvq5Vl2g
    1 ponto
  8. É só adicionar um stepin/stepout
    1 ponto
  9. Vai no seu accountmanagement e troca por esse:
    1 ponto
  10. Night Wolf

    Herói

    a maior cagada que a moderação do xt já fez foi abrir esse tópico, a maioria das pessoas não frequenta o fórum a anos e vem aqui pedir pip bonitinha pelo que fez 4 anos atrás... continuem ajudando da mesma forma que vcs ajudavam antes que alguém vai notar e te dar a pip sem vc ter q pedir.
    1 ponto
  11. Ja tive esse Problema e a maioria das vezes eu resolvia em uma formula que tem no Exp.lua que envolve a Defesa do Pokemon de (Hunt) Procure por Isso em Exp.lua: - Tenta alterar essa Formula ele se descreve mais o menos assim: getDefense(cid) = Defesa dos Pokes de Hunts e outros getOffense(attacker) = Ataque Meele que seu Pokemon da no Pokemon de Hunts e Outros. attacker = Seu Pokemon ataca Cid = Pokemon inimigo - se colocar um "getSpecialAttack(attacker)" nessa formula talves resolve o problema assim: getSpecialAttack(attacker) = Ataque de Moves que seu Pokemon da no Pokemon de Hunts e Outros. - Se nao funcionar o Status "getDefense(cid)" nao funciona em Pokemons de Hunts so funciona em Pokemons de Players
    1 ponto
  12. Josegvb

    [Client] Pokémon DUB

    a versão é 0.6.3 bom, apos um meio tempo usando o cliente eu só posso falar q nao recomendo... muitos dos meus players nao tem como abrir o cliente q só funfa em OpenDLS, testei com tudos os DX9 no xtibia de outros clientes e nemhum pegou. alem o client tem muitos bugs dentro o maior e que mais faz a geral cansar é o resize, que muda toda hora que vocè reloga, quando ele muda vocé fica impossivilitado de dar "look" em voce, mecher as coisas no chao... alem de nao ter como targeta os bixos, costa para puxar qualquer coisa pois a primeira q voce tenta pegar com o mouse nunca pega tem q tentar varias veces e a bag, sempre ta bugada nao da para mecher la dentro, apenas o primer item. enfim o cliente é dahora eu gostei muito... mas esses bugs faz o cliente enjoativo. desculpa meu pt, nem é o meu idioma.
    1 ponto
  13. Josegvb

    [Remake] De 4 pokémons.

    valeu pelo compartilhar
    1 ponto
  14. Lordbaxx

    [PDE] Erro no dano

    Isso é nas sources do servidor, acontece na maioria desses Pokemon Dash que só pegam as partes do PDA e acabam fazendo cagada no sistema de damage, até esse PDE mesmo. Vamos lá! Vá em game.cpp e procure: std::min(target->getHealth(), damage); Remova ou comente a linha citada. Exemplo! //std::min(target->getHealth(), damage);
    1 ponto
  15. Brother, estou com problemas para logar depois da atualização de hoje 07/02/2016, quando abro o client a tela fica preta. -- Edit Consegui resolver o problema.
    1 ponto
  16. othereality

    Steal System

    Tenta aí, se der erro manda que eu vou de novo. EDIT: Não entendi se você queria uma chance diferente pra cada monstro ou não, nesse caso a chance é de 20% de dar certo pra todos os roubos. EDIT2: O player precisa de um target pra funcionar a magia, então se liga pra fazer a tag direitinho. local MONSTROS = { --name id1 id2 ["Rat"] = {item1 = 2149, item2 = 0000}, ["Cave Rat"] = {item1 = 2149, item2 = 0000}, ["Bat"] = {item1 = 2149, item2 = 0000}, ["Wolf"] = {item1 = 2149, item2 = 0000} } function onCastSpell(cid, var) local chance = math.random(1,5) local monstro = MONSTROS[getCreatureName(getCreatureTarget(cid))] if chance ~= 1 then doPlayerSendCancel(cid, "voce nao conseguiu roubar.") return false end if monstro.item1 > 0 then doPlayerAddItem(cid, monstro.item1) end if monstro.item2 > 0 then doPlayerAddItem(cid, monstro.item2) end return true end
    1 ponto
  17. Não tem como fazer isso com 1 única linha do script.
    1 ponto
  18. Tiago Neri

    [8.6] novo servidor de narutibia

    assista o vídeo e pegue os endereços de onde baixar o servidor 8.6 de narutibia... https://www.youtube.com/watch?v=1hN33gsJWj4 deixe seu like...
    1 ponto
  19. SamueLGuedes

    [Show Off] SamueLGuedes

    In-Game RME
    1 ponto
  20. FLC

    FLC - Attempt to mapping - ShowOff

    Cada gota de sangue inocente derramado clama vingança! (frase de efeito na1pera) Att- Black mage, por que não? rs
    1 ponto
  21. Night Wolf

    Tibia Guitar Hero [0.36~0.4]

    Fala pessoal do XT, hoje vim trazer pra vocês um sistema que eu desenvolvi nessa última semana e inclusive fiz um tópico na seção de show off (confira o tópico aqui) numa tentativa de agitar um pouco e prover uma certa especulação em relação ao sistema. Bom, eu to aqui hoje pra informar que deu mais que certo e que meu tópico humilde (que eu realmente acreditava que seria ignorado, ainda mais numa seção morta como aquela) teve uma repercursão enorme (inclusive indo parar no portal do XT ) Bom, toda pessoa quando faz um código espera que ele agrade aos demais e tenha um certo valor, e bem, vocês superaram minhas expectativas.. com isso nada mais justo do que compartilhar com essa comunidade que me recebeu tão bem . Chega de falatório e vamos direto aos negócios: Introdução:O sistema em si é uma cópia dos jogos de ritmo (GuitarFreaks, Band Hero, Rocksmith e o próprio Guitar Hero). Neste jogo pequenas notas irão cair pela tela até atingir um local especial, onde você poderá usar as teclas (Shift + 7, Shift + 8, Shift + 9, ou apenas 7, 9 e 9 [com Num Lock desativado]) para escolher as direções que as notas estão afim de "ativá-las". Uma vez ativada a nota ela será "queimada" e será considerado 1 acerto. Caso você não consiga ativar a nota e ela passar direto, um efeito de fumaça indicará o "Miss", o mesmo vale para se você tentar ativar uma região sem notas. Sistema de pontuação:Haverão 3 classificadores estatísticos para cada música tocada, sendo eles: Notas acertadas: O principal fator de ponto, ele que definirá seu recorde e o valor máximo q ele pode assumir será o número de notas da música. Movimentos errados: Quantidade de movimentos que você fez para alguma região que não possuia notas, conta como pontuação punitiva. Notas passadas/erradas: Quantidade de notas que você deixou escapar, note que as notas acertadas + notas passadas compõe o número total de notas da música. Por enquanto o sistema não possui nenhum preço para se jogar mas também não possui nenhuma recompensa, fiz com o intuito de ser apenas um mini game divertido dentro do Tibia. Porém o código é livre e está disponibilizado aqui embaixo pra qualquer um modificar como desejar. Video explicativo: Dificuldades:O mini game possui 3 dificuldades, porém essa quantidade é tão configurável quanto as pré definições de cada dificuldade. Além da quantidade de notas ser diferente, a velocidade com que elas descem e consequentemente o tempo que você tem pra acertá-las fica diminuido. Diferenciais:Um forte diferencial desse sistema é que ele foi feito seguindo todas as regras possíveis pra melhorar seu desempenho, desde funções recursivas leves até separação em funções encapsuladas que carregam apenas as informações necessárias. O sistema contém também algumas seguranças que serão explicadas mais abaixo juntamente com o código para prevenir bugs e garantir diversão sem dores de cabeça! Instalação (Map Editor):Primeiramente faça uma área parecida com essa daqui: Não precisa ser igualzinha, apenas seguir a mesma proporção Agora use a ferramenta de No-Logout para setar os quadradinhos que contém UID e UID2 escritos como No-Logout, isso vai impedir que players desloguem e fiquem presos dentro da sala (se eles derem exit, quando eles relogarem estarão do lado de fora da sala) Ainda olhando a foto acima, coloque 42320 nos pisos que estão escritos UID, e 42319 no piso que contém UID2. Nas alavancas, coloque uid 2819 em todas elas e coloque actionid 101 para a alavanca do fácil, 102 na alavanca do médio e 103 na do dificil; A regra é sempre 100 + dificuldade, como nós estamos utilizando apenas 3 será do 101 ao 103. Note que se você esquecer ou colocar uma dificuldade não existente o sistema adotará a dificuldade 1 como padrão para aquela alavanca. Se chegou até aqui, meus parabéns. Muito provável que você tenha feito tudo certo. Agora vamos à parte do código. Instalação (scripts):Em actions.xml insira essa linha <action uniqueid="2819" event="script" value="GHtest.lua"/> Agora em data/actions/scripts crie um arquivo com extensão.lua e chameo de GHtest. Insira o seguinte bloco de instruções dentro dele: Aproveite e já configure as posições npos, startPos e finalPos de acordo com as posições do seu map editor (olhe na segunda imagem para ver onde deve ser cada uma das posições com base na sala) Feito isso crie um arquivo em data/lib com nome qualquer, aqui em casa eu utilizei o nome 120 - Guitar Hero Lib e a extensão.lua. Coloque isto dentro desse arquivo e salve: Agora adicione a seguinte tag em data/movements/movements.xml: <movevent type="StepIn" uniqueid="42320;42319" event="script" value="GHTestmov.lua"/> Por fim crie um arquivo chamado GHTestmov.lua em data/movements/scripts e preencha seu conteúdo com as linhas abaixo: Aproveite para deixar a npos idêntica à npos que você configurou lá no actions se baseando na posição da sua sala no map editor. ------------------------ FIM ------------------ O sistema já deve funcionar como foi planejado, se você não manja de código ou quer o sistema exatamente como foi mostrado no vídeo você pode ignorar a parte abaixo. Configurando seu sistema (básico): Para as pessoas que querem configurar apenas as coisas básicas, você pode fazê-lo nas primeiras linhas de cada script (actions/movements) ou alterando diretamente na lib, irei ensinar passo a passo aqui oque significa cada coisa. Alterando a libAs coisas básicas que podem ser alteradas na lib são as seguintes: dif = { -- [dificuldade] = notas que serao tocadas (nil = vazio, 0 = primeira posicao, 1 = segunda e 2 = terceira) [1] = {nil,nil,0,1,2,nil,nil,2,1,1,0,0,2,0,1}, [2] = {nil,nil,0,1,1,2,1,1,0,0,2,0,1,nil,1,2,1,1,0,0,2,0,1}, [3] = {nil,nil,0,nil,1,nil,1,1,0,0,2,0,1,1,1,nil,0,2,1,1,0,0,2,1,1,0,nil,2,2,1,1,1,1,2} } delay = { -- delay entre cada nota de acordo com a dificuldade [dificuldade] = delay [1] = 500, [2] = 400, [3] = 300 } recorde = { -- salva os recordes de cada dificuldade separadamente [1] = 12724, [2] = 12725, [3] = 12726 } dif separa como será cada música de cada dificuldade, as notas sempre serão nesse exato formato. nil significa que não estarei usando posição nenhuma naquela linha, 0 significa a primeira posição (nota verde), 1 significa segunda opção (nota vermelha) e 2 significa terceira opção (nota azul). Eu aconselho a começar todas as músicas com 2 ou mais 'nil' para dar tempo de o player entender que vai começar. A distribuição que eu usei foi meio que aleatória então sinta-se a vontade pra mudar tanto o tamanho das musicas quanto a variedade de notas. delay é a tabela que oganiza os delays de cada dificuldade, isso significa que para a dificuldade 1(fácil) nós temos 500 milisegundos para cada mudança de nota (1000 milisegundos = 1 segundo), ou seja, a cada 2 passadas de nota temos 1 segundo dentro da sala. No modo hard a cada 300 milisegundos mudamos a nota, deixando o jogo muito mais rápido e dificil. recorde é a tabela que possui os storages que irão salvar os recordes nas respectivas dificuldades. Alterando actions local storage_point = 12721 -- storage que salva os pontos local storage_erradas = 12722 -- storage que salva as notas erradas local storage_passadas = 12723 -- storage que salva as notas que passaram Apenas mude os storages Alterando movements local itemid = 1680 --- coloque o id da nota do meio local npos = {x = 141, y = 51, z = 7} -- posicao que ira nascer a primeira nota local storage_point = 12721 -- storage que salva os pontos local storage_erradas = 12722 -- storage que salva as notas erradas local storage_passadas = 12723 -- storage que salva as notas que passaram aconselho mexer somente nos storages, mantendo igual à action. Só abra o spoiler abaixo se você estiver descontente com a forma que seu código roda e tiver certeza absoluta de que você tem o conhecimento necessário para alterar as coisas que vou explicar. Espero que vocês tenham curtido, façam um bom uso e qualquer dúvida postem nos comentários abaixo. Agradecimento ao @dalvorsn pela função que limpa a sala antes de começar o jogo e ao pessoal do servidor Refugia que fez um script de guitar hero lá e me deu a idéia. Abraços do Lobo.
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...