Ir para conteúdo

ADMJuan

Campones
  • Total de itens

    76
  • Registro em

  • Última visita

  • Dias Ganhos

    1

Histórico de Reputação

  1. Upvote
    ADMJuan recebeu reputação de ricktorres em [Globalevents] Entregando Itens Do Site Automaticamente   
    Vlw! cara agora deu certo! eu acho que achei onde foi o meu erro! ^^
  2. Upvote
    ADMJuan recebeu reputação de Pkworld em [Gesior Acc] Os Itens Mais Populares Da Sms Shop!   
    Olá galera venho aqui trazer um tutorial, que achei simples e interessante. Bom vamos lá...
     
    O script não foi feio por mim, foi feito pelo Aleh, os créditos são todos dele. Como você pode ver na foto é um script que mostra os três itens mais populares na loja sms. Abrao seu shopsystem.php e encontrar
     

     
    PHP code:
    elseif ( $ buy_offer [ 'type' ] == 'item' ) {  
    e abaixo desse código:
     
    PHP code:
    $ SQL -> query ( $ save_transaction );  
    cola
     
    PHP code:
    $ Comprou = "UPDATE` z_shop_offer `SET` `= comprou comprou + 1 WHERE` id `= ' . $ buy_offer [ 'id' ]. ';' ; $ SQL -> query ( $ comprou );  
    Agora encontrar (~ linha 167)
     
    PHP code:
    unset ( $ _SESSION [ 'viewed_confirmation_page' ]); $ main_content .= '<h2> <center> Bem-vindo ao' . $ config [ 'server' ] [ 'servername' ]. ' Loja </ center> </ h2> '. ;  
    e cole este:
     
    PHP code:
    $ Query = $ SQL -> query ( "SELECT * FROM` WHERE `z_shop_offer offer_type` NOT LIKE 'container' AND ORDER offer_type `NOT LIKE 'changename' por 'comprou DESC LIMIT` 3 " ); foreach ( $ query como $ linhas ) { if ( is_int ( $ number_of_rows / 2 )) { $ bgcolor = $ config [ 'site' ] [ 'darkborder' ];} else { $ bgcolor = $ config [ 'site' ] [ 'lightborder' ]; } $ number_of_rows + +; $ resultado .= " <td bgcolor = ' . $ bgcolor . '> <center> <"img src = imagens / artigos / ' . $ linhas [ 'id' .] . "gif"> < br /> <br /> Nome Oferta: '<b> . $ linhas [ 'offer_name' ]. '</ b> <br /> Pontos: <b> ' . $ linhas [ 'pontos' ]. '</ b> <br /> <form action="index.php?subtopic=shopsystem&action=select_player" method=POST> <input type = nome "escondido" = "buy_id" value = "" . $ linhas [ 'id' ]. »"> <input type = "submit" value = "Comprar" . $ linhas [ 'offer_name' ]. '"> </ form> </ center> </ td> ' ; } [/font] [font=comic sans ms,cursive]main_content $ .= "borda da tabela < = \ "0 \" cellspacing = \ "1 \" cellpadding = \ "4 \" width = \ "100% \"> <tr bgcolor = " . $ config [ 'site' ] [ 'vdarkborder' ]. "> <td class=\"white\" colspan=\"3\"> <center> <strong> Os itens mais populares da SMS Shop! </ strong> </ center> </ td> </ tr> <tr bgcolor = " . $ config [ 'site' ] [ 'vdarkborder' ]. "> <td class=\"white\" width=\"33%\"> <b> <center> # 1 </ center> </ b> </ td> <td class=\"white\" width=\"33%\"> <b> <center> # 2 </ center> </ b> </ td> <td class = \ " branco \ "Largura = \" 33% \ "> <b> <center> # 3 </ center> </ b> </ td> </ tr>" . $ result . "</ table> <br /> " ;  
    e por fim adiciona essa consulta no banco de dados:
     
    PHP code:
    ALTER TABLE ` z_shop_offer ` ADD ` comprou ` INT ( 11 ) NOT NULL PADRÃO '0 ' ;  
    Se gostou dá REP+
     
    Créditos
    .:Aleh:.
  3. Upvote
    ADMJuan deu reputação a JumentoCuzaum em Recrutamento - Breakdown Tëåm [Pk]   
    me desculpe não sabia qual a sessão certya e obrigado por mover
     
    ...
  4. Upvote
    ADMJuan deu reputação a SkyDangerous em Galeria De Video-Aula   
    Olá Pessoal , Bem-vindo a galeria de VIDEO-AULA , aqui você encontrará todas as videos aulas ensinando tudo sobre otserv.


     
     
    O tópico é atualizado quase todos os dias , então sempre visite o tópico e não esqueça de comentar e reputar se gostou !
    É dividido por categorias , para melhor organização.
     
    Quer dar dicas para video-aulas?
    Acesse: http://www.xtibia.com/forum/topic/165920-video-aulas-opinioes/
     
    Ultima Atualização: 30/08/2011
     
     
    Categoria: Internet(Desbloqueio de portas)
     
    Tutorial: Desbloqueando as portas pelo DMZ
    Autor: SkyDangerous
    Função: O dmz faz com que libera todas as portas , evitando perca de tempo desbloqueando uma por uma.
    Resumo: Não possui.
     
     
     
     
    Tutorial: Desbloqueando as portas pelo Firewall no WIN 7
    Autor: SkyDangerous
    Função: Desbloqueio das portas do firewall , faz com que os players consigam entrar no seu servidor.
    Resumo: Não possui
     
     
     
    Categoria: DATA OTSERV(Monsters,spells,items,weapons,scripts,npcs)
     
    Tutorial: Editando e criando novos monstros
    Autor: SkyDangerous
    Função: Aprendi a mecher nos monstros do tibia , criar novas spells e tudo mais
    Resumo:
    1- Localizar a pasta monsters
    2- Criar novo monstro
    3- Editar nome , experiencias , velocidade e tudo mais.(Básico)
    4- Editar as Flags
    5- Criar novas spells , e editar.
    6- Editar Elementos
    7- Editar as immunidades
    8- Criar novas vozes , editar as vozes
    9- Editar e adicionar novos loots
    10- Adicionar no monsters.xml
    11 - Finalização
     
     
     
    Tutorial: Funcionando o efeito nos items
    Autor: SkyDangerous
    Função: Fazer com que os efeitos funcionem nos items.
    Resumo:
    1- Testando no jogo para comprovar
    2- Localizando a pasta Movements
    3- Aprendendo a adicionar a tags
    4- Aprendendo sobre as funções
    5- Comprovando que funcionou
    6 - Fim do Tutorial
     
     
     
    Tutorial: Criando NPC de barco usando default
    Autor: SkyDangerous
    Função: Teleporta o player para a coordenada desejada
    Resumo:
    1- Localizando a pasta npcs
    2- Criando um npc
    3- Adicinando as tags
    4- Explicando a tags
    5- Fim do tutorial
     
     
     
    Categoria: WEB Sites(Criar, Modificar e por on-line)
     
    Tutorial: Usando Blocos de Comandos
    Autor: SkyDangerous
    Função:Executar os blocos de comandos em phpmyadmin
    Resumo:
    1- Abrindo o PhpMyAdmin
    2 - Testando
    3 - Achando o SQL
    4 - Executando
    5 - Comprovando e Finalizando
     
     
     
    Categoria: RME E MAPAS(Bugs,Fazendo Mapas , Importando , exportando)
     
    Tutorial: Desbugando o rme 8.6
    Autor: SkyDangerous
    Função: Aprenda a tirar o bug de localidade do 8.6.
    Resumo:
    1- Mostrando o Erro
    2- Instalando o tibia baixado no tibiabr ou em qualquer lugar
    3- Explicando como Resolver
    4- Testando novamente
    5- Fim do tutorial
     
     
     
     

    Se curtiu a video-aula



    Não custa nada dar REP +


  5. Upvote
    ADMJuan deu reputação a Administrador em Instabilidades E Ataques De DDoS   
    Bom, vou explicar a todos o que está acontecendo já que temos membros imaturos e infantis como Comedinhas e Sky distorcendo as versões. Moskitinho, não entre para o time amigo "ahh aqui ninguém te escute", você disse. Nós respondemos todos os e-mails e temos uma área só para atendimento no fórum, além de estar há 7 anos trabalhando.
     
    Eu já estou há 7 anos e infelizmente cansei de membros como Sky e Comedinhas com seus 14 anos de idade achando que podem fazer de tudo. Educação é uma coisa que se aprende em casa, mas infelizmente NERDS retardados ficam 20 horas no pc e provavelmente a mãe e pai trabalhando não sabem o que ele faz na internet, não podendo assim dar corretivos ou uma educação.
     
    A ordem é BANIR todos os membros com péssimo comportamento aqui no fórum, encheu o saco, desrespeito, faltou com educação vai levar alerta e dependendo do caso é ban direto.
     
    @DDOS
    Sobre o caso do DDOS o amigo que se intitula Anonymous que não deve passar um lammer com acesso a alguns dedicados (que já foram reportados para o noc, mesmo usando spoof ip conseguimos pegar a rota real deles) e alguns scripts que profissionais de tecnologia criam para poder testar performance de rede. está sim enviando ataques ao servidor, nós contramos uma consultoria que está nos ajudando
     
    O que o grupo do site OTPROJECTS está pedindo é que seja removido um download do fórum que algum membro postou por ser deles. Aqui no xtibia.com o volume de contéudo é muito grande e não temos responsabilidade pelo conteúdo, não checamos todo e NÃO NOS ENVOLVEMOS EM BRIGAS com terceiros a não ser que seja emitida alguma ordem judicial para isso. Nós já cumprimos 2x ao longo desses 7 anos e cumpriremos todas que forem assim julgadas necessárias.
     
    Fui informado que era um post que tinha vírus e acredito que até já tinha sido removido. Mas e depois? E se outros membros postarem denovo? Por esse motivo, simplesmente acatar a chantagem e ameaças feitas (estão na mão do advogado amanhã penalizando os responsáveis legais pelos 12 domínios registrados juntos com otprojects, layerhost, cloudalguma coisa etc...) Todos estão sendo intimados e abriremos um processo contra perdas e danos ao xtibia.com.
     
    @Todos
    Bom galera é isso, como vocês podem ver o XTIBIA.COM não tem culpa nenhuma sobre a postagem de contéudo aqui no fórum, pois ele NÃO ESTÁ DESRESPEITANDO NENHUMA LEI. Sasky, a GNU/GPL permite sim que você venda os códigos mas a venda não pode ser feita em formato de produto como eles fazem e sim como serviço onde os custos estariam envolvidos a instalação, customização e tudo mais.. não ao "produto" em sí. Nós aqui no xtibia.com não concordamos com o formato de trabalho da OTPROJECTS e se eles existem é por que tem gente que paga.
     
    O grande erro de alguns aqui é achar que se tirarmos o download eles vão parar, não não vão! Por isso estamos gastando um bom dinheiro para criar filtros de rede, proxys reversos e outras seguranças que vão nos garantir on-line até os atacantes desistirem.
     
    Espero que todos apoiem e evitem brigas neste tópico, pois já estou trabalhando aqui desde domingo sendo que ontem foi meu aniversário e estamos sendo atacados por brigas de terceiros.
     
    @Dedicado
    Aproveito para avisar que pegamos uma máquina nova com o dobro de potência da anterior e uma proteção contra DDOS que nos ajudará a filtrar esse tipo de ameaça. Vou passar a noite com a equipe de redes dando setup na máquina para que as coisas voltem ao normal.
  6. Upvote
    ADMJuan deu reputação a exlash em Gesior Extreme Free   
    Olá, eu sou o ítalo Gonçalves dono da OTProjects e aconselho a todos desconfiarem da esmola, pois se ele pagou pelo produto ele não passaria de graça para vocês, e por respeito ao XTIBIA eu quero que algum dos moderadores do Forum feche esse tópico, aguardo respostas privadas ou aqui mesmo!
     
    qualquer dúvida a respeito add: contato@otprojects.com.br será um prazer falar com vocês!
     
    Abraços!
  7. Upvote
    ADMJuan deu reputação a murilobtn em Website Para Tiba De Cliente   
    WEBSITE PARA CLIENTE



    Screens:



    http://imageshack.us...141/fotocr.png/

     

    Scan


    Dowload

     

    Se gostou de um REP + porfavor


     
    Espero que vôces gostem , principalmente a equipe Xtibia
  8. Upvote
    ADMJuan recebeu reputação de Gabriel Couto em [Gesior Acc] Os Itens Mais Populares Da Sms Shop!   
    Olá galera venho aqui trazer um tutorial, que achei simples e interessante. Bom vamos lá...
     
    O script não foi feio por mim, foi feito pelo Aleh, os créditos são todos dele. Como você pode ver na foto é um script que mostra os três itens mais populares na loja sms. Abrao seu shopsystem.php e encontrar
     

     
    PHP code:
    elseif ( $ buy_offer [ 'type' ] == 'item' ) {  
    e abaixo desse código:
     
    PHP code:
    $ SQL -> query ( $ save_transaction );  
    cola
     
    PHP code:
    $ Comprou = "UPDATE` z_shop_offer `SET` `= comprou comprou + 1 WHERE` id `= ' . $ buy_offer [ 'id' ]. ';' ; $ SQL -> query ( $ comprou );  
    Agora encontrar (~ linha 167)
     
    PHP code:
    unset ( $ _SESSION [ 'viewed_confirmation_page' ]); $ main_content .= '<h2> <center> Bem-vindo ao' . $ config [ 'server' ] [ 'servername' ]. ' Loja </ center> </ h2> '. ;  
    e cole este:
     
    PHP code:
    $ Query = $ SQL -> query ( "SELECT * FROM` WHERE `z_shop_offer offer_type` NOT LIKE 'container' AND ORDER offer_type `NOT LIKE 'changename' por 'comprou DESC LIMIT` 3 " ); foreach ( $ query como $ linhas ) { if ( is_int ( $ number_of_rows / 2 )) { $ bgcolor = $ config [ 'site' ] [ 'darkborder' ];} else { $ bgcolor = $ config [ 'site' ] [ 'lightborder' ]; } $ number_of_rows + +; $ resultado .= " <td bgcolor = ' . $ bgcolor . '> <center> <"img src = imagens / artigos / ' . $ linhas [ 'id' .] . "gif"> < br /> <br /> Nome Oferta: '<b> . $ linhas [ 'offer_name' ]. '</ b> <br /> Pontos: <b> ' . $ linhas [ 'pontos' ]. '</ b> <br /> <form action="index.php?subtopic=shopsystem&action=select_player" method=POST> <input type = nome "escondido" = "buy_id" value = "" . $ linhas [ 'id' ]. »"> <input type = "submit" value = "Comprar" . $ linhas [ 'offer_name' ]. '"> </ form> </ center> </ td> ' ; } [/font] [font=comic sans ms,cursive]main_content $ .= "borda da tabela < = \ "0 \" cellspacing = \ "1 \" cellpadding = \ "4 \" width = \ "100% \"> <tr bgcolor = " . $ config [ 'site' ] [ 'vdarkborder' ]. "> <td class=\"white\" colspan=\"3\"> <center> <strong> Os itens mais populares da SMS Shop! </ strong> </ center> </ td> </ tr> <tr bgcolor = " . $ config [ 'site' ] [ 'vdarkborder' ]. "> <td class=\"white\" width=\"33%\"> <b> <center> # 1 </ center> </ b> </ td> <td class=\"white\" width=\"33%\"> <b> <center> # 2 </ center> </ b> </ td> <td class = \ " branco \ "Largura = \" 33% \ "> <b> <center> # 3 </ center> </ b> </ td> </ tr>" . $ result . "</ table> <br /> " ;  
    e por fim adiciona essa consulta no banco de dados:
     
    PHP code:
    ALTER TABLE ` z_shop_offer ` ADD ` comprou ` INT ( 11 ) NOT NULL PADRÃO '0 ' ;  
    Se gostou dá REP+
     
    Créditos
    .:Aleh:.
  9. Upvote
    ADMJuan deu reputação a Bruno1994 em [Tibia] System Zumbi - Hard Corporation   
    <globalevent name="zombieevent" time="xxxxx" event="script" value="zombie.lua"/> Substituir por <globalevent name="zombieevent" interval="xxxxx" event="script" value="zombie.lua"/>
     
    Substitua tudo do ...globalevents\scripts\zombie event.lua
    por isso \/
     
     

    local config = { playerCount = 2001, -- Global storage for counting the players left/entered in the event zombieCount = 2002, -- Global storage for counting the zombies in the event teleportActionId = 2000, -- Action id of the teleport needed for the movement script teleportPosition = {x = 675, y = 600, z = 7, stackpos = 1}, -- Where the teleport will be created teleportToPosition = {x = 606, y = 687, z = 7}, -- Where the teleport will take you teleportId = 1387, -- Id of the teleport timeToStartEvent = 1, -- Minutes, after these minutes the teleport will be removed and the event will be declared started timeBetweenSpawns = 20, -- Seconds between each spawn of zombie zombieName = "event zombie", -- Name of the zombie that should be summoned playersNeededToStartEvent = 1, -- Players needed before the zombies can spawn. fromPosition = {x = 601, y = 682, z = 7}, -- top left cornor of the playground toPosition = {x = 611, y = 692, z = 7}, -- bottom right cornor of the playground } function onThink(interval, lastExecution, thinkInterval) local tp = doCreateTeleport(config.teleportId, config.teleportToPosition, config.teleportPosition) doItemSetAttribute(tp, "aid", config.teleportActionId) doBroadcastMessage("Zombie event starting in " .. config.timeToStartEvent .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING) setGlobalStorageValue(config.playerCount, 0) setGlobalStorageValue(config.zombieCount, 0) addEvent(startEvent, config.timeToStartEvent * 1000 * 60) print(getGlobalStorageValue(2001)) return true end function startEvent() local get = getThingfromPos(config.teleportPosition) if get.itemid == config.teleportId then doRemoveItem(get.uid, 1) end local fromp, top = config.fromPosition, config.toPosition if getGlobalStorageValue(config.playerCount) >= config.playersNeededToStartEvent then addEvent(spawnZombie, config.timeBetweenSpawns * 1000) doBroadcastMessage("Good luck in the zombie event people! The teleport has closed!", MESSAGE_STATUS_WARNING) for x = fromp.x, top.x do for y = fromp.y, top.y do for z = fromp.z, top.z do areapos = {x = x, y = y, z = z, stackpos = 253} getPlayers = getThingfromPos(areapos) if isPlayer(getPlayers.uid) then doPlayerSendTextMessage(getPlayers.uid, MESSAGE_EVENT_ADVANCE, "The first zombie will spawn in " .. config.timeBetweenSpawns .. " seconds! Good luck!") end end end end else doBroadcastMessage("The Zombie event could not start because of to few players participating.\n At least " .. config.playersNeededToStartEvent .. " players is needed!", MESSAGE_STATUS_WARNING) for x = fromp.x, top.x do for y = fromp.y, top.y do for z = fromp.z, top.z do areapos = {x = x, y = y, z = z, stackpos = 253} getPlayers = getThingfromPos(areapos) if isPlayer(getPlayers.uid) then doTeleportThing(getPlayers.uid, getTownTemplePosition(getPlayerTown(getPlayers.uid)), false) doSendMagicEffect(getPlayerPosition(getPlayers.uid), CONST_ME_TELEPORT) end end end end end end function spawnZombie() if getGlobalStorageValue(config.playerCount) >= 2 then pos = {x = math.random(config.fromPosition.x, config.toPosition.x), y = math.random(config.fromPosition.y, config.toPosition.y), z = math.random(config.fromPosition.z, config.toPosition.z)} doSummonCreature(config.zombieName, pos) doSendMagicEffect(pos, CONST_ME_MORTAREA) setGlobalStorageValue(config.zombieCount, getGlobalStorageValue(config.zombieCount)+1) doBroadcastMessage("A zombie has spawned! There is currently " .. getGlobalStorageValue(config.zombieCount) .. " zombies in the zombie event!", MESSAGE_STATUS_CONSOLE_RED) addEvent(spawnZombie, config.timeBetweenSpawns * 1000) end return TRUE end
     
    para corrigir o erro
     
    1/12/2011 19:47:00] > Broadcasted message: "Zombie event starting in 5 minutes! The teleport will be closed when the event start!".
    [11/12/2011 19:47:00] 0
    [11/12/2011 19:47:00] [Error - GlobalEvents::timer] Couldn't execute event: zombieevent
     
     
     
    Ajude REP++
  10. Upvote
    ADMJuan deu reputação a jhon992 em Como Aumentar O Attack Do Exori Con E Exori Hur?   
    vai nos scripts e troque isso:

    function onGetFormulaValues(cid, level, skill, attack, factor) return -(((skill + 25) / 3) + (level / 5)), -((skill + 25) + (level / 5)) end
     
    por isso:

    function onGetFormulaValues(cid, level, skill, attack, factor) return -(((skill + 25) / 3) + (level / 5)), -((skill + 100) + (level / 5)) end
     
    Ou seja, muda o segundo 25 por 100 ou + que vai ser a variação do attack. Acho que vai funcionar.
  11. Upvote
    ADMJuan deu reputação a dgprado em Como Corrigir Esse Erro No Gesior? Porque Não Está Aceitando Caracterios Especias..   
    Você está certo, este problema é por causa do banco de dados que não tem o idioma portugues instalado, eu, antes de rodas meu server em linux, convivia come ste problema, e nunca consehui arrumar, optei por ignorar acentos e usar c no lugar de ç. Menos mal perder alguns acentos do que ter meu banco de dados desconectado periodicamente.
  12. Upvote
    ADMJuan deu reputação a risada21 em [Tibia] System Zumbi - Hard Corporation   
    SCRIPT EVENTS ZUMBIE
    VERSAO: 8.60
    MAP: BAIAK YUROTS
    SCRIPT: ATUALIZADO
     
    Acesso Rapido:
    Quer conhecer Outros Conteudos da HARD?
    1- Praia? [Tibia] Scripts De Verao No Xtibia - Hard Corporation
    Tags: Praia, Deusa do Mar,Pacote Summer, Marinheiro, Montaria Maritima,Bar do Eks, Barril de Rum.
    116 visualizações.
    2 - [Tibia] Scripts De Natal No Xtibia - Hard Corporation
    Tags: Presentes de Natal, Enfeites, Carta, Duende Askasleikir,Montaria Natalina, Tarefas de Natal, Toca Natalina (Gorro), Esquilo da Neve, Fireworksrocket.
    446 visualizações.
    3 - [Tibia] System Zumbi - Hard Corporation
    Tag: Funcionamento 100% | 2405 visualizações.
    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    TOPICO VISUALIZADO PELO ADMINISTRADOR DA HARD: Dia 30/01/2012.
    LEIA O TOPICO COMPLETO, CASO NAO QUEIRA FECHE O NAVEGADOR E DESISTA, POIS NAO IRA CONSEGUIR.
     
    Algumas informações sobre o Script Abaixo primeiramente,
    Quando o evento está começando você terá certos minutos para Entrar no teleport antes que desapareça.
    Quando o teleport desaparece, acontece o zombie spawn após 20 segundos.
    Os Zombies irão aparecer 1 de cada vez, a cada 20 segundos.
    Os players que morrerem no evento, serão teleportados para o templo.
    O vencedor do evento, recebe algumas recompensas e um cale-se dourado com seu nome.
    Lembrando a area do evento DEVE SER NO-PVP PARA os PLAYERS NAO SE MATAREM.
     

    Usaremos como Referencia as Seguintes TAGS:
    Tags Disponiveis:
     
    # Como Colocar o Horario para Iniciar o Evento?
    # Configurando o Horario?
    # Adicionando corretamente no Arquivo Login?
    # Criando o Monster Zombie.
    # Download do Mapa?
     
    Como Usar:
    Basta COPIAR A TAG Desejada Apertar Crtl+F e Procura-la que encontra-la no Topico.
     
    GLOSARIO:
    *Evento = Sera o Nome do Script
    *Plataforma = Espaço do Quadrado de Nascimento dos ZOMBIE
     

     
    # Como Colocar o Horario para Iniciar o Evento?
     
    VERIFIQUE se seu otServer Possui a Maioria dos Scripts contendo esta particula:
    [ interval="1635" OU time="16:35" ] Isso Vai Determinar Qual Dos Scripts USAR:
     
    ABRA OTserv\data\globalevents\globalevents.XML Adicione Isto:
    Adicione [1] Apenas o Compativel com seu OTSERVER!
     
     
     
    Salve e Feche
     
    *Este Vai Ser o HORARIO que o Evento ira se Iniciar Sozinho TODO DIA 15:00 (Voce pode trocar).
     
    # Configurando o Horario?
    1000 Segundos = 16 minutos e 39,6 segundos
    1 hora = 3600 segundos
    Um dia tem 86.400 Segundos, que são equivalentes à 1440 Minutos ou 24 Horas.
    Uma semana tem 604.800 segundos, que são equivalentes à 10.080 Minutos ou 168 Horas.
    Um Mês tem 2 milhões e 592 mil segundos, que são equivalentes à 43.200 Minutos ou 720 Horas.
    Um ano tem 31 Milhões e 536 segundos, que são equivalentes à 525.600 Minutos ou 8.760 Horas.
    Fonte: froog.com.br - Tudo sobre o Tempo.
     

     
    Agora Vamos ao Arquivo:
    OTserv\data\Globalevents\scripts\ Crie o Arquivo zombie.lua
    Usar para as 2 Formas DE OTSERVER
    Usado Linguagem Portuguesa Para LOCAIS Que Queira EDITAR o Valor.
     
     
    Salve e Feche

    Configurando A Base do Script:
    O Arquivo SALVO ACIMA é Necessario para:
    1- o Evento Acontecer
    2- Os Zumbie Nascerem
    3- O Teleporte Ser Aberto e Fechado
    4- Contagem de Players.
    5- o Nome do Zombie, caso altere. MUDE AQUI TAMBEM
    6- QUANTIDADE DE PLAYERS NECESSARIO, Maior que 2.
    7- ID Do teleporte, ESPAçO DA PLATAFORMA.
    Caso ACONTECA ERROS NESTAS FUNCOES PEçA AJUDA E SAIBA ONDE CORRIGI-LAS.
     
    fromPosition = {x = 1186, y = 1072, z = 7}, -- possicao esquerda onde ira nascer os zumbi
    toPosition = {x = 1195, y = 1081, z = 7}, -- posicao direita onde ira nascer os zumbi
    O Local onde os Zombie irao Nascer deve Ser na area de Attack, ou seja, Se colocar no mar o Inicio da PLATAFORMA Os Zombie poderam nascer no MAR.
    Significa Como Apresentado na Imagem:
    VAMOS DIZER UM QUADRADO e os zumbie irao nascer SOMENTE dentro daquele LOCAL.
    01:DIREITA - PARTE DE CIMA
    02: ESQUERDA - PARTE DE BAIXO


    DESCONSIDERAR O TELEPORTE DA IMAGEM NUNCA COLOQUE TELEPORTE POIS IRA BUGAR O SCRIPT, NAO CONTANDO O PLAYER.

     
    A HARD NAO disponibiliza o MAP ou parte Deste conteudo para outro LOCAL. a Copia Parcial é CRIME e sera incarada como tal.
     

     
    Use o Createscripts para as 2 Formas de OTSERVER
    OTserv\data\creaturescripts\Creaturescripts.XML Adicione Isto:
     
     
     
    Salve e Feche
     

    Este arquivo ABAIXO é ESSENCIAL PARA O FUNCIONAMENTO DESTE:
    OTserv\data\creaturescripts\scripts\ Abra o Arquivo login.lua , Dentro Adicione:
     
     
    *Lembre-se de Adiciona-lo Na Linha ABAIXO dos outros, Sempre Com Paragrafos novos.
    Salve e Feche
     
    # Adicionando corretamente no Arquivo Login?
    Sempre por Paragrafos, LEMBRANDO que seu otserver Pode ser Por exemplo por Espaço, assim Tente configura-lo conforme ele se apresenta.
    registerCreatureEvent(cid, "XXXX")
    registerCreatureEvent(cid, "XXXXX")
    registerCreatureEvent(cid, "XXXX")
    registerCreatureEvent(cid, "zombieevent")
    registerCreatureEvent(cid, "XXXX")
     
    AINDA TAMBEM Alguns OTSERVERS Podem Possuir os Arquivos:
    Login.lua
    Login1.lua
    Login2.lua .....
    Saiba onde configurar. CORRETAMENTE.
     

    Vamos Agora Para o Arquivo:
    OTserv\data\creaturescripts\scripts\ Crie um Aquivo .LUA Chamado zombie.lua , Dentro Adicione:
     
     
     
    Salve e FECHE.
    * CONFIGURANDO CREATESCRIPTS:
    RECORDANDO:
    Caso Aconteca PROBLEMAS ou ERROS Neste Arquivo TEMOS:
    1- storage dos Players Registrados
    2- PLATAFORMA Do Local dos Zombie Irao Nascer, deve ser Igual ao do GlobalEvents.
    3- PREMIOS do Player Vencedor(a).
     

     
    Vamos Agora Para o Arquivo:
    OTserv\data\movements\movements.XML Adicione Isto:
     
     
    Salve e FECHE.
     
    ACTION 2000 Se Refere a Action do TELEPORTE, ou seja AQUELA QUE IRA CONTAR OS PLAYERS.
    ABAIXO voce Vai Enterder Um Problema que pode Acontecer com o SCRIPT, dependendo do Seu OTserver.
     

    PRESTE MUITA ATENçAO:
    PROCURE NA PASTA OTserv\data\actions\ actions.XML
    Tente Localizar algum Arquivo que possua a ACTION 2000 >>>Ctrl+F<<
    >>CASO NAO EXISTA PODE CONTINUAR O SCRIPT.. (Pule Esta Parte)
    >>CASO EXISTA TERA QUE MODIFICAR 2 COISAS NESTE SCRIPT:
    DELETE O ARQUIVO ACTIONS 2000 QUE VOCE ACHOU, na Maioria dos OTSERVER ele se chama Quest.lua ou Quests.lua
    Pois Este FARA INTERFERENCIA com o Script DO ZOMBIE.
    Quando e Como?
    Caso ele Esteja configurado como Disse no action 2000, é o ID de Quests, ou seja, ao passar por cima de um BAU Vai aparecer a MSG que o player entrou no Evento, sem ele Estar COMECANDO OU ACONTECENDO.
     
    ENTAO DELETE, e Adote outro MODELO ou Action para QUESTS.
     
    Salve e FECHE CASO TENHA MUDADO NO ACTIONS.
     

     
    PULE PARA Cá, CASO NAO EXISTA O PROBLEMA ACIMA.
     
    Vamos Agora Para o Arquivo:
    OTserv\data\movements\scripts\ Crie um Aquivo .LUA Chamado zombie.lua , Dentro Adicione:
     
     
     
    Salve e FECHE.
    CASO ACONTEçA PROBLEMAS OU ERROS, saiba o que este script CONTEM:
    1- conta o Numero de Player no evento
    2- conta o maximo de Players que poderam entrar no Evento.
     
     

     
    # Criando o Monster Zombie.
    Lembrando:
    Vamos Agora Para os ULTIMOS Arquivos:
    OTserv\data\monster\monsters.XML Adicione Isto:
     
     
     
    Salve e FECHE.
     
    Vamos Agora Para Arquivo do Monster:
    OTserv\data\monster\ Crie um Aquivo .XML Chamado event zombie , Dentro Adicione:
     
     
     
     
    Salve e FECHE.

     
    CONFIGURANDO MONSTER ZOMBIE:
    NAO MUDE O NOME .
    <flag attackable="0"> = NAO PODE ATACAR O MONSTER
    <immunity invisible="1"> = IMUNE A INVISIBLE E OUTROS PARA NAO ACONTECER DESVANTAGENS.
     

     
    # Download do Mapa?
    * O Mapa pode ser construido por Cada Usuario, Mas configurando as Plataformas, NAO ADIANTA FAZER O DOWNLOAD DO MAPA Pensando que a Plataforma é igual. NAO! é Necessario MUDA-LA pois OS IDs do chao de seu MAPA pode ser diferente.
    o Mapa nao é de Propriedade da Hard e Nao Foi Postado Por Esta para Download, pois Infringe Nossas Leis de Conduta.
    DOWNLOAD DO MAPA
     

     
    *a HARD apenas Disponibiliza o Conteudo para Acrescentar em seu OTserv, Retirar os Creditos do Desenvolvidor deste sera Encarado como Plagio a esta Obra.
     
    ENTENDENDO:

    *Esta Imagem Mostra que o Player Entrou Dentro do Evento.
    EU como (GOD) entrei 6 Vezes para Mostrar. MAS os Players Irao Entrar 1 VEZ SOMENTE e vai aparecer:
    PLAYER Entered the Zombie Event! Currently X Players have Joined!
    X: numero de players que estao no Evento
    PLAYER: Seu nome
    NAO DEIXE PORTAIS PARA VOLTA, POIS se o Player entrar novamente no Portal Sera Registrado como +1 e os Zumbie Irao nascer Para procurar este Player que (Nao existe , pois ele voltou e entrou novamente).

    Foi Adicionado ao Monster o Poder de Atacar Players INVISIBLE, Pois quando um Player ficava Invisivel Nao era Atacado.

     

    Este é o Exe do seu Otserver e as Msgs que aparecerao para Todos Players.
    EXEMPLO:
    * Este foi Retirado do script. DEVE SER ENCARADO COMO UM EXEMPLO APENAS POIS existem 2 maneiras diferentes.
    <globalevent name="zombieevent" interval="15000" event="script" value="zombie.lua">
    o Erro de Execuçao foi Arrumado.

    16:35: o Evento Foi aberto, o teleporte ira sumir em 5 minutos
    16:40:Aqui o Teleporte ja Fechou..
    16:40:E os Zumbie irao começar a nascer em 20 segundos.

    Mostra o Nome do Player que Foi Infectado e Foi para o Templo..
    LEMBRANDO O CORPO NAO SIGNIFICA QUE O PLAYER MORREU, POIS O LOCAL é NO-PVP
    16:44 Numero de Zumbies SUMONADOS ate o momento..
     

     
    Muito Obrigado por Adicionar este Evento em Seu OTserv e Torna-lo Famoso.
     
    DUVIDAS, PROBLEMAS, ERROS, ELOGIOS, RECLAMACOES E OUTROS COMENTE! e Obrigado
  13. Upvote
    ADMJuan deu reputação a dgprado em Estou Dando 100 Pontos No Meu Ot Para Quem Conseguir...   
    Simplismente seu server esta desconectando do banco de dados, portanto toda vez que algum player desloga todos os dados que deveriam ser salvos, não podem ser gravados, e da este erro, por padrão o xamp vem configurado para trabalhar com +- 100 conexoes simultaneas ao banco de dados, o que facilmente pode ser atingido com 30 ou 40 players, voce deve aumentar o numero de conexoes maximas permitidas, o melhor seria voce usar outro gerenciador mysql como o uniform server, eu tive muitos problemas com o xampp e já o considero obsoleto.
  14. Upvote
    ADMJuan deu reputação a yasha em Estou Dando 100 Pontos No Meu Ot Para Quem Conseguir...   
    adiciona isso na sua database
    ALTER TABLE `players` ADD `lookmount` int(11) NOT NULL DEFAULT '0';
    abre o phpmyadmin, seleciona sua database ai vai em SQL, cola esse código e clica em executar, acho que vai resolver o problema
  15. Upvote
    ADMJuan deu reputação a dreigon67 em [Dúvida] Como Faço Para Colocar O Conteiner No Gesior ?   
    container é tipo uma sacola q vem item dentro,tenta assim:
    points:quanto vai custar tudo
    containerid:id da sacola(backpack ou bag)
    count container: quantas sacolas vão ser
    itemid:id do item q tem dentro da sacola
    countitem:quantidade de itens q vem na sacola
    description e offer name vc deve saber
     
     
     
    (posta ai seu site q eu quero da uma olhada no seu serv )
  16. Upvote
    ADMJuan deu reputação a patrickjean em Tibia - 14 Anos De Mudanças!   
    Assistam agora, as mudanças que aconteçeram nas sprites do Tibia nesses 14 anos de Existencia:




    http://www.youtube.com/watch?v=XLHGrIQYHak

     

    Demorei pra axar ae vei, da REP ++ Por favor

  17. Upvote
    ADMJuan deu reputação a PauloBriiito em Como Bloquear O Acesso A Pasta Webdav Para Evitar Php Injection   
    Não é bloquear o acesso, basta excluir ela.
    Site do official do xampp tem varias soluções para o bug !
  18. Upvote
    ADMJuan recebeu reputação de risada21 em [Turital] Banner Para Gesior Account.   
    DevilMoon
     
     
    é sim na pasta htdocs,
    e
    SkyDangerous
     
     
    É sim um pop-up, mais o seu não é por iframe. ^^ o seu é só .js ^^ inclusive eu usei o pop-up no começo do meu ot serve kkkk
     
    Pra quem tem dúvida de como deixar em uma única página aqui vai!
     
    ensino mano. ^^ é só seguir o que tá em baixo:
     
    primeiro você vai em C:\xampp\htdocs dai se você quer colocar na página principal do seu OT, você abri o latestnews.php ai onde tem:
     

    <?PHP $time = time(); ///////////////////////////////////////////////////////////////////////////////////////// //The new edition of my script: Best Player, Last joined and something new Server Motd.// /////////////////////////Everything in the new appearance./////////////////////////////// //////////////////////////////////////by Aleh/////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// ///Queries ///
     
     
    você acrescenta antes de <?PHP:
    <div id="LayerPop" style="display:block; position:absolute; left:0px; top:0px; background-color:#1e1e22; width:100%; height:180%; z-index:100;margin:0px;opacity:0.75;"></div> <div id="LayerPop2" style="position: absolute; left: 330px; top: 80px; z-index: 5000;"><a href="?subtopic= "LINK PARA REDIRECIONAR" target="_BLANK"><img src="PASTA EM QUE SE ENCONTRA A IMG NO HTDOCS.TIPODAIMG" class="imgBorder"></a><br><a href="javascript:void();" onClick="document.getElementById('LayerPop').style.display = 'none';document.getElementById('LayerPop2').style.display = 'none'"> <b>Fechar</b></a></div>
     
    esse é o exemplo:
    <div id="LayerPop" style="display:block; position:absolute; left:0px; top:0px; background-color:#1e1e22; width:100%; height:180%; z-index:100;margin:0px;opacity:0.75;"></div> <div id="LayerPop2" style="position: absolute; left: 330px; top: 80px; z-index: 5000;"><a href="?subtopic= "LINK PARA REDIRECIONAR" target="_BLANK"><img src="PASTA EM QUE SE ENCONTRA A IMG NO HTDOCS.TIPODAIMG" class="imgBorder"></a><br><a href="javascript:void();" onClick="document.getElementById('LayerPop').style.display = 'none';document.getElementById('LayerPop2').style.display = 'none'"> <b>Fechar</b></a></div> <?PHP $time = time(); ///////////////////////////////////////////////////////////////////////////////////////// //The new edition of my script: Best Player, Last joined and something new Server Motd.// /////////////////////////Everything in the new appearance./////////////////////////////// //////////////////////////////////////by Aleh/////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// ///Queries //
  19. Upvote
    ADMJuan deu reputação a soulpop em [Gesior Acc] Guild War System Com Escudos   
    Cara Coisa simples.
    Pra voce Invitar ou Usar os Comandos , Tem que Ser no Chat da Guild , nao no Deafult. ^^
    __
     
    Ajudei ? Rep
  20. Upvote
    ADMJuan recebeu reputação de Trivelatos em [Turital] Banner Para Gesior Account.   
    Pessoal sem querer errei o Nome lá em cima: é TUTORIAL quem puder a jeitar fico grato! 1 tutor aki ^^

    Bom galera é seguinte, eu venho aqui mostrar como colocar esse banner aki:

     
    É bem simples e fácil. basta você adicionar o code que vou posta logo abaixo em C:\xampp\htdocs

    <div id="LayerPop" style="display:block; position:absolute; left:0px; top:0px; background-color:#1e1e22; width:100%; height:180%; z-index:100;margin:0px;opacity:0.75;"></div> <div id="LayerPop2" style="position: absolute; left: 330px; top: 80px; z-index: 5000;"><a href="?subtopic= "LINK PARA REDIRECIONAR" target="_BLANK"><img src="PASTA EM QUE SE ENCONTRA A IMG NO HTDOCS.TIPO .PNG ou .GIF" class="imgBorder"></a><br><a href="javascript:void();" onClick="document.getElementById('LayerPop').style.display = 'none';document.getElementById('LayerPop2').style.display = 'none'"> <b>Fechar</b></a></div>
    Já ia me esquecendo..
    onde tem:
    ?subtopic= "LINK PARA REDIRECIONAR" ~~> Bota o link onde quer ele seja redirecinado tipo: latestnews
    onde tem:
    <img src="PASTA EM QUE SE ENCONTRA A IMG NO HTDOCS.TIPO .PNG ou .GIF" ~~> você colocar onde está sua imagem do banner!
    Exemplo se você que apareça em
    latestnews.php é só você colocar o código acima dentro do latestnews.php.
     
    Obs: Você tem que colocar o código acima antes de
    <?php[/size] [size=2]/////[/size] [size=2]/////////[/size] [size=2]////// porque se você colocar dentro do php vai da um erro! blz?
     
    créditos:
    naneer
     
    SkyDangerous
     
    E embaixo tá o tutor do SkyDangerous também.
    http://www.xtibia.com/forum/topic/167629-pop-up-especial/
     
    é quase a mesma coisa só muda, porque esse a tela foca no banner. Abraços
    Tem mais gente, não lembro os nomes.
    Quando eu achar eu editor e o tópico.
     
    Se gostou da um ! Obrigado!
     
     
  21. Upvote
    ADMJuan recebeu reputação de Henrique Moura em [Duvida]Como É Isso De Mapas ?   
    Aqui no Xtibia.com tem uns tutor que voce pode aprender fácil, fácil ^^
  22. Upvote
    ADMJuan deu reputação a jajazinn em Ajudem Pliz Rep + Urgente   
    qual seu sitema operacional?
  23. Upvote
    ADMJuan deu reputação a naneer em Como Coloca Isso Aki?   
    Olá, tem um topico explicando isso porem eu não me lembro de quem era então creditos para ele!
     
    vou explicar
     
    Vá em seu xampp/htdocs/layouts/tibiacom > abre o layouts.php
     
    Embaixo disso :

    <body onBeforeUnLoad="SaveMenu();" onUnload="SaveMenu();">
     
    Cole isso :
     
     
    Em Verde vc poe aonde a img irá redirecionar ex: seusite.servegame.com/doacao
    Em Vermelho vc poe a pasta da img n precisa de htdocs somente /images/promocao.bmp
     
    Espero ter ajudado.
  24. Upvote
    ADMJuan recebeu reputação de Natanael Beckman em Dúvida: Como Tirar Esse Erro!   
    Warning: scandir(./signatures/) [function.scandir]: failed to open dir: No such file or directory in C:\xampp\htdocs\characters.php on line 147
     
    Warning: scandir() [function.scandir]: (errno 2): No such file or directory in C:\xampp\htdocs\characters.php on line 147
     
    Warning: Invalid argument supplied for fo
     
     
    como faço para tirar esse erro??
     
    o gesior tá o usando que aquele sistema de outift. Ajuda plix!
  25. Upvote
    ADMJuan deu reputação a Leoprotons 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
  • Quem Está Navegando   0 membros estão online

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