Histórico de Curtidas
-
Rhuan Gonzaga recebeu reputação de Snowsz em (Resolvido)Erro no !RankTente reupar a imagem com erro pois aqui pelo menos ela não está abrindo
-
Rhuan Gonzaga recebeu reputação de joseanpereira em Erro ao tentar importar SQLVocê tava importando pelo phpmyadmin ?
Se sim, era somente ter aumentado os limites no php.ini, por exemplo:
post_max_size = 150M
upload_max_filesize = 150M
-
Rhuan Gonzaga recebeu reputação de Wiz Khalifa em [PEDIDO] !rank frags & !removeskullFrags:
function getPlayerNameByGUID2(n) local c = db.getResult("SELECT `name` FROM `players` WHERE `id` = "..n..";") if c:getID() == -1 then return "SQL_ERROR["..n.."]" end return c:getDataString("name") end function onSay(cid, words, param) local max = 100 local letters_to_next = 20 local skills = { ['fist'] = 0, ['club'] = 1, ['sword'] = 2, ['axe'] = 3, ['distance'] = 4, ['shielding'] = 5, ['fishing'] = 6, ['dist'] = 4, ['shield'] = 5, ['fish'] = 6, } local name_now local name = "Highscore for level\n" local rkn = 0 local no_break = 0 param = string.lower(param) dofile('config.lua') if param == "" or param == "level" and ( param ~= "magic" and param == "ml") and skills[param] == nil then name = name.."\n" name = name.."Rank Level - Nome do Jogador\n" local v = db.getResult("SELECT `name`, `level`, `experience` FROM `players` WHERE `group_id` <= 2 ORDER BY `experience` DESC LIMIT 0,"..(max)..";") repeat no_break = no_break +1 if v:getID() == -1 then break end rkn = rkn+1 name_now, l = v:getDataString("name"), string.len(v:getDataString("name")) space = "" for i=1, letters_to_next-l do space = space.." " end name = name..rkn..". "..v:getDataInt("level") .." - "..name_now..space.." ".."\n" if no_break >= 20 then break end until v:next() == false elseif param == "magic" or param == "ml" then name = name.."\n" name = name.."Rank Magic - Nome do Jogador\n" local v = db.getResult("SELECT `name`, `level`, `maglevel` FROM `players` WHERE `group_id` <= 2 ORDER BY `maglevel` DESC LIMIT 0,"..(max)..";") repeat if v:getID() == -1 then break end rkn = rkn+1 name_now, l = v:getDataString("name"), string.len(v:getDataString("name")) space = "" for i=1, letters_to_next-l do space = space.." " end name = name..rkn..". "..v:getDataInt("maglevel").." - "..name_now..space.." ".." ".."".."\n" until v:next() == false elseif param == "mana" or param == "MANA" then name = name.."\n" name = name.."Rank Mana - Nome do Jogador\n" local v = db.getResult("SELECT `name`, `level`, `manamax` FROM `players` WHERE `group_id` <= 2 ORDER BY `manamax` DESC LIMIT 0,"..(max)..";") repeat if v:getID() == -1 then break end rkn = rkn+1 name_now, l = v:getDataString("name"), string.len(v:getDataString("name")) space = "" for i=1, letters_to_next-l do space = space.." " end name = name..rkn..". "..v:getDataInt("manamax").." - "..name_now..space.." ".." ".."".."\n" until v:next() == false elseif param == "health" or param == "hp" then name = name.."\n" name = name.."Rank Health - Nome do Jogador\n" local v = db.getResult("SELECT `name`, `level`, `healthmax` FROM `players` WHERE `group_id` <= 2 ORDER BY `healthmax` DESC LIMIT 0,"..(max)..";") repeat if v:getID() == -1 then break end rkn = rkn+1 name_now, l = v:getDataString("name"), string.len(v:getDataString("name")) space = "" for i=1, letters_to_next-l do space = space.." " end name = name..rkn..". "..v:getDataInt("healthmax").." - "..name_now..space.." ".." ".."".."\n" until v:next() == false elseif param == "frags" or param == "kills" then name = name.."\n" name = name.."Rank Frags - Nome do Jogador\n" local v = db.getResult("SELECT `p`.`name` AS `name`, COUNT(`p`.`name`) as `frags` FROM `killers` k LEFT JOIN `player_killers` pk ON `k`.`id` = `pk`.`kill_id` LEFT JOIN `players` p ON `pk`.`player_id` = `p`.`id` WHERE `k`.`unjustified` = 1 GROUP BY `name` ORDER BY `frags` DESC;") repeat if v:getID() == -1 then break end rkn = rkn+1 name_now, l = v:getDataString("name"), string.len(v:getDataString("name")) space = "" for i=1, letters_to_next-l do space = space.." " end name = name..rkn..". "..v:getDataInt("frags").." - "..name_now..space.." ".." ".."".."\n" until v:next() == false elseif param == "resets" then name = name.."Rank Resets - Nome do Jogador\n" local v = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = 1020 ORDER BY `value` DESC LIMIT 0,"..(max)..";") local kk = 0 repeat if kk == max or v:getID() == -1 then break end kk = kk+1 name_now, l = getPlayerNameByGUID2(v:getDataInt("player_id")), string.len(getPlayerNameByGUID2(v:getDataInt("player_id"))) space = "" for i=1, letters_to_next-l do space = space.." " end if name_now == nil then name_now = 'sql error['..v:getDataInt("player_id")..']' end name = name..kk..". "..v:getDataInt("value").." - "..name_now..space.." ".." ".."".."\n" until v:next() == false elseif skills[param] ~= nil then name = name.."\n" name = name.."Rank "..param.." fighting - Nome do Jogador\n" local v = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = "..skills[param].." ORDER BY `value` DESC;") local kk = 0 repeat if kk == max or v:getID() == -1 then break end kk = kk+1 name_now, l = getPlayerNameByGUID2(v:getDataInt("player_id")), string.len(getPlayerNameByGUID2(v:getDataInt("player_id"))) space = "" for i=1, letters_to_next-l do space = space.." " end if name_now == nil then name_now = 'sql error['..v:getDataInt("player_id")..']' end name = name..kk..". "..v:getDataInt("value").." - "..name_now..space.." \n" until v:next() == false end if name ~= "Highscore\n" then doShowTextDialog(cid, 6500, name) end return true end Voce pode usar o comando:
!rank frags ou !rank kills
Imagem:
O script original é do usuário yogo no tópico: [TalkAction] Sistema de Frags
-
Rhuan Gonzaga recebeu reputação de PsyMcKenzie em (Resolvido)Apache não ligaVi que o tópico já foi resolvido mais caso apareça outros usuários com o mesmo problema poderão consultar ele, e caso você precisse deixar o Skype aberto basta trocar a porta dele indo em Ferramentas > Opções e deixe dessa maneira (ou use qualquer outra porta) e não se esqueça de libera-la no firewall caso a mesma esteja desativada.
-
Rhuan Gonzaga recebeu reputação de lamina em Helpdesk System - ZnoteAAC 1.5Código foi atualizado melhorando a segurança do sistema
-
Rhuan Gonzaga recebeu reputação de Renato em No-IP bloqueado pela MicrosoftAproveitando o tópico pra quem tiver problemas com o bloqueio, existe o dot.tk que fornece dominios grátis com a extensão .tk
http://www.dot.tk/
Simples e fácil de usar...
-
Rhuan Gonzaga recebeu reputação de lamina em Helpdesk System - ZnoteAAC 1.5Vi alguns sistemas de helpdesk sendo postados aqui no fórum e para aprender um pouco mais resolvi montar um bem simples para o ZnoteACC que achei um projeto incrivel e com um código muito fácil de trabalhar, enfim vamos ao que interessa
ScreenShots:
Rode os seguintes comandos SQL para criar as tabelas e colunas necessárias para o funcionamento do sistema:
CREATE TABLE IF NOT EXISTS `znote_tickets` ( `id` int(11) NOT NULL AUTO_INCREMENT, `owner` int(11) NOT NULL, `username` varchar(32) CHARACTER SET latin1 NOT NULL, `subject` text CHARACTER SET latin1 NOT NULL, `message` text CHARACTER SET latin1 NOT NULL, `ip` int(11) NOT NULL, `creation` int(11) NOT NULL, `status` varchar(20) CHARACTER SET latin1 NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `znote_tickets_replies` ( `id` int(11) NOT NULL AUTO_INCREMENT, `tid` int(11) NOT NULL, `username` varchar(32) CHARACTER SET latin1 NOT NULL, `message` text CHARACTER SET latin1 NOT NULL, `created` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; Crie o arquivo helpdesk.php na raiz com o seguinte conteúdo:
<?php require_once 'engine/init.php'; if (user_logged_in() === false) { header('Location: register.php'); } include 'layout/overall/header.php'; $view = (int)$_GET['view']; if ($view) { if (!empty($_POST['reply_text'])) { sanitize($_POST['reply_text']); // Save ticket reply on database $query = array( 'tid' => $_GET['view'], 'username'=> $_POST['username'], 'message' => $_POST['reply_text'], 'created' => time(), ); //Sanitize array array_walk($query, 'array_sanitize'); $fields = '`'. implode('`, `', array_keys($query)) .'`'; $data = '\''. implode('\', \'', $query) .'\''; mysql_insert("INSERT INTO `znote_tickets_replies` ($fields) VALUES ($data)"); mysql_update("UPDATE `znote_tickets` SET `status`='Player-Reply' WHERE `id`=". $_GET['view']); } $ticketData = mysql_select_single("SELECT * FROM znote_tickets WHERE id=". addslashes((int)$_GET['view'])); if($ticketData['owner'] != $session_user_id){ echo 'You can not view this ticket!'; die; } ?> <h1>View Ticket #<?php echo $ticketData['id']; ?></h1> <table class="znoteTable ThreadTable table table-striped"> <tr class="yellow"> <th> <?php echo getClock($ticketData['creation'], true); ?> - Created by: <?php echo $ticketData['username']; ?> </th> </tr> <tr> <td> <p><?php echo nl2br($ticketData['message']); ?></p> </td> </tr> </table> <?php $replies = mysql_select_multi("SELECT * FROM znote_tickets_replies WHERE tid='". (int)$_GET['view'] ."' ORDER BY `created`;"); if ($replies !== false) { foreach($replies as $reply) { ?> <table class="znoteTable ThreadTable table table-striped"> <tr class="yellow"> <th> <?php echo getClock($reply['created'], true); ?> - Posted by: <?php echo $reply['username']; ?> </th> </tr> <tr> <td> <p><?php echo nl2br($reply['message']); ?></p> </td> </tr> </table> <hr class="bighr"> <?php } } ?> <form action="" method="post"> <input type="hidden" name="username" value="<?php echo $ticketData['username']; ?>"><br> <textarea class="forumReply" name="reply_text" style="width: 610px; height: 150px"></textarea><br> <input name="" type="submit" value="Post Reply" class="btn btn-primary"> </form> <?php }else{ $account = mysql_select_single("SELECT name,email FROM accounts WHERE id = $session_user_id"); if (empty($_POST) === false) { // $_POST[''] $required_fields = array('username', 'email', 'subject', 'message'); foreach($_POST as $key=>$value) { if (empty($value) && in_array($key, $required_fields) === true) { $errors[] = 'You need to fill in all fields.'; break 1; } } // check errors (= user exist, pass long enough if (empty($errors) === true) { /* Token used for cross site scripting security */ if (!Token::isValid($_POST['token'])) { $errors[] = 'Token is invalid.'; } if ($config['use_captcha']) { include_once 'captcha/securimage.php'; $securimage = new Securimage(); if ($securimage->check($_POST['captcha_code']) == false) { $errors[] = 'Captcha image verification was submitted wrong.'; } } if (validate_ip(getIP()) === false && $config['validate_IP'] === true) { $errors[] = 'Failed to recognize your IP address. (Not a valid IPv4 address).'; } } } ?> <h1>Latest Tickets</h1> <?php $tickets = mysql_select_multi("SELECT id,subject,creation,status FROM znote_tickets WHERE owner=$session_user_id ORDER BY creation DESC"); if ($tickets !== false) { ?> <table> <tr class="yellow"> <td>ID:</td> <td>Subject:</td> <td>Creation:</td> <td>Status:</td> </tr> <?php foreach ($tickets as $ticket) { echo '<tr class="special">'; echo '<td>'. $ticket['id'] .'</td>'; echo '<td><a href="helpdesk.php?view='. $ticket['id'] .'">'. $ticket['subject'] .'</a></td>'; echo '<td>'. getClock($ticket['creation'], true) .'</td>'; echo '<td>'. $ticket['status'] .'</td>'; }} ?> </table> <h1>Helpdesk</h1> <?php if (isset($_GET['success']) && empty($_GET['success'])) { echo 'Congratulations! Your ticket has been created. We will reply up to 24 hours.'; } else { if (empty($_POST) === false && empty($errors) === true) { if ($config['log_ip']) { znote_visitor_insert_detailed_data(1); } //Save ticket on database $query = array( 'owner' => $session_user_id, 'username'=> $_POST['username'], 'subject' => $_POST['subject'], 'message' => $_POST['message'], 'ip' => ip2long(getIP()), 'creation' => time(), 'status' => 'Open' ); //Sanitize array array_walk($query, 'array_sanitize'); $fields = '`'. implode('`, `', array_keys($query)) .'`'; $data = '\''. implode('\', \'', $query) .'\''; mysql_insert("INSERT INTO `znote_tickets` ($fields) VALUES ($data)"); header('Location: helpdesk.php?success'); exit(); } else if (empty($errors) === false){ echo '<font color="red"><b>'; echo output_errors($errors); echo '</b></font>'; } ?> <form action="" method="post"> <ul> <li> Account Name:<br> <input type="text" name="username" size="40" value="<?php echo $account['name']; ?>" disabled> </li> <li> Email:<br> <input type="text" name="email" size="40" value="<?php echo $account['email']; ?>" disabled> </li> <li> Subject:<br> <input type="text" name="subject" size="40"> </li> <li> Message:<br> <textarea name="message" rows="7" cols="30"></textarea> </li> <?php if ($config['use_captcha']) { ?> <li> <b>Write the image symbols in the text field to verify that you are a human:</b> <img id="captcha" src="captcha/securimage_show.php" alt="CAPTCHA Image" /><br> <input type="text" name="captcha_code" size="10" maxlength="6" /> <a href="#" onclick="document.getElementById('captcha').src = 'captcha/securimage_show.php?' + Math.random(); return false">[ Different Image ]</a><br><br> </li> <?php } ?> <?php /* Form file */ Token::create(); ?> <li> <input type="hidden" name="username" value="<?php echo $account['name']; ?>"> <input type="submit" value="Submit ticket"> </li> </ul> </form> <?php }} include 'layout/overall/footer.php'; ?> Crie o arquivo admin_helpdesk.php com o conteúdo abaixo:
<?php require_once 'engine/init.php'; include 'layout/overall/header.php'; protect_page(); admin_only($user_data); // Declare as int $view = (int)$_GET['view']; if ($view){ if (!empty($_POST['reply_text'])) { sanitize($_POST['reply_text']); // Save ticket reply on database $query = array( 'tid' => $_GET['view'], 'username'=> $_POST['username'], 'message' => $_POST['reply_text'], 'created' => time(), ); //Sanitize array array_walk($query, 'array_sanitize'); $fields = '`'. implode('`, `', array_keys($query)) .'`'; $data = '\''. implode('\', \'', $query) .'\''; mysql_insert("INSERT INTO `znote_tickets_replies` ($fields) VALUES ($data)"); mysql_update("UPDATE `znote_tickets` SET `status`='Staff-Reply' WHERE `id`=". $_GET['view']); } $ticketData = mysql_select_single("SELECT * FROM znote_tickets WHERE id=". addslashes((int)$_GET['view'])); ?> <h1>View Ticket #<?php echo $ticketData['id']; ?></h1> <table class="znoteTable ThreadTable table table-striped"> <tr class="yellow"> <th> <?php echo getClock($ticketData['creation'], true); ?> - Created by: <?php echo $ticketData['username']; ?> </th> </tr> <tr> <td> <p><?php echo nl2br($ticketData['message']); ?></p> </td> </tr> </table> <?php $replies = mysql_select_multi("SELECT * FROM znote_tickets_replies WHERE tid='". addslashes((int)$_GET['view']) ."' ORDER BY `created`;"); if ($replies !== false) { foreach($replies as $reply) { ?> <table class="znoteTable ThreadTable table table-striped"> <tr class="yellow"> <th> <?php echo getClock($reply['created'], true); ?> - Posted by: <?php echo $reply['username']; ?> </th> </tr> <tr> <td> <p><?php echo nl2br($reply['message']); ?></p> </td> </tr> </table> <hr class="bighr"> <?php } } ?> <form action="" method="post"> <input type="hidden" name="username" value="ADMIN"><br> <textarea class="forumReply" name="reply_text" style="width: 610px; height: 150px"></textarea><br> <input name="" type="submit" value="Post Reply" class="btn btn-primary"> </form> <?php }else{ ?> <h1>Latest Tickets</h1> <?php $tickets = mysql_select_multi("SELECT id,subject,creation,status FROM znote_tickets ORDER BY creation DESC"); if ($tickets !== false) { ?> <table> <tr class="yellow"> <td>ID:</td> <td>Subject:</td> <td>Creation:</td> <td>Status:</td> </tr> <?php foreach ($tickets as $ticket) { echo '<tr class="special">'; echo '<td>'. $ticket['id'] .'</td>'; echo '<td><a href="admin_helpdesk.php?view='. $ticket['id'] .'">'. $ticket['subject'] .'</a></td>'; echo '<td>'. getClock($ticket['creation'], true) .'</td>'; echo '<td>'. $ticket['status'] .'</td>'; }} ?> </table> <?php } include 'layout/overall/footer.php'; ?> Para adicionar o Helpdesk no menu edite o arquivo /layout/menu.php e troque isto:
<li><a href="market.php">Item Market</a></li> <li><a href="gallery.php">Gallery</a></li> <li><a href="support.php">Support</a></li> <li><a href="houses.php">Houses</a></li> <li><a href="deaths.php">Deaths</a></li> <li><a href="killers.php">Killers</a></li> Por isso:
<li><a href="market.php">Item Market</a></li> <li><a href="gallery.php">Gallery</a></li> <li><a href="support.php">Support</a></li> <li><a href="helpdesk.php">Helpdesk</a></li> <li><a href="houses.php">Houses</a></li> <li><a href="deaths.php">Deaths</a></li> <li><a href="killers.php">Killers</a></li> E para adicionar Admin Helpdesk na sidebar do administrador edite /layout/widgets/Wadmin.php inserindo:
<li> <a href='admin_helpdesk.php'>Admin Helpdesk</a> </li> Changelog:
Também fiz um pull request no github
Abraços!
-
Rhuan Gonzaga recebeu reputação de Augusto em Helpdesk System - ZnoteAAC 1.5Vi alguns sistemas de helpdesk sendo postados aqui no fórum e para aprender um pouco mais resolvi montar um bem simples para o ZnoteACC que achei um projeto incrivel e com um código muito fácil de trabalhar, enfim vamos ao que interessa
ScreenShots:
Rode os seguintes comandos SQL para criar as tabelas e colunas necessárias para o funcionamento do sistema:
CREATE TABLE IF NOT EXISTS `znote_tickets` ( `id` int(11) NOT NULL AUTO_INCREMENT, `owner` int(11) NOT NULL, `username` varchar(32) CHARACTER SET latin1 NOT NULL, `subject` text CHARACTER SET latin1 NOT NULL, `message` text CHARACTER SET latin1 NOT NULL, `ip` int(11) NOT NULL, `creation` int(11) NOT NULL, `status` varchar(20) CHARACTER SET latin1 NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `znote_tickets_replies` ( `id` int(11) NOT NULL AUTO_INCREMENT, `tid` int(11) NOT NULL, `username` varchar(32) CHARACTER SET latin1 NOT NULL, `message` text CHARACTER SET latin1 NOT NULL, `created` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; Crie o arquivo helpdesk.php na raiz com o seguinte conteúdo:
<?php require_once 'engine/init.php'; if (user_logged_in() === false) { header('Location: register.php'); } include 'layout/overall/header.php'; $view = (int)$_GET['view']; if ($view) { if (!empty($_POST['reply_text'])) { sanitize($_POST['reply_text']); // Save ticket reply on database $query = array( 'tid' => $_GET['view'], 'username'=> $_POST['username'], 'message' => $_POST['reply_text'], 'created' => time(), ); //Sanitize array array_walk($query, 'array_sanitize'); $fields = '`'. implode('`, `', array_keys($query)) .'`'; $data = '\''. implode('\', \'', $query) .'\''; mysql_insert("INSERT INTO `znote_tickets_replies` ($fields) VALUES ($data)"); mysql_update("UPDATE `znote_tickets` SET `status`='Player-Reply' WHERE `id`=". $_GET['view']); } $ticketData = mysql_select_single("SELECT * FROM znote_tickets WHERE id=". addslashes((int)$_GET['view'])); if($ticketData['owner'] != $session_user_id){ echo 'You can not view this ticket!'; die; } ?> <h1>View Ticket #<?php echo $ticketData['id']; ?></h1> <table class="znoteTable ThreadTable table table-striped"> <tr class="yellow"> <th> <?php echo getClock($ticketData['creation'], true); ?> - Created by: <?php echo $ticketData['username']; ?> </th> </tr> <tr> <td> <p><?php echo nl2br($ticketData['message']); ?></p> </td> </tr> </table> <?php $replies = mysql_select_multi("SELECT * FROM znote_tickets_replies WHERE tid='". (int)$_GET['view'] ."' ORDER BY `created`;"); if ($replies !== false) { foreach($replies as $reply) { ?> <table class="znoteTable ThreadTable table table-striped"> <tr class="yellow"> <th> <?php echo getClock($reply['created'], true); ?> - Posted by: <?php echo $reply['username']; ?> </th> </tr> <tr> <td> <p><?php echo nl2br($reply['message']); ?></p> </td> </tr> </table> <hr class="bighr"> <?php } } ?> <form action="" method="post"> <input type="hidden" name="username" value="<?php echo $ticketData['username']; ?>"><br> <textarea class="forumReply" name="reply_text" style="width: 610px; height: 150px"></textarea><br> <input name="" type="submit" value="Post Reply" class="btn btn-primary"> </form> <?php }else{ $account = mysql_select_single("SELECT name,email FROM accounts WHERE id = $session_user_id"); if (empty($_POST) === false) { // $_POST[''] $required_fields = array('username', 'email', 'subject', 'message'); foreach($_POST as $key=>$value) { if (empty($value) && in_array($key, $required_fields) === true) { $errors[] = 'You need to fill in all fields.'; break 1; } } // check errors (= user exist, pass long enough if (empty($errors) === true) { /* Token used for cross site scripting security */ if (!Token::isValid($_POST['token'])) { $errors[] = 'Token is invalid.'; } if ($config['use_captcha']) { include_once 'captcha/securimage.php'; $securimage = new Securimage(); if ($securimage->check($_POST['captcha_code']) == false) { $errors[] = 'Captcha image verification was submitted wrong.'; } } if (validate_ip(getIP()) === false && $config['validate_IP'] === true) { $errors[] = 'Failed to recognize your IP address. (Not a valid IPv4 address).'; } } } ?> <h1>Latest Tickets</h1> <?php $tickets = mysql_select_multi("SELECT id,subject,creation,status FROM znote_tickets WHERE owner=$session_user_id ORDER BY creation DESC"); if ($tickets !== false) { ?> <table> <tr class="yellow"> <td>ID:</td> <td>Subject:</td> <td>Creation:</td> <td>Status:</td> </tr> <?php foreach ($tickets as $ticket) { echo '<tr class="special">'; echo '<td>'. $ticket['id'] .'</td>'; echo '<td><a href="helpdesk.php?view='. $ticket['id'] .'">'. $ticket['subject'] .'</a></td>'; echo '<td>'. getClock($ticket['creation'], true) .'</td>'; echo '<td>'. $ticket['status'] .'</td>'; }} ?> </table> <h1>Helpdesk</h1> <?php if (isset($_GET['success']) && empty($_GET['success'])) { echo 'Congratulations! Your ticket has been created. We will reply up to 24 hours.'; } else { if (empty($_POST) === false && empty($errors) === true) { if ($config['log_ip']) { znote_visitor_insert_detailed_data(1); } //Save ticket on database $query = array( 'owner' => $session_user_id, 'username'=> $_POST['username'], 'subject' => $_POST['subject'], 'message' => $_POST['message'], 'ip' => ip2long(getIP()), 'creation' => time(), 'status' => 'Open' ); //Sanitize array array_walk($query, 'array_sanitize'); $fields = '`'. implode('`, `', array_keys($query)) .'`'; $data = '\''. implode('\', \'', $query) .'\''; mysql_insert("INSERT INTO `znote_tickets` ($fields) VALUES ($data)"); header('Location: helpdesk.php?success'); exit(); } else if (empty($errors) === false){ echo '<font color="red"><b>'; echo output_errors($errors); echo '</b></font>'; } ?> <form action="" method="post"> <ul> <li> Account Name:<br> <input type="text" name="username" size="40" value="<?php echo $account['name']; ?>" disabled> </li> <li> Email:<br> <input type="text" name="email" size="40" value="<?php echo $account['email']; ?>" disabled> </li> <li> Subject:<br> <input type="text" name="subject" size="40"> </li> <li> Message:<br> <textarea name="message" rows="7" cols="30"></textarea> </li> <?php if ($config['use_captcha']) { ?> <li> <b>Write the image symbols in the text field to verify that you are a human:</b> <img id="captcha" src="captcha/securimage_show.php" alt="CAPTCHA Image" /><br> <input type="text" name="captcha_code" size="10" maxlength="6" /> <a href="#" onclick="document.getElementById('captcha').src = 'captcha/securimage_show.php?' + Math.random(); return false">[ Different Image ]</a><br><br> </li> <?php } ?> <?php /* Form file */ Token::create(); ?> <li> <input type="hidden" name="username" value="<?php echo $account['name']; ?>"> <input type="submit" value="Submit ticket"> </li> </ul> </form> <?php }} include 'layout/overall/footer.php'; ?> Crie o arquivo admin_helpdesk.php com o conteúdo abaixo:
<?php require_once 'engine/init.php'; include 'layout/overall/header.php'; protect_page(); admin_only($user_data); // Declare as int $view = (int)$_GET['view']; if ($view){ if (!empty($_POST['reply_text'])) { sanitize($_POST['reply_text']); // Save ticket reply on database $query = array( 'tid' => $_GET['view'], 'username'=> $_POST['username'], 'message' => $_POST['reply_text'], 'created' => time(), ); //Sanitize array array_walk($query, 'array_sanitize'); $fields = '`'. implode('`, `', array_keys($query)) .'`'; $data = '\''. implode('\', \'', $query) .'\''; mysql_insert("INSERT INTO `znote_tickets_replies` ($fields) VALUES ($data)"); mysql_update("UPDATE `znote_tickets` SET `status`='Staff-Reply' WHERE `id`=". $_GET['view']); } $ticketData = mysql_select_single("SELECT * FROM znote_tickets WHERE id=". addslashes((int)$_GET['view'])); ?> <h1>View Ticket #<?php echo $ticketData['id']; ?></h1> <table class="znoteTable ThreadTable table table-striped"> <tr class="yellow"> <th> <?php echo getClock($ticketData['creation'], true); ?> - Created by: <?php echo $ticketData['username']; ?> </th> </tr> <tr> <td> <p><?php echo nl2br($ticketData['message']); ?></p> </td> </tr> </table> <?php $replies = mysql_select_multi("SELECT * FROM znote_tickets_replies WHERE tid='". addslashes((int)$_GET['view']) ."' ORDER BY `created`;"); if ($replies !== false) { foreach($replies as $reply) { ?> <table class="znoteTable ThreadTable table table-striped"> <tr class="yellow"> <th> <?php echo getClock($reply['created'], true); ?> - Posted by: <?php echo $reply['username']; ?> </th> </tr> <tr> <td> <p><?php echo nl2br($reply['message']); ?></p> </td> </tr> </table> <hr class="bighr"> <?php } } ?> <form action="" method="post"> <input type="hidden" name="username" value="ADMIN"><br> <textarea class="forumReply" name="reply_text" style="width: 610px; height: 150px"></textarea><br> <input name="" type="submit" value="Post Reply" class="btn btn-primary"> </form> <?php }else{ ?> <h1>Latest Tickets</h1> <?php $tickets = mysql_select_multi("SELECT id,subject,creation,status FROM znote_tickets ORDER BY creation DESC"); if ($tickets !== false) { ?> <table> <tr class="yellow"> <td>ID:</td> <td>Subject:</td> <td>Creation:</td> <td>Status:</td> </tr> <?php foreach ($tickets as $ticket) { echo '<tr class="special">'; echo '<td>'. $ticket['id'] .'</td>'; echo '<td><a href="admin_helpdesk.php?view='. $ticket['id'] .'">'. $ticket['subject'] .'</a></td>'; echo '<td>'. getClock($ticket['creation'], true) .'</td>'; echo '<td>'. $ticket['status'] .'</td>'; }} ?> </table> <?php } include 'layout/overall/footer.php'; ?> Para adicionar o Helpdesk no menu edite o arquivo /layout/menu.php e troque isto:
<li><a href="market.php">Item Market</a></li> <li><a href="gallery.php">Gallery</a></li> <li><a href="support.php">Support</a></li> <li><a href="houses.php">Houses</a></li> <li><a href="deaths.php">Deaths</a></li> <li><a href="killers.php">Killers</a></li> Por isso:
<li><a href="market.php">Item Market</a></li> <li><a href="gallery.php">Gallery</a></li> <li><a href="support.php">Support</a></li> <li><a href="helpdesk.php">Helpdesk</a></li> <li><a href="houses.php">Houses</a></li> <li><a href="deaths.php">Deaths</a></li> <li><a href="killers.php">Killers</a></li> E para adicionar Admin Helpdesk na sidebar do administrador edite /layout/widgets/Wadmin.php inserindo:
<li> <a href='admin_helpdesk.php'>Admin Helpdesk</a> </li> Changelog:
Também fiz um pull request no github
Abraços!
-
Rhuan Gonzaga deu reputação a DanielTK em Escolha da VersãoPara mim é 8.6 Por que? Por que é um tipo que é mais fácil por vários players poderem usar "BOT's Fáceis" que ajuda MUITO no OTServ, e não obviamente Mapas/Scripts não são todos compatíveis mais quase de um a outro, você pode até pegar Config.s de um e por no outro sem maiores problemas, só que você terá que ter uma noção do que está fazendo. Pode-se muito bem bugar tudo e perder coisas salvas. Ah e as vantagens? , Vantagens são os Bots, as Wars, que são melhores, e também o modo do PVP, que é bem fácil e simples de ser usado por players com ou sem experiencia.
Se foi isto REALMENTE que você precisava de respostas está ai, se não, pergunte-me detalhadamente, ou outras coisas. ^.^
Ajudei ? REP+ Não custa NADA !