contact 머드클럽 문의하기 카카오톡
즐겨찾기 추가plus 머드클럽이 새롭게 오픈하였습니다!
sub image
[circle]신세계 스킬셋 명령어(운영자명령어)
member photo 성천사 1 8,597 0 2008-07-06 10:51:55
/*****************************************************************************
*   메이드인 코리아(Made in Korea)                    신세계 2.5 소스        *
*                                                                                                                             *
*   do_skillset, 사용자의 스킬을 올릴수 있게 해주는 내용의 소스 act.wizard.c *
*   의 제일 끝 부분에 아래 소스를 추가한다. 그 후 interpreter.c 의 명령어    *
*   부분에 do_setskill을 넣어준다. (참고로 modify.c 안에 있는 skillset의     *
*   소스가 "스킬셋" 으로 지정되어 있을지 모르니 동일 명령이 있는지 검색후에  *
*   수정해 주면 될것이다.                                                    *
*                                                                                 *
*   소스를 act.wizard.c 안에 다 넣었다면, 이제 마무리로 olc.h 를 불러 들여서 *
*   #define NUM_SPELLS xx 부분 아랫줄에 #define NUM_SKILLS xx 를 삽입해 넣어 *
*   스펠과 스킬을 구분해 넣는다. (spells.h 안에 SKILLS 와 SPELLS 들이 설정되 *
*   어 있는데 그 숫자를 참고해서 +1 시킨 숫자를 입력해 주면 된다.  예를 들어 *
*   spells.h안에 마지막 마법이 SPELL_KILLALL 86 이라고 되어있다면 olc.h에서  *
*   는 NUM_SPELLS 87이라고 되어야한다.) (아래 for 문에서 counter = 1 부분은  *
*   스펠 1부터 출력한다는 것이고, counter = MAX_SPELLS + 1 부분은 스펠의 끝  *
*   그러니까 스킬의 시작인 최대 스펠+1부터 시작한다는 것이다 "사용자 스킬셋" *
*   을 타이핑 하면 스킬목록이 나온다. 마법은 빨간색, 기술은 녹색으로 나오며, *
*   지정한 사용자가 가지고 있는 스킬은 밝은 하늘색으로 나오게 된다. 스킬지정 *
*   은 "사용자 스킬명 스킬치 스킬셋" 형식이다.  전체 스킬을 바꾸고 싶다면    *
*   "사용자 모두 스킬치 스킬셋" 을 사용해 모든 스킬을 원하는 스킬치로 수정하 *
*   게 된다.                                                                 *
*                                                                            *
*   만든이 : 성천사,  만든날 2003.06.07, 허접소스 No. 22    *
*****************************************************************************/

ACMD(do_setskill)
{
  extern char *han_spells[];
  int find_han_skill_num(char *name);
  char arg2[MAX_INPUT_LENGTH];
  char arg1[MAX_INPUT_LENGTH];
  char arg3[MAX_INPUT_LENGTH];
  struct char_data *vict = NULL;
  int counter, columns = 0, nums, sks;
  char *ansis, *ansis2;

  argument = two_arguments(argument, arg2, arg1);

  one_argument(argument, arg3);  


    sks = atoi(arg3);

        if(!strcmp(arg1, "모두") || !strcmp(arg1, "모든")) {
                nums = 9999;
        } else nums = find_han_skill_num(arg1);

    if(nums < 0) {
                send_to_char("그런 마법이나 기술은 없습니다. ",ch);
                return;
        }

    if (!(vict = get_char_vis(ch, arg2))) {
          for (counter = 1; counter < NUM_SPELLS; counter++) {
      sprintf(buf, "&c08%3d&c07) %-10s ", counter, han_spells[counter]);
      if (!(++columns % 5))
        strcat(buf, " ");
        send_to_char(buf, ch);
    }

      for (counter = MAX_SPELLS+1; counter < NUM_SKILLS; counter++) {
                sprintf(buf, "&c09%3d&c07) %-10s ", counter, han_spells[counter]);
      if (!(++columns % 5))
        strcat(buf, " ");
        send_to_char(buf, ch);
    }
        send_to_char(" "
                           "사용법: <이름> 스킬셋 &c14(스킬목록보기)&c07 "
                           "        <이름> <스킬명> <스킬치> 스킬셋 "
                     "&c14"
                           "  <이름> 모두 <스킬치> 스킬셋 사용시 전체스킬 적용 &c07",ch);
        return;
  }

  if(!*arg2 || !*arg1 || !*arg3) {
          for (counter = 1; counter < NUM_SPELLS; counter++) {
                  if (GET_SKILL(vict, counter) > 0) {
                  ansis = "&c13";
          ansis2 = "&c14";
                  } else {
                          ansis = "&c08";
              ansis2 = "&c07";
                  }
      sprintf(buf, "%s%3d&c07) %s%-10s&c07/&c02%-3d&c07 ",
                  ansis, counter, ansis2, han_spells[counter], GET_SKILL(vict, counter));
      if (!(++columns % 4))
        strcat(buf, " ");
        send_to_char(buf, ch);
    }

          for (counter = MAX_SPELLS+1; counter < NUM_SKILLS; counter++) {
                  if (GET_SKILL(vict, counter) > 0) {
                    ansis = "&c14";
            ansis2 = "&c14";
          } else {
                          ansis = "&c09";
                      ansis2 = "&c07";
                  }
                sprintf(buf, "%s%3d&c07) %s%-10s&c07/&c02%-3d&c07 ",
                        ansis, counter, ansis2, han_spells[counter], GET_SKILL(vict, counter));
      if (!(++columns % 4))
        strcat(buf, " ");
        send_to_char(buf, ch);
    }
    send_to_char(" "
                         "사용법: <이름> 스킬셋 &c14(스킬목록보기)&c07 "
                                 "        <이름> <스킬명> <스킬치> 스킬셋 "
                 "&c14"
                                 "   <이름> 모두 <스킬치> 스킬셋 사용시 전체스킬 적용 &c07",ch);
    return;
  }
  if (IS_NPC(ch))
    return;

  if (GET_LEVEL(ch) < LVL_IMPL) {
          if (nums > 0) {
          send_to_char("당신을 그것을 할 수 있을 만큼 성스럽지 못합니다. ",ch);
          }
          return;
  }

  if (nums > NUM_SKILLS && nums != 9999) {
          sprintf(buf,"스킬은 1-%d 사이만 가능합니다. ", NUM_SKILLS);
      send_to_char(buf,ch);
      return;
  }

  if (sks > 100 || sks < 0) {
          send_to_char("스킬치는 0-100 사이만 가능합니다. ",ch);
          return;
  }
  
  if (nums == 9999) {
     for (counter = 1; counter < NUM_SPELLS; counter++) {
        GET_SKILL(vict, counter) = sks;
         }

         for (counter = MAX_SPELLS+1; counter < NUM_SKILLS; counter++) {
                GET_SKILL(vict, counter) = sks;
     }
     sprintf(buf, "(GC) %s, %s님의 모든 스킬 %d으로 셋팅", GET_NAME(ch), GET_NAME(vict), sks);
     mudlog(buf, BRF, LVL_GOD, TRUE);
         sprintf(buf, "%s님의 모든 스킬을 %d으로 셋팅했습니다. ",GET_NAME(vict), sks);
         send_to_char(buf, ch);
     if (vict == ch) {
         send_to_char(OK, ch);
         return;
     }
                 sprintf(buf, "%s님이 당신의 모든 스킬을 %d으로 셋팅했습니다. ",GET_NAME(ch), sks);
     send_to_char(buf, vict);
         return;
  }

    GET_SKILL(vict, nums) = sks;
    sprintf(buf, "(GC) %s, %s님의 %s스킬을 %d으로 셋팅", GET_NAME(ch), GET_NAME(vict), han_spells[nums], sks);
    mudlog(buf, BRF, LVL_GOD, TRUE);
    sprintf(buf,"%s님의 %s스킬을 %d으로 셋팅했습니다. ",GET_NAME(vict), han_spells[nums], sks);
    send_to_char(buf, ch);
    if (vict == ch) {
    send_to_char(OK, ch);
        return;
        }

        sprintf(buf, "%s님이 당신의 %s스킬을 %d으로 셋팅했습니다. ", GET_NAME(ch), han_spells[nums], sks);
    send_to_char(buf, vict);
    return;
}
0
정회원 이상만 코멘트 사용이 가능합니다.
총 게시물 29개 / 검색된 게시물: 29개
글번호   제목 작성자 조회수 싫어요 작성일
9 [circle] 신세계 귀환소스 성천사 8182 0 0 2009-09-15
8 [circle] 신세계 do_display 성천사 6848 0 0 2009-09-15
7 [circle] 신세계 do_set 옵션 리스트 성천사 6931 0 0 2009-09-15
6 [circle] 신세계 수표출금, 수표입금, 수표확인 성천사 7884 0 0 2009-09-15
5 [circle] 신세계 스킬셋 명령어(운영자명령어) [1] 성천사 8598 0 0 2008-07-06
4 [circle] 신세계 방청소 명령어 성천사 5255 0 0 2008-01-07
3 [circle] 신세계 방수정 명령어 [1] 성천사 5634 0 0 2008-01-05
2 [circle] 신세계 수거 명령어 성천사 5300 0 0 2008-01-05
1 [circle] 신세계 의원소스 성천사 7216 0 0 2008-01-05
쪽지를 전송하고 있습니다. 잠시 기다려주세요.
쪽지보내기
받는이(ID/닉네임)
내용
쪽지가 도착하였습니다.
쪽지 내용을 읽어오고 있습니다. 잠시 기다려주세요.
--