머드클럽
머드게임이란?
게임은 어떤 환경에서?
본격적으로 게임해 볼까?
배너교환
머드강좌
일반 머드강좌
성천사님의 머드강좌
혼님의 머드강좌
방울꽃님의 머드강좌
리트님의 머드강좌
2Soo님의 머드강좌
내머드소개하기
접속가능머드
내머드소개하기
자료실
접속 프로그램
머드소스
머드 유틸리티
기타
커뮤니티
공지사항
등업신청
머드클럽에바란다
자유 게시판
질문 AND 답변
머드클럽 갤러리
구인구직
머드게임소개
사신전(死神戰)
사신전 소개
사신전 맵
사신전 명령어 모음집
천명(天命)
천명 소개
천명 맵
천명 명령어 모음집
마이페이지
로그인
회원가입
계정찾기
로그인
회원가입
계정찾기
텍스트머드클럽
검색
[circle]신세계 의원소스
성천사
0
7,064
0
0
2008-01-05 05:35:29
신세계 의원 소스를 나름 수정해봤습니다. 기존에는 ACMD(do_not_here)에 존재했지만, SPECIAL(xxx) 에 맞게 수정했습니다. <br />아래소스는 spec_procs.c 안에 알맞게 넣어주시면 됩니다. 그리고 spec_assign.c 안에서 void assign_mobiles(void) 안에 원하는 맙 번호를 힐러로 설정해 놓으면 됩니다. <br />spec_assign.c의 형식에 맞게 넣어주시면 됩니다. <br /> <br />#define G_OTHER 0 <br />#define G_GOLD 1 <br />#define G_CRYSTAL 2 <br />#define G_KILLMARK 3 <br /> <br />SPECIAL(healer) <br />{ <br /> struct char_data *mob = (struct char_data *) me; <br /> int i, tmp = 0, cals; <br /> char lens[20] = {0,}; <br /> char ctype[20] = {0,}; <br /> ACMD(do_say); <br /> <br /> struct heal_struct { <br /> char *name; // 상품이름 <br /> int llevel; // 상품 구입 할 수 있는 최소레벨 <br /> int hlevel; // 상품 구입 할 수 있는 최대레벨 <br /> int cost; // 상품 1개(1포인트)당 필요 자금(금화, 크리스탈, 킬마크등) (상품 * 자금) <br /> int ctype; // 상품 구입시 필요한 자금(금화, 크리스탈, 킬마크등) <br /> } fields[] = { <br /> { "체력" , 1 , LVL_HANGEL, 2 , G_GOLD }, <br /> { "마법력" , 1 , LVL_HANGEL, 1 , G_GOLD }, <br /> { "이동력" , 1 , LVL_HANGEL, 1 , G_GOLD }, <br /> { " " , 0 , 0 , 0 , 0 } <br /> }; <br /> <br /> if (FIGHTING(mob)) <br /> return 0; <br /> <br /> if (CMD_IS("품목")) { <br /> if (IS_NPC(ch)) <br /> return 0; <br /> <br /> for (i = 0; *(fields[i].name) != ' '; i++) { <br /> switch(i) { <br /> case 0: <br /> sprintf(lens, "%d", ((GET_MAX_HIT(ch) - GET_HIT(ch)) * fields[i].cost)); break; <br /> case 1: <br /> sprintf(lens, "%d", ((GET_MAX_MANA(ch) - GET_MANA(ch)) * fields[i].cost)); break; <br /> case 2: <br /> sprintf(lens, "%d", ((GET_MAX_MOVE(ch) - GET_MOVE(ch)) * fields[i].cost)); break; <br /> case 3: <br /> sprintf(lens, "%d", (spares47 * fields[i].cost)); break; <br /> } <br /> if (tmp <= strlen(lens)) { tmp = strlen(lens); } <br /> if (tmp % 2 != 0) { tmp += 1; } <br /> if (tmp < 4) { tmp = 4; } <br /> } <br /> sprintf(buf, "%2.2s %10.10s %4.4s %4.4s %*.*s %10.10s" <br /> " ", <br /> "━━━━━━━━━━", <br /> "━━━━━━━━━━", <br /> "━━━━━━━━━━", <br /> "━━━━━━━━━━", <br /> tmp, tmp, <br /> "━━━━━━━━━━", <br /> "━━━━━━━━━━"); <br /> send_to_char(buf, ch); <br /> send_to_char(" " <br /> " " <br /> " 품 명 " <br /> " " <br /> "LLEV" <br /> " " <br /> "HLEV" <br /> " " <br /> " ", ch); <br /> sprintf(buf, "%2.2s %10.10s %4.4s %4.4s %*.*s %10.10s" <br /> " ", <br /> "━━━━━━━━━━", <br /> "━━━━━━━━━━", <br /> "━━━━━━━━━━", <br /> "━━━━━━━━━━", <br /> tmp, tmp, <br /> "━━━━━━━━━━", <br /> "━━━━━━━━━━"); <br /> send_to_char(buf, ch); <br /> for (i = 0; *(fields[i].name) != ' '; i++) { <br /> switch(fields[i].ctype) { <br /> case G_OTHER: <br /> strcpy(ctype, "에러"); break; <br /> case G_GOLD: <br /> strcpy(ctype, "원"); break; <br /> case G_CRYSTAL: <br /> strcpy(ctype, "크리스탈"); break; <br /> case G_KILLMARK: <br /> strcpy(ctype, "킬마크"); break; <br /> } <br /> switch(i) { <br /> case 0: <br /> sprintf(buf, "%2d %10.10s %4d %4d %*d %-10.10s ", <br /> i + 1, fields[i].name, fields[i].llevel, fields[i].hlevel, <br /> tmp, ((GET_MAX_HIT(ch) - GET_HIT(ch)) * fields[i].cost), ctype); <br /> send_to_char(buf, ch); <br /> break; <br /> case 1: <br /> sprintf(buf, "%2d %10.10s %4d %4d %*d %-10.10s ", <br /> i + 1, fields[i].name, fields[i].llevel, fields[i].hlevel, <br /> tmp, ((GET_MAX_MANA(ch) - GET_MANA(ch)) * fields[i].cost), ctype); <br /> send_to_char(buf, ch); <br /> break; <br /> case 2: <br /> sprintf(buf, "%2d %10.10s %4d %4d %*d %-10.10s ", <br /> i + 1, fields[i].name, fields[i].llevel, fields[i].hlevel, <br /> tmp, ((GET_MAX_MOVE(ch) - GET_MOVE(ch)) * fields[i].cost), ctype); <br /> send_to_char(buf, ch); <br /> break; <br /> case 3: <br /> sprintf(buf, "%2d %10.10s %4d %4d %*d %-10.10s ", <br /> i + 1, fields[i].name, fields[i].llevel, fields[i].hlevel, <br /> tmp, (spares47 * fields[i].cost), ctype); <br /> send_to_char(buf, ch); <br /> break; <br /> } <br /> <br /> } <br /> sprintf(buf, "%2.2s %10.10s %4.4s %4.4s %*.*s %10.10s" <br /> " ", <br /> "━━━━━━━━━━", <br /> "━━━━━━━━━━", <br /> "━━━━━━━━━━", <br /> "━━━━━━━━━━", <br /> tmp, tmp, <br /> "━━━━━━━━━━", <br /> "━━━━━━━━━━"); <br /> send_to_char(buf, ch); <br /> do_say(mob, "회복하고 싶으시면 '<번호> 사' 를 이용하세요.", 0, 0); <br /> return 1; <br /> } else if (CMD_IS("사")) { <br /> one_argument(argument, arg); <br /> if (!*arg) { <br /> do_say(mob, "어떤걸 회복하실건지 말씀을 해주셔야죠.", 0, 0); <br /> return 1; <br /> } <br /> <br /> if (GET_LEVEL(ch) < fields[atoi(arg)-1].llevel) { <br /> do_say(mob, "당신의 레벨이 낮아서 구입할 수 없습니다.", 0, 0); <br /> return 1; <br /> } else if (GET_LEVEL(ch) > fields[atoi(arg)-1].hlevel) { <br /> do_say(mob, "당신의 레벨이 높아서 구입할 수 없습니다.", 0, 0); <br /> return 1; <br /> } <br /> <br /> switch(atoi(arg)) { <br /> case 1: <br /> if (GET_MAX_HIT(ch) == GET_HIT(ch)) { <br /> do_say(mob, "장난하지마세요. 다친곳이 없는데 뭘 하라는 거죠?", 0, 0); <br /> return 1; <br /> } <br /> if (((GET_MAX_HIT(ch) - GET_HIT(ch)) * fields[atoi(arg)-1].cost) > GET_GOLD(ch)) { <br /> do_say(mob, "돈을 좀 더 들고 오는게 어떨까요?", 0, 0); <br /> return 1; <br /> } <br /> cals = GET_MAX_HIT(ch) - GET_HIT(ch); <br /> GET_GOLD(ch) -= (cals * fields[atoi(arg)-1].cost); <br /> GET_HIT(ch) = GET_MAX_HIT(ch); <br /> do_say(mob, "자! 완벽하게 치료가 됐습니다.", 0, 0); <br /> break; <br /> case 2: <br /> if (GET_MAX_MANA(ch) == GET_MANA(ch)) { <br /> do_say(mob, "마법력이 충만한데 뭘 하라는 겁니까?", 0, 0); <br /> return 1; <br /> } <br /> if (((GET_MAX_MANA(ch) - GET_MANA(ch)) * fields[atoi(arg)-1].cost) > GET_GOLD(ch)) { <br /> do_say(mob, "돈이 조금 더 필요 하겠는데요.", 0, 0); <br /> return 1; <br /> } <br /> cals = GET_MAX_MANA(ch) - GET_MANA(ch); <br /> GET_GOLD(ch) -= (cals * fields[atoi(arg)-1].cost); <br /> GET_MANA(ch) = GET_MAX_MANA(ch); <br /> do_say(mob, "마법력이 충만함을 느끼실 겁니다.", 0, 0); <br /> break; <br /> case 3: <br /> if (GET_MAX_MOVE(ch) == GET_MOVE(ch)) { <br /> do_say(mob, "두 다리가 멀쩡한데 뭘 하라는 겁니까?", 0, 0); <br /> return 1; <br /> } <br /> if (((GET_MAX_MOVE(ch) - GET_MOVE(ch)) * fields[atoi(arg)-1].cost) > GET_GOLD(ch)) { <br /> do_say(mob, "돈이 조금 더 필요 하겠는데요.", 0, 0); <br /> return 1; <br /> } <br /> cals = GET_MAX_MOVE(ch) - GET_MOVE(ch); <br /> GET_GOLD(ch) -= (cals * fields[atoi(arg)-1].cost); <br /> GET_MOVE(ch) = GET_MAX_MOVE(ch); <br /> do_say(mob, "감사합니다. 치료가 다 됐습니다.", 0, 0); <br /> break; <br /> case 4: <br /> if (GET_THIEFCHK(ch) == 0) { <br /> do_say(mob, "당신의 이름은 족보에 들어 있지 않군요.", 0, 0); <br /> return 1; <br /> } <br /> if(GET_CRYSTAL(ch) < (spares47 * fields[atoi(arg)-1].cost)) { <br /> do_say(mob, "도둑의 족보에서 빠지려면 크리스탈이 필요합니다.", 0, 0); <br /> return 1; <br /> } <br /> GET_CRYSTAL(ch) -= (spares47 * fields[atoi(arg)-1].cost); <br /> do_say(mob, "거래가 성립됐습니다.", 0, 0); <br /> do_say(mob, "당신은 더이상 사용자에게 공격 당하지 않을 겁니다.", 0, 0); <br /> GET_THIEFCHK(ch) = 0; <br /> break; <br /> default: <br /> do_say(mob, "그 번호는 목록에 없습니다. 알고 계시죠?", 0, 0); <br /> return 1; <br /> } <br /> save_char(ch, NOWHERE); <br /> return 1; <br /> } <br /> return 0; <br />} <br />
0
0
새글
답변
수정
삭제
최신목록
전체목록
신세계 수거 명령어
다음 게시글이 없습니다.
정회원 이상만 코멘트 사용이 가능합니다.
총 게시물 27개 / 검색된 게시물: 27개
[circle]
신세계 do_set 옵션 리스트
0
6860
0
0
성천사
2009-09-15
[circle]
신세계 수표출금, 수표입금, 수표확인
0
7810
0
0
성천사
2009-09-15
[circle]
신세계 스킬셋 명령어(운영자명령어)
1
8498
0
0
성천사
2008-07-06
[circle]
신세계 방청소 명령어
0
5178
0
0
성천사
2008-01-07
[circle]
신세계 방수정 명령어
1
5522
0
0
성천사
2008-01-05
[circle]
신세계 수거 명령어
0
5218
0
0
성천사
2008-01-05
[circle]
신세계 의원소스
0
7065
0
0
성천사
2008-01-05
이전
1
2
검색
글쓰기
최신목록
전체목록
시작일
종료일
검색어
이름
제목
내용
검색
닫기
로그인
회원가입
계정찾기
개인정보처리방침
이용약관
PC화면
Copyright (c) 텍스트머드클럽. All rights reserved.
쪽지를 전송하고 있습니다. 잠시 기다려주세요.
쪽지보내기
받는이(ID/닉네임)
닉네임으로 입력
내용
쪽지가 도착하였습니다.
쪽지함
쪽지 내용을 읽어오고 있습니다. 잠시 기다려주세요.
--