---------------------------------------------
소스를 사용하지 않고 하는 방법이 없을까 해서 한번 만들어봤습니다.
SQL문을 조금 알고있었던게 도움이 되는군요 (query_sql문을 알고는 신세계가 펼쳐졌..)
- 이 스크립트는 SQL전용 입니다.
- 이 스크립트는 플레이어가 월드진입을 하면 자동적으로 동작하는 스크립트입니다.
- 이 스크립트는 해당 계정을 서버리스를 하여도 접근거부를 유지시키는 스크립트입니다.
- 접근거부를 해제하려면 login 테이블에서 해당 계정의 state 컬럼에 있는 값을 0으로 변경하시면 됩니다.
- 공지하는 것을 제거하시려면 announce 부분을 제거하시거나 주석처리 하시면 됩니다.
- login테이블에 state부분이 있다면 모든 버전에서 동작이 가능합니다 (MySQL에 해당 테이블을 확인해주세요).
---------------------------------------------
/////////////////////////////////////////////////////////////////////////////////////////////////////
- script PC_LoginEvent -1,{
/////////////////////////////////////////////////////////////////////////////////////////////////////
set Max_Account, 1; // 가질 수 있는 '최대 계정의 수'를 설정합니다.
/////////////////////////////////////////////////////////////////////////////////////////////////////
OnPCLoginEvent:
/////////////////////////////////////////////////////////////////////////////////////////////////////
// 현재 캐릭터의 계정 IP를 변수 String_ip라는 문자변수에 저장합니다.
// 저장한 IP를 값으로 검색하여 동일한 last_ip를 가진 계정을 count합니다.
query_sql "SELECT last_ip FROM login WHERE account_id = '" + getcharid(3) + "'", String_ip$;
query_sql "SELECT count(*) FROM login WHERE last_ip = '" + String_ip$ + "'", Count_Account;
/////////////////////////////////////////////////////////////////////////////////////////////////////
// 설정한 '최대 계정의 수'와 검색된 IP의 갯수를 비교합니다.
if(Count_Account > Max_Account)
{
//공지부분.
announce "플레이어 " + strcharinfo(0) + "님(" + String_ip$ + ")이 갖고 있는 계정의 갯수는 모두 " + Count_Account + "개 입니다.",8;
announce "갖고있는 모든 계정을 블록시킵니다.",8;
// 캐릭터 강퇴부분.
// @킥 <- 이 부분을 해당 Athena에 맞는 명령어로 설정해주세요.
// kA일 경우: @킥
// eA일 경우: @kick
// 제가 올린 한글 eA14251일 경우: @킥 또는 @강퇴
// ex) ea일 경우,
// atcommand strcharinfo(0)+":@kick "+ strcharinfo(0);
atcommand strcharinfo(0)+":@킥 "+ strcharinfo(0);
// 실제 DB에 계정의 상태를 변경.
// String_ip에 저장된 IP를 가진 모든 계정의 상태를 99로 만들어서
// 다음 로그인부터는 '서버 접근 거부'라는 메세지를 출력하게금 합니다.
query_sql "UPDATE login SET state = '99' WHERE last_ip = '" + String_ip$ + "'";
// ipbanlist 테이블을 빌려 접근거부 된 계정의 목록을 입력하는 곳입니다.
// 뒤에 Account exceed MAX_Account에 있는 내용을 적절히 변경해주세요.
// 영어로 작성한 이유는 혹시나 SQL오류가 날까봐 적어뒀습니다.
// euckr에서는 한글로 해도 오류가 나질 않더군요. 둘 중에 하나를 써주세요.
//query_sql "INSERT ipbanlist (list, btime, rtime, reason) VALUES ('" + String_ip$ + "', sysdate('yyyy/mm/dd'), '2099-01-01', '계정 갯수 어김')";
query_sql "INSERT ipbanlist (list, btime, rtime, reason) VALUES ('" + String_ip$ + "', sysdate('yyyy/mm/dd'), '2099-01-01', 'Account exceed MAX_Account')";
}
}
[출처] 계정제한을 어길 시, 계정정지를 시키는 간단한 스크립트|작성자 Wz 강냉이
'게임 관련 정보 > 라그나로크' 카테고리의 다른 글
오래된 빨간상자 구현하기@_@ (0) | 2012.12.01 |
---|---|
레벨별로 선물을 주는 스크립트 (0) | 2012.12.01 |
매 2시간마다 금화를 전해주는 스크립트 (0) | 2012.12.01 |
크리스마스 관련 엔피씨 정보 (0) | 2012.12.01 |
이벤트존 이동 스크립트 정보 (0) | 2012.12.01 |