Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 05/20/11 em todas áreas
-
[Actions] Item Random
Hudsin e um outro reagiu a Kuro o Shiniga por um tópico no fórum
Eae Galera ,-, estava sem nada para fazer resolvi fazer um script basico aqi. Explicação: Quando o player clica no certo item ele ganhara exp sera teleportado para o templo e tera 3 items sera escolhido na sorte! Então vamos la Data/Actions/Script crie um arquivo lua com o nome que qiser e adicione! Data/Actions/Actions.xml Adicione Script e bem simples não tinha nada para fazer e essa foi a ideia que apareceu2 pontos -
[Tbnews] Flash, Em Poucas Palavras...
Fernandinand e um outro reagiu a Mophus por um tópico no fórum
Flash, em poucas palavras... Galera, novidades sobre o TibiaFlash! Durante às últimas semanas, a Cipsoft tem sido questionada sobre o andamento do cliente Flash de Tibia bastante com muita freqüência. O próximo beta test server (que será aberto para todos os jogadores) está sendo aguardado cada vez mais, é hora de resumir as principais características do Flash client. Confira a lista: Barras Laterais: Faça uso de até quatro barras laterais e organize os elementos da barra lateral, chamados widgets, na ordem que desejar. Barras de ações: Atribua magias, runas, poções, equipamentos, alimentos ou até quatro barras de ação que podem ser controlados com o teclado ou o mouse. Então, mudando sua arma ou armadura, por exemplo, vai ser fácil como torta. Teclas de atalho: O cliente Flash permite atribuir e personalizar teclas de atalho no teclado para uma rápida e fácil utilização. Você poderá definir e nomear até 8 conjuntos diferentes de configurações de barra de atalho e ação, e alterá-las facilmente com um único clique enquanto joga. Barra de status: O widget da barra de status pode ser movida para qualquer lado da janela do jogo e vem em diferentes estilos. Mantém você atualizado sobre a vida do seu personagem e mana, e também contém informações sobre condições especiais, como ser envenenado ou com fome, e há mesmo uma barra de progresso que mostra o progresso de um tipo de nível ou habilidade. Informações de personagem e HUD: Você quer ficar de olho na saúde do seu personagem e mana, ao mesmo tempo? Não tem problema! Cabe a você que tipo de informação será exibida para você na janela do jogo. Mostrar ou ocultar o nome do personagem, vida, mana, e as marcas ou nomes de vida e de outras marcas, assinalando fora as caixas respectivas. Se você esta aberto para uma experiência de jogo nova, o cliente Flash permite-lhe ligar e desligar um heads-up display, chamado de HUD. Com suas baras semi-transparente, amplas e cheias de curvas ficará mais fácil ficar de olho na vida e na mana a qualquer momento. Mensagens do jogo: Escolha a sua cor preferida para a maioria das mensagens no jogo e decida se deseja ou não que elas sejam exibidas na janela do seu jogo e em sua janela de bate papo (chat). Lista de batalha: A lista de batalha vem junto com um par de filtros úteis que tornam possível para você mostrar ou ocultar determinados conteúdos, tais como criaturas, outros jogadores ou NPCs, por exemplo, basta clicar sobre o ícone respectivo. Além disso, diferentes opções de classificação ajudá-lo a acompanhar o seu entorno. Claro, isso não é tudo! O open beta test é a sua chance de conferir todas estas características e muitos mais. Portanto, fique atento e certifique-se que não vai perder o nosso próximo teaser, que vai incluir mais informações sobre o início do open beta test, bem como sobre os requisitos do sistema. Cipsoft Tradução: Mophus Fonte: Tibia Em Inglês: Flash, Em Poucas Palavras...2 pontos -
[Gesior Acc] Pagseguro Entregando Pontos Automaticamente
Rafu reagiu a walefxavier por um tópico no fórum
@Edit ________________________________________________________________ No Seu Htdocs va em Config/config.php e coloque isso no final: // Sistema automatico Pagseguro by tatu_hunter // Seu email cadastrado no pagseguro $config['pagseguro']['email'] = 'seu e-mail'; // Valor unitario do produto ou seja valor de cada ponto // Exemplo de valores // 100 = R$ 1,00 // 235 = R$ 2,35 // 4254 = R$ 42,54 $config['pagseguro']['produtoValor'] = '100'; // Token gerado no painel do pagseguro $config['pagseguro']['token'] = 'SEU TOKEN PAGSEGURO AQUI'; Como ja havia dito no outro topico,crie um arquivo chamado retPagseguro.php Dentro adicione isso: <?php include('config-and-functions.php'); define('TOKEN', $config['pagseguro']['token']); // Incluindo o arquivo da biblioteca include('retorno.php'); // Função que captura os dados do retorno function retorno_automatico ( $VendedorEmail, $TransacaoID, $Referencia, $TipoFrete, $ValorFrete, $Anotacao, $DataTransacao, $TipoPagamento, $StatusTransacao, $CliNome, $CliEmail, $CliEndereco, $CliNumero, $CliComplemento, $CliBairro, $CliCidade, $CliEstado, $CliCEP, $CliTelefone, $produtos, $NumItens) { global $config; if(strtolower($StatusTransacao) == 'aprovado') { $account_logged = $ots->createObject('Account'); $account_logged->find($Referencia); if($account_logged->isLoaded()) { $pontos = $account_logged->getCustomField("premium_points"); $account_logged->setCustomField("premium_points", $pontos + $produtos[0]['ProdQuantidade']); $nome = $Referencia.'-'.date('d-m-Y',$_SERVER['REQUEST_TIME']).'.txt'; if(file_exists('logsPagseguro/'.$nome)) $nome = $Referencia.'-2-'.date('d-m-Y',$_SERVER['REQUEST_TIME']).'.txt'; $arquivo = fopen('logsPagseguro/'.$nome, "w+"); $dados = "Conta: ".$Referencia."\n"; $dados = "Email: ".$CliEmail."\n"; $dados .= "Total de Points: ".$produtos[0]['ProdQuantidade']."\n"; $dados .= "Hora da Transação: ". date('d-m-Y H:i:s', $_SERVER['REQUEST_TIME']).""; fwrite($arquivo, $dados); fclose($arquivo); } } } // A partir daqui, é só HTML: ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> </head> <body> <h1>Pedido em processamento</h1> <p>Recebemos seu pedido e estamos aguardando pela confirmação do pagamento. Obrigado por comprar conosco.</p> </body> </html> Depois crie um arquivo chamado retorno.php e adicione o seguinte: <?php if (!defined('TOKEN')) define ('TOKEN', ''); /** * RetornoPagSeguro * * Classe de manipulação para o retorno do post do pagseguro * * @package PagSeguro */ class RetornoPagSeguro { /** * _preparaDados * * Prepara os dados vindos do post e converte-os para url, adicionando * o token do usuario quando necessario. * * @internal é usado pela {@see RetornoPAgSeguro::verifica} para gerar os, * dados que serão enviados pelo PagSeguro * * @access private * * @param array $post Array contendo os posts do pagseguro * @param bool $confirmacao Controlando a adicao do token no post * @return string */ function _preparaDados($post, $confirmacao=true) { if ('array' !== gettype($post)) $post=array(); if ($confirmacao) { $post['Comando'] = 'validar'; $post['Token'] = TOKEN; } $retorno=array(); foreach ($post as $key=>$value){ if('string'!==gettype($value)) $post[$key]=''; $value=urlencode(stripslashes($value)); $retorno[]="{$key}={$value}"; } return implode('&', $retorno); } /** * _tipoEnvio * * Checa qual será a conexao de acordo com a versao do PHP * preferencialmente em CURL ou via socket * * em CURL o retorno será: * <code> array ('curl','https://pagseguro.uol.com.br/Security/NPI/Default.aspx') </code> * já em socket o retorno será: * <code> array ('fsocket', '/Security/NPI/Default.aspx', $objeto-de-conexao) </code> * se não encontrar nenhum nem outro: * <code> array ('','') </code> * * @access private * @global string $_retPagSeguroErrNo Numero de erro do pagseguro * @global string $_retPagSeguroErrStr Texto descritivo do erro do pagseguro * @return array Array com as configurações * */ function _tipoEnvio() { //Prefira utilizar a função CURL do PHP //Leia mais sobre CURL em: http://us3.php.net/curl global $_retPagSeguroErrNo, $_retPagSeguroErrStr; if (function_exists('curl_exec')) return array('curl', 'https://pagseguro.uol.com.br/Security/NPI/Default.aspx'); elseif ((PHP_VERSION >= 4.3) && ($fp = @fsockopen('ssl://pagseguro.uol.com.br', 443, $_retPagSeguroErrNo, $_retPagSeguroErrStr, 30))) return array('fsocket', '/Security/NPI/Default.aspx', $fp); elseif ($fp = @fsockopen('pagseguro.uol.com.br', 80, $_retPagSeguroErrNo, $_retPagSeguroErrStr, 30)) return array('fsocket', '/Security/NPI/Default.aspx', $fp); return array ('', ''); } /** * not_null * * Extraido de OScommerce 2.2 com base no original do pagseguro, * Checa se o valor e nulo * * @access public * * @param mixed $value Variável a ser checada se é nula * @return bool */ function not_null($value) { if (is_array($value)) { if (sizeof($value) > 0) { return true; } else { return false; } } else { if (($value != '') && (strtolower($value) != 'null') && (strlen(trim($value)) > 0)) { return true; } else { return false; } } } /** * verifica * * Verifica o tipo de conexão aberta e envia os dados vindos * do post * * @access public * * @use RetornoPagSeguro::_tipoenvio() * @global string $_retPagSeguroErrNo Numero de erro do pagseguro * @global string $_retPagSeguroErrStr Texto descritivo do erro do pagseguro * @param array $post Array contendo os posts do pagseguro * @param bool $tipoEnvio (opcional) Verifica o tipo de envio do post * @return bool */ function verifica($post, $tipoEnvio=false) { global $_retPagSeguroErrNo, $_retPagSeguroErrStr; if ('array' !== gettype($tipoEnvio)) $tipoEnvio = RetornoPagSeguro::_tipoEnvio(); $spost=RetornoPagSeguro::_preparaDados($post); if (!in_array($tipoEnvio[0], array('curl', 'fsocket'))) return false; $confirma = false; if ($tipoEnvio[0] === 'curl') { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $tipoEnvio[1]); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $spost); 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); $resp = curl_exec($ch); if (!RetornoPagSeguro::not_null($resp)) { curl_setopt($ch, CURLOPT_URL, $tipoEnvio[1]); $resp = curl_exec($ch); } curl_close($ch); $confirma = (strcmp ($resp, 'VERIFICADO') == 0); } elseif ($tipoEnvio[0] === 'fsocket') { if (!$tipoEnvio[2]) { die ("{$_retPagSeguroErrStr} ($_retPagSeguroErrNo)"); } else { $cabecalho = "POST {$tipoEnvio[1]} HTTP/1.0\r\n"; $cabecalho .= "Content-Type: application/x-www-form-urlencoded\r\n"; $cabecalho .= "Content-Length: " . strlen($spost) . "\r\n\r\n"; $resp = ''; fwrite ($tipoEnvio[2], "{$cabecalho}{$spost}"); while (!feof($tipoEnvio[2])) { $resp = fgets ($tipoEnvio[2], 1024); if (strcmp ($resp, 'VERIFICADO') == 0) { $confirma = (strcmp ($resp, 'VERIFICADO') == 0); $confirma=true; break; } } fclose ($tipoEnvio[2]); } } if ($confirma && function_exists('retorno_automatico')) { $itens = array ( 'VendedorEmail', 'TransacaoID', 'Referencia', 'TipoFrete', 'ValorFrete', 'Anotacao', 'DataTransacao', 'TipoPagamento', 'StatusTransacao', 'CliNome', 'CliEmail', 'CliEndereco', 'CliNumero', 'CliComplemento', 'CliBairro', 'CliCidade', 'CliEstado', 'CliCEP', 'CliTelefone', 'NumItens', ); foreach ($itens as $item) { if (!isset($post[$item])) $post[$item] = ''; if ($item=='ValorFrete') $post[$item] = str_replace(',', '.', $post[$item]); } $produtos = array (); for ($i=1;isset($post["ProdID_{$i}"]);$i++) { $produtos[] = array ( 'ProdID' => $post["ProdID_{$i}"], 'ProdDescricao' => $post["ProdDescricao_{$i}"], 'ProdValor' => (double) (str_replace(',', '.', $post["ProdValor_{$i}"])), 'ProdQuantidade' => $post["ProdQuantidade_{$i}"], 'ProdFrete' => (double) (str_replace(',', '.', $post["ProdFrete_{$i}"])), 'ProdExtras' => (double) (str_replace(',', '.', $post["ProdExtras_{$i}"])), ); } retorno_automatico ( $post['VendedorEmail'], $post['TransacaoID'], $post['Referencia'], $post['TipoFrete'], $post['ValorFrete'], $post['Anotacao'], $post['DataTransacao'], $post['TipoPagamento'], $post['StatusTransacao'], $post['CliNome'], $post['CliEmail'], $post['CliEndereco'], $post['CliNumero'], $post['CliComplemento'], $post['CliBairro'], $post['CliCidade'], $post['CliEstado'], $post['CliCEP'], $post['CliTelefone'], $produtos, $post['NumItens'] ); } return $confirma; } } if ($_POST) { RetornoPagSeguro::verifica($_POST); die(); } ?> No seu buypoints.php,basta colocar isso: <?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 onMouseOver="MouseOverBigButton(this);" onMouseOut="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 onMouseOver="MouseOverBigButton(this);" onMouseOut="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 .= ' <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="1" 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>'; } ?> Para finalizar: Adicione no seu phpmyadmin,na parte SQL,a seguinte database: CREATE TABLE `retorno_automatico` ( `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, `status` tinyint(1) unsigned NOT NULL default '0', UNIQUE KEY `TransacaoID` (`TransacaoID`,`StatusTransacao`), KEY `Referencia` (`Referencia`), KEY `status` (`status`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; E essa outra aqui : CREATE TABLE `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, `status` tinyint(1) unsigned NOT NULL default '0', UNIQUE KEY `TransacaoID` (`TransacaoID`,`StatusTransacao`), KEY `Referencia` (`Referencia`), KEY `status` (`status`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; :XTibia_smile:1 ponto -
[ Talkaction ] !guild List
Gabrieltxu reagiu a Vodkart por um tópico no fórum
Fala galera vim lhe apresentar 2 comando para seu servidor. talkactions\script guildlist.lua function onSay(cid, words, param, channel) local str = "" if param == '' then local lista = db.getResult("SELECT `name` FROM `guilds`;") if(lista:getID() ~= -1) then repeat str = str .. lista:getDataString("name") .. "\n" until not lista:next() lista:free() doShowTextDialog(cid, 2529, str == "" and "Não existem guilds no servidor." or str) return true end end local id = getGuildId(param) if id then local lista = db.getResult("SELECT `name`, `rank_id` FROM `players` WHERE `rank_id` IN (SELECT `id` FROM `guild_ranks` WHERE `guild_id` = " .. id .. ");") if(lista:getID() ~= -1) then repeat local rank = db.getResult("SELECT `name`, `level` FROM `guild_ranks` WHERE `id` = " .. lista:getDataInt("rank_id") .. " ORDER BY `level` DESC, `name` ASC;") str = str .. lista:getDataString("name") .. " [" .. rank:getDataString("name") .. "]\n" rank:free() until not lista:next() lista:free() doShowTextDialog(cid, 2529, str) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Não há jogadores nesta guild.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Está Guild não existe.") end return true end talkactions.xml adicione a tag: <talkaction words="!glist" script="guildlist.lua"/> --- Deletar guilds do server que não tem mais players(foram deletadas): Data/globalevents/script deleteguild.lua function onThink(interval, lastExecution) local guilds = db.getResult("SELECT `name` FROM `guilds`;") if(guilds:getID() ~= -1) then repeat local delete = db.getResult("SELECT `name`, `rank_id` FROM `players` WHERE `rank_id` IN (SELECT `id` FROM `guild_ranks` WHERE `guild_id` = " .. getGuildId(guilds:getDataString("name")) .. ");") if(delete:getID() < 1) then db.executeQuery("DELETE FROM guilds WHERE id = "..getGuildId(guilds:getDataString("name"))) end until not guilds:next() guilds:free() end return true end globalevents.xml <globalevent name="Guild Delete" interval="36000" event="script" value="deleteguild.lua"/>1 ponto -
[8.54] Mapa Pokemon Betinhowz666
Daniel S reagiu a betinhowz666 por um tópico no fórum
Hello Como prometido irei disponibilizar agora o download do mapa pokemon que estive trabalhando. Coloquei as houses mais não o respaw. Apresentações ? Vamos lá para uma prévia das cidades. As hunt's vocês terão que baixar para conferir CITY 1 CITY 2 CITY 3 CITY 4 Me ajudem a atingir 200 REP +, Que farei este mapa ficar muito melhor do que está. Antes era 150 REP+, Mas por conta de alguns moderadores me tirarem REP + dizendo que eu tinha feito outra conta para me dar REP + agora será 200. Segue o download do mapa e o que precisa para que você abra-o MAPA BETINHOWZ666 SPR POR PIRADECO Créditos: PeeWee - por fazer parte do mapa Piradeco - pelas .spr e .dat betinhowz666 - por estar editando. (EU)1 ponto -
[Download]Quest Maker E Como Usar
ALLan162 reagiu a MatheusGlad por um tópico no fórum
Fikei em duvida se postava na aprovaçao de tutorial ou downloads, pois o meu contem os dois. Quest Maker Download: 4shared Virus Scan Virus Total Ps: So 1 antivirus achou, acho que inofensivo. Como usar: Ele e um programa muito simples de se usar porem algumas pessoas nao sabem, irei explicar. Apos baixar o Quest Maker bote-o na pasta "actions/scripts" do seu otserver. Em seguida,abra-o e espera carregar. Preencha todos os campos do quest maker. Use a ss como exemplo 1 - Nome do Arquivo.lua onde ficara o script (dentro da pasta aonde botou o Quest Maker) 2 - Comentarios (Nao ira modificar em nada seu script) 3 - Unique ID que voce vai botar no bau da quest.(Sempre botar um numero qualquer que n tenha em actions.xml) 4 - Storage ID. (Pode ser o mesmo do Unique ID, mais nao afetara se for diferente) 5 - Mensagem que ira aparecer apos completar a quest. 6 - Botao que cria o script em sua pasta. 7 - ID do item que ira dar na quest. 8 - Apaga todas as suas configuraçoes feitas no programa. 9 - Cria Tag que voce ira botar em actions.xml 10 - NAO USE ESTA BUGADO ELE TE DA OS IDS ERRADOS 11 - Aonde aparece sua tag criada pelo botao numero 9 Criando o Bau: Agora abra o seu mapa com o seu Map Editor e crie um bau. Adicione o UniqueId que voce colocou no Quest Maker. Salve e aproveite! Quest Criada com Sucesso Tutorial by MatheusMkalo, exclusivo para o Xtibia Copia Ilegal,PROIBIDA Sugestoes,Duvidas,Elogios aceitados nesse topico ou via MP.1 ponto -
Como Criar Um Instalador
ManoTobira reagiu a PedroXtibiaaaa por um tópico no fórum
Primeiro de tudo baixe o Install Creator [download]http://www.theclickteam.com/webftp/files/5/5/icpinst.exe[/download] Depois de instalado abra-o, vai aparecer isto: se não aparecer tentem clicar em new. Clique em avançar, escolham a pasta que está o cliente de vocês e clique em avançar. Escolham a linguagem que vai ser o instalador e embaixo o nome do produto. Sempre cliquem em "preview" para ver como vai ficar antes, clique em avançar. Em default vai ser a opção de instalação, Windows, Linux... e embaixo vai ser caso você queira que precise de um serial key pra que possa abrir o arquivo, aconselho a não botar, clique em avançar. Aqui você vai escolher como vai ser o instalador, se ele vai ser full screen ou small screen, com a opção full screen você pode escolher o nome que vai aparecer la em cima, um background ou as cores que vão aparecer no fundo. Para quem escolheu Full Screen: ali em browse você vai escolher a imagem que você quiser como fundo e embaixo são as opções: Stretch (Esticar) - Pattern (Padrão) e do outro lado é o alinhamento: Left (Esquerda) - Center (Centro) - Right (Direita) - Top (Topo) - Center (Centro) - Bottom (Fundo) Para quem escolheu Small Screen: No primeiro onde está escrito Default você pode escolher o que achar melhor, para visualizar basta clicar Preview. Embaixo em Left Bitmap você pode escolher a imagem que você vai querer que apareça na Esquerda do instalador, a imagem tem que ser no tamanho de 140x316. No outro em Top Bitmap é a imagem que vai ficar em cima, tem que ser no tamanho de 57x57. Depois disso clique em avançar. Nessa parte você pode escrever as informações que quiser, sobre como criar conta, como jogar... Clique em avançar. Nessa parte você vai poder colocar algum termo ou condição para aceitar. Clique em avançar. Aqui você pode escolhar em qual lugar a pasta do seu servidor vai ser salva, aconselho a deixar do jeito que esta. Clique em avançar. Aqui você vai poder escolher se quer ou não que o instalador crie um icone do seu cliente no desktop. Primeiro em Browse ache o seu client, e embaixo escolha o nome que você quer que apareça. Clique em avançar. Aqui não mexa no primeiro, e no segundo você pode escolher se quer que o programa execute o seu cliente quando a instalação terminar, para isso clique em browse e escolha o seu cliente. Clique em avançar. Deixe marcado Uninstall Program para que os outros não tenhma problemas para desinstalar o seu cliente. Clique em avançar 2 vezes, desmarque a opção "Do not build the install Program" Vai abrir uma janela para "Salvar como" coloque Install e feche, se ele pedir pra salvar mais alguma coisa coloque com o nome de Install Config.1 ponto -
[Moveevent] Tiles Para Hunt
Lucasyeah reagiu a Demonbholder por um tópico no fórum
Olá pessoal do XTibia! Venho aqui, mais uma vez, apresentar um script desenvolvido por min e pelo Vodkart. O script consiste em um sistema de tiles (pisos) com action ids onde eles adicionam uma porcentagem de vida e mana para o jogador, e ainda pode ser usado como armadilha, podendo ser usado em diversas quests. Segue o script e a explicação deste: Como não havia as funções necessárias para o desenvolvimento do script, estas foram criadas no próprio e estão funcionando perfeitamente. Para adicionar o script, vá em data/movements/scripts, crie um arquivo .lua e cole isto dentro dele: No script acima, você irá escolher dois action id, um para o script de cura, e outro para as armadilhas. No caso, eu escolhi o action id 60160 para a cura, e o action id 60161 para as armadilhas. Azul: Action id usado nos tiles, lembrando que o action id do tile de cura, e o action id do tile de armadilha deve ser diferente. Vermelho: Tempo que vai ficar adicionando/removendo vida e mana do jogador. Verde: Quanto que vai ser adicionado de vida e mana ao jogador em porcentagem, ou seja, vai adicionar tanto por cento da vida máxima do jogador. 1/10 = 10% 2/10 = 20% 3/10 = 30% 4/10 = 40% 5/10 = 50% 6/10 = 60% 7/10 = 70% 8/10 = 80% 9/10 = 90% 1 = 100% Laranja: Quanto que vai remover de vida e mana do jogador (desta vez, não em porcentagem!). Marrom: Este é o tempo necessário para o jogador poder usar o tile e recuperar vida; pode ser configurado com a seguinte conta: Numero_de_Segundos Multiplicado_por Tantas_Vezes Exemplo: 3600*24 -- No caso, são 3600 segundo, o equivalente a uma hora, multiplicado por 24, resultando em um dia. Se você esta por dentro das novidades do forum, certamente já adicionou o script do Vodkart, que se encontra neste link: Script do Vodkart Se já adicionou e seguiu todos os passos exatamente como esta dito lá, o script se torna menor, menos complexo e mais configurável, então pode usar, ao invés do script acima, este outro: A unica diferença é que se você já adicionou as funções do Vodkart, poderá contar com elas e usar o script acima, porém, os dois estão funcionando igualmente. Após ter adicionado um dos scripts, vá em data/movements, abra o arquivo movements.xml e cole esta tag em algum lugar dele: Azul: Action ids usados nos tiles. Cinza: Nome do arquivo .lua criado para adicionar um dos scripts acima. Espero que gostem, e comentem, até a próxima!1 ponto -
Bom Venho hoje até aqui para mostrar a membros do XTIBIA como criar uma cave SWAMP Corretamente. 1º Passo. Criar o Formato da cave, usando os IDS a seguir.. Assim você tento criatividade poderá conseguir um formato diferente e legal. 2º passo. Criando o formato do swamp a seguir e sempre fazendo perto das borda da cave,nunca espalhado. segue a seguir os IDS. ficando desse jeito... 3ºPasso Você usara Plantas especificas para usar em pântanos "SWAMP" e distribuirá corretamente e nunca uma perto da outra e sempre pelo menos 1 sqm de distancia,usara também pedras pequena e grande, mas não exagere nas pedra grande Também usara cogumelos sempre posicionado perto do swamp. segue os ids que você deverá usar: Assim fazendo o que eu falei acima fica desse jeito... 4º Passo Você usará Debris a seguir posicionando nos cantos perto das bordas e também no meio da cave e sempre não exagere no Debris. segue os ids a seguir... Assim fazendo corretamente o que que fiz ficará desse jeito: 5º Passo Bom aqui você estará quase finalizando você vai adicionar tufos e pedrinhas andáveis no chão e sempre posicionando corretamente e não exagerando por exemplo: tufos grandes vai ficar mais perto do swamp e os pequeno mais no meio da cave as pedras pequenas ficara tanto perto e longe do swamp. Segue a image dos ids a seguir e como ficará: depois de pronto: 6º Passo. Ultimo passo você só adicionara o chão da cave, que sempre será a ultima coisa que você adicionara. segue os ids a seguir: Agora Finalizado... Obrigado pela atenção pois demoro um pouco a explicação Se te ajudei ou se gosto do Tutorial Da REP + Até o próximo Tutorial.... Agora finalizado1 ponto
-
Broadcast Na Alavanca
fabriciosouza reagiu a luisfelipinho15 por uma questão
Nao pq eu testei aki e pego so que tava sem guild dai nem apareçeu a guild '-' Testa aew e ve se pega esueçe do rep nao em '-'1 ponto -
Olá gente, este tutorial é bem simples e eu achei no mapa do pokémon Dash, então vamo lá! Primeiramente ta aqui uma imagem do resultado: ▪ Abra seu mapa editor e procure pelo item de ID:1395 e depois pelo item de ID:4187! ▪ Agora coloque dois do item 4387 um emcima do outro para obter um resultado parecido com o da imagem A. ▪ Logo depois coloque o item 1395 na frente do 4187 e o item de ID:1394 atraz do 4187 ficando como na imagem B. ▪ Agora procure pelas ID:4522,4523,4524,4525 e junte elas conforme o seu gosto formando um quadrado! (Destacado em vermelho) ▪ Você pode fazer o passo acima ja em cima do 4187 ou você pode fazer separado selecionar tudo e mover para o SQM do 4187! Agora você pode adicionar detalhes para esconder o 4187... ▪ Olha eu fiz um exemplo, veja na imagem abaixo. É isso pessoal quem quiser baixar esse detalhe vou passar o link de download logo aqui embaixo. Se você gostou comente e me dá um pontinho positivo de reputação ae! Download Até a proxima!1 ponto
-
Bug Site
eliasjunior157 reagiu a PauloMuller por um tópico no fórum
cara nao intendi essse ultimo post que vc falou sera que nao iria ser mas facil me add no msn para nao fazer varios post ae depois eu dava rep+ apra vc aki no topico e davo uns rep+ em cada dia. Beleza add ai paulomuller_santos@hotmail.com ( email de trabalho só vo ajudar nisso blz) há só avisando antecipadamente eu era Hacker antes então nada de fica pegando meu IP blz, casso note qualquer tentativa de invasão ou envio de ao meu computador de virus alerto que seu pc não irá mais funcionar, quiser tirar a duvida é só tentar Vo adorar me diverti, mais casso não tente nada disso não se preocupe estou aponsentado.1 ponto -
Seus parâmetros na função onDeath estão errados. O certo function onDeath(cid, corpse, deathList) Onde deathList é uma tabela, deathList[1] é quem deu o último hit e deathList[2] quem hitou mais. (Não sei se é exatamente essa ordem). Seu script ficaria então: function onDeath(cid, corpse, deathList) local mostDamageKiller = deathList[1] -- Se estiver errado coloque 2 no lugar do 1 registerCreatureEvent(cid, "monster2") doSummonCreature("castle warlock", getCreaturePosition(cid)) doBroadcastMessage("O jogador "..getPlayerName(mostDamageKiller).." matou o poderoso boss ".. getCreatureName(cid) .."") end1 ponto
-
Login
luisfelipinho153 reagiu a luisfelipinho15 por uma questão
Tenta aew.Poem isso no teu login.lua poem td. REP+ Aew ne1 ponto -
Como Liberar Port 8090 Do Firewall E Moden
diegobezerra reagiu a decosiqueira por um tópico no fórum
Nem sempre meu amigo. Voltando ao assunto, não recomento desativar o firewal, pois você vais hostia um server e abrir todas as portas possíveis para ataque, adicione somente o seu distro, caso isso ainda não resolva segue abaixo os passos para liberar as portas para seu modem. http://192.168.1.254 -> Toolbox -> Game & Application Sharing -> Configure -> Create a new game or application. No menu, clique em \'\'Advanced\'\', nos tópicos que se abriram em baixo de \'\'Advanced\'\' clique em \'\'NAPT\'\' agora clique em \'\'New\'\' escolha o \'\'Protocol\'\' da porta que você quer abrir: TCP ou UDP. Em \'\'Inside IP:\'\' digite: 10.0.0.1 (no caso como tenho rede é assim), em \'\'Outside IP:\'\' deixe: 0.0.0.0 em \'\'Inside Port:\'\' coloque o número da porta que você quer abrir, em \'\'Outside Port:\'\' coloque o mesmo número da porta que você quer abrir, agora clique em \'\'Apply\'\' EXEMPLO PARA ABRIR A PORTA 4662: Clique em New, preencha os campos da seguinte forma: Protocol: TCP (dependendo da porta o protocolo pode ser UDP a 4662 será sempre TCP) Inside IP: 192.168.1.1 Outside IP: 0.0.0.0 Inside Port: 4662 o número da porta que você quer abrir) Outside Port: 4662 (o mesmo número da porta que você quer abrir) Clique em \'\'Apply\'\' OBS: os modems adsl st510v6 vem padrão de fabrica com a port:90 bloqueada. Depois você abre a porta 4672 ela é UDP da msm forma, mas coloca em protocol UDP Depois lá em cima Clique em "Save All" e já era está configurado no site da abusar tem mais alguns artigos sobre seu modem abusar speedtouch1 ponto -
Oi galera do xtibia, alguns já me conhece , posto scripts na seção de actions/talk/move! Aqui está a versão 3.0 do PokeServer TFS 0.3.6pl1, ~~( O que contém na versão 3.0? ) ~~ ~~>Fly System - Bug corrigido ~~>Ride System- Bug corrigido ~~>Catch System- Bug corrigido ~~>Go/back System- Bug corrigido ~~>Stones System - Bug corrigido ~~>Npc Heal - Bug arrumano ~~>Todos os 151 pokemons (50% configurados) ~~>Skill System - Para cada tipo de pokemon é um poder difirente! ~~>Mapa Svke 70% ~~>Todas as outfits Stones,Go/back,Npc,Fly,Ride,Skill, foram testados, então não venha encher o saco falando merda <--! Download !--> Server 3.0: http://www.speedyshare.com/files/27334775/_8.54_Pokeserver_Tfs_0.3.6_V3.0_.rar Scan: http://www.virustotal.com/file-scan/report.html?id=30ca0cc4cd8c969829598bc536ccf60df7c44c76c72099e45c7d04278e4a91e9-1299846303 Client http://www.speedyshare.com/files/26818389/Pokemon_Flash_client.rar Versão 3.0 do server de pokemon Faça você mesmo! ~~>Os pokemons que você não conseguir da catch, faça o seguinte: Ao matar o pokemon de look no corpse dele, verifique se o nome está certo, caso não esteja arrume em item/items.xml ~~>Se alguns pokemons não parar de atacar você, ou eles ficar "doidos", modifique para isso no xml do pokemon: <targetchange interval="1000" chance="1000"/> ~~>Mapa editor: o mapa editor que eu uso é o remeres normal, para abrir com as sprites do P.O, faça o seguinte: --(Abra o mapa editor -> File -> Preferences -> Client Version: Default Client version 8.54, e desmarque as duas ultimas opções!!)-- Créditos ao Drakylucas por me ajuda a fazer os scripts! Não se esqueça de clicar ali no icone verde1 ponto
-
Para akeles ots q é /addvip "e o nome do player esta aki o npc pros players nao ficarem esperando algum gm ou god entra pra paga vip... Primeiro va na pasta NPC e depois copie um arquivo e renomie para Dimi, e coloque isso dentro: Depois va em Npc/Scripts copie um arquivo lua e renomei para dimi e cole isso dentro. explicação: Vermelho: é o preço da vip Azul: é a action da vip. Bom é isso dps é so colocar no ot!! Espero ter ajudado! Creditos: turucai:50% Luquette:50% Falowsss!1 ponto