머드클럽
머드게임이란?
게임은 어떤 환경에서?
본격적으로 게임해 볼까?
배너교환
머드강좌
일반 머드강좌
성천사님의 머드강좌
혼님의 머드강좌
방울꽃님의 머드강좌
리트님의 머드강좌
2Soo님의 머드강좌
내머드소개하기
접속가능머드
내머드소개하기
자료실
접속 프로그램
머드소스
머드 유틸리티
기타
커뮤니티
공지사항
등업신청
머드클럽에바란다
자유 게시판
질문 AND 답변
머드클럽 갤러리
구인구직
머드게임소개
사신전(死神戰)
사신전 소개
사신전 맵
사신전 명령어 모음집
천명(天命)
천명 소개
천명 맵
천명 명령어 모음집
마이페이지
로그인
회원가입
계정찾기
로그인
회원가입
계정찾기
텍스트머드클럽
검색
신세계 이동물건
성천사
1
550
0
0
2022-12-30 11:14:50
<p>제 머드의 기본 설정은 매 15초마다 이동 할 수 있게 comm.c:if (!(pulse % (15 * PASSES_PER_SEC))) { 안에 넣어져 있습니다.</p> <p> </p> <p>// 아래의 내용을 limits.c 안에 삽입 후 comm.c 안 15 * PASSES_PER_SEC 안에 fifteen_second(); 를 삽입해 매 15초 마다 실행할 수 있도록 한다.</p> <p>void fifteen_second(void)</p> <p>{</p> <p> extern struct index_data *obj_index;<br /> extern struct obj_data *object_list;</p> <p> struct char_data *i, *next_char;<br /> struct obj_data *obj, *next_obj;</p> <p> </p> <p>/*</p> <p> 사용자, 맙 등록된 모든 대상중 사용자 검색</p> <p> for (i = character_list; i; i = next_char) {<br /> next_char = i->next;</p> <p> if (i->desc) { // 접속해 있는 사용자 라면<br /> }<br /> }</p> <p>*/</p> <p> for (obj = object_list; obj; obj = next_obj) { // 게임 내 존재하는(젠 되어 있는) 모든 물건을 검색<br /> next_obj = obj->next;</p> <p> </p> <p> moving_items(obj); // 이동하는 물건 처리</p> <p> </p> <p> if (!next_obj)<br /> break;<br /> }</p> <p>}</p> <p> </p> <p>// 아래의 내용을 handler.c 안에 삽입</p> <p>void moving_items(struct obj_data *obj)<br /> {<br /> extern const char *han_dirs[]; // 방향 한글 출력용 텍스트<br /> int where = -1, i = 0, j = 0, found = 0, random = 0, r_num = 0, perc = 0;<br /> char buf[MAX_INPUT_LENGTH]="";<br /> int dirs[6] = { 0, };<br /> int b_zone = 0, a_zone = 0;</p> <p> </p> <p>/* 물건에 플래그를 삽입해 이 물건이 이동하는 물건임을 체크해야 하므로 본인 머드에 맞는</p> <p> 플래그를 삽입하면 됩니다.</p> <p> if (!IS_SET(GET_OBJ_SPARE9(obj), ITEM_NEWTWO_MOVING)) (이동물건 체크용, 본인 머드에 맞는 물건 플래그중 하나를 사용합니다.)<br /> return;<br /> */</p> <p>/* 야생(?)의 물건이 아닐 경우 이동 하지 않도록 체크하는 부분입니다. 물건을 가졌을 때 체크</p> <p> 해서 해당 물건은 더 이상 이동이 불가능 하도록 설정합니다.</p> <p> if (GET_OBJ_SPARE6(obj) > 0) // (이동물건 이동불가 체크용, 본인 머드에 맞는 물건 플래그중 하나를 사용합니다.)<br /> return;</p> <p>*/<br /> if (obj->carried_by) // 소지하고 있으면 이동하지 않음<br /> return;<br /> if (obj->worn_by) // 장비하고 있으면 이동하지 않음<br /> return;<br /> if (obj->in_obj) // 보관함안에 있으면 이동하지 않음<br /> return;<br /> perc = number(1, 100); // 확률을 설정합니다.<br /> if (perc <= 50) { // 이동물건이 이동할 확률(50% 확률로 이동합니다)<br /> if (obj->in_room > NOWHERE) { // 물건이 방 안에 있으면<br /> // 본격적인 이동물건 설정 시작 [0] 북, [1] 동, [2] 남, [3] 서, [4] 위, [5] 밑</p> <p> // 현재 방에 북쪽으로 연결되어 있고, 북쪽에 이동할 방이 있고 문이 닫혀 있지 않으면 이동가능 하므로 0(북쪽)<br /> if (world[obj->in_room].dir_option[0] && world[obj->in_room].dir_option[0]->to_room &&<br /> !IS_SET(world[obj->in_room].dir_option[0]->exit_info, EX_CLOSED)) {<br /> dirs[0] = 0;<br /> } else dirs[0] = -1; // 그 외의 경우에는 갈 수 없으므로 -1</p> <p> // 현재 방에 동쪽으로 연결되어 있고, 동쪽에 이동할 방이 있고 문이 닫혀 있지 않으면 이동가능 하므로 1(동쪽)<br /> if (world[obj->in_room].dir_option[1] && world[obj->in_room].dir_option[1]->to_room &&<br /> !IS_SET(world[obj->in_room].dir_option[1]->exit_info, EX_CLOSED)) {<br /> dirs[1] = 1;<br /> } else dirs[1] = -1;</p> <p> // 현재 방에 남쪽으로 연결되어 있고, 남쪽에 이동할 방이 있고 문이 닫혀 있지 않으면 이동가능 하므로 2(남쪽)<br /> if (world[obj->in_room].dir_option[2] && world[obj->in_room].dir_option[2]->to_room &&<br /> !IS_SET(world[obj->in_room].dir_option[2]->exit_info, EX_CLOSED)) {<br /> dirs[2] = 2;<br /> } else dirs[2] = -1;<br /> // 현재 방에 서쪽으로 연결되어 있고, 서쪽에 이동할 방이 있고 문이 닫혀 있지 않으면 이동가능 하므로 3(서쪽)<br /> if (world[obj->in_room].dir_option[3] && world[obj->in_room].dir_option[3]->to_room &&<br /> !IS_SET(world[obj->in_room].dir_option[3]->exit_info, EX_CLOSED)) {<br /> dirs[3] = 3;<br /> } else dirs[3] = -1;<br /> // 현재 방에 위쪽으로 연결되어 있고, 위쪽에 이동할 방이 있고 문이 닫혀 있지 않으면 이동가능 하므로 4(위쪽)<br /> if (world[obj->in_room].dir_option[4] && world[obj->in_room].dir_option[4]->to_room &&<br /> !IS_SET(world[obj->in_room].dir_option[4]->exit_info, EX_CLOSED)) {<br /> dirs[4] = 4;<br /> } else dirs[4] = -1;<br /> // 현재 방에 밑쪽으로 연결되어 있고, 밑쪽에 이동할 방이 있고 문이 닫혀 있지 않으면 이동가능 하므로 5(밑쪽)<br /> if (world[obj->in_room].dir_option[5] && world[obj->in_room].dir_option[5]->to_room &&<br /> !IS_SET(world[obj->in_room].dir_option[5]->exit_info, EX_CLOSED)) {<br /> dirs[5] = 5;<br /> } else dirs[5] = -1;</p> <p> </p> <p> // 모든 방향을 검색한 후</p> <p> for (i = 0; i < NUM_OF_DIRS; i++) {<br /> if (dirs[i] != -1) {<br /> found++;<br /> } <br /> }</p> <p> // 출구가 없을 경우 종료<br /> if (found == 0) {<br /> return;<br /> }</p> <p>_Moving_:<br /> random = number(0, 5); // 0-5 사이의 (방향과 같은 숫자의) 무작위로 숫자를 지정한다.<br /> where = dirs[random]; // 지정한 방향의 방향을 특정하고</p> <p> if (dirs[random] == -1) { // 특정한 방향에 출구가 없으면<br /> goto _Moving_; // 출구가 있는 방의 번호가 나올 때 까지 반복한다.<br /> }</p> <p> r_num = EXIT(obj, where)->to_room; // 이동하려는 방의 리얼번호를 저장<br /> a_zone = world[r_num].zone; // 이동하려는 방의 존 번호를 특정<br /> b_zone = world[obj->in_room].zone; // 현재 방의 존 번호를 특정</p> <p> if (a_zone != b_zone) { // 현재 있는 방의 존과 이동하려는 방의 존이 다르다면 이동하지 않고 종료<br /> return;<br /> }</p> <p> sprintf(buf, "%s%s %s쪽으로 이동합니다.rn",<br /> obj->short_description, check_josa(obj->short_description, 0),<br /> han_dirs[where]);<br /> send_to_room(buf, obj->in_room);<br /> sprintf(buf, "%s%s 도착했습니다.rn",<br /> obj->short_description, check_josa(obj->short_description, 0));<br /> send_to_room(buf, r_num);<br /> obj_from_room(obj);<br /> obj_to_room(obj, r_num);<br /> // 이동물건 설정 종료<br /> } else { // 물건이 미확인 장소에 있으면<br /> return; // 종료<br /> }<br /> }<br /> }</p>
0
0
새글
답변
수정
삭제
최신목록
전체목록
신세계 지정번호의 물건 찾기및 제거하기
신세계 날씨변경 명령어
정회원 이상만 코멘트 사용이 가능합니다.
총 게시물 27개 / 검색된 게시물: 27개
접속금지, 접속허용 편의성 수정
0
57
0
0
성천사
2024-10-27
신세계 텍스트 출력
0
87
0
0
성천사
2024-08-06
신세계 시체생성
0
109
0
0
성천사
2024-06-12
삭제된 게시물입니다.
0
84
0
0
성천사
2024-06-12
신세계 C to VC6.0
0
274
0
0
성천사
2024-03-07
신세계 장비위치 구하기
0
157
0
0
성천사
2024-03-04
신세계 파일 존재여부 확인
0
226
0
0
성천사
2024-02-18
신세계 맙타입 전투
0
251
0
0
성천사
2023-12-02
신세계 addlog()
0
202
0
0
성천사
2023-10-25
신세계 캐릭터, 맙 이동 코드
0
204
0
0
성천사
2023-10-25
신세계 지정번호의 물건 찾기및 제거하기
0
320
0
0
성천사
2023-05-07
신세계 이동물건
1
551
0
0
성천사
2022-12-30
신세계 날씨변경 명령어
0
365
0
0
성천사
2022-12-25
[circle]
신세계 운영자 명령어 방청소
0
405
0
0
성천사
2022-10-08
[circle]
신세계 물건이름
0
463
0
0
성천사
2022-08-26
[circle]
신세계 공격대상
0
471
0
0
성천사
2022-08-19
[circle]
미확인장소 물건 수거
0
964
0
0
성천사
2019-09-23
[circle]
신세계 포탈과 이동 명령어
1
1395
0
0
성천사
2018-09-05
[circle]
신세계 귀환소스
0
8097
0
0
성천사
2009-09-15
[circle]
신세계 do_display
0
6778
0
0
성천사
2009-09-15
1
2
다음
검색
글쓰기
최신목록
전체목록
시작일
종료일
검색어
이름
제목
내용
검색
닫기
로그인
회원가입
계정찾기
개인정보처리방침
이용약관
PC화면
Copyright (c) 텍스트머드클럽. All rights reserved.
쪽지를 전송하고 있습니다. 잠시 기다려주세요.
쪽지보내기
받는이(ID/닉네임)
닉네임으로 입력
내용
쪽지가 도착하였습니다.
쪽지함
쪽지 내용을 읽어오고 있습니다. 잠시 기다려주세요.
--