DR 7.34 홍연통파 경험치 배율관련...
본문
몹킬?로 추정되는 스크립트가
UNPARTY_KILL , PARTY_KILL 이 두개의 파일(메모장형식)이 있던데
나쁜남자님께서 말씀하신 set_server_exprate 함수는 따로 발견되지 않았습니다
저 중에서 UNPARTY_KILL 함수만 들어가서 확인해봤는데 함수가 저렇게 되있던데
저부분에서 어떤걸 수정혹은 추가시켜줘야 서버 경험치 배율이 유지된채로 쭉 갈까요?
//callfunc "UNPARTY_KILL", mobid;
//mobid: 죽인 몬스터 옵젝번호
function UNPARTY_KILL {
set .@sd, mysd();
set .@id, myid();
set .@last, getarg(0);
set .@rand, rand(1, 100000);
set .@chk, get_mobexp(.@last);
set .@exprate, get_server_exprate();
set .@level, get_level(.@sd);
if(.@rand <= 1000)
{
if(.@chk > 10000000) { additem .@sd, name2item_id("코인(1개)"), 1, 0; message .@sd, 3, "코인(1개)를 획득했습니다."; }
else if(.@chk >= 25000000 && .@chk < 30000000) { additem .@sd, name2item_id("코인(1개)"), 2, 0; message .@sd, 3, "코인(1개)를 2개 획득했습니다."; }
else if(.@chk >= 30000000) { additem .@sd, name2item_id("코인(1개)"), 3, 0; message .@sd, 3, "코인(1개)를 3개 획득했습니다."; }
}
if(#challenge == 1)
{
for(set .@i, 1; .@i <= 4; set .@i, .@i + 1)
{
if(#challenge_id[.@i] != 0)
{
if(#challenge_id[.@i] == .@last)
{
set #challenge_idcnt[.@i], #challenge_idcnt[.@i] + 1;
break;
}
}
}
}
if(!#exp_ver)
{
if(.@level == 99)
{
for(set .@j, 1; .@j <= 4; set .@j, .@j + 1)
{
if(get_exp(.@sd) < 0)
{
set .@temp3, .@temp3 + 10;
set_exp .@sd, get_exp(.@sd) - 1000000000;
}
else if(get_exp(.@sd) >= 1000000000 && get_exp(.@sd) <= 2147483647)
{
set .@temp3, .@temp3 + 10;
set_exp .@sd, get_exp(.@sd) - 1000000000;
}
else break;
}
if(.@temp3 > 0)
{
additem .@sd, name2item_id("일억경"), .@temp3, 0;
message .@sd, 3, "일억경 " + .@temp3 + " 획득하여 " + countitem(.@sd, name2item_id("일억경")) + " 보유중";
}
}
}
if(#pet > 0 && #pet_state == 1)
{
set .@grade, callfunc("환수등급", .@sd);
if(.@grade == 1) set .@level_max, 20;
else set .@level_max, 99;
if(get_job(.@sd) != 4)
{
if(.@grade == 1)
{
if(.@chk >= 100000) set.@temp4, 1;
}
else if(.@grade == 2)
{
if(.@chk >= 1000000) set .@temp4, 1;
}
else if(.@grade == 3)
{
if(.@chk >= 3000000) set .@temp4, 1;
}
else if(.@grade == 4)
{
if(.@chk >= 5000000) set .@temp4, 1;
}
else if(.@grade == 5)
{
if(.@chk >= 10000000) set .@temp4, 1;
}
}
else
{
if(.@grade == 1)
{
if(.@chk >= 100000) set.@temp4, 1;
}
else if(.@grade == 2)
{
if(.@chk >= 1000000) set .@temp4, 1;
}
else if(.@grade == 3)
{
if(.@chk >= 2000000) set .@temp4, 1;
}
else if(.@grade == 4)
{
if(.@chk >= 3500000) set .@temp4, 1;
}
else if(.@grade == 5)
{
if(.@chk >= 5000000) set .@temp4, 1;
}
}
if(rand(1, 100) <= 80 && #pet_level < .@level_max && .@temp4 == 1)
callfunc "환수경험치증감", .@sd, 1;
}
// 밑에다 둔 이유는 잡은몹이나,돈획득이나 등등의 이유로인해.
if(.@last == name2mob_id("[환수]흰갈기호랑이"))
{
if(get_mapid(.@id) == name2map_id("기억의저편......"))
{
if(#tutorial == 18)
{
set #tutorial_kill, 1;
}
}
}
else if(.@last == name2mob_id("흉면노루"))
{
if(#tutorial == 27)
{
set #tutorial_kill01, #tutorial_kill01 + 1;
if(#tutorial_kill01 >= 5) set #tutorial_kill01, 5;
if(#tutorial_kill01 < 5) message .@sd, 3, "흉면노루의 기운을 흡수했습니다. (" + #tutorial_kill01 + "/5)";
else message .@sd, 3, "흉면노루의 기운이 가득찼습니다. (5/5)";
}
}
else if(.@last == name2mob_id("극독살모사"))
{
if(#tutorial == 27)
{
set #tutorial_kill02, #tutorial_kill02 + 1;
if(#tutorial_kill02 >= 5) set #tutorial_kill02, 5;
if(#tutorial_kill02 < 5) message .@sd, 3, "극독살모사의 기운을 흡수했습니다. (" + #tutorial_kill02 + "/5)";
else message .@sd, 3, "극독살모사의 기운이 가득찼습니다. (5/5)";
}
}
else if(.@last == name2mob_id("암흑룡인"))
{
if(#tutorial == 28 || #tutorial == 34)
{
set #tutorial_kill01, #tutorial_kill01 + 1;
broadrolltext 15, 4, 3, get_name(.@id) + "님께서 " + mapname() + "의 암흑룡인을 처치하셨습니다.";
}
}
else if(.@last == name2mob_id("[레이드]다이쇼군'진"))
{
callfunc "compl", "다이쇼군보상", 5;
}
else if(.@last == name2mob_id("[레이드]카시오페아"))
{
callfunc "compl", "카시오페아보상", 5;
}
else if(.@last == name2mob_id("[레이드]다이쇼군"))
{
mobspawn mapid(), 22, 10, 2, name2mob_id("[레이드]다이쇼군'진"), 1;
}
else if(.@last == name2mob_id("[레이드]이타치"))
{
callfunc "compl", "이타치보상", 5;
}
else if(.@last == name2mob_id("맘모스"))
{
callfunc "compl", "맘모스의보상", 5;
}
else if(.@last == name2mob_id("화염쌍도무사"))
{
callfunc "compl", "화염쌍도무사보상", 5;
}
else if(.@last == name2mob_id("하데스"))
{
callfunc "compl", "하데스보상", 5;
}
else if(.@last == name2mob_id("광용"))
{
callfunc "compl", "광용보상", 5;
}
else if(.@last == name2mob_id("반고"))
{
if(countitem(.@sd, name2item_id("달의눈물")) > 0 && countitem(.@sd, name2item_id("태양의눈물")) > 0)
{
if($begin == 0)
{
set #begin_sun, 0;
set #begin_moon, 0;
set $begin_open, .@id;
sleep 1500;
set $begin_open, 0;
}
else message .@sd, 3, "태초의신전에 다른 일행이 있습니다.";
}
}
else if(.@last == name2mob_id("추격병"))
{
if($providence >= 3) set $providence_kill, $providence_kill + 1;
}
else if(.@last == name2mob_id("하급구미호머리") || .@last == name2mob_id("중급구미호머리") || .@last == name2mob_id("상급구미호머리"))
{
if(mapid() == name2map_id("[하급]달빛구미호동굴5")) set .@lv, 1;
else if(mapid() == name2map_id("[중급]달빛구미호동굴5")) set .@lv, 2;
else if(mapid() == name2map_id("[상급]달빛구미호동굴5")) set .@lv, 3;
sleep 1350;
set $fox[.@lv], 6;
npcspawn mapid(), 13, 9, 2, name2npc_id("힘빠진구미호"), "힘빠진구미호";
}
else if(.@last >= name2mob_id("한방검사장") && .@last <= name2mob_id("한방거사장"))
{
if($combo == 2) set $combo_score2, $combo_score2 + 1;
if($combo_score2 >= 25)
{
set $combo_score2, $combo_score2 - 25;
if($combo_score2 < 0) set $combo_score2, 0;
magic_cast .@id, name2magic_id("한방굴광폭");
}
}
else if(.@last == name2mob_id("잔인한마한산적"))
{
if(mapname() == "마한산적소굴01") set .@index, 1;
else if(mapname() == "마한산적소굴02") set .@index, 2;
else if(mapname() == "마한산적소굴03") set .@index, 3;
elss if(mapname() == "마한산적소굴04") set .@index, 4;
else if(mapname() == "마한산적소굴05") set .@index, 5;
else end;
if($mahan[.@index] == 1)
{
set $mahan_kill[.@index], $mahan_kill[.@index] + 1;
if($mahan_kill[.@index] >= 20)
{
set $mahan[.@index], 2;
set $mahan_kill[.@index], 0;
sleep 3000;
message .@sd, 3, "임무2. 산적 대장 물리치기";
mobspawn mapid(), 16, 12, 2, name2mob_id("마한산적대장"), 1;
mobspawn mapid(), 11, 8, rand(0, 3), name2mob_id("잔인한마한산적"), 1;
mobspawn mapid(), 11, 12, rand(0, 3), name2mob_id("잔인한마한산적"), 1;
mobspawn mapid(), 11, 16, rand(0, 3), name2mob_id("잔인한마한산적"), 1;
mobspawn mapid(), 20, 8, rand(0, 3), name2mob_id("잔인한마한산적"), 1;
mobspawn mapid(), 20, 12, rand(0, 3), name2mob_id("잔인한마한산적"), 1;
mobspawn mapid(), 20, 16, rand(0, 3), name2mob_id("잔인한마한산적"), 1;
}
}
}
else if(.@last == name2mob_id("각성한아수라"))
{
if(mapname() == "아수라의신전1")
{
set $temple_kill, 1;
broadrolltext 39, 45, 5, get_name(.@id) + "님께서 각성한아수라를 처치하셨습니다!";
}
}
else if(.@last == name2mob_id("마한산적대장"))
{
if(mapname() == "마한산적소굴01") set .@index, 1;
else if(mapname() == "마한산적소굴02") set .@index, 2;
else if(mapname() == "마한산적소굴03") set .@index, 3;
elss if(mapname() == "마한산적소굴04") set .@index, 4;
else if(mapname() == "마한산적소굴05") set .@index, 5;
else end;
if($mahan[.@index] == 2)
{
set $mahan[.@index], 3;
effect_xy .@id, 16, 13, 221;
}
}
if(.@last == name2mob_id("[인던]메두사의살모사"))
{
if(mapname() == "메두사의소굴01") set .@index, 1;
else if(mapname() == "메두사의소굴02") set .@index, 2;
else if(mapname() == "메두사의소굴03") set .@index, 3;
elss if(mapname() == "메두사의소굴04") set .@index, 4;
else if(mapname() == "메두사의소굴05") set .@index, 5;
else end;
if($medusa[.@index] == 1)
{
set $medusa_kill[.@index], $medusa_kill[.@index] + 1;
if($medusa_kill[.@index] >= 20)
{
set $medusa[.@index], 2;
set $medusa_kill[.@index], 0;
sleep 3000;
message .@sd, 3, "임무2. 메두사 물리치기";
mobspawn mapid(), 16, 12, 2, name2mob_id("[인던]메두사"), 1;
mobspawn mapid(), 11, 8, rand(0, 3), name2mob_id("[인던]메두사의살모사"), 1;
mobspawn mapid(), 11, 12, rand(0, 3), name2mob_id("[인던]메두사의살모사"), 1;
mobspawn mapid(), 11, 16, rand(0, 3), name2mob_id("[인던]메두사의살모사"), 1;
mobspawn mapid(), 20, 8, rand(0, 3), name2mob_id("[인던]메두사의살모사"), 1;
mobspawn mapid(), 20, 12, rand(0, 3), name2mob_id("[인던]메두사의살모사"), 1;
mobspawn mapid(), 20, 16, rand(0, 3), name2mob_id("[인던]메두사의살모사"), 1;
}
}
}
else if(.@last == name2mob_id("[인던]메두사"))
{
if(mapname() == "메두사의소굴01") set .@index, 1;
else if(mapname() == "메두사의소굴02") set .@index, 2;
else if(mapname() == "메두사의소굴03") set .@index, 3;
elss if(mapname() == "메두사의소굴04") set .@index, 4;
else if(mapname() == "메두사의소굴05") set .@index, 5;
else end;
if($medusa[.@index] == 2)
{
set $medusa[.@index], 3;
effect_xy .@id, 16, 13, 221;
}
}
if(.@last == name2mob_id("[인던]몽골전사"))
{
if(mapname() == "몽골전사의소굴01") set .@index, 1;
else if(mapname() == "몽골전사의소굴02") set .@index, 2;
else if(mapname() == "몽골전사의소굴03") set .@index, 3;
elss if(mapname() == "몽골전사의소굴04") set .@index, 4;
else if(mapname() == "몽골전사의소굴05") set .@index, 5;
else end;
댓글 목록 1
나쁜남자님의 댓글

이럴땐 무식하지만 확실한 방법이 있습니다.
notepad++ 이라는 프로그램을 이용하여 스크립트 폴더에 있는 모든 텍스트 파일을 열어서
Ctrl + F 로 set_server_exprate 함수를 모든 파일 검색을 하여 나오는 파일을 하나씩 보는수 밖에 없습니다.
한마리 잡고 ★모든 유저★가 서버 경험치 배율이 1배로 돌아왔다면 어딘가에 kill 관련 callfunc 에 있을꺼고
만약 본인만 1배율로 변경 된다면 함수 이름이 기억 나진 않지만 set_user_exprate(?) 라는 함수 비슷한게 있을텐데 아마 여기설정이 바뀔껍니다.