//===== Thaddeus Scripts ==================================
//= Simple Cool Anti-Bot
//===== By: ==================================================
//= Thaddeus
//===== Current Version: =====================================
//= 1.0
//===== Compatible With: =====================================
//= Hercules, rAthena, 3ceam, eAthena
//===== Description: =========================================
// Improvise Simple Anti-Bot! from method of Brian.
//===== Comments: ============================================
//= Change the % chance of triggering, change jail time.
//===== Additional Comments: =================================
//= 1.00 Initial Release
//===== Contact Info: =========================================
//= http://hercules.ws/board/user/457-thaddeus/
//============================================================
//===== Credits to: =========================================
//= Brian,
//============================================================
- script ANTIBOT -1,{
function create_code_segment;
OnInit:
.code_segment_length = 4;
.code_segment_count = 3;
.jail_duration_days = 10;
.max_error_treshold = 3;
initnpctimer;
end;
OnPCLoginEvent:
if(bot_check_error_count) {
doevent("ANTIBOT::OnBotCheck");
}
end;
OnTimer1800000:
initnpctimer;
addrid(0);
OnBotCheck:
setpcblock(PCBLOCK_ALL, true);
OnRetry:
for(.@i = 0; .@i < .code_segment_count; .@i++) {
.@code$[.@i] = create_code_segment(.code_segment_length);
}
mes "You Have 3 Chance to Type the Red Text Correctly";
mes "If you failed- You will be jailed";
mes "Input the ^FF0000RED COLOUR^000000 parts";
mes "^FF0000" + implode(.@code$, "^000000^0000FF-^000000^FF0000") + "^000000";
input .@input$;
if(.@input$ != implode(.@code$, "")){
bot_check_error_count++;
if (bot_check_error_count >= .max_error_treshold) {
atcommand("@jailfor " + .jail_duration_days + "d " + strcharinfo(0));
announce("[Anti-BOT]: The user [" + strcharinfo(0) + "] has been jailed for " + .jail_duration_days + " days.", 0, 0xe80f0f);
bot_check_error_count = 0;
setpcblock(PCBLOCK_ALL, false);
end;
}
mes("You entered the wrong code..");
next;
goto OnRetry;
}
bot_check_error_count = 0;
setpcblock(PCBLOCK_ALL, false);
end;
function create_code_segment {
.@length = getarg(0);
setarray(.@character_list$, "1", "2", "3", "4", "5", "6", "7", "8", "9",
"A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",
"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",
"!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "-", "=", "/", "+");
for(.@i = 0; .@i < .@length; .@i++) {
.@code$ += .@character_list$[rand(getarraysize(.@character_list$))];
}
return .@code$;
}
}
sec_pri mapflag pvp off