[circle]신세계 스킬셋 명령어(운영자명령어)
/*****************************************************************************
* 메이드인 코리아(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;
}
* 메이드인 코리아(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;
}
정회원 이상만 코멘트 사용이 가능합니다.
총 게시물 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 |