Ir para conteúdo

Rockersz

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Obrigado
    Rockersz recebeu reputação de kleytonbm em Talkaction !coins (adicionar tibia coins)   
    Olá, estou tentando fazer uma talkaction para o player receber 250 tibia coins quando dizer !coins, já está descontando o dinheiro da backpack mas não está adicionando os pontos.
     
    Alguém pode me ajudar? ai vai o script:
     
    local function doPlayerAddCoins(cid, count) db.query('UPDATE accounts SET coins = coins+'.. count ..' WHERE id = ' .. getAccountNumberByPlayerName(getCreatureName(cid))) end local price_coins = 1 function onSay(player, words, param) if player:getMoney() >= price_coins then player:removeMoney(price_coins) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_RED) doPlayerAddPremiumPoints(cid, 250) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "You have received 250 Tibia Coins to your account.") else player:getPosition():sendMagicEffect(CONST_ME_POFF) player:sendCancelMessage("You dont have enought money.") end end  
  2. Obrigado
    Rockersz recebeu reputação de Sotomayor em [RESOLVIDO] Como deixar o background fixo no Gesior?   
    Na pasta layout, abra seu basic.css e procure por:
    #HeaderArtworkDiv { position: absolute; text-align: center; background-position: top center; background-attachment: scroll; background-repeat: no-repeat; top: 0px; height: 800px; width: 100%; altere:
    position: absolute; para:
    position: fixed; acesse seu site, aperte ctrl + f5 e estará feito. REP+ plz.
  3. Curtir
    Rockersz recebeu reputação de thelifeofpbion em [RESOLVIDO] Como deixar o background fixo no Gesior?   
    Na pasta layout, abra seu basic.css e procure por:
    #HeaderArtworkDiv { position: absolute; text-align: center; background-position: top center; background-attachment: scroll; background-repeat: no-repeat; top: 0px; height: 800px; width: 100%; altere:
    position: absolute; para:
    position: fixed; acesse seu site, aperte ctrl + f5 e estará feito. REP+ plz.
  4. Gostei
    Rockersz recebeu reputação de jjgames em [AJUDA] Expert PvP!   
    Estou utilizando o OTX do Malucooo, os players estão me cobrando muito para ativar o Expert PvP, mas eu não consigo de maneira alguma!
    Já coloquei "true" em Experpvp na config.lua mas mesmo assim ele não ativa! fica com o icone "cinza" e não dá pra configurar no jogo.
    Alguém pode me por favor me ensinar a ativa-lo?
     
    imagem de como fica no client:
     
     

  5. Curtir
    Rockersz deu reputação a JZDJ em Download Clients 11+ IP 127.0.0.1   
    Olá galera do TK.
    Hoje eu trago vários clientes de Tibia 11+ com IP 127.0.0.1.
    Vi que alguns usuários não estão conseguindo algumas versões 11 então resolvi postar aqui.
    Estou disponibilizando o EXECUTÁVEL DO CLIENTE.
    Para que funcione é só colocar na pasta BIN da versão correspondente.
    Também disponibilizei a pasta completa compactada.
     
    Vamos ao que interessa.
     
    Tibia 11.43.5504

    127.0.0.1-11.43.5504.exe
    SCAN do cliente
    Pasta completa: Tibia 11.43.5504.rar
    SCAN pasta completa
     
    Tibia 11.44.5516

    127.0.0.1-11.44.5516.exe
    SCAN do cliente
    Pasta completa: Tibia 11.44.5516.rar
    SCAN pasta completa
     
    Tibia 11.46.5556

    127.0.0.1-11.46.5556.exe
    SCAN do cliente
    Pasta completa: Tibia 11.46.5556.rar
    SCAN pasta completa
     
    Tibia 11.47.5640

    127.0.0.1-11.47.5640.exe
    SCAN do cliente
    Pasta completa: Tibia_11_47.5640.rar
    SCAN pasta completa
     
    Tibia 11.47.5674

    127.0.0.1-11.47.5674.exe
    SCAN do cliente
    Pasta completa: Tibia_11_47.5674.rar
    SCAN pasta completa
     
    Tibia 11.48.5712

    127.0.0.1-11.48.5712.exe
    SCAN do cliente
    Pasta completa: Tibia_11_48.5712.rar
    SCAN pasta completa
     
    Tibia 11.48.5753

    127.0.0.1-11.48.5753.exe
    SCAN do cliente
    Pasta completa: Tibia_11_48.5753.rar
    SCAN pasta completa
     
    Tibia 11.49.5813

    127.0.0.1-11.49.5813.exe
    SCAN do cliente
    Pasta completa:  Tibia_11_49.5813.rar
    SCAN pasta completa
     
    Tibia 11.49.5884

    127.0.0.1-11.49.5884.exe
    SCAN do cliente
    Pasta completa: Tibia_11_49.5884.rar
    SCAN pasta completa
     
    Tibia 11.49.5921

    127.0.0.1-11.49.5921.exe
    SCAN do cliente
    Pasta completa:  Tibia_11_49.5921.rar
    SCAN pasta completa
     
    Tibia 11.49.5983

    127.0.0.1-11.49.5983.exe
    SCAN do cliente
    Pasta completa: Tibia_11_49.5983.rar
    SCAN pasta completa
     
    Tibia 11.49.6018

    127.0.0.1-11.49.6018.exe
    SCAN do cliente
    Pasta completa: Tibia 11.49.6018.rar
    SCAN pasta completa
     
    Tibia 11.49.6030

    127.0.0.1-11.49.6030.exe
    SCAN do cliente
    Tibia 11.49.6030.rar
    SCAN pasta completa
     
    Tibia 11.50.6055

    127.0.0.1-11.50.6055.exe
    SCAN do cliente
    Tibia 11.50.6055.rar
    SCAN pasta completa
     
    Tibia 11.51.6099

    127.0.0.1-11.51.6099.exe
    SCAN do cliente
    Tibia 11.51.6099.rar
    SCAN pasta completa
     
    Tibia 11.52.6104

    127.0.0.1-11.52.6104.exe
    SCAN do cliente
    Tibia 11.52.6104.rar
    SCAN pasta completa
     
    Tibia 11.55.6239

    127.0.0.1-11.55.6239.exe
    SCAN do cliente
    Tibia 11.55.6239.rar
    SCAN pasta completa
     
    Tibia 11.56.6239

    127.0.0.1-11.56.6239.exe
    SCAN do cliente
    Tibia 11.56.6239.rar
    SCAN pasta completa
     
    Tibia 11.57.6239

    127.0.0.1-11.57.6239.exe
    SCAN do cliente
    Tibia 11.57.6239.rar
    SCAN pasta completa
     
    Tibia 11.58.6239

    127.0.0.1-11.58.6239.exe
    SCAN do cliente
    Tibia 11.58.6239.rar
    SCAN pasta completa
     
    Tibia 11.58.6239 ATUALIZADO

      127.0.0.1-11_58.6239.exe ATUALIZADO
    SCAN do cliente
    Tibia 11.58.6239 ATUALIZADO.rar
    SCAN pasta completa
     
    Tibia 11.59.6424

    127.0.0.1-11.59.6424.exe
    SCAN do cliente
    Tibia 11.59.6424.rar
    SCAN pasta completa
     
    Tibia 11.60.6457

    127.0.0.1-11.60.6457.exe
    SCAN do cliente
    Tibia 11.60.6457.rar
    SCAN pasta completa
     
    Tibia 11.65.6492

    127.0.0.1-11.65.6492.exe
    SCAN do cliente
    Tibia 11.65.6492.rar
    SCAN pasta completa
     
    Tibia 11.65.6507

    127.0.0.1-11.65.6507.exe
    SCAN do cliente
    Tibia 11.65.6507.rar
    SCAN pasta completa
     
    Tibia 11.66.6516

    127.0.0.1-11.66.6516.exe
    SCAN do cliente
    Tibia 11.66.6516.rar
    SCAN pasta completa
     
    Tibia 11.70.6535

    127.0.0.1-11.70.6535.exe
    SCAN do cliente
    Tibia 11.70.6535.rar
    SCAN pasta completa
     
    Tibia 11.70.6543

    127.0.0.1-11.70.6543.rar
    SCAN do cliente
    Tibia 11.70.6543.rar
    SCAN pasta completa
     
    Tibia 11.70.6548

    127.0.0.1-11.70.6548.rar
    SCAN do cliente
    Tibia 11.70.6548.rar
    SCAN pasta completa
     
    Tibia 11.70.6555

    127.0.0.1-11.70.6555.rar
    SCAN do cliente
    Tibia 11.70.6555.rar
    SCAN pasta completa
     
    Espero que eu tenha ajudado.
     
    Créditos:
    A Cip pelos clientes e a mim por ter alterado os ips nos mesmos.
     
    REP+ é sempre bom e não dói.
    Abraços.
    ATT ,
    Jaurez/JZDJ
  6. Gostei
    Rockersz recebeu reputação de Bruxo Ots em Talkaction !coins (adicionar tibia coins)   
    Olá, estou tentando fazer uma talkaction para o player receber 250 tibia coins quando dizer !coins, já está descontando o dinheiro da backpack mas não está adicionando os pontos.
     
    Alguém pode me ajudar? ai vai o script:
     
    local function doPlayerAddCoins(cid, count) db.query('UPDATE accounts SET coins = coins+'.. count ..' WHERE id = ' .. getAccountNumberByPlayerName(getCreatureName(cid))) end local price_coins = 1 function onSay(player, words, param) if player:getMoney() >= price_coins then player:removeMoney(price_coins) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_RED) doPlayerAddPremiumPoints(cid, 250) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "You have received 250 Tibia Coins to your account.") else player:getPosition():sendMagicEffect(CONST_ME_POFF) player:sendCancelMessage("You dont have enought money.") end end  
  7. Gostei
    Rockersz deu reputação a Albeck em Talkaction !coins (adicionar tibia coins)   
    @Rockersz
    local price_coins = 1 local points = 250 function onSay(player, words, param) if player:getMoney() >= price_coins then player:removeMoney(price_coins) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_RED) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have received 250 Tibia Coins to your account.") db.query("UPDATE `accounts` SET `coins` = `coins` + "..points.." WHERE id=" ..player:getAccountId()) else player:getPosition():sendMagicEffect(CONST_ME_POFF) player:sendCancelMessage("You dont have enought money.") end end  
  8. Gostei
    Rockersz recebeu reputação de JuniorCesaaar em Item com tempo de duração ao ser equipado   
    Pelo que eu vi nos items que possuem contagem de uso, eles se transformam em outro item na função <attribute key="transformDeEquipTo" value="ID DO ITEM" />, e o item que ele se transforma quando desequipar deve possuir a função <attribute key="stopduration" value="1" />.
     
    Não sei dizer se dá pra fazer usando apenas um item sem tranformar em outro.
  9. Gostei
    Rockersz deu reputação a psychonaut em removido   
    deleta o tópico
  10. Gostei
    Rockersz deu reputação a thelifeofpbion em Erro página Cast System Gesior.   
    @buchal Terceiro tópico que vejo você "ajudando" assim, de forma porca.
     


    Sobre o tópico: Bom acredito que você já tenha o cast system na distro, pode passar o seu cast.lua que está na talkactions? acredito que ele não ta setando no banco de dados por isso não aparece no site...

    __________________ EDIT _________________________________
    PARA TFS 0.4 você nao falou para qual era... mas...

    Ou melhor...

    mude seu talkaction do cast para este, este ja esta setando no banco de dados... espero que ja tenha coluna "broadcasting" se não tiver é facil de achar pelo forum, mas acredito que tenha.

     
     
     
    e cria arquivo .lua em creaturesscript 
     
    <event type="logout" name="cast-log-out" event="script" value="cast.lua"/>
     
    cast.lua

     
     
    ou seja, caso player sair do game sem desligar o cast ele vai desligar sozinho.



    e por fim, vou te passar minha pagina php cast, acho que é um pouco mais elaborada... que a sua.  (obs: tem uma coluna outfit, porque eu uso com imagens dentro do htdocs, não sei se vc usa.. mas é facil de editar o php e tirar essa partezinha, você consegue

    pagina...

     
     
     
    Boa Sorte com seu projeto.
     
  11. Gostei
    Rockersz recebeu reputação de Perseguini em (Resolvido)Somente o Player loga   
    vá em : windows/system32/drivers/etc/hosts e edite assim: (na parte "seuip" você coloca o ip que os players estão acessando seu OT) 
    depois de fazer isso, você irá logar no seu OT com o mesmo IP que os players estão usando.
     
     

  12. Gostei
    Rockersz deu reputação a DukeeH em [Bug] Flor na wasp tower em rookgard   
  13. Gostei
    Rockersz deu reputação a xWhiteWolf em All bugs OTSERV - REVELADO ! -   
    testei todos os bugs ditos no tfs 1.2 q tem na otland e nenhum deles resultou em alguma coisa, quanto à deathlist do 8.6, eu já passei por isso e o problema é q quem fez o schema da database não tinha o mínimo conhecimento de banco de dados e fez uma baita gambiarra danada. A query da deathlist é outra gambiarra maior ainda e isso explica por si só o crash. A solução q eu encontrei foi refazer o script de deathlist usando uma query q eu confiasse.
    Quem tiver precisando só utilizar...
     
    SELECT player_id, date, level, all_kills.name FROM ( SELECT kill_id, name FROM player_killers INNER JOIN players ON player_id = id UNION SELECT * FROM environment_killers ) AS all_kills INNER JOIN player_deaths ON player_deaths.id = all_kills.kill_id WHERE player_id = 1-- pegar por script -- ORDER BY player_id, level DESC; se quiser só as ultimas 10 mortes tira o ; ali do fim e coloca embaixo
    LIMIT 10;

    Ps: aqui tem um print sem o limit mostrando que a query é rapida (testei num banco altamente populado)

    player_id é o id do char q eu quis verificar a deathlist, date é a data em unix time (os.time(), usando um os.date com esse numero vc retorna a data e hora em q ocorreu a morte) o level q ele estava e quem matou; Se não tiver "a ____" no all_kills.name então foi morte pra um player. 



    EDIT 2: Não usem cast system, saibam configurar maxpacket no config.lua (30~50), botem timeBetweenActions de 1 ou 2 segundos (1000 milisegundos no config.lua), constantemente chequem o git do forgotten server olhando os bugs, os commits e os prs, se possível se registre no git para receber notificações de tudo q rola por lá, duvido q seu server será explorado. Oque você não consegue resolver por source vc consegue resolver por script, então fiquem ligados e sempre testem tudo antes de abrir um sv só pra ganhar dinheiro. 
  14. Gostei
    Rockersz deu reputação a Jaurez em .   
    @Strix Seran Coloquei as sources para download no tópico, sobre a velocidade dá uma espiada na foto, o char é GOD, não testei com outros normais.

     
  15. Gostei
    Estou planejando fazer um tutorial com tudo que precisa pra deixar um otserver online nas versões atuais, isso inclui o site também, mas não vai dar pra ser hoje =/
  16. Gostei
    Rockersz deu reputação a Jaurez em .   
    .
  17. Gostei
    Rockersz deu reputação a Liane em (Resolvido)(PEDIDO) Pagina De Cast Para O Novo Gesior   
    Primeiramente acesse data/talkactions/scripts e crie os arquivos abaixo:
     
    start_cast.lua:
    function onSay(cid, words, param) local player = Player(cid) if player:startLiveCast(param) then db.query("UPDATE `players` SET `cast` = 1 WHERE `id` = " .. getPlayerGUID(cid) .. ";") player:sendTextMessage(MESSAGE_INFO_DESCR, "You have started casting your gameplay.") return false else player:sendCancelMessage("You're already casting your gameplay.") return false end end depois
    stop_cast.lua:
    function onSay(cid, words, param) local player = Player(cid) if player:stopLiveCast(param) then db.query("UPDATE `players` SET `cast` = 0 WHERE `id` = " .. getPlayerGUID(cid) .. ";") player:sendTextMessage(MESSAGE_INFO_DESCR, "You have stopped casting your gameplay.") return false else player:sendCancelMessage("You're not casting your gameplay.") return false end end Depois add as tags em data/talkactions/talkactions.xml:
    <talkaction words="!cast" separator=" " script="start_cast.lua"/> <talkaction words="!stopcast" script="stop_cast.lua"/> não esqueça de criar a coluna na database:
    ALTER TABLE `players` ADD `cast` INT( 11 ) NOT NULL DEFAULT '0' para não dar nenhum problema entre no creaturescripts/scripts/others e crie um arquivo cast.lua e coloque:
    function onLogout(cid) db.query("UPDATE `players` SET `cast` = 0 WHERE `id` = " .. getPlayerGUID(cid) .. ";") return true end depois em creaturescripts.xml adicione a linha:
    <event type="logout" name="Cast" script="others/cast.lua"/> e por fim entre em globalevents/scripts abra o arquivo startup.lua e adicione:
    db.query("UPDATE `players` SET `cast` = 0") abaixo de:
    db.query("TRUNCATE TABLE `players_online`")  e pronto agora e só por a pagina no site código abaixo:
    <?php if(!defined('INITIALIZED')) exit; $order = $_REQUEST['order']; if($order == 'name') { $orderby = 'name'; } if($order == 'level') { $orderby = 'level'; } if($order == 'vocation') { $orderby = 'vocation'; } if(empty($orderby)) { $orderby = 'name'; } if(count($config['site']['worlds']) > 1) { $worlds .= '<i>Select world:</i> '; foreach($config['site']['worlds'] as $idd => $world_n) { if($idd == (int) $_GET['world']) { $world_id = $idd; $world_name = $world_n; } } } if($idd == (int) $_GET['world']) { $world_id = $idd; $world_name = $world_n; } if(!isset($world_id)) { $world_id = 0; $world_name = $config['server']['serverName']; } if(count($config['site']['worlds']) > 1) { $main_content .= '<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%><TR><TD> <FORM ACTION="?subtopic=whoisonline" METHOD=get><INPUT TYPE=hidden NAME=subtopic VALUE=whoisonline><INPUT TYPE=hidden NAME=list VALUE=experience> <TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4><TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" CLASS=white><B>World Selection</B></TD></TR><TR><TD BGCOLOR="'.$config['site']['lightborder'].'"> <TABLE BORDER=0 CELLPADDING=1><TR><TD>World: </TD><TD><SELECT SIZE="1" NAME="world"><OPTION VALUE="" SELECTED>(choose world)</OPTION>'; foreach($config['site']['worlds'] as $id => $world_n) { $main_content .= '<OPTION VALUE="'.$id.'">'.$world_n.'</OPTION>'; } $main_content .= '</SELECT> </TD><TD><INPUT TYPE=image NAME="Submit" ALT="Submit" SRC="'.$layout_name.'/images/buttons/sbutton_submit.gif" BORDER=0 WIDTH=120 HEIGHT=18> </TD></TR></TABLE></TABLE></FORM></TABLE><br>'; } $players_online_data = $SQL->query('SELECT * FROM players WHERE level > 0 AND cast = 1 ORDER BY '.$orderby); $number_of_players_online = 0; foreach($players_online_data as $player) { $number_of_players_online++; if($config['site']['show_flag']) { $account = $SQL->query('SELECT * FROM accounts WHERE id = '.$player['account_id'].'')->fetch(); $flag = '<image src="images/flags/'.$account['flag'].'.png"/> '; } if(is_int($number_of_players_online / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $players_rows .= ' <TR BGCOLOR='.$bgcolor.'> <TD WIDTH=40%>'.$flag.'<A HREF="index.php?subtopic=characters&name='.urlencode($player['name']).'">'.$player['name'].'</A><br/>'.$player['level'].' '.$vocation_name[$player['world_id']][$player['promotion']][$player['vocation']].'</TD> <TD WIDTH=20%><font color="#008000">ONLINE</font></TD> </TR>'; } if($number_of_players_online == 0) { //server status - server empty $main_content .= '<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR="'.$config['site']['vdarkborder'].'"><TD CLASS=white><B>Server Status</B></TD></TR><TR BGCOLOR='.$config['site']['darkborder'].'><TD><TABLE BORDER=0 CELLSPACING=1 CELLPADDING=1><TR><TD>Currently there are no active casts on '.$config['server']['serverName'].'.</TD></TR></TABLE></TD></TR></TABLE><BR>'; } else { //server status - someone is online $main_content .= ' <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> <TR BGCOLOR="'.$config['site']['vdarkborder'].'"> <TD CLASS=white><B>Server Status</B></TD> </TR> <TR BGCOLOR='.$config['site']['darkborder'].'> <TD>'; $main_content .= 'Currently there are '.$number_of_players_online.' active live casts'; $main_content .= ' on '.$world_name.' gameworlds.<br> </TD> </TR> </TABLE><BR>'; //list of players $main_content .= ' <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> <TR BGCOLOR="'.$config['site']['vdarkborder'].'"> <TD><A HREF="index.php?subtopic=whoisonline&order=name" CLASS=white>Name</A></TD> <TD><A HREF="index.php?subtopic=whoisonline&order=vocation" CLASS=white>Status</TD> </TR> '.$players_rows.'</TABLE>'; //search bar //$main_content .= '<BR><FORM ACTION="index.php?subtopic=characters" METHOD=post> <TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4><TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" CLASS=white><B>Search Character</B></TD></TR><TR><TD BGCOLOR="'.$config['site']['darkborder'].'"><TABLE BORDER=0 CELLPADDING=1><TR><TD>Name:</TD><TD><INPUT NAME="name" VALUE=""SIZE=29 MAXLENGTH=29></TD><TD><INPUT TYPE=image NAME="Submit" SRC="'.$layout_name.'/images/buttons/sbutton_submit.gif" BORDER=0 WIDTH=120 HEIGHT=18></TD></TR></TABLE></TD></TR></TABLE></FORM>'; } $main_content .= '<BR><TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4><TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" CLASS=white><B>Description</B></TD></TR><TR><TD BGCOLOR="'.$config['site']['darkborder'].'"><h4 style="margin: 0px;">Commands (owner):</h4><i>!cast {on/off}</i> - Create or close your own cast<br/><i>!cast password, |password|</i> - Sets a password for the cast<br/><i>!cast,desc, |description|</i> - Set a description for the cast<br/><i>!cast status</i> - Information about your cast (viewer amount, description, password)<br/><i>!cast viewers</i> - Displays the name of all viewers<br/><i>!cast {ban/unban},"name"</i> - Bans a viewer from joining your cast/Removes the ban<br/><i>!cast {mute/unmute} "name"</i> - Mutes a viewer on your cast/Removes the mute<br/><i>!cast bans</i> - Displays a list of banned viewers<br/><i>!cast mutes</i> - Displays a list of muted viewers<br/><i>!cast update</i> - Updates the description and status on the website<br/><br/><h4 style="margin: 0px;">Commands (viewer):</h4><i>!nick newNick</i> - Changes the viewer\'s name<br><i>!info</i> - Displays a list of all viewers</TD></TR></TABLE>';                                                                   DOWNLOAD TFS 1.0 COM CAST
     
    Se Ajudei Minda Rep++
  18. Gostei
    Rockersz deu reputação a Absolute em [Sistema de Ticket] Atendimento - Gesior Acc   
    Fala galerinha do TK, depois de ver muitos pedidos em busca desse simples sistema, resolvi pegar um antigo meu e realizar algumas modificações para que vocês possam usar em seus servidores, aprimorando o atendimento aos seus players.
     
     
     
     
    Funcionamento;
     
     
    Quando o player logar a conta e clicar na página para abrir um chamado, irá abrir:
     

     
     
    Qualquer jogador com a conta logada, poderá abrir seu chamado, clicando em [Abrir chamado] (como mostra na imagem a cima). Então o mesmo será redirecionado para:

     
     
     
     
    Campos requeridos:
     
    Assunto;

    O nome já diz tudo, o motivo da abertura do chamado.
     
     
     
    Descrição;

    Nome também diz tudo, o assunto do motivo da abertura do chamado.
     
     
     
     
    Tag;

    Em tag ele selecionará o motivo do chamado (para ajudar o administrador dos tickets no assunto), Ficando mais ágil e bonito hihi .
     
     
     
     
    Prioridade;

    Em prioridade ele irá selecionar a prioridade da resposta do ticket, Alta; Normal ou Baixa.
     
     
     
     
     
    Pós clicar em "Submit" irá abrir o chamado como na imagem:

     
     
     
     
    Nota: Quando estiver logado com a conta do administrador (Page acess 6) irá aparecer na página um "Admin Painel" onde você irá ver, responder e gerenciar os chamados abertos pelos jogadores.
     
    Toda vez que o ticket for respondido o status é alterado para "Respondido" e então caso ainda haja alguma dúvida o players poderá responder o ticket, até você selecionar o status como "Fechado"


     
     

    Creio que está bem explicado o funcionamento.
     
     
     
    Enfim, agora vamos a instalação do sistema *-*
     
     
    Primeiramente na sua pasta htocs(em windows) ou www(no caso de linux), ou seja, na pasta do seu site, onde fica as páginas principais como: latestnews.php, arichive.php, highscores.php e companhia.
    Nesta pasta crie um arquivo com o nome de helpdesk.php e adicione o seguinte dentro:
    <?php if($logged) { // type (1 = question; 2 = answer) // status (1 = open; 2 = new message; 3 = closed;) $dark = $config['site']['darkborder']; $light = $config['site']['lightborder']; $priority = array(1 => "Baixa", "Normal", "Alta"); $tags = array(1 => "[Vendas]", "[Suporte]", "[Parceria]", "[Bug]", "[Outros]"); if($group_id_of_acc_logged >= $config['site']['access_admin_panel'] and $_REQUEST['control'] == "true") { if(empty($_REQUEST['id']) and empty($_REQUEST['acc']) or !is_numeric($_REQUEST['acc']) or !is_numeric($_REQUEST['id']) ) $bug[1] = $SQL->query('SELECT * FROM '.$SQL->tableName('z_helpdesk').' where `type` = 1 order by `uid` desc'); if(!empty($_REQUEST['id']) and is_numeric($_REQUEST['id']) and !empty($_REQUEST['acc']) and is_numeric($_REQUEST['acc'])) $bug[2] = $SQL->query('SELECT * FROM '.$SQL->tableName('z_helpdesk').' where `account` = '.$_REQUEST['acc'].' and `id` = '.$_REQUEST['id'].' and `type` = 1')->fetch(); if(!empty($_REQUEST['id']) and is_numeric($_REQUEST['id']) and !empty($_REQUEST['acc']) and is_numeric($_REQUEST['acc'])) { if(!empty($_REQUEST['reply'])) $reply=true; $account = $ots->createObject('Account'); $account->load($_REQUEST['acc']); $account->isLoaded(); $players = $account->getPlayersList(); if(!$reply) { if($bug[2]['status'] == 2) $value = "<font color=gray><b>Aguardando</b> <img src=images/bug/waiting.gif></font>"; elseif($bug[2]['status'] == 4) $value = "<font color=green><b>Respondido</b></font> <img src=images/bug/ok.png>"; elseif($bug[2]['status'] == 3) $value = "<font color=red><b>Fechado</b></font> <img src=images/bug/closed.png>"; elseif($bug[2]['status'] == 1) $value = "<font color=#4169E1><b>Nova Resposta</b></font> <img src=images/bug/new.png>"; $main_content .= '<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR='.$config['site']['vdarkborder'].'><TD COLSPAN=2 CLASS=white><B>Atendimento</B></TD></TR>'; $main_content .= '<TR BGCOLOR="'.$dark.'"><td width=40%><img src=images/bug/report.png> <b>Assunto:</b></td><td> '.$tags[$bug[2]['tag']].' '.$bug[2]['subject'].' '.$value.'</td></tr>'; $main_content .= '<TR BGCOLOR="'.$light.'"><td><img src=images/bug/pri.gif> <b>Prioridade:</b></td><td> <img src=images/bug/'.$bug[2]['priority'].'.png> '.$priority[$bug[2]['priority']].''; $main_content .= '<TR BGCOLOR="'.$dark.'"><td><img src=images/bug/tibia.png> <b>Enviado por:</b></td><td>'; foreach($players as $player) { $main_content .= '<img src=images/bug/t.png> '.$player->getName().'<br>'; } $main_content .= '</td></tr>'; $main_content .= '<TR BGCOLOR="'.$light.'"><td colspan=2><img src=images/bug/des.png><b>Descrição:</b></td></tr>'; $main_content .= '<TR BGCOLOR="'.$dark.'"><td colspan=2>'.nl2br($bug[2]['text']).'</td></tr>'; $main_content .= '</TABLE>'; $answers = $SQL->query('SELECT * FROM '.$SQL->tableName('z_helpdesk').' where `account` = '.$_REQUEST['acc'].' and `id` = '.$_REQUEST['id'].' and `type` = 2 order by `reply`'); $ot = $config['site']['worlds']; foreach($answers as $answer) { if($answer['who'] == 1) $who = "<img src=images/bug/staff.gif> <font color=red><b>Staff</b></font>"; else $who = "<img src=images/bug/player.gif> <font color=green><b>Player</b></font>"; $main_content .= '<br><TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR='.$config['site']['vdarkborder'].'><TD COLSPAN=2 CLASS=white><B>Resposta #'.$answer['reply'].'</B></TD></TR>'; $main_content .= '<TR BGCOLOR="'.$dark.'"><td width=70%><img src=images/bug/tibia.png><i><b>Enviado por:</b></i></td><td>'.$who.'</td></tr>'; $main_content .= '<TR BGCOLOR="'.$light.'"><td colspan=2><img src=images/bug/des.png><i><b>Descrição:</b></i></td></tr>'; $main_content .= '<TR BGCOLOR="'.$dark.'"><td colspan=2>'.nl2br($answer['text']).'</td></tr>'; $main_content .= '</TABLE>'; } if($bug[2]['status'] <= 4) $main_content .= '<br><a href="index.php?subtopic=helpdesk&control=true&id='.$_REQUEST['id'].'&acc='.$_REQUEST['acc'].'&reply=true"><b>[Responder]</b></a>'; } else { //if($bug[2]['status'] < 3) //{ $reply = $SQL->query('SELECT MAX(reply) FROM `z_helpdesk` where `account` = '.$_REQUEST['acc'].' and `id` = '.$_REQUEST['id'].' and `type` = 2')->fetch(); $reply = $reply[0] + 1; $iswho = $SQL->query('SELECT * FROM `z_helpdesk` where `account` = '.$_REQUEST['acc'].' and `id` = '.$_REQUEST['id'].' and `type` = 2 order by `reply` desc limit 1')->fetch(); if(isset($_POST['finish'])) { if(empty($_POST['text'])) $error[] = "<font color=black><b>Por favor, preencha a descrição.</b></font>"; //if($iswho['who'] == 1) //$error[] = "<font color=black><b>Você precisa aguardar a resposta do usuário.</b></font>"; if(empty($_POST['status'])) $error[] = "<font color=black><b>Status cannot be empty.</b></font>"; if(!empty($error)) { foreach($error as $errors) $main_content .= ''.$errors.'<br>'; } else { $type = 2; $INSERT = $SQL->query('INSERT INTO `z_helpdesk` (`account`,`id`,`text`,`reply`,`type`, `who`) VALUES ('.$SQL->quote($_REQUEST['acc']).','.$SQL->quote($_REQUEST['id']).','.$SQL->quote($_POST['text']).','.$SQL->quote($reply).','.$SQL->quote($type).','.$SQL->quote(1).')'); $UPDATE = $SQL->query('UPDATE `z_helpdesk` SET `status` = '.$_POST['status'].' where `account` = '.$_REQUEST['acc'].' and `id` = '.$_REQUEST['id'].''); header('Location: index.php?subtopic=helpdesk&control=true&id='.$_REQUEST['id'].'&acc='.$_REQUEST['acc'].''); } } $main_content .= '<br><form method="post" action=""><table><tr><td>Mensagem:</i></td><td><textarea name="text" rows="3" cols="25"></textarea></td></tr><tr><td><br><font color=gray><b>Aguardando</b></font> <img src=images/bug/waiting.gif></td><td><input type=radio name=status value=2></td></tr><tr><td><font color=green><b>Respondido <img src=images/bug/ok.png /></b></font></td><td><input type=radio name=status value=4></td></tr><tr><td><font color=red><b>Fechado <img src=images/bug/closed.png></b></font></td><td><input type=radio name=status value=3></td></tr></table><br><input type="submit" name="finish" value="Submit" class="input2"/></form>'; //} //else //{ //$main_content .= "<br><font color=black><b>You can't add answer to closed bug thread.</b></font>"; //} } $post=true; } if(!$post) { $main_content .= '<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR='.$config['site']['vdarkborder'].'><TD colspan=2 CLASS=white><B>Atendimento Admin</B></TD></TR>'; $i=1; foreach($bug[1] as $report) { if($report['status'] == 2) $value = "<font color=gray><b>Aguardando</b> <img src=images/bug/waiting.gif></font>"; elseif($report['status'] == 3) $value = "<font color=red><b>Fechado</b></font> <img src=images/bug/closed.png>"; elseif($report['status'] == 4) $value = "<font color=green><b>Respondido </b></font> <img src=images/bug/ok.png>"; elseif($report['status'] == 1) $value = "<font color=#4169E1><b>Nova Resposta</b></font> <img src=images/bug/new.png>"; if(is_int($i / 2)) { $bgcolor = $dark; } else { $bgcolor = $light; } $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><td width=75%><img src=images/bug/'.$report['priority'].'.png> <a href="index.php?subtopic=helpdesk&control=true&id='.$report['id'].'&acc='.$report['account'].'">'.$tags[$report['tag']].' '.$report['subject'].'</a></td><td>'.$value.'</td></tr>'; $showed=true; $i++; } $main_content .= '</TABLE>'; } } else { $acc = $account_logged->getId(); $account_players = $account_logged->getPlayersList(); foreach($account_players as $player) { $allow=true; } if(!empty($_REQUEST['id'])) $id = addslashes(htmlspecialchars(trim($_REQUEST['id']))); if(empty($_REQUEST['id'])) $bug[1] = $SQL->query('SELECT * FROM '.$SQL->tableName('z_helpdesk').' where `account` = '.$account_logged->getId().' and `type` = 1 order by `id` desc'); if(!empty($_REQUEST['id']) and is_numeric($_REQUEST['id'])) $bug[2] = $SQL->query('SELECT * FROM '.$SQL->tableName('z_helpdesk').' where `account` = '.$account_logged->getId().' and `id` = '.$id.' and `type` = 1')->fetch(); else $bug[2] = NULL; if(!empty($_REQUEST['id']) and $bug[2] != NULL) { if(!empty($_REQUEST['reply'])) $reply=true; if(!$reply) { if($bug[2]['status'] == 1) $value = "<font color=gray><b>Aguardando</b> <img src=images/bug/waiting.gif></font>"; elseif($bug[2]['status'] == 2) $value = "<font color=#4169E1><b>Nova Resposta</b></font> <img src=images/bug/new.png>"; elseif($bug[2]['status'] == 3) $value = "<font color=red><b>Fechado</b></font> <img src=images/bug/closed.png>"; elseif($bug[2]['status'] == 4) $value = "<font color=green><b>Respondido</b></font> <img src=images/bug/ok.png>"; $main_content .= '<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR='.$config['site']['vdarkborder'].'><TD COLSPAN=2 CLASS=white><B>Atendimento</B></TD></TR>'; $main_content .= '<TR BGCOLOR="'.$dark.'"><td width=40%><img src=images/bug/report.png><b> Assunto:</b></td><td> '.$tags[$bug[2]['tag']].' '.$bug[2]['subject'].' '.$value.'</td></tr>'; $main_content .= '<TR BGCOLOR="'.$light.'"><td><img src=images/bug/pri.gif> <b>Prioridade:</b></td><td> <img src=images/bug/'.$bug[2]['priority'].'.png> '.$priority[$bug[2]['priority']].''; $main_content .= '<TR BGCOLOR="'.$dark.'"><td><img src=images/bug/tibia.png> <b>Enviado por:</b></td><td>'; $main_content .= '<img src=images/bug/t.png> You <br>'; $main_content .= '<TR BGCOLOR="'.$light.'"><td colspan=2><img src=images/bug/des.png><b>Descrição:</b></td></tr>'; $main_content .= '<TR BGCOLOR="'.$dark.'"><td colspan=2>'.nl2br($bug[2]['text']).'</td></tr>'; $main_content .= '</TABLE>'; $answers = $SQL->query('SELECT * FROM '.$SQL->tableName('z_helpdesk').' where `account` = '.$account_logged->getId().' and `id` = '.$id.' and `type` = 2 order by `reply`'); foreach($answers as $answer) { if($answer['who'] == 1) $who = "<img src=images/bug/staff.gif> <font color=red><b>Staff</b></font>"; else $who = "<img src=images/bug/player.gif> <font color=green><b>YOU</b></font>"; $main_content .= '<br><TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR='.$config['site']['vdarkborder'].'><TD COLSPAN=2 CLASS=white><B>Answer #'.$answer['reply'].'</B></TD></TR>'; $main_content .= '<TR BGCOLOR="'.$dark.'"><td width=70%><img src=images/bug/tibia.png><i><b> Enviado por:</b></i></td><td>'.$who.'</td></tr>'; $main_content .= '<TR BGCOLOR="'.$light.'"><td colspan=2><img src=images/bug/des.png><i><b>Descrição:</b></i></td></tr>'; $main_content .= '<TR BGCOLOR="'.$dark.'"><td colspan=2>'.nl2br($answer['text']).'</td></tr>'; $main_content .= '</TABLE>'; } if($bug[2]['status'] != 3) $main_content .= '<br><a href="index.php?subtopic=helpdesk&id='.$id.'&reply=true"><b>[Responder]</b></a>'; } else { //if($bug[2]['status'] != 3) //{ $reply = $SQL->query('SELECT MAX(reply) FROM `z_helpdesk` where `account` = '.$acc.' and `id` = '.$id.' and `type` = 2')->fetch(); $reply = $reply[0] + 1; $iswho = $SQL->query('SELECT * FROM `z_helpdesk` where `account` = '.$acc.' and `id` = '.$id.' and `type` = 2 order by `reply` desc limit 1')->fetch(); if(isset($_POST['finish'])) { if(empty($_POST['text'])) $error[] = "<font color=black><b>Descrição não pode ser vazia.</b></font>"; if($iswho['who'] == 0) $error[] = "<font color=black><b>Você precisa aguardar a resposta da staff.</b></font>"; if(!$allow) $error[] = "<font color=black><b>Você não possui nenhum char na conta.</b></font>"; if(!empty($error)) { foreach($error as $errors) $main_content .= ''.$errors.'<br>'; } else { $type = 2; $INSERT = $SQL->query('INSERT INTO `z_helpdesk` (`account`,`id`,`text`,`reply`,`type`) VALUES ('.$SQL->quote($acc).','.$SQL->quote($id).','.$SQL->quote($_POST['text']).','.$SQL->quote($reply).','.$SQL->quote($type).')'); $UPDATE = $SQL->query('UPDATE `z_helpdesk` SET `status` = 1 where `account` = '.$acc.' and `id` = '.$id.''); header('Location: index.php?subtopic=helpdesk&id='.$id.''); } } $main_content .= '<br><form method="post" action=""><table><tr><td><i>Description</i></td><td><textarea name="text" rows="15" cols="35"></textarea></td></tr></table><br><input type="submit" name="finish" value="Submit" class="input2"/></form>'; //} //else // //$main_content .= "<br><font color=black><b>You can't add answer to closed bug thread.</b></font>"; //} } $post=true; } elseif(!empty($_REQUEST['id']) and $bug[2] == NULL) { $main_content .= '<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR='.$config['site']['vdarkborder'].'><TD CLASS=white><B>Atendimento</B></TD></TR>'; $main_content .= '<TR BGCOLOR="'.$dark.'"><td><i>Ticket doesn\'t exist.</i></td></tr>'; $main_content .= '</TABLE>'; $post=true; } if(!$post) { if($_REQUEST['add'] != TRUE) { $main_content .= '<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR='.$config['site']['vdarkborder'].'><TD colspan=2 CLASS=white><B>Atendimento</B></TD></TR>'; foreach($bug[1] as $report) { if($report['status'] == 1) $value = "<font color=gray><b>Aguardando</b> <img src=images/bug/waiting.gif></font>"; elseif($report['status'] == 2) $value = "<font color=#4169E1><b>Nova Resposta</b></font> <img src=images/bug/new.png>"; elseif($report['status'] == 3) $value = "<font color=red><b>Fechado</b></font> <img src=images/bug/closed.png>"; elseif($report['status'] == 4) $value = "<font color=green><b>Respondido </b></font> <img src=images/bug/ok.png>"; if(is_int($report['id'] / 2)) { $bgcolor = $dark; } else { $bgcolor = $light; } $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><td width=75%><img src=images/bug/'.$report['priority'].'.png> <a href="index.php?subtopic=helpdesk&id='.$report['id'].'">'.$tags[$report['tag']].' '.$report['subject'].'</a></td><td>'.$value.'</td></tr>'; $showed=true; } if(!$showed) { $main_content .= '<TR BGCOLOR="'.$dark.'"><td><i>Nenhum atendimento solicitado.</i></td></tr>'; } $main_content .= '</TABLE>'; $main_content .= '<br><a href="index.php?subtopic=helpdesk&add=true"><b>[Abrir Chamado]</b></a>'; } elseif($_REQUEST['add'] == TRUE) { $thread = $SQL->query('SELECT * FROM `z_helpdesk` where `account` = '.$acc.' and `type` = 1 order by `id` desc')->fetch(); $id_next = $SQL->query('SELECT MAX(id) FROM `z_helpdesk` where `account` = '.$acc.' and `type` = 1')->fetch(); $id_next = $id_next[0] + 1; if(empty($thread)) $thread['status'] = 3; if(isset($_POST['submit'])) { //if($thread['status'] != 3) //$error[] = "<font color=black><b>Can be only 1 open bug thread.</b></font>"; if(empty($_POST['subject'])) $error[] = "<font color=black><b>Assunto cannot be empty.</b></font>"; if(empty($_POST['text'])) $error[] = "<font color=black><b>Description cannot be empty.</b></font>"; if(!$allow) $error[] = "<font color=black><b>You haven't any characters on account.</b></font>"; if(empty($_POST['tags'])) $error[] = "<font color=black><b>Tag cannot be empty.</b></font>"; if(!empty($error)) { foreach($error as $errors) $main_content .= ''.$errors.'<br>'; } else { $type = 1; $status = 1; $INSERT = $SQL->query('INSERT INTO `z_helpdesk` (`account`,`id`,`text`,`type`,`subject`,`status`,`tag`,`priority`) VALUES ('.$SQL->quote($acc).','.$SQL->quote($id_next).','.$SQL->quote($_POST['text']).','.$SQL->quote($type).','.$SQL->quote($_POST['subject']).','.$SQL->quote($status).','.$SQL->quote($_POST['tags']).','.$SQL->quote($_POST['priority']).')'); header('Location: index.php?subtopic=helpdesk&id='.$id_next.''); } } $main_content .= '<br><form method="post" action=""><font size=4><b>Atendimento</b></font><br><br><br><table><tr><td><img src=images/bug/report.png> <b>Assunto:</b></td><td><input type=text name="subject"/></td></tr><tr><td><img src=images/bug/des.png><b>Descrição:</b></td><td><textarea name="text" rows="4" cols="15"></textarea></td></tr><tr><td><img src=images/bug/tag.png> <b>TAG:</b></td><td><select name="tags"><option value="">SELECT</option>'; for($i = 1; $i <= count($tags); $i++) { $main_content .= '<option value="' . $i . '">' . $tags[$i] . '</option>'; } $main_content .= '</td></tr><tr><td><br><img src=images/bug/pri.gif> <b>Prioridade:</b></td><td><br><select name="priority"><option value="">SELECT</option>'; for($i = 1; $i <= count($priority); $i++) { $main_content .= '<option value="' . $i . '">' . $priority[$i] . '</option>'; } $main_content .= '</select></tr></tr></table><br><input type="submit" name="submit" value="Submit" class="input2"/></form>'; } } } if($group_id_of_acc_logged >= $config['site']['access_admin_panel'] and empty($_REQUEST['control'])) { $main_content .= '<br><br><a href="index.php?subtopic=helpdesk&control=true">[ADMIN PANEL]</a>'; } } 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=helpdesk" 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>'; } ?> Salve e feche.
     
     
    Pós isso abra o seu phpmyadmin, seuip.com/phpmyadmin, clique em executar e dentro da caixa coloque o seguinte:
    CREATE TABLE IF NOT EXISTS `z_helpdesk` ( `account` varchar(255) NOT NULL, `type` int(11) NOT NULL, `status` int(11) NOT NULL, `text` text NOT NULL, `id` int(11) NOT NULL, `subject` varchar(255) NOT NULL, `priority` int(11) NOT NULL, `reply` int(11) NOT NULL, `who` int(11) NOT NULL, `uid` int(11) NOT NULL AUTO_INCREMENT, `tag` int(11) NOT NULL, `registered` int(11) NOT NULL, PRIMARY KEY (`uid`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=61 ; E então irá aparecer aquela linha verde dizendo que o comando foi executado com sucesso...


    Pronto, o sistema foi implantando.


    Agora irei ensinar vocês (caso não saibam) adicionar a aba de atendimento no menu do seu website.

    Primeiramente, na pasta principal do seu site abra o arquivo index.php e procure por:
     
    case "houses": $topic = "Houses"; $subtopic = "houses"; include("houses.php"); break; Logo abaixo de break; adicione o seguinte:
    case "helpdesk": $topic = "Helpdesk"; $subtopic = "helpdesk"; include("helpdesk.php"); break; Ficando então:
     
    case "houses": $topic = "Houses"; $subtopic = "houses"; include("houses.php"); break; case "helpdesk": $topic = "Helpdesk"; $subtopic = "helpdesk"; include("helpdesk.php"); break; Salve e feche.
     
     
     
     
    Logo depois na pasta principal vá em layouts/tibiacom/layout.php e procure por:
    <a href='index.php?subtopic=archive'> <div id='submenu_archive' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'> <div class='LeftChain' style='background-image:url(<?PHP echo "$layout_name"; ?>/images/general/chain.gif);'></div> <div id='ActiveSubmenuItemIcon_archive' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo "$layout_name"; ?>/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'>News Archive</div> <div class='RightChain' style='background-image:url(<?PHP echo "$layout_name"; ?>/images/general/chain.gif);'></div> </div> </a> Logo depois do </a> adicione:
    <a href='index.php?subtopic=helpdesk'> <div id='submenu_helpdesk' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'> <div class='LeftChain' style='background-image:url(<?PHP echo "$layout_name"; ?>/images/general/chain.gif);'></div> <div id='ActiveSubmenuItemIcon_helpdesk' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo "$layout_name"; ?>/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'>Atendimento <font size=-3>NOVO</font></div> <div class='RightChain' style='background-image:url(<?PHP echo "$layout_name"; ?>/images/general/chain.gif);'></div> </div> </a> Salve e feche.
     
     
     
    Pronto, atualize seu site e no menu News verifique que estará lá em funcionalidade o sistema de Atendimento por Ticket.
     
     
     
     
    Dica: Seja formal e tenha eficaz com seus jogadores, isto mostrará a dedicação da equipe em cima do servidor.
     
     
     
     
    Este sistema é antigo, onde venho adaptando para postar para vocês do TibiaKing, não autorizo o post do mesmo em outro fórum seja qual for a relação. O conteúdo foi adaptado por mim e exclusivo ao fórum do tibiaking.




    Qualquer dúvida quero que me comunique e poste aqui no fórum.


    O Sistema foi testado e encontra-se em funcionalidade a qualquer gesior account, seja qual for a versão do mesmo.


    Créditos:
    Averatec -OTLAND
    Absolute

    Gostaram?
     
     
     
    Até o próximo sistema/script/servidor seja o que for!

    Até mais galerinha do TK!
     
  19. Gostei
    Rockersz deu reputação a luanluciano93 em [Gesior2012] Painel de Acessos.   
    Olá amigos, hoje vou ensinar como fazer um painel de acessos, 

    Mas Luan, que painel é esse?
    • Basicamente é um sistema interno do site, você cria uma pasta 'acessos', o sistema cria todos os dias um arquivo de texto e nomeia o arquivo com a data do dia atual (exemplo: 05-03-2014.txt), dentro desse arquivo de texto ficará todos as acessos do dia.  Ele mostra o ip do computador que acessou, hora e minuto do acesso, conta do jogador (se ele estiver logado na conta) e url que ele acessou.

    Mas Luan, para que eu vou usar isso?
    • Você pode usar para várias coisa, desde pegar o ip pelo horário de um ataque, ou até usar apenas para monitoramento de quem acessa o site.

    Mas Luan, isso ae só pega em Gesior, e ainda a versão 2012?
    • Não, isso serve para qualquer site, sendo de tibia ou não, mas para instala-lo necessita de um pouquinho de conhecimento na area.

    Abaixo vou ensinar como instalar no gesior2012 ... 

    Primeiramente, crie uma pasta 'acessos' no diretório (pasta www ou htdocs) do seu site.
    Depois vá na pasta 'system' e abra o arquivo 'load.compat.php', no final dele adicione esse código:
     
    ################################################################################################# ################### SISTEMA DE ACESSOS BY LUANLUCIANO93 ########################## ################################################################################################# if($logged) { $acc = $account_logged->getCustomField('name'); } else { $acc = 'NO LOGOUT';} $ip = $_SERVER['REMOTE_ADDR']; $data = date("d-m-y"); $hora = date("H-i-s"); $myFile = './acessos/'. $data .'.txt'; $fh = fopen($myFile, 'a') or die('Erro ao abrir o arquivo.'); $url = $_SERVER['HTTP_REFERER']; $stringData = "$hora (hour) ------ IP:{$ip} ----- $acc ----- $url \n"; fwrite($fh, $stringData); fclose($fh); #################################### END ######################################################## E pronto, simples assim! Dá um F5 e olha na pasta 'acessos'.

    É isso ae pessoal, espero que tenham gostado. Abração e até mais.
  20. Gostei
    Qual é esse script que derruba servidor? compartilhe conosco, conheço inumeros bugs nesse servidor, podemos compartilhar e se ajudar.
  21. Gostei
    Pronto ja compilei.
    Pra galera ai que usa Windows, eu vou ver como compila para windows.
    E ( Não vou ter um compromisso com vocês ) mas vou compila para windows 32 e 64 e posto aqui pra vocês. 
    Mas não recomendo usarem windows para seus servidores.
     
    Ta ai imagem do Servido compilado e funcionando.
     

     
    E imagem do Site configurado.
     

     
    As coisas aqui pelo meu ver, não é feita para leigos ou quem esta começando.
    Si você é novato no mundo do Otserv se prepare, porque só vai acha bucha. ( E poucos interessados a te ajudar )
    E talvez ache pessoas como eu que possa ajudar vocês.
    E obrigado  @Strix Seran
    Por mais que comentou pouca coisa ( e Útil ) , fez eu ter força e i até o fim.
     
    IMPORTANTE: tem um script no server que derruba o servidor, ache ele e delete.
    e caso for usar o site que ja vem junto, velho reveja script pro script, e delete os char ja criados até mesmo o God e crie o seu.
    Fica ai minha dica.
     
     
     
     
     
     
     
     
  22. Gostei
    Rockersz deu reputação a Pedriinz em [AJUDA] Itens da store para MailBox (Depot)   
    Substitua seu arquivo init.lua por este:
     
     
     
  23. Gostei
    Rockersz deu reputação a Eduardo Dantas em Script init.lua (arrumando bug da store dos servers OTX)   
    Use este: 
    100% livre de bugs.

    Lembrando que os créditos é do pessoal da OTX Team, por fixar o bug 100%

    https://github.com/mattyx14/otxserver/pull/186
  24. Gostei
    galera que tiver tendo problemas me der REP+ que resolvo todos os problemas de voces. tenho esse servidor ai 100% site + servidor, com base do maluco totalmente sem bug
  25. Gostei
    Eai galera do TK!
    Descobri uma coisa hoje e não sei se já tem por aí...
    Então trouxe aqui pra vocês pois é um grande adianto pra quem ta procurando as imagens do store.
     
    Vamos aos passos:
     
    Logue sua conta no tibia global com o cliente normal da cipsoft.
      Abra a store e navegue por todos os items/categorias.


    (Perceba que os novos items que você acessa a imagem demora um pouco para carregar, isso por que está sendo salva no seu PC!)

      Após feito isso, abra o command prompt (Atalho: Windows+R) e digite o %appdata%.


    (A janela que vai abrir é onde ficam guardados todos os arquivos de cache dos seus aplicativos.)

      Navegue até a pasta Tibia->ImageCache. Eis aqui o pote de ouro!


      Cada pasta de o nome final do arquivo, copie o nome da pasta e cole renomeando sua imagem.



      E voilá eis o seu arquivo de imagem em png já com o nome!  
    É isso aí galera, se gostou do tutorial... REP+

Informação Importante

Confirmação de Termo