 йƷʹ

е Mud Լķ񡢷չ򡢸ʽƷʵҪͨЩҪ
 Mud 죬ÿ mudlib ˽̶Ȳһ
ܶƷҪҲͬΪܹóʽƷάһˮ׼ϣ
ܹƶһƷҪǶ II ƷҪ

 ʽ

(1) ʽ룬һ tab (൱ 4 Ŀո)Ȼ
    ޹سʽǷִܹУһֻʽִȷܱ
    ǷĶĳʽ룬 Mud һɶ˹ͬչʽĻ
    ʮ˷С

(2) ûбʱδǷǳҪ޷ȷ
     load ʽ QC ĳͷƨһ
    Ьӡ

(3)  QC ĴʦԹУûִʱδ񱨸
    صĶܣҾ QC Ĵʦ

(4) ·Ʊ;·޹أ仰˵ĳʽĿ¼ƶ
    һ·֮Ȼܹ __DIR__  MudOS ṩ
    ľ޼ʾĿǰڵĿ¼( __FILE__ʾĿǰĵ
    )ʹƶ֮Ҳĳ .h 

 ʹ߽

(1) еѶϢȷʵνȷָһ㳣ʶӦѶ
    Ϣĳһ˿ѶϢԹ۵˿
    ѶϢͱȷνʵָѶϢֵĵطѶϢĳ̡
    šɫʱ뾡ϺʵΣ chat ѶϢ
    add_actionѶϢӦҪʵرߵпֵֹ
    о

(2) Ʒñһ԰дɷľ
    ҲһƷʾĴ(Կ)һȥ
    ضͲӦдһƷ

 

(1) ǿȱ II Ȼɿʽϵͳһ
    ǣNPC ͬһˣNPC òΪб̬
    ɣ仰˵ NPC ġǿй±趨ϵɣΪ quest 
    κӦϵǣǿɶƵǿ NPC ܵϸļ顣
    ( ȲոŵǿȣΪǿˮ׼ޣNPC û
    ɲӦǿЩˣǿȵ NPC Ӧʮ֡ټġ)

(2) װǿȱ NPC ͬǿװӦʮֺģ
    ûʵĹ±趨ǿװܵϸļ飬Щװ
    Ǽ亱ġ

(3) ĴСġܡȣֻһ÷
    ༭Ŀշ䣬һЩ copy  NPCװ
    Ʒ 20 ͨ QC ĿԾͷǳãˡ

 

(1) һģ II ķӦʮԣʲУʲ᲻
    Ӧ QC ֮ǰԼȷϼΣҪ QC Ĵʦ
    һ޿ɿڿֻǹ

(2) ҪҪ൱ġԭԡҲܶС˵еڡ
     II ķʮǺϣϣʦ
    Ķ(ûرܸһЩ̫ƷͬĶ)
    ȫĳС˵ӰΪ˱ǻ۲ƲȨϿܵ鷳
    򿪷ŵĿԷǳ͡

 ά֮չ

(1) һͨ QC ŸңⲢʾξˣǸص
    Σͨ򿪷֮ᣬὫĿ¼ᵽ /d £񻹿ܻ
    Ŀ¼ĶдȨʾ븺һά޹κ
    Ĵ㶼븺޻


 ̳

    Ϊٵʦ  LPC ġؼ̳СеΪ
 mudlib ļ̳нṹʮֻңûй̶ر˵һ
ļ̳нṹѭķ

    κԼ̳һ׼ͽ׼ļ̳֮
ᣬɸ硻

    еġ硻ԡ׼δ̳йΪޣ仰˵
һ粻Ӧκб̳гϡ

 ׼ (standard objects)

    Ҳλ /std µЩһʵ create() 
ԳΪһκ£Ӧöһ׼
clone Ķֻܼ̳

    ׼Ϊʽ壬һ˱׼û̳
ԣг create() ֮ûеڶһķ
䡢ƷȣӦ create() ֮ǰ replace_program()  
Լĳʽñ׼ȡΪ create() ֻ( clone)ʱ
ִһΣҲòˣǬ̳еı׼ȡʡ
Ϊٵļ塣

    ĳЩ£һ׼ֻһ׼һЩԵϣ
ĺ npc.cԭΪǡõ
ϡ϶Ϊһ׼Ϳǰᵽ create()
  replace_program ʡ²ټ壬Ϊ׼ĳʽڼֻһ
ݶѡ

  (features)

    Ҳ /feature µЩֻṩһģ飬Ǵ
̳еȻԲӦȥ clone ֻܼ̳

    Եԭǡģ黯Ҳ˵Ҫܾڶ춱׼
¹Ȼȫǲܵģǡԣ˼
ṩһ( equip.c)⹦( alias.c, more.c)һЩ໥
еĺɵģ( attack.c) ҪԾ಻
ͬʹõʣӦȰдһԣ֮дһ׼


    ˣߵĶ壬һ͡׼͡
ԡ塣ȷ˵ҪдһܹװĽ֮()µļ̳
ʽ壺

    inherit NPC;        // ׼ NPC
    inherit F_EQUIP;    //  װ

    㣬Ӧÿóϵĵ˰ɣΪ  NPC 
ͬʹõʣǰдɱ׼װΪ
ʣдһԣڴͳ mudlib monster.c  weapon.c 
ǡ׼͵λʦͬʱ̳һ
¡

    ϸĵĻʵԷַᣬһı׼ֻǼ
Եϣνı׼ʵǽһЩԡװ
Ӧá⡹ڱ׼ж庯ҲعֵӲеı׼
𿪳һЩֵԣЩܺϷϵͳ滮ߵ˼ʽ
ϲйأ֮ܶ򵥡ԡӦƼ̳нṹҪ


 ϵͳ

ʹõļϵͳ춶Ԫɳ;ϵͳб춴ͳþֵȡȼ
ʽһֵȼ롸ѧϰƽʹʱֻ
ѧϰȫӰ켼ܵЧ

춼ܵʲͬǽܷΪࣺܸ⼼ܣ
ԳΪ࣬е⼼ܶһֵĻΪ
˵xxһ⼼ܣԡж֮Ϊ
˼˵ֽԱʹáڽж;ϣ˵
ѧж֮ѧйؼܵѧϰȫɼ
壬ϵͳԤ衣

ͨǹʽм㼼ܵȼʱʹõһֳΪЧȼļ㷽ʽ
νЧȼԡࡹ()Ϊģ⼼ûЧ
ΪЧȼļǺϲ  ܡ ܡ⼼ܣ Լ
  װӰ죬ģлܵĵȼԶ֮һ
⼼ԭȼ㣬װӰֵ(ɸ)
Ĺʽ£

  Чȼ = ( / 2) + ⼼(enabled) + ֵ

ĹʽƵġܵȼָıЧȼ

 ܶ

еļܰ⼼ܣǶһ壬弼ܵ
̳б׼ SKILLҶ¼

string type()

  ؼ̬ܵĿǰ "knowledge""martial" ֣ "martial" ̬
  ļ learn ָԶƵʵսС춼(Ч)ηʱ
  ѧϰ

int valid_learn(object me)

   me Ƿѧϰܵѧϰ learn, study, practice
  ǲʹöΡϺ 1򴫻 0

int valid_enable(string usage)

  Ƿ usage ;ϣǣ 1򴫻 0

int practice_skill(object me)

  һϰһܣ practice ָУΪ
  Ĵ

void skill_improved(object me)

  ÿһļܵȼˣͻһЩ
  صĸı

 

    Եʹ÷󲿷ǾضÿԸͬ
Ҳûʲ˵ģֻṩᵱҪµʱҪ
صԭ

(1) 

    㷢һдһ 10K ϵĴ󵵰ʱ취
    ԣάһṩĹܵ

(2) 

    ǵǱ̳еģ̳Ե copy һ
    е global variables һҪõ
    гʵı( ִйв̳Ե )
     daemon ʽԽʡ壬 ALIAS_DSKILL_D ȡ

(3) Ч

    ԵһԭǱ⡸̳СȻ driver ִϲ
    û̫Ĳ죬Ƕ춴󲿷ʦԣҪ˽һ̳е
    ൱ѵģáһ׼ɸԡģ
    ʽȥ

 ACTION

varargs void start_busy(mixed new_busy, mixed new_interrupt)

nomask int is_busy() { return busy != 0; }
жʹǷæĳ.

void continue_action()
սʹ busy  flag,  heart_beat() ĺ
.

This function will be called in the place of attack() during
combat to indicate a person is in busy statue.

void interrupt_me(object who, string how)
This function interrupts whatever the user is doing.

int start_call_out(function fun, int delay)
ʼִ call_out, ĺƼӳʱ䴫 call_out() 
, ʱ䵽ʱִиú.

void eval_function(function fun) { evaluate(fun); }
ִĳ.

Evaluate the function named fun. (a fun function :)

  ALIAS -- ָ

MAX_REPEAT 30  : ͬһָظ.
MAX_ALIASES 40 : 趨ָ.
HISTORY_BUFFER_SIZE 10 : ϵͳָ.

string process_input(string str)
ָ.
ʹ볬 MAX_REPEAT ָͬ, ϵͳǿʹ
뿪.
ϵͳжʹǷҪظʹǰùָ, ˶ʹ
Լ趨ָ, ҵϵָΪ
ָ. ֵΪָ.  ALIAS_D
 process_global_alias() Ϊ˺Ĵֵ.

int set_alias(string verb, string replace)
µָָб. ûдڶ, ȡ֮
ָ趨, ȷʹûгָ.

mapping query_all_alias()
趨ָ.

APPRENTICE

int is_apprentice_of(object ob)
жָǷΪĵ.

void assign_apprentice(string title, int privs)
趨ɵλ̧ͷ. -1 ʾΪ, 0 Ϊ.

void create_family(string family_name, int generation, string title)
һ mapping , 趨ָΪ.

int recruit_apprentice(object ob)
趨ΪָĵӲ趨.

 F_AUTLOAD

void clean_up_autoload()
 autoload .

void save_autoload()
ĳ inventory еƷ,  query_autoload() д
ֵƷĵƼ䴫ֵ autoload .

void restore_autoload()
ȡһ autoload вͼƷ. ʧʾ
ѶϢѶϢ /log/AUTOLOAD .

 F_CLEAN_UP - ṩ̳һ׼ clean_up 

    ÿһڸһι̶ʱûбοMudOS 
и clean_up ԼǷмڵıҪҲ˵
һʱûбʹõҲѾûˣԽӼ
Խʡռ䣬磺һܾû߹ķ䡣

    clean up ʱĳ MudOS  runtime config 趨ġп
Ա clone 䡢ָԼǳפ daemonӦҪ̳
ԱʹõʱԴݻٲͷųռ塣

    ˺ 1 ʱ˼Ǹ MudOS ʱҪڼ
ٸһι̶ʱȻûбο
һҵ clean_up()  0  clean_up  ûб
 MudOS Ҫ clean upַͲٺ
 clean_up()

׼ clean_up() ж

    ȣһʹ ( interactive() )˺
 1Ϊʹ߷ heart beat ﴦġ

    һһĹ
ƷȵȣǸĺкķӵ clean_up() 
Ҫɣͬһвܱ clean up ң
ǲϣκǰƾʧңһһе
ܹضҲܹܱ
Ҳضܱϵ
ҪҪΪһͬʱҲ


    һһ䣬ǻǷ
ҷһͱߵ԰ȥ

    ᣬϸؿжѾûдڵıҪ
ǽݻ٣ 0 Ը֪ MudOS Ѿˡ᲻
ټǷҪ clean up  

 F_COMMAND

init_command_hook()
 add_action,  user 붫 command_hook() .
ûдֵ.

find_command(string verb)
 command daemon (COMMAND_D) ָ·Ƿи verb ͬ
ĵ, , ص.

command_hook(string arg)
һʹһ, driver Ὣ˵һ ֵɲ
(arg) ˺. ĵһ־νĶ (verb). ͨ һ
ָ.Ǿ query_verb()  õ , Ҳʹ
ĵһ.ȻῪʼжʹֵĿ. ǽʴ
 find_command()ʹߵ·趨Ƿָͬ
, , call_other()  ȥ õ main() 
 arg  .ɹ, 뿪. , 
ڴ˺ EMOTE_D ( emotedaemon), бǲ emote ֮һ,
ǵĻй̸Ƶ daemon, (CHANNEL_D) ǲ
̸Ƶõָ. , жǲʹƶ ָ (
: , , , ȵ). ϽԷ, Ǿʹ 0, пʹ
һڵָ.

 PROFILE_COMMANDS жĻ, йָʹλ
PROFILE_D¼ָ.

set_path(string *p)
 *p ָΪ·. *p Ϊ̬.

force_me(string cmd)
ǿȶִһָ, д˺Ҫ ROOT UID Żɹ.

 DAMAGE

int is_ghost()
жǷΪ.

varargs int receive_damage(string type, int damage, object who)
ĳ״ֵ. damage Ϊ. ˺
ϷὫ״ֵ, ֵΪ -1. , 
 (heart_beat).

varargs int receive_wound(string type, int damage, object who)
ͬ receive_damage. ˺Ǽ״ֵ̬ (eff_xxx).

varargs int receive_heal(string type, int heal)
ͬ receive damage, ෴, ǽĳֵ״ֵ.

varargs int receive_curing(string type, int heal)
ͬ receive_wound, ෴, ǽֵ״ֵ̬, ൱
ҽ.

void unconcious()
ĳŪ, бִв: û, 
Ϊ˶,  COMBAT_D е winner_reward() Դʤ
ߵĽ.. etc. ɾָĵ˱, ͳѶϢ (ڳĴҶ
֪) ״̬Ϊ0, رָѶϢĵȨ, 趨
ѵʱ, ŵ call_out .

varargs void revive(int quiet)
ĳŪ.  call_out , ɾ. ѵһ
ʹߵ inventory , ֮ƵʹߵĻ.  enable_player()
趨ҵָ趨, ӦѶϢѶϢܵ. 
ֵ quiet Ϊ 1, ѵѶϢͳ.

void die()
...
ǻԲѵ״, ȰŪ. ɱ (hmm...) һ
ߡ,  killer ɾ, , Ϊ겢͵
ȥ, ֱӴݻٸ.

void reincarnate()
...
 ghost ȥ. ĸ״ֵ̬Ϊ.

int heal_up()
update all status (gin, kee, sen, fp, mp, ap.. etc)

 F_DBASE 

mixed set(string prop, mixed data)
 prop Ϊ data  dbase mapping ,  dbase
ڵĻὨһµ dbase.

varargs mixed query(string prop, int raw)
 prop , Բڻ dbase 򴫻 0.
ڶֵп,  raw ֵΪ 1, 򴫻ֵΪ prop е
ʽ, 򴫻ظúʽĴֵ.

int delete(string prop)
 prop  dbase ɾ.

mixed add(string prop, mixed data)
 data  prop , Բ, 
set(prop, data) ͬ.

int set_temp(string prop, mixed data)
ʱ prop Ϊ data  tmp_dbase mapping , 
tmp_dbase ڵĻὨһµ tmp_dbase.
tmp_dbase ΪʱԵϿ.

 mixed query_temp(string prop)
ʱ prop .

int delete_temp(string prop)
ʱ prop  tmp_dbase ɾ.

mixed add_temp(string prop, mixed data)
 data ʱ prop , Բ, 
set(prop, data) ͬ.

mapping query_entire_dbase()
 dbase .

void set_default_object(mixed ob)


 F_EDIT

int edit(function callback)
ʼ༭ʽ

void input_line(string line, string text, function callback)
ɱ༭ʽд˺ʹָֻʵĻӦʹ߽
ʱĺ callback ᱻִС

 EQUIP

int wear()
жһǷװƷ. һ ( is_character()
ж), 봩ǿԴ... ȵ. ϵͳǷѾͬ
͵Ļ, жϳɹ趨дϻ.

int wield()
жһǷװ. һ ( is_character()
ж), ʹõ... ȵ. ϵͳǷпճ
. жϳɹ趨ʹ.

int unequip()
Ļ߻ѵ.

 F_FINANCE

int can_afford(int amount)
жһ (this_object()) Ƿ񸶵 amount Ǯ.
 0 ʾûǮ,  1 ʾǮ, 
ȷǮ.  2 ʾȻ㹻Ǯ, ȴûȷǮ
.

 MESSAGE -- ѶϢ

MAX_MSG_BUFFER 500      ԴݴѶϢ.

void receive_message(string msgclass, string msg)
յѶϢ, дĲ relay_message()
. жѶϢǷΪ̸ƵйѶϢ, жʹ
ǷյЩѶϢ. жѶϢǷ趨κ
ѶϢ, ˾ǷյѶϢ. , 
ڱ༭ģʽ, ѶϢݴռ. жʹ߿
ԽѶϢ,  receive() ѶϢ.

void write_prompt()
дʹߵһ prompt, ʹݴѶϢδȽѶϢ
ʹ.

void receive_snoop()
࿴ʱԷѶϢǰ % ʾ.

 F_MORE

void more(string cmd, string *text, int line)
һһеʾʹָ

void start_more(string msg)
ʹִ moreִһһеķֿԷʾ

 F_NAME

void set_name(string name, string *id)

 name ִ name . û id ,
ȡ֮ id еĵһ (id[0]) ԪΪ id.  my_id
Ϊ֮ id еֵ.

int id(string str)
 "apply/id" ʱԴҲǿִĻ, ʾڼð
, Ǿ applied_id  id, ҵ
 1. 򴫻 0. Ա⡸ðƻ id ָ¼.
û "apply/id",  my_id ж.  str  my_id 
ĳԪͬ, 򴫻 1, 򴫻 0.

string *parse_command_id_list() { return my_id; }
 "apply/id" ʱԴҲǿִĻ,  applied_id 
. 򴫻 my_id е.

varargs string name(int raw)
 "apply/name" ʱԶҲǿյĵĻ, 򴫻ֵΪ mask
еĵڶԪ.
 "name" , ֵΪ "name" . 򴫻
.

varargs string short(int raw)
 short , 򴫻ִΪ short ݼ id. 
ִΪ name Եݼ id.  (
is_chaaracter() ж) ڴ˴ִ.
 "apply/short" ʱݲǿյ, 򴫻ִ
Ϊ "apply/short" еĵڶԪ. 򴫻ִὫ nickname
 title Լ. жǷڶ, , 
лǻԲ, ʵִǰִһ𴫻.

varargs string long(int raw)
 "apply/long" ʱݲǿյ, 򴫻 "apply/long"
еĵڶԪ. 򴫻 "long" Ե. û "long"
, в short() ݲ "\n".

 F_SAVE

int save()
жĴ浵浵

int restore()
ɵ롣

 SKILL

mapping query_skills()
м.

mapping query_learned()
мܵѧϰ.

void set_skill(string skill, int val)
趨. 뼼Ƽȼ, ܵ mapping ½һ,
ֱ뼼Ƽȼ.

int delete_skill(string skill)
ɾĳ. Ҳɾܵѧϰ.

varargs void map_skill(string skill, string mapped_to)
ĳ, ڶûд, ȡ.

string query_skill_mapped(string skill)
ĳܵļ.

Returns the name of the skill that is enabled as as skill type
passed as parameter.

varargs int query_skill(string skill, int raw)
ؼܵĵȼ.

mapping query_skill_map()
ؼܵб.


int skill_death_penalty()
Լʱɵļʧ.

varargs void improve_skill(string skill, int amount, int weak_mode)
Ҵ뼼ܵѧϰ, жǷнӵȼ.

 team

int set_leader(object ob)
Ϊöӡ

object query_leader()
ض

int follow_path(string dir)
ִָƶָԴֵΪ

int follow_me(object ob, string dir)

int add_team_member(object ob)
ָС黹ڣὨһµĶ飬Ѻд˺
ʹ֮С

int set_team(object *t)
趨顣ע˺ûдֵ(δ)

varargs int dismiss_team(object ob)
ɢ顣ɢΪӣᱻɢó
Ա뿪顣

object *query_team()
ضжԱ

int is_team_leader()
ָǷΪһӡ


 VENDOR -- ׼

int buy_object(object me, string what)
(Ϊ)

void complete_trade(object me, string what)
ɽ, ѶϢ.

string price_string(int v)
ԶԵȵıֵгļֵ.

int do_vendor_list(string arg)
г۵ƷǮ.

 ֢״

ν֢״(condition)һΪˡжӰ
֢״ ES2 mudlib 涨ɡҪÿ recover ʱ仯֢״
仰˵֢״һ൱ķϵͳ CPU ʱһ
Ϳܵ lost heart beat

һ֢״ӵһʮּ򵥣̳е F_CONDITION ж
һ溯 apply_condition() 㽫һ֢״춸
һǶ֢״ڶһ
mixed ̬һ֢״Ѷ

apply_condition ֺ֮ function Ƚĸʽһ
֢״ҪΪ֢״״̬ܱ save_object() ˵
µ֢״ʱע֢״ĲвҪʹ object ̬
λ save  restore ֮ʧȥλݡ

֢״ʮּ򵥣F_CONDITION ÿ recover ʱ䵽
heal_up() ֮ǰе֢״֮ update_condition()
Զдһ object ̬ҲǴ
֢״ڶ¼֢״Ѷ mixed ̬
֢״ڶʱָ̬F_CONDITION
κδ

update_condition() Ĵֵһʾ flag Щ flag 
 <condition.h> УֵΪ 0֢״ return ֮ᱻ
Ƴ(ƿô֢״һκ֮
Ƴ)

CND_CONTINUE    ֵ flag Ϊ on´ recover ʱ֢״
                ٴαС

 (action)

    νġ(action)ָսʱΪСλǻӳ
һȭ߳һšýһ̡һ֧ڡһǡһܵ
ȣֻҪ߼춡ͬһʱ䡹ΪԹһ

    ǼеĶս״̬µΪΪս״̬µĶֱ
ͿˣҪ˼½ᵽĸʽ˵ս״̬
Ϊͳһáɺܼ򵥣ǲϣһ˿Խκʦ
֮ļڵ˻ӳһͬʱʮ򡢼ϵʮƿҩȵ
ηһ棬ҲṩʦƹƷʱñȽ
ɵķʽһЩ仯ϴıַʽ

    ڳʽУһ mapping ʾһֵһǣmapping
ֽṹ LPC λַ(call by address)Ϊ˰ȫǹ涨
дĳʽ޸ṩĶ mapping  ԭ
ԤһЩδܷĴ֡

    ڶһ mapping Уµλǰ * ŵıʾ
λǿп޵ģ

action

    ִֵѶϢʽǺ message_vision  simul efun Ҫ
    ͬ "$N׼$n%sӳһȭ" е %s Ĳ
    λƴ档

*post_action

    һ function type λλ壬combatd  action
    ѶϢӡ֮ functionвսеЧʽ
    ɣͶġĳЩսõħȡ

*damage

    ִ˺λǰٷֱȣΧǴ -100
    default: 0

*damage_type

    ʱɵ˺࣬""""""ȵȣϸ˺
    οļ
    default: "˺"

*dodge

    Ե˶ܴһٷʡ
    default: 0

*parry

    Եмܴһٷʡ
    default: 0

 ״̬

һֵ(Physical)(Energy)(Mental)

ÿһֵһĿǰֵʾ״̬ڼʱеǿȣһ
Чޡʾ״̬Ȼ£ܹ³´л޸
ָޣһޡʾ״̬ļֵ

ֵĸߵԶǣĿǰֵ  Ч  ޡ

  Phisical 

Ŀǰֵʾһ()Ļ״̬ܻΪսʱ
ܹͣĿǰֵʾȫɥʧãҲ
״̬(dead)
Чޱʾһó̶ȣЧ޻ܵʵ
( ˺ )ͣЧ޽ʾѾݻ١
ˣҲǻ״̬(destroyed)

 Energy   

Ŀǰֵʾһ()Ŀǰ״̬Ϊй
ĶͣʾѾ͸֧(ɥʧ)Ϊ̱
״̬(exhausted)
Чޱʾһ(Դ)״̬ܻΪܵ
ͣЧ޽ʾܺĽ(Դľ)Ϊ
˥״̬(withered)

 Mental   

ĿǰֵʾһļĿǰ״̬Ϊʹħ
ҪĹͣ񽵵ʾѾ۵ˣ˯״̬(asleep)

Чޱʾһ˵־ħ״̬޻Ϊܵߡҩ
áħľ񹥻ӰͣЧֵʾľ
Ѿ״̬(insane)

 ̬

е̬״̬ж壬仰˵Щ״̬ĳЩ
̬ǲ( ̬ )

 

   춾(Ghost)ԣûģ˾ﲻ
   ܵ˺Ҳ״̬

   춲(Undead)ԣԭĻ޹أĿǰֵ
   ģ˲û״ֻ̬л״̬

 

   ħ Golem ԣʩߵ־û
   ģħû̱˥ߵ״̬

   춷ǻе˶ԣĿǰֵ(㶨)˷ǻе
   ֻ̱˥(ħս T-2000)

 

   춴е˶ԣûģ˴е˲˯

   춲ԣ侫Ϊʱ֮˾û
   Ŀǰֵ˯ֻз(磺Lich ʩûз)

ǿԿÿ״̬ǰ涨Ϊ֮⣬С޶塹
ĿǰֵЧ޺һ¡Ρ

ڡ޶塹£̬޷ʹĸ״̬Ŀǰֵļܣ紿
ʹħħﲻʹﲻʹװͬʱ
Ҳܵ͸״̬ĿǰֵЧ޵˺紿˶ԴûзӦħ
ﲻ(ͬʱ˺)ﲻԹ

 

"short"                                                         (string)

    Ķ

"long"                                                          (string)

    ĳ

"item_desc"                                                     (mapping)

    иʽΪ([ <>:<>, .... ])
    <>ִ function type

"exits"                                                         (mapping)

    ĳڣŵķ򣬸ʽΪ([  <>:<䵵>, .... ])

"objects"                                                       (mapping)

    еƷʽ([ <Ʒﵵ>:<>, .... ])

"outdoors"                                                      (string)

    ǷΪ⡹ⷿԿɫ仯Ӱ졣ִ
    ʾͨ͸ domain ( /d µĿ¼) ͬ

"no_fight"                                                      (int)

    Ϊֹս

"no_magic"                                                      (int)

    Ϊֹʩ

 

"skill_type"                                                    (string)

    ļ࣬ "sword""blade" ȣҪע /d/skill
    ±һܵװսʱд
    ѶϢ

"rigidity"                                                      (int)

    ӲȣʹභʱӲȡߵӰ
    Ļʡ
    õǿֵ㹫ʽ£

        /500 + Ӳ + 

"weapon_prop"                                                   (mapping)

    Գߵ״̬Ӱ죬ֻͨӰ "damage"Щ״̬Ӱ
    װʱ add_temp() ӵߵ apply ϣж dest
    ʱ

"flag"                                                          (int)

    һЩ̬.

 ĿǰĻࣺ

head    ͷߣǴͷϵĶ㣬ͷͷñӵȵȡ
neck    ھϵĻ߻Χȵȡ
cloth   ϵ¸ס
armor   ס cloth 棬Ҳǰϰ°ס
surcoat ס档
waist   ߣ
wrists  󻤾ߣ
shield  ƣý˰ɡ
finger  ָֻдָĽָܷЧֻܴһ
hands   ֲߡ
boots   㲿ߣЬࡣ

 Ʒ

"name"                                                          (string)

    Ʒơ

"id"                                                            (string)

    ƷӢơ

"long"                                                          (string)

    Ʒϸ

"value"                                                         (int)

    ƷļֵλǡǮ(coin)

"unit"                                                          (string)

    Ʒĵλ磺ѡ֦.....

"no_get"                                                        (int)

    ʾƷǷɱ

"no_drop"                                                       (int string)

    ʾƷǷɱ̬ string, ͼƷʱ
    Ὣִ notify_fail ȥ

 еĸӺ(apply functions)

void defeated_enemy(object victim)

һ˵ʱӺvictim Ǳĵ

: COMBAT_D
Ԥ趨һϵͳ: none

void killed_enemy(object victim)

ɱһ˵ʱӺvictim ǼҪɱ
ĵ
: COMBAT_D
Ԥ趨һϵͳ: none

int accept_fight(object who)

 fight ָʱ򣬻Ӻwho 
 fight ָǶ player £"fight" ֱָʾѶϢ
սһͬ⣬Ƕ NPC ָӺ 1
ʱŻսʾĳĳѶϢ
: "fight" ָ
Ԥ趨һϵͳ: NPC

int accept_object(object who, object item)

 give ָﶫʱӺ 1
ʾԸ 0 ʾܡ
: "give" ָ
Ԥ趨һϵͳ: none

void recruit_apprentice(objct apprentice)

һһʱӺ
޸ĵӵ rank 
: "apprentice" ָ
Ԥ趨һϵͳ: none

 ϵͳ

һиΪ N ( N  NPC  player )ÿһ
Сۡ롸ֵԡ

һʼĳʼֵһ 0ֵϵͳĹġΧ

ϵͳ t = 0 ʼÿλʱڻᷢɸսս
Ϊһܶȹ̶¼˲䷢սΡ

ս: ȡϵͳ壬ս̲ǣֻȡһʤһ
      ΪЧΪһ۱䶯룬һʤĻʺ
      䡸ȣ͵зġɷȡ

۱䶯: ʤһ˫Ŀǰۡıֵۣ
          ۲䶯

һ֮۱䶯ʽʹھһʱᣬüиġۡ
ܳ͡(Ϊ x, y ᣬÿһ㣬
Էֲ)

  νһ

    ǹҪ֮һڴṩһı׼
еķ̳Сͬһ㣬Ҫдһ create() 趨
ڡƷȵȡϲ˵ create() ʽ
ԡһ˵Ҫһ򵥵ķ䣬ֻҪԼ
ɡȻǲΪһмʮûκεĻػܣǸ
һεĺõط

    棬ᵽһЩ췿ҪҲһЩ˵

  һƪ

    һķ䣬Ҫ short <>  long <> exits <>

  дһ long <>ʱʽΪ

        set("long", @LONG

.......

LONG
        );

     @LONG  LONG  ǻӦģκֽ @  棬ǰ
һҪһϵͳб𣬶дʱһҪ
ӵڶ LONG ͬһвκεԪȻϵͳ޷жǷ
ýˣɱʱĴ

    Ϊ롢ͳһĳÿһеĳȱһ
һеĳȽΪ 29  32 ֣ԼռөĻ֮һ
òҪУظԽԽԽã
Ų̫ȻʱΪĳЩĿģһԹܻ
ڵļ䶼õһȻڴޡ

  һĳиʽ裺

        set("exits", ([
                ""          : "ӵķ֮",
                ...........
        ]);

    Ϊһ򿪷Ŀ¼ıԣ__DIR__ 
ϵͳṩľ޼д·˵

                "west"          : __DIR__"path3",
        
                "west"          : "/u/d/davidoff/goathill/path3",

ȫһġǰȻĿ¼İϷĶࡣᵽ趨
еƷʱҲַʽд

  item_desc 趨 look ָʱͻ
    áʽΪ

        set("item_desc", ([
                ""      : "",
                ...........
        ]);

    оִһ function ܼ
仯 look һʱܿҲܷһЩ¼
ͿڱеĺʽдЩ¼

  objects ÿ resetʱĳЩĳЩƷ

        set("objects", ([
                "Ʒĵ"      : ,
                ...........
        ]);

    ͬǰᵽģ __DIR__д·Ҫ

  ҪΪŻʱǵǰ #include <room.h>ʽΪ

        create_door("ڷ", "ŵ", "뷽", Ԥ״̬);

    ˵Եĳ westeast  up Ҫһϵ
ľţд

        create_door("west", "ľ", "east", DOOR_CLOSED);

    ҽʱῴ

        Եĳ east  up

     look west ʱῴľǹϵġ


    һЩԣԲο /doc/build/room_prop Ƕһ±׼
room.cҲԶ more hereۿһ room
  ƪ

    Ҫиб仯Ȥķḻ⣬
 init() ʽΪķһЩءܡ

    ˽һ init() ;ΪΣΪʲҪõÿһ
 create() ֻе resetʱŻᱻе init()  B뵽 A
ʱе A init() ⣬ӦÿԿˣϣ
һ˴϶ңһʱܹĳ
ĻصĻȻ init() д

    һʹ÷ʽ init()  add_action() дĺʽ
ʽΪ
        add_action("function type", "action");

    function type Ǳеĺʽ    action Ķ

    ͿԽ action Ҫ£дڱеĺʽ档
˵ʽǿκ£ȻܴܲɾͿдʽĹ
ˡٸ򵥵ӣ

void init()
{
        add_action("do_pick", "pick");
}

int do_pick(string arg)
{
        object me;

        me = this_player();
        if ( !arg || ( arg != "flower" ) ) return notify_fail("Ҫժʲ᣿\n");

        else if ( random((int)me->query("kar")) < 7 )
                message_vision("$NժһСıһ¡\n", me);

        else
                message_vision("$NժһѪɫʻ\n", me);

        return 1;
}

     pick ָʱͻе do_pick()  function
Ļء

    رᵽһ㣬һ򵥵 room Ϊʹʹͣ
 create() һ replace_program(ROOM); Ϊڷı׼
ж init() ĺʽһ򵥵ķûõ
replace_program() ԭı̳еı׼á˵ȡһ
õ init() дʱ;Բ replace_program()Ϊϵͳ
ʱҲ init() һеλַ㴫һЩ߰Ķ
ʱ mud crashǣԲҭʳõ
ʱҪãЩӦһõĳʽдԱԼģ״ҪԼ


  

    ṩһʦǿԷıдһ䣬ǾǷ༭
(Roommaker)  clone /obj/roommaker ʹһĲǣ
mkroomһշ䣬Ȼ goto ָȥ rset short 
connect 趨ĶڣһЩ outdoors ȵ
Ҳ to rset long 趨ĳ
saveroom浵Ҫֻһķ䣬ǵʹ󹦸ˣҪ
ǡ主б仯Ǿϱ༭ edit ĵ ftp
ȥ޸ġ

 дһ(NPC)

һ.:
   ϵͳ, ù֮츳״̬
   趨䡣

   趨: set( "age", ֵ );

.츳: (ο help gift)
   str = , cor = ʶ, int = , spi = ,
   cps = , per = ò, con = , kar = Ե

   趨ʽ: set( "", ֵ );
   ֵΧ: 10 - 30

.״̬: (ο help stats)
   gin = , kee = , sen = 
   atman = , force = , mana = 

   趨ʽ: , set( "gin", 200 );
                   set( "max_gin", 200 );
                   set( "force_factor", 3 );

.:
   һû⼼ܵĹ, ս(combat_exp)
   ˹ǿȡۺ(score)
   ܴ˹, ǷܴԼۺۡ

   趨ʽ: set( "combat_exp", ֵ );
             set( "score", ֵ );

.:
   ЩĹʦ(ѧ)ʱ, õķ
   ʽ趨ܡ

   趨ʽ:
            1.ѧļ: set( "", ֵ );
            2.ʩչļ: map_skill( "", "" );

   ʹ map_skill() ʱ, ȷǷĿǰ,
   :
   (blade): spring-blade
   Ṧ(dodge): chaos-steps pyrobat-steps nine-moon-steps stormdance
   ڹ(essence): fonxanforce celestial iceforce gouyee nine-moon-force
   (evolution):
   (magic):
   м(parry): ָ߼е
   (stick):
   (sword): fonxansword six-chaos-sword nine-moon-sword
   (throwing):
   ȭ(unarmed): liuh-ken celestrike nine-moon-claw tenderzhi ...
   (spells): necromancy

//ϣܰм//
.:
   δָ, ϵͳԶѡࡣ

   趨ʽ: set( "race", "" );

.Ա:
   ֮ͬ, ϵͳ: 1., Ůԡ
                             2., , ԡ

   趨ʽ: set( "gender", "Ա" );

.:
   ģʽʽܹλ, ֱ
   ̳б׼ģʽ, 趨; һҪ趨
   趨ʽ: set( "verbs", ({ "ʽ1", "ʽ2", ...}) );
             set( "limbs", ({ "ܹλ1", "ܹλ2", ...}) );

   Ŀǰ֮±:

       Ա    ʽ        ܹλ
  ------------------------------------------
        1      ϵͳ        ϵͳ
  .........................................
   Ұ     2      hoof, bite,     趨
                   claw, poke
  ------------------------------------------

.:
   ǿڹ趨ĳЩ, ʹõѯ(ask)ض֮
   ؼʱ, ԶԤ֮

   趨ʽ: set( "inquiry", ([
                  "1" : "Ӧ֮\n",
                  "2" : (: this_object(), "иʽ֮" :)
                ]) );

ʮ.:
   ֮趨: set_name(), set_short(), set_long(), create_family(),
                 set( "nickname", "?" );
                !

  emote:

ɫϷг̸⻹õһЩ, 
ԱһЩס˵ĸо. ָͨ emote.
Ȼ˵ĵ emote ָǿܵ, Ϊ˷, emote 
ʹӢĶΪ.

emote  /adm/daemons/emoted.c .

й emote ָ:
edemote -- ޸, ɾ, ʾһ emote .
semote  -- ʾĿǰ emote daemon ֪ emote.

emote Ϊ: Ŀ, ûĿͶԼ.

Ŀ emote ʱ, Ҫ汾ѶϢ:
1. ִ - Լ, ִ emote .
2.    -  emote Ŀ. ȷ˵ 'smile A' ʱ, A Ƕ.
3.  - Ŀڳ.

ûĿԼ emote, ֻҪ 1  3 ѶϢ.

κѶϢкܶ.

ѶϢĴ:
$N -- .
$n -- .
$P -- Լ˳ƴ, , , , ...
$p -- ˳ƴ, ͬ.

:
Ҫһ 'bore' emote:
>edemote bore

༭ emotebore
ѶϢкüУ . ʾ
ѶϢпʹõĲ¼֣
  $N  Լ֡
  $n  ʹö֡
  $P  Լ˳ƴʣ㡢
  $p  ʹö˳ƴʣ㡢

ָʹ emote ʱԼѶϢ
->$P.
->.
ָʹ emote ʱ˿ѶϢ
->$N.
->.
Լʹ emote ʱԼѶϢ
->$P$PԼ.
->.
Լʹ emote ʱ˿ѶϢ
->$N$PԼ.
->.
Աʹ emote ʱԼѶϢ
->$P$n.
->.
Աʹ emote ʱʹö󿴵ѶϢ
->$N$p.
->.
Աʹ emote ʱԼʹö⣬˿ѶϢ
->$N$n.
->.
Emote ༭

 (ĳ) ʹ emote ʱ:
> bore
[㿴]   : .
[˿] : ĳ׾.
> bore ĳ  (Ҳʹĳ׵Ӣ ID)
[㿴]   : Լ.
[˿] : ĳ׾Լ.
> bore ĳ
[㿴]   : ĳҺ.
[ĳҿ] : ĳ׾.
[˿] : ĳ׾ĳҺ.

 μ ES2 mudlib

(1) MudOS 

  ȣҪһ MudOS ( v21c2 )ΪĵĹϵ
  compile ֮ǰҪһЩ޸ġΪ˽ʡʱ䣬 comm.c 
  telnet_neg()  ed.c  prntln() ֣ C л
  Ӧú׾ܿ޸ģڴ˾Ͳ׸ˡ

  Σ뽫 MudOS ȷ compile ִеڿʼ compile
  ֮ǰ趨 options.h ݣES2 mudlib  options.h
  ҲԴṩ ftp site õ޷ȷһЩѡҪ趨
  οõ

  ֻҪ src Ŀ¼´ make Ϳ
  ִеdriver  addr_serverϵ⣬
  SYSOP

(2) Install

   MudOS ִе֮ᣬͿԿʼ ES2 mudlib es2Ŀ¼
  /adm/etc/config.ES2  MudOS driver  runtime config
  file driver Ŀ¼£Ȼ༭޸
   mudlib directory  binary directory ·Ϊ ES2
  mudlib Լ driver ִеľ·гǰ˵
  ·⣬й·趨 mudlib ·
  mudlib ǺϤġ

  һжֻҪ driver Ŀ¼ã

  driver config.ES2 &

  Ϳˣ Setting up IPC on port XXXX (XXXX 
  config.ES2 趨Ҫ mud ʹõ port )ͱʾװɹˡ

(3) δһ

  õ mudlib ʱ򣬻ֲᷢûκϵ es2
  Ŀ¼, adm/etc/wizlist м֣Լһ (admin)(admin)
  ʾߵȨ޵ȼwizlist ʦĵȼ
  ҲֻԼڵɾ

   MudOSȻ߽ȥղ趨ᷢ
  ״̬һʼ (admin)Ϳ promote ָ
  ߪΪʦpromote ԶЩĵȼд wizlist
