Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.


  • Conteúdo Similar

    • Por Shiuns
      Versão Testada: Tibia 8.60 // TFS 0.3.6 & 0.4
       
      Descrição: Evita jogadores que dão exit nos treiners upando skills. Eles são kikados automaticamente depois de alguns minutos e algumas verificações.
       
       
      exit_treiner.lua
      config_exit_treiner = { Warning = "Favor trocar seu char de direção para evitar que ele seja kikado", -- mensagem time = 3, -- a cada 3 minutos irá checar roudsKick = 3, -- se ele estiver parado na mesma direção por 3 checagem seguidas será kikado storages = {879780,879781}, -- n edite treiners = {"Trainer", "Training Monk"} -- coloque aqui os Treiners do seu ot } --[[Functions List]]-- function doAddRoundExitTreiner(cid) if not isCreature(cid) then return LUA_ERROR end setPlayerStorageValue(cid, config_exit_treiner.storages[1], getPlayerStorageValue(cid, config_exit_treiner.storages[1]) < 0 and 1 or getPlayerStorageValue(cid, config_exit_treiner.storages[1])+1) if getRoundExitTreiner(cid) >= config_exit_treiner.roudsKick then doKickExitTreiner(cid) end end function getRoundExitTreiner(cid) if not isCreature(cid) then return LUA_ERROR end return getPlayerStorageValue(cid, config_exit_treiner.storages[1]) < 0 and 1 or getPlayerStorageValue(cid, config_exit_treiner.storages[1]) end function doResetExitTreiner(cid) if not isCreature(cid) then return LUA_ERROR end return setPlayerStorageValue(cid, config_exit_treiner.storages[1], 0) end function doKickExitTreiner(cid) if not isCreature(cid) then return LUA_ERROR end if getTileInfo(getCreaturePosition(cid)).protection or not getTreinerSpectators(cid) then doResetExitTreiner(cid) setPlayerStorageValue(cid, config_exit_treiner.storages[2], 0) else doResetExitTreiner(cid) doRemoveCreature(cid) end end function getTreinerSpectators(cid) local t = getSpectators(getCreaturePosition(cid), 2, 2, false) if t then for _, cid in ipairs(t) do if isMonster(cid) and isInArray(config_exit_treiner.treiners, getCreatureName(cid)) then return true end end end return false end function doCheckLookDirExitTreiner(cid, r) if not isCreature(cid) then return LUA_ERROR end if getTreinerSpectators(cid) then local new = getCreatureLookDirection(cid) if r == new then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, config_exit_treiner.Warning) doAddRoundExitTreiner(cid) else doResetExitTreiner(cid) end addEvent(doCheckLookDirExitTreiner,config_exit_treiner.time*60*1000, cid, new) else setPlayerStorageValue(cid, config_exit_treiner.storages[2], 0) doResetExitTreiner(cid) end end --[[Script System]]-- function onLogin(cid) doResetExitTreiner(cid) setPlayerStorageValue(cid, config_exit_treiner.storages[2], 0) registerCreatureEvent(cid, "NewExitTreiner") return true end function onCombat(cid, target) if not isCreature(cid) or not isPlayer(cid) then return true end if getPlayerStorageValue(cid, config_exit_treiner.storages[2]) - os.time() > 0 then return true end if not isMonster(target) then return true end if isMonster(target) and not isInArray(config_exit_treiner.treiners, getCreatureName(target)) and getRoundExitTreiner(cid) > 0 then setPlayerStorageValue(cid, config_exit_treiner.storages[2], 0) doResetExitTreiner(cid) return true end if isMonster(target) and isInArray(config_exit_treiner.treiners, getCreatureName(target)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, config_exit_treiner.Warning) addEvent(doCheckLookDirExitTreiner, config_exit_treiner.time*60*1000, cid, getCreatureLookDirection(cid)) setPlayerStorageValue(cid, config_exit_treiner.storages[2], os.time()+5*60) end return true end  
      TAG
      <event type="login" name="ExitTreiners" event="script" value="exit_treiner.lua"/> <event type="combat" name="NewExitTreiner" event="script" value="exit_treiner.lua"/>  
    • Por Helliab
      Compra e venda de personagens por pontos para Gesior ACC.
      Vamos lá..
       
      FOTOS:
       
      Venda:

       
       
      Compra:

       

       
       
      Crie um arquivo dentro do htdocs, chamado buychar.php e dentro dele coloque:
       
      <?PHP if($logged) { if ($action == '') { $main_content .= '<center>Here is the list of the current characters that are in the shop!</center>'; $main_content .= '<BR>'; $main_content .= '<TABLE BORDER=1 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR='.$config['site']['vdarkborder'].'><TD CLASS=white width="64px"><CENTER><B>Name</B></CENTER></TD><TD CLASS=white width="64px"><CENTER><B>Vocation</B></CENTER></TD><TD CLASS=white width="64px"><CENTER><B>Level</B></CENTER></TD><TD CLASS=white width="64px"><CENTER><B>Price</B></CENTER></TD><TD CLASS=white width="64px"><CENTER><B>Buy it</B></CENTER></TD></TR>'; $getall = $SQL->query('SELECT `id`, `name`, `price`, `status` FROM `sellchar` ORDER BY `id`')or die(mysql_error()); foreach ($getall as $tt) { $namer = $tt['name']; $queryt = $SQL->query("SELECT `name`, `vocation`, `level` FROM `players` WHERE `name` = '$namer'"); foreach ($queryt as $ty) { if ($ty['vocation'] == 1) { $tu = 'Sorcerer'; } else if ($ty['vocation'] == 2) { $tu = 'Druid'; } else if ($ty['vocation'] == 3) { $tu = 'Paladin'; } else if ($ty['vocation'] == 4) { $tu = 'Knight'; } else if ($ty['vocation'] == 5) { $tu = 'Sorcerer'; } else if ($ty['vocation'] == 6) { $tu = 'Druid'; } else if ($ty['vocation'] == 7) { $tu = 'Paladin'; } else if ($ty['vocation'] == 8) { $tu = 'Knight'; } $ee = $tt['name']; $ii = $tt['price']; $main_content .= '<TR BGCOLOR='.$config['site']['darkborder'].'><TD CLASS=black width="64px"><CENTER><B><a href="index.php?subtopic=characters&name='.$tt['name'].'">'.$tt['name'].'</a></B></CENTER></TD><TD CLASS=black width="64px"><CENTER><B>'.$tu.'</B></CENTER></TD><TD CLASS=black width="64px"><CENTER><B>'.$ty['level'].'</B></CENTER></TD><TD CLASS=black width="64px"><CENTER><B>'.$tt['price'].'</B></CENTER></TD><TD CLASS=black width="64px"><CENTER><B> <form action="?subtopic=buychar&action=buy" method="POST"> <input type="hidden" name="char" value="'.$ee.'"> <input type="hidden" name="price" value="'.$ii.'"> <input type="submit" name="submit" value="Buy it"></B></CENTER></TD></TR></form>'; } } $main_content .= '</TABLE>'; } if ($action == 'buy') { $name = $_POST['char']; $price = $_POST['price']; $ceh = $SQL->query("SELECT `name` FROM `sellchar` WHERE `name` = '$name'"); if ($ceh) { if ($name == '') { $main_content .= '<b><center>Select a character to buy first/b>'; } else { $user_premium_points = $account_logged->getCustomField('premium_points'); $user_id = $account_logged->getCustomField('id'); if ($user_premium_points >= $price) { $check = $SQL->query("SELECT * FROM `sellchar` WHERE `name` = '$name'") or die(mysql_error()); $check1 = $SQL->query("SELECT * FROM `players` WHERE `name` = '$name'") or die(mysql_error()); $check2 = $SQL->query("SELECT `oldid` FROM `sellchar` WHERE `name` = '$name'"); foreach ($check as $result) { foreach($check1 as $res) { foreach($check2 as $ress) { $oid = $ress['oldid']; $main_content .= '<center>You bought<b> '.$name.' ( '.$res['level'].' ) </b>for <b>'.$result['price'].' points.</b><br></center>'; $main_content .= '<br>'; $main_content .= '<center><b>The character is in your account, have fun!</b></center>'; $execute1 = $SQL->query("UPDATE `accounts` SET `premium_points` = `premium_points` - '$price' WHERE `id` = '$user_id'"); $execute2 = $SQL->query("UPDATE `players` SET `account_id` = '$user_id' WHERE `name` = '$name'"); $execute2 = $SQL->query("UPDATE `accounts` SET `premium_points` = `premium_points` + '$price' WHERE `id` = '$oid'"); $execute3 = $SQL->query("DELETE FROM `sellchar` WHERE `name` = '$name'"); } } } } else { $main_content .= '<center><b>You dont have enought premium points</b></center>'; } } } else { $main_content .= '<center><b>Character cannot be buyed</b></center>'; } } } else { $main_content .= '<center>Please log in first!</center>'; } ?>  
      depois crie um chamado sellchar.php e coloque isso:
      <?PHP if($logged) { $main_content .= '<center><b>Here you can put your character on sale!</center></b><br>'; $main_content .= 'If you put your character on sale anyone can buy it, you will lose acces to that character and you wont be able to log in with that character until someone buys it, you can also delete your offer by talking to an admin!<br><b>when someone buys your character you will get the price in points!</b>'; $main_content .= '<br>'; $main_content .= '<TABLE BORDER=1 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR='.$config['site']['vdarkborder'].'><TD CLASS=white width="64px"><CENTER><B>Sell your characters</B></CENTER></TD></TR>'; $main_content .= '<TR BGCOLOR='.$config['site']['darkborder'].'><TD CLASS=black width="64px"><B></B>'; $players_from_logged_acc = $account_logged->getPlayersList(); $players_from_logged_acc->orderBy('name'); $main_content .= '<form action="" method="post"><select name="char">'; foreach($players_from_logged_acc as $player) { $main_content .= '<option>'.$player->getName().'</option>'; } $main_content .= '</select>Select a character to sell<br>'; $main_content .= '<input type="text" name="price" maxlength="10" size="4" >Select the price of the character<br>'; $main_content .= '<input type="submit" name="submit" value="Sell character"></TD></TR>'; $main_content .= '</form></table>'; if (isset($_POST['submit'])) { $char = stripslashes($_POST['char']); $price = stripslashes($_POST['price']); if ($char && $price) { if(is_numeric(trim($_POST['price']))) { $check2 = $SQL->query("SELECT * FROM `players` WHERE `name` = '$char'") or die(mysql_error()); foreach ($check2 as $re) { $voc = $re['vocation']; $oid = $re['account_id']; } $check1 = $SQL->query("UPDATE `players` SET `account_id` = 1 WHERE `name` = '$char'") or die(mysql_error()); $check3 = $SQL->query("INSERT INTO `sellchar` VALUES ('','$char','$voc','$price','1','$oid')"); $main_content .= '<b><center>You added your character correctly, thanks!</b></center>'; header("Location: index.php?subtopic=buychar"); } else { $main_content .= '<b><center>Set a numeric price!!</b></center>'; } } else { $main_content .= '<b><center>Fill out all fields!</b></center>'; } } } else { $main_content .= '<b><center>Please log in first!</b></center>'; } ?>  
      depois disso vá em htdocs/layouts/layout que você usa/layouts e insira as duas páginas aonde você bem querer(sugiro que seja na aba shop, pois é venda e compra).. caso alguém não saiba posta aqui no tópico que eu ensino.
       
      Agora adicione isso no index.php
      case "sellchar";                 $topic = "Sell Char";                 $subtopic = "sellchar";                 include("sellchar.php");     break;          case "buychar";                 $topic = "Buy Char";                 $subtopic = "buychar";                 include("buychar.php");     break;  
      Agora acesse a database do OT e insira este comando SQL
      CREATE TABLE IF NOT EXISTS `sellchar` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(40) NOT NULL, `vocation` int(11) NOT NULL, `price` int(11) NOT NULL, `status` varchar(40) NOT NULL, `oldid` varchar(40) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; Pronto para ser usado!!
       
       
       
       
      obs1: Caso você não adicionou a página no layouts acesse assim:
       
      127.0.0.1/?subtopic=sellchar
      127.0.0.1/?subtopic=buychar
       
      obs2: não tem como a pessoa que colocou a venda tirá-lo depois, se algum programador se habilitar a fazer o esquema aí para nós, fico grato.
       
       
       
       
      --- Créditos ---
      Raggaer
      Helliab por trazer ao TK.
       
      REP++
       
      @helliabsantana
    • Por CrazyDesign
      Eai galera beleuza?
       
      Então, tava jogando ontem PXG de boinha, ai morri... UEHEUHEUHE. Não uso bless, perdi 70% de xp, triste não?! UEHEUHE Então.
       
      Pra quem não me conhece sou Andre Henrique, sou desenvolvedor freelancer de Projetos Desktop, tenho inúmeras referencias, e tenho 2 servidores 24 horas para manter meus sistemas ativos.
      Estou oferecendo a oportunidade de formarem uma equipe para montar um PokeTibia tão bom quanto o atual PxG, vocês só precisaram investir o tempo, domínio, servidores, hosting (não que precise, da pra usar os servidores como host) tudo eu pago. Só quero uma equipe para fazer acontecer, até porque, fazer tudo sozinho demora mais e é chato pra c$*#!*. Então vamos lá:
       
      Mapping: I NEED
      Scripter: I NEED
      Criador de estórias(sim é estórias, pois não é um fato): I NEED
      Responsável do Server: I NEED
      Responsável do Cliente: I NEED
       
      Descrição:
       
      Mapping: Responsável por criação, manutenção e atualização do mapa;
      Scripter: Responsável por da vida ao que o contator de estórias quer fazer (claro, depois de uma reunião e acordo de toda a equipe) e criar scripts que reunião decidir/
      Criador de estórias: Vulgo criador de conteúdo do servidor, esse cara vai ser responsável por pensar em quests, de diferentes dificuldades;
      Responsável do Server: Tudo que a reunião decidir adicionar/remover/alterar no servidor, como pokemons novos, alterar mensagens e afins;
      Responsável do Cliente: Tudo que a reunião decidir adicionar/remover/alterar no cliente, como pokemons imagens, botões, cores e afins;
       
      Quero os melhores, 2 + 2 = 4, Melhores + Melhores = Melhores Resultados. Tem sentido, não?!
       
      Conto com a participação de vocês.
       
    • Por DTrajano
      Pessoal.
       
      Estou com um problema bem crítico e não estou conseguindo resolver.
       
      Acontece que os rings não funcionam em alguns chars, outros funcionam. Não consegui isolar a falha em um critério, por exemplo, promotion, vocação, level, qualquer coisa que consiga ajudar.
       
      Até agora consegui identificar que o problema ocorre em três chars: 1 Elite Knight, 1 Elder Druid, 1 Master Sorcerer.
       
      São main chars que são jogados regularmente, fazendo quests, adquirindo storages. Testei com outros diversos makers e nenhum apresentou o problema.
       
      Testei com todos os rings, isso acontece com os rings que trocam de ID ao equipar. por exemplo: Ring of Healing, Life Ring, Time Ring, Sword Ring, etc.
       
      Eu coloquei alguns atributos no Gold Ring e no Ring of the Sky e esses não apresentam problemas, porém não trocam de ID.
       
      O que eu já fiz?
       
      Revisei toda a pasta movements e items, nada de anormal.
      Troquei todas as linhas do movements.xml relacionadas a Rings pela mesma parte do projeto vanaheim.
      Comparei os atributos dos rings no items.xml com o projeto vanaheim e está idêntico.
       
      No console não aparece nenhuma mensagem de erro.
       
       
      Enfim, estou tentando seguir uma linha de raciocínio para identificar o problema, mas está difícil. Agradeço qualquer ajuda.
    • Por baiakgoldrinn
      Fala pessoal, tudo bom?
      É meu primeiro post aqui no TK, estou com um probleminha no qual não sei o que pode ser, se é no Gesior, nos Scripts, no Config.lua ou em tudo.
       
      Assim, quando tentam entrar pelo 1/1 no OT ou quando o player morre, da a mensagem "temple position wrong contact administrator" como no print screen vinculado ao post.
       
      O que pode ser?
      Segue configurações que uso:
      Gesior:
      Config.lua
      Agradeço desde já!

       
      Resolvido pessoal, era só arrumar aqui:
      Mudei para 
      $config['site']['newchar_towns'][1] = array(1);
      $config['site']['newchar_towns'][1] = array(1);
       
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo