패거리전쟁중 "휴전"

2007.04.12 11:43

그리움 조회 수:220 추천:69

제 목:[강좌] 패거리 전쟁 중 휴전 명령..
올린이:moriah (고빈섭 )
-----------------------------------------------------------------------------
/*


                패거리 전쟁 중 휴전 명령

   본 코드는 크로키님의 멀티 전쟁 코드를 도입 하신 분만에게 만
   해당 되는 코드입니다.
   (필요하시다면 멀티 전쟁 소스를 도입 하지 않은 분을 위한 휴전 명령
    도 올려드리겠습니다.)

### 이 코드는 크로키님의 멀티 전쟁 코드를 응용하였슴을 알려드립니다.


   아래의 코드에 대한 일차 저작권은 크로키님에게 있으며
   그후 이차 저작권은 본인에게 있습니다.
   상업적 목적의 머드에서는 사용할수 없습니다.

   무료 운영중인 머드에서 사용시, 자유롭게 사용할수 있으나,

   저에게 이야기하지 않고 사용할 경우에는, 이 코드로 인해 발생하는
   문제에 대해서 저는 책임을 지지 않습니다.

1999/1/21

  키르

*/


/******************/
/* file : mtype.h */
/******************/

/* 이부분을 추가하세요. */
#define H_ISSET(p,f) (HWar[p][(f)/8] & (1<<((f)%8)))
#define H_SET(p,f) (HWar[p][(f)/8] |= 1<<((f)%8))
#define H_CLR(p,f) (HWar[p][(f)/8] &= ~(1<<((f)%8)))

/*******************/
/* file : global.c */
/*******************/
int Spy[PMAX];
int Numlockedout;
lockout *Lockout;
char HWar[16][2]; /* 추가 */

/********************/
/* file : mextern.h */
/********************/

/* 전쟁 플레그 외부변수 선언 */
extern char HWar[16][2]; /* 추가 */

/****************/
/* special1.c */
/****************/

int cancle_war(ply_ptr, cmnd)
creature *ply_ptr;
cmd *cmnd;
{
   int fd, i;
   int fnum, num, ftotal=16, fal=0;
   creature *crt_ptr;

   fd = ply_ptr->fd;
   fnum = ply_ptr->daily[DL_EXPND].max;

     if(!F_ISSET(ply_ptr,PFMBOS) || fnum == 0) {
        print(fd, "당신은 휴전 제의를 할 권리가 없습니다.\n");
        return(0);
     }
   if(cmnd->num != 2) {
       print(fd, "어느 패거리와 휴전을 하시려고요?");
       return(0);
   }

   for(num=1; num         if(!strcmp(cmnd->str[1], family_str[num])) {
           crt_ptr = find_who(fmboss_str[num]);
           if(!crt_ptr) {
               print(fd, "상대편의 두목인 %s님이 이용중이 아닙니다.",
                       fmboss_str[num]);
               return(0);
           }
           break;
       }
       fal++;
   }
   if(fal >= 15) {
       print(fd, "그런 패거리는 없습니다.");
       return(0);
   }
   if(fnum == num) {
       print(fd, "자기 자신들과 휴전을 하시려고요?");
       return(0);
   }

   if(!W_ISSET(num, fnum) && !W_ISSET(fnum, num)) {
       print(fd, "%s 패거리와는 전쟁중이 아닙니다.", family_str[num]);
       return(0);
   }

   if(H_ISSET(fnum, num)) {
       print(fd, "휴전제의를 취소합니다.");
       H_CLR(fnum, num);
       broadcast(
           "\n### %s 패거리에서 %s 패거리에의 휴전제의를 취소하였습니다.",
           family_str[fnum], family_str[num]);
       return(0);
   }
   if(H_ISSET(num, fnum)) {
       H_SET(fnum, num);
       W_CLR(fnum, num);
       W_CLR(num, fnum);
       print(fd, "%s 패거리의 휴전제의를 받아들였습니다.", family_str[num]);
       broadcast(
           "\n### %s 패거리와 %s 패거리가 휴전을 하였습니다.",
           family_str[fnum], family_str[num]);
       return(0);
   }

   H_SET(fnum, num);
   print(fd, "당신은 %s 패거리에 휴전 제의를 하였습니다.", family_str[num]);
   print(crt_ptr->fd, "\n>>> %s 패거리에서 휴전 제의를 합니다.",
           family_str[fnum]);
   broadcast(
       "\n### %s 패거리에서 %s 패거리에게 휴전제의를 하였습니다.",
       family_str[fnum], family_str[num]);
   return(0);
}

[1] 명령어 추가..

global.c

명령어들 있는 부분에..

{ "휴전제의", 200, cancle_war }, /* 휴전 제의 */



[2] 함수 선언..

mextern.h

/* SPECIAL1.C */
extern int cancle_war();

==> 이상으로 휴전 명령이 완성.. 한번 실험 해보세여..
   그리고 멀티 전쟁 으로 안 바꾸신분들도 잘 보시면 휴전 명령을 만드실 수
   있을 겁니다..(응용 해서 못할 것이 거의 없더군요..->실력은 안늘어도^^;)

[참고 : 궁금 하신거 있으면 질문 해도 괜찮아여^^;]
번호 제목 글쓴이 날짜 조회 수
57 도배방지 그리움 2007.04.12 222
56 그룹경험치 소스 그리움 2007.04.12 220
» 패거리전쟁중 "휴전" 그리움 2007.04.12 220
54 직업 추가하기 그리움 2007.04.12 218
53 자동으로 돈줍기 소스 그리움 2007.04.12 213
52 경매는 이렇게 그리움 2007.04.12 213
51 어디 그리움 2007.04.12 211
50 무한에서 안시 넣는 방법 그리움 2007.04.12 210
49 방설명 지우기 그리움 2007.04.12 209
48 특수 아이템 만들기 그리움 2007.04.12 209
47 복권 소스 그리움 2007.04.12 207
46 혼자 말하는 몹 그리움 2007.04.12 206
45 자동 이벤트 그리움 2007.04.12 204
44 낮과 밤이 되면 어둡고 환하게 그리움 2007.04.12 203
43 귀환장소 변경 소스 #1 그리움 2007.04.12 202
42 개량형 우체국 그리움 2007.04.12 202
41 주문추가 소스 그리움 2007.04.12 201
40 출구모양 개량 소스 그리움 2007.04.12 201
39 자동수련 소스 그리움 2007.04.12 201
38 잡담 안시 사용하기 그리움 2007.04.12 200


XE Login