Ir para conteúdo

Ohko

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    Ohko recebeu reputação de Leonardo Skutcrz em Quando Clico No Bau Da Quest Nao Da Iten Nenhum   
    Usou a mesma ID do baú? Quando clica no baú aparece algum erro no log do server?
  2. Gostei
    Ohko deu reputação a Bruno Minervino em Compilando TFS 1.3 com vídeo-aula   
    Compilando TFS 1.3 no Windows

    1. Baixe os softwares requeridos
     
    Para compilar o The Forgotten Server no Windows, você vai precisar:
     
    Visual Studio 2015 (Compilador)
    TFS SDK v3.2 (libs)
    Libs do Boost C++ (32-bits, 64-bits)
     
    2. Instale os softwares requeridos

    Após ter baixado os softwares listados na etapa acima, comece instalando o Visual Studio e Boost C++. Extraia o TFS SDK v3.2 em qualquer pasta do seu computador e execute o arquivo "register_tfssdk_env.bat" para setar a variável de ambiente do local onde está o TFS SDK, assim nosso compilador irá encontrar as libs quando começar a compilar. Mova o arquivo "register_boost_env.bat" da pasta do TFS SDK para a pasta onde você instalou as libs do Boost C++ e execute-o (se você seguiu os passos do instalador, está esta na pasta chamada boost_1_62_0).

    3. Baixe as sources

    Se você possuir o Git Client instalado, você poderá clonar a última cópia com este comando:
     
    > git clone https://github.com/otland/forgottenserver.git  
    Se você não possuir o Git Client instalado, você poderá baixar a última cópia do The Forgotten Server através do link: https://github.com/otland/forgottenserver/archive/master.zip

    4. Compilando

    Procure o diretório vc14 na pasta do The Forgotten Server que você baixou, e abra o arquivo "theforgottenserver.sln". Isso deverá iniciar o Visual Studio 2015 e você estará pronto para continuar.

    Para configurar a compilação, navegue para Build -> Configuration Manager no menu superior. Um popup deverá aparecer onde você poderá escolher entre "Release" ou "Debug" para compilar, escolha também para qual Plataforma você irá compilar: 32-bits (Win32) ou 64-bits (x64).

    Para iniciar a compilação, abra o menu Build novamente e clique em Build Solution (Ctrl + Shift + B).

    5. Vídeo-aula

    https://www.youtube.com/watch?v=Zfil84FMJsk

    6. Créditos
    Mark - Autor do tutorial e do projeto The Forgotten Server
    Bruno Minervino - Tradução e gravação do vídeo
     
  3. Gostei
    Ohko deu reputação a Absolute em [Pagseguro Automático] 100% e com Double Points OPCIONAL   
    Fala linduxos do TK, hoje vim trazer para vocês um sistema que venho modificando a algum tempo.
    O Sistema de pagseguro automático, ao longo do script ensinarei perfeitamente como instalar/configurar.
    Lembrando que uso esse sistema em um servidor meu e está 100% entregando os pontos no mesmo instante, adicionei a opção de entregar pontos dobrados, para promoção double points acima de X valor.
     
    Vá em sua pasta www ou htocs/config abra o arquivo config.php e procure por: $config['site']['layout'] = ... embaixo disto adicione o seguinte:
     
    // Pagseguro Automático by Absolute on Luminera // 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'; Simples explicação sobre este passo: em SEU E-MAIL DO PAGSEGURO basta colocar o seu e-mail do pagseguro, ficando como exemplo:
    $config['pagseguro']['email'] = '[email protected]';        (não mexa em mais nada)
     
    Próximo passo:
    Agora vá na sua pasta www ou htocs e crie um arquivo chamado pagseguro_retorno.php (Extensão PHP formato de página PHP), dentro do pagseguro_retorno.php adicione:
     
    <?PHP $host = "localhost"; /* HOST */ $user = "root"; /* USER */ $passwd = "SENHADOPHPMYADMIN"; /* PASSWORD */ $db = "NOMEDADATABASE"; /* DB */ ############################################################## #                         CONFIGURAÇÕES ############################################################## $retorno_token = 'SEUTOKENPAGSEGURO'; // Token gerado pelo PagSeguro 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 } ############################################################### #            ATENÇÃO TIBIAKING  NÃO ALTERE DESTA LINHA PARA BAIXO OK? Absolute Agradeçe hihi # $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 ($NumItens >= 5) { $pontosadd = $NumItens * 2; } else { $pontosadd = $NumItens; } if ($StatusTransacao == "Aprovado") { mysql_query("UPDATE accounts SET premium_points = premium_points + '$pontosadd' 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> Explicação de configuração deste passo:
    Coloque a senha que você usa para entrar no phpmyadmin aqui: $passwd = "SENHADOPHPMYADMIN"; /* PASSWORD */
    Exemplo de como ficaria: $passwd = "absolute123"; /* PASSWORD */
    Coloque aqui o nome que está seu banco de dados (o mesmo que vai no config.lua, onde salva os characters, contas e cia):
    $db = "NOMEDADATABASE"; /* DB */ ;
    Exemplo de como ficaria:
    $db = "otserver"; /* DB */
     
     
    IMPORTANTE, TOKEN Pagseguro!
    Você irá entrar neste link, aparecerá uma página pedindo para colocar a url de retorno, no entanto você colocará o seu site terminado em /pagseguro_retorno.php, exemplo de link para colocar: http://otglobal.com/pagseguro_retorno.php (LEMBRANDO QUE É APENAS UM EXEMPLO, SERÁ SEUSITE.COM/pagseguro_retorno.php, como na imagem a seguir:

    Pós verificar a seleção do "Ativar" e o link correto clique em Salvar.
    Agora descendo um pouco esta página onde terá a opção a cima terá uma opção como a imagem a seguir:

     
    Clique em GERAR, você receberá o seu código token e coloque no script que estará na sua pasta www ou htocs, mude na linha:
    $retorno_token = 'SEUTOKENPAGSEGURO'; // Token gerado pelo PagSeguro
    EM SEUTOKENPAGSEGURO coloque o TOKEN que você acabou de pegar, será vários números e letras, exemplo de como ficaria:
    $retorno_token = 'AE89464AE8145487484PAEA978E91'; // Token gerado pelo PagSeguro
     
    DOUBLE POINTS EXPLICAÇÃO:
    Neste mesmo script há algumas linhas com a seuginte função:
    if ($NumItens >= 5) {
    $pontosadd = $NumItens * 2;
    Isto quer dizer, > 5 (A cima de 5 pontos, receba: NumItens * 2, receba em 2x PONTOS EM DOBRO!)
    Para alterar o valor a cima que a pessoa receberá em dobro: NumItens >= 5) 5 pontos ou mais a pessoa receberá em dobro, caso seja para qualquer valor, troque o 5 pelo 1.
    Caso não deseje DOUBLE POINTS e sim 50% do valor em pontos, exemplo: 10R$ = 15 Pontos, altere para:
    $pontosadd = $NumItens * 1.5;
    Caso não deseje promoção e queira que seja 1 Real = 1 Ponto:
    $pontosadd = $NumItens * 1;
     
     
     
     
    Próximo passo:
     
    Calma gente, está quase acabando eu prometo, então abra o seu PHPMYADMIN, localhost/phpmyadmin ou seusite.com/phpmyadmin, exemplo: www.absolutewar.com/phpmyadmin ; absoluteot.servegame.com/phpmyadmin, clique na opção SQL do phpmyadmin (como mostrarei na imagem e de executar.

     
     
     
    Código a inserir no "espaço":
    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; Pós executar irá aparecer uma mensagem que o código foi aceito e uma tabela nova foi criada, como na imagem a seguir:

     
     
     
    Agora por fim o ÚLTIMO PASSO
    Novamente na pasta www ou htdocs substitua o seu arquivo donate.php por este:
     
    <?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. Você pdoerá acessar o shop offer e desfrutar dos melhores items do servidor! <?php } ?>'; } ?> Pronto galera tão fácil né? agora vocês poderão pegar seu guarda sol, sua água de coco e sentar na sua cadeira de praia enquanto o script entregará os pontos automáticamente em menos de 1 minuto.
     
    Espero ter ajudado, quaisquer dúvidas podem solicitar no tópico ou até mesmo me mandar uma mensagem privado que estarei disposto a ajuda-los.
     
    Créditos:
    Absolute (EU)
    Matheus Sesso pela página donate.php
     
     
    Nos vemos na próxima!
    Enjoy.
  4. Gostei
    Ohko deu reputação a JonatasLucasf em Gesior 1.0 [TFS 1.O] NEW   
    Mas afinal, o que esse Gesior tem de diferente?
    É completamente seguro e estável. Página "createaccount" Sem Bug. Possui um Helpdesk avançado. Possui diversas páginas explicativas. Página de donate personalizada e funcional. Shopping completamente Moderado Layout impecável e completamente perfeito. Entre outras diversas características.                                  Algumas Prints
    Latest News

     
     
     
    Shop System Moderado Por Min

     
    Pagina De Compra Points Moderado Por Min
     

    Essa versão do Gesior só funciona na versão 1.0 do TFS!
     
     
    Créditos:
    Base por Victor Modificado e Configurado Por Min Liane. POSTADO POR MUDROCK EM OUTRO FÓRUM! Download:
    http://www.speedysha...S82t/htdocs.rar
     
     
    Obs: A Database Podem Usa A Do Victor Fasano Raful v2
     
    Scan --> https://www.virustot...sis/1420379894/
  5. Gostei
    Ohko deu reputação a FLC em [10.77] Ilha do Papai Noel   
    Ilha do papai Noel
     10.77 


    Imagens:
















    Download = https://mega.nz/#!ylVVBDLC!l8CuWLNRuNSFV4M5VOez-ad0mRC-LBvsWZ2UUCGiLcU

    Scan =  https://www.virustot...sis/1449786425/


  6. Gostei
    Ohko deu reputação a vankk em [Modal Window] Addon & Mount Doll   
    Achei esse script na OtLand, e achei interessante, é um script para addon doll e mount doll, mas ele usa Modal Window. Sem digitar !addon mage. Tudo o que voce precisa fazer é selecionar a montaria/addon na lista.
     
    Testado em TFS 1.1 e 1.2
     
    Registre no login.lua
    'modalAD', 'modalMD' actions.xml
    <action itemid="8982" script="modalAD.lua"/> <action itemid="9019" script="modalMD.lua"/> actions - modalMD.lua
    local mounts = { [1] = {name = "Widow Queen", ID = 1}, [2] = {name = "Racing Bird", ID = 2}, [3] = {name = "War Bear", ID = 3}, [4] = {name = "Black Sheep", ID = 4}, [5] = {name = "Midnight Panther", ID = 5}, [6] = {name = "Draptor", ID = 6}, [7] = {name = "Titanica", ID = 7}, [8] = {name = "Tin Lizard", ID = 8}, [9] = {name = "Blazebringer", ID = 9}, [10] = {name = "Rapid Boar", ID = 10}, [11] = {name = "Stampor", ID = 11}, [12] = {name = "Undead Cavebear", ID = 12}, [13] = {name = "Donkey", ID = 13}, [14] = {name = "Tiger Slug", ID = 14}, [15] = {name = "Uniwheel", ID = 15}, [16] = {name = "Crystal Wolf", ID = 16}, [17] = {name = "War horse", ID = 17}, [18] = {name = "Kingly Deer", ID = 18}, [19] = {name = "Tamed Panda", ID = 19}, [20] = {name = "Dromedary", ID = 20}, [21] = {name = "King Scorpion", ID =21}, [22] = {name = "Rented Horse", ID = 22}, [23] = {name = "Armoured War Horse", ID = 23}, [24] = {name = "Shadow Draptor", ID =24}, [25] = {name = "Rented Horse", ID = 25}, [26] = {name = "Rented Horse", ID = 26}, [27] = {name = "Ladybug", ID = 27}, [28] = {name = "Manta Ray", ID = 28}, [29] = {name = "Ironblight", ID =29}, [30] = {name = "Magma Crawler", ID = 30}, [31] = {name = "Dragonling", ID = 31}, [32] = {name = "Gnarlhound", ID = 32}, [33] = {name = "Crimson Ray", ID = 33}, [34] = {name = "Steelbeak", ID = 34}, [35] = {name = "Water Buffalo", ID = 35}, [36] = {name = "Tombstinger", ID = 36}, [37] = {name = "Platesaurian", ID = 37}, [38] = {name = "Ursagrodon", ID = 38}, [39] = {name = "The Hellgrip", ID = 39}, [40] = {name = "Noble Lion", ID = 40}, [41] = {name = "Desert King", ID = 41}, [42] = {name = "Shock Head", ID = 42}, [43] = {name = "Walker", ID = 43}, [44] = {name = "Azudocus", ID = 44}, [45] = {name = "Carpacosaurus", ID = 45}, [46] = {name = "Death Crawler", ID = 46}, [47] = {name = "Flamesteed", ID = 47}, [48] = {name = "Jade Lion", ID = 48}, [49] = {name = "Jade Pincer", ID = 49}, [50] = {name = "Nethersteed", ID = 50}, [51] = {name = "Tempest", ID = 51}, [52] = {name = "Winter King", ID = 52}, [53] = {name = "Doombringer", ID = 53}, [54] = {name = "Woodland Prince", ID = 54}, [55] = {name = "Hailtorm Fury", ID = 55}, [56] = {name = "Siegebreaker", ID = 56}, [57] = {name = "Poisonbane", ID = 57}, [58] = {name = "Blackpelt", ID = 58}, [59] = {name = "Golden Dragonfly", ID = 59}, [60] = {name = "Steel Bee", ID = 60}, [61] = {name = "Copper Fly", ID = 61}, [62] = {name = "Tundra Rambler", ID = 62}, [63] = {name = "Highland Yak", ID = 63}, [64] = {name = "Glacier Vagabond", ID = 64}, [65] = {name = "Glooth Glider", ID = 65}, [66] = {name = "Shadow Hart", ID = 66}, [67] = {name = "Black Stag", ID = 67}, [68] = {name = "Emperor Deer", ID = 68}, [69] = {name = "Flying Divan", ID = 69}, [70] = {name = "Magic Carpet", ID = 70}, [71] = {name = "Floating Kashmir", ID = 71}, [72] = {name = "Ringtail Wazzoon", ID = 72}, [73] = {name = "Night Wazzoon", ID = 73}, [74] = {name = "Emerald Waccoon", ID = 74}, } function onUse(player, item, fromPosition, itemEx, toPosition, isHotkey) player:registerEvent("modalMD") local title = "Choose your mount!" local message = "You will receive the mount you select!" local window = ModalWindow(1001, title, message) if player:getItemCount(9019) >= 1 then window:addButton(100, "Confirm") window:setDefaultEnterButton(100) else window:setDefaultEnterButton(101) end window:addButton(101, "Cancel") window:setDefaultEscapeButton(101) for i = 1, #mounts do local o = mounts[i].name if not player:hasMount(mounts[i].ID) then window:addChoice(i, o) end end if window:getChoiceCount() == 0 then window:setMessage("You have all the mounts! You have been awarded the achievement and a custom mount!") --add achievement end window:sendToPlayer(player) return true end actions - modalAD.lua
    local outfits = { [1] = {name = "Citizen", male = 128, female = 136}, [2] = {name = "Hunter", male = 129, female = 137}, [3] = {name = "Mage", male = 130, female = 138}, [4] = {name = "Knight", male = 131, female = 139}, [5] = {name = "Noble", male = 132, female = 140}, [6] = {name = "Summoner", male = 133, female = 141}, [7] = {name = "Warrior", male = 134, female = 142}, [8] = {name = "Barbarian", male = 143, female = 147}, [9] = {name = "Druid", male = 144, female = 148}, [10] = {name = "Wizard", male = 145, female = 149}, [11] = {name = "Oriental", male = 146, female = 150}, [12] = {name = "Pirate", male = 151, female = 155}, [13] = {name = "Assassin", male = 152, female = 156}, [14] = {name = "Beggar", male = 153, female = 157}, [15] = {name = "Shaman", male = 154, female = 158}, [16] = {name = "Norse", male = 251, female = 252}, [17] = {name = "Nightmare", male = 268, female = 269}, [18] = {name = "Jester", male = 273, female = 270}, [19] = {name = "Brotherhood", male = 278, female = 279}, [20] = {name = "Demonhunter", male = 289, female = 288}, [21] = {name = "Yalaharian", male = 325, female = 324}, [22] = {name = "Warmaster", male = 335, female = 336}, [23] = {name = "Wayfarer", male = 367, female = 366}, [24] = {name = "Afflicted", male = 430, female = 431}, [25] = {name = "Elementalist", male = 432, female = 433}, [26] = {name = "Deepling", male = 463, female = 464}, [27] = {name = "Insectoid", male = 465, female = 466}, [28] = {name = "Entrepreneur", male = 472, female = 471}, [29] = {name = "Crystal Warlord", male = 512, female = 513}, [30] = {name = "Soil Guardian", male = 516, female = 514}, [31] = {name = "Demon", male = 541, female = 542}, [32] = {name = "Cave Explorer", male = 574, female = 575}, [33] = {name = "Dream Warden", male = 577, female = 578}, [34] = {name = "Champion", male = 633, female = 632}, [35] = {name = "Conjurer", male = 634, female = 635}, [36] = {name = "Beastmaster", male = 637, female = 636}, [37] = {name = "Chaos Acolyte", male = 665, female = 664}, [38] = {name = "Death Herald", male = 667, female = 666}, [39] = {name = "Ranger", male = 684, female = 683}, [40] = {name = "Ceremonial Garb", male = 695, female = 694}, [41] = {name = "Puppeteer", male = 697, female = 696}, [42] = {name = "Spirit Caller", male = 699, female = 698}, } function onUse(player, item, fromPosition, itemEx, toPosition, isHotkey) player:registerEvent("modalAD") local title = "Choose your outfit!" local message = "You will receive the outfit and both addons!" local window = ModalWindow(1000, title, message) if player:getItemCount(8982) >= 1 then window:addButton(100, "Confirm") window:setDefaultEnterButton(100) else window:setDefaultEnterButton(101) end window:addButton(101, "Cancel") window:setDefaultEscapeButton(101) for i = 1, #outfits do local o = outfits[i].name if not player:hasOutfit(outfits[i].male, 3) and not player:hasOutfit(outfits[i].female, 3) then if outfits[i].name == "Noble" or outfits[i].name == "Norse" then if player:getSex() == 0 then o = o .. "woman" else o = o .. "man" end end window:addChoice(i, o) end end if window:getChoiceCount() == 0 then window:setMessage("You have all the outfits! You have been awarded the achievement and a custom outfit!") --add achievement end window:sendToPlayer(player) return true end creaturescripts.xml
    <event type="modalwindow" name="modalAD" script="modalAD.lua"/> <event type="modalwindow" name="modalMD" script="modalMD.lua"/> creaturescripts - modalMD.lua
    local mounts = { [1] = {name = "Widow Queen", ID = 1}, [2] = {name = "Racing Bird", ID = 2}, [3] = {name = "War Bear", ID = 3}, [4] = {name = "Black Sheep", ID = 4}, [5] = {name = "Midnight Panther", ID = 5}, [6] = {name = "Draptor", ID = 6}, [7] = {name = "Titanica", ID = 7}, [8] = {name = "Tin Lizard", ID = 8}, [9] = {name = "Blazebringer", ID = 9}, [10] = {name = "Rapid Boar", ID = 10}, [11] = {name = "Stampor", ID = 11}, [12] = {name = "Undead Cavebear", ID = 12}, [13] = {name = "Donkey", ID = 13}, [14] = {name = "Tiger Slug", ID = 14}, [15] = {name = "Uniwheel", ID = 15}, [16] = {name = "Crystal Wolf", ID = 16}, [17] = {name = "War horse", ID = 17}, [18] = {name = "Kingly Deer", ID = 18}, [19] = {name = "Tamed Panda", ID = 19}, [20] = {name = "Dromedary", ID = 20}, [21] = {name = "King Scorpion", ID =21}, [22] = {name = "Rented Horse", ID = 22}, [23] = {name = "Armoured War Horse", ID = 23}, [24] = {name = "Shadow Draptor", ID =24}, [25] = {name = "Rented Horse", ID = 25}, [26] = {name = "Rented Horse", ID = 26}, [27] = {name = "Ladybug", ID = 27}, [28] = {name = "Manta Ray", ID = 28}, [29] = {name = "Ironblight", ID =29}, [30] = {name = "Magma Crawler", ID = 30}, [31] = {name = "Dragonling", ID = 31}, [32] = {name = "Gnarlhound", ID = 32}, [33] = {name = "Crimson Ray", ID = 33}, [34] = {name = "Steelbeak", ID = 34}, [35] = {name = "Water Buffalo", ID = 35}, [36] = {name = "Tombstinger", ID = 36}, [37] = {name = "Platesaurian", ID = 37}, [38] = {name = "Ursagrodon", ID = 38}, [39] = {name = "The Hellgrip", ID = 39}, [40] = {name = "Noble Lion", ID = 40}, [41] = {name = "Desert King", ID = 41}, [42] = {name = "Shock Head", ID = 42}, [43] = {name = "Walker", ID = 43}, [44] = {name = "Azudocus", ID = 44}, [45] = {name = "Carpacosaurus", ID = 45}, [46] = {name = "Death Crawler", ID = 46}, [47] = {name = "Flamesteed", ID = 47}, [48] = {name = "Jade Lion", ID = 48}, [49] = {name = "Jade Pincer", ID = 49}, [50] = {name = "Nethersteed", ID = 50}, [51] = {name = "Tempest", ID = 51}, [52] = {name = "Winter King", ID = 52}, [53] = {name = "Doombringer", ID = 53}, [54] = {name = "Woodland Prince", ID = 54}, [55] = {name = "Hailtorm Fury", ID = 55}, [56] = {name = "Siegebreaker", ID = 56}, [57] = {name = "Poisonbane", ID = 57}, [58] = {name = "Blackpelt", ID = 58}, [59] = {name = "Golden Dragonfly", ID = 59}, [60] = {name = "Steel Bee", ID = 60}, [61] = {name = "Copper Fly", ID = 61}, [62] = {name = "Tundra Rambler", ID = 62}, [63] = {name = "Highland Yak", ID = 63}, [64] = {name = "Glacier Vagabond", ID = 64}, [65] = {name = "Glooth Glider", ID = 65}, [66] = {name = "Shadow Hart", ID = 66}, [67] = {name = "Black Stag", ID = 67}, [68] = {name = "Emperor Deer", ID = 68}, [69] = {name = "Flying Divan", ID = 69}, [70] = {name = "Magic Carpet", ID = 70}, [71] = {name = "Floating Kashmir", ID = 71}, [72] = {name = "Ringtail Wazzoon", ID = 72}, [73] = {name = "Night Wazzoon", ID = 73}, [74] = {name = "Emerald Waccoon", ID = 74}, } function onModalWindow(player, modalWindowId, buttonId, choiceId) player:unregisterEvent("modalMD") if modalWindowId == 1001 then if buttonId == 100 then if player:getItemCount(9019) == 0 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You must have a Mount Doll in your backpack!") return false end if choiceId == 0 then return false end player:removeItem(9019, 1) player:addMount(mounts[choiceId].ID) player:getPosition():sendMagicEffect(CONST_ME_FIREWORK_YELLOW) end end end creaturescripts - modalAD.lua
    local outfits = { [1] = {name = "Citizen", male = 128, female = 136}, [2] = {name = "Hunter", male = 129, female = 137}, [3] = {name = "Mage", male = 130, female = 138}, [4] = {name = "Knight", male = 131, female = 139}, [5] = {name = "Noble", male = 132, female = 140}, [6] = {name = "Summoner", male = 133, female = 141}, [7] = {name = "Warrior", male = 134, female = 142}, [8] = {name = "Barbarian", male = 143, female = 147}, [9] = {name = "Druid", male = 144, female = 148}, [10] = {name = "Wizard", male = 145, female = 149}, [11] = {name = "Oriental", male = 146, female = 150}, [12] = {name = "Pirate", male = 151, female = 155}, [13] = {name = "Assassin", male = 152, female = 156}, [14] = {name = "Beggar", male = 153, female = 157}, [15] = {name = "Shaman", male = 154, female = 158}, [16] = {name = "Norse", male = 251, female = 252}, [17] = {name = "Nightmare", male = 268, female = 269}, [18] = {name = "Jester", male = 273, female = 270}, [19] = {name = "Brotherhood", male = 278, female = 279}, [20] = {name = "Demonhunter", male = 289, female = 288}, [21] = {name = "Yalaharian", male = 325, female = 324}, [22] = {name = "Warmaster", male = 335, female = 336}, [23] = {name = "Wayfarer", male = 367, female = 366}, [24] = {name = "Afflicted", male = 430, female = 431}, [25] = {name = "Elementalist", male = 432, female = 433}, [26] = {name = "Deepling", male = 463, female = 464}, [27] = {name = "Insectoid", male = 465, female = 466}, [28] = {name = "Entrepreneur", male = 472, female = 471}, [29] = {name = "Crystal Warlord", male = 512, female = 513}, [30] = {name = "Soil Guardian", male = 516, female = 514}, [31] = {name = "Demon", male = 541, female = 542}, [32] = {name = "Cave Explorer", male = 574, female = 575}, [33] = {name = "Dream Warden", male = 577, female = 578}, [34] = {name = "Champion", male = 633, female = 632}, [35] = {name = "Conjurer", male = 634, female = 635}, [36] = {name = "Beastmaster", male = 637, female = 636}, [37] = {name = "Chaos Acolyte", male = 665, female = 664}, [38] = {name = "Death Herald", male = 667, female = 666}, [39] = {name = "Ranger", male = 684, female = 683}, [40] = {name = "Ceremonial Garb", male = 695, female = 694}, [41] = {name = "Puppeteer", male = 697, female = 696}, [42] = {name = "Spirit Caller", male = 699, female = 698}, [43] = {name = "Glooth Engineer", male = 610, female = 618}, } function onModalWindow(player, modalWindowId, buttonId, choiceId) player:unregisterEvent("modalAD") if modalWindowId == 1000 then if buttonId == 100 then if player:getItemCount(8982) == 0 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You must have a Addon Doll in your backpack!") return false end if choiceId == 0 then return false end player:removeItem(8982, 1) if player:getSex() == 0 then player:addOutfitAddon(outfits[choiceId].female, 3) else player:addOutfitAddon(outfits[choiceId].male, 3) end player:getPosition():sendMagicEffect(CONST_ME_FIREWORK_YELLOW) end end end não sou a melhor pessoa para explicar as coisas, basicamente é isso:
    AD = Addon Doll
    MD = Mount Doll
     
    Se voce quiser trocar o doll, mude no actions.xml o ID, e mude nos scripts, na linha if player:getItemCount(ID) == 0 then - Substitui o ID pelo o ID do doll que voce queira.
     
     
    Créditos: beastn
  7. Gostei
    Ohko deu reputação a Aksz em vps   
    Resolvido
     
    []'s
  8. Gostei
    Ohko deu reputação a Lucas Barreto em [Atualização C1] Colossus Server 10.77 - Servidor NOVO   
    COLOSSUS SERVER 10.77

    Bom Galera do TK, ai vai a minha primeira contribuição para o site. Espero não ter errado ai na postagem e conseguir passar todas informações necessárias para o bom entendimento do Leitor. Sem mais delongas, apresento-lhes o Colossus server.

    CIDADES:

    Colossus*
    Edron
    Ankrahmun
    Gnombase
    Mineland*
    Yalahar
    Svargrond
    Roshamuul
    Gray Beach
    Rathleton
    Alpha Base*

    *Cidades Novas do servidor.

    - Warzone 1, 2, 3;
    - Bank System;
    - Gray Beach City completa 100% (incluindo Subsolo);
    - Monstros 100%;
    - Trainer Offline 100%;
    - Trainer Online 100%;
    - Todas montarias;
    - Taming system funcionando 100%;
    - Database completa;
    - Wrath of Emperor Quest;
    - War System 100%;
    - Market System 100%;
    - Roshamull Completa100% (incluindo subsolo);
    - Oramond Full;
    - POI;
    - Children of a Revolution Quest;
    - The New Frontier Quest;
    - Colossus quest;
    - Varias quests Items Espalhadas pelo mapa;
    - Novos Montros.
    - Todas as Magias Balanceadas para um melhor desempenho. (Foi mudado todos os cálculos das magias). Essa mudança foi feita visando obter um maior empenho do jogador para crescer no jogo, pois as formulas antigas cresciam linearmente. Adotei formulas que crescem exponencialmente. Resultado, quem se dedica ao jogo, treina, upa e busca os melhores itens, sera realmente o mais forte.
     
    - Itens vips criados.
    - Npcs de Addon postos em uma ilha, todas as quest e execuções de addons são idênticas aos métodos do global, e todos os caminhos são direcionados no mapa.
     
    - Todas as questes requerem missão. A inquisition, por exemplo, segue o mesmo raciocínio da quest global.
    - Muitas Hunts novas, todo mapa foi readequado, com isso, talvez as hunts que você encontre no global, não serão as mesma deste servidor.
    - A Knightwatch Tower, da dream chalange quest, foi reformulada, seus teleportes levam a Incríveis desafios.
    - Praticamente todos os items são acessíveis.
    - Wands e rods readequados para uma maior exploração destes items.
    - Todos os monstros do Global. Os novos monstros só poderão ser acessados com a conclusão da Colossus quest, que é um desafio e tanto.
    - Senha do god = god/god

    Dediquei um pouco do meu tempo para estar criando este servidor. Baseei-me no servidor aqui postado pelo Mitsuig
     
    Porem, o mapa foi totalmente editado por mim. Cidade Colossus e Alpha Base foram criadas por mim. As demais cidades foram readequadas para suprir minhas expectativas de jogabilidade do servidor. Todas as quests Globais (Exemplo: POI, Inqui, Children of revolution, The new Frontier, etc.) foram reformuladas para proporcionar mais jogabilidade e iteração no jogo. 
     
    Todo mapa foi Sinalizado para guiar os jogadores à seus devidos destinos. 
     
    ATENÇÃO: O mapa Não é global, Não é Global Compacto também, Não é Baiak. 
     
    Tentei construir um servidor que conduza o  jogador para o maior aproveitamento. O mapa é praticamente 100% utilizável, todas as hunts e quests disponibilizam items e recompensas interessantes. Creio que criei um bom servidor pra galera por online ai. Espero que gostem!!
     
    Bom, eu ja disponibilizei com o TFS compilado em Windows. Recomendo que Compilem vocês mesmo.
    Esse servidor foi feito usando de modelo o do link acima. Contudo, o mais importante mesmo aquié o SERVIDOR e a DATABASE. O resto podem fazer o download de lá que vai funcionar certinho.
     
     
    Downloads:
    SERVIDOR
    Database
    WEBSITE
    TFS-SDK-2.0
    MAP EDITOR

    Imagens:
    Yalahar
    Colossus Quest
    Alpha Base
    Mineland
    Mapa Detalhado
    Mapa Detalhado - Colossus City
    Colossus

     
     
    Créditos: Os mesmos do link acima citado. OTLAND - TFS TEAM; Lucas Barreto.
     
     
     
  9. Gostei
    Ohko deu reputação a Cazuza em [Creaturescripts] Experiencia para Guild (por nº de Jogadores Online)   
    Nome: Experiencia para Guild Função: A pedidos de um membro do forum (TioSlash). Aqui está um script que ira adicionar uma porcentagem de Experiência por jogadores online. Exemplo: Ao alcançar 5  jogadores da Guild Online, todos que estiverem online recebem 2% de xp adicional por jogador. Ou seja, um total de +10% de xp. Bom para servidores com bastante RPG, incentivando a cooperação.  
    Atualizações: Dia 17/08/2014  
    Versão: Testada somente na "10.31". (OTX Server - Galaxy) Créditos:  Kazuza - (eu) Por ter criado.
    TioSlash - Pela Ideia.
    Vodkart - Por ter achado a função dele que retorna os jogadores da Guild ( sem ela com meu nivel de script não teria conseguido).
    xWhiteWolf - Por uma ajudinha.
     
     
    "Pasta Servidor > Data > Creaturescripts > Scripts" crie "ExpGuild.lua".
    function getGuildMembersOnline(GuildId) local players,query = {},db.getResult("SELECT `name` FROM `players` WHERE `rank_id` IN (SELECT `id` FROM `guild_ranks` WHERE `guild_id` = " .. GuildId .. ");") if (query:getID() ~= -1) then repeat table.insert(players,query:getDataString("name")) until not query:next() query:free() end return #players > 0 and players or false end function onLogin(cid) local guild_id = getPlayerGuildId(cid) local minimo = 2 local max = 2 local porcentagem = 2 ----------------------------------------- doPlayerSetExperienceRate(cid, 1) if guild_id == 0 then addEvent(doPlayerSendTextMessage, 200,cid, MESSAGE_STATUS_CONSOLE_RED,"[GUILD] Entre em uma guild para ter bonus de experiencia.") return true end if guild_id > 0 then local membros_online = table.maxn(getGuildMembersOnline(guild_id)) local tabela_membros = getGuildMembersOnline(guild_id) --if #getPlayersByIp(getPlayerIp(cid)) >= max then --doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED,"[GUILD] Players com Multi-Cliente nao contam para ganhar o bonus de experiencia.") --return true --end if membros_online <= minimo then addEvent(doPlayerSendTextMessage, 2000, cid, MESSAGE_STATUS_CONSOLE_RED,"[GUILD] Para ter bonus de experiencia precisa ter mais de "..minimo.." jogadores da guild online.\n Jogadores da Guild Online ["..membros_online.."]") return true end if membros_online > minimo then for var = 1, #tabela_membros do local nomes = getCreatureByName(tabela_membros[var]) local XP = ((membros_online*porcentagem) / 100) + 1.00 doPlayerSetExperienceRate(nomes, XP) addEvent(doPlayerSendTextMessage,1000,nomes, MESSAGE_STATUS_CONSOLE_RED, "[GUILD] A experiencia dos membros da guilda foi aumentada para +"..membros_online*porcentagem.."% - Membro "..getCreatureName(cid).." logou.") end return true end end end "Pasta Servidor > Data > Creaturescripts > Scripts" crie "ExpGuild_out.lua".
    function getGuildMembersOnline(GuildId) local players = {} for _, pid in pairs(getPlayersOnline()) do if getPlayerGuildId(pid) == tonumber(GuildId) then table.insert(players, getPlayerName(pid)) end end return #players > 0 and players or false end function onLogout(cid) if getPlayerGuildId(cid) == 0 then return true else local guild_id = getPlayerGuildId(cid) local membros_online = table.maxn(getGuildMembersOnline(guild_id)) local tabela_membros = getGuildMembersOnline(guild_id) local porcentagem = 2 local minimo = 2 ----------------------------------------- for var = 1, #tabela_membros do local nomes = getCreatureByName(tabela_membros[var]) local membros_online = membros_online - 1 if membros_online <= minimo then doPlayerSetExperienceRate(nomes, 1.0) doPlayerSendTextMessage(nomes, MESSAGE_STATUS_CONSOLE_RED,"[GUILD] Nao tem mais o numero de players necessarios para ganhar o bonus de experiencia - Membro "..getCreatureName(cid).." deslogou.") end if membros_online > minimo then local XP = ((membros_online*porcentagem) / 100) + 1.00 doPlayerSetExperienceRate(nomes, XP) doPlayerSendTextMessage(nomes, MESSAGE_STATUS_CONSOLE_RED, "[GUILD] A experiencia dos membros da guilda foi ajustada para "..membros_online*porcentagem.."% - Membro "..getCreatureName(cid).." deslogou.") end end return true end end   "Pasta Servidor > Data > Creaturescripts" em creaturescripts.xml adicione:
    <event type="login" name="ExpGuild" event="script" value="exp_guild.lua"/> <event type="logout" name="ExpGuild_out" event="script" value="exp_guild_out.lua"/> "Pasta Servidor > Data > Creaturescripts > Scripts" em login.lua adicione:
    Lá em baixo, onde tem registerCreatureEvent ponha esses dois:
    registerCreatureEvent(cid, "ExpGuild") registerCreatureEvent(cid, "ExpGuild_out")  
     
    PS: Qualquer erro, postem. É muito importante. Como este é meu segundo script na vida. Pode ser que aconteça de dar erros. Eu testei pouco.
  10. Gostei
    Ohko deu reputação a vankk em Servidor fecha sozinho depois de um tempo   
    Se for Linux use o comando gdb para iniciar o servidor e verificar a causa do problema, se não for Linux, troque
  11. Gostei
    Ohko deu reputação a Leonardo Skutcrz em Como faço pra hospedar o site do meu ot?   
    mais como assim isso é dentro do painel da hospedagem?
  12. Gostei
    Ohko deu reputação a gah silva em como muda o mapa do otsever ?   
    É  so clicar em gostei  man
     
  13. Gostei
    Ohko deu reputação a vankk em como muda o mapa do otsever ?   
      Esta é uma mensagem automática, este tópico foi movido para a área correta.
      Regras do fórum: http://www.tibiaking.com/forum/topic/1281-regras-gerais/#comment-7680

    Este tópico foi movido:
    De: Tutoriais de Mapping > Mapping OTServ > OTServ > Escola de Mapping
    Para: Suporte OTServ > OTServ > Suporte de Mapping
  14. Gostei
    Ohko deu reputação a Lukz em Como fazer o Xenobot "revelar/atacar" monstro invisivel com runa.   
    local runeID = 3161--GFB BattleMessageProxy.OnReceive('Anti Stalker', function(proxy, message) if message:find("You lose (.+) hitpoints due to an attack by a stalker.") and Self.TargetID() == 0 then Walker.Stop() Self.UseItemWithMe(runeID) Walker.Start() end end) da pra usar com QUALQUER bixo q fique invisivel, só mudar o nome do bixo: 
     
     
     
    obs: mude onde ta de vermelho, colocando o nome do bixo q deseja.
  15. Gostei
    Ohko deu reputação a Lukz em Como fazer o Xenobot "revelar/atacar" monstro invisivel com runa.   
    esse bixo é do global? pesquisei aki no tibia wiki e n achou '-'
     
    tbm n sabia se o script funfava com o hit no mana e vc teve um errinho ai q até entrei num ot pra ver.
     
    não é "mana hitpoints due.." é só "mana due..."
     
    local runeID = 3161 BattleMessageProxy.OnReceive('zurik cyclops', function(proxy, message) if message:find("You lose (.+) mana due to an attack by a zurik cyclops.") and Self.TargetID() == 0 then Walker.Stop() Self.UseItemWithMe(runeID) Walker.Start() end end)  
    testei e funfou aki, lembra de colocar tbm o id da runa 3161 é avalanche.
  16. Gostei
    Ohko deu reputação a Lukz em Xenobot não abre corpo, como adicionar?   
    ja tentou colocar esse id? tem uns bixo q quando morre fica um ID depois q vc pega o loot muda o ID.. quando vc vai colocar o ID no arquivo xml, vc fecha o xenobot?


    usa esse script:

     
    -- [TARGET LOOTER by #Rafal ] -- items = {'royal helmet', 'gold ingot', 'medusa shield'} -- loot to backpack ground_items = {'mace','cheese'} -- throw to ground bp = 'blue backpack' -- default normal brown ropes_ladders = {1948, 386} -- id when cannot open -- [ DON'T EDIT BELOW ] -- OPEN = nil print('[Target Looter] by #Rafal') while true do SI = Creature.GetByID(Self.TargetID()) if Self.TargetID() ~= 0 then pos = SI:Position() if not table.isStrIn(ropes_ladders, getTileUseID(pos.x, pos.y, pos.z).id) then SI_1 = SI OPEN = true end end if OPEN and not SI_1:isVisible() then p = SI_1:Position() OPEN = nil if not table.isStrIn({1948, 386}, getTileUseID(p.x, p.y, p.z).id) then Self.UseItemFromGround(p.x, p.y, p.z) end end for i = 0, #Container.GetAll() do cont = Container.New(i) PUT = Container.New(bp) for SPOT, item in cont:iItems() do if (cont:isOpen() and PUT:EmptySlots() > (0) and table.isStrIn({"The", "Dead", "Slain", "Dissolved", "Remains", "Elemental"}, string.match(cont:Name(), "%a+"))) then if (table.isStrIn(items, Item.GetName(item.id))) then cont:MoveItemToContainer(SPOT, PUT:Index(), 0) elseif (table.isStrIn(ground_items, Item.GetName(item.id))) then pos = Self.Position() cont:MoveItemToGround(SPOT, pos.x, pos.y, pos.z) end end end end for i = 0, #PUT do if PUT:isFull() and PUT:isOpen() then for spot = PUT:ItemCount() - 1, 0, -1 do if Item.GetName(PUT:GetItemData(spot).id) == bp then PUT:UseItem(spot, true) end end end end end

Informação Importante

Confirmação de Termo