Ir para conteúdo

Krono

Barão
  • Total de itens

    247
  • Registro em

  • Última visita

  • Dias Ganhos

    5

Histórico de Reputação

  1. Upvote
    Krono recebeu reputação de Alayen em Ubuntu Firewall - Entendendo e Configurando o UFW   
    Olá Ek tibianos, como vão vocês? Tudo correndo as mil maravilhas?

    Apresentando:
    Bom hoje vim apresenta-lhes o UFW, conhecem?
    Se a resposta for não, saibam que o UFW ou Uncomplicated Firewall nada mais é que o Firewall do Linux Ubuntu.

    Esse Firewall é um software de segurança pré instalado no sistema operacional Linux Ubuntu que restringe as portas de entrada e saída de dados do computador permitindo apenas conexões que estejam dentro das regras estabelecidas dentro das configurações do mesmo, essas regras podem ser modificadas de acordo com o uso do usuário, visando um maior ou menor acesso de outros computadores.

    Vejam a explicação na imagem a seguir:

    Supondo que você queira abrir um servidor de Tibia no Linux Ubuntu:
    Sendo assim você teria que abrir a porta 7171 no firewall, criando uma brecha para as conexões, e se você quisesse bloquear a conexão ao site, você teria que fechar a porta 8080 do Firewall.



    Por padrão esse software, vem ativado, porém com todas as suas portas abertas, sendo assim ele não restringe nenhuma conexão externa, ou seja, sua ação é nula.



    Como quase tudo no Linux Ubuntu, as configurações do firewall são via terminal, não que seja impossível a utilização gráfica, mas para isso seriam necessários upgrades no sistema.

    Sendo assim explicarei os comandos para configuração apenas via terminal.

    ufw status Verifica se o Firewall está ativo no sistema. Caso ele esteja ativo, mostrará também as regras de conexões configuradas.


    ufw default allow Altera o padrão que ao ativar o Firewall todas as portas venham abertas(porém não remove as regras criadas).


    ufw default deny Altera o padrão que ao ativar o Firewall todas as portas venham fechadas (porém não remove as regras criadas).


    ufw enable Ativa o Firewall.

    ufw disable Desativa o Firewall.

    Para configurar é simples, você pode Adicionar ou remover regras de acordo com o seu uso.
    Veja:

    Ao digitarmos o comando "ufw status" com o Firewall ativo, serão mostradas todas as regras ativas, e são elas que vão determinar o comportamento do Firewall para determinadas portas e conexões.

    To porta de conexão da regra Action Permissão de conexão(Permitida ou negada) From: conexão tem a permissão.

    Nesta parte podemos ver que pela regra
    A porta 80 (to) está aberta (allow) para a todas as conexões (Anywhere)

    Adicionando regras para conexões:
    Para adicionarmos utilizaremos o seguinte padrão no comando:

    ufw permisão from para quem -- Quando for para todas as portas
    ufw permisão from para quem any port porta -- Quando for para uma porta especifica

    Exemplos:

    1º Neste exemplo permitir a conexão por qualquer porta para o ip 192.168.1.3:

    ufw allow from 192.168.1.3 Caso quisesse negar utilizaria o comando
    ufw deny from 192.168.1.3 2º Já neste iremos permitir a conexão apenas pela porta 22 ao ip 192.168.1.3

    ufw allow from 192.168.1.3 to any port 22 Caso quisesse negar utilizaria
    ufw deny from 192.168.1.3 to any port 22 Removendo regras para conexões:

    Para adicionarmos utilizaremos o seguinte padrão no comando:

    ufw delete permisão from para quem -- Quando a regra seja de todas as portas
    ufw delete allow 80 permisão from para quem any port porta -- Quando a regra tiver uma porta especifica
    Exemplos:

    1º Supondo que desejemos remover esta regra.

    Utilizaremos o comando:

    ufw delete allow 80 2º Neste outro exemplo, deletaremos agora esta regra:

    Para isso utilizaremos o comando:

    ufw delete allow from 192.168.1.3 Bom então é isso.
    Gostaram? Aprenderam? espero que esse tutorial sirva de base para entenderem um pouco melhor o grande sistema que é o Linux Ubuntu!.

    Um grande abraço Att ~~ Krono - Xtibia

    Créditos: Krono
  2. Upvote
    Krono deu reputação a Danihcv em [TUTORIAL] Criando e configurando tabelas para paginas do site   
    Bom galera, dessa vez venho trazer um tutorial bem simples sobre tabelas e como criá-las em suas paginas PHP. Então vamos ao que interessa.
    ___________________________________________________________________________________



    Para definir o que estará dentro da tabela usamos <table> no inicio e </table> no final.

    Para definirmos o que estará entro de uma linha da tabela usamos <tr> no inicio e </tr> no final.
    *A linha por sua vez estará dentro da tabela, então primeiro declaramos o inicio da table e dps declaramos o inicio da linha.

    Para definirmos o que estará dentro de uma coluna usamos <td> no inicio e </td> no final.
    *A coluna por sua vez estará dentro da linha, que por sua vez estará dentro da tabela. Então primeiro declaramos o inicio da linha e dps declaramos o inicio da coluna.
    *Antes de começar uma nova coluna, finalize a anterior, para que não gere nenhum "bug".

    Para colocarmos um título às colunas devemos delimitar o mesmo usando <th> no inicio e </th> no final.
    *O titulo da coluna segue a mesma logica da coluna, ou seja, vc deve declarar uma linha para colocar os títulos dentro da mesma.
    *A diferença to th para o td é que o th coloca o seu texto em negrito. E no caso das paginas de sites de tibia, também coloca um fundo cinza escuro e altera a cor da letra para branco.

    Então vamos ver uma tabela de exemplo:
    <table> <tr> <th>Titulo-Coluna-1</th> <th>Titulo-Coluna-2</th> <th>Titulo-Coluna-3</th> <tr> <td>Coluna-1,linha-1</td> <td>Coluna-2,linha-1</td> </tr> <tr> <td>Coluna-1,linha-2</td> </table> E esse seria o resultado:

    Titulo-Coluna-1 Titulo-Coluna-2 Titulo-Coluna-3
    Coluna-1,linha-1 Coluna 2,linha-1
    Coluna-1,linha-2

    *Como pode-se ver, podem haver espaços vazios, os seja, uma linha pode ter mais colunas que outras. Dessa forma a coluna não terá valor algum nas demais linhas.

    Agora vamos colocar as bordas da nossa tabela. Para isso devemos adicionar as especificações da borda após decalararmos o inicio da table e colocamos tais especificações dentro do "comando" que usamos para dar o inicio à table. Obrserve:

    "Mas quais são as especificações da borda?" Bom, elas são basicamente 3: a espessura, o espaçamento e a cor.

    Códigos para os respectivos parametros:
    *Espessura: border="1" (nesse caso, a espessura da borda seria de 1 pixel)
    *Espaçamento: cellspacing="0" (nesse caso, não haverá espaçamento de uma borda pra outra entre 2 linhas/colunas. Assim fazemos uma borda simples, pois sem isso a borda da tabela ficaria com 2 linhas separadas, deixando um aspecto inusitado.)
    *Cor: bordercolor="#000000" (nesse caso a borda seria preta. Para ver o código da cor que vc deseja colocar, visite essa pagina de cores HTML e copie o código HTML da cor que vc qr e coloque dentro das aspas.)


    Então vamos ver um exemplo de uma tabela com bordas simples:
    <table [b]border="1" [b]cellspacing="0[/b]" [b]bordercolor="[url=null]#248685[/url]"[/b][/b]> <tr> <th>Titulo-Coluna-1</th> <th>Titulo-Coluna-2</th> <th>Titulo-Coluna-3</th> <tr> <td>Coluna-1,linha-1</td> <td>Coluna-2,linha-1</td> </tr> <tr> <td>Coluna-1,linha-2</td> </table> Esse seria o resultado (estou usando uma pagina do Gesior para mostrar o resultado):




    Porém se vc fizer o teste aí com frases maiores dentro das colunas e etc. Verá que todo o conteúdo de dentro da tabela (e inclusive a própria tabela) estarão concentrados no canto das colunas (e no caso da tabela, a mesma estará concentrada no canto esquerdo da pagina). Então digamos que vc queira colocar a tabela no centro da pagina e que vc queira centralizar todo o conteúdo da tabela no centro de suas respectivas colunas. Vc teria que usar um "comando" que centraliza o conteúdo.
    E esse comando é <div align="center"> (onde tem center vc pode esolher entre left (esquerda), right (direita) e claro center (centro)) aí logo em seguida vc coloca o conteúdo a ser centralizado e fecha o mesmo com </div>

    Atenção! Para usar o div align para centralizar uma tabela vc deve primeiro declarar ele e em seguida declarar o inicio da tabela e então após declarar o fim da tabela vc deve logo em seguida declarar o fim do div. Exemplo para centralizar a tabela no centro da pagina:
    <div align="center"> <table> <tr> <th>Titulo-Coluna-1</th> <th>Titulo-Coluna-2</th> <th>Titulo-Coluna-3</th> <tr> <td>Coluna-1,linha-1</td> <td>Coluna-2,linha-1</td> </tr> <tr> <td>Coluna-1,linha-2</td> </table> </div>
    Caso vc queira centralizar o conteúdo de uma coluna, vc deve declarar o div align após declarar o inicio da coluna. Exemplo de coluna com conteúdo centralizado no centro da mesma:
    <th> <div align="center"> Testando </div> </th> _____________________________________________________________________________________________

    Caso vc queira fazer edições no conteúdo da tabela, aqui tem um tutorial sobre edição de textos em HTML:

    http://www.xtibia.com/forum/topic/233324-tutorial-formatando-textos-em-php/
    ___________________________________________________________________________________________


    E isso é tudo, pessoal!

    Espero que tenha dado para entender tudo de forma correta e simples. ^^
    ___________________________________________________________________________________________


    Créditos

    Eu (@Danihcv)
  3. Upvote
    Krono deu reputação a Danihcv em [TUTORIAL] Formatando textos em PHP   
    Bom galera dessa vez trago pra vcs um tutorial simples de como editar (formatar) textos em suas páginas PHP.

    1°) Negrito
    Para deixar um texto em negrito basta definir esse texto com <b> (no inicio) e </b> (no final). Então o seguinte código:
    <b>Essa frase esta em negrito!</b> Teria esse efeito:
    Essa frase esta em negrito!

    1.1°) Modo alternativo
    Outro modo de escrever em negrito é usando <strong> e </strong>
    Apesar do strong não ser destinado à isso tem o mesmo efeito de negrito.


    2°) Sublinhado
    Para deixar um texto sublinhado basta definir esse texto com <u> (no inicio) e </u> (no final). Então o seguinte código:
    <u>Essa frase esta sublinhada!</u> Teria esse efeito:
    Essa frase esta sublinhada!


    3°) Itálico
    Para deixar um texto em itálico basta definir esse texto com <i> (no inicio) e </i> (no final). Então o seguinte código:
    <i>Essa frase esta em italico!</i> Teria esse efeito:
    Essa frase esta em italico!

    3.1°) Modo alternativo
    Outro modo de escrever em itálico é usando <em> e </em>


    4°) Riscado
    Para deixar um texto riscado basta definir esse texto com <s> (no inicio) e </s> (no final). Então o seguinte código:
    <s>Essa frase esta riscada!</s> Teria esse efeito:
    Essa frase esta riscada!


    5°) Mudando a fonte do texto
    Para mudar a fonte basta colocar <font face='FONTE QUE VC DESEJA'> (preste atenção aqui, pois o nome da fonte deve estar entre aspas simples!) no inicio e </font> no final da frase. Então o seguinte código:
    <font face='Times New Roman'> Fonte massa! </font> Teria esse efeito:
    Fonte massa!


    6°) Mudando a cor do texto
    Para mudar a cor basta colocar <font color='COR (EM INGLES) QUE VC DESEJA ou código html'> (preste atenção aqui, pois a cor deve estar escrita em inglês e entre aspas simples! O mesmo serve para o código html, deve estar entre aspas simples!) no inicio e </font> no final da frase. Então o seguinte código:
    <font color='red'>Ta vermelho!</font> <font='blue'>Ta azul!</font> Teria esse efeito:
    Ta vermelho! Ta azul!

    6.1°) Tabela de cores em html
    Aqui tem um link onde vc pode pegar o código html das cores de sua preferência para usar no código acima:
    http://www.flextool.com.br/tabela_cores.html


    7°) Mudando o tamanho do texto
    Bom aqui tem uma diferença da formatação de texto normal. Existem 7 tamanhos de fonte em php:


    O tamanho 2 é o tamanho padrão dos textos. Para mudar o tamanho da fonte basta usar o código <font size='TAMANHO QUE VC DESEJA (de 1 a 7)'> (preste atenção aqui, pois o tamanho deve estar escrito entre aspas simples!) no inicio e </font> no final da frase. Então o seguinte código:
    <font size='5'>Tamanho 5!</font> Teria esse efeito:
    Tamanho 5


    8°) Textos especiais (subscrito e sobrescrito)
    Para deixar um texto subscrito basta usar <sub> (no inicio) e </sub> (no final). Então o seguinte código:
    X<sub>5</sub> Teria o seguinte efeito:
    X5 (OBS: não ficaria em negrito! Eu apenas coloquei negrito para chamar atenção!)

    Para deixar um texto sobrescrito basta usar <sup> (no inicio) e </sup> (no final). Então o seguinte código:
    X<sup>3</sup> Teria o seguinte efeito:
    X3 (OBS: não ficaria em negrito! Eu apenas coloquei negrito para chamar atenção!)


    9°) Iniciando uma nova linha
    Para iniciar uma nova linha basta usar <br> no inicio da frase que inicia a nova linha. Então o seguinte código:
    <br>Se liga, linha 1 <br> <br> <br>Agora linha 4 Teria o seguinte efeito:

    Obs.: Não necessita fechar esse comando usando </br> pois ao declarar um <br> ele já inicia outra linha mesmo que a anterior "não tenha sido fechada".


    10°) Juntando os efeitos
    Você pode usar os comandos de size, color e face (fonte) em um só comando <font> da seguinte maneira:
    Ou seja, o seguinte código:
    <br><font face='times new roman' color='#0000FF' size='5'> Olha que loko! </font> Teria o seguinte efeito:
    Olha que loko!

    Vc pode concatenar todos os efeitos acima da forma que vc quiser, basta ter atenção! Por exemplo, o seguinte código:
    Aqui ta sem nada! <b>A partir daqui ta tudo em negrito... <font face='times new roman' color='##D2691E' size='6'>A partir daqui ta em negrito, azul, outra fonte, outro tamanho e em outra cor... </font> <i>A partir daqui ta em italico </i>Agora ta sem italico... </b>Agora ta sem negrito... </font>Agora ta da forma padrão! Teria o seguinte efeito:
    Aqui ta sem nada! [/size]A partir daqui ta tudo em negrito... A partir daqui ta em negrito, azul, outra fonte, outro tamanho e em outra cor... A partir daqui ta em italico Agora ta sem italico... Agora ta sem negrito... Agora ta da forma padrão![/size]


    _____________________________________________________________________________________
    ---------------------------------------------------------------------------------------------------------------------------

    AGORA É A SUA VEZ!!!
    Poste aqui um texto de sua autoria e editado da forma ensinada do jeito que vc quiser!

    Eu darei REP+ a todo post que estiver editado de forma correta! ^^



    E isso é tudo pessoal! ^^

    _____________________________________________________________________________________
    ---------------------------------------------------------------------------------------------------------------------------

    Créditos

    Eu (@Danihcv)

  4. Upvote
    Krono recebeu reputação de Mudrock em Ubuntu Firewall - Entendendo e Configurando o UFW   
    Olá Ek tibianos, como vão vocês? Tudo correndo as mil maravilhas?

    Apresentando:
    Bom hoje vim apresenta-lhes o UFW, conhecem?
    Se a resposta for não, saibam que o UFW ou Uncomplicated Firewall nada mais é que o Firewall do Linux Ubuntu.

    Esse Firewall é um software de segurança pré instalado no sistema operacional Linux Ubuntu que restringe as portas de entrada e saída de dados do computador permitindo apenas conexões que estejam dentro das regras estabelecidas dentro das configurações do mesmo, essas regras podem ser modificadas de acordo com o uso do usuário, visando um maior ou menor acesso de outros computadores.

    Vejam a explicação na imagem a seguir:

    Supondo que você queira abrir um servidor de Tibia no Linux Ubuntu:
    Sendo assim você teria que abrir a porta 7171 no firewall, criando uma brecha para as conexões, e se você quisesse bloquear a conexão ao site, você teria que fechar a porta 8080 do Firewall.



    Por padrão esse software, vem ativado, porém com todas as suas portas abertas, sendo assim ele não restringe nenhuma conexão externa, ou seja, sua ação é nula.



    Como quase tudo no Linux Ubuntu, as configurações do firewall são via terminal, não que seja impossível a utilização gráfica, mas para isso seriam necessários upgrades no sistema.

    Sendo assim explicarei os comandos para configuração apenas via terminal.

    ufw status Verifica se o Firewall está ativo no sistema. Caso ele esteja ativo, mostrará também as regras de conexões configuradas.


    ufw default allow Altera o padrão que ao ativar o Firewall todas as portas venham abertas(porém não remove as regras criadas).


    ufw default deny Altera o padrão que ao ativar o Firewall todas as portas venham fechadas (porém não remove as regras criadas).


    ufw enable Ativa o Firewall.

    ufw disable Desativa o Firewall.

    Para configurar é simples, você pode Adicionar ou remover regras de acordo com o seu uso.
    Veja:

    Ao digitarmos o comando "ufw status" com o Firewall ativo, serão mostradas todas as regras ativas, e são elas que vão determinar o comportamento do Firewall para determinadas portas e conexões.

    To porta de conexão da regra Action Permissão de conexão(Permitida ou negada) From: conexão tem a permissão.

    Nesta parte podemos ver que pela regra
    A porta 80 (to) está aberta (allow) para a todas as conexões (Anywhere)

    Adicionando regras para conexões:
    Para adicionarmos utilizaremos o seguinte padrão no comando:

    ufw permisão from para quem -- Quando for para todas as portas
    ufw permisão from para quem any port porta -- Quando for para uma porta especifica

    Exemplos:

    1º Neste exemplo permitir a conexão por qualquer porta para o ip 192.168.1.3:

    ufw allow from 192.168.1.3 Caso quisesse negar utilizaria o comando
    ufw deny from 192.168.1.3 2º Já neste iremos permitir a conexão apenas pela porta 22 ao ip 192.168.1.3

    ufw allow from 192.168.1.3 to any port 22 Caso quisesse negar utilizaria
    ufw deny from 192.168.1.3 to any port 22 Removendo regras para conexões:

    Para adicionarmos utilizaremos o seguinte padrão no comando:

    ufw delete permisão from para quem -- Quando a regra seja de todas as portas
    ufw delete allow 80 permisão from para quem any port porta -- Quando a regra tiver uma porta especifica
    Exemplos:

    1º Supondo que desejemos remover esta regra.

    Utilizaremos o comando:

    ufw delete allow 80 2º Neste outro exemplo, deletaremos agora esta regra:

    Para isso utilizaremos o comando:

    ufw delete allow from 192.168.1.3 Bom então é isso.
    Gostaram? Aprenderam? espero que esse tutorial sirva de base para entenderem um pouco melhor o grande sistema que é o Linux Ubuntu!.

    Um grande abraço Att ~~ Krono - Xtibia

    Créditos: Krono
  5. Upvote
    Krono recebeu reputação de duasrodas em Instalando Ambiente Gráfico VPS Linux   
    Olá meu amigos Xtibianos. Tudo bem com vocês?
     
    Vim hoje trazer para você um excelente tutorial, que tem a finalidade de instalar uma interface gráfica no seu Vps Linux, o tão amado desktop, onde intuitivamente a maioria de nós deu os seus primeiros passos no mundo da Computação.
    Com esse metodo você poderá acessar seu vps como se estivese em frente a sua tela, assim como fazemos nas Vps Windows.
    ATENÇÃO: É recomendado o uso Ubuntu 12.04 (LTS)
    .
     
    Vamos lá
     
    Acesse o terminal SSH e instale o pacote ubuntu-desktop:
    sudo apt-get install ubuntu-desktop Após instalar o ubuntu-desktop, instale o pacote gdm:
    sudo apt-get install gdm sudo /etc/init.d/gdm start sudo dpkg-reconfigure xserver-xorg Agora vamos instalar o VNC ( TightVNC):
    sudo apt-get install tightvncserver Após instalar configure um senha com no máximo 7 caracteres usando o comando:
    vncserver :1 -geometry 1024x768 -depth 16 -pixelformat rgb565 Desligue o VNC com o comando:
    vncserver -kill :1 Edite o arquivo .vnc/xstartup:
    sudo nano ~/.vnc/xstartup E adicione ao final do mesmo a linha:
    gnome-session & Reinicie o servidor:
    sudo reboot Para acessar o VNC use:
    SEU IP:1 ou SEU IP:5901
     

     
     
     
    Alguns comandos para uso do VNC:
    - Para iniciar o VNC:
    vncserver :1 -geometry 1024x768 -depth 16 -pixelformat rgb565 - Para alterar a senha do VNC (pode ser usado caso você esqueça a senha):
    vncpasswd Espero ajudar, até o proximo tutorial.
     
     
     
    Downloads Uteis
    Putty SSH clientSite http://www.putty.org/
    Download
    TightVNC for Windows Installer for Windows (64-bit) (2,367,488 bytes) Installer for Windows (32-bit) (2,105,344 bytes)
  6. Upvote
    Krono deu reputação a Fir3element em Low Skills Lock   
    Tu pode fazer assim pra diminuir:
    for i = 1, 7 do if skillplayer.vocation[i] < skillminimo.vocation[i] then doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[i] - skillplayer[i]) end end E "getplayerskilllevel" tem que ser "getPlayerSkillLevel".
    Faltou um "then" nos "if" também.
     
    Acho que "[1, 5]" não vai funcionar, tem que ser só um valor ([1]).
  7. Upvote
    Krono deu reputação a LeoTK em [Video-Aula] Criando um Banner Para Seu Server - Photoshop   
    Eae galera do xtibia, estou trazendo essa video aula encinando como criar um banner para seu server ou para você mesmo. Espero que curtam a video aula xD
     
    obs: Qualquer dúvida ou problema comenta que ajudarei da forma que eu puder.
    obs²: As dimensões usada no video não é obrigatória o banner pode ter a dimensão que você quiser, mesma coisa para fonte,letra e imagem.
     
    Fiquem com o Video \/
     
    ASSISTA EM HD xD
     

    https://www.youtube.com/watch?v=dyFnIDjfl08
     
    Se ajudei +rep xD
     
    Créditos:
    EU xD
  8. Upvote
    Krono deu reputação a JuniorPavani em [Tutorial] Básico sobre Lua   
    ATENÇÃO!
    Este tutorial foi feito pelo tibiaa4e, portanto os créditos são 100% dele!
    Parte I – Básico do básico de Lua
    Começaremos por LUA porque é uma linguagem simples, que não precisa declarar variáveis e tudo mais. Aqui não explicarei as funções do otserver e sim como montar um script.
    Nessa primeira parte usarei o Português Estruturado que sinceramente não é útil
    quando você aprende a sintaxe da linguagem, porém é ótimo para você que está começando aprender o que está fazendo e não só copiando e colando.

    LEMBRANDO QUE PORTUGUÊS ESTRUTURADO NÃO É UMA LINGUAGEM
    É APENAS UM JEITO DE VOCÊ ENTENDER A SINTAXE DAS LINGUAGENS.

    Começando vamos explicar a sintaxe de um script bem básico mesmo. Aquele script que quando você da use em 100 gps ele vira 1 platinum coin


    Citar

    Em português estruturado ele ficaria assim :

    Citar

    Com português estruturado da para entender essa action

    Agora da para explicar melhor a estrutura de um arquivo lua de actions :

    ► Essa parte é a que diz ao servidor que essa função vai se ativar quando o player usar o item indicado no actions.xml. No caso é a função aoUsar ou seja quando o player clicar com o direito nesse item irá acontecer algo.

    ► O SE é uma condição, se estiver tudo certo dentro dele ele faz a condição contida no caso
    o id (numerodoitem) tem que ser 2148 (Gold Coin) e tem que ser do tipo 100 (No caso de itens juntáveis o tipo é a quantidade), faça remova ele e adicione UM item 2152 (platinum coin).

    ► Senão ou seja, se o item não for 2148 ou não ter tipo 100, não retorne ao começo do script e finalize.


    Espero que essa parte tenha esclarecido um pouquinho mais sobre actions. Agora vou explicar um pouco mais sobre algumas condições e suas sintaxes.

    Sintaxe do IF, Else e Elseif.

    A condição if de longe é a mais importante de todas as programações e é essencial para um script um pouco mais complexo ou para evitar que você faça 200 scripts para certas funções (comida do tibia por exemplo).

    Vocabulário do tio Ta4e

    Citar

    Única coisa que o lua pede é que cada item tenha um end para cada if colocado tenha um end, você também tem que entender a questão do if encadeado que será tema da próxima aula aqui.
    Mais para ela se tem que saber o básico de um If normal.
    Esse é o script anterior com adição de uma condição que se o player tiver 100 platinum coin ele se transforme em uma crustal coin.

    function onUse(cid, item, fromPosition, itemEx, toPosition)
    if item.itemid == 2148 and item.type == 100 then
    doRemoveItem(item.uid,1)
    doPlayerAddItem(cid, 2152, 1)

    elseif item.itemid == 2152 and item.type == 100 then
    doRemoveItem(item.uid,1)
    doPlayerAddItem(cid, 2160, 1)
    else
    return FALSE
    end
    return TRUE
    endVocê percebe que eu alinhei o if e elseif a seu end, isso chama-se Estruturação, isso é muito importante já que para achar um erro será muito mais fácil E fica mais organizado seu script

    Você percebe que o IF tem um end no final da sua cadeia, pois todo IF tem que ter um end
    porém o ELSEIF se enquadra dentro do IF.
    O ELSEIF ajuda pois você diminui linhas de scripts e serve para outras funções mais avançadas que serão vistas nas próximas aulas.
    Lembrando também que a função toda função também tem seu END, isso ajuda no caso de você querer colocar duas funções no mesmo script (muito usado em movements).

    IF Encadeado
    O if encadeado ou cadeia de if, indica funções pouco mais complexas que o if solitário, porém não é nenhum bicho de 7 cabeças, se você fazer a estruturação do script.
    Aqui vai o script de exemplo, é um script muito mais complexo do que os do gps


    Citar

    Esse script é o que eu uso para minhas quest. Esse é um ótimo exemplo de if encadeado.
    Perceba que ele está estruturado. Claro que colorido é muito simples identificar cada else e end
    Agora vou explicar a sintaxe.

    ►A primeira parte pede que o uniqueid (é um numero especial usado apenas uma vez no mapa inteiro), seja 2300.

    ►Essa parte do queststatus é uma variável que será explicado a parte

    ►Esse If, checa se o player tem o valor da variável listada acima, senão ele manda a mensagem o “the chest is empty”.


    ►Esse outro if checa se o player tem a capacidade 29.50, senão ele manda a mensagem “You have found a demon helmet. Weighing 29.50 oz it is too heavy”.

    ►Chama-se cadeia de if porque as funções em preto só serão executados se todos os IFS forem verdadeiros, se apenas um não for ele já acusa o erro. Seria mais ou menos como tirar um RG

    Se você tiver Certidão de nascimento faça
    Se você tiver Foto 3x4 faça
    Se você tiver o papel faça
    Criar RG
    Senão pegue o papel no balcão
    Senão tire uma foto 3x4
    Senão tirei certidão primeiro ,já que você não existe
    Perceba que você terá que ter tudo isso para fazer o RG senão tiver você não consegue tirar

    ►Voltando ao script perceba que todos tem seu respectivo end, isso é importantíssimo

    Variáveis
    Variáveis é uma parte da memoria na qual se guarda um valor ou informação, em outras linguagens elas tem tipos como de números inteiros, reais ou de letras, porém em lua não existe isso.
    O que facilita muito nossas vidas as variáveis são maneiras ou jeitos de você fazer scripts para outras pessoas ou por pura preguiça mesmo...
    São extremamente necessárias em scripts grandes na qual um item de mesmo id é repetido muitas vezes, e talvez depois seja necessário muda-lo
    Lembra do script anterior da quest a parte que da questatus


    Citar

    A quest status é uma variável, que pergunta ao servidor se o player tem o valor nele
    Se não tiver faça, ou seja -1 é igual a negativo ou negação, no caso se o programador quisesse que ele tivesse colocava 1
    Essa parte é bem simples de se entender, já que variáveis servem para simplificar a vida de não programadores, porém deixam seu servidor mais pesado, não é coisa grande, porém como já disse a variável ocupa memoria, em torno de 3kb cada uma, mais em um otserver básico possuem muitas variáveis
    Elas podem ser indicadas em qualquer parte do script, e elas sempre recebem dados ou perguntam.
    Pode se fazer cálculos nas variáveis ou usar outras variáveis dentro dela sem problema nenhum.


    Sinais Matemáticos e de comparação
    Aqui vai uma coisa que confunde muita gente :

    ►= - Faz o item anterior receber algo
    Exemplo : gold = 2148

    ►== - Verificação. É para checar
    Exemplo : if item.itemid == 2555 then

    ► Os sinais matemáticos são +, -, / e * .

    ►E como toda linguagem não existe , entre números 1,5 é 1.5 virgula é só para separar variáveis

    ►Para se checar pode ser usar == (igual a ), >= (maior ou igual a ), <= (menor ou igual a ) o sinal de diferente é agora com certeza é ~=.

    ►Pode se calcular os itens dentro de variáveis ou até dentro de funções.



    IF com varias condições
    Você já deve entender um pouco mais de scripts portanto agora colocarei scripts cortados
    Vamos a um exemplo :

    if item.itemid == 2694 then
    if item2.itemid == 1381 or item2.itemid == 1382 or item2.itemid == 1383 or item2.itemid == 1384 then
    doRemoveItem(item.uid,1)
    doPlayerAddItem(cid,2692,1)
    else
    return 0
    end
    Nesse caso o item.itemid é aqueles itens que você pode dar use with (vara de pescar por exemplo) e o item2.itemid é o local a ser clicado.
    Então seria Se o item for 2694 e o segundo item for 1381 ou 1382 ou 1383 ou 1384 faça.
    Ou seja qualquer um desses itens é considerado válido.
    Essa é a básica desse tipo porém pode-se fazer umas mais complexas como essa debaixo que não existe em actions e é só para explicar :


    Citar
    Nesse caso o player teria que usar o item 1381 e o 1382 juntos ou o 1383 e 1384 juntos.
    É usado em movements, npcs e talk actions muito frequentemente.
    Parece fácil mais da para se confundir facinho ai.


    Quando usar IF e quando usar ELSEIF
    Essa parte é a final desse primeiro tutorial e serve apenas para dar uma idéia de como melhor seu script básico
    Como eu já disse o Elseif é uma é a junção de else + if e ele só vai executado depois se o if primário for falso. Ou seja ele é usado quando apenas uma das condicionais vai ser verdadeira , eu uso muito isso em npcs para o quests de npcs, mais podemos mostrar uns exemplos em actions.
    Já o if sempre será checado, bom para os ifs encadeados já que eles tem todos estarem certos ou errados.

    Exemplo de If e Elseif junto

    Citar


    ►Perceba que nesse caso é usado o elseif porque é impossível que o mesmo bau tenha o mesmo uniqueid (Como disse anteriormente cada uniqueid é usado apenas 1 vez no mapa e um item só tem 1 uniqueid). Então ou é um ou é outro. E ELSEIF não tem end.

    ►Nesse caso todos tem que ser reais para poder se executar o script, então é necessários ser if e ter seus ENDS.


    Comentários
    Para inserir comentários na linguagem lua é necessário adicionar – 2 hifens.
    Pode ser em qualquer parte do script (pelo amor de deus não coloque dentro de um if)
    normalmente usado para explicar o script ou colocar créditos


    Siglas e Dicionario

    id – Identificador ou seja no caso de otserver é o numero do item para o tibia.
    cid – Creature Id :Identificador da criatura, no caso a criatura que executa a ação, no caso o player.
    uid – Unique Id : Identificador único usado uma vez no mapa (em algumas funções ele serve como para indicar um id.
    actionid – Identificador de ação pode ser usado varias vezes no mapa, usado principalmente para aquele chão que afunda perto do DP.
  9. Upvote
    Krono deu reputação a Mudrock em [10.77] TFS 1.1 - Cast System   
    decidi hoje disponibilizar a versão do TFS 1.1 compatível com o Tibia 10.77, onde estão os novos efeitos, correção da velocidade das animações, todos addons e mounts.
    Agora também a opção de utilização do Cast System.

    Addons e Mounts:


    Downloads:
    TFS 1.1 (versão 10.77) - Download | Projeto |
    Executável 32 bits - Download | Scan
    Executável 64 bits - Download | Scan

    Tutoriais:
    Compilando TFS no Windows - Link
    Referência de Scripts - Link

    Observações:
    Não esqueça de liberar a porta 7173 e adicionar a tabela 'live_casts' que está no arquivo schema.sql

    Créditos:
    marksamman - TFS
    djarek - Cast System
    Bruno Minervino - Atualizações
  10. Upvote
    Krono deu reputação a Luga03 em Sistema De Pokemon No Tibia   
    Eae galera blz? hj eu tava sem nada para fazer então pensei em colocar o sistema de pokemon no tibia como ele funciona? é simples ele faz igual os sistemas de pokemons normais só que com a função de catch, go/back da pokeball,e os monstros capturados tem suas pokebolas configuradas e tem vida configuravel! agora sem mas delogas vamos ao script!

    Antes de tudo vá em data/lib e crie um arquivo .lua chamado de PokeLib e coloca dentro :




    Agora Go/back

    Vá em data/actions/scripts e crie um arquivo .lua chamado goback.lua e bota dentro :




    Agora em actions.xml coloque :




    2222 e 2223 são os ids da pokebolas

    Para evitar Bug

    va em data/creaturescript/script e crie um arquivo chamado goback.lua e coloque dentro :




    Agora adicione outro arquivo .lua em data/creaturescript/script com o nome de playerpdeath e coloque isto dentro :




    Agora adicione em creaturescript.xml as seguintes tags :




    Agora o catch.lua

    vá em data/actions/script/ e crie um arquivo catch.lua e coloque dentro :



    local pokes = { ["Dragon"] = {corpseid = 5973, chance = 100, health = 12200, maxhealth = 12200}, ["Dragon Lord"] = {corpseid = 5984, chance = 100, health = 12200, maxhealth = 12200}, ["Demon"] = {corpseid = 5995, chance = 100, health = 12200, maxhealth = 12200}, } local time = 4 -- Tempo para mandar as mensagens e adiciona item function onUse(cid, item, frompos, item2, topos) for i,x in pairs(pokes) do if item2.itemid == x.corpseid then doRemoveItem(item.uid, 1) doRemoveItem(item2.uid, 1) if math.random(1,100) <= x.chance then function add() local s = doPlayerAddItem(cid, pokein) doItemSetAttribute(s, "poke", "This is "..i.."'s pokeball. HP = ["..x.health.."/"..x.maxhealth.."]") doItemSetAttribute(s, "description", "Contains a " .. i) end doSendMagicEffect(topos, 24) addEvent(add, time*1000) return addEvent(doPlayerSendTextMessage, time*1000, cid, 27, "You catch a " .. i .. ".") else addEvent(doPlayerSendTextMessage, time*1000, cid, 27, "Your pokeball broke.") return doSendMagicEffect(topos, 23) end end end return TRUE end
    O npc que heala!!

    vá em data/npc/script e crie um script .lua chamado de pokehealer.lua e coloque isto dentro :




    Agora em Data/npc crie um arquivo .xml com o nome de Poke Healer e coloque isto dentro :





    Pronto galera é isto!!! Não pesão suporte para min pq não sou o criador do script apenas postei e traduzi para PT

    Créditos :

    Xtibia (eu peguei de um fórum espanhol e la os creditos estavão este)
    Zet0N0Murmurou (Por traduzir para PT)

    el 2222;2223 son las id de las pokebolas
  11. Upvote
    Krono deu reputação a Tony Araujo em Pokémon Online   
    Salve galera do Eks, hoje eu venho apresentar a vocês por meio deste tópico o Pokemon Online (new era), o mais novo projeto de pokémon, cujo a principal ideia é sair da mesmice de todos os servidores existentes de hoje em dia. Nosso projeto, tem como base o primeiro, unico e melhor servidor já existente no mundo de OTServers. Quem não lembra do glorioso Pokémon Online, criado pela equipe SVKE? Haha. Servidor sendo feito totalmente do 0, sem usar base alguma. O mapa será criado tendo em mente o mapa do SVKE, tentaremos ao máximo trazer os incriveis mapas e sistemas, novamente. Andamento do servidor Caught System: 100% Go-Back System: 100% Portrait System: 100% Evolution System: 100% NPC Nurse System: 100% Paint System: 100% Pokedex System: 100% Ghost System: 100% Wild Pokemon Passive: 100% Moves System: 100% Limite de 6 Pokemons: 100% Party System (Pelo Private Channel): 100% Effective System (Vantagem e Desvantagem): 100% Duel System (Pela Party) 100%
    Tv / Cam System 100%

    Próximos sistemas Order System (Com todas as habilidades [Fly, Surf, Ride, Blink, Cut, Light, Transform, Control Mind, Dig, Move]) All Pokemon Spells Boat System (Vermilion - Cinnabar) Gym System NPC's de batalha espalhados pelo mapa. Imagens Vídeos - New Pokédex | Pokémon LifeBar
    Página no Facebook: Pokémon Online Equipe Oficial - OrochiElf - TioSan Colaboradores - GabrielTXU  
  12. Upvote
    Krono deu reputação a LeoTK em Tabela Top 10 - Com Level & Magic Level - Modern ACC   
    Eae galera do xtibia, bom eu consegui editar a minha tabela top 10 com level e magic level com ajuda do membro Avuenja e prometi que iria disponibilizar para a comunidade. Vamos lá
     
    Primeiramente uma print da tabela:
     

     
    *lembrando que pode mudar o fundo e a tabela do top 10 de acordo com sua template.
    obs: Pode ocorrer bugs porque o código está adaptado para meu site mais em caso de problemas comente que eu ajudo ^^
     
    Agora vá na pasta do seu site em templates/pasta da template/index.tpl ou o index que for.
     
    procure por:
    <div id="vt_panel_buttons"> <a href=" essa linha seria a do botão de download e logo a cima do <div id="vt_panel_buttons">
    você coloca este código
    <div class="bot">{include_php file='templates/naruto/topplayer.php'} bom feito isso pode salvar e fechar, ainda dentro da pasta da template crie um arquivo com o nome topplayer.php dentro dele coloque o seguinte código <table cellpadding="0" cellspacing="0" style="MARGIN-LEFT: 9px"> <tbody> <tr background="/templates/naruto/images/homepage.png"> <td width="537" height="37"> <center> <a style="color: yellow; font-size: 12px; text-shadow: #3d2e05 ;"> <b>Top 10</b> </a> </center></td> </tr> </tbody> </table> <?php $ots = POT::getInstance(); $ots -> connect(POT::DB_MYSQL, connection()); $SQL = $ots -> getDBHandle(); $money_list = $SQL->query('SELECT name, level, experience, maglevel FROM players ORDER BY experience DESC, maglevel DESC LIMIT 10')->fetchAll(); $i = 1; foreach ($money_list as $money_chr) { echo '<center>'; echo $i . '. <a href="' . WEBSITE . '/index.php/character/view/' . $money_chr['name'] . '">'; $player = $ots -> createObject('Player'); $player -> find($money_chr['name']); echo '<font color="'; echo($player -> isOnline()) ? 'green' : 'red'; echo '">'; echo '<b>' . $money_chr['name'] . '</b></a></font>'; echo '<br>Level: <span style="color: #10FF00; font-weight: bold;">' . $money_chr['level'] . '</span>    '; echo 'Ninjutsu: <span style="color: #67CCF9; font-weight: bold;">' . $money_chr['maglevel'] . '</span><br>'; $i++; } for ($i; $i <= 10; $i++) { echo $i . '. <br><i>Empty</i><br /><br />'; } echo '</center>'; ?> Para mudar as escritas procure por (Top 10 - Level - Ninjutsu) Para mudar a cor das escritas procure por (Yellow - #10FF00; - #67CCF9; ) Bom é isso galera espero que ajuda vocês a terem um rank bem legal no site de vocês xD Se Gostou +rep xD Créditos: Eu xD Avuenja (por ter editado o código)
  13. Upvote
    Krono deu reputação a Wend ll em Criptografar sprites e scripts   
    Acho que poderá ajudar:


     
  14. Upvote
    Krono deu reputação a Qwizer em Global 10/11.5 + OtherWorld + Hearth of Destruction Quest+ Eventos   
    Global Full
     
    [CLIENTS COMPATÍVEIS]
      10 e 11.5.
     
    [BUGS E DOWNLOAD]
    BAIXEM E REPORTEM EM: OTXGlobal Full
     
    [FEATURES]
    NEW DEPOT, NEW SPAWN, NEW CAST SYSTEM, NEW NPC SYSTEM VIA BANK BALANCE, NEW CRITICAL BOOST SYSTEM, NEW POTIONS, REWARD SYSTEM, PREY ...
     
    [MAPA]
    FULL GLOBAL MAP WITH FEYRIST
     
    TODAS CIDADES E NOVAS AREAS
    TODAS QUESTS FUNCIONANDO!
     

     

     

     

     

     

     

     

     

     

    [EVENTS]
    WAR-ANTIENTROSA
     
    [CONTATO]
    SKYPE: onjogos WHATSAPP: (66) 998427-4493
     
    [Créditos]Tfs 1.2 Developers -Zbizu - Pitis91 - MatheusMkalo - Gesior - Lundrial
    - M4G0 -
    Fish04k - Printer - Djarek - Ninjalulz - Slavidodo - Thexamx - Socket2810 - Ciroc -Absolute - Gordonbay - Mitsuig - Alissonfgp - Gunz - Bruno Minervino - Comedinha -Hirako - Maya - Mattyx14 – Darkjav - Viking Tibia
  15. Upvote
    Krono deu reputação a Luga03 em Sistema de Domar Uniwheel e Tinlizzard!   
    Eai Pessoal! Td Okay??
    Estou aqui com uns scripts de domar duas montarias!
    Estou com o Script de domar a Uniwheel e a Tinlizzard!

    Eu Testei no Alissow 5.0 e Funcionou! Acredito que funcione em outras versões também!
    Funciona em Versão 8.70++
    Vamos Parar de BláBláBlá e começar o tutorial!

    Uniwheel

    Script

    Crie um Arquivo em data/actions/scripts Chamado uniwheel.lua e Cole Isto Dentro!

    function onUse(cid, item, fromPosition, itemEx, toPosition) if item.itemid == 13938 and itemEx.itemid == 13937 then doSendMagicEffect(fromPosition, CONST_ME_MAGIC_BLUE) doPlayerAddMount(cid, 15) doRemoveItem(item.uid, 1) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Inoperative Uniwheel ativado com sucesso!") else doSendMagicEffect(toPosition, CONST_ME_POFF) end end
    E em actions.xml adicione isto:


    <action itemid="13938;13937" script="uniwheel.lua"/>
    Tinlizzard

    Crie um Arquivo em data/actions/scripts Chamado tinlizzard.lua e Cole Isto Dentro!

    function onUse(cid, item, fromPosition, itemEx, toPosition) if item.itemid == 13292 and itemEx.itemid == 13306 then doSendMagicEffect(fromPosition, CONST_ME_MAGIC_BLUE) doPlayerAddMount(cid, 8) doRemoveItem(item.uid, 1) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Tin Lizzard ativado com sucesso!") else doSendMagicEffect(toPosition, CONST_ME_POFF) end end

    Agora Em Actions.xml Adicione isto:

    <action itemid="13292;13306" script="tinlizzard.lua"/>
    Pronto!!! Agora o Script Esta Pronto!

    Creditos

    20% Zet0N0Murmurou - Por eu Ter dado uma Editada bem Pequena e Por Criar o Tópico!
    80% unknown - Por ter Criado o Script - Não Sei quem é o Criador! Mas Boa parte dos créditos é dele!
  16. Upvote
    Krono deu reputação a Luga03 em Tammed System - Sistema de Domar Montarias!   
    Eai Pessoal! Td Okay??
    Estou aqui com uns scripts de domar Algumas montarias!
    Eu Postei o Script de Domar a Uniwheel e a Tinlizzard!
    Eu testei este script no alissow 5.0 e funcionou direitinho! acredito que funcione em outras versões!
    Funciona em Versões de tibia 8.70+

    Pronto Vamos Parar de Besterou e Começar!

    Em Data/Actions/Scripts Crie um Arquivo Chamado mounts.lua e Adicione Isto Dentro:




    E em Actions.xml Adicione Isto :




    Pronto!

    Creditos
    Zet0N0Murmurou - Por Editar Muito o Script e Fazer o Tópico
    Unknown - Autor Disconhecido mas os creditos vão a "ele" por ter criado o script!
  17. Upvote
    Krono deu reputação a david0703 em [MODULE] Extended Opcodes SEM SOURCES   
    Será possível o uso de opcodes em servidores sem o código fonte?

    Agora é sim com esse novo mod que eu fiz e disponibilizarei à vocês!

    Conversação de servidor para client!
    Muito fácil de usar e de instalar!

    Sem mais delogas, vamos logo ao conteúdo!



    1. Crie um arquivo com o nome ModOpcodes.lua na pasta lib do seu servidor;

    2. Coloque o seguinte código dentro dele:



    -- By Hopus -- function doPlayerSendModOpcode(cid, port, param) doPlayerSendCancel(cid, '#<=>#ModOpcode#<=>#'..port..'#<&>#'..param) end 3. Agora coloque a pasta mod_opcodes na pasta modules de seu client;

    4. Abra o arquivo textmessage.lua, localizado na pasta modules/game_textmessage de seu client;

    5. Procure esse código:



    elseif string.find(text, '12&,') then modules.cdBar.cdBar.toolTipChange(text) return end 6. Adicione, logo abaixo, essa linha:



    if text:find('#<=>#ModOpcode#<=>#') then return end 7. Opcodes instalados com sucesso!

    Como usar? Simples!



    [Obs.: A função a ser conectada deve ter UM PARÂMETRO, seja ele nomeado como quiser.]

     
     
    Bom, é isso...

    Espero que seja de grande utilidade e ajude muita gente!
    Abraços e até a próxima!
    ^^

     
    [Obs.: Seria legal criar uma área no site exclusiva para otclients!]

  18. Upvote
    Krono deu reputação a david0703 em Sistema de Queda Possivel?   
    Pode ser usado também o StepOut... Coloca a action no sqm de chão e uma verificação no toPos pra ver se o chão é o tal 459...

    [EDIT]

    Tag no movements.xml
    <movevent type="StepOut" actionid="4170" event="script" value="caindo.lua"/> caindo.lua
    function onStepOut(cid, item, toPosition, fromPosition) if getThingFromPos(toPosition).itemid == 459 then doPlayerAddHealth(cid, -1) end end [EDIT²]

    Creio que o script pode ser feito também sem o uso de um sqm com esse item 459, ficaria assim
    function onStepOut(cid, item, toPosition, fromPosition) if not getThingFromPos(toPosition).itemid == 0 then doPlayerAddHealth(cid, -1) end end [EDIT³]
    O comando 'getThingFromPos' não pega o id do chão...
    Se alguem descolar o comando que pega... Não sei se será necessário editar algo nas sources pra adicionar um "getTitleByPos" (pelo menos em base dash não pegou o id do chão)
     
    [EDIT4]
    Encontrei uma função interessante em um servidor antigo de poketibia...
    function getSqmId(pos,t)-- Script by mock if hasSqm(pos) or t then pos.stackpos = 0 local i = getTileThingByPos(pos) return i end return nil end Então, ficaria assim [necessitando dos sqm em volta com o id 459]
     
    Tag no movements.xml
    <movevent type="StepOut" actionid="4170" event="script" value="caindo.lua"/> caindo.lua
    function getSqmId(pos,t)-- Script by mock if hasSqm(pos) or t then pos.stackpos = 0 local i = getTileThingByPos(pos) return i end return {itemid = 0} --Editado pra não dar erro ali em baixo end function onStepOut(cid, item, toPosition, fromPosition) if getThingFromPos(toPosition).itemid == 459 then doPlayerAddHealth(cid, -1) end end
  19. Upvote
    Krono deu reputação a Bruno em Wand of Elements   
    Introdução:
    É uma wand que ataca vários elementos aleatoriamente, porém não somente isso, você pode travar um único elemento através de uma talkaction.
     
    OBS: Testado em tfs 0.4
     
    Instalação:
    Vá até data/weapons/scripts e crie um arquivo chamando wandelementos.lua e coloque o seguinte conteúdo:

    local min, max = 1700,1900 --Ataque mínino e ataque máximo local w = { [1] = {ef = 36, sh = 3, dmg = COMBAT_FIREDAMAGE}, [2] = {ef = 42, sh = 28, dmg = COMBAT_ICEDAMAGE}, [3] = {ef = 46, sh = 38, dmg = COMBAT_POISONDAMAGE}, [4] = {ef = 17, sh = 31, dmg = COMBAT_DEATHDAMAGE}, [5] = {ef = 47, sh = 35, dmg = COMBAT_ENERGYDAMAGE}, [6] = {ef = 36, sh = 31, dmg = COMBAT_PHYSICALDAMAGE}, [7] = {ef = 49, sh = 37, dmg = COMBAT_HOLYDAMAGE} } function onUseWeapon(cid, var) local effect = getPlayerStorageValue(cid, 4561) local target = getCreatureTarget(cid) if target ~= 0 then local wx = w[effect] or w[math.random(#w)] doSendDistanceShoot(getThingPos(cid), getThingPos(target), wx.sh) addEvent(doAreaCombatHealth, 100, cid, wx.dmg, getThingPos(target), 0, -min, -max, wx.ef) end return true end Altere o min e max de acordo com sua necessidade. 
    Agora vá em data/weapons/weapons.xml e coloque o seguinte conteúdo:

    <wand id="7424" level="100" mana="30" event="script" value="wandelementos.lua"> <vocation id="1"/> <vocation id="2"/> <vocation id="5" showInDescription="0"/> <vocation id="6" showInDescription="0"/> </wand> Altere o id, level e mana de acordo com sua necessidade. 
    Agora vamos configurar a talkaction que troca os elementos.
    Vá até data/talkactions/scripts e crie um arquivo chamando elementos.lua e coloque o seguinte conteúdo:

    local config = { wand_id = 7424, --ID da wand types = { ["all"] = -1, --Ataca os elementos aleatoriamente ["fire"] = 1, ["ice"] = 2, ["poison"] = 3, ["death"] = 4, ["energy"] = 5, ["physical"] = 6, ["holy"] = 7 } } function onSay(cid, words, param) local wand_left = getPlayerSlotItem(cid, CONST_SLOT_LEFT).itemid local wand_right = getPlayerSlotItem(cid, CONST_SLOT_RIGHT).itemid if wand_left ~= config.wand_id and wand_right ~= config.wand_id then doPlayerSendCancel(cid, "Voce deve estar equipado com uma ".. getItemNameById(config.wand_id) .." para usar este comando.") return true end if config.types[param] then setPlayerStorageValue(cid, 4561, config.types[param]) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Sua wand ira atacar ".. param .. ".") else local str = "" for i, _ in pairs(config.types) do str = str .. ", ".. i end doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Os elementos disponiveis sao: ".. string.sub(str, 3, #str) ..".") end return true end Altere o wand_id conforme configurado em weapons. 
    Agora vá em data/talkactions/talkactions.xml e coloque o seguinte conteúdo:

    <talkaction words="!elemento;/elemento" event="script" value="elementos.lua"/> Exemplo de funcionamento:


    Agradeço MaXwEllDeN pela ajuda.
  20. Upvote
    Krono deu reputação a Benny em [X] Resource Pack #1   
    Fala pessoal ,hoje eu separei varias fractals/nebulas para vocês :3

    Pretendo trazer mais conteúdos como este, por isso o "#1"

    Bem, vamos lá :



    •PREVIEW•




     



    •INFORMAÇÕES•

    Total : 69

    Formato : JPG/PNG

    Tamanho : 89MB



    •DOWNLOAD•

    Mediafire



    Creditos : greentunic





  21. Upvote
    Krono deu reputação a ferreira998 em Adicionar e remover premium por comando!   
    Nome: Sistema de adicionar e remover premium por comando. Versão testada: TFS 0.4 - Não testado em outras versões! Créditos: Wakon (Script) - William Ferreira (Tópico) Imagem:

    Vá em data/talkactions/talkactions.xml e adicione essa tag:
    <talkaction log="yes" words="/pa" access="5" event="script" value="addpremmy.lua" /> Agora vá em data/talkactions/scripts/ e crie um arquivo com o nome addpremmy.lua e cole isso nele:
    function onSay(cid, words, param) if param == "" then return doPlayerPopupFYI(cid,"Está com problemas?\nAprenda os comandos!\n---------------\nAdicionar premium:\n/pa add days player\n/pa add 30 Wakon\n---------------\nRemover premium:\n/pa remove player\n/pa remove Wakon\n---------------\nVer Premium:\n/pa days player\n/pa days Wakon\n---------------") end if param:lower():find('add') == 1 and 3 then local _,_,id,name = param:lower():find('add (%d+) (.+)') name = name or "" id = tonumber(id or 1) or 1 if tonumber(id) == nil or getPlayerByName(name) == false then return doPlayerSendTextMessage(cid,25,"Adicionar premium:\n/pa add days player\n/pa add 30 Wakon\n [Player: "..name.."]") end if isPlayer(getPlayerByName(name)) == TRUE then doPlayerAddPremiumDays(getPlayerByName(name), id) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Foram adicionados "..tonumber(id).." dias de premium ao jogador "..name..".") doPlayerSendTextMessage(getPlayerByName(name),25,"Você recebeu "..tonumber(id).." dias de premium, relogue para atualizar.") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"O jogador "..name.." não esta online ou não existe.") end elseif param:lower():find('remove') == 1 and 3 then local _,_,id2,name2 = param:lower():find('remove (%d+) (.+)') name2 = name2 or "" id2 = tonumber(id2 or 1) or 1 if tonumber(id2) == nil or getPlayerByName(name2) == false then return doPlayerSendTextMessage(cid,25,"Remover premium:\n/pa remove days player\n/pa remove 30 Wakon\n [Player: "..name2.."]") end if isPlayer(getPlayerByName(name2)) == TRUE then doPlayerRemovePremiumDays(getPlayerByName(name2), id2) return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Foram retirados "..tonumber(id2).." dias de premium do jogador "..name2..".") end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"O jogador "..name2.." não esta online ou não existe.") end if param:lower():find('days') == 1 and 3 then local _,_,name3 = param:lower():find('days (.+)') name3 = name3 or "" prem = getPlayerPremiumDays(getPlayerByName(name3)) if isPlayer(getPlayerByName(name3)) == false then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"O jogador "..name3.." não esta online ou não existe.") end if prem >= 1 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "O jogador "..name3.." tem "..prem.." dias de premium.") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"O jogador "..name3.." é free account.") end end return TRUE end
  22. Upvote
    Krono deu reputação a Furabio em [TFS 1.1] Chuva de items   
    Tem duas versões, em forma de globalevent e talkaction
     
     
     
    GLOBAL EVENT --
     
    globalevents.xml
    <globalevent type="startup" name="RainItems" script="rainitems.lua"/> rainitems.lua
    local config = { items = {{8306,1}, {2157,2}, {7735,1}, {8306,1}, {2184,1}, {9932,1}, {8306,1}, {9693,1}, {2148, 100}}, interval = 1000, -- time between checks areas = { [1] = { startHour = 19, startMin = 15, waves = 10, interval = 10000, chancePerTile = 10, -- % maxItemsPerWave = 15, from = {x = 1021, y = 994, z = 7}, to = {x = 1024, y = 998, z = 7} }, [2] = { startHour = 18, startMin = 43, waves = 10, interval = 10000, chancePerTile = 10, maxItemsPerWave = 15, from = {x = 1026, y = 995, z = 7}, to = {x = 1028, y = 1001, z = 7} } } } local executed = {} function Position.isPathable(pos) local tile = Tile(pos) if tile == nil then return false end return not tile:hasFlag(TILESTATE_BLOCKSOLID) end function rainWave(arena) local from = config.areas[arena].from local to = config.areas[arena].to local items_spawned = 0 for x = from.x, to.x do for y = from.y, to.y do for z = from.z, to.z do if math.random(1, 100) < config.areas[arena].chancePerTile and items_spawned < config.areas[arena].maxItemsPerWave then local pos = {x = x, y = y, z = z} if Position(pos):isPathable() then local item = math.random(1, #config.items) doCreateItem(config.items[item][1], math.random(1, config.items[item][2]), pos) Position(pos):sendMagicEffect(CONST_ME_MAGIC_RED) items_spawned = items_spawned + 1 end end end end end end function startRain(arena) broadcastMessage("Rain item event begins!") for i = 1, config.areas[arena].waves do if i == 1 then rainWave(arena) else addEvent(rainWave, config.areas[arena].interval * (i - 1), arena) end end addEvent(broadcastMessage, config.areas[arena].interval * (config.areas[arena].waves - 1), "Rain items event ended.") end function checkRain() local hour = tonumber(os.date("%H")) local min = tonumber(os.date("%M")) if not executed[hour] then executed[hour] = {} end for i = 1, #config.areas do if hour == config.areas[i].startHour and min == config.areas[i].startMin then if not executed[hour][min] then startRain(i) addEvent(checkRain, config.interval) executed[hour][min] = true end end if tonumber(os.date("%H", os.time() + (30 * 60))) == config.areas[i].startHour and tonumber(os.date("%M", os.time() + (30 * 60))) == config.areas[i].startMin then if not executed[hour][min] then broadcastMessage("Rain items event will start in 30 minutes.") addEvent(checkRain, config.interval) executed[hour][min] = true end end if tonumber(os.date("%H", os.time() + (1 * 60))) == config.areas[i].startHour and tonumber(os.date("%M", os.time() + (1 * 60))) == config.areas[i].startMin then if not executed[hour][min] then broadcastMessage("Rain items event will start in 1 minute.") addEvent(checkRain, config.interval) executed[hour][min] = true end end end addEvent(checkRain, config.interval) end function onStartup() addEvent(checkRain, 100) end TALK ACTION --
     
    talkactions.xml
    <talkaction words="/rainitems" separator=" " script="rainitems_command.lua"/> rainitems_command.lua
    local config = { items = {{8306,1}, {2157,2}, {7735,1}, {8306,1}, {2184,1}, {9932,1}, {8306,1}, {9693,1}, {2148, 100}}, interval = 1000, -- time between checks areas = { [1] = { waves = 10, interval = 10000, chancePerTile = 10, -- % maxItemsPerWave = 15, from = {x = 1021, y = 994, z = 7}, to = {x = 1024, y = 998, z = 7} }, [2] = { waves = 10, interval = 10000, chancePerTile = 10, maxItemsPerWave = 15, from = {x = 1026, y = 995, z = 7}, to = {x = 1028, y = 1001, z = 7} } } } function Position.isPathable(pos) local tile = Tile(pos) if tile == nil then return false end return not tile:hasFlag(TILESTATE_BLOCKSOLID) end function rainWave(arena) local from = config.areas[arena].from local to = config.areas[arena].to local items_spawned = 0 for x = from.x, to.x do for y = from.y, to.y do for z = from.z, to.z do if math.random(1, 100) < config.areas[arena].chancePerTile and items_spawned < config.areas[arena].maxItemsPerWave then local pos = {x = x, y = y, z = z} if Position(pos):isPathable() then local item = math.random(1, #config.items) doCreateItem(config.items[item][1], math.random(1, config.items[item][2]), pos) Position(pos):sendMagicEffect(CONST_ME_MAGIC_RED) items_spawned = items_spawned + 1 end end end end end end function startRain(arena) broadcastMessage("Rain item event begins!") for i = 1, config.areas[arena].waves do if i == 1 then rainWave(arena) else addEvent(rainWave, config.areas[arena].interval * (i - 1), arena) end end addEvent(broadcastMessage, config.areas[arena].interval * (config.areas[arena].waves - 1), "Rain items event ended.") end function onSay(player, words, param) if not player:getGroup():getAccess() then return false end if tonumber(param) then startRain(tonumber(param)) else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, words .. " eventid") end return false end Créditos : zbisu
  23. Upvote
    Krono deu reputação a Administrador em Daniel Sprites (free)   
    Resultados dos meus treinos hihi
    Fiquem a vontade para usar!

























     
  24. Upvote
    Krono deu reputação a LeoTK em [Video-Aula] Colocando Site Na Hostinger   
    fala ae galera do xtibia, estou trazendo outra video-aula de como colocar seu site na hostinger espero que gostem.

    obs: usei um subdomonio como exemplo porém o processo só funciona com um dominio pago

    bom caso tiver algum erro ou faltar alguma informação comente que eu edito o tópico, caso alguem tiver problemas comenta para resolvermos juntos, é isso fiquem com o video.


    https://www.youtube.com/watch?v=kTNzBcePc-4
     
     
    download setup do filezilla
     
    clique aqui
     
    64bit o setup


    é isso se gostou clique em gostei,

    creditos

    100% Eu
  25. Upvote
    Krono deu reputação a LeoTK em [Showoff] Site Nto New Season - Modern ACC   
    ae galera gostaria de saber se a idéia ta ficando boa.... vamos as prints:
     
    Pagina principal do site
     
     
    Um pouco do conteúdo do site
     
     
    Espero que curtam xD
     

  • Quem Está Navegando   0 membros estão online

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