Leoprotons
-
Total de itens
186 -
Registro em
-
Última visita
-
Dias Ganhos
1
Histórico de Reputação
-
Leoprotons recebeu reputação de GameTwu em [Arquivado]Acha Que É Um Mapper? Descubra Agora A Verdade!.
O que é ser mapper? Porque ser um mapper? onde é que isto irá me levar? são perguntas que ja me fiz um dia,e talvez tenha sido tambem a pergunta feita a si mesmo caro leitor. Bem não há um fato concreto, nem uma formula exata que possa responder as perguntas citadas, porém há alguns bons argumentos que podem ser usados para a formação da sua ideia sobre a arte do mapping, estes que irei citar agora.
Primeiramente é presciso entender que não é qualquer um que pode ser um mapper, isto é, para ser um mapper é presciso ser dedicado ao ponto de perder uma noite mapeando, criativo para improvisar sempre que presciso (e sempre será preciso) e persistente para ir de contra todos que irão lhe aconselhar a desistir , caracteristicas que somente cabem a si mesmos, oque não é nescessariamente fácil.
Entendendo isto você já pode inicar sua carreira de mapper, mas se voce ainda tiver duvidas sobre o porque voce deveria desperdiçar o seu prescioso tempo no computador montando um quebra-cabeça sem fim, está e sua resposta. Não entendeu? o Facebook assim como o twiter que como orkut proveniente do foto blog vindo do fotolog acabam, e não alimentam sua mente com uma unica ideia verdadeiramente positiva e produtiva (não que eu não tenha ou use algum destes), já o mapper ele desenvolve sua mente com criatividade, raciocínio e memorização, oque algum dia podera lhe servir e não é uma moda passageira.
Se leu este artigo até aqui significa que você tem grandes chances de ser um bom mapper, pois você tem um requisito que não citei antes, que é o interesse pelo assundo, um bom mapper não vive de mapas e sim da sua curiosidade, sendo que a melhor arma de um mapper é conseguir captar uma ideia e transformar la em um arquivo OTBM. (extensão de um mapa). Seja sempre pronto a aceitar uma ideia desde que ela seja original e coerente (coerência não é um requisito, você ser louco
so não deixe que percebam).
Para quem não tinha nenhuma ideia do mapper ou sobre a arte, agora pode abrir sua mente e ver que mapper não é uma brincadeira de criança, e sim um trabalho
muito serio e que deve ser respeitado, para aqueles que desejam ser um mapper, apenas leia o artigo, entenda-o e elabore sua propria ideia, pois como disse William Shakespeare "Aceita o conselho dos outros, mas nunca desistas da tua própria opinião".
Leonardo Mascarenhas
-
Leoprotons deu reputação a Zt0ffe em [SWEDEN] Zelera [8.6 RealMap & custom!]
Starts 2014-01-04 18:00 CET (15.00 brazil time)
Information about Zelera:
Zelera is a customised real map server, offering a variety of ingame activities which we hope will provide something for everyone to enjoy.
The features of our server include:
- Stable server!
- Cast system!
- Events!
- Lots of hunting areas!
- Achievements.
- Addon bonuses.
- Automatic Raids.
- Free blessings until level 80!
- Real Map with extra cities. Gengia, Pyre, Oken, Vinea, Vinera, Ghenov, Ethno & Zenit.
Connection information:
Client: 8.60
IP: zelera.eu
Port: 7171
Homepage: http://zelera.eu
Free points and rewards at:
At level 100 you will receive 5 points.
At level 120 you will receive 5 points.
At level 150 you will receive 5 points.
At level 20 you will receive 30k.
At level 50 you will receive 50k.
At level 70 you will receive 50k.
At level 100 you will receive 100k.
You will also receive items depending on what vocation you are.
- Exp rate:
1 - 40, 100x
41 - 60, 70x
61 - 80, 50x
81 - 100, 20x
101 - 120, 15x
121 - 140, 10x
141 - 160, 7x
161 - 180, 5x
181 - 200, 4x
201+, 2x
- Rates:
Skill rate 15x
Magic rate 8x
Loot rate: 3x
- PvP:
Red Skull
15 kills / day
60 kills / week
120 kills / month
Join us and see all our featuers at: http://zelera.eu
-
Leoprotons recebeu reputação de LeoTK em como mudar isso pra um dia de duraçao
so multiplicar
segundos x minutos x horas
60 * 60 * 24 = 86400
<item id="11394" article="a" name="Gunbai Temporaria"> <attribute key="weight" value="7500" /> <attribute key="weaponType" value="wand" /> <attribute key="range" value="6" /> <attribute key="duration" value="86400" /> <attribute key="decayTo" value="0" /> <attribute key="showduration" value="1" /> -
Leoprotons recebeu reputação de murluka em Problema com as Houses
Se todas as houses estiverem com bug acesse o documento
• Config.lua
e verifique se o valor
housePriceEachSquare =
não está 0
------------------------ // ----------------- // ---------------------
Se as outras houses estiverem normais, faça o seguinte procedimento.
vá em:
• Pasta do seu server -// data -// world
clique com botão direito em cima de
• NomeDoMapa House.xml
e verifique se existe houses com o seguinte valor
• rent="0"
Tomara que ajude, boa tarde.
-
Leoprotons recebeu reputação de vital900 em Problema com as Houses
Se todas as houses estiverem com bug acesse o documento
• Config.lua
e verifique se o valor
housePriceEachSquare =
não está 0
------------------------ // ----------------- // ---------------------
Se as outras houses estiverem normais, faça o seguinte procedimento.
vá em:
• Pasta do seu server -// data -// world
clique com botão direito em cima de
• NomeDoMapa House.xml
e verifique se existe houses com o seguinte valor
• rent="0"
Tomara que ajude, boa tarde.
-
Leoprotons deu reputação a vital900 em CAM#09- Cemitério
Este concurso acontecerá de 2 em 2 semanas, tendo como intuito avaliar de uma forma diferente os jogadores.
Por ser um concurso voltado aos mappers mais experientes não haverá neste postagem de tutorial ou de imagens de inspiração, caso algum membro o faça, este poderá ser punido.
»Como inovação este concurso traz a seus competidores algumas novas regras:
Seguir o tema proposto; Em cada edição haverá ao menos 3 itens obrigatórios a se ter em seu mapa, caso não haja os itens obrigatórios em seu mapa, pontos serão descontados! Ao termino do prazo de entrega, todos os mapas enviados ao juiz serão postados neste tópico de forma anônima (ou seja, os mapas não virão acompanhados do nome do criador). Estes serão votados em forma de enquete, e para que não haja erros será aplicado 'proporção'. Vale lembrar que houve uma mudança nos critérios avaliativos, para adequar a esta nova regra. Prêmios:
1º lugar (5reps) + Medals
2º lugar (3reps)
3º lugar (2rep)
Tema: Cemitério
Jurado: vital900
Itens Obrigatórios da edição:
O mapa deve ser enviado por Mensagem Privada [MP] ao jurado fixo. Com o título da edição (CAM#09- Cemitério) e o seu nick.
Exemplo: (CAM#09- Cemitério) - vital900
Data de entrega: 11/01/2014 (23:59)
Votos Públicos: DIA 12
Resultado: 12/01/2014 (23:59)
Obs: A regra 3, onde o vencedor poderia escolher o próximo tema fora retirada.
Este concurso terá medalhas!
-
Leoprotons recebeu reputação de vital900 em O Meu rme não abre 2 mapas
Costuma ser versão diferente. Fassa o seguinte:
•Abra um dos mapas
•Aperte ctrl + p.
•Observe qual é o Mapa Version.
•Feche o RME.
•Abra o outro mapa.
•Aperte ctrl + p novamente.
•Troque o Mapa Version para o mesmo observado da etapa 3º.
• Tente abrir o primeiro mapa novamente.
Espero que funcione para você !!! boa noite.
-
Leoprotons recebeu reputação de vital900 em Pedido Storage de Rank Level
Jurava que ninguem tinha respondido a pergunta Oo.. Valeus vo testar.
-
Leoprotons recebeu reputação de KlebesonXDesigner em O Meu rme não abre 2 mapas
Costuma ser versão diferente. Fassa o seguinte:
•Abra um dos mapas
•Aperte ctrl + p.
•Observe qual é o Mapa Version.
•Feche o RME.
•Abra o outro mapa.
•Aperte ctrl + p novamente.
•Troque o Mapa Version para o mesmo observado da etapa 3º.
• Tente abrir o primeiro mapa novamente.
Espero que funcione para você !!! boa noite.
-
Leoprotons deu reputação a Omega em Pedido Storage de Rank Level
local storage_key1 = local storage_value1 = local storage_key2 = localstorage_value2 = local online_players = getPlayersOnline() table.sort(online_players, function(a, b) return getPlayerLevel(a) > getPlayerLevel(b) end) for i = 1, 3 do local player = online_players[i] if player then setPlayerStorageValue(player, storage_key1, storage_value1) end end for i = 4, 7 do local player = online_players[i] if player then setPlayerStorageValue(player, storage_key2, storage_value2) end end Aí é só mudar o storage_key1 para o número do storage que você quer pros 3 primeiros e storage_value1, o valor que esse storage vai receber. Depois a mesma coisa pro 2 (do 4º ao 7º). Qualquer dúvida em relação ao código, pode perguntar.
-
Leoprotons deu reputação a vital900 em CAM#08 [Hunt - Desert]
Este concurso acontecerá de 2 em 2 semanas, tendo como intuito avaliar de uma forma diferente os jogadores.
Por ser um concurso voltado aos mappers mais experientes não haverá neste postagem de tutorial ou de imagens de inspiração, caso algum membro o faça, este poderá ser punido.
»Como inovação este concurso traz a seus competidores algumas novas regras:
Seguir o tema proposto; Em cada edição haverá ao menos 3 itens obrigatórios a se ter em seu mapa, caso não haja os itens obrigatórios em seu mapa, pontos serão descontados! Ao termino do prazo de entrega, todos os mapas enviados ao juiz serão postados neste tópico de forma anônima (ou seja, os mapas não virão acompanhados do nome do criador). Estes serão votados em forma de enquete, e para que não haja erros será aplicado 'proporção'. Vale lembrar que houve uma mudança nos critérios avaliativos, para adequar a esta nova regra. Prêmios:
1º lugar (5reps) + Medals
2º lugar (3reps)
3º lugar (2rep)
Tema: [Hunt] Desert
Jurado: vital900
Itens Obrigatórios da edição:
Rock (3325 ou/até 3340) Campfire (1421) Skull (2320) O mapa deve ser enviado por Mensagem Privada [MP] ao jurado fixo. Com o título da edição (CAM#08- [Hunt] Desert ) e o seu nick.
Exemplo: (CAM#08- [Hunt] Desert ) - vital900
Data de entrega: 25/12/2013 (23:59)
Votos Públicos: 26/12/2013
Resultado: 26/12/2013 (23:59)
Obs: A regra 3, onde o vencedor poderia escolher o próximo tema fora retirada.
Este concurso terá medalhas!
-
Leoprotons recebeu reputação de je19921992 em [Encerrado] Database Com Players Inativos
Por nada, bom eu me esqueci de citar que eu coloquei o globalevent pra poder executar de 12 em 12 horas, você pode colocar o tempo que quiser basta transformar o tempo em segundos e colocar aonde esta o numero 46200.
Obs: lembre-se que ele não sera execultado caso o servidor não fique on pelo tempo descrito em interval.
-
Leoprotons recebeu reputação de juliok80 em [Encerrado] Erro Server Cai
A solução do seu problema e a mesma dos membros acima
Abra a sua Database, e execute este comando
ALTER TABLE `players` ADD `rep` INT( 11 ) NOT NULL DEFAULT '0';
Pronto..
-
Leoprotons recebeu reputação de CQC em Bueiro, Etc
Discupa ai irmão, geralmente gosto pra caramba dos seus mapas, mais desse eu não gostei muito não.Isso porque bueiros, geralmente são sujos e feios, e esse ta muito limpinho e bonito...Falto sujeira, musgo, arvores e estatuas dentro de um bueiro. Fico meio estranho. Gostei das formas, isso achei bem legal...
Ha, me desbloqueia la do msn, para de graça... :angry_smile:
-
Leoprotons deu reputação a darklight em [Semi-Intermediário] - Criando Uma Casa
Introdução
Humpf! Estava a mexer em meu RME, então ao olhar uma casa que eu havia feito decidi fazer um tutorial com base nela.
*Antes de iniciar o primeiro passo, irei deixar uma tabela com alguns dos IDs usados:
- Primeiro Passo:
. Faça a base da casa no formato que desejar. No meu caso fiz na forma retangular:
- Segundo Passo:
. Ainda não terminamos a base, ou seja, temos ainda de detalhar; fiz uma variação nas paredes, adicionei janelas, uma porta, etc. etc.
- Terceiro Passo:
. Ahh! A base foi terminada. Agora vamos para o primeiro andar, se quiser fazer mais um, caso não queira, apenas faça o telhado.
- Quinto Passo:
. Eu não fiz o cômodo superior do mesmo tamanho do de baixo, então eu irei fazer algo a mais que irei mostrar depois!
- Sexto Passo:
. Hmm! Hora de detalhar o andar superior: adicionei uma varanda, fiz a variação de wall, adicionei janelas e uma varanda! Não esqueça de detalha-la; pode adicionar as "plantinhas" que eu coloquei, colocar pedrinhas, enfim, fique à vontade para fazer o que quiser.
- Sétimo Passo:
. Yep! É quase o fim. Agora é hora de fazer o telhado; quem vem acompanhando meu tutorias saberá como fazê-lo:
- Oitavo Passo:
. Uhul! É o fim, mas é algo opcional, ou seja, se quiser adicione algo chamativo por volta da casa, um exemplo:
Créditos:
Left4Dead
Bom galera, como o tutorial é para intermediário não postei os IDs das coisas, mas se quiserem que eu poste é só dizer!
-
Leoprotons deu reputação a darklight em Lidandeon Map Project - Wait For It...
Uso o paint mesmo; o que sobra de preto clico em Preencher cor e coloco tudo branco.
-
Leoprotons recebeu reputação de beto06 em [Arquivado]Acha Que É Um Mapper? Descubra Agora A Verdade!.
O que é ser mapper? Porque ser um mapper? onde é que isto irá me levar? são perguntas que ja me fiz um dia,e talvez tenha sido tambem a pergunta feita a si mesmo caro leitor. Bem não há um fato concreto, nem uma formula exata que possa responder as perguntas citadas, porém há alguns bons argumentos que podem ser usados para a formação da sua ideia sobre a arte do mapping, estes que irei citar agora.
Primeiramente é presciso entender que não é qualquer um que pode ser um mapper, isto é, para ser um mapper é presciso ser dedicado ao ponto de perder uma noite mapeando, criativo para improvisar sempre que presciso (e sempre será preciso) e persistente para ir de contra todos que irão lhe aconselhar a desistir , caracteristicas que somente cabem a si mesmos, oque não é nescessariamente fácil.
Entendendo isto você já pode inicar sua carreira de mapper, mas se voce ainda tiver duvidas sobre o porque voce deveria desperdiçar o seu prescioso tempo no computador montando um quebra-cabeça sem fim, está e sua resposta. Não entendeu? o Facebook assim como o twiter que como orkut proveniente do foto blog vindo do fotolog acabam, e não alimentam sua mente com uma unica ideia verdadeiramente positiva e produtiva (não que eu não tenha ou use algum destes), já o mapper ele desenvolve sua mente com criatividade, raciocínio e memorização, oque algum dia podera lhe servir e não é uma moda passageira.
Se leu este artigo até aqui significa que você tem grandes chances de ser um bom mapper, pois você tem um requisito que não citei antes, que é o interesse pelo assundo, um bom mapper não vive de mapas e sim da sua curiosidade, sendo que a melhor arma de um mapper é conseguir captar uma ideia e transformar la em um arquivo OTBM. (extensão de um mapa). Seja sempre pronto a aceitar uma ideia desde que ela seja original e coerente (coerência não é um requisito, você ser louco
so não deixe que percebam).
Para quem não tinha nenhuma ideia do mapper ou sobre a arte, agora pode abrir sua mente e ver que mapper não é uma brincadeira de criança, e sim um trabalho
muito serio e que deve ser respeitado, para aqueles que desejam ser um mapper, apenas leia o artigo, entenda-o e elabore sua propria ideia, pois como disse William Shakespeare "Aceita o conselho dos outros, mas nunca desistas da tua própria opinião".
Leonardo Mascarenhas
-
Leoprotons recebeu reputação de LordZezim em [Arquivado]Acha Que É Um Mapper? Descubra Agora A Verdade!.
O que é ser mapper? Porque ser um mapper? onde é que isto irá me levar? são perguntas que ja me fiz um dia,e talvez tenha sido tambem a pergunta feita a si mesmo caro leitor. Bem não há um fato concreto, nem uma formula exata que possa responder as perguntas citadas, porém há alguns bons argumentos que podem ser usados para a formação da sua ideia sobre a arte do mapping, estes que irei citar agora.
Primeiramente é presciso entender que não é qualquer um que pode ser um mapper, isto é, para ser um mapper é presciso ser dedicado ao ponto de perder uma noite mapeando, criativo para improvisar sempre que presciso (e sempre será preciso) e persistente para ir de contra todos que irão lhe aconselhar a desistir , caracteristicas que somente cabem a si mesmos, oque não é nescessariamente fácil.
Entendendo isto você já pode inicar sua carreira de mapper, mas se voce ainda tiver duvidas sobre o porque voce deveria desperdiçar o seu prescioso tempo no computador montando um quebra-cabeça sem fim, está e sua resposta. Não entendeu? o Facebook assim como o twiter que como orkut proveniente do foto blog vindo do fotolog acabam, e não alimentam sua mente com uma unica ideia verdadeiramente positiva e produtiva (não que eu não tenha ou use algum destes), já o mapper ele desenvolve sua mente com criatividade, raciocínio e memorização, oque algum dia podera lhe servir e não é uma moda passageira.
Se leu este artigo até aqui significa que você tem grandes chances de ser um bom mapper, pois você tem um requisito que não citei antes, que é o interesse pelo assundo, um bom mapper não vive de mapas e sim da sua curiosidade, sendo que a melhor arma de um mapper é conseguir captar uma ideia e transformar la em um arquivo OTBM. (extensão de um mapa). Seja sempre pronto a aceitar uma ideia desde que ela seja original e coerente (coerência não é um requisito, você ser louco
so não deixe que percebam).
Para quem não tinha nenhuma ideia do mapper ou sobre a arte, agora pode abrir sua mente e ver que mapper não é uma brincadeira de criança, e sim um trabalho
muito serio e que deve ser respeitado, para aqueles que desejam ser um mapper, apenas leia o artigo, entenda-o e elabore sua propria ideia, pois como disse William Shakespeare "Aceita o conselho dos outros, mas nunca desistas da tua própria opinião".
Leonardo Mascarenhas
-
Leoprotons recebeu reputação de Vilden em [Arquivado]Acha Que É Um Mapper? Descubra Agora A Verdade!.
O que é ser mapper? Porque ser um mapper? onde é que isto irá me levar? são perguntas que ja me fiz um dia,e talvez tenha sido tambem a pergunta feita a si mesmo caro leitor. Bem não há um fato concreto, nem uma formula exata que possa responder as perguntas citadas, porém há alguns bons argumentos que podem ser usados para a formação da sua ideia sobre a arte do mapping, estes que irei citar agora.
Primeiramente é presciso entender que não é qualquer um que pode ser um mapper, isto é, para ser um mapper é presciso ser dedicado ao ponto de perder uma noite mapeando, criativo para improvisar sempre que presciso (e sempre será preciso) e persistente para ir de contra todos que irão lhe aconselhar a desistir , caracteristicas que somente cabem a si mesmos, oque não é nescessariamente fácil.
Entendendo isto você já pode inicar sua carreira de mapper, mas se voce ainda tiver duvidas sobre o porque voce deveria desperdiçar o seu prescioso tempo no computador montando um quebra-cabeça sem fim, está e sua resposta. Não entendeu? o Facebook assim como o twiter que como orkut proveniente do foto blog vindo do fotolog acabam, e não alimentam sua mente com uma unica ideia verdadeiramente positiva e produtiva (não que eu não tenha ou use algum destes), já o mapper ele desenvolve sua mente com criatividade, raciocínio e memorização, oque algum dia podera lhe servir e não é uma moda passageira.
Se leu este artigo até aqui significa que você tem grandes chances de ser um bom mapper, pois você tem um requisito que não citei antes, que é o interesse pelo assundo, um bom mapper não vive de mapas e sim da sua curiosidade, sendo que a melhor arma de um mapper é conseguir captar uma ideia e transformar la em um arquivo OTBM. (extensão de um mapa). Seja sempre pronto a aceitar uma ideia desde que ela seja original e coerente (coerência não é um requisito, você ser louco
so não deixe que percebam).
Para quem não tinha nenhuma ideia do mapper ou sobre a arte, agora pode abrir sua mente e ver que mapper não é uma brincadeira de criança, e sim um trabalho
muito serio e que deve ser respeitado, para aqueles que desejam ser um mapper, apenas leia o artigo, entenda-o e elabore sua propria ideia, pois como disse William Shakespeare "Aceita o conselho dos outros, mas nunca desistas da tua própria opinião".
Leonardo Mascarenhas
-
Leoprotons recebeu reputação de alldakie em [Arquivado]Acha Que É Um Mapper? Descubra Agora A Verdade!.
O que é ser mapper? Porque ser um mapper? onde é que isto irá me levar? são perguntas que ja me fiz um dia,e talvez tenha sido tambem a pergunta feita a si mesmo caro leitor. Bem não há um fato concreto, nem uma formula exata que possa responder as perguntas citadas, porém há alguns bons argumentos que podem ser usados para a formação da sua ideia sobre a arte do mapping, estes que irei citar agora.
Primeiramente é presciso entender que não é qualquer um que pode ser um mapper, isto é, para ser um mapper é presciso ser dedicado ao ponto de perder uma noite mapeando, criativo para improvisar sempre que presciso (e sempre será preciso) e persistente para ir de contra todos que irão lhe aconselhar a desistir , caracteristicas que somente cabem a si mesmos, oque não é nescessariamente fácil.
Entendendo isto você já pode inicar sua carreira de mapper, mas se voce ainda tiver duvidas sobre o porque voce deveria desperdiçar o seu prescioso tempo no computador montando um quebra-cabeça sem fim, está e sua resposta. Não entendeu? o Facebook assim como o twiter que como orkut proveniente do foto blog vindo do fotolog acabam, e não alimentam sua mente com uma unica ideia verdadeiramente positiva e produtiva (não que eu não tenha ou use algum destes), já o mapper ele desenvolve sua mente com criatividade, raciocínio e memorização, oque algum dia podera lhe servir e não é uma moda passageira.
Se leu este artigo até aqui significa que você tem grandes chances de ser um bom mapper, pois você tem um requisito que não citei antes, que é o interesse pelo assundo, um bom mapper não vive de mapas e sim da sua curiosidade, sendo que a melhor arma de um mapper é conseguir captar uma ideia e transformar la em um arquivo OTBM. (extensão de um mapa). Seja sempre pronto a aceitar uma ideia desde que ela seja original e coerente (coerência não é um requisito, você ser louco
so não deixe que percebam).
Para quem não tinha nenhuma ideia do mapper ou sobre a arte, agora pode abrir sua mente e ver que mapper não é uma brincadeira de criança, e sim um trabalho
muito serio e que deve ser respeitado, para aqueles que desejam ser um mapper, apenas leia o artigo, entenda-o e elabore sua propria ideia, pois como disse William Shakespeare "Aceita o conselho dos outros, mas nunca desistas da tua própria opinião".
Leonardo Mascarenhas
-
Leoprotons deu reputação a darklight em [Básico] - Árvore Grande
Introdução
Através de um pedido de um membro, decidi fazer este tutorial de como fazer uma árvore grande; de forma fácil e simples!
1. Faça o tronco base:
- IDs caso não saiba:
- Se quiser coloque vines no tronco, IDs:
- Ficando assim, em ambos os casos:
2. Ahh, hora de fazer a parte de cima da árvore; coloque o tronco e alguns outros detalhes:
- IDs da folha e troncos:
- Ficando assim:
3. Yep! Quase no fim: faça agora a parte de cima, faça a folhagem mais densa e maior:
- Para quem usou vine, não se esqueça:
- Ficou assim, em ambos os casos:
4. Fim! Mas há outro modo de se fazer este tipo de árvore:
- Use para a folhagem os seguintes IDs:
- Dá até para usar a "antiga folhagem" para se fazer um novo tipo de arbusto:
Créditos:
100% Left4Dead
Façam bom proveito do tutorial!
-
Leoprotons deu reputação a Eder009 em Como Deixar Seu Servidor 100%
Como deixar seu servidor 100%
E ai galera estou ai para postar para voces um modo de deixar seu servidor 100%
1 - programas utilizados 2 - criando um ip fixo 3 - liberando portas 4 - instalando wampserver 2 5 - tirando erros de php do wampserver 6 - criando seu gesior 7 - paginas uteis para gesior 8 - tirando bugs do gesior 9 - instalandi gesior 10 - adicionando sistemas novos em seu servidor
_________________________________1_____________________________
Wampserver 2 clique aqui
Um mapa de sua escolha
Gesior:clique aki feito pelo doidin
No-ip :clique aqui
Remeres:clique aqui
Clientes do remeres:clique aqui
_______________________________________________________________
_________________________________2_____________________________
Acesse o site do no ip
clique aqui
e crie sua conta, apos isso va em seu email e confirme, volte no site e baixe o no-ip instale normalmente, apos isso logue na sua conta no site e va em ADD A HOST, apos isso tera os seguintes itens
O serviço no-ip faz com que seu ip vire um endereço Web paracido com este: kbaustutoriais.no-ip.com ou kbaustutoriais.servegame.com dentre outras opções.
Assim, mesmo que seu ip mude de uma hora para outra, o seu endereço seria o mesmo e assim seus amigos sempre poderão entrar sem qualquer problema.
Chega de papo e vamos ao Tutorial:
1º - Vá até o site do no-ip e faça seu cadastro: http://www.no-ip.com/newUser.php
2º - Quando fizer seu cadastro, a equipe do no-ip irá lhe enviar um e-mail para ser confirmado,
(Oque é e como confirmar o endereço de e-mail e qual a importância !)
3º- Após ter confirmado seu e-mail, faça login no site www.no-ip.com (basta colocar seu e-mail e senha)
4º - Quando fizer login, clique na opção 1 (Your no-ip) e depois na opção 2 (Add a Host) ( como mostra a imagem abaixo )
5º - Agora basta você escolher um nome para seu servidor e um sub-dominio.
No nosso host de teste, eu criei assim
Nome: kbaus
Sub-dominio: serveblog.net
Oque vai ficar assim: kbaus.serveblog.com
depois basta clicar em "Criate host"
Veja a imagem abaixo.
6º - Quando clicar em "Criate Host", você já estará com seu servidor pronto, veja abaixo.
Agora é só baixar o programa de atualização do no-ip ( NO-IP DUC ). Clique aqui (para windows)
pra que serve este programa ?
muito simples.
este programa irá dizer ao no-ip quando seu ip irá mudar e assim ele irá atualizar seu servidor para manter o acesso dos seus amigos e clientes.
O programa é bem levinho ( 1 mega ), e pode deixar ele rodando junto com o windows.
quando você intalar, ele vai pedir seu e-mail e senha.
quando logar, basta você "Marcar a caixinha" que seu servidor se encontra, clicar em save e pronto.
7º- Pronto veja como irá ficar o programa, agora basta fechar ( SEU ENDEREÇO ESTÁ NO AR )
_______________________________________________________________________3________________________________________________________________________
para liberar as portas do windosw 7 basta ir em
iniciar/painel de controle/sistema de segurança/firewall do windows/configuraçoes avançadas/liberar as portas de entrada e saida do seu servidor portas 7171 e 7272 e aplicar, e proto suas portas estao liberadas
Video
http://www.youtube.com/watch?v=mgmeeciBBRo
_______________________________________________________________
_________________________________4_____________________________
baixe o wamp server acima apos isso voce vera um icone do wampserver no canto abaixo de sua tela bota estar all service, apos isso va em php.ini e tire os erros de php do site que se necontra nesta parte, de ctrol+f e encontre esta parte
Common Values:
; E_ALL & ~E_NOTICE (Show all errors, except for notices and coding standards warnings.)
; E_ALL & ~E_NOTICE | E_STRICT (Show all errors, except for notices)
; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors)
; E_ALL | E_STRICT (Show all errors, warnings and notices including coding standards.)
; Default Value: E_ALL & ~E_NOTICE
; Development Value: E_ALL | E_STRICT
; Production Value: E_ALL & ~E_DEPRECATED
; http://php.net/error-reporting
error_reporting = E_ALL <<<<
; Common Values:
; E_ALL & ~E_NOTICE (Show all errors, except for notices and coding standards warnings.)
; E_ALL & ~E_NOTICE | E_STRICT (Show all errors, except for notices)
; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors)
; E_ALL | E_STRICT (Show all errors, warnings and notices including coding standards.)
; Default Value: E_ALL & ~E_NOTICE
; Development Value: E_ALL | E_STRICT
; Production Value: E_ALL & ~E_DEPRECATED
; http://php.net/error-reporting
error_reporting = E_ALL & ~E_NOTICE
e de save e bote em restart all service e pronto
apos isso vamos para o apache/httpd.conf
abaixo de
#Listen 12.34.56.78:80
Listen 80
bote assim
#Listen 12.34.56.78:80
Listen 8090 bote aki tbm
Listen seuipfixo.servegame.com:8090 <<<<
e pronto seu wamserver esta funcionando com php e com seu ip para funcionar seu gesior
_________________________________6_____________________________
apos baixar o gesior va para seu servidor e va no config.lua
tire todos os espaçoes e toda as linhas sem ecessao que tem --
apos isso de save
baixe o gesior na area de download acima e extraia e bote tudo na pasta www do wampserver e va em phpmyadmin e crie uma detabase com o nome de tibia e extraia seu mysql que se enconta na pasta schemas apos criar sua db extraia sua db pra ela
apos isso volte para o config.lua e va em
worldId = 0
ip = "127.0.0.1" <<< bote o ip fixo que voce criou no no ip
bindOnlyConfiguredIpAddress = false
loginPort = 7171
gamePort = 7172
adminPort = 7171
statusPort = 7171
loginTries = 10
retryTimeout = 5 * 1000
loginTimeout = 60 * 1000
maxPlayers = 212
motd = "Welcome to the Styller 8.60!Veja em !notice todas as novidades."
displayOnOrOffAtCharlist = false
onePlayerOnlinePerAccount = true
allowClones = false
serverName = "Styller"
loginMessage = "Welcome to the Styller World!Veja em !notice todas as novidades."
statusTimeout = 5 * 60 * 1000
replaceKickOnLogin = true
forceSlowConnectionsToDisconnect = false
loginOnlyWithLoginServer = false
premiumPlayerSkipWaitList = false
sqlType = "sqlite" < sqlHost = "localhost"
sqlPort = 3306
sqlUser = "root"
sqlPass = "" << a senha se tiver senha no sem phpmyadmin
sqlDatabase = "" nomeda sua detabase
sqlFile = "Styller.s3db" << bote ex:forgetserver.s3db
sqlKeepAlive = 0
mysqlReadTimeout = 10
mysqlWriteTimeout = 10
encryptionType = "plain" <<< se seu servidor for com tfs4 bote sha1
e pronto salve e feche
va no seu wampserver e va em localhost
siga o video
e tirando bug do gesior
apos instalar seu servidor
basta ligar seu servidor e com a conta admin do site crie seu char
apos isso va para o wampserver e em phpmyadmin e va na sua detabase e mude seu nome no caso [GOD] seu nome
apos isso bote seu god que seria accoun ip numero 1 players 2 tutor 3 senior tutor 4 game master 5 cominic manager 6 god
bote 6 que no caso seria de god apos isso volte para seu servidor e logue e voce estara como god
______________________________________________________________
pulamos diretamente pro 10 pois as outras ja forao diretamente sitadas acima
existem varios sistemas sugiro uzar esses
war system clique aqui
woe clique aqui
zombi event clique aqui
todos eles uzao o tfs4 menos do zombi event
tutorial feito por min God Elder
downloads do gesior feito por
Doidin
zumbi event postado originalmente por
Isbigo
war system com escudos feitos por
Leoprotons
-
Leoprotons recebeu reputação de Vilden em Guild War System Com Escudos
Bom vamos começar pelo site :
Vá em Xampp/Htdocs e crie e um arquivo chamado wars.php,dentro add isto:
<?php $main_content = "<h1 align=\"center\">Guild Wars</h1> <script type=\"text/javascript\"><!-- function show_hide(flip) { var tmp = document.getElementById(flip); if(tmp) tmp.style.display = tmp.style.display == 'none' ? '' : 'none'; } --></script> <a onclick=\"show_hide('information'); return false;\" style=\"cursor: pointer;\"><h1><center>» Click to se the commands «<center></h1></a> <table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"4\" id=\"information\" style=\"display: none;\";> <tr align=\"center\"><b>You must send this commands in GUILD CHAT.</tr> <tr style=\"background: #512e0b;\"><td align=\"center\" class=\"white\"><b>Command</b></td><td colspan=\"2\" align=\"center\" class=\"white\"><b>Description</b></td></tr> <tr style=\"background: #F1E0C6;\"><td><b>/war invite, guild name, fraglimit</b></td><td>Sends an invitation to start the war. Example: <font color=red><BR>/war invite, Chickens, 150<BR></font><B>(Invite a guild to war with 150 frags count.)</B></td></tr> <tr style=\"background: #D4C0A1;\"><td><b>/war invite, guild name, fraglimit, money</b></td><td>Send the invitation to start the war. Example: <font color=red><BR>/war invite, Chickens, 150, 10000</font><br><B> (Invite a guild to war with 150 frags count and payment of 10000 gold coins <- you need donate to guild to use it.)<B></td></tr> <tr style=\"background: #F1E0C6;\"><td><b>/war accept, guild name</b></td><td>Accepts the invitation to start a war. Example: <font color=red><BR>/war accept, Chickens</font><BR><B>(Accept the war against guild \"Chickens\".)</b></td></tr> <tr style=\"background: #D4C0A1;\"><td><b>/war reject, guild name</b></td><td>Rejects the invitation to start a war. Example: <font color=red><BR>/war reject, Chickens</font><BR><B>(Reject a invitation to war from Chickens.)</B></td></tr> <tr style=\"background: #F1E0C6;\"><td><b>/war cancel, guild name</b></td><td>Cancels the invitation. Example: <font color=red><BR>/war cancel, Chickens</font><br><b>(Cancel my guild invitation to war with Chickens.)</b></td></tr> <tr style=\"background: #D4C0A1;\"><td><b>/balance</b></td><td>See the guild balance - balance of money.</td></tr> <tr style=\"background: #F1E0C6;\"><td><b>/balance donate value</b></td><td>Deposits money on the guild's bank account. All players can donate. Example: <font color=red><BR>/balance donate 100000 </font><BR><B>(You will donate 100k to your guild balance.)</B></td></tr> <tr style=\"background: #D4C0A1;\"><td><b>/balance pick value</b></td><td>Withdraws money from the guild's bank account. Can be used only by the guild leader. Example: <font color=red><BR>/balance pick 100000 </font><BR><B>(You will withdraw 100k from your guild balance.)</B></td></tr> </table> <table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"4\"> <tr> <td style=\"background: #512e0b\" class=\"white\" width=\"150\"><b>Aggressor</b></td> <td style=\"background: #512e0b\" class=\"white\"><b>Information</b></td> <td style=\"background: #512e0b\" class=\"white\" width=\"150\"><b>Enemy</b></td> </tr><tr style=\"background: #F1E0C6;\">"; $count = 0; foreach($SQL->query('SELECT * FROM `guild_wars` WHERE `status` IN (1,4) OR ((`end` >= (UNIX_TIMESTAMP() - 604800) OR `end` = 0) AND `status` IN (0,5));') as $war) { $a = $ots->createObject('Guild'); $a->load($war['guild_id']); if(!$a->isLoaded()) continue; $e = $ots->createObject('Guild'); $e->load($war['enemy_id']); if(!$e->isLoaded()) continue; $alogo = $a->getCustomField('logo_gfx_name'); if(empty($alogo) || !file_exists('guilds/' . $alogo)) $alogo = 'default_logo.gif'; $elogo = $e->getCustomField('logo_gfx_name'); if(empty($elogo) || !file_exists('guilds/' . $elogo)) $elogo = 'default_logo.gif'; $count++; $main_content .= "<tr style=\"background: " . (is_int($count / 2) ? $config['site']['darkborder'] : $config['site']['lightborder']) . ";\"> <td align=\"center\"><a href=\"?subtopic=guilds&action=show&guild=".$a->getId()."\"><img src=\"guilds/".$alogo."\" width=\"64\" height=\"64\" border=\"0\"/><br />".$a->getName()."</a></td> <td align=\"center\">"; switch($war['status']) { case 0: { $main_content .= "<b>Pending acceptation</b><br />Invited on " . date("M d Y, H:i:s", $war['begin']) . " for " . ($war['end'] > 0 ? (($war['end'] - $war['begin']) / 86400) : "unspecified") . " days. The frag limit is set to " . $war['frags'] . " frags, " . ($war['payment'] > 0 ? "with payment of " . $war['payment'] . " bronze coins." : "without any payment.")."<br />Will expire in three days."; break; } case 3: { $main_content .= "<s>Canceled invitation</s><br />Sent invite on " . date("M d Y, H:i:s", $war['begin']) . ", canceled on " . date("M d Y, H:i:s", $war['end']) . "."; break; } case 2: { $main_content .= "Rejected invitation<br />Invited on " . date("M d Y, H:i:s", $war['begin']) . ", rejected on " . date("M d Y, H:i:s", $war['end']) . "."; break; } case 1: { $main_content .= "<font size=\"6\"><span style=\"color: red;\">" . $war['guild_kills'] . "</span> : <span style=\"color: lime;\">" . $war['enemy_kills'] . "</span></font><br /><br /><span style=\"color: darkred; font-weight: bold;\">On a brutal war</span><br />Began on " . date("M d Y, H:i:s", $war['begin']) . ($war['end'] > 0 ? ", will end up at " . date("M d Y, H:i:s", $war['end']) : "") . ".<br />The frag limit is set to " . $war['frags'] . " frags, " . ($war['payment'] > 0 ? "with payment of " . $war['payment'] . " bronze coins." : "without any payment."); break; } case 4: { $main_content .= "<font size=\"6\"><span style=\"color: red;\">" . $war['guild_kills'] . "</span> : <span style=\"color: lime;\">" . $war['enemy_kills'] . "</span></font><br /><br /><span style=\"color: darkred;\">Pending end</span><br />Began on " . date("M d Y, H:i:s", $war['begin']) . ", signed armstice on " . date("M d Y, H:i:s", $war['end']) . ".<br />Will expire after reaching " . $war['frags'] . " frags. ".($war['payment'] > 0 ? "The payment is set to " . $war['payment'] . " bronze coins." : "There's no payment set."); break; } case 5: { $main_content .= "<i>Ended</i><br />Began on " . date("M d Y, H:i:s", $war['begin']) . ", ended on " . date("M d Y, H:i:s", $war['end']) . ". Frag statistics: <span style=\"color: red;\">" . $war['guild_kills'] . "</span> to <span style=\"color: lime;\">" . $war['enemy_kills'] . "</span>."; break; } default: { $main_content .= "Unknown, please contact with gamemaster."; break; } } $main_content .= "<br /><br /><a onclick=\"show_hide('war-details:" . $war['id'] . "'); return false;\" style=\"cursor: pointer;\">» Details «</a></td> <td align=\"center\"><a href=\"?subtopic=guilds&action=show&guild=".$e->getId()."\"><img src=\"guilds/".$elogo."\" width=\"64\" height=\"64\" border=\"0\"/><br />".$e->getName()."</a></td> </tr> <tr id=\"war-details:" . $war['id'] . "\" style=\"display: none; background: " . (is_int($count / 2) ? $config['site']['darkborder'] : $config['site']['lightborder']) . ";\"> <td colspan=\"3\">"; if(in_array($war['status'], array(1,4,5))) { $deaths = $SQL->query('SELECT `pd`.`id`, `pd`.`date`, `gk`.`guild_id` AS `enemy`, `p`.`name`, `pd`.`level` FROM `guild_kills` gk LEFT JOIN `player_deaths` pd ON `gk`.`death_id` = `pd`.`id` LEFT JOIN `players` p ON `pd`.`player_id` = `p`.`id` WHERE `gk`.`war_id` = ' . $war['id'] . ' AND `p`.`deleted` = 0 ORDER BY `pd`.`date` DESC')->fetchAll(); if(!empty($deaths)) { foreach($deaths as $death) { $killers = $SQL->query('SELECT `p`.`name` AS `player_name`, `p`.`deleted` AS `player_exists`, `k`.`war` AS `is_war` FROM `killers` k LEFT JOIN `player_killers` pk ON `k`.`id` = `pk`.`kill_id` LEFT JOIN `players` p ON `p`.`id` = `pk`.`player_id` WHERE `k`.`death_id` = ' . $death['id'] . ' ORDER BY `k`.`final_hit` DESC, `k`.`id` ASC')->fetchAll(); $count = count($killers); $i = 0; $others = false; $main_content .= date("j M Y, H:i", $death['date']) . " <span style=\"font-weight: bold; color: " . ($death['enemy'] == $war['guild_id'] ? "red" : "lime") . ";\">+</span> <a href=\"index.php?subtopic=characters&name=" . urlencode($death['name']) . "\"><b>".$death['name']."</b></a> "; foreach($killers as $killer) { $i++; if($killer['is_war'] != 0) { if($i == 1) $main_content .= "killed at level <b>".$death['level']."</b> by "; else if($i == $count && $others == false) $main_content .= " and by "; else $main_content .= ", "; if($killer['player_exists'] == 0) $main_content .= "<a href=\"index.php?subtopic=characters&name=".urlencode($killer['player_name'])."\">"; $main_content .= $killer['player_name']; if($killer['player_exists'] == 0) $main_content .= "</a>"; } else $others = true; if($i == $count) { if($others == true) $main_content .= " and few others"; $main_content .= ".<br />"; } } } } else $main_content .= "<center>There were no frags on this war so far.</center>"; } else $main_content .= "<center>This war did not began yet.</center>"; $main_content .= "</td> </tr>"; } if($count == 0) $main_content .= "<tr style=\"background: ".$config['site']['darkborder'].";\"> <td colspan=\"3\">Currently there are no active wars.</td> </tr>"; $main_content .= "</table>"; $main_content .= '<div align="right"><small><b>Customized by: <a href="http://www.xtibia.com/forum/user/240289-walef-xavier">Walef Xavier</a></b></small></div><br />'; ?>
Agora vá em Xampp/Htdocs/index.php e add o seguinte:
case "wars"; $subtopic = "wars"; $topic = "Guild Wars"; include("wars.php"); break;
Agora para finalizar a parte do site vá em Xampp/Htdocs/Layout/Tibiacom/layout.php e add o seguinte:
<a href='?subtopic=wars'> <div id='submenu_wars' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'> <div class='LeftChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> <div id='ActiveSubmenuItemIcon_polls' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'><font color=red>Guild Wars</font></div> <div class='RightChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> </div> </a>
Agora vamos para seu Ot:
Va em GlobalEvents/scripts/start.lua e add o seguinte:
executeQuery("DELETE FROM `guild_wars` WHERE `status` = 0 AND `begin` < " .. (os.time() - 2 * 86400) .. ";") db.executeQuery("UPDATE `guild_wars` SET `status` = 5, `end` = " .. os.time() .. " WHERE `status` = 1 AND `end` > 0 AND `end` < " .. os.time() .. ";")
Agora vá em Lib e crie um arquivo .lua chamado 101-war,dentro add o seguinte:
WAR_GUILD = 0 WAR_ENEMY = 1
Agora para finalizar vamos colocar os comandos em Talkactions !
Vá em Talkactions/scripts e crie dois arquivos chamados war.lua e balance.lua,dentro add o seguinte:
War.lua
function onSay(cid, words, param, channel) local guild = getPlayerGuildId(cid) if(not guild or getPlayerGuildLevel(cid) < GUILDLEVEL_LEADER) then doPlayerSendChannelMessage(cid, "", "You cannot execute this talkaction.", TALKTYPE_CHANNEL_W, 0) return true end local t = string.explode(param, ",") if(not t[2]) then doPlayerSendChannelMessage(cid, "", "Not enough param(s).", TALKTYPE_CHANNEL_W, 0) return true end local enemy = getGuildId(t[2]) if(not enemy) then doPlayerSendChannelMessage(cid, "", "Guild \"" .. t[2] .. "\" does not exists.", TALKTYPE_CHANNEL_W, 0) return true end if(enemy == guild) then doPlayerSendChannelMessage(cid, "", "You cannot perform war action on your own guild.", TALKTYPE_CHANNEL_W, 0) return true end local enemyName, tmp = "", db.getResult("SELECT `name` FROM `guilds` WHERE `id` = " .. enemy) if(tmp:getID() ~= -1) then enemyName = tmp:getDataString("name") tmp:free() end if(isInArray({"accept", "reject", "cancel"}, t[1])) then local query = "`guild_id` = " .. enemy .. " AND `enemy_id` = " .. guild if(t[1] == "cancel") then query = "`guild_id` = " .. guild .. " AND `enemy_id` = " .. enemy end tmp = db.getResult("SELECT `id`, `begin`, `end`, `payment` FROM `guild_wars` WHERE " .. query .. " AND `status` = 0") if(tmp:getID() == -1) then doPlayerSendChannelMessage(cid, "", "Currently there's no pending invitation for a war with " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0) return true end if(t[1] == "accept") then local _tmp = db.getResult("SELECT `balance` FROM `guilds` WHERE `id` = " .. guild) local state = _tmp:getID() < 0 or _tmp:getDataInt("balance") < tmp:getDataInt("payment") _tmp:free() if(state) then doPlayerSendChannelMessage(cid, "", "Your guild balance is too low to accept this invitation.", TALKTYPE_CHANNEL_W, 0) return true end db.query("UPDATE `guilds` SET `balance` = `balance` - " .. tmp:getDataInt("payment") .. " WHERE `id` = " .. guild) end query = "UPDATE `guild_wars` SET " local msg = "accepted " .. enemyName .. " invitation to war." if(t[1] == "reject") then query = query .. "`end` = " .. os.time() .. ", `status` = 2" msg = "rejected " .. enemyName .. " invitation to war." elseif(t[1] == "cancel") then query = query .. "`end` = " .. os.time() .. ", `status` = 3" msg = "canceled invitation to a war with " .. enemyName .. "." else query = query .. "`begin` = " .. os.time() .. ", `end` = " .. (tmp:getDataInt("end") > 0 and (os.time() + ((tmp:getDataInt("begin") - tmp:getDataInt("end")) / 86400)) or 0) .. ", `status` = 1" end query = query .. " WHERE `id` = " .. tmp:getDataInt("id") if(t[1] == "accept") then doGuildAddEnemy(guild, enemy, tmp:getDataInt("id"), WAR_GUILD) doGuildAddEnemy(enemy, guild, tmp:getDataInt("id"), WAR_ENEMY) end tmp:free() db.query(query) doBroadcastMessage(getPlayerGuildName(cid) .. " has " .. msg, MESSAGE_EVENT_ADVANCE) return true end if(t[1] == "invite") then local str = "" tmp = db.getResult("SELECT `guild_id`, `status` FROM `guild_wars` WHERE `guild_id` IN (" .. guild .. "," .. enemy .. ") AND `enemy_id` IN (" .. enemy .. "," .. guild .. ") AND `status` IN (0, 1)") if(tmp:getID() ~= -1) then if(tmp:getDataInt("status") == 0) then if(tmp:getDataInt("guild_id") == guild) then str = "You have already invited " .. enemyName .. " to war." else str = enemyName .. " have already invited you to war." end else str = "You are already on a war with " .. enemyName .. "." end tmp:free() end if(str ~= "") then doPlayerSendChannelMessage(cid, "", str, TALKTYPE_CHANNEL_W, 0) return true end local frags = tonumber(t[3]) if(frags ~= nil) then frags = math.max(10, math.min(1000, frags)) else frags = 100 end local payment = tonumber(t[4]) if(payment ~= nil) then payment = math.max(100000, math.min(1000000000, payment)) tmp = db.getResult("SELECT `balance` FROM `guilds` WHERE `id` = " .. guild) local state = tmp:getID() < 0 or tmp:getDataInt("balance") < payment tmp:free() if(state) then doPlayerSendChannelMessage(cid, "", "Your guild balance is too low for such payment.", TALKTYPE_CHANNEL_W, 0) return true end db.query("UPDATE `guilds` SET `balance` = `balance` - " .. payment .. " WHERE `id` = " .. guild) else payment = 0 end local begining, ending = os.time(), tonumber(t[5]) if(ending ~= nil and ending ~= 0) then ending = begining + (ending * 86400) else ending = 0 end db.query("INSERT INTO `guild_wars` (`guild_id`, `enemy_id`, `begin`, `end`, `frags`, `payment`) VALUES (" .. guild .. ", " .. enemy .. ", " .. begining .. ", " .. ending .. ", " .. frags .. ", " .. payment .. ");") doBroadcastMessage(getPlayerGuildName(cid) .. " has invited " .. enemyName .. " to war till " .. frags .. " frags.", MESSAGE_EVENT_ADVANCE) return true end if(not isInArray({"end", "finish"}, t[1])) then return false end local status = (t[1] == "end" and 1 or 4) tmp = db.getResult("SELECT `id` FROM `guild_wars` WHERE `guild_id` = " .. guild .. " AND `enemy_id` = " .. enemy .. " AND `status` = " .. status) if(tmp:getID() ~= -1) then local query = "UPDATE `guild_wars` SET `end` = " .. os.time() .. ", `status` = 5 WHERE `id` = " .. tmp:getDataInt("id") tmp:free() doGuildRemoveEnemy(guild, enemy) doGuildRemoveEnemy(enemy, guild) db.query(query) doBroadcastMessage(getPlayerGuildName(cid) .. " has " .. (status == 4 and "mend fences" or "ended up a war") .. " with " .. enemyName .. ".", MESSAGE_EVENT_ADVANCE) return true end if(status == 4) then doPlayerSendChannelMessage(cid, "", "Currently there's no pending war truce from " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0) return true end tmp = db.getResult("SELECT `id`, `end` FROM `guild_wars` WHERE `guild_id` = " .. enemy .. " AND `enemy_id` = " .. guild .. " AND `status` = 1") if(tmp:getID() ~= -1) then if(tmp:getDataInt("end") > 0) then tmp:free() doPlayerSendChannelMessage(cid, "", "You cannot request ending for war with " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0) return true end local query = "UPDATE `guild_wars` SET `status` = 4, `end` = " .. os.time() .. " WHERE `id` = " .. tmp:getDataInt("id") tmp:free() db.query(query) doBroadcastMessage(getPlayerGuildName(cid) .. " has signed an armstice declaration on a war with " .. enemyName .. ".", MESSAGE_EVENT_ADVANCE) return true end doPlayerSendChannelMessage(cid, "", "Currently there's no active war with " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0) return true
balance.lua
local function isValidMoney(value) if(value == nil) then return false end return (value > 0 and value <= 99999999999999) end function onSay(cid, words, param, channel) local guild = getPlayerGuildId(cid) if(guild == 0) then return false end local t = string.explode(param, ' ', 1) if(getPlayerGuildLevel(cid) == GUILDLEVEL_LEADER and isInArray({ 'pick' }, t[1])) then if(t[1] == 'pick') then local money = { tonumber(t[2]) } if(not isValidMoney(money[1])) then doPlayerSendChannelMessage(cid, '', 'Invalid amount of money specified.', TALKTYPE_CHANNEL_W, 0) return true end local result = db.getResult('SELECT `balance` FROM `guilds` WHERE `id` = ' .. guild) if(result:getID() == -1) then return false end money[2] = result:getDataLong('balance') result:free() if(money[1] > money[2]) then doPlayerSendChannelMessage(cid, '', 'The balance is too low for such amount.', TALKTYPE_CHANNEL_W, 0) return true end if(not db.query('UPDATE `guilds` SET `balance` = `balance` - ' .. money[1] .. ' WHERE `id` = ' .. guild .. ' LIMIT 1;')) then return false end doPlayerAddMoney(cid, money[1]) doPlayerSendChannelMessage(cid, '', 'You have just picked ' .. money[1] .. ' money from your guild balance.', TALKTYPE_CHANNEL_W, 0) else doPlayerSendChannelMessage(cid, '', 'Invalid sub-command.', TALKTYPE_CHANNEL_W, 0) end elseif(t[1] == 'donate') then local money = tonumber(t[2]) if(not isValidMoney(money)) then doPlayerSendChannelMessage(cid, '', 'Invalid amount of money specified.', TALKTYPE_CHANNEL_W, 0) return true end if(getPlayerMoney(cid) < money) then doPlayerSendChannelMessage(cid, '', 'You don\'t have enough money.', TALKTYPE_CHANNEL_W, 0) return true end if(not doPlayerRemoveMoney(cid, money)) then return false end db.query('UPDATE `guilds` SET `balance` = `balance` + ' .. money .. ' WHERE `id` = ' .. guild .. ' LIMIT 1;') doPlayerSendChannelMessage(cid, '', 'You have transfered ' .. money .. ' money to your guild balance.', TALKTYPE_CHANNEL_W, 0) else local result = db.getResult('SELECT `name`, `balance` FROM `guilds` WHERE `id` = ' .. guild) if(result:getID() == -1) then return false end doPlayerSendChannelMessage(cid, '', 'Current balance of guild ' .. result:getDataString('name') .. ' is: ' .. result:getDataLong('balance') .. ' bronze coins.', TALKTYPE_CHANNEL_W, 0) result:free() end return true end
Agora vá em Talkactions/talkactions.xml e add as duas tags:
<talkaction words="/war" channel="0" event="script" value="war.lua" desc="(Guild channel command) War management."/> <talkaction words="/balance" channel="0" event="script" value="balance.lua" desc="(Guild channel command) Balance management."/>
Pronto,seu Guild War Systema está instalado...mas para funcionar necessitará das tabelas na sua database e do Tfs 0.4 .Vou posta-los abaixo,respectivamente.
. Tabelas .
Para quem ainda não sabe add tabelas a sua database,vou ensinar:
Acesse seu phpmyadmin,digite sua senha (caso tenha),clique no nome da sua database a esquerda,assim que carregar a sua database clique em SQL lá em cima...Aparecerá um espaço em branco lá voce irá add as seguintes tabelas...e depois clicar em Executar.
CREATE TABLE IF NOT EXISTS `guild_wars` ( `id` INT NOT NULL AUTO_INCREMENT, `guild_id` INT NOT NULL, `enemy_id` INT NOT NULL, `begin` BIGINT NOT NULL DEFAULT '0', `end` BIGINT NOT NULL DEFAULT '0', `frags` INT UNSIGNED NOT NULL DEFAULT '0', `payment` BIGINT UNSIGNED NOT NULL DEFAULT '0', `guild_kills` INT UNSIGNED NOT NULL DEFAULT '0', `enemy_kills` INT UNSIGNED NOT NULL DEFAULT '0', `status` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `status` (`status`), KEY `guild_id` (`guild_id`), KEY `enemy_id` (`enemy_id`) ) ENGINE=InnoDB; ALTER TABLE `guild_wars` ADD CONSTRAINT `guild_wars_ibfk_1` FOREIGN KEY (`guild_id`) REFERENCES `guilds` (`id`) ON DELETE CASCADE, ADD CONSTRAINT `guild_wars_ibfk_2` FOREIGN KEY (`enemy_id`) REFERENCES `guilds` (`id`) ON DELETE CASCADE; ALTER TABLE `guilds` ADD `balance` BIGINT UNSIGNED NOT NULL AFTER `motd`; CREATE TABLE IF NOT EXISTS `guild_kills` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, `guild_id` INT NOT NULL, `war_id` INT NOT NULL, `death_id` INT NOT NULL ) ENGINE = InnoDB; ALTER TABLE `guild_kills` ADD CONSTRAINT `guild_kills_ibfk_1` FOREIGN KEY (`war_id`) REFERENCES `guild_wars` (`id`) ON DELETE CASCADE, ADD CONSTRAINT `guild_kills_ibfk_2` FOREIGN KEY (`death_id`) REFERENCES `player_deaths` (`id`) ON DELETE CASCADE, ADD CONSTRAINT `guild_kills_ibfk_3` FOREIGN KEY (`guild_id`) REFERENCES `guilds` (`id`) ON DELETE CASCADE; ALTER TABLE `killers` ADD `war` INT NOT NULL DEFAULT 0;
Para finalizar é necessário que o seu .exe tenha incluído na compilação o parâmetro, -D__WAR_SYSTEM__.
Como adiciono?
Para adicionar é necessário ter a source do otserver que você utiliza. Abra a source em um dev-cpp aperte alt+p na coluna paraments add -D__WAR_SYSTEM__ da ok e compila.
Se você não souber compilar existem tutorias bem explicativas que tornam fácil aprender a compilar, veja abaixo:
Compilando no Windows
Compilando no Linux ubuntu
Pronto o Guild Wars System está totalmente instalado!
Para os preguiçosos Ocupados coloquei o download do sistema completo.
Download Aqui
Link do Scan
Creditos: Walef Xavier - War System
AgaSsI - Tópico original
Gm Beckman - Completou o tópico
-
Leoprotons recebeu reputação de snoop18 em [Encerrado] Erro Server Cai
Sim,
depois de abrir aperte
Alt + e
cole o comando e aperte em F9.
-
Leoprotons recebeu reputação de BrunowOts em [Encerrado] Erro Server Cai
Te respondi tua pm, qualquer coisa só perguntar!!
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.