머드클럽
머드게임이란?
게임은 어떤 환경에서?
본격적으로 게임해 볼까?
배너교환
머드강좌
일반 머드강좌
성천사님의 머드강좌
혼님의 머드강좌
방울꽃님의 머드강좌
리트님의 머드강좌
2Soo님의 머드강좌
내머드소개하기
접속가능머드
내머드소개하기
자료실
접속 프로그램
머드소스
머드 유틸리티
기타
커뮤니티
공지사항
등업신청
머드클럽에바란다
자유 게시판
질문 AND 답변
머드클럽 갤러리
구인구직
머드게임소개
사신전(死神戰)
사신전 소개
사신전 맵
사신전 명령어 모음집
천명(天命)
천명 소개
천명 맵
천명 명령어 모음집
마이페이지
로그인
회원가입
계정찾기
로그인
회원가입
계정찾기
텍스트머드클럽
검색
[hanlp]레벨 최대화 32767
LostMemory
0
5,437
0
0
2007-10-19 22:25:11
이 패치는 무한에서의 레벨을 특별한 변수 추가나 변수형 변환등의 작업을 <br />하지 않고, 기존의 변수를 이용하여 최대 32767까지 가능하게 해주는 패치입니다. <br /> <br />물론, 이전에 제가 공개한 패치들처럼 이미 소스에 많은 수정을 한 사람들을 <br />위해서, 패치로 만들지 않고, 고치는 방법을 적습니다. <br /> <br />아래의 코드에 대한 저작권은 본인에게 있으며, 상업적 목적의 머드에서는 <br />사용할수 없습니다. 무료 운영중인 머드에서 사용시, 자유롭게 사용할수 있으나, <br />아래의 코드로 인해 발생되는 문제에 대해서 제가 반드시 답변을 한다거나 <br />책임을 지지는 않습니다. <br />struct 를 손보는 패치이므로, 안전을 위해서 모든 데이타들을 백업을 받아두신후 <br />패치를 적용시키기를 권합니다. 간단히 해본 테스트에선 문제없이 돌아갔으나, <br />만약의 사태라는 것이 있으므로, 반드시 백업을 받으신후 패치를 적용하시기 <br />바랍니다. 이 패치로 인해 문제가 발생했을때, 저는 책임을 지지 않습니다. <br /> <br />1999년 9월 3일. <br />서민철 <br /> <br />----------------------------------------------------------- <br />Wicked Angel.. Network Programmer, Game Designer <br />E-Mail Address : croaky@frog.sarang.net croaky@nownuri.net <br />Home Page : http://frog.sarang.net/ <br />----------------------------------------------------------- <br /> <br /> <br />1. mstruct.h <br /> <br />typedef struct creature { <br /> char name[80]; <br /> char description[80]; <br /> char talk[80]; <br /> char password[15]; <br /> char key[3][20]; <br /> short fd; /* Socket number */ <br />// unsigned char level; <br /> unsigned char old_level; // level -> old_level 로 바꾼다. <br /> char type; /* Creature type */ <br /> char class; <br /> char race; <br />/* 중략 */ <br /> struct object *ready[MAXWEAR];/* Worn/readied items */ <br /> struct daily daily[10]; /* Daily use variables */ <br /> struct lasttime lasttime[45]; /* Last-time-used variables */ <br /> struct creature *following; /* Creature being followed */ <br />#define level lasttime[44].misc // 추가해줌. <br />/* 하략 */ <br /> <br />--- <br />첫번째 단계로, 기존의 level 이라는 변수를 old_level 이라는 이름으로 바꿉니다. <br />두번째로, #define level lasttime[44].misc 을 추가해줍니다. <br />define 문은 어느곳에 두셔도 상관없지만, 원래 lasttime 변수를 사용하는 것이므로 <br />찾기 쉽도록 lasttime 아래에 정의해둡니다. <br /> <br />* 위에서 44 라는 숫자는 제가 임의로 적은 숫자입니다. 무한 소스에서 사용하지 <br /> 않는 부분의 변수를 사용하는 것이지만, 개인적으로 소스를 고치다 위의 변수를 <br /> 사용했을 가능성도 배제할수 없으므로, 안전을 위해서 확인을 해보시길 권합니다. <br /> src 디렉토리에서, [grep misc *.c] 해보신뒤 ply_ptr 혹은 crt_ptr 등의 <br /> creature 함수에서 misc 라는 변수명을 사용하는지 확인한 뒤, 만일 사용할시에는 <br /> lasttime[] 의 몇번째 misc 를 사용하는건지를 보시고, 확실히 사용하지 않는 <br /> 변수를 적어서 사용하시기를 바랍니다. <br /> <br />2. player.c <br /> <br />void init_ply(ply_ptr) <br />creature *ply_ptr; <br />{ <br />/* 중략 */ <br /> if(ply_ptr->class >= DM && strcmp(ply_ptr->name, DMNAME) && <br /> strcmp(ply_ptr->name, DMNAME2) && strcmp(ply_ptr->name, DMNAME3) && <br /> strcmp(ply_ptr->name, DMNAME4) && strcmp(ply_ptr->name, DMNAME5) && <br /> strcmp(ply_ptr->name, DMNAME6) && strcmp(ply_ptr->name, DMNAME7)) <br /> ply_ptr->class = 1; <br /> <br /> if(!strcmp(ply_ptr->name, DMNAME) || !strcmp(ply_ptr->name, DMNAME2) || <br /> !strcmp(ply_ptr->name, DMNAME3) || !strcmp(ply_ptr->name, DMNAME4) || <br /> !strcmp(ply_ptr->name, DMNAME5) || !strcmp(ply_ptr->name, DMNAME6) || <br /> !strcmp(ply_ptr->name, DMNAME7)) { <br /> ply_ptr->class = DM; <br /> } <br /> else if(ply_ptr->class >= DM || ply_ptr->class ==0) { <br /> /* 불법 아이디 : 직업 이상 */ <br /> t = time(0); <br /> strcpy(str, (char *)ctime(&t)); <br /> str[strlen(str)-1] = 0; <br /> log_f("%s : ### %s 불법아이디(직업=%d)\n",str, <br /> ply_ptr->name,ply_ptr->class); <br /> } <br /> <br />/* 여기서부터 추가 */ <br /> if(ply_ptr->level == 0) { <br /> ply_ptr->level = ply_ptr->old_level; <br /> } <br />/* 여기까지 */ <br />/* 하략 */ <br /> <br />--- <br />init_ply() 함수의 앞쪽에 위의 부분을 추가해줍니다. <br />원래 레벨을 새로운 변수에 저장을 시켜주는 부분입니다. <br /> <br />3. files2.c <br /> <br />int load_crt(index, mon_ptr) <br />int index; <br />creature **mon_ptr; <br />{ <br />/* 중략 */ <br />/* 제일 아래쪽 부분 */ <br /> (*mon_ptr)->lasttime[LT_HEALS].ltime = time(0); <br /> (*mon_ptr)->lasttime[LT_HEALS].interval = 60L; <br /> (*mon_ptr)->first_enm= 0; <br /> <br />/* 여기서부터 추가 */ <br /> if((*mon_ptr)->level == 0) { <br /> (*mon_ptr)->level = (*mon_ptr)->old_level; <br /> } <br />/* 여기까지 추가 */ <br /> <br /> return(0); <br /> <br />} <br /> <br />--- <br />2번에서 사용자의 레벨을 고쳤으므로, 이번에는 몹의 레벨을 바꿉니다. <br /> <br />4. misc.c <br /> <br />int exp_to_lev(exp) <br />long exp; <br />{ <br /> int Level = 1; // 원래 변수명 level -> Level 로 바꿈. <br /> <br /> while (exp >= needed_exp[Level-1] && Level < MAXALVL) <br /> Level++; <br /> if (Level >= MAXALVL) { <br /> Level = (exp-needed_exp[MAXALVL-2])/5000000+MAXALVL; <br /> } <br /> <br /> return(MAX(1,Level)); <br />} <br /> <br />--- <br />level 을 위에서 define 해뒀기 때문에, 컴파일시 에러가 생깁니다. <br />따라서, level 을 지역변수로 사용할 경우에는 이름을 바꿔줘야 합니다. <br />(다행이도 level을 지역변수로 쓰는건 한군데 밖에 없습니다.) <br /> <br />5. make clean;make <br /> <br />--- <br />level 은 전체적으로 영향을 주는 변수이므로 make clean 한후 컴파일하여 <br />전체 컴파일을 새로 해줍니다. <br /> <br />--- <br />이렇게 하면, 사용자가 새로 접속할때마다 레벨을 체크해서 새로운 변수로 <br />바꿔주기 때문에 머드가 돌아가는데는 문제가 없습니다. <br />다만, 패치를 적용시킨후 한번도 접속하지 않은 사용자의 경우에는 레벨이 <br />제대로 표시가 되지 않으며, 에디터나 리스트 등에서 제대로 작동하지 않게 <br />됩니다. <br />에디터의 경우에는 위의 것을 참고하여 새로 컴파일하시기 바라며, 리스트는 <br />약간 신경써서 손을 보셔야 할 것입니다. <br />패치를 적용한 에디터로 몹을 만들 경우에는 level 변수에 저장이 되며, <br />기존에 있던 몹들의 경우에는 old_level 변수에 저장되어 있고, level 은 0인 <br />상태로 있기 때문입니다. <br />이것을 참고하여, 리스트도 적당히 수정하여 새로 컴파일해서 쓰시기 바랍니다.
0
0
새글
답변
수정
삭제
최신목록
전체목록
마법 추가하기
분신이란 기술
0
Comments
-표시할 내용이 없습니다.-
코멘트를 삭제할 비밀번호를 입력하세요.
비밀번호:
댓글에 답하기
입력
닫기
정회원 이상만 코멘트 쓰기가 가능합니다.
총 게시물 107개 / 검색된 게시물: 107개
누구든지 머드 강의를 올리수 있는 곳입니다...^^
[circle]
EUC-KR 및 UTF8 한글 처리
0
261
0
0
울보천사
2024-01-08
[기타]
유니코드(utf-8) 한글 조사 처리
0
1168
0
0
암로
2020-08-01
[hanlp]
지도소스 수정
1
1360
1
0
오코
2018-06-07
[기타]
머드 계보
1
10412
0
0
암로
2012-04-28
[mordor]
의형제
0
5309
0
0
LostMemory
2007-10-19
[mordor]
폭탄소스
0
5564
0
0
LostMemory
2007-10-19
[mordor]
패거리 등급 변경
0
6287
0
0
LostMemory
2007-10-19
[mordor]
날짜관리
0
4529
0
0
LostMemory
2007-10-19
[mordor]
마법 추가하기
0
5312
0
0
LostMemory
2007-10-19
[hanlp]
레벨 최대화 32767
0
5438
0
0
LostMemory
2007-10-19
[mordor]
분신이란 기술
0
4783
0
0
LostMemory
2007-10-19
[mordor]
연타
0
4443
0
0
LostMemory
2007-10-19
[mordor]
이자소스
0
5276
0
0
LostMemory
2007-10-19
[mordor]
편지를 아이템화
0
3648
0
0
LostMemory
2007-10-19
[mordor]
직업추가
0
3214
0
0
LostMemory
2007-10-19
[mordor]
패거리 상점 만들기
0
3224
0
0
LostMemory
2007-10-19
[기타]
단땅..프로그램은 멀로 하는거죰.. 첨이라..^^
1
3720
0
0
사마천
2006-06-22
[circle]
오래된거지만.. 써클머드 화일들에 대한 간략한 설명..
2
4239
0
0
머큐리
2006-06-10
[기타]
Dead Souls 2 is now available
2
2979
0
0
Cratylus M.
2006-03-14
[mordor]
Ctrl + Enter 패치 소스 입니다.
0
3121
0
0
탈퇴
2005-02-01
1
2
3
4
5
6
다음
검색
글쓰기
최신목록
전체목록
시작일
종료일
분류별 검색
전체보기
기타
circle
hanlp
mordor
소스분석
흑염
천무혼
검색어
이름
제목
내용
검색
닫기
로그인
회원가입
계정찾기
개인정보처리방침
이용약관
PC화면
Copyright (c) 텍스트머드클럽. All rights reserved.
쪽지를 전송하고 있습니다. 잠시 기다려주세요.
쪽지보내기
받는이(ID/닉네임)
닉네임으로 입력
내용
쪽지가 도착하였습니다.
쪽지함
쪽지 내용을 읽어오고 있습니다. 잠시 기다려주세요.
--