디스 구동기 문의좀 드리겠습니다.
작성일24-07-09 22:50
조회 2,370
댓글 10
본문
if(name2itemid(@itemname) > 0 )
없는 아이템을 위와 같이 조회 했을때 맵서버가 터져버리는데..
리턴값이 이상한거 같은데 어떻게 하는게 좋을까요?..
댓글 목록 10
김태희님의 댓글

조건문 거시는거같은데. 체크함수 확인해보시고. 체크함수 인자값에 네임2아이템id(@변수) == 0 해서 짜세요.
바보다님의 댓글

FUNC_MIX_SEARCH {
set .@sd, mysd();
set .@itemname$, getarg(0);
set .@chk, 0;
if(name2itemid(.@itemname$) > 0)
{
for(set .@i, 0; .@i<mixid_max(); set .@i, .@i+1)
{
if(get_mixsuccess_count(.@i) == 1 && get_mixsuccess_itemid(.@i, 0) == name2itemid(.@itemname$))
{
set .@chk, 1;
for(set .@j, 0; .@j<get_mixrequire_count(.@i); set .@j, .@j+1)
{
set .@amount, get_mixrequire_amount(.@i, .@j);
set .@str$, .@str$ + itemid2name(get_mixrequire_itemid(.@i, .@j)) + " " + .@amount + "개\\n";
}
}
}
if(.@chk == 0)
{
message .@sd, 0, "[정보] 조합할 수 없는 아이템입니다.";
end;
}
else
{
message .@sd, 8, "<< " + .@itemname$ + " 조합법 >>\\n\\n" + .@str$;
}
}
else
{
message .@sd, 0, "[정보] 해당 아이템은 존재하지 않습니다.";
end;
}
return;
}
set .@sd, mysd();
set .@itemname$, getarg(0);
set .@chk, 0;
if(name2itemid(.@itemname$) > 0)
{
for(set .@i, 0; .@i<mixid_max(); set .@i, .@i+1)
{
if(get_mixsuccess_count(.@i) == 1 && get_mixsuccess_itemid(.@i, 0) == name2itemid(.@itemname$))
{
set .@chk, 1;
for(set .@j, 0; .@j<get_mixrequire_count(.@i); set .@j, .@j+1)
{
set .@amount, get_mixrequire_amount(.@i, .@j);
set .@str$, .@str$ + itemid2name(get_mixrequire_itemid(.@i, .@j)) + " " + .@amount + "개\\n";
}
}
}
if(.@chk == 0)
{
message .@sd, 0, "[정보] 조합할 수 없는 아이템입니다.";
end;
}
else
{
message .@sd, 8, "<< " + .@itemname$ + " 조합법 >>\\n\\n" + .@str$;
}
}
else
{
message .@sd, 0, "[정보] 해당 아이템은 존재하지 않습니다.";
end;
}
return;
}
김태희님의 댓글

이건 조합아이템관련 사용자함수(펑션) 입니다.
이걸 이용하는 스크립트를 올려주세요. 거기에 답이있어보입니다.
이걸 이용하는 스크립트를 올려주세요. 거기에 답이있어보입니다.
바보다님의 댓글

이걸로 찾아보고는 있는데..
name2itemid(.@itemname$) << 이함수를 부를때 없는값을..불러 버리면 에러가 나는거 같아서요
회피하는방법을 어떻게 하는게 좋을지 모르겠습니다.
countitem(name2itemid(@item$[@val])) 이런식으로 수량을 체크해도 없는아이템을 넣는순간 꺼지더라구요
name2itemid(.@itemname$) << 이함수를 부를때 없는값을..불러 버리면 에러가 나는거 같아서요
회피하는방법을 어떻게 하는게 좋을지 모르겠습니다.
countitem(name2itemid(@item$[@val])) 이런식으로 수량을 체크해도 없는아이템을 넣는순간 꺼지더라구요
바보다님의 댓글

구동기가 문제일까요..
윈11이라 문제 인걸까요? ㄷㄷ
디스구동기 쓰시는 다른분들은 문제 없으세요?
이거 그로고 보니 운영자케릭으로 아이템생성시에 없는아이템도 맵서버 터졌습니다
윈11이라 문제 인걸까요? ㄷㄷ
디스구동기 쓰시는 다른분들은 문제 없으세요?
이거 그로고 보니 운영자케릭으로 아이템생성시에 없는아이템도 맵서버 터졌습니다
김태희님의 댓글

구동기도 윈도우도 전혀 문제가아닙니다.
말그대로. 위에서 설명드렸듯. 사용자함수 ( 펑션 ) 짠로직이 사용하는 스크립트를 찾으셔야합니다.
말그대로. 위에서 설명드렸듯. 사용자함수 ( 펑션 ) 짠로직이 사용하는 스크립트를 찾으셔야합니다.
바보다님의 댓글

FUNC_USERSAY {
set @sd, mysd();
set @id, myid();
set @nt, get_nowtime();
set @myjob, get_job(@sd);
set @myjoblv, get_joblevel(@sd);
if( !(strpos(get_say(@sd), "/조합법 ") == -1) )
{
callfunc "MIX_SEARCH", strtok(get_say(@sd), " ", 1);
}
set @sd, mysd();
set @id, myid();
set @nt, get_nowtime();
set @myjob, get_job(@sd);
set @myjoblv, get_joblevel(@sd);
if( !(strpos(get_say(@sd), "/조합법 ") == -1) )
{
callfunc "MIX_SEARCH", strtok(get_say(@sd), " ", 1);
}
바보다님의 댓글

밑에 다른게 더 있는데 해당함수를 호출하는건 이게 다입니다
바보다님의 댓글

if( !(strpos(get_say(@sd), "/조합법 ") == -1) ){
message @sd, 3, name2itemid(strtok(get_say(@sd), " ", 1));
}
이렇게 수정후
/조합법 노란비서
-> 4000 리턴
/조합법 ㅇ
-> 맵서버 꺼짐
이렇습니다 ㅠㅠ
message @sd, 3, name2itemid(strtok(get_say(@sd), " ", 1));
}
이렇게 수정후
/조합법 노란비서
-> 4000 리턴
/조합법 ㅇ
-> 맵서버 꺼짐
이렇습니다 ㅠㅠ
바보다님의 댓글

아 죄송합니다... 백지버전구해서 해보니 잘동작하네요...
어디선가 꼬엿는지 잘 찾아보도록 하겠습니다 감사합니다.
어디선가 꼬엿는지 잘 찾아보도록 하겠습니다 감사합니다.