//===== 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;
}