srcいじり

Last-modified: 2007-02-12 (月) 15:35:54

srcをいじってみましょう。

所持アイテム数やカートの限界重量など
common→mmo.hで変更可

#define MAX_MAP_PER_SERVER (512+128)
#define MAX_INVENTORY 100

同じアイテムの所持限界

#define MAX_AMOUNT 30000

所持最大ゼニー

#define MAX_ZENY 1000000000 // 1G zeny

カーとのアイテム数

#define MAX_CART 150

スキルの数

#define MAX_SKILL 1020

ホムスキルの数

#define MAX_HOMSKILL 16
#define GLOBAL_REG_NUM 96
#define ACCOUNT_REG_NUM 16
#define ACCOUNT_REG2_NUM 16

デフォの歩くスピード

#define DEFAULT_WALK_SPEED 150
#define MIN_WALK_SPEED 0
#define MAX_WALK_SPEED 1000

倉庫に入れれるアイテム数

#define MAX_STORAGE 300

ギルド倉庫に入れれるアイテム数

#define MAX_GUILD_STORAGE 1000

パーティに入れる最大人数

#define MAX_PARTY 12

ギルドの限界数?

#define MAX_GUILD 76

ギルドの職位数

#define MAX_GUILDPOSITION 20
#define MAX_GUILDEXPLUSION 32
#define MAX_GUILDALLIANCE 16

ギルドスキルの数

#define MAX_GUILDSKILL 15

砦の限界数

#define MAX_GUILDCASTLE 20

ギルドレベルの限界

#define MAX_GUILDLEVEL 50

友達の数

#define MAX_FRIEND 20

髪型の数っぽい

#define MIN_HAIR_STYLE 0
#define MAX_HAIR_STYLE 24

髪の色

#define MIN_HAIR_COLOR 0
#define MAX_HAIR_COLOR 9

身体(服)の色?

#define MIN_CLOTH_COLOR 0
#define MAX_CLOTH_COLOR 4

ペットとホムの区別の所をとりあえずやってみよう。
いじる所はclif.cのみです。
それの8426行あたりの

case BL_PET: {

の所を変えます。

case BL_PET:
memcpy(WFIFOP(fd,6),((struct pet_data*)bl)->name,24);
WFIFOSET(fd,packet_db[0x95].len);
break;

現在はこんな感じになってますよね。
それをこんな風にかえてみてください。

case BL_PET: {
struct pet_data *pd = (struct pet_data*)bl;
struct map_session_data *msd=pd->msd;
memcpy(WFIFOP(fd,6),((struct pet_data*)bl)->name,24);
{
char pos[24];
WFIFOW(fd, 0)=0x195;
memcpy(WFIFOP(fd,30),mob_db[pd->class].jname,24);
snprintf(pos,24,"%s の",msd->status.name);
strncpy(WFIFOP(fd,54),pos,24);
strncpy(WFIFOP(fd,78),"ペット",24);
WFIFOSET(fd,packet_db[0x195].len);
}
} break;

そして次に8486行あたりの

case BL_HOM: {
memcpy(WFIFOP(fd,6),((struct homun_data*)bl)->status.name,24);
WFIFOSET(fd,packet_db[0x95].len);
} break;

の所も変えます。

case BL_HOM: {
struct homun_data *hd = (struct homun_data*)bl;
struct map_session_data *msd=hd->msd;
memcpy(WFIFOP(fd,6),((struct homun_data*)bl)->status.name,24);
{
char pos[24];
WFIFOW(fd, 0)=0x195;
memcpy(WFIFOP(fd,30),homun_db[hd->status.class-HOM_ID].name,24);
snprintf(pos,24,"%s の",msd->status.name);
strncpy(WFIFOP(fd,54),pos,24);
strncpy(WFIFOP(fd,78),"ホムンクルス",24);
WFIFOSET(fd,packet_db[0x195].len);
}
} break;

こんな感じにお願いします。
すると、ペットがすごいことになります。 自分で試してくださいね
では、次にいってみましょう。
キャラ作成での職に関してです。
初期はもちろんノビですよね。
これを廃ノビの変えてみようと思います。
変更するファイルは、char→char.cの690行目の所をみてください。
初期ではこんな感じになってますよね。
↓の部分

char_dat[i].class=0;
char_dat[i].base_level=1;
char_dat[i].job_level=1;
char_dat[i].base_exp=0;
char_dat[i].job_exp=0;
char_dat[i].zeny=start_zeny;

これを変えてやれば、キャラ作成時の職を変えることができます。
これは、GMコマンドのjobchangeのと同じので変更できます。
で、ですが廃ノビだと転生職でジョブチェンジのには載ってませんよね。(0 1みたいな感じでupperのが必要になりますから)
ここで、私はちょっと悩みました^^;
map.hにのってるました^^:

#define PC_CLASS_NV 0 //ノビ
#define PC_CLASS_NV2 4001 //転生ノビ
#define PC_CLASS_NV3 4023 //養子ノビ
#define PC_CLASS_SNV 23 //スパノビ
#define PC_CLASS_SNV3 4045 //養子スパノビ
#define PC_CLASS_TK 4046 //テコン
#define PC_CLASS_SG 4047 //拳聖
#define PC_CLASS_SG2 4048 //拳聖2
#define PC_CLASS_SL 4049 //ソウルリンカー
#define PC_CLASS_GS 28 //ガンスリンガー
#define PC_CLASS_NJ 29 //忍者

廃ノビの番号は4001ですね。
つまり、こう変えてやればいいだけです。

char_dat[i].class=4001;

これで、キャラ作成したら廃ノビになります。