명성치 도입

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주일만인가?)
구럼....

홈지기 "그륨"
번호 제목 글쓴이 날짜 조회 수
57 도배방지 그리움 2007.04.12 222
56 그룹경험치 소스 그리움 2007.04.12 220
55 패거리전쟁중 "휴전" 그리움 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