명성치 도입

2007.04.12 13:04

그리움 조회 수:187 추천:47

한가지 말씀들이지만..요번꺼는 퍼온글입니다...

이건 간단히 응용할수 있는거예요. 변수 만드는거 가르쳐 드렸죠...
명령어 만드는거 가르쳐 드렸죠.. 몇개만 짜맞추면 될것 같네요.

1) 변수 설정 (mstruch.h)
   일단, 명성이라는 변수를 잡아야 겠죠. 변수 설정법은 누누히 계속
   설명했으니 잘 아시리라고 믿습니다. -_-+
  
    char name[80];
   이걸...
    char name[78];
    short fame;
   이렇게 바꿉니다.

2) 몬스터 잡았을시에 명성 (creature.c)
   creature.c 의 die 함수의 처음 부분에 이런 부분이 있습니다.
    print(ply_ptr->fd, "\n당신은 %M%j 죽여 경험치 %d를 받았습니다.",
          crt_ptr,"3",expdiv);
     ply_ptr->experience += expdiv;
   여기 바로 다음줄에 이 줄을 추가 합니다.
    print(ply_ptr->fd, "\n당신은 %M%j 죽여 경험치 %d를 받았습니다.",
          crt_ptr,"3",expdiv);
    ply_ptr->experience += expdiv;
    if(crt_ptr->class == INVINCIBLE) ply_ptr->fame += 5; <-
    if(crt_ptr->class == CARETAKER) ply_ptr->fame += 10; <-
   이렇게 하면 무적을 잡았을 경우에는 5, 초인을 잡았을 경우에는
   10이 올라갑니다.

3) 대련장 설정 (creature.c)
    이 함수도 die 입니다. 거의 끝부분.
    if(!F_ISSET(rom_ptr, RSUVIV)) {
     if(crt_ptr == att_ptr)
      broadcast("\n### 애석하게도 %s님이 죽었습니다.", crt_ptr->name);
   이런 부분이 있습니다. 이 바로 위에 다음과 같이 추가해 주세요.
    if(F_ISSET(rom_ptr, RSUVIV)) ply_ptr->fame -= 5; <-
    if(!F_ISSET(rom_ptr, RSUVIV)) {
     if(crt_ptr == att_ptr)
      broadcast("\n### 애석하게도 %s님이 죽었습니다.", crt_ptr->name);
   이렇게 하면 대련장에서 지면 명성 5가 떨어집니다.
   이기는 부분도 해야 합니다. die 함수 중간쯤에서 다음과 같은 줄을
   찾습니다.

    else if(crt_ptr->type == PLAYER) {
         rom_ptr = crt_ptr->parent_rom;
         i = LT(crt_ptr, LT_PLYKL);
         t = time(0);
   이 부분 바로 다음에 다음과 같이 추가 시킵니다.
    else if(crt_ptr->type == PLAYER) {
         rom_ptr = crt_ptr->parent_rom;
         i = LT(crt_ptr, LT_PLYKL);
         t = time(0);
         if(att_ptr->type == PLAYER)
           if(F_ISSET(rom_ptr, RSUVIV)) att_ptr->fame += 5; <-
   이렇게 하면 죽인 사람은 명성이 +5 됩니다.

4) 칭송
   칭송은 명령어를 하나 만들어야 합니다. 다음과 같이 만들어 주세요.
   (게시물 5142번 참고)
    칭송 - praise;
   다음과 같이 함수를 짭니다.
    int praise(ply_ptr, cmnd)
    creature *ply_ptr;
    cmd *cmnd;
     {
      creature *crt_ptr;
      int fd;
      fd = ply_ptr->fd;
      if(cmnd->num < 2) {
         print(fd, "누구를 칭송할까요?");
         return(0);
      }
      if(ply_ptr->fame < 10) {
         print(fd, "명성이 모자랍니다.");
         return(0);
      }

       crt_ptr = find_who(cmnd->str[1]);
      if(!crt_ptr) {
         print(fd, "그런 사람은 없습니다.");
         return(0);
      }
      print(fd, "당신은 %M을 칭송하였습니다.", crt_ptr);
      print(fd, "당신의 명성 10만큼이 %M에게 전달됩니다.", crt_ptr);
      print(crt_ptr->fd, "%M이 당신을 칭송하였습니다.", ply_ptr);
      print(crt_ptr->fd, "당신의 명성이 10만큼 올라갔습니다.");
      ply_ptr->fame -= 10;
      crt_ptr->fame += 10;
      return(0);
    }
   버그 플레이 방지를 위하여 칭송을 하면 자신의 명성이 깎이게 했는데요
냠 오랜만에..강좌 적어보내요...(1주일만인가?)
구럼....

홈지기 "그륨"


XE Login