Jump to content
  • 0

every monster kill the simple bot checker applies


AinsLord

Question


  • Group:  Members
  • Topic Count:  257
  • Topics Per Day:  0.08
  • Content Count:  737
  • Reputation:   18
  • Joined:  11/21/15
  • Last Seen:  

-	script	antibot	-1,{
function GetString;
 
OnNPCKillEvent:
if( rand(100) > 30 ) end;  // 30% trigger
 
OnPCLoginEvent:
switch( rand(2) ){
        Case 0:
                sc_start sc_berserk, 1000000000, 1;
                set .@String$,GetString( 15,rand(5,10) );
                mes "Input the ^FF0000RED COLOUR^000000 part";
                mes "^0000FF"+GetString( 15,rand(5,10) )+"^FF0000"+.@String$+"^0000FF"+GetString( 15,rand(3,10) )+"^000000";
                input .@Input$;
                if( .@Input$ != .@String$ ){
                        mes "Wrong..";
                        atcommand "@kick "+strcharinfo(0);
                }
                sc_end sc_berserk;
                break;
               
        Case 1:
                sc_start sc_berserk, 1000000000, 1;
                set .@A,rand(1000);
                set .@B,rand(1000);
                mes "If A = "+.@A+"   B = "+.@B;
                switch( rand(4) ){
                        Case 0:
                                set .@Answer,.@A + .@B;
                                mes "How many is A + B ?";
                                break;
                        Case 1:
                                set .@Answer,.@A - .@B;
                                mes "How many is A - B ?";
                                break;
                        Case 2:
                                set .@Answer,.@A * .@B;
                                mes "How many is A * B ?";
                                break;
                        Case 3:
                                set .@Answer,.@A / .@B;
                                mes "How many is A / B ?";
                                break;
                }
                input .@Input;
                if( .@Input != .@Answer ){
                        mes "Wrong";
                        atcommand "@kick "+strcharinfo(0);
                }
                sc_end sc_berserk;
                break;
}
close;
 
function        GetString       {
if( getarg(0) & 1 ) setarray .@List$[ getarraysize( .@List$ ) ],"1","2","3","4","5","6","7","8","9";
if( getarg(0) & 2 ) setarray .@List$[ getarraysize( .@List$ ) ],"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z";
if( getarg(0) & 4 ) setarray .@List$[ getarraysize( .@List$ ) ],"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z";
if( getarg(0) & 8 ) setarray .@List$[ getarraysize( .@List$ ) ],"!","@","#","$","%","^","&","*","(",")","-","=","/","+";
 
set .@Str$,"";
while( getstrlen( .@Str$ ) < getarg(1) )
        set .@Str$,.@Str$ + .@List$[ rand( getarraysize( .@List$ ) ) ];
return .@Str$;
 
}
 
}

this is the NPC script every time a monster killed it will pop up

can anyone modify this like it will activate an hour to check if the player is a bot or not

Thnx in advance

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

  • Group:  Members
  • Topic Count:  257
  • Topics Per Day:  0.08
  • Content Count:  737
  • Reputation:   18
  • Joined:  11/21/15
  • Last Seen:  

thnx for suggesting

but i want script

anyone

Link to comment
Share on other sites

  • 0

  • Group:  Forum Moderator
  • Topic Count:  93
  • Topics Per Day:  0.02
  • Content Count:  10015
  • Reputation:   2350
  • Joined:  10/28/11
  • Last Seen:  

-	script	antibot	-1,{
		
	function        GetString       {
		if( getarg(0) & 1 ) setarray .@List$[ getarraysize( .@List$ ) ],"1","2","3","4","5","6","7","8","9";
		if( getarg(0) & 2 ) setarray .@List$[ getarraysize( .@List$ ) ],"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z";
		if( getarg(0) & 4 ) setarray .@List$[ getarraysize( .@List$ ) ],"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z";
		if( getarg(0) & 8 ) setarray .@List$[ getarraysize( .@List$ ) ],"!","@","#","$","%","^","&","*","(",")","-","=","/","+";
		 
		set .@Str$,"";
		while( getstrlen( .@Str$ ) < getarg(1) )
			set .@Str$,.@Str$ + .@List$[ rand( getarraysize( .@List$ ) ) ];
		return .@Str$;
	}
 
	OnCheck:
		switch( rand(2) ){
			case 0:
				sc_start sc_berserk, 1000000000, 1;
				set .@String$,GetString( 15,rand(5,10) );
				mes "Input the ^FF0000RED COLOUR^000000 part";
				mes "^0000FF"+GetString( 15,rand(5,10) )+"^FF0000"+.@String$+"^0000FF"+GetString( 15,rand(3,10) )+"^000000";
				input .@Input$;
				if( .@Input$ != .@String$ ){
						mes "Wrong..";
						atcommand "@kick "+strcharinfo(0);
				}
				sc_end sc_berserk;
				break;
			case 1:
				sc_start sc_berserk, 1000000000, 1;
				set .@A,rand(1000);
				set .@B,rand(1000);
				mes "If A = "+.@A+"   B = "+.@B;
				switch( rand(4) ){
					case 0:
						set .@Answer,.@A + .@B;
						mes "How many is A + B ?";
						break;
					case 1:
						set .@Answer,.@A - .@B;
						mes "How many is A - B ?";
						break;
					case 2:
						set .@Answer,.@A * .@B;
						mes "How many is A * B ?";
						break;
					case 3:
						set .@Answer,.@A / .@B;
						mes "How many is A / B ?";
						break;
				}
				input .@Input;
				if( .@Input != .@Answer ){
					mes "Wrong";
					atcommand "@kick "+strcharinfo(0);
				}
				sc_end sc_berserk;
				break;
		}
		close2;
		
	OnPCLoginEvent:
		addtimer ( 60 * 60000 ), strnpcinfo(3)+"::OnCheck";
		end;
}

try this.

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  4
  • Topics Per Day:  0.00
  • Content Count:  58
  • Reputation:   4
  • Joined:  04/15/16
  • Last Seen:  

On 2/17/2017 at 10:37 PM, Emistry said:

-	script	antibot	-1,{
		
	function        GetString       {
		if( getarg(0) & 1 ) setarray .@List$[ getarraysize( .@List$ ) ],"1","2","3","4","5","6","7","8","9";
		if( getarg(0) & 2 ) setarray .@List$[ getarraysize( .@List$ ) ],"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z";
		if( getarg(0) & 4 ) setarray .@List$[ getarraysize( .@List$ ) ],"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z";
		if( getarg(0) & 8 ) setarray .@List$[ getarraysize( .@List$ ) ],"!","@","#","$","%","^","&","*","(",")","-","=","/","+";
		 
		set .@Str$,"";
		while( getstrlen( .@Str$ ) < getarg(1) )
			set .@Str$,.@Str$ + .@List$[ rand( getarraysize( .@List$ ) ) ];
		return .@Str$;
	}
 
	OnCheck:
		switch( rand(2) ){
			case 0:
				sc_start sc_berserk, 1000000000, 1;
				set .@String$,GetString( 15,rand(5,10) );
				mes "Input the ^FF0000RED COLOUR^000000 part";
				mes "^0000FF"+GetString( 15,rand(5,10) )+"^FF0000"+.@String$+"^0000FF"+GetString( 15,rand(3,10) )+"^000000";
				input .@Input$;
				if( .@Input$ != .@String$ ){
						mes "Wrong..";
						atcommand "@kick "+strcharinfo(0);
				}
				sc_end sc_berserk;
				break;
			case 1:
				sc_start sc_berserk, 1000000000, 1;
				set .@A,rand(1000);
				set .@B,rand(1000);
				mes "If A = "+.@A+"   B = "+.@B;
				switch( rand(4) ){
					case 0:
						set .@Answer,.@A + .@B;
						mes "How many is A + B ?";
						break;
					case 1:
						set .@Answer,.@A - .@B;
						mes "How many is A - B ?";
						break;
					case 2:
						set .@Answer,.@A * .@B;
						mes "How many is A * B ?";
						break;
					case 3:
						set .@Answer,.@A / .@B;
						mes "How many is A / B ?";
						break;
				}
				input .@Input;
				if( .@Input != .@Answer ){
					mes "Wrong";
					atcommand "@kick "+strcharinfo(0);
				}
				sc_end sc_berserk;
				break;
		}
		close2;
		
	OnPCLoginEvent:
		addtimer ( 60 * 60000 ), strnpcinfo(3)+"::OnCheck";
		end;
}

try this.

What if I want it to be on certain map only? 

I tried to add this 

OnCheck:
		getmapxy(@map$, @xb, @yb, 0 );
		if(@map$ != "abyss_03") end;

But, the antibot is not showing anymore..

Edited by maxine02
Link to comment
Share on other sites

  • -1

  • Group:  Members
  • Topic Count:  8
  • Topics Per Day:  0.00
  • Content Count:  1137
  • Reputation:   290
  • Joined:  04/29/13
  • Last Seen:  

Players won't be annoyed if it pop-up like that? Everytime?

I think you can use ring sec shield which free and working good as anti cheat

This is not proper answer for your question.. but just suggesting

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...