-
Total de itens
247 -
Registro em
-
Última visita
-
Dias Ganhos
5
Histórico de Reputação
-
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
-
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)
-
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)
-
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
-
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) -
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]).
-
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
-
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.
-
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
-
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
-
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
-
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) -
-
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
-
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!
-
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!
-
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!]
-
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 -
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.
-
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
-
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 -
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
-
Krono deu reputação a Administrador em Daniel Sprites (free)
Resultados dos meus treinos hihi
Fiquem a vontade para usar!
-
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
-
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.