
Dmy Recaida
Membro
-
Registro em
-
Última visita
Histórico de Curtidas
-
Dmy Recaida recebeu reputação de samlecter em Aumentar limite de efeitoso meu da esse erro
[Linker error] undefined reference to `Game::addMagicEffect(Position const&, unsigned char, bool)'
-
Dmy Recaida deu reputação a xWhiteWolf em Tibia Guitar Hero [0.3.6~0.4]Fala pessoal, hoje vim trazer pra vocês um sistema que eu desenvolvi em outro fórum e decidi trazer pra cá
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:
<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:
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 lib As 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.
-
Dmy Recaida deu reputação a Absolute em [10.9] TFS 1.2 - CAST SYSTEM - REWARD - ALL FIXEDTFS 1.2 v10.90 - CAST SYSTEM 100%
Olá pessoal do TK, a alguns dias venho trabalhando nessas sources junto com um amigo, todavia várias coisas foram ajustadas, inclusive a otimizei fixando diversos erros.
O Trabalho foi acompanhado com Lundrial, djarek e otimizado por mim a minutos atrás.
Sobre:
Versão: 10.90 (LATEST VERSION)
TFS 1.2 (LATEST VERSION)
Reward Chest 100%
Anti Clone system 100%
Exiva em nomes longos
Passando em cima dos players evitando WAR TRAP
Auto Re-mount 100%
Algumas funções fixadas
Diversas modificações simples corrigidas, sem dúvida a melhor source da atualidade.
Irei atualizando as versões de login juntamente com o tibia.com, aderir novidades quando sair e etc.
ATIVANDO O CAST SYSTEM
Realize os passos abaixo para o funcionamento do cast system em seu servidor:
Em config.lua abaixo de:
maxPacketsPerSecond = 25 Insira as seguintes linhas:
enableLiveCasting = false liveCastPort = 7173
Agora vá até data/lib/core abra o arquivo player.lua e substitua:
networkMessage:sendToPlayer(self) por
networkMessage:sendToPlayer(self, false)
Em data/talkactions/scripts crie um arquivo com o nome startcast.lua com o seguinte conteúdo:
function onSay(player, words, param) if player:startLiveCast(param) then player:sendTextMessage(MESSAGE_INFO_DESCR, "You have started casting your gameplay.") else player:sendCancelMessage("You're already casting your gameplay.") end return false end
Ainda em data/talkactions/scripts crie outro arquivo com o nome stopcast.lua com o seguinte conteúdo:
function onSay(player, words, param) if player:stopLiveCast(param) then player:sendTextMessage(MESSAGE_INFO_DESCR, "You have stopped casting your gameplay.") else player:sendCancelMessage("You're not casting your gameplay.") end return false +end
Agora em data/talkactions abra o arquivo talkactions.xml procure por:
<talkaction words="!online" script="online.lua" /> Logo abaixo adicione as seguintes linhas:
<talkaction words="!cast" separator=" " script="startcast.lua" /> <talkaction words="!stopcast" script="stopcast.lua" />
Agora para finalizar, vá até o seu PHPMYADMIN, selecione seu banco de dados e insira a QUERY:
CREATE TABLE IF NOT EXISTS `live_casts` ( `player_id` int(11) NOT NULL, `cast_name` varchar(255) NOT NULL, `password` boolean NOT NULL DEFAULT false, `description` varchar(255), `spectators` smallint(5) DEFAULT 0, UNIQUE KEY `player_id_2` (`player_id`), FOREIGN KEY (`player_id`) REFERENCES `players`(`id`) ON DELETE CASCADE ) ENGINE=InnoDB;
Caso tenha dúvidas de como inserir, segue um basic rs:
Feito, seu servidor agora possui CAST SYSTEM 100%!
REWARD SYSTEM
Caso seu servidor ainda não possua REWARD SYSTEM e queira adiciona-lo, basta adicionar os scripts:
http://www.tibiaking.com/forum/topic/64654-reward-chest-boss-reward-tfs-12/
(Importante lembrar que APENAS OS SCRIPTS devem ser adicionados, os códigos já estão opcionais nesta source)
Download das sources: https://www.sendspace.com/file/q51k5d
Scan: https://www.virustotal.com/pt/file/5e677cb5c3351852108ffa622e704cedfb1743b07b7cfad647666a2995da3212/analysis/1450298429/
PS: Aí estão as sources para compilarem em LINUX ou WINDOWS, não mexo com windows caso alguém queira compilar para windows e posta-la, agradeço.
Créditos:
Enfim, a melhor source está ai pra vocês, espero que façam um bom proveito.
Demais dúvidas, por favor, comentem ao tópico
BOM PROVEEEITO, É DO TKKKK :D