Ir para conteúdo
Banner com Efeitos

CooL CaT

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    CooL CaT deu reputação a rogylennon em Programando em C!!   
    Primeiramente eu gostaria de falar um pouco mais de mim.
    Faço faculdade de sistemas para internet, então sei html, css
    C, tanto algoritmo em c, quanto Estrutura de Dados em C (é chato bagaraiii :X )
    como eu tenho experiencia em C, gostaria de criar um tutorial de C, eu poderia
    até mesmo fazer vídeo aulas se preferirem.
     
    Bom....
     
    Vamos começar do básico...
     
    oque é a linguagem C, e de onde ela veio ????
     

    C é uma linguagem de programação compilada de propósito geral, estruturada, imperativa, 
    procedural, padronizada pela ISO, criada em 1972, por Dennis Ritchie, no AT&T Bell Labs,
    para desenvolver o sistema operacional Unix (que foi originalmente escrito em Assembly).
    C é uma das linguagens de programação mais populares e existem poucas arquiteturas
    para as quais não existem compiladores para C. C tem influenciado muitas outras linguagens de programação,
     mais notavelmente C++, que originalmente começou como uma extensão para C.
    C é uma linguagem imperativa e procedural, para implementação de sistemas. Seus pontos de design foram para ele ser compilado, fornecendo acesso de baixo nível àmemória e baixos requerimentos do hardware.
    ^
     l
     l   FONTE : Wikipedia
     l
     
    Font : Wikipedia
    Mas porque aprender C ?
     
    Bem, primeiramente C é uma linguagem de baixo nivel, alem fazer você aprender 
    a lógica de programação de maneira eficiente e poderosa, ela também é uma 
    linguem de baixo nível, ou seja... ela pode ser aplicada em mecatrônica, 
    eletrônica, micro robôs e etc. Alem disso a Linguem C funciona para compilar TFS
    e alterar algumas coisas ou criar algumas funções na mesma, sobre compilar
    e mexer com o TFS, eu não posso dizer com total liberdade, pois não tenho experiencia
    no assunto, mas é importante para abrir seu OTS!
     
    Oque preciso para programar em C ?
     
    Para programa em C você precisa de um compilador, dentre eles posso sugerir o Code BLocks, 
    o Visual Studio, ou o Dev C ++!!!
    eu só não vou colocar os links aqui, porque estou com preguiça de colocar no verificador de virus
    mas e só colocar no google "download Dev c ++" e da tudo certo
     
     
    Meus objetivos:
     
    Meus objetivos em si, é atualizar esse tutorial
    trazendo conteúdo pelo menos a cada 1 semana e meia
    se for da vontade de vocês posso criar um tuturial de HTML
    ou CSS ai fica a escolha, se comentarem eu poderei saber oque fazer!
     
     
     
     
     
    #AULA 1
     
     
    Diz uma lenda que todo programador para ter sorte, seu primeiro programa deve ser o
    Hello World! se a lenda é verdadeira ou não, não importa, vamos fazer esse programinha!
     
    1- abra o seu compilador, no meu caso uso o DEV C ++
    Va em "File" canto superior esquerdo, em seguida "new"
    e depois "project".
    Ira abrir uma janela, clique em "Console Aplication"
    (desenho do computador) e circule o Radio Buttom escrito
    "C Project", ira aparecer uma caixa pedindo que você salve 
    o projeto em alguma pasta de seu computador, selecione e vamos
    programar!
     
    2- bibliotecas
     
    A linguagem C é subentendida como o próprio Assembler, ela 
    se converte em assembler e executa as funçoes, Assembler
    é uma linguagem de programação de uso binario, ela indica onde 
    a energia do computador vai, e é a Linguagem de mais baixo nível
    que eu conheço!
    bom, a linguagem C possuí essas tais de bibliotecas, imagine que
    para você fazer um programa simples, sem biblioteca, você ira fazer 
    na unha, como assimbler, utilizando 0 e 1, tudo no binário,
    só que essas bibliotecas são como funções prontas, se você estiver utilizando elas
    uma palavra que tem uma função, fica bem mais fácil de executar oque você quer ao invés
    de você ter que digitar centenas de números para dar a mesma função, essas 
    bibliotecas ja vem com essas palavras prontas, e funções prontas para facilitar
    a vida dos programadores, dessa forma ele só necessita saber oque aquela palavra
    faz e sua sintaxe. Eu não sei exatamente se sem as bibliotecas você teria de escrever tudo
    em assembler, talvez de erro e você nao consiga fazer nada, mas algumas funções você só
    consegue implementando determinada função, pois aquela função fica em uma 
    biblioteca especifica!
    Vamos incluir as blibliotecas em nosso programa então!!
     
    #Include <stdio.h> ( o # é uma sintaxe, toda vez que for incluir bibliotecas devera usá-lo, STDI é o nome da biblioteca,
    provavelmente deve ter algum significado porem eu não conheço, I O, vem de in e out, entrada e saída, ligado desligado
    o H de header, ou cabeçalho, cabeçalho de códigos, e ligado desligado, de eletricidade básica, ou números binários, sim e não,
    faz, ou não faz, comandos básicos de programação, que são, voce faz isso, ou voce nao faz isso! falso ou verdadeiro)
     
    escreva também #Include<conio.h>
     
    É interessante colocar uma biblioteca em cada linha, existe uma coisa entre os programadores chamado
    identação, que é uma maneira de visualizar o código mais fácil, darei exemplos mais a frente...
     
     
    3- Função Main!
     
    Basicamente C é inglês, se você tiver um bom inglês, ajuda bastante
    escreva abaixo da inclusão de bibliotecas pule duas linhas e escreva
     
    void main(void){
     
    o void significa que você esta dando um retorno vazio para a função, o main é a função principal, main do inglês significa principal,
    é a parte principal do seu programa, a função principal, o (void) é o parâmetro vazio que você esta dando para a função.
    a abertura de chaves, é para você poder colocar os códigos dentro da função ou seja, tudo que estiver dentro da abertura
    e fechamento das chaves ira acontecer ( nao sei se o nome desse trem é chaves {} )
    esse negocio de retorno vazio e parâmetro vazio, irei explicar mais a frente, pois é algo mais complexo, entao os primeiros programas
    irão seguir esse padrao de void main () { se preferirem podem deixar  () vazio que também funciona no DEV.
     
    em seguida digite na linha de baixo
     
    printf("HELLO WORLD"); -----> printf vem de print formated , que sinifica impressão formatada
    esse comando o printf, serve para aparecer um texto em seu programa e formatá-lo, tudo nesse unico
    comando!, a abertura e fechamento de parenteses é a sintaxe do codigo, la você poder chamar variaveis
    e editar seu texto (explicarei melhor sobre variavel no proximo tutorial se vocês gostarem desse).
    Aspas indica que tudo que você escreveu dentro das Aspas aparecera em seu programa!.
    Ponto e virgula indica que o comando terminou, para ir para o próximo comando, nem sempre é usado
    em todos comandos, explicarei com detalhe as asseçoes do ponto e virgula quando eu explicar
    laços de repetição.. 
     
    feito isso pule uma linha e escreva
     
    getch(); ----> o getch significa get character ou pegue o caracter, ele vai esperar voce digitar algo para fazer oque estiver dentro do parenteses,
     no caso eu coloquei parenteses vazio e utilizei o getch porque o programa vai ler o codigo, colocar na tela oque você escreveu
    e sair do programa muito rapido, pois ele ja fez oque tinha que fazer, então ele automaticamente fecha o cmd.
    como utilizei o getch, ele vai esperar você digitar algo, ele nao vai fazer nada com o caracter que capturar, porem só
    depois de capturar o caracter ele vai sair desse comando, finalizar o programa e fechar o cmd, ou seja...
    utilizei ele para eu poder ver oque digitei, e o programa só sai assim que eu apertar um caracter do meu teclado...
     
    em seguida feche o programa utilizando as chaves de fechamento } (se ja tiver com as chaves aberta e fexado uma vez, nao precisa de outras chaves}
     
    o programa devera ficar assim 
                                                 l
                                                 l
                                                v 
     
     
     
     
    #include <stdio.h>
    #include <conio.h>
    void main(void){
    printf("HELLO WORLD!!");
    getch();
    }
     
    após fazer isso clique em compilar, que no Dev que eu uso fica canto superior esquerdo, é um quadrado
    de quatro quadrados, com cada um de uma cor, se você deixar o mouse em cima sem clicar, vai aparecer 
    o nome da aba, e é para estar escrito compile, outra maneira é apertando o  ctrl + f9, em seguida
    abrira uma janela que ira procurar os erros do programa em compilar. salve, espere comiplar e clique em close
    em seguida aperte a aba que fica ao lado da aba compile, escrito run, ou clique ctrl + f10, e veja o reultado!!
     
     
    bom pessoal por hoje é isso, espero que tenham gostado, e se tiverem duvidas ou sujestões me perguntem!!
     
    peço por favor para quem gostou deiche um curtir, e se for utilizar meu tutorial em outro lugar, coloque meu nome
    nos créditos pois deu um trabalhão escrever e editar isso, e o conteúdo é 100 % meu  exceto a explicação
    do que é C, que eu mesmo coloquei la referencia do wikipedia, mas é um trecho minusculo do meu texto hahahah 
     
     
     
     
     
     






  2. Gostei
    CooL CaT deu reputação a Vampira em [Tutorial] Criando quest log   
    *Criando quest log por Action*


    Como eu não achei nenhum tutorial desse por aqui resolvi criar um, neste tutorial ensinarei vocês a criar um quest log para suas quests

    Oque é quest log: Quest Log tem a função de armazenar as quests que você fez ou está fazendo, mostrar em que parte da QUEST você está e como seguir adiante, etc...

    Em data/XML abra o arquivo chamado quests.xml nele vai ter mais ou menos assim:


    Entendendo:

    Vermelho = Nome da sua Quest
    Verde = Storage ID da Quest que vai aparecer no Quest Log
    Azul = Numéro de Início da Quest
    Negrito = Nome da Missão
    Rosa = Storage da Missão
    Laranja = Valor de Início da Missão
    Marrom = Valor de Finalização
    Preto = Descrição da Missão

    Bom, agora que nós já entendemos o que cada coisa faz, podemos dar continuidade com o SCRIPT. aonde estáNome da Quest você deve colocar o Nome que vai aparecer no Quest Log, depois que você inseriu o nome da sua Quest você deve ir na pasta data/actions/scripts e achar o arquivo .lua da sua Quest, nele você apertaCTRL+F e depois digita isso aqui:


    Depois que você encontrar este comando clique em Cancelar, depois vai ter mais ou menos isso:

    Exemplo:


    Relembrando que a cor Verde é o nosso Storage ID e o Azul é o nosso Comando de Início

    Agora que nós achamos o nosso Storage ID e o nosso Comando de Início podemos preencher a primeira linha da nossa Quest assim:


    Explicando um pouco para poder continuarmos com nosso Tutorial, uma quest é composta de Storages Values, cada movimento que você avança em sua Quest é dado um Storage Value novo.

    EX: Você pega a Quest (Ganhou seu primeiro Storage Value), Você abriu o Baú (Ganhou seu Storage Value Final.). Isso quando você está fazendo a Quest por Action.

    Então nós entendemos que na primeira linha da Quest nós precisamos por o Value de quando você pega a Quest. Agora continuando com o SCRIPT...

    Nós vimos que o nosso Storage ID era 1 e o nosso Comando de Início era 1, então nós acabamos de preencher a primeira linha com os números que encontramos.

    Agora nós vamos para a segunda linha, primeiramente você deve colocar o nome da sua missão, dai você me pergunta:

    - Nós já não colocamos o nome da nossa Quest?
    Resposta: Sim, nós colocamos o NOME DA QUEST agora vamos colocar o NOME DA MISSÃO, ou seja, aqueles nomes que fica no retângulo de cima quando você da SHOW na QUEST, aquilo é uma Missão.

    Bom, depois que você colocou o Nome da sua Missão, como eu havia explicado antes sobre Storages Values, nós devemos pegar agora o nosso primeiro Storage Value novamente e o nosso primeiro Comando de início, ficando assim:


    Pronto, nós preenchemos o nosso StorageValue e o nosso Comando de Início agora nós precisamos inserir o valor de término, depois que você pega o Baú (como expliquei ali em cima) você recebe o seu segundo Storage Value digamos que o meu seja assim:


    Observe que o Storage Value de quando você pega o Baú tem 2 em vez de 1, isto porque o 2 é o número de encerramento da missão, então nós devemos colocar assim na segunda linha:


    Resumindo, a nossa missão começa logo quando você recebe a missão do NPC e ela se completa quando você abre o Baú. Agora que a parte mais difícil já foi, vamos para a parte mais fácil do nosso SCRIPT, a Descrição da missão (a frase que aparece no quadro de baixo).


    Esse
    é o número da descrição, no caso nós colocamos apenas uma Missão então seria uma Descrição, se você colocar 2 Missão, você vai colocar e na outra você vai colocar depois da nossa missionstate tudo que devemos fazer é colocar nossa descrição onde está "Descrição da Missão.", ficando assim:

    Lembrando que nunca se deve usar carácteres especiais, como:


    Terminamos aqui nosso tutorial espero que tenham gostado

    Creditos: meu
    Inspiração: joaovbz
  3. Gostei
    CooL CaT deu reputação a Drazyn1291 em Faço Scripts Para Todos   
    Eae pessoal blz??? eu sou meio que um scripter iniciante meu primeiro script que desenvolvi foi um de shop system por talkactions mas n postei ele porque vou usar ele no meu server! mas dai eu estou sem fazer nada e preciso treinar bastante ainda e.e então estou aqui pra que eu possa ajudar a vocês e vocês me ajudarem tipo, vocês pedem pra eu fazer um script ex: se o player pega level 75 ganhar 3 dias de premium, dai eu faço e mando pra vocês no tópico! eu vou fazer os scripts na ordem de pedidos e se eu não souber fazer eu aviso Okay??? Vlw pela atenção e tamo junto!
     
    Informações Nescessárias:
    Eu não sei fazer scripts em tfs 1.x! 
    Quando for pedir um script... descreva o maximo possível para não poluir o tópico
    Eu faço scripts como talkactions, creaturescripts, actions, globalevents e lib
    Eu normalmente de cabeça só sei fazer scripts nas versões do tfs 0.3.6/0.4 as versões que normalmente geral usa.
    Eu ainda não sei criar scripts que utilizem funções como "time", Conditions e Addevent.
    Obs: Quando forem pedir algo olhem os requesitos e verifiquem se utilizam algumas das funções acima /\
    por exemplo:
    Spells Utilizam Conditions...
  4. Gostei
    CooL CaT recebeu reputação de Vodkart em Apolo Global 8.6 Project Procura-se Mapper e WebMaster   
    Olá,estou a procura de pessoas que tenha disposição  para me ajudar ne um projeto que estou trabalhando  á alguns dias.
    O projeto tem tudo para da certo mais eu preciso de pessoas para me ajudar a tocar ele pra frente.
    Versão 8.6
    Nome:Apolo
    Mapa:Rl Map 
    Rates:
    Name Value Experience From Level To Level Rate 1 50 150x 51 70 120x 71 80 100x 41 50 80x 51 75 70x 76 100 60x 101 150 50x 101 150 45x 151 200 30x 201 250 15x 251 350 5x 351 - 2x Skill 30.0x Magic 20.0x Loot 2.0x Quests Principais (yalahari,poi,demon oak,annihilator,demon helmet,inquisition e muito mais)
    Algumas quests aparecem no quest log
    Task System
    Events:BattleField,WoE e Loteria.
    Sistema de Atendimento Pelo Site
    Anti-clone de items do site(Os items que estão no shop quando são comprados gera uma key,fazendo assim que todos os items do shop que n tiverem essa key seja deletados,evitando assim que staffs editem chars)
     
     
     
    Ainda há vagas de:
    WebMaster 
    Mapper (com experiencia em mapa global)
    Scripter c++ (para ajudar com as soucers)
    Pessoas dispostas á apoiar o projeto
     
     
     
    Ai está um pequeno video que gravei do servidor:
     
     
     
    Quem tbm estive interesado em saber mais sobre o projeto é so me mandar uma mensagem
     
    Pagina Do Facebook
  5. Gostei
    CooL CaT deu reputação a Vodkart em [8.6] TOP 5 LEVEL no BroadCast   
    Me pediram para postar uma especie de propaganda, onde aparecia os top level do servidor, no caso está configurado para aparecer os 5 leveis mais alto, como mostra a imagem:
     

     
    como esse script está no meu servidor faz anos, resolvi jogar para a molecada:
     
    Data/globalevents/script
     
    topleveis.lua
    function onThink(interval, lastExecution) local max, query = 5, db.getResult("SELECT `name`, `level` FROM `players` WHERE `id` > 6 AND `group_id` < 2 ORDER BY `level` DESC, `name` ASC;") local str = "TOP "..max.." Rank Level:\n\n" if (query:getID() ~= -1) then k = 1 while true do str = str .. "\n " .. k .. " - "..query:getDataString("name").."["..query:getDataInt("level").."]" k = k + 1 if not(query:next()) or k > max then break end end query:free() end doBroadcastMessage(str, 22) return true end  
    TAG:
    <globalevent name="TopLevels" interval="3600" event="script" value="topleveis.lua"/>  
  6. Gostei
    CooL CaT 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!
     
  7. Gostei
    CooL CaT deu reputação a ViitinG em [Creaturescript] Icones no minimap com descrição   
    Bom para quem não sabe como funciona o script,é uma marcação que fica no minimap(in-game) que ao deixar o ponteiro do mouse em cima aparece uma descrição,pode ser mudado tanto a descrição quanto o icone que aparece no minimap.
     
    • Adicionando o script •
     
     
     
     
    Em "data/creaturescripts/creaturescripts.xml" adicione está tag :
    <event type="think" name="IconMap" event="script" value="iconmap.lua"/> Em "data/creaturescripts/scripts" crie um arquivo lua chamado "iconmap" e cole isso dentro :
    local config = { storage = 030220122041, version = 1, marks = { {mark = 5, pos = {x = 1095, y = 1062, z = 7}, desc = "Temple."}, {mark = 4, pos = {x = 895, y = 996, z = 7}, desc = "Depot."} } } local f_addMark = doPlayerAddMapMark if(not f_addMark) then f_addMark = doAddMapMark end function onThink(cid, interval) if(isPlayer(cid) ~= TRUE or getPlayerStorageValue(cid, config.storage) == config.version) then return end for _, m in pairs(config.marks) do f_addMark(cid, m.pos, m.mark, m.desc ~= nil and m.desc or "") end setPlayerStorageValue(cid, config.storage, config.version) return TRUE end Em "data/creaturescripts/scripts/login.lua" adicione está tag no fim do script :
    registerCreatureEvent(cid, "IconMap") Caso use TFS 1.0 use este register no login.lua :
    player:registerEvent(cid, "IconMap") Creditos : Comedinhas.  -   ViitinG pelo tutorial.
     
     
    • Configurando •
     
     
     
    • Icones •
     

  8. Gostei
    o site que você postou não é compatível com todas as versões do TFS, não possui integração com o sistema de sms da contenidopago, mini-tutorial de instalação e configuração para windows e linux, eu postei o site que contém tudo isso e as respectivas versões de todos os TFS
     
     
    -- EDIT --
     
    esqueci de falar sobre o sistema de shop

Informação Importante

Confirmação de Termo