Ir para conteúdo

Bruno Minervino

Membro
  • Registro em

  • Última visita

Tudo que Bruno Minervino postou

  1. Vlw man Meu caro, todos os links estão funcionando perfeitamente
  2. Fala galera, hoje eu vendo aqui trazer um tutorial muito útil para quem utiliza o Gesior 2012. Muitos servidores brasileiros estão com dificuldades no sistema de outfits, items e country flags quando estão apontados para o http://item-images.ots.me/. Solução: Você pode deixar esses sistemas em sua própria hospedagem. 1. Como configurar o gesior? - Abra o arquivo config/confg.php e edite as seguintes linhas: $config['site']['outfit_images_url'] = 'http://outfit-images.ots.me/outfit.php'; $config['site']['item_images_url'] = 'http://item-images.ots.me/960/'; $config['site']['item_images_extension'] = '.gif'; $config['site']['flag_images_url'] = 'http://flag-images.ots.me/'; $config['site']['flag_images_extension'] = '.png'; 2. Onde posso obter as imagens dos items?Faça o download da versão correspondente ao seu servidor e extraia o arquivo.zip em sua hospedagem. - Imagem dos Items 8.60 Download: http://item-images.ots.me/items_images_860.zip Mirror: https://mega.co.nz/#!81RGWZSK!p1UkoABfmuiOBpCbFboKdJzumtJUbEtGPGoUbe562-8 9.60 Download: http://item-images.ots.me/items_images_960.zip Mirror: https://mega.co.nz/#!F4ZnzIhR!3tMeBKmeHPSFXYoc94jnKB-X6TpLGa3MSymzjF6iir8 10.30 Download: http://item-images.ots.me/items_images_1030.zip Mirror: https://mega.co.nz/#!40B1wDZB!3JGH4yXqyr2PxuFK0-btII6WD0HrOTlh0WqaVdlrXSI 10.76 Download: http://item-images.ots.me/items_images_1076.zip Mirror: https://mega.co.nz/#!xx5XwIzY!Lc9UqIhz73RbcKieiwAaihHZGWu8eaps5EhJfWbcnsQ - Imagem das Flags Download: http://flag-images.ots.me/flag-images.zip Mirror: https://mega.co.nz/#!Y4JAFBJB!Njot6VnJ_SZtfCyOucx6DrL3oIP4cnOdTbcHlZOGECE - Outfit images generator (requer o módulo GD2 ativo no PHP para gerar as imagens) 9.60 (animação + php script) Download: http://outfit-images.ots.me/outfit-images_960.zip Mirror: https://mega.co.nz/#!MhZGwQhS!08ucrrW1un35TnrZrfbl9_JFBU9Rd72Sv_Kq8DD8shw 10.76 (sem animação + php script) Download: http://outfit-images.ots.me/outfit-images.zip Mirror: https://mega.co.nz/#!skInDS4Y!Hj-KO82x875NxeamYj6rWR6WjF4fwoEZI1Zq1onRmb4 10.76 (animação + php script) Download: https://mega.co.nz/#!NwY3wbgD!pahoOkCksYgbf8_v4Q3DchNAnqjMjOp-e-Gqg-JHWxs 3. O registro das accounts está demorando e todos os players estão com o flag 'unknown'? Faça o download do country-flags.zip e extraia na pasta cache/flags. Download: http://country-flags.ots.me/country-flags.zip Mirror: https://mega.co.nz/#!8hxDGRKb!24HkxX4OYokZuxZbRnIWE_Vyqa-drLKydmPeX14i0SE Bom galera, espero ter ajudado. Qualquer dúvida só postar que estou disponível para suporte. Créditos: - Gesior.pl
  3. Foi como eu te expliquei, você tem que estar usando o sistema Vip que eu usei como exemplo para funcionar, caso seja outro, me passe qual.
  4. Nubisse minha, perdão, é o costume de mexer com C#, PHP acabei fazer o ternário da mesma forma kkkk Corrigido. OBS: Você usa este sistema de VIP? Caso não usar, passa qual é o seu.
  5. @Tuka, function onSay(cid, words, param) local level = getPlayerLevel(cid) local vocation = getPlayerVocationName(cid) local status = (vip.hasVip(cid) == FALSE) and "Free Account" or "VIP Acccount" local health, maxhealth = getCreatureHealth(cid), getCreatureMaxHealth(cid) local mana, maxmana = getCreatureMana(cid), getCreatureMaxMana(cid) local fist, club, sword, axe = getPlayerSkillLevel(cid, 0), getPlayerSkillLevel(cid, 1), getPlayerSkillLevel(cid, 2), getPlayerSkillLevel(cid, 3) local distance, shield, fishing, magic = getPlayerSkillLevel(cid, 4), getPlayerSkillLevel(cid, 5), getPlayerSkillLevel(cid, 6), getPlayerMagLevel(cid) local cap = getPlayerFreeCap(cid) local function getResets(cid) resets = getPlayerStorageValue(cid, 2310) if resets < 0 then resets = 0 end return resets end local time = os.time() local times = {today = (time - 86400), week = (time - (7 * 86400))} local contents, result = {day = {}, week = {}, month = {}}, db.getResult("SELECT `pd`.`date`, `pd`.`level`, `p`.`name` FROM `player_killers` pk LEFT JOIN `killers` k ON `pk`.`kill_id` = `k`.`id` LEFT JOIN `player_deaths` pd ON `k`.`death_id` = `pd`.`id` LEFT JOIN `players` p ON `pd`.`player_id` = `p`.`id` WHERE `pk`.`player_id` = " .. getPlayerGUID(cid) .. " AND `k`.`unjustified` = 1 AND `pd`.`date` >= " .. (time - (30 * 86400)) .. " ORDER BY `pd`.`date` DESC") if(result:getID() ~= -1) then repeat if(content.date > times.today) then table.insert(contents.day, content) elseif(content.date > times.week) then table.insert(contents.week, content) else table.insert(contents.month, content) end until not result:next() result:free() end local total = { day = table.maxn(contents.day), week = table.maxn(contents.week), month = table.maxn(contents.month) } local text = "Vocation: "..vocation.."\nLevel: ".. level .."\nHP: ".. health .."/".. maxhealth .."\nMP: ".. mana .."/".. maxmana .."\nReset(s): "..getResets(cid).."\nCapacity: ".. cap .."\nAccount Status: ".. status .."\n\nMagic Level: ".. magic .."\n\nFist: ".. fist .."\nClub: ".. club .."\nSword: ".. sword .."\nAxe: ".. axe .."\nDistance: ".. distance .."\nShield: ".. shield .."\nFishing: ".. fishing .."\n\nFrags\nToday: " .. total.day .. "\nThis week: " .. total.week .. " This month: " .. total.month .."" doShowTextDialog(cid, 5808, text) return true end Usei como exemplo deste sistema VIP: http://www.tibiaking.com/forum/topic/20589-vip-system-by-mock-100/
  6. Teste assim: CREATE TABLE IF NOT EXISTS `server_config` ( `config` varchar(50) NOT NULL, `value` varchar(256) NOT NULL DEFAULT '', PRIMARY KEY `config` (`config`) ) ENGINE=InnoDB; E depois execute esse: INSERT INTO `server_config` (`config`, `value`) VALUES ('db_version', '18'), ('motd_hash', ''), ('motd_num', '0'), ('players_record', '0');
  7. @xWhiteWolf, Eu tinha visto isso, primeiro coloquei a versão funcionando para ele ver o resultado... Depois ensinei ele a pegar a versão do servidor dele pra ver qual a função correta que pega o valor do Health... @Rikikajimo, Uma forma mais fácil, você baixou esse servidor aqui no TK ? Se sim, aponte-nos o tópico. Abraço!
  8. Bruno Minervino postou uma resposta no tópico em Suporte Tibia OTServer
    Me desculpe, mais não é baseando-se apenas na memória do host que você define quantos players ele suporta. Processamento e Link também contam.
  9. Cara, acabei de chegar em casa e testei: data/talkactions/talkactions.xml <talkaction words="!status" event="script" value="status.lua"/> data/talkactions/scripts/status.lua function onSay(cid, words, param) local level = getPlayerLevel(cid) local voc = getPlayerVocationName(cid) local health, healthmax = getCreatureHealth(cid), getCreatureMaxHealth(cid) local mana, manamax = getCreatureMana(cid), getCreatureMaxMana(cid) local fist, club, sword, axe, distance, shield, fishing, mlvl = getPlayerSkillLevel(cid, 0), getPlayerSkillLevel(cid, 1), getPlayerSkillLevel(cid, 2), getPlayerSkillLevel(cid, 3), getPlayerSkillLevel(cid, 4), getPlayerSkillLevel(cid, 5), getPlayerSkillLevel(cid, 6), getPlayerMagLevel(cid) local resets = getResets(cid) local result = "Level: "..level.."\nResets: "..resets.."\nVocation: ".. voc .."\nHealth: ".. health .."/".. healthmax .."\nMana: ".. mana .."/".. manamax .."\n\nSkills:\nMagic: ".. mlvl .."\nFist: ".. fist .."\nClub: ".. club .."\nSword: ".. sword .."\nAxe: ".. axe .."\nDistance: ".. distance .."\nShielding: ".. shield .."\nFishing: ".. fishing.."" doPlayerPopupFYI(cid, result) return true end Resultado: Ache a versão do seu servidor: 1º: Vá até o executável que você usa para colocar o OT online 2º: Clique com o botão direito do mouse em cima do executável e vá na opção Propriedades 3º: Vá até a aba Detalhes e tira um print (foto) Exemplo:
  10. Bruno Minervino postou uma resposta no tópico em Suporte Tibia OTServer
    Qual sistema vip que você usa ?
  11. Peço desculpas, não estou por dentro de todas as funções atualizadas, já que em alguns casos as funções não fazem isso, apenas tentei ajudar Só uma pergunta, isso acontece em qualquer player, de qualquer vocação?
  12. Quando você abre o OT, verifica se no executável aparece algum erro sobre o script em questão. E por gentileza, informe qual a rev que você está usando que pode ser visualizada nas propriedades do executável.
  13. Verdade, porém, depois que eles começaram a vender outfits e mounts, dai em diante eu parei de jogar global, isso deu 100% a quem pensa que a cip só quer dinheiro e pouco se importa em melhorar a qualidade, não desmerecendo o jogo, pois é uma de minhas paixões, mas se eles não investirem em qualidade, logo logo eles vão anunciar a falência, baseando-se no que encontra-se no mercado hoje.
  14. Concordo com o Matheus, Por mais que seja uma coisa tão simples, isso vai além da simplicidade e entra na lógica, como você acerta um cara com uma espada que está atrás de você? kkkkk Acho que de tantas merdas que já implementaram no global, já deveriam ter colocado isso a muito tempo. Wolf, parabéns REP+
  15. doPlayerAddMagLevel(cid, getPlayerMagLevel(cid) + 1)
  16. Você pode criar uma categoria para montaria no shopsystem, modificando a tabela sql. E no script do globalevents, você pode fazer o tratamento variando de acordo com a categoria. Não há necessidade de ter um sistema exclusivo para isso, apenas modifique o que já existe. Caso não tenha conhecimento, ficarei feliz em ajudar quando estiver em casa, como estou no serviço agora, não tenho como fazer.
  17. Poste aqui seu shopsystem.php para que eu possa verificar se ele puxa a imagem pelo id do item ou pelo id da oferta.
  18. Isso pode ser feito de várias maneiras, mas acho isso desonroso e jamais ensinaria alguém. Minha dica para você amigo, é evitar de usar skype enquanto estiver jogando (ainda mais se os inimigos sabem seu skype). E caso seu ip for fixo, tente muda-lo, sei que na NET, você entrando em contato por telefone você consegue.
  19. Só umas dicas, que eu vi que estavam faltando. Dentro da array config, não tem a variável "premium", que está regrada nesta parte: elseif config.premium == true and not isPremium(cid) then linha 54 E também nessa parte: if os.time() - getPlayerStorageValue(cid, config.storage) >= config.tempo then doPlayerSetStorageValue(cid, config.storage, os.time()) else doPlayerSendCancel(cid, "{Teleport System} Você possui um teleport em andamento.") return TRUE end Neste caso, ele está usando a mesma storage do sistema vip, com certeza vai dar um conflito entre os sistemas. Procure adicionar uma outra storage só para esta condição. Espero ter ajudado.
  20. Eu tinha começado a fazer, ficou parecida, só muda algumas coisas, caso queira tentar: function onSay(cid, words, param) local level = getPlayerLevel(cid) local voc = getPlayerVocationName(cid) local health, healthmax = getCreatureHealth(cid), getCreatureMaxHealth(cid) local mana, manamax = getCreatureMana(cid), getCreatureMaxMana(cid) local fist, club, sword, axe, distance, shield, fishing, mlvl = getPlayerSkillLevel(cid, 0), getPlayerSkillLevel(cid, 1), getPlayerSkillLevel(cid, 2), getPlayerSkillLevel(cid, 3), getPlayerSkillLevel(cid, 4), getPlayerSkillLevel(cid, 5), getPlayerSkillLevel(cid, 6), getPlayerMagLevel(cid) local resets = getResets(cid) local result = "Level: "..level.."\nVocation: ".. voc .."\nHealth: ".. health .."/".. healthmax .."\nMana: ".. mana .."/".. manamax .."\nResets: "..resets.."\n\nOutros:\nMagic Level: ".. mlvl .."\n\nFist: ".. fist .."\nClub: ".. club .."\nSword: ".. sword .."\nAxe: ".. axe .."\nDistance: ".. distance .."\nShield: ".. shield .."\nFishing: ".. fishing.."" doPlayerPopupFYI(cid, result) return true end
  21. Coloca exatamente isso no install.txt "::1" Sem aspas! Tem esse também, para TFS-0.4_rev_3703+ https://github.com/gesior/Gesior2012/tree/TFS-0.4_rev_3703%2B
  22. Vou procurar algo relacionado, conforme for, crio um tutorial aqui.
  23. Fala Galera, Hoje eu venho trazer um tutorial a vocês de um Painel de Controle Online para gerenciamento de seu OT. Com este exemplo, creio que vai inspirar muita gente a criar novas ferramentas. Minha intenção era vincular ao Gesior, porém, deixo por conta da imaginação de vocês. Pré-requisitos: Liberar a função "shell_exec" no seu PHP. Instalar os comandos sudo e screen. Vamos Começar... Faça login no seu servidor com o root. Entre com o comando em negrito: pico /etc/init.d/theforgottenserver e adicione isso: #!/bin/sh # # Startup and signals management script for TheForgottenServer # case "$1" in start) echo -n "Starting theforgottenserver: " cd $2 && screen -AdmS ./theforgottenserver & echo "done." ;; stop) echo -n "Shutting down theforgottenserver: " killall -TERM theforgottenserver echo "done." ;; kill) echo -n "Killing theforgottenserver: " killall -KILL theforgottenserver echo "done." ;; quit) echo -n "Quitting theforgottenserver: " killall -QUIT theforgottenserver echo "done." ;; restart) $0 stop $0 start ;; reload) echo -n "Reloading theforgottenserver: " killall -CONT theforgottenserver echo "done." ;; save) echo -n "Saving theforgottenserver data: " killall -HUP theforgottenserver echo "done." ;; clean) echo -n "Cleaning theforgottenserver map: " killall -TRAP theforgottenserver echo "done." ;; refresh) echo -n "Refreshing theforgottenserver map: " killall -CHLD theforgottenserver echo "done." ;; close) echo -n "Setting theforgottenserver gamestate to closed: " killall -USR1 theforgottenserver echo "done." ;; open) echo -n "Setting theforgottenserver gamestate to normal: " killall -USR2 theforgottenserver echo "done." ;; *) echo "Usage: $0 {start path|stop|kill|quit|restart|reload|save|clean|refresh|close|open}" exit 1 esac exit 0 Pressione F2 e salve o arquivo. Agora entre com os seguintes comandos: chmod 777 /etc/init.d/theforgottenserver chown -R www-data.www-data /etc/init.d/theforgottenserver Em seguida, entre com o comando em negrito abaixo: visudo e adicione a linha abaixo no fim do arquivo: www-data ALL= NOPASSWD: /etc/init.d/theforgottenserver Pressione F2 e salve o arquivo. Bom, agora vamos configurar o site... Navegue até o diretório www (cd /var/www?) e crie um novo diretório chamado "controle" (mkdir controle && cd controle). Entre com o comando em negrito abaixo: pico index.php e cole: <?php $path = "/home/otserv"; //Altere para o diretório do seu servidor aqui $options = array("start" => true, "stop" => true, "kill" => true, "quit" => false, "restart" => true, "reload" => true, "save" => true, "clean" => true, "refresh" => false, "close" => true, "open" => true); echo "<html> <head> <meta content=\"text/html; charset=UTF-8\" http-equiv=\"content-type\"> <title>TheForgottenServer WWW Control</title> </head> <body style=\"color: rgb(0, 0, 0); background-color: rgb(204, 204, 255);\" alink=\"#000099\" link=\"#000099\" vlink=\"#990099\">\n"; if(isset($_GET['do']) && in_array($_GET['do'], $options) && $options[$_GET['do']]) { $output = shell_exec("/usr/bin/sudo /etc/init.d/theforgottenserver ".$_GET['do'].($_GET['do'] == "start" ? " ".$path : "")); echo nl2br($output)."\n<br />\n<a href=\"".$_SERVER['HTTP_REFERER']."\">&raquo Back</a>\n"; } else { echo "\t\tAvailable options:<br />\n"; foreach($options as $option => $enabled) { if($enabled) echo "\t\t<br />\n\t\t&raquo; <a href=\"".$_SERVER['PHP_SELF']."?do=".$option."\">".ucfirst($option)."</a>\n"; } } echo "\t</body> </html>"; ?> Pressione F2 e salve o arquivo. Bom galera, agora basta acessar http://seuip/controle e fazer o teste. Lembrando que dessa forma, qualquer um pode acessar, procure proteger com um arquivo .htacess ou integre ao seu website. OBS: Neste tutorial, foi usado o editor pico, porém isso fica a critério de vocês. Créditos: elf (tutorial em inglês) Bruno Minervino (redigir tutorial e fazer algumas alterações)
  24. <?php if(!defined('INITIALIZED')) exit; $name = ''; if(isset($_REQUEST['name'])) $name = (string) $_REQUEST['name']; if(!empty($name)) { $player = new Player(); $player->find($name); if($player->isLoaded()) { $number_of_rows = 0; $account = $player->getAccount(); $skull = ''; if ($player->getSkull() == 4) $skull = "<img style='border: 0;' src='./images/skulls/redskull.gif'/>"; else if ($player->getSkull() == 5) $skull = "<img style='border: 0;' src='./images/skulls/blackskull.gif'/>"; $main_content .= '<table border="0" cellspacing="1" cellpadding="4" width="100%"><tr bgcolor="'.$config['site']['vdarkborder'].'"><td colspan="2" style="font-weight:bold;color:white">Character Information</td></tr>'; $bgcolor = (($number_of_rows++ % 2 == 1) ? $config['site']['darkborder'] : $config['site']['lightborder']); $main_content .= '<tr bgcolor="' . $bgcolor . '"><td width="20%">Name:</td><td style="font-weight:bold;color:' . (($player->isOnline()) ? 'green' : 'red') . '">' . htmlspecialchars($player->getName()) . ' ' . $skull . ' <img src="' . $config['site']['flag_images_url'] . $account->getFlag() . $config['site']['flag_images_extension'] . '" title="Country: ' . $account->getFlag() . '" alt="' . $account->getFlag() . '" />'; if($player->isBanned() || $account->isBanned()) $main_content .= '<span style="color:red">[BANNED]</span>'; if($player->isNamelocked()) $main_content .= '<span style="color:red">[NAMELOCKED]</span>'; $main_content .= '<br /><img src="' . $config['site']['outfit_images_url'] . '?id=' . $player->getLookType() . '&addons=' . $player->getLookAddons() . '&head=' . $player->getLookHead() . '&body=' . $player->getLookBody() . '&legs=' . $player->getLookLegs() . '&feet=' . $player->getLookFeet() . '" alt="" /></td></tr>'; if(in_array($player->getGroup(), $config['site']['groups_support'])) { $bgcolor = (($number_of_rows++ % 2 == 1) ? $config['site']['darkborder'] : $config['site']['lightborder']); $main_content .= '<tr bgcolor="' . $bgcolor . '"><td>Group:</td><td>' . htmlspecialchars(Website::getGroupName($player->getGroup())) . '</td></tr>'; } $bgcolor = (($number_of_rows++ % 2 == 1) ? $config['site']['darkborder'] : $config['site']['lightborder']); $main_content .= '<tr bgcolor="' . $bgcolor . '"><td>Sex:</td><td>' . htmlspecialchars((($player->getSex() == 0) ? 'female' : 'male')) . '</td></tr>'; $bgcolor = (($number_of_rows++ % 2 == 1) ? $config['site']['darkborder'] : $config['site']['lightborder']); $main_content .= '<tr bgcolor="' . $bgcolor . '"><td>Profession:</td><td>' . htmlspecialchars(Website::getVocationName($player->getVocation())) . '</td></tr>'; $bgcolor = (($number_of_rows++ % 2 == 1) ? $config['site']['darkborder'] : $config['site']['lightborder']); $main_content .= '<tr bgcolor="' . $bgcolor . '"><td>Level:</td><td>' . htmlspecialchars($player->getLevel()) . '</td></tr>'; $bgcolor = (($number_of_rows++ % 2 == 1) ? $config['site']['darkborder'] : $config['site']['lightborder']); $main_content .= '<tr bgcolor="' . $bgcolor . '"><td>Residence:</td><td>' . htmlspecialchars($towns_list[$player->getTownID()]) . '</td></tr>'; $rank_of_player = $player->getRank(); if(!empty($rank_of_player)) { $bgcolor = (($number_of_rows++ % 2 == 1) ? $config['site']['darkborder'] : $config['site']['lightborder']); $main_content .= '<tr bgcolor="' . $bgcolor . '"><td>Guild Membership:</td><td>' . htmlspecialchars($rank_of_player->getName()) . ' of the <a href="?subtopic=guilds&action=show&guild='. $rank_of_player->getGuild()->getID() .'">' . htmlspecialchars($rank_of_player->getGuild()->getName()) . '</a></td></tr>'; } $bgcolor = (($number_of_rows++ % 2 == 1) ? $config['site']['darkborder'] : $config['site']['lightborder']); $main_content .= '<tr bgcolor="' . $bgcolor . '"><td>Balance:</td><td>' . htmlspecialchars($player->getBalance()) . ' gold coins</td></tr>'; $bgcolor = (($number_of_rows++ % 2 == 1) ? $config['site']['darkborder'] : $config['site']['lightborder']); $main_content .= '<tr bgcolor="' . $bgcolor . '"><td>Last login:</td><td>' . (($player->getLastLogin() > 0) ? date("j F Y, g:i a", $player->getLastLogin()) : 'Never logged in.') . '</td></tr>'; if($player->getCreateDate() > 0) { $bgcolor = (($number_of_rows++ % 2 == 1) ? $config['site']['darkborder'] : $config['site']['lightborder']); $main_content .= '<tr bgcolor="' . $bgcolor . '"><td>Created:</td><td>' . date("j F Y, g:i a", $player->getCreateDate()) . '</td></tr>'; } if($config['site']['show_vip_storage'] > 0) { $storageValue = $player->getStorage($config['site']['show_vip_storage']); $bgcolor = (($number_of_rows++ % 2 == 1) ? $config['site']['darkborder'] : $config['site']['lightborder']); $main_content .= '<tr bgcolor="' . $bgcolor . '"><td>VIP:</td><td>' . (($storageValue === null || $storageValue < 0) ? '<span style="font-weight:bold;color:red">NOT VIP</span>' : '<span style="font-weight:bold;color:green">VIP</span>') . '</td></tr>'; } $comment = $player->getComment(); $newlines = array("\r\n", "\n", "\r"); $comment_with_lines = str_replace($newlines, '<br />', $comment, $count); if($count < 50) $comment = $comment_with_lines; if(!empty($comment)) { $bgcolor = (($number_of_rows++ % 2 == 1) ? $config['site']['darkborder'] : $config['site']['lightborder']); $main_content .= '<tr bgcolor="' . $bgcolor . '"><td>Comment:</td><td>' . $comment . '</td></tr>'; } $main_content .= '</TABLE>'; $main_content .= '<table width=100%><tr>'; $itemsList = $player->getItems(); $main_content .= '<td align=center><table with=100% style="border: solid 1px #888888;" CELLSPACING="1"><TR>'; $list = array('2','1','3','6','4','5','9','7','10','8'); foreach ($list as $number_of_items_showed => $slot) { if($slot == '8') // add Soul before show 'feet' { $main_content .= '<td style="background-color: '.$config['site']['darkborder'].'; text-align: center;">Soul:<br/>'. $player->getSoul() .'</td>'; } if($itemsList->getSlot($slot) === false) // item does not exist in database { $main_content .= '<TD style="background-color: '.$config['site']['darkborder'].';"><img src="' . $config['site']['item_images_url'] . $slot . $config['site']['item_images_extension'] . '" width="45"/></TD>'; } else { $main_content .= '<TD style="background-color: '.$config['site']['darkborder'].';"><img src="' . $config['site']['item_images_url'] . $itemsList->getSlot($slot)->getID() . $config['site']['item_images_extension'] . '" width="45"/></TD>'; } if($number_of_items_showed % 3 == 2) { $main_content .= '</tr><tr>'; } if($slot == '8') // add Capacity after show 'feet' { $main_content .= '<td style="background-color: '.$config['site']['darkborder'].'; text-align: center;">Cap:<br/>'. $player->getCap() .'</td>'; } } $main_content .= '</tr></TABLE></td>'; $hpPercent = max(0, min(100, $player->getHealth() / max(1, $player->getHealthMax()) * 100)); $manaPercent = max(0, min(100, $player->getMana() / max(1, $player->getManaMax()) * 100)); $main_content .= '<td align=center ><table width=100%><tr><td align=center><table CELLSPACING="1" CELLPADDING="4" width="100%"><tr><td BGCOLOR="'.$config['site']['lightborder'].'" align="left" width="20%"><b>Player Health:</b></td> <td BGCOLOR="'.$config['site']['lightborder'].'" align="left">'.$player->getHealth().'/'.$player->getHealthMax().'<div style="width: 100%; height: 3px; border: 1px solid #000;"><div style="background: red; width: ' . $hpPercent . '%; height: 3px;"></td></tr> <tr><td BGCOLOR="'.$config['site']['darkborder'].'" align="left"><b>Player Mana:</b></td><td BGCOLOR="'.$config['site']['darkborder'].'" align="left">' . $player->getMana() . '/' . $player->getManaMax() . '<div style="width: 100%; height: 3px; border: 1px solid #000;"><div style="background: blue; width: '.$manaPercent.'%; height: 3px;"></td></tr></table><tr>'; $expCurrent = Functions::getExpForLevel($player->getLevel()); $expNext = Functions::getExpForLevel($player->getLevel() + 1); $expLeft = bcsub($expNext, $player->getExperience(), 0); $expLeftPercent = max(0, min(100, ($player->getExperience() - $expCurrent) / ($expNext - $expCurrent) * 100)); $main_content .= '<tr><table CELLSPACING="1" CELLPADDING="4"><tr><td BGCOLOR="'.$config['site']['lightborder'].'" align="left" width="20%"><b>Player Level:</b></td><td BGCOLOR="'.$config['site']['lightborder'].'" align="left">'.$player->getLevel().'</td></tr> <tr><td BGCOLOR="'.$config['site']['darkborder'].'" align="left"><b>Player Experience:</b></td><td BGCOLOR="'.$config['site']['darkborder'].'" align="left">' . $player->getExperience() . ' EXP.</td></tr> <tr><td BGCOLOR="' . $config['site']['lightborder'].'" align="left"><b>To Next Level:</b></td><td BGCOLOR="'.$config['site']['lightborder'].'" align="left">You need <b>' . $expLeft . ' EXP</b> to Level <b>' . ($player->getLevel() + 1) . '</b>.<div title="' . (100 - $expLeftPercent) . '% left" style="width: 100%; height: 3px; border: 1px solid #000;"><div style="background: red; width: '.$expLeftPercent.'%; height: 3px;"></td></tr></table></td></tr></table></tr></TABLE></td>'; if($config['site']['show_skills_info']) { $main_content .= '<center><strong>Skills</strong><table cellspacing="0" cellpadding="0" border="1" width="200"> <tbody> <tr> <td style="text-align: center;"><a href="?subtopic=highscores&list=experience"><img src="images/skills/level.gif" alt="" style="border-style: none"/></td> <td style="text-align: center;"><a href="?subtopic=highscores&list=magic"><img src="images/skills/ml.gif" alt="" style="border-style: none"/></td> <td style="text-align: center;"><a href="?subtopic=highscores&list=fist"><img src="images/skills/fist.gif" alt="" style="border-style: none"/></td> <td style="text-align: center;"><a href="?subtopic=highscores&list=club"><img src="images/skills/club.gif" alt="" style="border-style: none"/></td> <td style="text-align: center;"><a href="?subtopic=highscores&list=sword"><img src="images/skills/sword.gif" alt="" style="border-style: none"/></td> <td style="text-align: center;"><a href="?subtopic=highscores&list=axe"><img src="images/skills/axe.gif" alt="" style="border-style: none"/></td> <td style="text-align: center;"><a href="?subtopic=highscores&list=distance"><img src="images/skills/dist.gif" alt="" style="border-style: none"/></td> <td style="text-align: center;"><a href="?subtopic=highscores&list=shield"><img src="images/skills/def.gif" alt="" style="border-style: none"/></td> <td style="text-align: center;"><a href="?subtopic=highscores&list=fishing"><img src="images/skills/fish.gif" alt="" style="border-style: none"/></td> </tr> <tr> <tr bgcolor="' . $config['site']['darkborder'] . '"><td style="text-align: center;"><strong>Level</strong></td> <td style="text-align: center;"><strong>ML</strong></td> <td style="text-align: center;"><strong>Fist</strong></td> <td style="text-align: center;"><strong>Mace</strong></td> <td style="text-align: center;"><strong>Sword</strong></td> <td style="text-align: center;"><strong>Axe</strong></td> <td style="text-align: center;"><strong>Dist</strong></td> <td style="text-align: center;"><strong>Def</strong></td> <td style="text-align: center;"><strong>Fish</strong></td> </tr> <tr> <tr bgcolor="' . $config['site']['lightborder'] . '"><td style="text-align: center;">' . $player->getLevel() . '</td> <td style="text-align: center;">' . $player->getMagLevel().'</td> <td style="text-align: center;">' . $player->getSkill(0) . '</td> <td style="text-align: center;">' . $player->getSkill(1) . '</td> <td style="text-align: center;">' . $player->getSkill(2) . '</td> <td style="text-align: center;">' . $player->getSkill(3) . '</td> <td style="text-align: center;">' . $player->getSkill(4) . '</td> <td style="text-align: center;">' . $player->getSkill(5) . '</td> <td style="text-align: center;">' . $player->getSkill(6) . '</td> </tr> </tbody> </table> <div style="text-align: center;">&nbsp;<br />&nbsp;</div></center>'; } $main_content .= '<center><table cellspacing="0" cellpadding="0" border="1" width="200"> <tbody> <tr bgcolor="' . $config['site']['darkborder'] . '"> <td style="text-align: center;"><img src="?subtopic=signature&name=' . urlencode($player->getName()) . '" alt="Signature" /></td> </tr> <tr bgcolor="' . $config['site']['lightborder'] . '"> <td style="text-align: center;"><b>Link:</b><input type="text" name="" size="100" value="' . htmlspecialchars($config['server']['url'] . '?subtopic=signature&name=' . urlencode($player->getName())) . '" /></td> </tr> </tbody> </table> <div style="text-align: center;">&nbsp;<br />&nbsp;</div></center>'; if(isset($config['site']['quests']) && is_array($config['site']['quests']) && count($config['site']['quests']) > 0) { $main_content .= '<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR="'.$config['site']['vdarkborder'].'"><TD align="left" COLSPAN=2 CLASS=white><B>Quests</B></TD></TD align="right"></TD></TR>'; $number_of_quests = 0; foreach($config['site']['quests'] as $questName => $storageID) { $bgcolor = (($number_of_rows++ % 2 == 1) ? $config['site']['darkborder'] : $config['site']['lightborder']); $number_of_quests++; $main_content .= '<TR BGCOLOR="' . $bgcolor . '"><TD WIDTH=95%>' . $questName . '</TD>'; if($player->getStorage($storageID) === null) { $main_content .= '<TD><img src="images/false.png"/></TD></TR>'; } else { $main_content .= '<TD><img src="images/true.png"/></TD></TR>'; } } $main_content .= '</TABLE></td></tr></table><br />'; } $deads = 0; //deaths list $player_deaths = new DatabaseList('PlayerDeath'); $player_deaths->setFilter(new SQL_Filter(new SQL_Filter(new SQL_Field('player_id'), SQL_Filter::EQUAL, $player->getId()), SQL_Filter::CRITERIUM_AND,new SQL_Filter(new SQL_Field('id', 'players'), SQL_Filter::EQUAL, new SQL_Field('player_id', 'player_deaths')))); $player_deaths->addOrder(new SQL_Order(new SQL_Field('time'), SQL_Order::DESC)); $player_deaths->setLimit(20); foreach($player_deaths as $death) { $bgcolor = (($number_of_rows++ % 2 == 1) ? $config['site']['darkborder'] : $config['site']['lightborder']); $deads++; $dead_add_content .= "<tr bgcolor=\"".$bgcolor."\"><td width=\"20%\" align=\"center\">".date("j M Y, H:i", $death->getTime())."</td><td>Died at level " . $death->getLevel() . " by " . $death->getKillerString(); if($death->getMostDamageString() != '' && $death->getKillerString() != $death->getMostDamageString()) $dead_add_content .= ' and ' . $death->getMostDamageString(); $dead_add_content .= "</td></tr>"; } if($deads > 0) $main_content .= '<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR="'.$config['site']['vdarkborder'].'"><TD COLSPAN=2 CLASS=white><B>Deaths</B></TD></TR>' . $dead_add_content . '</TABLE><br />'; if(!$player->getHideChar()) { $main_content .= '<TABLE BORDER=0><TR><TD></TD></TR></TABLE><TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR="'.$config['site']['vdarkborder'].'"><TD COLSPAN=2 CLASS=white><B>Account Information</B></TD></TR>'; if($account->getRLName()) { $bgcolor = (($number_of_rows++ % 2 == 1) ? $config['site']['darkborder'] : $config['site']['lightborder']); $main_content .= '<TR BGCOLOR="' . $bgcolor . '"><TD WIDTH=20%>Real name:</TD><TD>' . $account->getRLName() . '</TD></TR>'; } if($account->getLocation()) { $bgcolor = (($number_of_rows++ % 2 == 1) ? $config['site']['darkborder'] : $config['site']['lightborder']); $main_content .= '<TR BGCOLOR="' . $bgcolor . '"><TD WIDTH=20%>Location:</TD><TD>' . $account->getLocation() . '</TD></TR>'; } $bgcolor = (($number_of_rows++ % 2 == 1) ? $config['site']['darkborder'] : $config['site']['lightborder']); if($account->getLastLogin()) $main_content .= '<TR BGCOLOR="' . $bgcolor . '"><TD WIDTH=20%>Last login:</TD><TD>' . date("j F Y, g:i a", $account->getLastLogin()) . '</TD></TR>'; else $main_content .= '<TR BGCOLOR="' . $bgcolor . '"><TD WIDTH=20%>Last login:</TD><TD>Never logged in.</TD></TR>'; if($account->getCreateDate()) { $bgcolor = (($number_of_rows++ % 2 == 1) ? $config['site']['darkborder'] : $config['site']['lightborder']); $main_content .= '<TR BGCOLOR="' . $bgcolor . '"><TD WIDTH=20%>Created:</TD><TD>' . date("j F Y, g:i a", $account->getCreateDate()) . '</TD></TR>'; } $bgcolor = (($number_of_rows++ % 2 == 1) ? $config['site']['darkborder'] : $config['site']['lightborder']); $main_content .= '<TR BGCOLOR="' . $bgcolor . '"><TD>Account&#160;Status:</TD><TD>'; $main_content .= ($account->isPremium() > 0) ? '<b><font color="green">Premium Account</font></b>' : '<b><font color="red">Free Account</font></b>'; if($account->isBanned()) { if($account->getBanTime() > 0) $main_content .= '<font color="red"> [Banished until '.date("j F Y, G:i", $account->getBanTime()).']</font>'; else $main_content .= '<font color="red"> [Banished FOREVER]</font>'; } $main_content .= '</TD></TR></TABLE>'; $main_content .= '<br><TABLE BORDER=0><TR><TD></TD></TR></TABLE><TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR="'.$config['site']['vdarkborder'].'"><TD COLSPAN=5 CLASS=white><B>Characters</B></TD></TR> <TR BGCOLOR="' . $bgcolor . '"><TD><B>Name</B></TD><TD><B>Level</B></TD><TD><b>Status</b></TD><TD><B>&#160;</B></TD></TR>'; $account_players = $account->getPlayersList(); $player_number = 0; foreach($account_players as $player_list) { if(!$player_list->getHideChar()) { $player_number++; $bgcolor = (($number_of_rows++ % 2 == 1) ? $config['site']['darkborder'] : $config['site']['lightborder']); if(!$player_list->isOnline()) $player_list_status = '<font color="red">Offline</font>'; else $player_list_status = '<font color="green">Online</font>'; $main_content .= '<TR BGCOLOR="' . $bgcolor . '"><TD WIDTH=52%><NOBR>'.$player_number.'.&#160;'.htmlspecialchars($player_list->getName()); $main_content .= ($player_list->isDeleted()) ? '<font color="red"> [DELETED]</font>' : ''; $main_content .= '</NOBR></TD><TD WIDTH=25%>'.$player_list->getLevel().' '.htmlspecialchars($vocation_name[$player_list->getVocation()]).'</TD><TD WIDTH="8%"><b>'.$player_list_status.'</b></TD><TD><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0><FORM ACTION="?subtopic=characters" METHOD=post><TR><TD><INPUT TYPE="hidden" NAME="name" VALUE="'.htmlspecialchars($player_list->getName()).'"><INPUT TYPE=image NAME="View '.htmlspecialchars($player_list->getName()).'" ALT="View '.htmlspecialchars($player_list->getName()).'" SRC="'.$layout_name.'/images/buttons/sbutton_view.gif" BORDER=0 WIDTH=120 HEIGHT=18></TD></TR></FORM></TABLE></TD></TR>'; } } $main_content .= '</TABLE></TD><TD><IMG SRC="'.$layout_name.'/images/blank.gif" WIDTH=10 HEIGHT=1 BORDER=0></TD></TR></TABLE>'; } } else $search_errors[] = 'Character <b>'.htmlspecialchars($name).'</b> does not exist.'; } if(!empty($search_errors)) { $main_content .= '<div class="SmallBox" > <div class="MessageContainer" > <div class="BoxFrameHorizontal" style="background-image:url('.$layout_name.'/images/content/box-frame-horizontal.gif);" /></div> <div class="BoxFrameEdgeLeftTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></div> <div class="BoxFrameEdgeRightTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></div> <div class="ErrorMessage" > <div class="BoxFrameVerticalLeft" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></div> <div class="BoxFrameVerticalRight" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></div> <div class="AttentionSign" style="background-image:url('.$layout_name.'/images/content/attentionsign.gif);" /></div><b>The Following Errors Have Occurred:</b><br/>'; foreach($search_errors as $search_error) $main_content .= '<li>'.$search_error; $main_content .= '</div> <div class="BoxFrameHorizontal" style="background-image:url('.$layout_name.'/images/content/box-frame-horizontal.gif);" /></div> <div class="BoxFrameEdgeRightBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></div> <div class="BoxFrameEdgeLeftBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></div> </div></div><br/>'; } $main_content .= '<BR><BR><FORM ACTION="?subtopic=characters" METHOD=post><TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4><TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" CLASS=white><B>Search Character</B></TD></TR><TR><TD BGCOLOR="'.$config['site']['darkborder'].'"><TABLE BORDER=0 CELLPADDING=1><TR><TD>Name:</TD><TD><INPUT NAME="name" VALUE=""SIZE=29 MAXLENGTH=29></TD><TD><INPUT TYPE=image NAME="Submit" SRC="'.$layout_name.'/images/buttons/sbutton_submit.gif" BORDER=0 WIDTH=120 HEIGHT=18></TD></TR></TABLE></TD></TR></TABLE></FORM>'; $main_content .= '</TABLE>';
  25. Qual sistema de reset você usa ? Assim que você me informar eu posso ajudar.

Informação Importante

Confirmação de Termo