Ir para conteúdo
Close

REFORMULAMOS A SEÇÃO DE CLASSIFICADOS! - Crie grátis os seus anúncios de procura e oferta de serviços e produtos relacionados ao OTServ! - Acesse através do nosso menu ou clique aqui e confira já!

Matk

Administrador
  • Total de itens

    2.593
  • Registro em

  • Última visita

  • Dias Ganhos

    61

Tudo que Matk postou

  1. Mod_Evasive Falaa galerinha do TK, hoje eu vim aqui postar para você uma "ferramenta" do Apache que irá te ajudar um pouco na segurança da sua maquina Linux, portanto, lhe apresento o Mod_evasive! "Mod_evasive é um módulo de segurança do Apache que proporciona bloqueio de acessos em massa ou ataques de força bruta ao site. A intenção dele é bloquear e separar os acessos em massa a área, através de uma interface que guarda os acessos gerando uma blacklist dos acessos impedindo o acesso dos mesmos por um tempo configurável." Bom, vamos ao que interessa, vamos a instalação: (Execute os comandos na mesma sequencia que estão aqui) apt-get install apache2-utils cd /usr/src wget wget http://www.zdziarski.com/blog/wp-content/uploads/2010/02/mod_evasive_1.10.1.tar.gz tar xzf mod_evasive_1.10.1.tar.gz cd mod_evasive apxs2 -cia mod_evasive20.c Agora precisamos adicionar o mod_evasive nas configurações do Apache, vá até /etc/apache2/apache2.conf e adicione: # Include module configuration: Include mods-enabled/*.load Include mods-enabled/*.conf Ainda em apache2.conf, antes do trecho escrito "mod_evasive configuration" você adicionará: <IfModule mod_evasive20.c> DOSHashTableSize 3097 DOSPageCount 2 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 60 DOSEmailNotify alguem@aqui.com </IfModule> Pronto, agora basta reiniciar seu apache e tudo estará funcionando perfeitamente! /etc/init.d/apache2 restart OBS: Esse tutorial foi criado utilizando Debian/Ubuntu. Bom é isso, esse tutorial foi criado inteiramente por mim. Podem compartilhar a vontade desde que ponha os créditos para Matk. Espero que façam bom proveito, abração!
  2. Olá pessoal, muitas pessoas ficaram dependente da Vapus.net para criar o seu Client Próprio, só que o grande problema é que a Vapus parou de ser atualizada na versão do Tibia 9.81. Por isso hoje eu vou ensinar à vocês como criar o seu Client Próprio sem a necessidade de utilizar o Custom Client da Vapus. Passo 1: Você precisará criar dois IPs para o seu servidor, um com 17 letras e outro com 19 letras, exemplos: sv1.seuserver.com (17 letras) sv123.seuserver.com (19 letras) ou sv1.servegame.com (17 letras) sv123.servegame.com (19 letras) Passo 2: Agora você precisará baixar o Notepad++, após baixar-lo abra o Tibia.exe com o Notepad++. Passo 3: Quando o Tibia.exe estiver aberto no Notepad++ aperte Ctrl+F. Procure pelos seguintes IPs: login01.tibia.com login02.tibia.com login03.tibia.com login04.tibia.com login05.tibia.com Substitua todos pelo seu IP de 17 letras. Agora, procure pelos seguintes IPs: tibia01.cipsoft.com tibia02.cipsoft.com tibia03.cipsoft.com tibia04.cipsoft.com tibia05.cipsoft.com Substitua todos pelo seu IP de 19 letras. Procure por: 132127743205872284062295099082293384952776326496165507967876361843343953435544496682053323833394351797728954155097012103928360786959821132214473291575712138800495033169914814069637740318278150290733684032524174782740134357629699062987023311132821016569775488792221429527047321331896351555606801473202394175817 Substitua por: 109120132967399429278860960508995541528237502902798129123468757937266291492576446330739696001110603907230888610072655818825358503429057592827629436413108566029093628212635953836686562675849720620786279431090218017681061521755056710823876476444260558147179707119674283982419152118103759076030616683978566631413 Pronto, seu Client Próprio está pronto, simples não!? Agora você não necessita de IP Changer para entrar em seu OTServ. Créditos: Gesior.pl Você gostou deste conteúdo!? Este conteúdo te ajudou!? Isso será realmente útil pra você!? Então, se possível, faça uma doação (de qualquer valor) que estará me ajudando também!
  3. Matk

    Modern AAC

    O Mordern AAC é sem dúvidas um dos melhores sites para você usar em seu otserv. Por que usar o Modern AAC? Segurança Atualizações constantes Alto "poder" de extensão Várias Funções Desempenho Personalização Painel administrativo E muito mais... Change Logs: Download: https://github.com/Avuenja/ModernAAC Créditos: Modern AAC Team Luan Henrique Paxton Stian Chris Nostradamus ZNote TatuHunter Você gostou deste conteúdo!? Este conteúdo te ajudou!? Isso será realmente útil pra você!? Então, se possível, faça uma doação (de qualquer valor) que estará me ajudando também!
  4. Super tutorial de como criar seu OTServ!!! Criando OTServ, IP Fixo, SqliteStudio e colocando seu OTServ online! Fala galerinha, esse tutorial foi criado por mim há bastante tempo atrás e com certeza até hoje continua ajudando muitas pessoas a botarem seu servidor de Tibia online. Ah, vale lembrar, que este tutorial provavelmente não funcionará caso você possua Internet via Rádio ou Compartilhada. Enfim, vamos logo ao que importa! Configurando seu Servidor 1º - Antes de tudo você deverá fazer o download do Servidor que você irá usar para bota online, para fazer o download do seu servidor acesse a área de "Downloads de Servidores". Neste tutorial eu irei usar um servidor bem conhecido, o "TFS 0.3.6". 2º - Após você ter baixado o servidor que você pretende por online, a primeira coisa que você irá fazer é abrir o arquivo config.lua que se encontra dentro da pasta do servidor. Você poderá abrir ela com o Notepad++ (recomendado) ou simplesmente clicar com o botão direito e ir em "Edit with Notepad++": 3º - A config.lua serve para você fazer as configurações básicas do seu servidor, porém antes de mais nada você terá que configurar o seu IP na config.lua, para você achar o seu IP entre nesse site: o IP que você encontrar nele você irá colocar na sua config.lua: 4º - Após você ter configurado seu IP na config.lua, agora você precisará liberar as portas 7171 e 7172 no Firewall, mas lembre-se se sua internet for a radio ou compartilhada esse esquema não irá funcionar. Caso seu Firewall for o padrão do Windows, vá até "Iniciar -> Painel de Controles -> Firewall do Windows": 5º - Logo após, clique em "Configurações avançadas" no painel esquerdo da sua tela: 6º - Ok, depois de você abrir as Configurações avançadas do seu Firewall do Windows, você vai clicar no painel esquerdo em "Regras de Entrada" e logo após clique no painel direito em "Nova Regra...": 7º - Após clicar em "Nova Regra..." irá aparecer uma janela, agora basta você selecionar: Porta, TCP e adicionar a porta 7171 e 7172. (Siga as instruções da imagem abaixo!) 8º - Pronto seu servidor já está pronto para botar online mais antes precisamos de um IP Fixo! Criando um IP Fixo 1º - Para colocar IP Fixo é muito simples. Primeiramente você deverá criar uma conta no site do NO-IP, quando você estiver criando sua conta marque a opção: "Create my hostname later" para ficar mais fácil a configuração do seu IP Fixo posteriormente, confira a imagem abaixo: 2º - Após você ter feito seu cadastro no site do NO-IP, quando você estiver logado em sua conta você clicará em "Add a Host": 3º - Agora é a parte mais importante, depois de ter clicando em "Add a Host", você irá configurar seu IP Fixo, é super simples, confira na imagem a baixo: 4º - Pronto agora você poderá entrar em seu servidor pelo IP Changer com o seu IP Fixo, fácil né?! Usando o SqliteStudio 1º - O SqliteStudio tem a funcionalidade de editar as contas e os players, assim você poderá fazer até o seu GOD e GM, primeiramente você tem que fazer o download dele neste link. Após você baixar ele você irá abrir o programa e abrir a sua database que já vem com o OTServ. 2º - Depois de abrir ele, você irá na opção "Add Database" e vai adicionar o database do seu servidor, confira melhor na imagem: 3º - Após você ter aberto sua database, no painel esquerdo do SQLite você terá acesso a todas as tabelas da sua database e poderá editar varias coisas com por exemplo Players, Accounts, Bans, Guilds e etc.. 4º - Bom, para você editar o seu char para GOD, GM, etc.. Você terá que ir em "Players > Acess", agora basta editar da maneira que você preferir de acordo com os acessos abaixo: Colocando o seu OT Server Online 1º - Antes de colocar o seu servidor online sua config.lua tem que estar configurada certinho como eu ensinei no inicio do tutorial. Geralmente os servidores só veem com um executável (arquivo .exe), porém alguns veem com dois, ou seja, um para PC 32 bits e outros para PC 64 bits (no caso do meu), agora basta abrir o executável do seu servidor e pronto, tá online! 2º - Pronto seu servidor já está online com sucesso, agora para você entrar no seu servidor basta entrar pelo IP Changer com o seu IP Fixo ou o IP do MeuIP.com.br e seja feliz! Espero que esse tutorial ajude a muitos! Você gostou deste conteúdo!? Este conteúdo te ajudou!? Isso será realmente útil pra você!? Então, se possível, faça uma doação (de qualquer valor) que estará me ajudando também!
  5. Matk

    (Proteção) DDoS Deflate

    Olá pessoal, estou eu aqui mais uma vez para ajudar os Administradores de OTServs que sofrem com ataques ou algo do genero, hoje resolvi postar uma ferramenta muito útil que pode ser utilizada em qualquer plataforma Linux, o DDoS Daflate. O DDoS Deflate é um script em shell bash, leve, projetado para auxiliar no processo de bloquear ou minimizar um ataque de negação de serviço (packets excessivos). Ele utiliza um comando para criar uma lista de endereços IP conectados ao servidor, juntamente com o seu número total de conexões e faz uma analise das conexões suspeitas e bloqueiam elas por um certo tempo (configurável). Bom, vamos ao que interessa! A instalação do DDoS Daflate é muito simples, basta você executar o seguinte comando: wget http://www.tibiaking.com/scripts/ddos_deflate-0.7.tar.gz;tar xzf ddos_deflate-0.7.tar.gz;cd ddos_deflate-0.7;chmod 0700 install.sh;./install.sh Agora vamos editar as configurações para o script ficar mais funcional, também é super simples! Vá até /usr/local/ddos e abra o arquivo ddos.conf com seu editor de texto, e faça as seguintes mudanças: Nesta linha: NO_OF_CONNECTIONS=150 Substitua para: NO_OF_CONNECTIONS=200 Esta configuração é o numero máximo de conexões por IP. Se seu host estiver bloqueando IPs sem necessidade aumente esse numero, ou virse-versa. Nesta linha: APF_BAN=1 Substitua para: APF_BAN=0 Deixe 1 apenas se você utiliza o APF Firewall. Nesta linha: BAN_PERIOD=600 Substitua para: BAN_PERIOD=900 Aqui é o tempo em segundos que o IP ficará bloqueado, 900 = 15 minutos, aumente caso acho necessário! Pronto, agora salve o arquivo e atualize-o em seu host, o DDoS Daflate já está atuando em seu servidor! Algumas informações úteis para a utilização do DDoS Daflate: ► Utilize o comando abaixo para ver (de modo grosseiro) a quantidade de conexões vindo de cada IP: netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n ► O DDoS Deflate tem uma lista de IPs permitidos, que pode ser editada em /usr/local/ddos/ignore.ip.list. ► Você pode configurá-lo para enviar e-mail informando ao bloquear um IP. Agora o seu host está mais seguro! Tópico criado exclusivamente para o Tibia King! Créditos: Matheus Nightz Você gostou deste conteúdo!? Este conteúdo te ajudou!? Isso será realmente útil pra você!? Então, se possível, faça uma doação (de qualquer valor) que estará me ajudando também!
  6. Aqui está mais um vídeo tutorial feito por mim, aprenda a desbloquear as portas necessárias para você botar seu OTServ online, desta vez o vídeo ficou ótimo e com qualidade. Você gostou deste conteúdo!? Este conteúdo te ajudou!? Isso será realmente útil pra você!? Então, se possível, faça uma doação (de qualquer valor) que estará me ajudando também!
  7. Matk

    [phpMyAdmin] Comandos úteis!

    Este tutorial foi criado pelo: Henke Rula Tenho certeza que esse tutorial irá ajudar MUITA gente que usam o mysql como database de seu otserv. Remover Premium ACC de todos. Não funciona com VIP System . UPDATE account SET premdays=0; Dar 7 dias de Premium ACC a todos os players. Não funciona com VIP System. UPDATE accounts SET premdays = premdays + 7 Mardar todos os Players para o templo. UPDATE players SET posx = X, posy = Y, posz = Z; Colocar todo mundo como Grupo 1 = Player. UPDATE groups SET flags=0,name="Player" WHERE id=1; UPDATE players SET group_id=1; DELETE FROM groups WHERE id<>1; Criar Account Manager. (Original em forgottenserver.sql) INSERT INTO `players` VALUES (1, 'Account Manager', 1, 1, 1, 0, 150, 150, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 50, 50, 7, '', 400, 0, 0, 0, 0, 0, 0, 0, '', 0, 0, 0, 0, 10, 10, 10, 0, 0); Remover Red Skull e frags de todos. UPDATE `players` SET `redskulltime`=0; Dar Todas as Blesses aos players. UPDATE `players` SET `blessings`=31; Remover um item especifico (exemplo id 2160) completamente do jogo (depot, players, houses). Ótimo para casos de cloners. DELETE FROM player_depotitems, player_items, tile_items WHERE itemtype = 2160; Deletar players inativos, level baiaxo de 50, 20 days Inativo. Recomendo um backup do seu banco de dados antes desta ação. DELETE FROM players WHERE level < 50 AND lastlogin < UNIX_TIMESTAMP() - 20*24*60*60 Deletou um player do banco de dados? Com este código irá remover todos os items dele que ficaram no database. DELETE FROM player_items WHERE player_id NOT IN (SELECT id FROM players); Deletar todos os itens de um único player .Onde 1234 é o ID do player. DELETE FROM `player_depotitems` , `player_items` WHERE `player_id` = '1234' Trocar o outfit de todos os players. UPDATE players SET lookbody =69, lookfeet =95, lookhead =115, looktype =128 Remover as casas de players que foram deletados. UPDATE `houses` SET `owner` = '0' WHERE `houses`.`owner` NOT IN ( SELECT `players`.`id` FROM `players` WHERE `players`.`id` = `houses`.`owner` ); Deletar um Storage de todos os players. Ótimo em caso de bugs de Quest. DELETE FROM `player_storage` WHERE `key` = '11551'; E o Global Storage Também. DELETE FROM `global_storage` WHERE `key` = '11551'; Deletar players que nunca logaram. DELETE FROM `players` WHERE `lastlogin`=0; Espero que esse tutorial ajude a muitos! Você gostou deste conteúdo!? Este conteúdo te ajudou!? Isso será realmente útil pra você!? Então, se possível, faça uma doação (de qualquer valor) que estará me ajudando também!
  8. Matk

    Notícia 7 fucking anos de Tibia King!

    PUTA MERDA! Já fazem 7 fucking anos que existe isso aqui! Sim galera, não estou brincando, para ser um pouco mais preciso o Tibia King existe faz 365 semanas, 2.558 mil dias, 61.392 mil horas e 3.683.520 milhões de minutos e para falar a verdade, as vezes eu nem acredito que estamos há tanto tempo online e que hoje em dia somos uma referencia neste universo de Tibia e OTServ. Apesar dos pesares, nosso saldo é positivo e nesses últimos 7 anos, graças a muita dedicação e esforço nós conquistamos muita coisa, hoje somos o maior (em relação a acessos e conteúdo) fórum brasileiro neste ramo, ultrapassamos outras comunidades que simplesmente possuem praticamente o dobro da nossa idade, isso graças aos nossos membros que sempre foram incríveis e claro, a uma gestão competente como sempre foi a Equipe Tibia King. Nestes 7 anos nosso fórum com certeza ajuda centenas de pessoas diariamente com seus projetos e isso que faz essa comunidade ser maravilhosa, pois aqui conheci amigos que levarei para a minha vida. Estou muito feliz pelo nosso aniversário e pode ter certeza que teremos ainda muitos anos pela frente! Nós fazemos aniversário, mas quem ganha o presente é você!!! Aguarde que ainda esta semana lançaremos um evento aqui no Tibia King que dará um prêmio incrível ao vencedor, fiquem ligados! Atenciosamente, Equipe Tibia King.
  9. VIP System by Mock 100% Fala galerinha do TK, então, há muito tempo atrás lá para meados de 2010 eu e alguns amigos pegamos um sistema de VIP inacabado pelo tão famoso scripter Mock e finalizamos ele deixando-o perfeito para uso, enfim, eu não achei esse script aqui no fórum e resolvi compartilhar com vocês, espero que gostem, confiram: 1° - Acesse a pasta data/lib e crie um arquivo chamado 049-vipsys.lua, coloque isso dentro do arquivo: vip = { name = "VIP System"; author = "Mock"; version = "1.0.0.0"; query="ALTER TABLE `accounts` ADD `vip_time` INTEGER"; query2="ALTER TABLE `accounts` ADD `vip_time` INT(15) NOT NULL" } function vip.setTable() dofile('config.lua') if sqlType == "sqlite" then db.executeQuery(vip.query) else db.executeQuery(vip.query2) end end function vip.getVip(cid) assert(tonumber(cid),'Parameter must be a number') if isPlayer(cid) == FALSE then error('Player don\'t find') end; ae = db.getResult("SELECT `vip_time` FROM `accounts` WHERE `name` = '"..getPlayerAccount(cid).."';") if ae:getID() == -1 then return 0 end local retee = ae:getDataInt("vip_time") or 0 ae:free() return retee end function vip.getVipByAcc(acc) assert(acc,'Account is nil') local a = db.getResult("SELECT `vip_time` FROM `accounts` WHERE `name` = '"..acc.."';") if a:getID() ~= -1 then return a:getDataInt("vip_time") or 0, a:free() else error('Account don\'t find.') end end function vip.setVip(cid,time) dofile("config.lua") assert(tonumber(cid),'Parameter must be a number') assert(tonumber(time),'Parameter must be a number') if isPlayer(cid) == FALSE then error('Player don\'t find') end; db.executeQuery("UPDATE `"..sqlDatabase.."`.`accounts` SET `vip_time` = '"..(os.time()+time).."' WHERE `accounts`.`name` ='".. getPlayerAccount(cid).."';") end function vip.getVipByAccount(acc) assert(acc,'Account is nil') return db.getResult("SELECT `vip_time` FROM `accounts` WHERE `name` = '"..acc.."';"):getDataInt("vip_time") or 0 end function vip.hasVip(cid) assert(tonumber(cid),'Parameter must be a number') if isPlayer(cid) == FALSE then return end; local t = vip.getVip(cid) or 0 if os.time(day) < t then return TRUE else return FALSE end end function vip.hasVips(cid) assert(tonumber(cid),'Parameter must be a number') if isPlayer(cid) == FALSE then return end; local t = vip.getVip(cid) if os.time(day) < t then return TRUE else return FALSE end end function vip.accountHasVip(acc) assert(acc,'Account is nil') if os.time() < vip.getVipByAccount(acc) then return TRUE else return FALSE end end function vip.getDays(days) return (3600 * 24 * days) end function vip.addVipByAccount(acc,time) assert(acc,'Account is nil') assert(tonumber(time),'Parameter must be a number') local a = vip.getVipByAcc(acc) a = os.difftime(a,os.time()) if a < 0 then a = 0 end; a = a+time return vip.setVipByAccount(acc,a) end function vip.setVipByAccount(acc,time) dofile("config.lua") assert(acc,'Account is nil') assert(tonumber(time),'Parameter must be a number') db.executeQuery("UPDATE `accounts` SET `vip_time` = '"..(os.time()+time).."' WHERE `accounts`.`name` ='"..acc.."';") return TRUE end function vip.returnVipString(cid) assert(tonumber(cid),'Parameter must be a number') if isPlayer(cid) == TRUE then return os.date("%d %B %Y %X ", vip.getVip(cid)) end end 2° - Abra a pasta data/creaturescrpits/scripts e crie um arquivo chamado fimvip.lua, dentro dele adicione: By Lukeskywalker function onLogin(cid) local temple = { x =32369, y = 32246, z = 6} if vip.hasVip(cid) == true then if getPlayerStorageValue(cid,55555) ~= 1 then setPlayerStorageValue(cid,55555,1) end else if getPlayerStorageValue(cid,55555) == 1 then doTeleportThing(cid, temple) doPlayerSendTextMessage(cid, 22, "Your VIP Time over!") db.executeQuery("UPDATE `accounts` SET `vip_time` = 0 WHERE `id` = ".. getAccountIdByName(getPlayerName(cid)) ..";") setPlayerPromotionLevel(cid, 1) setPlayerStorageValue(cid, 55555, 0) end end return true end Você pode troca as coordenadas do templo: local temple = {x=32369, y=32246, z=6}. 3° - Em data/creaturescripts/scripts/login.lua adicione essas tags: registerCreatureEvent(cid, "FimVip") registerCreatureEvent(cid, "VipReceive") 4° - Em data/creaturescripts/creaturescripts.xml adicione está tag: <event type="login" name="FimVip" event="script" value="fimvip.lua"/> 5º - Em data\movements\scripts e crie um arquivo chamado viptile.lua e adicione isso dentro dele: function onStepIn(cid, item, position, fromPosition) local tileConfig = { kickPos = fromPosition, kickEffect = CONST_ME_POFF, kickMsg = "You need to be a vip player to access this area.", enterMsg = "Welcome to vip area!", enterEffect = CONST_ME_MAGIC_RED, } if isPlayer(cid) == true then if vip.hasVip(cid) == FALSE then doTeleportThing(cid, tileConfig.kickPos) doSendMagicEffect(tileConfig.kickPos, tileConfig.kickEffect) doPlayerSendCancel(cid, tileConfig.kickMsg) return end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, tileConfig.enterMsg) doSendMagicEffect(position, tileConfig.enterEffect) return true end end 6° - Em data\movements\movements.xml adicione a tag: <movevent type="StepIn" actionid="13500" event="script" value="viptile.lua"/> Vejam a numeração 13500 você irá usar no tile que você quer para a passagem de player VIP para configurar adicione a numeração em ActionID do tile. 7° - Em data/talkactions/scripts acrescente dentro da pasta scripts uma outra pasta com o nome VIP vamos precisar de 7 arquivos.lua que teram os nomes e códigos a seguir: add.lua function onSay(cid, words, param, channel) doPlayerSendCancel(cid, "Added "..param.." Vip Days.") return doPlayerAddVipDays(cid, param) end addvipp.lua function onSay(cid, words, param) if param == "" then return doPlayerPopupFYI(cid,"Está com problemas?\nAprenda os comandos!\n---------------\nAdicionar vip:\n/vip add days player\n/vip add 30 Real\n---------------\nDeletar vip:\n/vip del player\n/vip del Real\n---------------\nVer a vip:\n/vip see player\n/vip see Real\n---------------\n") end if param:lower():find('add') == 1 and 3 then local _,_,id,name = param:lower():find('add (%d+) (.+)') name = name or "" id = tonumber(id or 1) or 1 if tonumber(id) == nil or getPlayerByName(name) == false then return doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Adicionar vip:\n/vip add days player\n/vip add 30 Real\n [Player: "..name.."]") end if isPlayer(getPlayerByName(name)) == TRUE then vip.addVipByAccount(getPlayerAccount(getPlayerByName(name)) ,vip.getDays(id)) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,"Foram adicionados "..tonumber(id).." dias de vip a "..name..".") doPlayerSendTextMessage(getPlayerByName(name),MESSAGE_INFO_DESCR,"Você recebeu "..tonumber(id).." dias de vip.") else doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,name.." não esta online ou não existe.") end elseif param:lower():find('del') == 1 and 3 then local _,_,name = param:lower():find('del (.+)') if getPlayerByName(name) == false then return doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Deletar vip:\n/vip del player\n/vip del Real\n") end vip.setVipByAccount(getPlayerAccount(getPlayerByName(name)),-os.time()) doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"A vip de "..name.." foi apagada.") elseif param:lower():find('see') == 1 and 3 then local _,_,name = param:lower():find('see (.+)') name = name or "" if getPlayerByName(name) == false then return doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Ver a vip:\n/vip see player\n/vip see Real\n") end local ret_ = vip.getVip(getPlayerByName(name)) if ret_ == 0 then return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,name.." Não tem vip, e nunca teve.") else return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "A vip de "..name.." Acaba/terminou em "..os.date("%d %B %Y %X ",ret_)) end end return TRUE end get.lua function onSay(cid, words, param, channel) doPlayerSendCancel(cid, ""..getPlayerVipDays(cid).." days VIP left.") end is.lua function onSay(cid, words, param, channel) if isPlayerVip(cid) == TRUE then doPlayerSendCancel(cid, "You are a VIP player.") else doPlayerSendCancel(cid, "You are not a VIP player.") end end removevip.lua function onSay(cid, words, param, channel) doPlayerSendCancel(cid, "Vip removed.") return doPlayerRemoveVip(cid) end set.lua function onSay(cid, words, param, channel) doPlayerSendCancel(cid, "VIP Days: "..param..".") return setPlayerVipDays(cid, param) end vipdays.lua function onSay(cid, words, param) if vip.hasVip(cid) == TRUE then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your vip end in "..os.date("%d %B %Y %X ",vip.getVip(cid))) else if vip.getVip(cid) ~= 0 then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You're not a vip player. Your vip has finished in "..os.date("%d %B %Y %X ", vip.getVip(cid)).." and now is "..os.date("%d %B %Y %X ", os.time())) else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You're not a vip player. You naver has a vip.") end end return TRUE end 8° - Em data/talkactions/talkactions.xml adicione está tag: <!-- VIP System --> <talkaction log="yes" words="/vip" access="5" event="script" value="VIP/addvipp.lua" /> <talkaction words="!vipdays" event="script" value="VIP/vipdays.lua" /> 9° - Para finalizar execute este comando na sua database: ALTER TABLE `accounts` ADD `vip_time` INT NOT NULL; Bom galera este sistema vip adiciona os dias corretos e ao termino do VIP o player recebe a mensagem que a VIP acabou e é teletransportado para o templo. Créditos: Mock (por ter iniciado algo e não terminou) Lukeskywalker (Sistema de finalização perfeito do vip) Matheus [Eu] (Por ter feito várias alterações nas talkacions) Natan Beckman (Por ter ido atrás da conclusão 100% in game e php) Você gostou deste conteúdo!? Este conteúdo te ajudou!? Isso será realmente útil pra você!? Então, se possível, faça uma doação (de qualquer valor) que estará me ajudando também!
  10. [Atenção] Este tutorial é recomendado para que já sabe manusear um servidor Linux! Galerinha, eu sei que já existem diversos tópicos semelhantes à este aqui no TK, mas eu resolvi postar este tutorial pois eu deixarei aqui de forma simples e reduzia como você deve montar sua maquina Linux para deixar seu servidor online direitinho. Primeiramente você precisará baixar e instalar os seguintes programas: Putty e FileZilla. Utilize os dados abaixo para se conectar ao seu servidor Linux: INSTALAR APACHE, MYSQL E PHPMYADMIN Vamos configurar tudo para o site do seu OTServ. Se aparecer algo (Y or N?) digita Y e da enter. Espere sempre finalizar um processo para iniciar o outro. 1 - Acesse seu Putty e digite os seguintes comandos em sequencia: apt-get update apt-get upgrade apt-get install apache2 cd /var/www apt-get install php5 /etc/init.d/apache2 restart Pronto, você instalou o Apache2 e o php5 que serão necessários para deixar online o site do seu OTServ. 2 - Agora vamos instalar o MySQL em seu servidor Linux, digite os seguintes códigos em sequencia: Aqui você vai escolher uma senha para o MySQL. apt-get install mysql-server apt-get install libapache2-mod-auth-mysql apt-get install php5-mysql Pronto, você instalou o MySQL em seu servidor Linux, ele será necessário para o banco de dados do seu OTServ. 3 - Agora nós vamos instalar o phpMyAdmin, digite os seguintes códigos em sequencia: Aqui você vai escolher uma senha para o phpMyAdmin. (Senha que você usará no phpMyAdmin) apt-get install phpmyadmin Ubuntu: echo "include /etc/phpmyadmin/apache.conf" | sudo tee -a /etc/apache2/apache2.conf Debian: ln -fvs /etc/phpmyadmin/apache.conf /etc/apache2/conf.d/phpmyadmin.conf /etc/init.d/apache2 restart Pronto, você instalou o phpMyAdmin, ele irá servir para você administrar seu MySQL. Enfim, você instalou tudo necessário para deixar o site do seu OTServ online, confira o seu site em http://seuip e confira seu phpMyadmin em http://seuip/phpmyadmin (user:root/pass:suasenha). COMPILAR OTSERV LINUX (DEBIAN E UBUNTU) Lembre-se, eu ensinarei você a compilar seu OTServ em Ubuntu e Debian. Se aparecer algo (Y or N?) digita Y e da enter. Espere sempre finalizar um processo para iniciar o outro. 1 - Acesse sua maquina e vá até a pasta /etc/apt, agora edite o arquivo sources.list adicionando a tag: Ubuntu: deb http://ubuntu.mirror.cambrium.nl/ubuntu/ lucid main Debian: deb http://ftp.de.debian.org/debian squeeze main Agora salve o arquivo sources.list atualizado na pasta /etc/apt. 2 - Agora acesse seu Putty e vamos iniciar a instalação das libs necessárias para rodar seu OTServ. Digite os comandos em sequencia: Ubuntu e Debian: apt-get update apt-get upgrade apt-get install libboost-all-dev apt-get install subversion autoconf build-essential pkg-config libboost-dev libgmp3-dev libxml2-dev liblua5.1-0-dev libmysqlclient-dev libcrypto++-dev ccache libboost-filesystem-dev libboost-regex-dev libboost-system-dev libboost-thread-dev screen libssl-dev apt-get install libcurl4-openssl-dev apt-get install screen Pronto, feito isso você terá tudo configurado para que você possa compilar e botar seu OTServ online. 3 - Agora nós vamos compilar o seu OTServ, mas para isso preciso que você utilize o FileZilla e bote a pasta do seu OTServ nomeada como "otserv" na pasta home, ou seja, /otserv e a deixe a pasta das suas sources dentro da pasta do seu otserv nomeada como "trunk", ou seja /otserv/trunk. Enfim, vamos compilar seu OTServ, digite os seguintes comandos em sequencia: cd /otserv chmod 777 -R trunk cd /otserv/trunk sh ./autogen.sh && ./configure --enable-server-diag --enable-mysql --enable-root-permission && make clean && make -j 2 Pronto, se não ocorrer nenhum erro de compilação em suas sources e tudo der certo você terá seu distro pronto para deixar o seu OTServ online em Linux! 4 - Agora vamos para a parte mais simples, vamos finalmente botar seu OTServ online, vá até a pasta /otserv/trunk e arraste o arquivo theforgottenserver para a pasta /otserv e digite os seguinte comando de permissão: cd /otserv && chmod 777 -R theforgottenserver Enfim, finalmente vamos botar o seu OTServ online, depois de você ter configurado sua config.lua e etc... Execute o comando: screen ./theforgottenserver Você pode fechar o Putty que o seu OTServ continuará online, caso queira ver os logs basta abrir o Putty e executar: screen -x Você pode fechar seu OTServ apertando Ctrl+C para fechar a screen ou executando o seguinte comando: killall -SIGQUIT theforgottenserver ou killall -3 theforgottenserver ALELUIA, TERMINAMOSS!!! Agora você tem o seu OTServ totalmente configurado em seu servidor Linux, bacana não!? Créditos: Matheus Natanael Beckman gpedro Weblara Você gostou deste conteúdo!? Este conteúdo te ajudou!? Isso será realmente útil pra você!? Então, se possível, faça uma doação (de qualquer valor) que estará me ajudando também!
  11. Boa tarde, nós já discutimos sobre este assunto através dos tickets de suporte, dos e-mails e da disputa no PayPal (que inclusive foi fechada de maneira favorável ao TK), desta maneira informo-lhe que mantemos nossa opinião. O Tibia King através do mercado apenas disponibilizava a plataforma para que desenvolvedores pudessem vender os seus produtos, somos apenas uma "ferramenta de troca" e você aceitou estes termos ao se cadastrar no fórum. Desta forma, você comprou um produto no mercado e realizou o download do mesmo, o dinheiro que você pagou foi transferido para o dono do produto e o Tibia King não tem nenhuma responsabilidade sobre o mesmo. Sendo assim, se você tem ou teve problemas com o produto adquirido, você deve procurar de forma unica e exclusiva o vendedor. Enfatizamos que você recebeu o produto conforme a descrição e então não podemos te auxiliar na disputa com o vendedor. Infelizmente não podemos fazer mais nada em relação à isto, caso você ainda se sinta lesado ou prejudicado você tem total liberdade para iniciar uma ação no judiciário. Sinta-se a vontade. Por fim, estarei fechando este tópico para evitar polêmicas desnecessárias, caso ainda queira entrar em contato conosco, estarei disponível via PM, ticket de suporte, e-mail ou discord.
  12. Dúvidas? Poste-as aqui! Você gostou deste conteúdo!? Este conteúdo te ajudou!? Isso será realmente útil pra você!? Então, se possível, faça uma doação (de qualquer valor) que estará me ajudando também!
  13. Muito legal o script, ajudará a muitos com certeza!
  14. https://steamcommunity.com/id/matheussesso/
  15. sdds sky, como tu tá? eu só jogo csgo
  16. Parabéns, seu tópico de conteúdo foi aprovado! Muito obrigado pela sua contribuição, nós do Tibia King agradecemos. Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP.
  17. Já entrei no servidor do Discord! Lá tem muita gente boa e bastante conteúdo bacana sobre pixelart, vale a pena conferir! 😋
  18. Bom, primeiramente eu gostaria de deixar claro que o sistema de prefixos não é uma regra fixa para todas as seções, partindo deste principio vamos a resposta: Sugestão geral sobre os prefixos - A cor amarelo claro foi alterado para laranja; Discussões - Os prefixos foram tornados obrigatórios nesta seção; Suporte - Tibia Clássico/ Derivados - Os prefixos nestas seção já são obrigatórios, tópicos sem prefixos são aqueles que foram movidos ou são antigos; Tutoriais Mapping - Esta seção não requer prefixos. Em relação a organização da seção, caso tenha sugestões para melhora-la peço que fale com o @tataboy67, ele é um ótimo mapper e com certeza saberá cuidar bem da seção; Download de Mapas Derivados - Os prefixos também foram tornados obrigatórios e organizamos a descrição da seção; Download de Mapas Comuns - Foram adicionado as tags na descrição desta seção (e de várias outras seções também) para que o usuário possa realizar a pesquisa de conteúdo. Obrigado pela sugestão; Concursos de Mapping - Não vejo necessidade da criação de prefixos para essa seção, de qualquer forma pode ser uma ideia a ser pensada. Utilitários - Esta também é uma seção que não requer prefixos. Em relação aos links quebrados, peço que sempre reporte o tópico para que a equipe remova-o, de qualquer forma eu já o retirei do destaque; Sprites - Obrigado pelas sugestões, estou com algumas ideias para esta seção, botaremos em prática nos próximos capítulos; Formação de Equipes - Não é necessário prefixos nesta seção. Em relação ao comércio, atualmente não é proibido este tipo de atuação na comunidade, apesar de recomendarmos os sistema de Classificados para estes atos; Divulgação de Servidores - Provavelmente muito em breve iremos reformular esta seção, haverá mudanças; Clubes da comunidade - Temos planos para o sistema de clubes, em breve traremos novidades à comunidade, aguarde. Agradeço pelo feedback, eu continuarei trabalhando para melhorar o Tibia King dia pós dia, pode ter certeza.
  19. Como sempre mapas lindos! Vale muito a pena para quem quer dar uma repaginada em seu servidor.
  20. Bom bom! Ficou bem mais detalhado as informações. Espero que continue a aperfeiçoar o código. Very good! Informations was much more detailed. I hope you continue to refine the code.
  21. @amora murder Cara antes de colocarmos essa nova skin no ar fizemos alguns testes e o resultado demonstrou um aumento na performance do site, portanto peço que verifique a versão do seu navegador e sua conexão de internet. De qualquer maneira você pode alterar para o tema antigo no rodapé da página, ele ficará disponível por período limitado.
  22. Matk

    Mapper King 2018

    Os dois mapas ficaram muito bem feitos, ambos capricharam e honram o tema, assim fica até complicado escolher somente um. Mas eu vou votar no mapa 02, pelo simples fato de me lembrar das minas de Kazz, me trouxe uma leve nostalgia.
  23. Fala galerinha do TK, hoje vim trazer um script muito interessante e que tenho certeza que será muito útil para vários que estão atrás de um sistema de pagamento automático. Então, eu corri atrás desse script durante muito tempo, encontrei vários porém nenhum funcionava, sofri bastante para conseguir achar e não achei, então tive que pegar um e editar-lo para que ele funcionasse. Vamos ao script! • Primeiramente vá em config/config.php e adicione isso dentro do arquivo: // PagSeguro automatico by Matheus e Victor for TibiaKing.com // Seu email cadastrado no PagSeguro $config['pagseguro']['email'] = 'SEU E-MAIL DO PAGSEGURO'; // Nome do produto $config['pagseguro']['produtoNome'] = 'Premium Points'; // Valor de cada ponto // Exemplo de valores: // 100 = R$ 1,00 // 250 = R$ 2,50 $config['pagseguro']['produtoValor'] = '100'; Atenção: Para pegar o seu token você precisará entrar nesse link logado em sua conta do PagSeguro, na URL de retorno selecione "Ativar" e bote a url http://seusiteaqui/retpagseguro.php agora clique em "Salvar". Agora um pouco mais embaixo tem o Token clique e "Gerar", pronto, o Token gerado você coloca na config.php! • Agora vá na pasta do seu site e crie um arquivo chamado retpagseguro.php com isto dentro: <?PHP $host = "localhost"; /* HOST */ $user = "root"; /* USER */ $passwd = ""; /* PASSWORD */ $db = ""; /* DB */ $retorno_token = ''; // Token gerado pelo PagSeguro ############################################################## # CONFIGURAÇÕES ############################################################## if (empty($_POST['Referencia'])) { header("Location http://pagseguro.com.br"); } list($accname, $world) = explode('-', $_POST['Referencia']); if ($world=='sv') { $retorno_host = "$host"; // Local da base de dados MySql $retorno_database = "$db"; // Nome da base de dados MySql $retorno_usuario = "$user"; // Usuario com acesso a base de dados MySql $retorno_senha = "$passwd"; // Senha de acesso a base de dados MySql } ############################################################### # NÃO ALTERE DESTA LINHA PARA BAIXOs# $lnk = mysql_connect("$host", "$user", "$passwd") or die ('Nao foi possível conectar ao MySql: ' . mysql_error()); mysql_select_db("$db", $lnk) or die ('Nao foi possível ao banco de dados selecionado no MySql: ' . mysql_error()); // Validando dados no PagSeguro $PagSeguro = 'Comando=validar'; $PagSeguro .= '&Token=' . $retorno_token; $Cabecalho = "Retorno PagSeguro"; foreach ($_POST as $key => $value) { $value = urlencode(stripslashes($value)); $PagSeguro .= "&$key=$value"; } if (function_exists('curl_exec')) { $curl = true; } elseif ( (PHP_VERSION >= 4.3) && ($fp = @fsockopen ('ssl://pagseguro.uol.com.br', 443, $errno, $errstr, 30)) ) { $fsocket = true; } elseif ($fp = @fsockopen('pagseguro.uol.com.br', 80, $errno, $errstr, 30)) { $fsocket = true; } if ($curl == true) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://pagseguro.uol.com.br/Security/NPI/Default.aspx'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $PagSeguro); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_URL, 'https://pagseguro.uol.com.br/Security/NPI/Default.aspx'); $resp = curl_exec($ch); curl_close($ch); $confirma = (strcmp ($resp, "VERIFICADO") == 0); } elseif ($fsocket == true) { $Cabecalho = "POST /Security/NPI/Default.aspx HTTP/1.0\r\n"; $Cabecalho .= "Content-Type: application/x-www-form-urlencoded\r\n"; $Cabecalho .= "Content-Length: " . strlen($PagSeguro) . "\r\n\r\n"; if ($fp || $errno>0) { fputs ($fp, $Cabecalho . $PagSeguro); $confirma = false; $resp = ''; while (!feof($fp)) { $res = @fgets ($fp, 1024); $resp .= $res; if (strcmp ($res, "VERIFICADO") == 0) { $confirma=true; break; } } fclose ($fp); } else { echo "$errstr ($errno)<br />\n"; } } if ($confirma) { ## Recebendo Dados ## $TransacaoID = $_POST['TransacaoID']; $VendedorEmail = $_POST['VendedorEmail']; $Referencia = $_POST['Referencia']; $TipoFrete = $_POST['TipoFrete']; $ValorFrete = $_POST['ValorFrete']; $Extras = $_POST['Extras']; $Anotacao = $_POST['Anotacao']; $TipoPagamento = $_POST['TipoPagamento']; $StatusTransacao = $_POST['StatusTransacao']; $CliNome = $_POST['CliNome']; $CliEmail = $_POST['CliEmail']; $CliEndereco = $_POST['CliEndereco']; $CliNumero = $_POST['CliNumero']; $CliComplemento = $_POST['CliComplemento']; $CliBairro = $_POST['CliBairro']; $CliCidade = $_POST['CliCidade']; $CliEstado = $_POST['CliEstado']; $CliCEP = $_POST['CliCEP']; $CliTelefone = $_POST['CliTelefone']; $NumItens = $_POST['ProdValor_1']; $ProdQuantidade_x = $POST['ProdQuantidade_1']; # GRAVA OS DADOS NO BANCO DE DADOS # mysql_query("INSERT into PagSeguroTransacoes SET TransacaoID='$TransacaoID', VendedorEmail='$VendedorEmail', Referencia='$Referencia', TipoFrete='$TipoFrete', ValorFrete='$ValorFrete', Extras='$Extras', Anotacao='$accname', TipoPagamento='$TipoPagamento', StatusTransacao='$StatusTransacao', CliNome='$CliNome', CliEmail='$CliEmail', CliEndereco='$CliEndereco', CliNumero='$CliNumero', CliComplemento='$CliComplemento', CliBairro='$CliBairro', CliCidade='$CliCidade', CliEstado='$CliEstado', CliCEP='$CliCEP', CliTelefone='$CliTelefone', NumItens='$NumItens', Data=now(), ProdQuantidade_x='$ProdQuantidade_x';"); if ($StatusTransacao == "Aprovado") { mysql_query("UPDATE accounts SET premium_points = premium_points + '$NumItens' WHERE name = '".htmlspecialchars($accname)."'"); mysql_query("UPDATE PagSeguroTransacoes SET StatusTransacao = 'Entregue' WHERE CONVERT( `PagSeguroTransacoes`.`TransacaoID` USING utf8 ) = '$TransacaoID' AND CONVERT( `PagSeguroTransacoes`.`StatusTransacao` USING utf8 ) = 'Aprovado' LIMIT 1 ;"); mysql_query('OPTIMIZE TABLE `pagsegurotransacoes`'); } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Donate Server</title> <style type="text/css"> body { font-family: Tahoma, Geneva, sans-serif; font-size: 16px; width: 900px; margin: 0px auto; margin-top: 30px; } b { font-size: 18px; font-weight: bold; } </style> </head> <body> <table width="100%" border="0" cellspacing="0" cellpadding="0" align="center"> <tr> <td width="11%" align="center" valign="middle"><img src="images/true.png" height="auto" width="64" /></td> <td width="89%"><p><b>S</b>ua compra está sendo processada por nossos sistemas de apuração, dentro de no máximo <u>1 hora seus pontos serão creditados</u>, caso o pagamento não for efetuado, ficará em aberto 1 ou mais pagamentos pendentes em sua conta. Caso você tenha mais de 3 pagamentos pendentes por falta de pagamento, sua conta será bloqueada temporariamente para efetuar pagamentos.</p></td> </tr> </table> <!--p><b>ID de Transação:</b> <?php echo $_POST['TransacaoID']; ?></p--> </body> </html> Faça as edições no retpagseguro.php com as informações da sua database no inicio do script • Pronto, agora de novo na pasta do seu site crie um arquivo chamado donate.php com isto dentro: <?php if(!$logged) if($action == "logout") $main_content .= '<div class="TableContainer" > <table class="Table1" cellpadding="0" cellspacing="0" > <div class="CaptionContainer" > <div class="CaptionInnerContainer" > <span class="CaptionEdgeLeftTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionBorderTop" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionVerticalLeft" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></span> <div class="Text" >Logout Successful</div> <span class="CaptionVerticalRight" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></span> <span class="CaptionBorderBottom" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionEdgeLeftBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> </div> </div> <tr> <td> <div class="InnerTableContainer" > <table style="width:100%;" ><tr><td>You have logged out of your '.$config['server']['serverName'].' account. In order to view your account you need to <a href="?subtopic=accountmanagement" >log in</a> again.</td></tr> </table> </div> </table></div></td></tr>'; else $main_content .= 'Please enter your account name and your password.<br/><a href="?subtopic=createaccount" >Create an account</a> if you do not have one yet.<br/><br/><form action="?subtopic=accountmanagement" method="post" ><div class="TableContainer" > <table class="Table1" cellpadding="0" cellspacing="0" > <div class="CaptionContainer" > <div class="CaptionInnerContainer" > <span class="CaptionEdgeLeftTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionBorderTop" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionVerticalLeft" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></span> <div class="Text" >Account Login</div> <span class="CaptionVerticalRight" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></span> <span class="CaptionBorderBottom" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionEdgeLeftBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> </div> </div> <tr> <td> <div class="InnerTableContainer" > <table style="width:100%;" ><tr><td class="LabelV" ><span >Account Name:</span></td><td style="width:100%;" ><input type="password" name="account_login" SIZE="10" maxlength="10" ></td></tr><tr><td class="LabelV" ><span >Password:</span></td><td><input type="password" name="password_login" size="30" maxlength="29" ></td></tr> </table> </div> </table></div></td></tr><br/><table width="100%" ><tr align="center" ><td><table border="0" cellspacing="0" cellpadding="0" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$layout_name.'/images/buttons/sbutton.gif)" ><div &#111;nmouseover="MouseOverBigButton(this);" &#111;nmouseout="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$layout_name.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Submit" alt="Submit" src="'.$layout_name.'/images/buttons/_sbutton_submit.gif" ></div></div></td><tr></form></table></td><td><table border="0" cellspacing="0" cellpadding="0" ><form action="?subtopic=lostaccount" method="post" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$layout_name.'/images/buttons/sbutton.gif)" ><div &#111;nmouseover="MouseOverBigButton(this);" &#111;nmouseout="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$layout_name.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Account lost?" alt="Account lost?" src="'.$layout_name.'/images/buttons/_sbutton_accountlost.gif" ></div></div></td></tr></form></table></td></tr></table>'; else { $main_content .= '<br><br><b>Valores:</b><br> 1 Point = R$ 1,00<br> 10 Points = R$ 10,00<br> 20 Points = R$ 20,00<br> E assim por diante...<br><br> '; $main_content .= ' <form target="pagseguro" method="post" action="https://pagseguro.uol.com.br/checkout/checkout.jhtml"> <input type="hidden" name="email_cobranca" value="'. $config['pagseguro']['email']. '"> <input type="hidden" name="tipo" value="CP"> <input type="hidden" name="moeda" value="BRL"> <input type="hidden" name="item_id_1" value="1"> <input type="hidden" name="item_descr_1" value="Pontos na account de nome: '.$account_logged->getCustomField("name").'"> <input type="hidden" name="item_valor_1" value="'. $config['pagseguro']['produtoValor'] .'"> <input type="hidden" name="item_frete_1" value="0"> <input type="hidden" name="item_peso_1" value="0"> <input type="hidden" name="ref_transacao" value="'.$account_logged->getCustomField("name").'"> <table border="0" cellpadding="4" cellspacing="1" width="100%" id="#estilo"><tbody> <tr bgcolor="#505050" class="white"> <th colspan="2"><strong>Escolha a quantidade de pontos que deseja comprar</strong></th> </tr> <tr> <td width="10%">Sua conta</td> <td><strong>'.$account_logged->getCustomField("name").'</strong></td> </tr> <tr> <td width="10%">Pontos</td> <td> <input name="item_quant_1" type="text" value="10" size="5" maxlength="5"> </td> </tr> <tr> <td colspan="2"> <input type="image" src="https://p.simg.uol.com.br/out/pagseguro/i/botoes/carrinhoproprio/btnFinalizar.jpg" name="submit" alt="Pague com PagSeguro - é rápido, grátis e seguro!" /> </td> </tr> </tbody></table></form> <b><span style="color:#ff0000;">OBS&sup1;:</span></b> Os pontos são entregues <b>automáticamente</b> logo após a <u>aprovação</u> do seu pagamento pelo PagSeguro, ou seja, pagou e foi aprovado pontos depositados. <?php } ?>'; } ?> • Ok, para finalizar o script vá até a database do seu OTServ no phpMyAdmin clique na aba "SQL" e execute as seguintes querys: CREATE TABLE IF NOT EXISTS `PagSeguroTransacoes` ( `TransacaoID` varchar(36) NOT NULL, `VendedorEmail` varchar(200) NOT NULL, `Referencia` varchar(200) DEFAULT NULL, `TipoFrete` char(2) DEFAULT NULL, `ValorFrete` decimal(10,2) DEFAULT NULL, `Extras` decimal(10,2) DEFAULT NULL, `Anotacao` text, `TipoPagamento` varchar(50) NOT NULL, `StatusTransacao` varchar(50) NOT NULL, `CliNome` varchar(200) NOT NULL, `CliEmail` varchar(200) NOT NULL, `CliEndereco` varchar(200) NOT NULL, `CliNumero` varchar(10) DEFAULT NULL, `CliComplemento` varchar(100) DEFAULT NULL, `CliBairro` varchar(100) NOT NULL, `CliCidade` varchar(100) NOT NULL, `CliEstado` char(2) NOT NULL, `CliCEP` varchar(9) NOT NULL, `CliTelefone` varchar(14) DEFAULT NULL, `NumItens` int(11) NOT NULL, `Data` datetime NOT NULL, `ProdQuantidade_x` int(5) NOT NULL, `status` tinyint(1) unsigned NOT NULL DEFAULT '0', UNIQUE KEY `TransacaoID` (`TransacaoID`,`StatusTransacao`), KEY `Referencia` (`Referencia`), KEY `status` (`status`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; Prontinho galera, é isso ai, script finalizado... Agora você tem um script de entrega automática de points! Créditos: - Matheus (EU) - Victor Fasano Raful - Tatu Hunter Você gostou deste conteúdo!? Este conteúdo te ajudou!? Isso será realmente útil pra você!? Então, se possível, faça uma doação (de qualquer valor) que estará me ajudando também!
  24. Além das integrações com o Facebook, Google, Twitter, Microsoft e Steam, também adicionamos ao Tibia King o Discord! Agora você pode entrar ou pode até mesmo se cadastrar em nossa comunidade através da sua conta do Discord. :happy:

Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia partindo do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer publicidade para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução! A publicação do seu anuncio é instantânea!

×