바람의나라 방어도무시 구현
컨텐츠 정보
- 25 조회
- 0 추천
- 0 비추천
- 목록
본문
작성자: 작성자 없음
방어도무시를 구현하는 방법을 설명해 드리겠습니다.
우선...
테스트용 마법을 하나 만들죠.
이건 대충 틀입니다.
원리에 대해 설명해 드리겠습니다.
방어도무시는 자신이 데미지를 주었을경우 대상의 무장을 깍아버린후 데미지를 준다음 다시 무장을 돌려주는 방식을 사용합니다.
다만 이방법도 몬스터에 대해 방어버그가 생길 수 있으나 방지하는 방법은 알려드릴 수 있습니다.
우선
if(@AC_D > 0)
{
set @mob_ac, get_mobac(@target);
set @max_ac, @mob_ac + @AC_D;
if(@max_ac > 100)
{
set_mobac @target, 100;
}
else
{
set_mobac @target, @mob_ac + @AC_D;
}
}
damage @id, @target, @damage, 0;
if(istype(@target) == 2 && @AC_D >= 1)
{
set_mobac @target, @mob_ac;
}
공격하기 전에 방어를 깍습니다.
그후 돌려주는 스크립트이죠.
자 여기서 다시 돌려줄때 좀 이상해 보이시나요?
istype을 해준이유는 몬스터가 살아있는지 체크하기 위해서입니다.
없는 몬스터한테 무장을 다신 올려줄 수 없으니까요..
자 무장 버그에 대해 설명하겠습니다. 이 스크립트를 보시면 죽은후엔 무장을 다시 못올립니다.
그럼 A라는 몬스터의 무장이 -50인데 이 몬스터에게 방무 10을 줘서 -40이 된상태로 죽었다고 치죠.
이 A라는 몬스터의 무장이 -40이고 다시 살아나는 몬스터가 이 A의 몬스터의 번호 혹은 자리가 같을 경우(추정중)
에는 그 몬스터의 무장을 물려받는건 이미 아시다시피 한사냥터를 계속 도시다 저주를 걸어서 데미지가 30만떳는데 또 저주가 걸려서 50만의 데미지가 떳다는
그런 현상을 방어가 터졌다. 혹은 방어버그 라고 부릅니다. 이 현상은 무장을 낮추고 다시 못올려줘서 생기는 경우죠.
만약 이 버그를 없애고싶다.
이 무장공식을 하나 만드셔서
이 스크립트의 데미지 위의 부분에
대충 무장공식은 방어가 깍인걸 다시 올려주고 데미지계산을 따로해 그 데미지가 그 몬스터의 체력보다 높다면
다시 돌려주고 죽여도 되는거니 돌려주고 죽이는겁니다.
즉 죽기전에 무장을 돌려주고 죽기때문에 -50의 무장 상태로 몬스터는 죽습니다.
좀더 나아가서.
스크립트를 완성 시켜보면..
이렇게 하면 구현이 될거 같군요. 만약 무장공식을 모르시는 분은 안하셔도 됩니다.
사실 저도 모르거든요
저 그래프를 보고 어떻게 해야할지 모르겠어요
-
등록일 00:20
-
등록일 08.20
-
등록일 08.10VMware 네트워크 IP 설정댓글 2
-
등록일 08.08