Postado Setembro 29, 2015 10 anos Descrição Como funciona? O admin do site terá a opção de gerar um código de cupom que da x quantidade de points. Ele apenas coloca a quantidade de points que deseja gerar e então, surgirá a key para o player usar e obter os points. _______________________________________ Coupon System Execute no MySQL query: SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; CREATE TABLE IF NOT EXISTS `__cornex_redeem` ( `id` int(11) NOT NULL AUTO_INCREMENT, `points` int(11) NOT NULL, `used_by` int(11) NOT NULL DEFAULT '0', `time` int(11) NOT NULL, `code` varchar(100) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; Crie um arquivo chamado admincoupon.php dentro do diretório /pages/ <?php if(!defined('INITIALIZED')) exit; if($group_id_of_acc_logged >= $config['site']['access_admin_panel']){ function serialKey() { $chars = array_merge(range(0, 9), range('A', 'Z')); $serial = ''; $max = count($chars)-1; for($i=0;$i<20;$i++){ $serial .= (!($i % 5) && $i ? '-' : '').$chars[rand(0, $max)]; } return $serial; } if (isset($_POST['points'])) { $error = false; $points = $_POST['points']; if (empty($points)) { $error[] = "<font color='red'>Field cannot be empty</font>"; } if (!is_numeric($points)) { $error[] = "<font color='red'>Must be a number value</font>"; } if (!empty($error)) { foreach ($error as $err) { $main_content .=''.$err.'<br>'; } } if (empty($error)) { // Success $key = serialKey(); $SQL->query('INSERT INTO `__cornex_redeem` (`code`, `points`, `used_by`, `time`, `ip`) VALUES ('.$SQL->quote($key).','.$points.', 0, 0, 0)'); echo '<p><b>Key generated</b><font color="red">: '.$key.'</font></p>'; } } $main_content .= ' <form class="ui form" action="" method="POST"> <div class="six wide field"> <label>Points</label> <input type="text" name="points" placeholder="Amount of points for this code"> </div> <input class="ui submit button" type="submit" value="Create code"> </form>'; } else { $main_content .= ' <div class="ui warning message"> <div class="header"> You dont have permission to do that! </div> </div> '; } Salve o arquivo. Agora crie um arquivo chamado redeem.php novamente dentro do diretório /pages/ <?php if(!defined('INITIALIZED')) exit; if($logged){ if(isset($_POST['code'])) { $code = $SQL->quote($_POST['code']); $query = $SQL->query('SELECT * FROM `__cornex_redeem` WHERE `code` = '.$code.' LIMIT 1;'); // Key exist in database if ($query->rowCount() >= 1) { // $query = $query[0]; $result = $query->fetchAll(PDO::FETCH_ASSOC)[0]; if ($result['used_by'] > 0) { $error[] = 'Key has already been used'; } if (!empty($error)) { foreach ($error as $err) { echo $err.'<br>'; } } if (empty($error)) { $time = time(); $code = $result['code']; $points = $result['points']; $querys = sprintf('UPDATE `__cornex_redeem` SET `time`='.time().', `used_by`='.$account_logged->getId().' WHERE `code`="'.$result['code'].'" '); $SQL->query($querys); $account_logged->setPremiumPoints($account_logged->getPremiumPoints() + $points); $account_logged->save(); echo 'Amount of '.$points.' points has been added to your account!'; } } else { echo 'Key is not valid'; } } $accid = $account_logged->getID(); $main_content .= ' <form action="" method="POST"> <input type="text" name="code"> <input type="submit" value="Redeem"> </form>'; } else { $main_content .= ' <div class="ui warning message"> <div class="header"> You dont have permission to do that! </div> </div> '; } Salve o arquivo. Abra layouts/tibiarl/layout.php Para admins gerar cupons <?PHP if($group_id_of_acc_logged >= $config['site']['access_admin_panel']){ ?> <a href="?subtopic=admincoupon"> <div id="submenu_admincoupon" 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_admincoupon" class="ActiveSubmenuItemIcon" style="background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);"></div> <div id="ActiveSubmenuItemLabel_admincoupon" class="SubmenuitemLabel">Coupons</div> <div class="RightChain" style="background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);"></div> </div> </a> <?php } ?> Para players obter points através de cupons <a href="?subtopic=redeem"> <div id="submenu_redeem" 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_redeem" class="ActiveSubmenuItemIcon" style="background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);"></div> <div id="ActiveSubmenuItemLabel_redeem" class="SubmenuitemLabel">Redeem a coupon</div> <div class="RightChain" style="background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);"></div> </div> </a> ___________________________________ Créditos Cornex raf ___________________________________ OBS. IRIA POSTAR PRA ZNOTE AAC MAS NÃO SEI SE JÁ HÁ AQUI, ENTÃO PRA EVITAR, NÃO POSTEI. CASO NÃO TENHA, ME AVISE E EU EDITO O POST.
Postado Setembro 30, 2015 10 anos Tópico aprovado e movido a área correta, obrigado por compartilhar. ➥ Regras | Seções OTServ | Seções BOT
Postado Setembro 30, 2015 10 anos Apresenta erros, precisa corrigir códigos. Também seria legal você alterar o update dos points para accounts > premium_points, pois o shop já esta ligado à estes pontos. Caso contrário os pontos não serão debitados, e não terão serventia caso o shopsystem não esteja buscando a sua table __cornex_redeem
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.