Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 07/19/12 em todas áreas

  1. beddy

    Tibia Harry Potter - By Beddy

    HARRY POTTER ONLINE - by BEDDY Servidor TIBIA HARRY POTTER Alguma vez voce pensou que poderia ser um aluno de HOGWARTS? Agora é sua chance! Venha para o Harry Potter Online e fassa amigos, pegue varinhas, voe de vassoura e muito mais! Estou disponibilizando o servidor pois meu projeto do Harry Potter Online foi por agua abaixo, por causa de um cara que conseguiu rippar as sprites do quilante... Meu projeto já estava 90% andado, mas agora ferrou-se tudo. Então estou mandando a parte do meu projeto que está pronta, porem com sprites do quilante (Já ESTA TUDO ADAPTADO) - O QUE VOCE VAI TER QUE FAZER: Ajustar o servidor... Já estou te dando quase tudo de mao beijada, agora é só fazer alguns ajustes. Como: adicionar NPC, fazer action de compra de TOGA, e coisas simples! Bem.. é isso aproveitem! Distro Totalmente Estavel Sem bugs Sem virus Sem motherfuckingthings! Apenas alegria! -O QUE TEM NO SERVIDOR: •1 Classes: Aluno •O player ao upar um level, ganha "POINTS" para trocar por LIFE OU MANA assim torna o jogo mais sensivel •Mapa Proprio •JA EXISTE VIP E DONATES - AJUSTE PARA O NESCESSARIO -O QUE FALTA NO SERVIDOR: •AJUSTAR LIFE/HIT/LOOT DE MONSTROS - AJUSTAR OS SPRITES DAS HORCRUX (MAS O SISTEMA JA ESTA FUNCIONANDO CORRETAMENTE) -SISTEMAS: • Vassoura • Preparar poçoes (voce pega o axe [iD:2386], usa-o naqueles crystais que estaão espalhados pelo servidor, e com o crystal na backpack, use a magia "preparar", isso vai fazer com que seu caldeirão tenha carga,dai voce poderá dar USE no vial em cima do caldeirão para terminar sua poção!) -SITE HTML INCLUSO! DOWNLOAD: http://depositfiles....files/csh0uuxil http://depositfiles....files/csh0uuxil (INCLUSO: SERVIDOR, CLIENTE, SITE) SCREENS: REP+ PRA MIM POW! SCAN: Por Kaspersky PRO https://www.virustotal.com/file/c5b9fb7a023599d3be295eff034717e55d6e428753164d8377bc79777e34f722/analysis/1342184200/ Por Virus Total CREDITOS: Beddy Erickrusha - fez a parte do mapa do entorno de HOGWARTS,obrigado man!
    5 pontos
  2. River

    #001 [Kingdom Age] Montanhas

    Olá, galera! Beleza? Ultimamente me veio uma vontade de compartilhar meu trabalho do Kingdom Age. Isso mesmo! Não vou postar o KA para download, obviamente, mas muito melhor que isso: aos poucos vou ensinando a como desenvolver um projeto, estritamente na área de desenvolvimento de mapas, à nível do Kingdom Age. Nossa! Você tá louco!! Não. Não estou. Sempre honrei o meu trabalho e, principalmente, à quem me fez criar o Kingdom Age. Foi graças a sites como o XTibia que fui desenvolvendo minha capacidade em todas as áreas. Como você desenvolveu, se eu nem te conheço? Simples. Existe uma coisa chamado troll, na internet, que simplesmente me desmotivou a publicar meus trabalhos e, aviso de antemão, que por isto vou ignorar quaisquer comentários e dúvidas. Para quem não sabe o significado da gíria troll, aqui vai um trecho editado do wikipédia: "Um troll, sendo um anglicismo, a partir da gíria da internet, designa uma pessoa cujo comportamento tende sistematicamente a desestabilizar uma discussão, provocar e enfurecer as pessoas envolvidas nelas." Wikipédia - http://pt.wikipedia.org/wiki/Troll_(internet) Para te deixar bem claro, trouxe uma outra fonte: "Qualquer um agora pode ser um grande gênio dentro da internet, pode conseguir sucesso no Youtube ou pode falar o que quiser que nada vai acontecer com ele. E isso criou um espaço muito grande para todas aquelas pessoas que são frustradas na vida pessoal poderem colocar pra fora essa frustração virando "haters" - pessoas amarguradas e negativas que só sabem xingar tudo. Ele não tá na internet pra divulgar conteúdo, pra passar qualquer tipo de mensagem ou ter qualquer tipo de argumento nas críticas que ele faz. É aquela bagunça desesperada de quem não tem mais nenhum recurso pra oferecer e ele quer muito aparecer. Mas algumas pessoas falam, e eu acredito, que talvez seja pelo fato de eles sentirem muita raiva do fracasso que eles têm. A diferença da crítica pra "trollagem gratúita" tá exatamente na falta de argumento. O troll é movido pelo seu ódio e pela sua pouca idade mental. E por ser ignorado pelo mundo... Pelo desprezo que ele sente... Pela carência..." Felipe Neto - youtube.com/watch?v=B2HqX65Wug0 Vai ignorar quaisquer comentários e dúvidas? ... Até dúvidas? Sim. Estou ensinando, mas não sou professor para tirar dúvidas. Na minha concepção, um tutorial é como uma apostila. O ensinamento está ali, mas quem tem que buscar aprender é você. Independente de eu ter me informado bastante sobre todas as áreas em fóruns como este, eu ralei bastante para aprender e ser o melhor que pudia e não apenas melhor que o melhor. É por isso que, provavelmente, muitos acham o Kingdom Age muito criativo. Vamos ao que interessa! Bom, pessoal. Essa próxima imagem que vocês estão vendo é de uma cidade minha - Dron'Ma. Em algumas aulas (espero me animar bastante para dar continuidade às próximas), aprenderemos a desenvolver montanhas como essa. O programa que vou utilizar em todas as aulas é o RME. Você pode encontrar para download no link abaixo: Remere's Map Editor - http://remeresmapeditor.com/ O primeiro passo é fazer o básico do formato de sua montanha, que não vou ensinar nesta aula. Eu priorizei o piso na parte sem terra - o cinzento. E é nela que vamos trabalhar. Fiz seis exemplos para ficar o mais claro possível. Então vamos botar a chapa pra esquentar! #1 - Formato do piso Após ter coberto o piso no formato desejado, pegue o id da pedra lisa e faça as bordas sempre do exterior ao centro. Evite colocar somente no centro, pois deixa a imagem suja. Não use a borda automática do RME. Para desativar, pressione a tecla "A" ou acesse o local no canto superior esquerdo da tela: Edit>Border Options>Border Automagic e verifique se está desativado. #2 - Bordas Aqui vamos abordar um assunto bem interessante que ralei para desenvolvê-lo. Meu meio de criar bordas para qualquer tipo de ground se baseia em apenas três métodos. Para facilitar a mensagem nesta aula, resolví nomeá-los para: Técnica de Linha - É a estilização de borda mais simples. Até a borda automática do RME pode desenvolvê-la; Técnica de Zigue-Zague - Semelhante ao da linha, porém com uma "quebra" na linha dando-a um formato de zigue-zague; Técnica de "T" - Coloque uma borda diagonal, imagine-a girando para algum lado e posicione-a dando-a um formato de T. Certo. Mas vem cá... Nós não já colocamos borda? Sim. Porém, vamos detalhar a borda para dar um formato além do fixo. Vamos fazê-lo parecer algo saindo do limite dos SQMs 32x32 pixels do jogo. #3 - Técnica de bordeamento Aqui está um exemplo de como deveria ficar. No próximo passo vamos aprender como fazer para estilizá-las assim. #4 - Breve resultado Neste passo eu destaquei onde eu pus as bordas para melhor visualização e entendimento. Você pode entender melhor seguindo o modelo dos círculos 3 e 4. 3 - Exemplo de borda lisa posta acima do ground quebradiço; 4 - Exemplo de sobreposição das bordas quebradiças às bordas lisas. #5 - Saindo dos limites Vamos começar aos detalhes de verdade. Às montanhas onde há muita natureza em volta (exemplos: floresta, pântano, etc), eu costumo usar os ids postos no círculo 5. No círculo 6, você pode ver alguns formatos padrões. Esses são os que eu costumo usar. Sempre que vou utilizá-las várias vezes, eu as faço num lugar que eu possa recortar facilmente (como num andar acima do local em que você está mappeando) para distribuir inúmeras vezes sem ter o trabalho de redesenhá-la. #6 - IDs e formato do carpetbrush vermelho Como já expliquei no passo anterior, é só copiar os modelos e sair distribuindo pelas áreas. Ignore o excesso nos locais fora do limite dos grounds, pois iremos retirá-los apenas no fim. #7 - Inserindo o carpetbrush Como essa região da montanha é muito cinzenta e estou pondo um vermelho do nada, existe um "choque" nas cores. Para resolver isso, vamos colocar os ids cinzentos sobrepondo os vermelhos. Na imagem abaixo, você pode perceber uma outra técnica que costumo usar. OBS: Se você simplesmente desenhar um id em cima do outro, não será possível obter o resultado desejado. É preciso desenhar os dois IDs a serem somados, em diferentes locais e puxar um deles para cima do outro. #8 - Removendo o choque da tonalidade vermelha Este passo é um tanto complicado... pelo menos foi para mim. Eu alterei nas configurações do RME a porcentagem do id inserido no círculo 9 para que demorasse a aparecer, pois ela suja bastante a imagem por ter uma tonalidade muito forte. Tanto é que, se você perceber, dos seis grounds abaixo, apenas o central inferior possue um id do círculo 9; o resto é formado pelos ids do círculo 8. Mas... Grama? Numa montanha? Meu amigo, nascem até árvores em montanhas. O principal motivo disso é o fungo. Fungo surge a partir da umidade local, isto é, quando o local está úmido. Podemos considerar "umidade local" como floresta, pântano, chuva recente, etc. Por isto, só coloque grama ou qualquer outra coisa viva se tiver alguma floresta, pântano ou até se neste local apresenta indícios de chuvas anteriores. #9 - Grama Este passo também é um pouco complicado de se adquirir habilidade. No meu caso, para facilitar meu trabalho, editei no RME para desenhar apenas os ids mostrados dentro do círculo 10 e, raramente, o id dentro do círculo 11. Depois é só espalhar, como destacado na imagem abaixo. No círculo 12, você pode ver um caso que muitos têm "medo" de fazer. Coloque ids sobrepondo um ao outro sim. Não tem o menor problema. Não vai bugar, muito menos bloquear a passagem. Só mantenha em mente esta regra de "overdetailed": todo e qualquer SQM com acima de 9 ids, "buga". Mas que bug é este, River? Se você jogar um item no SQM, o primeiro id, desconsiderando o ground, vai "sumir". Quer testar? Vá em qualquer servidor, junte vários itens diferentes num mesmo SQM e veja o que acontece. #10 - Pedrinhas O passo abaixo é bem divertido de fazer, mas costumo usar em todas as montanhas. Resolví ensinar para chegar ao máximo no resultado da montanha da cidade Dron'Ma que fiz. Os ids que uso estão dentro do círculo 13. Ei, chefe. Que bolinha vermelha é aquela alí? Eu a desenhei para facilitar a seguinte explicação: Ao desenhar qualquer id do círculo 13, procure sempre imaginar um foco central. Como se fosse uma bola mesmo. Procure prestar atenção às posições dos espinhos sobre todos os seis exemplos de grounds. Se você notou algo, percebeu que todas as suas pontas estão voltadas para um centro imaginário. #11 - Espinhos Este é um detalhe minúsculo e bem simples de fazer. Basta verificar onde está o foco de fungos (próximo às gramas e pedras marrons) e distribuir entre os ids do círculo 14. #12 - Cogumelos Apague o excesso de detalhes fora dos SQMs do piso. Juntando todos os detalhes feitos após o passo "#2 - Bordas", podemos ver algo semelhante ao resultado abaixo. #13 - Visualização todos os detalhes O resultado é algo semelhante à imagem abaixo. Nossa, River. Isso tá "overdetailed"! Amigo, gosto não se discute. E, creio eu, que montanha alguma seja tão lisa como as que muitos mappeiam. #14 - Montanha a la overdetailed Okay, River. Mas mesmo assim... É impossível andar por aí! Já cansei de ouvir essa crítica ridícula. Aproveite uma função do RME pressionando a tecla "O" ou acessando o local no canto superior esquerdo da tela: View>Show pathing. Esta função serve para identificar locais em que o player possa pisar ou não. Nos SQMs que o player possa ultrapassar, mantêm-se a imagem natural como no círculo 15. Mas, se não for possível, a imagem ficará levemente vermelha como no círculo 16. De todos os seis exemplos, apenas um possue um SQM bloqueado e é por algo bem fácil de imaginar que bloquearia. #15 - Overdetailed e jogável Um desses exemplos, eu utilizei num castelo de uma nova cidade que estou fazendo. Podem analisar e verificar que é idêntica a um dos exemplos que eu fiz. Saca só! #16 - Exemplo de uso Mesmo ignorando o fato de os trolls nunca deixarem de existir, sei que ainda existe gente que preste neste mundo. E é só por eles que suei para ensinar tudo isso. Se você não se considera um troll, não critique, pois não precisei das criticas de ninguém para melhorar. Coloquei uma frase na minha cabeça de uma música da banda Legião Urbana: "Se quiser alguém em quem confiar, confie em si mesmo. Quem acredita sempre alcança." Que isso sirva de exemplo para muitos de vocês que acham que só podem aprender a partir de críticas. Não sei nem para quê serve esse botão de "+REP" no tópico, mas se puder clicar, eu agradeço. Vão treinando aí, que se eu animar, volto com mais aulas! Atenciosamente, River.
    4 pontos
  3. sharematrix

    Sistema Automático Moip!

    Opa, beleza? Faz muito tempo que não entro aqui no xtibia, mas agora vou começar a entrar denovo, e irei disponibilizar um sistema de pagamento automático do MoIP que criei, quando você receber o pagamento, o sistema adiciona os pontos AUTOMATICAMENTE na conta do jogador. A primeira coisa é criar as tabelas do MySQL! Vá no phpmyadmin e rode a query abaixo: CREATE TABLE IF NOT EXISTS `moip_nasp` ( `id` int(11) NOT NULL AUTO_INCREMENT, `id_transacao` varchar(100) NOT NULL, `valor` int(11) NOT NULL, `status_pagamento` int(11) NOT NULL, `cod_moip` int(11) NOT NULL, `forma_pagamento` int(11) NOT NULL, `tipo_pagamento` varchar(100) NOT NULL, `email_consumidor` varchar(150) NOT NULL, `completed` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=20 ; ALTER TABLE `accounts` ADD `premium_points` INT NOT NULL AFTER `group_id`; Agora, com as tabelas do MySQL criadas, crie um arquivo chamado retorno.php na pasta do seu website com o seguinte conteúdo: (Por questão de segurança, mude o nome do arquivo de Retorno.php para outro, pois se alguma outra pessoa que viu este tutorial, poderá ficar enviando dados pra encomodar) <?PHP $conn = mysql_connect('localhost', 'root', 'xxx'); $db = mysql_select_db('otserv2'); $id_transacao = $_POST['id_transacao']; $valor = $_POST['valor']; $status_pagamento = $_POST['status_pagamento']; $cod_moip = $_POST['cod_moip']; $forma_pagamento = $_POST['forma_pagamento']; $tipo_pagamento = $_POST['tipo_pagamento']; $parcelas = $_POST['parcelas']; $email_consumidor = $_POST['email_consumidor']; if((!$cod_moip) or (!$status_pagamento)) { Header('HTTP/1.1 500 Internal Server Error'); } else { $queryMOIP = mysql_query("SELECT * FROM moip_nasp WHERE cod_moip = '$cod_moip';"); if(mysql_num_rows($queryMOIP) >= 1) { $Update = mysql_query("UPDATE moip_nasp SET `status_pagamento` = '$status_pagamento' WHERE cod_moip = '$cod_moip';"); if(($status_pagamento == 1) or ($status_pagamento == 4)) { $Explode = explode("-", $id_transacao); $points = $valor / 100; $AddPoints = mysql_query("UPDATE accounts SET `premium_points` = '$points' WHERE id = '".$Explode[0]."';"); } } else { $Insert = mysql_query("INSERT INTO `moip_nasp` (`id`, `id_transacao`, `valor`, `status_pagamento`, `cod_moip`, `forma_pagamento`, `tipo_pagamento`, `email_consumidor`) VALUES (NULL, '$id_transacao', '$valor', '$status_pagamento', '$cod_moip', '$forma_pagamento', '$tipo_pagamento', '$email_consumidor');"); } Header('HTTP/1.1 200 OK'); } exit; ?> No MoIP, o status 1 é Autorizado, e o status 4 é Concluído. Ambos os status, querem dizer que o pagamento será creditado em sua conta, então não precisa ficar esperando liberar. Beleza? criou? então vamos configurar o MoIP pra enviar os dados para sua URL, quando o pagamento for atualizado (Ex: Concluido, Autorizado) Crie sua conta no MoIP: Clicando Aqui! Depois de criada, vá para a página Meus Dados -> Preferências -> Notificação das transações E configure a URL de notificação Assim: Configurou? beleza, vamos pra próxima parte. Agora, na página para comprar pontos no seu servidor, adicione este código para enviar os dados para o MoIP! if(!$_POST['send2']) { $content = '<b>MoIP / Boleto / Cartão de Crédito</b><BR> Aqui você encontra tudo que é necessario para fazer sua doação com segurança e facilidade.<BR><BR> <form action="" method="post" name="pag" onSubmit="return checkPag();"> <input type="hidden" name="method" VALUE="3"> Pontos: <input type="text" name="pontos" value="" size="5" maxlength="4"><BR><BR>Lembrando que cada point custa R$ 1,00<BR><BR> <input type="submit" name="send2" value="Prosseguir"> </form><BR><a href="http://www.moip.com.br/" target="_blank"><img src="http://www.moip.com.br/imgs/banner_5_1.jpg" border="0"></a>'; } else { $pontos = $_POST['pontos']; $valor = $pontos * 100; $content = '<b>MoIP / Boleto / Cartão de Crédito</b><BR> Aqui você encontra tudo que é necessario para fazer sua doação com segurança e facilidade.<BR><BR> <form action="https://www.moip.com.br/PagamentoMoIP.do" method="post"> <input type="hidden" name="id_carteira" VALUE="EMAILMOIP"> <input type="hidden" name="nome" VALUE="'.$account_logged->getCustomField("id").' Points - MEUOTSERV"> <input type="hidden" name="id_transacao" VALUE="'.$account_logged->getCustomField("id").'-'.rand(1000, 9999).'"> <input type="hidden" name="valor" VALUE="'.$valor.'"> Pontos: '.$pontos.'<BR><BR>Valor: R$ '.$pontos.',00<BR><BR> Você tem certeza?<BR><BR>Se você não realizar o pagamento, sua conta poderá ser bloqueada.<BR><BR> <input type="submit" name="send" value="Comprar!"> </form><BR><a href="http://www.moip.com.br/" target="_blank"><img src="http://www.moip.com.br/imgs/banner_5_1.jpg" border="0"></a>'; } Você pode ver que o id_transacao irá ficar assim (ex: 2345-3244), os primeiros numeros antes da barra - são o ID da conta, e os últimos são o id da trasação, tente não remover isso, senão vai estragar o script TODO! EMAILMOIP = email da sua conta no MoIP (que irá receber os pagamentos) MEUOTSERV = nome do seu otserv. Então é isso galera, eu uso esse sistema á um bom tempo, e nunca deu algum problema. se tiverem alguma dúvida, perguntem aqui neste tópico. OBS: funciona no ModernAAC também, só é necessário mudar a função de pegar o ID da conta do player logado. Se acharem melhor baixar os arquivos, em vez de copiar e colar, os arquivos estão anexados no tópico. Scan: https://www.virustot...sis/1342728882/ Se gostarem, REP+ :] MoIP_ShareMatrix.zip
    2 pontos
  4. M4t83u5

    [Encerrado] Ot Item Editor 8.0

    Estou a procura de um ot item editor versão 8.0 Valendo rep+ se estiver funcionando
    2 pontos
  5. Tibia Server Mapa Global Eae pessoal, venho trazer a vocês um servidor de Tibia com mapa igualzissimo ao do Tibia Original. Com Rookgard e muito mais, claro não fui eu quem fiz este servidor magnifico. Mais venho traze-lo para vocês fazerem dele sua base e ter um servidor muito melhor de Tibia. Como nós sabemos nenhum servidor vem sem bugs, então é issu vo postar algumas imagems e espero que gostem. Muitas coisas ainda vocês terão de configurar como onde o player ínicial irá nascer e etc.. Este servidor estava sendo utilizado com site então você terá de fazer suas auterações. Cidades Newbie Island (Rookgaard) + Island of Destiny Ankrahmun Ab'Dendriel Carlin Darashia Edron Yalahar Kazordoon Liberty Bay Port Hope Svargrond Thais Venore Farmine Zao Cormaya Algumas imagems: Como eu ja disse este servidor não foi eu em que fui, mais venho pelo o menos trazer a vocês. Créditos Dener Diegoli Team e ao Membro Shekys do xtibia por contribuições enorme no projeto. Kurobisu (Por Trazer aqui pro Xtibia) Downloads OTServer Completo: >>( Kurobisu Download Otserv )<< Download Client Normal de Tibia 8.6: >>( Kurobisu Download Client )<< Download do SqliteStudio para quem for usar via account manager: >>(Kurobisu Download SqliteStudio)<< O 4Shared ja tem seu proprio ( Scanner ) então pelo visto não precisa. Estou também abrindo este tópico para caso alguém tenha alguma dúvida ou ache algum bug possa reporta-lo para mim, e eu concerteza tentarei ajuda-lo. Então como muitos sabem o tópico deve ter regras, e aqui não será diferente. Regras Poste suas dúvida aqui caso tenha alguma, caso acho algum bug poste aqui também. Tentarei ajudar o maximo possivel. Gosto do tópico? Lhe ajudei?Rep+ Não ajudei? Tentarei melhorar
    1 ponto
  6. Vmspk

    [9.1] 4Fun Server

    4Fun Server Versão: 9.1 Distro: Crystal Server 1.5 Mapa Base: Vários Foi um edit rápido, 2 dias. Juntei algumas partes de mapas desconhecidos e algo do Azeroth. 2 amigos (ociosos =D) me ajudaram a importar algumas quests e editar o resto. Me disseram que os Ots 9.1 estavam muito ruins, talvez este possa ajudar. 4 Cidades: -> Celestia -> Theos -> Valmun -> Sandrina Mudanças/Conteúdo: Principais Quests: Imagens: Sistema de Guerras pelo Castelo [Honor Castle] Upgrade & Slot System ACC GOD: 222222/password Se acha que ter um OtServ é só baixar, abrir e largar lá, ou ainda editar chars e equipamentos para você mesmo jogar e fazer o que quiser, garanto-lhe que não vai durar 2 dias. Crie eventos, interaja com os jogadores, faça torneios Pvp, marque datas para a Honor Castle, faça updates no mapa, crie monstros, hunts e quests, dê suporte e, o mais importante, mantenha o HELP aberto, sempre. IpChanger 9.1 - Sources - Scan Download 4Fun Server Completo - [MEDIAFIRE] Créditos: Otmind/Kantera, Mistocalana, Mock, Majesty, Bruno0, Crystal Server Team, TFS Team, Coruja e Vmspk. Este tópico recebeu destaque em nosso portal!
    1 ponto
  7. pessoa93

    Como Usar O Dedicado.

    Como usar o dedicado. Fiz o tutorial visando o modo geral, por que cada site de hospedagem pode mudar seu modo de como usar. Até então é a maneira mais fácil de usar para quem está começando. Surgem duvidas em relação a isso por isso fiz esse tutorial. Primeiro: Vá em Iniciar>Todos os programas> Acessórios e clique em: ou Segundo: Vai aparecer uma janela par você colocar o IP (O ip é dado após a confirmação do pagamento do seu dedicado juntamente com o login e senha que vai precisar após esse passo). Terceiro: Digite seu login e senha dado pelo servidor de hospedagem o qual você contratou. Você ficará em uma tela de um computador normal, agora é só fazer upload do seu servidor e baixar dentro do dedicado. ( Não funciona ctrl c + ctrl v para copiar seu servidor para o dedicado, tem que fazer UPLOAD.!
    1 ponto
  8. Detect Global Full 100% e Em Linux!! bom galera, vi que mt nego sofre pra por ot em linux, entao vo liberar aqui um otserver 100% em linux, so usar o ssh e um programa ftp por o server la e executar ums comandos que vou mostrar abaixo, vejam bem nao precisa compilar o server ele ja ta compilado. oque vai precisar fazer eh apenas configurar o config.lua e instalar o site no caso, instalar o apache e Mysql. vou mostrar como faz isso tambem, abaixo os links e os comandos na ordem!! Download da pasta do server ---> http://speedy.sh/AWzGW/otserv.rar Download da database ---> http://speedy.sh/KwFsw/ot-2.sql Download do Website ---> http://speedy.sh/UduXd/htdocs.rar (Renomeaia para www) abra um programa ftp e faca isso tem varios tutorias mostrando como acessar um servidor linux, bem jogue a pasta do server no seu diretorio, /home/seudiretorio/otserv/ apos ter feito isso use o ssh para usar os comandos para instalacao do apache & mysql, feito isso configure o config.lua estando tudo certo, apenas abra o ot e feche com os comandos abaixo no ssh -- digite cd /home/seudiretorio/otserv em sequida digite: ./theforgottenserver - esse comando abre o servidor sem auto restart. ./tfsAutoRestarter - esse comando abre o servidor com auto restart. killall -9 theforgottenserver - fechar ot instalando php + apache + mysql no linux ubuntu apos fazer essa parte aqui do apache voce executa os comandos acima, apos ter configurado o config.lua etc.. Instalar o Ubuntu não necessita de nenhum conhecimento avançado. Antes de iniciar de fato a instalação dos pacotes recomendo atualizar o arquivo sources.list do apt: $ sudo vi /etc/apt/sources.list Substitua todo o conteúdo do arquivo por: ## Add comments (##) in front of any line to remove it from being checked. ## Use the following sources.list at your own risk. deb http://archive.ubuntu.com/ubuntu dapper main restricted universe multiverse deb-src http://archive.ubuntu.com/ubuntu dapper main restricted universe multiverse ## MAJOR BUG FIX UPDATES produced after the final release deb http://archive.ubuntu.com/ubuntu dapper-updates main restricted universe multiverse deb-src http://archive.ubuntu.com/ubuntu dapper-updates main restricted universe multiverse ## UBUNTU SECURITY UPDATES deb http://security.ubuntu.com/ubuntu dapper-security main restricted universe multiverse deb-src http://security.ubuntu.com/ubuntu dapper-security main restricted universe multiverse Salve o arquivo. Atualize a lista do apt: $ sudo apt-get update $ sudo apt-get upgrade Agora chegou a hora de instalar o Apache 2 e o PHP 5. $ sudo apt-get install apache2 php5 Para testar se tudo foi instalado corretamente, crie o arquivo index.php com as informações do PHP5: $ sudo vi /var/www/index.php Copie o conteúdo abaixo para o novo arquivo: <?php phpinfo(); ?> Salve o arquivo e acesse o endereço http://localhost/. Se as informações do PHP aparecerem, tudo está instalado corretamente. Com o Apache e o PHP rodando redondinho, é o momento de instalar o MySQL. $ sudo apt-get install mysql-server-5.0 php5-mysql Agora troque a senha do administrador root do MySQL: $ sudo mysqladmin -u root seu_password Para que o serviço rode direitinho junto com o PHP5, reinicie o Apache: $ sudo /etc/init.d/apache2 restart Para administrarmos o MySQL, instale o phpMyAdmin, que é uma das melhores ferramentas para este fim. $ sudo apt-get install phpmyadmin Acesso o endereço http://localhost/phpmyadmin/ e forneça o login root e a senha que você definiu no MySQL. O seu ISP apenas fornece-lhe um endereço IP dinâmico em constante mutação? Com o no-ip você pode ter um endereço de internet (ex. http://edsonjr.no-ip.org) e divulgar a todos os seus amigos, sem precisar passar seu IP a cada mudança. Primeiramente, você deve criar uma conta em: http://www.no-ip.com/newUser.php Depois de criada, vamos instalar o serviço para que seu ip se atualize automaticamente. $ sudo apt-get install no-ip Agora vamos configurar a conta: $ sudo no-ip -C No campo "login", digite o e-mail cadastrado e, depois, sua senha. Será pedido para que você digite, também, o tempo de atualização, em minutos. Recomendo 10. O serviço já está configurado! Agora é só acessar o endereço http://nome_site.no-ip.org e divulgar seu site para todos os seus amigos! Fonte: viva o linux, Publicado por Edson Junior caso voce use um vps ou dedicado pule a parte do no-ip vlw espero ter ajudado, tentem vale a pena pra ter um servidor profissional, so mesmo em linux xD
    1 ponto
  9. AI GALERINHA DO XTIBIA AKI SHADOWNZINHO ESTOU ENTRANDO PARA RAMO SCRIPTER ^^ AINDA SOU NOVO NISSO QUERO QUE VEJAM MEU PRIMEIRO SCRIPT 100% MEU (DIGAM O QUE ACHAM, OQ ESTA FALTANDO ETC...) PRIMEIRAMENTE VAO EM (PASTA DO OT/DATA/ACTION/SCRIPT) DEPOIS DISSO CRIE UM ARQUIVO.LUA LA COM UM NOME QUE VC ESCOLHER (EX: outfitquest.lua) SE TIVER ALGUMA COISA DENTRO DO ARQUIVO APAGUE E COLOQUE ISSO LEGENDA * VERMELHO É O VALOR DA STORAGE QUE O PLAYER IRA RECEBER AO GANHAR O OUTFIT * AZUL É O OUTFIT QUE O PLAYER IRA RECEBER (287 SE PLAYER FOR MALE /// 312 SE O PLAYER FOR FEMALE) * VERDE ADDONS DO OUTFIT QUE O PLAYER IRA RECEBER (1 SOMENTE A 1ª PARTE /// 2 SOMENTE A 2ª PARTE /// 3 FULL) * ROXO A MENSAGENS QUE IRAO APARECER QUANDO PLAYER GANHAR O OUTFIT E QUANDO TENTAR PEGAR NOVAMENTE) DEPOIS QUE FIZER ISSO SALVE E FEXE VÁ EM (PASTA DO OT/DATA/ACTIONS/ACTION.XML) ABRA E ADICIONE A SEGUINTE TAG DEPOIS DE TER FEITO ISSO VAMOS PARA ULTIMA PARTE VÁ EM (PASTA DO OT/DATA/XML/OUTFIT.XML) E COLOQUE AS SEGUINTES TAGS VALEU GALERINHA DO XTIBIA DUVIDAS POSTEM AKI QUE AJUDAREI (COMENTEM) CREDITOS : 100% MEU POIS EU QUE CRIEI O SCRIPT AJUDEI ? REP+ SHADOWNZINHO
    1 ponto
  10. tesla

    C, Aprendendo A Programar

    Motivo: Bom pessoal, primeiramente olá, eu sou novo no XTibia, jogo somente tibia global, não me interesso por OT, mas vamos lá: Sempre gostei de computador sou muito familiarizado com ele, e agora to aprendendo por conta própria a linguagem C. To com uma apostila muito boa. E já faz um tempo eu estou ficando de "tocaia" na área de programação do XTibia, e para falar a verdade, eu não vi, pelo menos na minha opinião, algum tutorial, que fosse do Básico (Básico mesmo) ao Pelo menos intermediário, e como vocês já devem de ter percebedio a maioria dos tutoriais são de C++. Então decidi criar este tutorial como um definitivo, ao longo do meu aprendizado, vou editando o post, e incrementando aulas. Por que aprender o C? Como a maioria já deve saber o C++ é o incremento do C (daí o "++"), e na minha opinião, para você aprender o incremento, primeiro deve-se aprender a base. Requerimentos: Bom para se aprender a linguagem de programção não precisa ter conhecimento sobre outras linguagens, apenas ser familiarizado com o PC. Vamos precisar ao longo do tutorial do Dev-C++ disponível para download no seguinte link: Dev-C++ Peço à vocês que: Comentem as minhas aulas, provas e deêm sujestões. Breve resumo: O C foi criado por Dennis Ritchie derivado do B, criado por Ken Thompson que por sua vez é derivado do BCPL criado por Martin Richards. Aula 1 - Introdução, Um Primeiro Programa A primeira vez que você for abrir o Dev-C++ ele vai pedir uma configuração de linguagem e skin, coloque em Português (Brasil) e com o skin que você mais gostar. Após isto vá em Arquivo -> Novo -> Arquivo Fonte (Ou Ctrl + N).Agora observe que um arquivo é aberto, esse é o código fonte do seu programa. OBS: É aconselhado que o aluno Digite os códigos contidos nessas aulas, para ir se acostumando. #include <stdio.h> int main () { printf ("Eu Existo\n"); /* oO um programa criado por mim */ return(0); } Digite o código no Dev compile e execute (F9). Agora Vamos desmembrar este programa, e explicar parte por parte: #include <stdio.h> O comando #include <stdio.h> diz ao programa que ele deve incluir o arquivo-cabeçalho stdio.h . Este arquivo possui todas a funções para entrada e saída de dados. O C possui diversos cabeçalhos. int main () { } A linha int main () define a função de nome main. Todo programa C deve ter esta função pois esta será chamada quando o programa for executado. Todo o código desta função é delimitado por {} (chaves), e será executado seqüencialmente. O int diz que o programa retorna um inteiro. printf ("Eu Existo\n"); /* oO um programa criado por mim */ A Função printf () imprime uma string na tela (string é uma seqüencia de caracteres, vamos apronfundar mais para frente), o "Eu Existo" é um argumento, este é o texto ser impresso na tela. \n é uma constante recebe o nome de constante barra invertida. Ele indica que após o Eu Existo devemos mudar de linha, então ser tivermos um printf igual ao que vimos aqui ele será impresso debaixo do primeiro. É como se fosse para entender melhor o <br> do html. Quando fazemos um programa é um bom hábito colocarmos comentários isto torna seu programa mais fácil de se entender, estes são delimitados por /* */ e não são compilados pelo programa. Toda linha de função deve terminar com ;. return (0); Observe que quando executamos o programa ele fecha tão rápido que não dá tempo de se ver o Eu Existo na tela. Calma, o seu programa não está com defeito, pelo contrário, ele funciona corretamente, o que acontece é como eu disse, ele executa o código seqüencialmente, então logo após imprimir o Eu Existo na tela, ele não perde tempo e já determina o printf () como uma função já executada e executa a próxima linha, no nosso caso o return (0);. O return (0); determinou que ele devia retorna á um inteiro no caso o 0, mais para frente vamos aprofundar no return. :button_ok: Prova :button_ok: Aula 2 - Matemática e o C Galera, antes desta aula devemos compreender que quase tudo (pra não dizer tudo) no C é matemática, então se você não é bom em matemática pode prosseguir, mas tome muito cuidado e tenha atenção ao ler as aulas. Caso você seja :smile_positivo: em matemática, digamos que não irá quase que encontrar dificuldade nas aulas. #include <stdio.h> #include <stdlib.h> int main () { float pi, x, re; /* define os pontos flutuantes */ printf ("Ente com o valor a ser multiplicado (aproximadamente) por Pi\n(numeros com virgula, deve ser usado ponto ao inves de virgula ex: 1.0): "); scanf ("%f", &x);/* obtem valor de x */ pi = 3.1415; /* define o valor aproximado de Pi */ re = x*pi; /* atribui o resultado se x vezes Pi ao ponto flutuante res */ printf ("\n\aO Produto foi aproximadamente: %f\n", re); system ("pause"); } Digite, Compile e Execute. Vamos agora analizar cada estrutura: stdlib.h Standart Library ou seja Biblioteca Padrão, para saber mais entre aqui Stdlib.h (Wikipédia) float pi, x, re; Float é um ponto flutuante, melhor explicando vou dar um exemplo: 7,555888 ou seja números com casas decimais, no C, o programa não usa "," (vírgula) para definir casas decimais, ele usa pontos exemplo: 7,555888 está errado, o correto no programa C seria: 7.555888. Podemos definir várias floats com nomes diferentes sempre separando por vírgula. Vou aproveitar e ensinar sobre os números inteiros: int pi, x, re; aqui pi, x e re são inteiros, ou seja, números que não tem casas decimais exemplo: 7555888. Lembrando que 7555888 é diferente de 7.555888. scanf ("%f", &x); O scanf () lê um dado fornecido pelo usuário, o parâmetro "%f" diz ao scanf () que iremos ler um float (para ler inteiro usamos "%d"), o &x atribui o valor do float fornecido pelo usuário á variável x (lembrando que definimos a variável no ínicio do programa como um float), é importante lembrar de colocar o & antes da variável no scanf (), vamos ver o porque disso mais tarde. pi = 3.1415; Aqui atribuimos o valor 3.1415 (casas decimais representadas por ponto) á variável "pi". re = x*pi; Agora é que vem a matemática, aqui nós atribuimos o valor do produto da equação "x*pi" a "re". printf ("\n\aO Produto foi aproximadamente: %f\n", re); Nós agora devemos imprimir na tela o resultado, primeiro vou explicar o \a. O \a emite um "beep". Agora depois a frase "O Produto foi aproximadamente:" queremos que o valor de "re" (produto de x*pi) apareça na tela, para isso colocamos o %f dizendo ao programa que um float irá aparecer (se fosse um int seria %d) e depois da frase, devemos definir qual o float irá aparecer, então separamos a frase com uma vírgula (depois de delimitar o que será impresso com aspas) e colocamos o parâmetro "re". "re" é a variável (float) que armazenou o produto, então o %f digitado no printf, irá imprimir o valor de "re". Se quisessemos imprimir o valor de "x" por exemplo, depois do valor de "re" era só colocar outro %f no printf e depois definir o parâmetro "x" ficando assim: printf ("\n\aO Produto foi aproximadamente: %f %f\n", re, x); Observe que a string "%f" corresponde a seqüencia dos parametros, ou seja o 1º "%f" corresponde á "re" o 2º "%f" corresponde á "x". system ("pause"); Esta função só pode ser usada caso incluimos o cabeçalho stdlib.h como fizemos no início do programa. Ela é como se fosse um "Pause" mesmo no programa, ela só irá executar a próxima função caso o usuário precione qualquer tecla, como no nosso programa as funções se acabam depois dela, o programa fecha. :button_ok: Prova :button_ok: Aula 3 - Funções, Argumentos e Retornando Valores Agora que já temos uma noção, vamos criar as nossas funções. As nossa funções seram sempre chamadas somente depoisda função main. #include <stdio.h> #include <stdlib.h> int msg () { printf ("Se um knight bem doido quisesse chegar ao distance skill 100, ele usaria 745.807.745.800.000 bolts, que atirados sem parar, consumiriam: 413.437.636.585 Horas 17.226.268.190 Dias 574.218.940 Meses ou 47.851.578 Anos!"); /* coloque isto na mesma linha do printf de cima */ return (0); } int main () { msg (); printf ("\n\nSabia?\n"); system ("pause"); } Digite, compile e execute. Analizando... msg (); O msg (); chama a nossa função, e não define nenhum parâmetro, já que sabemos que main é a primeira função a ser chamada, se não chamarmos a nossa função ela vai ser "ignorada" pelo programa. Chamando a função dentro de main é como se colocassemos o código da função msg dentro de main. Esta técnica, torna o programa mais organizado, e mais fácil de se compreender. Também podemos usar funções para retornar valores, resultados, ou o que for. #include <stdio.h> #include <stdlib.h> int tot (int x) /* Calcula o quadrado de x */ { printf ("O quadrado e %d\n",(x*x)); system ("pause"); } int main () { int y; printf ("Entre com um numero: "); scanf ("%d", &y); printf ("\n"); tot(y); return(0); } Digite Compile e Execute. Antes de explicar o código fonte acima vou dar um resumo sobres os Argumentos. Eles são as entradas que a função recebe. Com eles damos parâmetros as funções, um exemplo de argumento simples é o (x*x), que tem como produto um inteiro, que é impresso pelo "%d". Observe que no início da função nós definimos um inteiro x, e observe também que em main quando vamos chamar a função tot definimos um argumento y. Isso faz com que o valor da variável y em main, seja copiado para variável x em tot. Podemos também simplificar a função de tot colocando apenas para retornar o resultado de x*x. #include <stdio.h> #include <stdlib.h> int tot (int x) /* Calcula o quadrado de x */ { return (x*x); } int main () { int y, res; printf ("Entre com um numero: "); scanf ("%d", &y); printf ("\n"); res=tot(y); printf ("O Quadrado e: %d\n", res); system ("pause"); } Digite Compile e Execute Neste caso simplesmente atribuimos o valor de tot, a res, que é impresso na tela. tot neste caso tem a função de retornar do valor da multiplicação x*x. #include <stdio.h> #include <stdlib.h> int conta (float a, float b, float c) { return (a*b*c); } int main () { float x, y, z, res; printf ("Entre com um numero decimal (ponto ao inves de virgula): "); scanf ("%f", &x); printf ("\nEntre com outro numero decimal (ponto ao inves de virgula): "); scanf ("%f", &y); printf ("\nEntre com outro numero decimal (ponto ao inves de virgula): "); scanf ("%f", &z); res=conta(x, y, z); printf ("\a\nResultado da multiplicação: %f\n\n", res); system ("pause"); } Digite, compile e execute Observe que definimos mais de uma variável como parâmetro, se quisessemos poderiamos definir até um valor por exemplo, colocando o valor de pi ao invés de z ficando assim: #include <stdio.h> #include <stdlib.h> int conta (float a, float b, float c) { return (a*b*c); } int main () { float x, y, res; printf ("Entre com um numero decimal (ponto ao inves de virgula): "); scanf ("%f", &x); printf ("\nEntre com outro numero decimal (ponto ao inves de virgula): "); scanf ("%f", &y); res=conta(x, y, 3.1415); printf ("\a\nResultado da multiplicação: %f\n\n", res); system ("pause"); } :button_ok: Prova :button_ok: Aula 4 - Caracteres O caractere é tratado no C, como um dado, esse dado tem o nome de char: #include <stdio.h> #include <stdlib.h> int main () { char letra; letra='E'; printf ("%c\n",letra); system ("pause"); } Digite Compile e execute char letra; Como sabemos, devemos definir todas as variáveis no início do programa, assim fazemos com o caractere, que é definido pelo parâmetro "char". Um caractere pode ser uma letra ou um número, e é indicado por ' ' (apóstrofes). O código de controlhe dos caracteres é "%c". O char também pode armazenar um valor inteiro, esse valo corresponde a um caractere. Esse código é conhecido como código ASCII, veja abaixo que o programa irá imprimir um número correspondente ao caractere pois dizemos ao printf para imprimir um inteiro mas estamos usando um char, isso acontece por que o printf usa o ASCII. Abaixo o programa irá imprimir o número 99 que corresponde ao caracter "c". Vale a pena lembra que a linguagem C é "Case Sensitive" ou seja A (maiúsculo) é diferente de a (minúsculo). #include <stdio.h> #include <stdlib.h> int main () { char letra; letra='c'; printf ("%d\n",letra); system ("pause"); } Aqui 2 listas (a segunda é continuação da primeira :withstupidsmiley: ) dos caracteres ASCII A maioria das vezes queremos ler um caractere fornecido pelo usuário, para isso usamos getch () e getche (). Geralmente estas funções não estão disponíveis em Unix, pois não fazem parte do Padrão ANSI. Apesar disso podemos substituir estas funções pelo scanf (). #include <stdio.h> #include <conio.h> #include <stdlib.h> int main () { char letra; letra = getch(); printf ("Voce pressionou a tecla %c", letra); system ("pause"); } #include <conio.h> É por esse cabeçalho que não funciona em Unix, a não ser que você o possua, sem ele não se pode usar getch () ou getche (). letra = getch(); Aqui o char "letra" não é um caractere, aqui ele define que o caractere será fornecido pelo usuário. Agora vamos ver em como fazer isso com um scanf (): #include <stdio.h> #include <stdlib.h> int main () { char letra; scanf("%c", &letra); printf ("Voce pressionou a tecla: %c\n", letra); system ("pause"); } Aqui o scanf () ao invés de armazenar um número irá armazenar um caractere no char "letra". A Principal diferença é que no primeiro caso com o getch () o usuário simplesmente precisa apertar a tecla com o caractere, já com o scanf () o usuário precisa apertar <ENTER> depois de digitar o caractere. A Diferença entre getch () e getche () é que o primeiro apenas armazena o caractere, já o segundo imprime antes de armazenar. :button_ok: Prova :button_ok: Aula 5 - Strings String é um vetor de caracteres, vamos estudar o vetor mais a frente, a string sempre acaba com um caractere nulo. Este caractere nulo pode ser representado pela barra invertida da seguinte forma '\0'. Vamos ver agora os fundamentos básicos para se usar uma string. #include <stdio.h> #include <stdlib.h> int main () { char frase[100]; printf ("Digite uma frase: "); gets (frase); printf ("\a\nDigitou: %s\n", frase); system ("pause"); } Digite Compile e execute char frase[100]; Bom, aqui definimos uma string chamada "frase". O "[100]" depois de "frase" define o tamanho máximo da string, se você entrar com uma string maior o programa pode aceitar, mais será uma catástrofe, veremos porque mais à frente. Bom então o tamanho máximo da string é 99. Sim, pois no C, a contagem começa do 0. gets (frase); Aqui nós pegamos uma string digitada pelo usuário, e armazenamos na string "frase". Para fazer isso nós usamos o comando gets () já incluído em stdio.h. Suponhamos agora que nós temos uma string com nome "str" e a string armazenada seja "xtibia", e nós queremos acessar o segundo caractere (t) para isso basta indexarmos ou seja: str[1] = 't'; Mas porque estamos acessando 't' e não 'x' já que colocamos "1"? Lembre-se que o C começa a contar do 0 se quisermos acessar o caractere 'x' devemos colocar [0]. Com isso podemos até mesmo alterar um caractere da string se fizessemos assim: str[1] = 'x'; e imprimir na tela, teriamos uma string escrota : "xxibia". printf ("\a\nDigitou: %s\n", frase); Bom vocês já devem ter percebido que %s serve para imprimir uma string. Acho que agora é um bom momento para mostrar a tabela dos códigos de controle: Vou improvisar Aqui: %d %f %c %s %% Correspondem à: Inteiro Float Caractere String % #include <stdio.h> #include <stdlib.h> int main () { char frase[100]; printf ("Digite uma frase: "); gets (frase); printf ("\a\nDigitou: %s\n", frase); printf ("O Segundo Caractere da Frase e: %c\n", frase[1]); system ("pause"); } Digite Compile e Execute Bom observe que queremos imprimir o segundo caractere digitado pelo usuário, para isso acessamos com a string "frase" indexada do número do seu segundo caractere [1], e imprimimos usando um código de controlhe %c já que queremos imprimir somente um caractere. :button_ok: Prova :button_ok: :construction: Galera to ocupado com o grupo de programação, mas em breve voltarei :construction: Tutorial 100% Criado por Tesla (Victor França Lopes) Lembrando: Sou apenas um estudante e não um professor :positive: Qualquer dúvida: victorhavenk@hotmail.com (Online quase 24Hrs)
    1 ponto
  11. Avronex

    Pblink Project Online

    PBlink Project Online Olá a todos, meu nome é Victor e estou aqui para mostrar a vocês o projeto que venho construindo a 6 meses. O meu objetivo com esse servidor não é ser apenas mais um online, mas um que traga inovação, diversão, competição e disputas. Por isso estou aqui hoje, venho apresentar o projeto a vocês que está na "sombra" a 6 meses, e pedir algumas sugestões para podermos melhorar. O servidor está quase pronto, o que falta é a adição de alguns sistemas. Farei agora a apresentação do projeto. Alguns de sistemas presentes em nosso projeto *Ability System O ability system é exclusivo do Pblink, porém temos presente esse sistema nos jogos de Pokémon da Nintendo®. Cada Pokémon caso tenha alguma ability, essa ability é natural. Estará em spoiler as abilities presentes em nosso servidor. *Gender System Um sistema realmente indispensável, esse sistema define o sexo de cada Pokémon presente no jogo. Os pokemons podem ser encontrados com 3 tipos de sexo: Male | Female | Assexuado Os pokemons tem uma chance aleatória de nascer com determinado sexo. Com exceção dos pokemons que tem apenas um sexo. Exemplos: Tauros – Apenas male Chansey – Apenas female Nidoqueen – Apenas female Nidoking – Apenas male Entre outros. *Egg System O Egg system nada mais é do que ovos de pokemons . Ao achar um ovo de Pokémon, você deverá comprar uma encubadora e usa-lá nele . Logo após um tempo, um lindo bebê Pokémon irá nascer. A vantagem de se ter um Pokémon nascido do ovo é que eles têm mais vida que os pokemons normais. "23:17 Congratulations! The Bulbasaur that was in her egg was born!" *TM System É um sistema que ainda será aprimorado com pretenções para adicionar HM's. Ao achar o TM você poderá usar em seu Pokémon, caso ele seja da categoria adequada ao move. O player começará com uma "TM Bag", onde terá os slots pros TM's. Quando o player usar algum TM Disk, por exemplo TM19 - Giga Drain , ele desbloqueará o slot do TM, veja a seguir. Os TM's existentes em nosso servidor atualmente são: * TM24 Thunder Bolt; * TM03 Water Pulse; * TM80 Rock Slide; * TM38 Dream Eater; * TM19 Giga Drain; *Tutorial Island Nesta ilha é onde tudo começa, aqui você estará em um centro Pokémon, com apenas uma pokeball vazia e 100 small Stones que você usará para matar e capturar seu primeiro Pokémon. Logo após você capturar seu primeiro Pokémon, deverá conversar com o Professor do laboratório da ilha. Ele poderá te tirar da ilha e te dar uma ajuda com algumas pokeballs para comessar sua jornada Pokémon. *Random Respawn "Eevee, o que dizer desse Pokémon extremamente esperto..." Ele aparece em algumas horas do dia em lugares diferentes e aleatórios do mapa. "É realmente um desafio capturar essa magnífica criatura, mas caso consiga é um cara de sorte" *Control Minds Pokemons psíquicos têm essa abilidade de controlar a mente do outro Pokémon, tendo um controle temporário de tal. *Fishing Quando você lança a vara na água você deve de esperar um tempo até que algum Pokémon morda a isca. Existem três tipos diferentes de Rods no nosso servidor: Old Rod Good Rod Super Rod A primeira, pode ser comprada no mark, enquanto as outras são recompensas de quests . *Training System Com a retirada do level system, nós decidimos que deveriamos fazer a criação de um sistema que valorizasse o tempo que o player gasta treinando um pokemon. Entao decidimos criar mais esse sistema. Quanto mais o player treinar o pokemon, mais força e vida ele vai ter, deichando o jogo mais real. Entao se um jogador se esforça muito para treinar um pokemon, não será em vão, ele terá mais força e hp que um pokemon nao treinado. Podendo assim aumentar o PvP (Player vs Player). O sistema de treinamento é bem complexo. Seu pokemon, poderá tambem evoluir se estiver feliz, e depois de um trabalho pesado nos treinamentos. O Training System está atualmente dividido nos seguintes Ranks: Very weak Weak Resistant Strong Very strong Untouchable *Quest Log Todas as quests presentes em nosso servidor, são registradas no quest log., contendo todas as informações sobre a conclusão da quest. *Cassino "Façam suas apostas!" No cassino você pode jogar, acumular fortunas, e depois trocar sua fortuna por pokemons que você só encontra no cassino! *Saffari Sem dúvidas um ótimo lugar para se procurar um Pokémon. No saffari você pode encontrar pokemons onde não se pode encontrar em qualquer outro lugar. Ainda contem outros sistemas não mensionados acima. É que são muitos, não da pra ficar falando de 1 por 1. O que traremos ao XTibia? Sem dúvidas o Xtibia pode nos levar muito mais do que nós podemos trazer. Mas estaremos fazendo o necessário, e nos empenhando em trazer os melhores conteúdos para vocês. Não estamos falando de disponibilizar nossos sistemas, mas eu quando faço um script, sempre faço de 2 (dois) jeitos diferentes, o que nos sobraria um e seria o que nós postaremos ao Xtibia. Primeiro sistema que traremos ao Xtibia Quem nunca jogou pokemon nos seus tempo de criança ou até depois de velho? Pois é, nós iremos colocar em votação 2 sistemas que a nurse recupera a vida de seu Pokémon: *Primeiro Quando você chega ao centro pokemon, diz "hi" e ela simplesmente recupera seu(s) pokemon(s). (Como todos os servidores de pokemon online) *Segundo Quando você chega ao centro pokemon, diz "hi" e ela recupera seu(s) pokemon(s), e tambem como no GBA, você passará a ser morador daquela cidade, sendo que quando morrer, voltará para a ultima cidade em que voce conversou com a Nurse Joy. *Conclusão O segundo sistema é Original do Pokémon, porém ninguem nunca o colocou em algum servidor ou nunca o fez. O sistema usado em nosso servidor será decidido por meio de votação e o sistema menos votado será trago ao Xtibia. Sobre o mapa O mapa têm o tamanho de 60.234Mb, é totalmente baseado no seriado. Ele está apresentado nos spoilers abaixo. Atualizações recentes 22/07/2012 Algumas atualizações e pequenas correções foram feitas. Entre elas está a adição de alguns novos items e outfits como podem ver abaixo. *Items Obs: Há outras mas vou evitar colocar aqui para nao ocorrer possíveis rippings 25/07/2012 Foram feitas algumas modificações no mapa, como podem ver abaixo. 31/07/2012 Andei 3 dias ausente aqui do tópico mas foi pelo motivo de eu estar me empenhando muito no servidor. Nesses 3 dias muitas coisas aconteceram relacionado a ele. Algumas modificações vocês podem ver abaixo. Muitos ajustes tambem foram feitos como balanceamento dos pokemons, danos, etc. Poderão conferir todas as modificações detalhadas no Changelog Ingame. *Adicionado todos os 151 pokemons "Shiny" *Adicionado Evento para a inauguração do PBlink! Conclusão O Pblink Online não é apenas mais um servidor de pokemon, mais é O SERVIDOR de pokemon. Estamos com grandes planos e o projeto crescerá significadamente. Eu fiz o servidor sozinho, a mais ou menos 6 meses. Tem as próprias sources. Entao vamos continuar crescendo com ótimos obejtivos pois quem traça seu objetivo consegue com esforço e dedicação. O servidor está quase pronto, o que falta é a adição de alguns sistemas. Breve mais fotos do servidor... Previsão de lançamento do servidor oficial: dia 10 de agosto de 2012
    1 ponto
  12. dgprado

    [9.6] Bestserver.servegame.com

    Best Server bestserver.servegame.com Servidor 9.6 com novos outfits, addons, monstros, items, server aberto 24Hs, estabilidade absoluta, por isso não fazemos saves durante o jogo, apenas 1 global save todos os dias 06:00 hrs. caracteristicas: ip: bestserver.servegame.com Galeria de fotos: Npc palomino, aluga cavalos Npc Ottokar Npc Broken Servant Sentry Gray Island Lady Bug mount Kollos cave (custon) Deep area(custon)
    1 ponto
  13. MatheusEnjoy

    Anti-Palavrão E Anti-Spam

    Nome: Anti-Palavrão E Anti-Spam Versão: 1.0 Código: MatheusEnjoy Forum Origem: XTibia Versão: Todos TFS Descrição: Baseado no script do MatheusMkalo, resolvi adicionar uma nova biblioteca para poder bloquear ainda mais serviços, e ainda por cima criei a biblioteca de palavrões mais comuns. Bom vamos ao tutorial: game.cpp: Procure por: if(muted) { char buffer[75]; sprintf(buffer, "You are still muted for %d seconds.", muteTime); player->sendTextMessage(MSG_STATUS_SMALL, buffer); return false; } Abaixo você adiciona: Caso queira utilizar o Anti-Spam if (int(text.find("noip")) > 0 || int(text.find("no-ip")) > 0 || int(text.find("servergame.com")) > 0 || int(text.find("zapto.net")) > 0 || int(text.find("sytes.net")) > 0 || int(text.find("hopto.org")) > 0 || int(text.find("bounceme.net")) > 0 || int(text.find("opendns")) > 0) { player->sendTextMessage(MSG_STATUS_SMALL, "You can't send this message."); return false; } Caso queira utilizar o Anti-Palavrão if (int(text.find("tnc")) > 0 || int(text.find("fdp")) > 0 || int(text.find("krl")) > 0 || int(text.find("merda")) > 0 || int(text.find("puta")) > 0 || int(text.find("puto")) > 0 || int(text.find("fuder")) > 0 || int(text.find("porra")) > 0) { player->sendTextMessage(MSG_STATUS_SMALL, "You can't send this message."); return false; } Se for adicionar os dois, acrescente um abaixo do outro.
    1 ponto
  14. Prezyoso2

    Regras De Tópicos

    Ta bom folspa ta bom, ja pode sair
    1 ponto
  15. Eskylo

    Remover Storage?

    cada outfit vai ter q ter 1 storage diferente <outfit id="22" quest="100"> /\ ali vc pois 100 entao pra dar a storage 100, só usar : setPlayerStorageValue(cid, 100, 1) pra tirar a storage setPlayerStorageValue(cid, 100, -1) pra outro outfit vc muda a storage se usar uma q ja ta sendo usada, vai entrar em conflito
    1 ponto
  16. <?xml version="1.0" encoding="UTF-8"?> <creaturescripts> <event type="login" name="PlayerLogin" event="script" value="login.lua"/> <event type="joinchannel" name="GuildMotd" event="script" value="guildmotd.lua"/> <event type="receivemail" name="Mail" event="script" value="mail.lua"/> <event type="reportbug" name="SaveReportBug" script="reportbug.lua"/> <event type="death" name="TelePort" event="script" value="tp.lua"/> <event type="login" name="viplogin" script="viplogin.lua"/> <event type="login" name="CheckMcManager" event="script" value="checkmcmanager.lua"/> <event type="death" name="teleportmonster" script="tpmonster.lua"/> <event type="death" name="tpdruid" event="script" value="tpdruid.lua"/> <event type="think" name="ZombieThink" event="script" value="onthink.lua"/> <event type="statschange" name="ZombieAttack" event="script" value="onattack.lua"/> <event type="death" name="ZombieDeath" event="script" value="ondeath.lua"/> <event type="preparedeath" name="onPrepareDeath" event="script" value="preparedeath.lua"/> <event type="death" name="DeathTeam1" event="script" value="WarArenaDeathTeam1.lua"/> <event type="death" name="DeathTeam2" event="script" value="WarArenaDeathTeam2.lua"/> <event type="preparedeath" name="onPrepareDeathinifi" event="script" value="aolinfinity.lua"/> <event type="think" name="Idle" event="script" value="idle.lua"/> <event type="think" name="SkullCheck" event="script" value="skullcheck.lua"/> <event type="death" name="PlayerDeath" event="script" value="playerdeath.lua"/> <event type="login" name="FirstItems" event="script" value="firstitems.lua"/> <event type="PrepareDeath" name="pvparena" script="pvparena.lua"/> <event type="attack" name="attackguild" script="attackguild.lua"/> <event type="death" name="incendio" script="incendioMonster.lua"/> <event type="preparedeath" name="onPrepareDeath" event="script" value="preparedeath.lua"/> <event type="login" name="antimc" event="script" value="antimc.lua"/> </creaturescripts>
    1 ponto
  17. Isso sim dá para fazer. local damage = COMBAT_LIFEDRAIN local rounds = 15 local delay = 3 * 1000 local function doCombatCondition(cid, target, type, area, min, max, effect, rounds) if isCreature(target) then doAreaCombatHealth(cid, type, getThingPosition(target), area, min, max, effect) if rounds > 0 then addEvent(doCombatCondition, delay, cid, target, type, area, min, max, effect, (rounds - 1)) end end return true end function onCastSpell(cid, var) local formula_min = getPlayerLevel(cid) local formula_max = getPlayerLevel(cid) * 2.5 + 32 local target = variantToNumber(var) addEvent(doCombatCondition, delay, cid, target, damage, 0, -formula_min, -formula_max, CONST_ME_DRAWBLOOD, rounds) return true end Tá aí algo que simula mais ou menos uma condição de dano com atraso em segundos e que você pode manipular o dano mínimo e máximo com fórmulas.
    1 ponto
  18. gustavo3754

    Seven Acc [Version Wodbo] 1.0

    Namoral mais o site ta horrivel não ta centralizado e só tem uma tabela. Mais é um bom inicio pra algumas pessoas que só sabem o basico ta bom
    1 ponto
  19. vc n tinha falado q era pra dar 1 item, agnt pensou q vc ta tinha o comando pronto... tai add 1 item funcion onSay(cid, words) item = 2160 quantidade = 1 local storage = 5555 -- Configure aqui o numero do storage if getPlayerStorageValue(cid, storage) >= 1 then return true else setPlayerStorageValue(cid, storage, 1) end doPlayerAddItem(cid, item, quantidade) return true end
    1 ponto
  20. O cara é meu brother!, Não enche!
    1 ponto
  21. masdead

    Ajuda Com Rme

    vai na pasta onde você instalou o seu RME 2.2 e delete as dll's WSOCK32.dll e RPCRT4.dll Não abra o RME pelo atalho na área de trabalho pois se não as dll's serão criadas novamente abra o RME pela pasta onde você instalou ele ou criem outro atalho espero ter ajudado
    1 ponto
  22. BlackTheRabbit

    Rabiscos Do Coelho

    Haha, claro q sim, Liberado! =D Mas manda PM ou comenta aqui mesmo c for usar. E n Esqueçam de dar REP++ Abraços Pessoal =D
    1 ponto
  23. kewen70

    [Encerrado] [Pokemon] Dúvidas? - Pda

    @cacaiu Crie uma pasta Chamada Quest no Seuserver/data/actions function onUse (cid,item,frompos,item2,topos) pos = {x=1059, y=904, z=7} pos2 = getPlayerPosition(cid) UID_DO_BAU = 6153 STORAGE_VALUE = 6153 ID_DO_PREMIO = 2160 ID_DO_PREMIO2 = 193 if getPlayerLevel(cid) >= 86 then if item.uid == UID_DO_BAU then queststatus = getPlayerStorageValue(cid,STORAGE_VALUE) if queststatus == -1 then doTeleportThing(cid,pos) doPlayerSendTextMessage(cid,22,"Parabens.") -- Msg que ira aparecer doPlayerAddItem(cid,ID_DO_PREMIO,4) doPlayerAddItem(cid,ID_DO_PREMIO2,1) setPlayerStorageValue(cid,STORAGE_VALUE,1) doTeleportThing(cid, pos) doSendMagicEffect(pos2, CONST_ME_TELEPORT) else doPlayerSendTextMessage(cid,22,"Vazio.") end end else doPlayerSendCancel(cid,'Somente levels 86+ conseguem abrir este bau.') end return 1 end Depois vá em seuserver/Data/actions/actions e coloque isto <action itemid="XXX" event="script" value="quest.lua" allowfaruse="1"/> Desculpa se está mal esplicado sou novo nisso.
    1 ponto
  24. Funciona perfeita com a v9.60: http://www.megafileupload.com/en/file/360205/OMFG-Spr-Editor-V1-1-zip.html
    1 ponto
  25. Aragorn100

    Pokemon Supreme® {Atualizado²}

    ate lá se tibia não tiver acabado vai estar on sim ps:meu nome é ARAGORN100 não Eragon100
    1 ponto
  26. Leoxtibia

    Npc Teleporter

    ===NPC=== Crie um arquivo.lua em data/npcs/scripts e cole isto dentro: 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 function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid local t = { --- posições para level menor que 40 ["cyclops"] = {pos = {x=1,y=1,z=1}}, ["templo"] = {pos = {x=100,y=40,z=7}}, ["troll"] = {pos = {x=1,y=1,z=1}}, ["dwarf"] = {pos = {x=1,y=1,z=1}}, ["elf"] = {pos = {x=1,y=1,z=1}}, ["amazon"] = {pos = {x=1,y=1,z=1}}, ["orc"] = {pos = {x=1,y=1,z=1}} } local x = { -- posições para level maior que 40 ["templo"] = {go = {x=100,y=40,z=7}}, ["dragon"] = {go = {x=1,y=1,z=1}}, ["scarab"] = {go = {x=1,y=1,z=1}}, ["vampire"] = {go = {x=1,y=1,z=1}}, ["giant spider"] = {go = {x=1,y=1,z=1}}, ["hydra"] = {go = {x=1,y=1,z=1}}, ["dragon lord"] = {go = {x=1,y=1,z=1}} } local min = "Escolha para onde quer ser teleportado: {cyclops}, {templo}, {troll}, {dwarf}, {orc}, {elf}, {amazon}." --- msg para lvl menor q 40 local max = "Escolha para onde quer ser teleportado: {templo}, {dragon}, {scarab}, {vampire}, {giant spider}, {hydra}, {dragon lord}." -- msg para lvl maior que 40 if msgcontains(msg, "travel") or msgcontains(msg, "Travel") then if getPlayerLevel(cid) <= 40 then selfSay(min, cid) talkState[talkUser] = 1 elseif getPlayerLevel(cid) > 40 and getPlayerLevel(cid) <= 80 then selfSay(max, cid) talkState[talkUser] = 2 end elseif talkState[talkUser] == 1 then if t[msg] then doTeleportThing(cid, t[msg].pos) doSendMagicEffect(getCreaturePosition(cid), 10) selfSay("Boa viagem.", cid) talkState[talkUser] = 0 end elseif talkState[talkUser] == 2 then if x[msg] then doTeleportThing(cid, x[msg].go) doSendMagicEffect(getCreaturePosition(cid), 10) selfSay("Boa viagem.", cid) end end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Em data/npcs, crie um arquivo.xml e cole isto dentro: <npc name="NOMEDOSEUNPC" script="data/npc/scripts/NOMEDOSEUARQUIVO.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="134" head="78" body="88" legs="0" feet="88" addons="3"/> <parameters> <parameter key="message_greet" value="Ola. Para mais informacoes de meus servicos diga {travel}." /> <parameter key="message_farewell" value="Tchau." /> <parameter key="message_walkaway" value="Tchau." /> </parameters> </npc> ===TALKACTION=== Em data/talkactions/scripts crie um arquivo.lua e cole isto dentro: local maxlevel = 80 -- abaixo desse level os players poderão ir local npc = {x=1, y=1, z=1} --- local que o npc estará function onSay(cid, words, param) if getPlayerLevel(cid) < 80 then doTeleportThing(cid, npc) doSendMagicEffect(npc, 10) else doPlayerSendTextMessage(cid, 22, "Apenas players com level abaixo de ".. maxlevel .." tem acesso ao npc.") end return true end Em talkactions.xml cole a tag: <talkaction words="!teleport" script="NOMEDOSEUARQUIVO.lua"/> ===CREATURESCRIPTS=== Em data/creaturescripts/scripts crie um arquivo.lua e cole isto dentro: function onAdvance(cid, skill, oldLevel, newLevel) if getPlayerLevel(cid) >= 70 and getPlayerLevel(cid) <= 80 then doPlayerSendTextMessage(cid, 18, "Lembre-se que depois do level 80 você não poderá usar o comando !teleport") end return true end Em creaturescripts/scripts/login.lua cole antes do return true: registerCreatureEvent(cid, "Notice") Em creaturescripts.xml cole a tag: <event type="advance" name="Notice" event="script" value=NOMEDOSEUARQUIVO.lua"/> Vlw, espero ter ajudado, abraços. @edit Percebi que level 80+ podiam se teleportar com o npc,agora já resolvi isso.
    1 ponto
  27. beddy

    [Encerrado] Como por novas sprs

    Primeiramente... voce deseja CRIAR NOVOS, ou apenas trocar os sprites? Pode me mandar PM, que eu te ajudo tranquilão, de boas!
    1 ponto
  28. Sim Sim isso eu sei minha duvida e tpw. function isSpin(cid) return isInArray({6, 7}, getPlayerVocation(cid)) - isso e tpw, ele vocaçao 7 com spells da 6 , ne isso que significa nao? end cara ainda ta bugando =/ a supreme sword. ela e de atk de area, tem algo a ver? ai vodkart sera que tem como por para resetar todas as skills? obrigado dnv' i cara eu posso por mais vocations? normal, ou preciso mudar algo pra por mais de 5? exemplo:
    1 ponto
  29. jhon992

    Teaser #1 – Pequena, Mas Poderosa!

    Ótima noticia, pelo visto o update de verão vai ser bom.
    1 ponto
  30. Nadotti

    Subwat Kamikaze V6.1 Atualizado

    Obelisko754 ~~ Tinha Retirado Poqe o SCAN e o Download era de outro mapa meu primo feiz errado agr fiz o do Certo Vlw ! Retired : By : ÑáãDoTii xP
    1 ponto
  31. notle

    [Encerrado] [Pokemon] Dúvidas? - Pda

    pra quem não tiver cliente com dlls ejetadas ta aqui Cliente http://www.4shared.com/rar/tEiEobVd/POKE.html
    1 ponto
  32. SkyDangerous

    Novas Regras De Tópicos

    vou banir, quem se passa por membros da equipe.
    -1 pontos
  33. Vodkart

    Novas Regras De Tópicos

    Lordfire alertado em 10% por se passar por membro.
    -1 pontos
  34. lazarocp

    Pokemon Online (Svke) Processado

    kkkkkkkkkkkkkk tem 1 cara falando em outro tópico que a cipsoft vai processar a otland e a open tibia também, aiehuaheuahe jaja o Steve Jobs me processa por usar o windows 0 Não respondo MP. E-mail para contato: Daniel@xtibia.com Spoiler epa falo o rs algem ai tem um client de pokemon svke q posa usar ip chager add msn ai lazaroex@hotmail.com.br
    -1 pontos
  35. Linshun

    Veih Na Boa

    ok, removi a suspensão mais cuidado na próxima
    -1 pontos
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...