// 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