//===== Custom Script =========================================================== //= Promotional Codes //===== By: ===================================================================== //= Arzzzae //===== Current Version: ======================================================== //= 1.0 Arzzzae //= 2.3 Haikenz / Thor //===== Compatible With: ======================================================== //= Latest svn //===== Description: ============================================================ //= Adds 2 custom atcommands. @claim for players to claim //= promotional code created by Game Masters. @code is for //= administrators to add/view/delete promotional codes. //===== Additional Comments: ==================================================== //= 1.0 - Initial Release. //= 2.0 - SQL Table with confirmed and close Code //= 2.1 - Code can be used only from one Player or every Account once time. //= 2.2 - Code can store Text from 4-10 length. //= 2.3 - Corrigido e Traduzido para o brA //=============================================================================== //SQL for DBmain /* DROP TABLE IF EXISTS `reward_codes`; CREATE TABLE IF NOT EXISTS `reward_codes` ( `code` VARCHAR(10) NOT NULL DEFAULT '', `nameid` INT(11) UNSIGNED NOT NULL DEFAULT '0', `item_name` VARCHAR(45) NOT NULL DEFAULT '', `amount` SMALLINT(6) UNSIGNED NOT NULL DEFAULT '0', `time_created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', `redeem_time` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', `account_id` INT(11) UNSIGNED NOT NULL DEFAULT '0', `confirmed` INT(11) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`code`) ) ENGINE=MYISAM; */ // SQL for DBlog /* DROP TABLE IF EXISTS `rewardlogs`; CREATE TABLE `rewardlogs` ( `account_id` INT( 10 ) NOT NULL , `code` VARCHAR( 10 ) NOT NULL ) ENGINE = InnoDB; */ //=============================================================================== - script promoclaim -1,{ OnInit: bindatcmd "codigo",strnpcinfo(3)+"::OnClaim"; bindatcmd "code",strnpcinfo(3)+"::OnEditCode",99,0; end; OnClaim: mes "^FF0000 Digite o código promocional."; input .@pc$; close2; if ( query_sql("SELECT nameid,amount FROM `reward_codes` WHERE `code`='"+escape_sql(.@pc$)+"'", .@item,.@amt) == 0) { dispbottom "Código promocional inválido."; end; } else if (query_sql("SELECT code,confirmed FROM `reward_codes` WHERE `code`='"+escape_sql(.@pc$)+"' AND `confirmed`='1'")) { dispbottom "Este código promocional já foi usado."; end; } else if (query_logsql("SELECT account_id,code FROM `rewardlogs` WHERE `account_id`='"+getcharid(3)+"' AND `code`='"+escape_sql(.@pc$)+"'")) { dispbottom "Você já usou este código promocional."; end; } else if (query_sql("SELECT code,confirmed FROM `reward_codes` WHERE `code`='"+escape_sql(.@pc$)+"' AND `confirmed` >= '2'")) { getitem .@item,.@amt; dispbottom "Código promocional ativado com sucesso."; query_sql("update `reward_codes` SET `redeem_time`=NOW(),`account_id`='"+getcharid(3)+"', `confirmed` = `confirmed` + 1 WHERE `code`='"+escape_sql(.@pc$)+"'"); query_logsql("INSERT INTO `rewardlogs` (code,account_id) VALUES ('"+.@pc$+"', "+getcharid(3)+")"); end; } else { getitem .@item,.@amt; dispbottom "Código promocional ativado com sucesso."; query_sql( "UPDATE `reward_codes` SET `redeem_time`=NOW(),`account_id`='"+getcharid(3)+"',`confirmed`='1' WHERE `code` = " +escape_sql(.@pc$) ); query_logsql("INSERT INTO `rewardlogs` (code,account_id) VALUES ('"+.@pc$+"', "+getcharid(3)+")"); end; } OnEditCode: menu "Configurar um novo código promocional",ncode,"Ver códigos existentes",vcode,"Excluir códigos existentes",dcode,"Cancelar",cancel; ncode: set .@clengthmin,4; //Promotional Code Length set .@clengthmax,10; //Promotional Code Length input .@pcode$; if (getstrlen(.@pcode$) < .@clengthmin) { dispbottom "Os códigos devem ter 4 caracteres no mínimo."; end; } if (getstrlen(.@pcode$) > .@clengthmax) { dispbottom "Os códigos não podem ter mais de 10 caracteres."; end; } mes "Inserir ^FF0000"+.@pcode$+"^000000 como novo código."; mes "Você tem certeza?"; next; if(select("Sim:Não, obrigado")==2) close; query_sql ("SELECT COUNT(code) FROM `reward_codes` WHERE `code`='"+escape_sql(.@pcode$)+"'", .@pcode_exists); if (.@pcode_exists) { dispbottom "Desculpe, esse código já existe."; end; } mes "Digite o ID item da recompensa, para os jogadores que introduziram o código."; input .@reward; next; if (.@reward == 0) { dispbottom "Desculpe, o ID do item é inválido."; close; } set .@iname$, getitemname(.@reward); mes "Número de item ^FF0000"+.@reward+"^000000"; mes "é equivalente a ^FF0000"+.@iname$+"^000000."; mes "Você tem certeza?"; next; if(select("Sim:Não, obrigado")==2) close; mes "Quantidade: ^FF0000"+.@iname$+"^000000.?"; input .@amount; next; if (.@amount == 0) { dispbottom "Desculpe, esse é um número de valor inválido."; close; } mes "Você tem certeza?"; next; if(select("Sim:Não, obrigado")==2) close; query_sql ("INSERT INTO `reward_codes` (code,nameid,item_name,amount,time_created,redeem_time,account_id,confirmed) VALUES ('"+.@pcode$+"', "+.@reward+", '"+.@iname$+"', "+.@amount+", NOW(), '0000-00-00 00:00:00', '0', '0')"); next; mes "Código para mais de 1 uso?"; if(select("Sim:Não")==2) close; dispbottom "Código promocional ^FF0000"+.@pcode$+" ^000000está ativado e a recompensa é ^FF0000"+.@amount+" "+.@iname$+"."; query_sql( "UPDATE `reward_codes` SET `confirmed` = '2' WHERE `code`='"+escape_sql(.@pcode$)+"'"); close; vcode: set .@nb, query_sql("SELECT code, item_name, amount, confirmed FROM `reward_codes` ORDER BY time_created DESC LIMIT 20", .@code$, .@nid$, .@amount, .@conf); if (.@nb == 0) { dispbottom "Nenhum código existente."; end; } dispbottom "============================================"; dispbottom "=========== CÓDIGOS EXISTENTES ==========="; dispbottom " 0: Aberto 1: Fechado 2: Grátis "; dispbottom "============================================"; for(set .@i,0; .@i < .@nb; set .@i,.@i+1) dispbottom ""+.@code$[.@i]+" ( Reward: "+.@amount[.@i]+" "+.@nid$[.@i]+" ) Used: "+.@conf[.@i]+" "; dispbottom "============================================"; end; dcode: input .@dcode$; query_sql ("SELECT COUNT(code) FROM `reward_codes` WHERE `code`='"+escape_sql(.@dcode$)+"'", .@pcode_exists); if (.@pcode_exists) { mes "Deseja excluir esse código?"; next; if(select("Sim:Não, obrigado")==2) close; query_sql ("DELETE FROM `reward_codes` WHERE `code`='"+escape_sql(.@dcode$)+"'"); dispbottom "Código promocional excluído com êxito."; close; } dispbottom "Código promocional não encontrado."; end; cancel: close; }