Jump to content
  • 0

Request: IP Check


Question

Posted

Hi, im searching for an IP Check Script, maybe an "onpcloginevent" script, i wanna kick players

which are already logged on with 3 other accounts, like this:

OnPCLoginEvent:

if > players ip is 3 times logged in

kick

else

end:

possible?

10 answers to this question

Recommended Posts

Posted

yep.

Use something like

OnPCLoginEvent:
query_sql("SELECT COUNT(*) FROM `login` WHERE `last_ip` = (SELECT `last_ip` FROM `login` WHERE `account_id` = "+getcharid(3)+")",.@count);
if( .@count >= 3 ) {
atcommand "@kick "+strcharinfo(0);
}

Posted

hm there must be something wrong, if i logged in with 3 accounts, im getting kicked everytime no matter how much accounts are online. i also restarted the server, if i login with 1 account > kick ;)

Posted
SELECT COUNT() FROM `login` WHERE `last_ip` = (SELECT `last_ip` FROM `login` WHERE `account_id` = "+getcharid(3)+")

The SQL query herenow posted actual does this:

"count how many accounts in the `login` table have the same IP as you"

instead, it should be: "count how many online chars have the same IP as you"

SELECT COUNT(char_id) FROM `char`
LEFT JOIN `login` ON `char`.account_id=login.account_id
WHERE online
AND last_ip = (SELECT `last_ip` FROM `login` WHERE `account_id` = "+getcharid(3)+")

Example: only3perIP.txt

Posted (edited)

yea its working, but i have to change the .count into 4, because i can only have 2 accounts online if i count 3, buts its working.

edit: nvm, its working in your example

Edited by Nokia
Posted

Sorry my bad.

Use this code

OnPCLoginEvent:
query_sql("SELECT COUNT(char_id) FROM `char` LEFT JOIN `login` ON `char`.account_id=login.account_id WHERE online AND last_ip = (SELECT `last_ip` FROM `login` WHERE `account_id` = "+getcharid(3)+")",.@count);
if( .@count > 3 ) {
atcommand "@kick "+strcharinfo(0);
}

Posted

// http://rathena.org/board/topic/58835-done-request-ip-check/page__view__findpost__p__80798
// Checking I P when entering a Map and kick if dual .. example map bat_room

-	script	Only1perIP	-1,{
OnPCLoadMapEvent:
set .maps$, "bat_room,anothermap,etc";
set .@my_map$, strcharinfo(3);
// check if they are on a "1-per-IP" map
if (compare(","+.maps$+"," , ","+.@my_map$+",")) {
	// look for other online players from the same IP
	query_sql("SELECT login.account_id FROM login LEFT JOIN `char` ON login.account_id=`char`.account_id " + 
	          "WHERE login.last_ip=(SELECT last_ip FROM login WHERE account_id="+getcharid(3)+") " + 
	          "AND `char`.online=1 AND login.account_id!="+getcharid(3), .@account_id;
	for (set .@i,0; .@i<getarraysize(.@account_id); set .@i,.@i+1) {
		// check if other online players are on the same map
		getmapxy .@map$,.@x,.@y, 0, rid2name(.@account_id[.@i]);
		if (.@map$ == .@my_map$) {
			// kick the new player arriving to map
			set .@name$, strcharinfo(0);
			announce "Sorry, only 1 char per IP can be on this map at a time.", bc_self;
			sleep 1000;
			atcommand "@kick " + .@name$;
		}
	}
}
end;
}

bat_room	mapflag	loadevent

To add more maps:

1. add it to this string

set .maps$, "bat_room,anothermap,etc";

2. and add the 'loadevent' mapflag on that map

<map name>	mapflag	loadevent

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.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...