开发太守分配任务指南
1 定义任务ID
2 在/sgdomain/event/ev_job 中注册
如果是初级工作，加在：simple_offer=(["findbody" : "找人"]);
如果是中级工作 加在：leader_offer=([ "letter" : "送信" , "spy" : "地区侦查"]);
如果是高级工作，加在：simple_offer=(["findbody" : "找人"])
3 在job_d 中注册
=============================================================
@JOB_D->set_job("findbody","name","找人")
登记名称
-------------------------------------------------------------
@JOB_D->set_job("findbody","level",0)
设定等级
-------------------------------------------------------------
@JOB_D->set_job("findbody","count_lasttimes",10)
设定每天最多重复次数
===============================================================
4 建立路径和文件
路径是 /sgdomain/job/findbody/
文件是 /sgdomain/job/findbody/findbody.c
注意，路径与文件明必需与JOBID一致
5 编写控制文件。
下面以findbody.c 为例。
==============================================================
mixed job(string m_id,string officer_id)
所有的JOB 都以这个函数为入口
第一个参数是JOB申请者的ID，第二个参数是太守的ID
---------------------------------------------------------------
. . . . . . 判断是否可以安排工作 . . . . .
----------------------------------------------------------------
	return "$N对$T道：现在没谁好找呀。\n";
如果没有办法安排JOB，返回一个字符串解释原因。
----------------------------------------------------------------
可以分配工作:
o->set_asklist("come","target",target);
设置工作中间变量。
请参考：/sgdomain/modules/m_ask.c
通常为了实现 LIV1 ask LIV2 about sth 我们在 LIV2 的文件中加入
add_question(sth,sth); 。但如果希望只是临时加一个问题到LIV2
同时希望只有LIV1可以问这个问题。则我们可以用:
LIV1->set_asklist(sth, "target", ID of LIV2)
这一句可以使LIV1 ask LIV2 about sth 成立
-----------------------------------------------------------------
o->set_asklist("come","filename",PJOB+"findbody/findbody");
o->set_asklist("come","funname","ask_come");
这两句告诉系统当LIV ask LIV2 about sth 时，系统执行哪一个文件
中的哪个函数。语法是：
LIV1->set_asklist(sth,"filename", filename);
LIV1->set_asklist(sth,"funname", function name);
------------------------------------------------------------------
  o->add_job("findbody");
  o->set_job("findbody","status","begin");
  o->set_job("findbody","memo","找"+CHAR_D->get_char(target,"name")+"("+target+")");
设置JOB，JOB 状态，JOB参数和JOB备注
--------------------------------------------------------------------   
   return "$N对$T道：那就麻烦$R去帮我找一下"+
	   CHAR_D->get_char(target,"name")+"("+target+")"+
	   "，\n见面就说ask "+target+" about come 。\n";
任务分配成功，返回说明语句。
}
====================================================================
void ask_come(object me, object target)
每一个临时加入的问句( LIV1 ask LIV2 about sth) 都需要一个function
来控制整个过程。第一个参数是发问者，第二个参数是对象。
---------------------------------------------------------------------
	me->targetted_action(
      "$N对$T笑着说道：本地"+m_title+"有请$R\n",target);
显示提问
----------------------------------------------------------------------
	DELAY_D->delay_targetted_action(
		target,me,"$N对$T道：知道了，随后就去，谢谢$R。\n",1);
显示回答，加入延时使得对话更真实。(见：/daemons/delay_d.c)
-----------------------------------------------------------------------
	me->clear_asklist("come");
清除这个临时问题。
-----------------------------------------------------------------------
	me->set_job("findbody","status","done");
表示任务已经完成，注意这里不能用 me->finish_job
-----------------------------------------------------------------------
	tell_user(m_id,"%^H_GREEN%^任务完成，快去太守处领赏吧。\n%^RESET%^");
通知玩家任务完成。
-------------------------------------------------------------------------
	return;
}
=====================================================================
6 写help 文件
名称与JOBID一样
拷贝到/help/player/sanguo/job/路径下
update /daemons/sghelp_d.c
7 装入help 系统
执行helpediter
input t "t)  修改主题标题(Title)"
input JOBID; input 中文名称 如:初级工作之找人; enter
input a "a)  把一主题加入一类(AddClass)"
input JOBID; input job ;出现：findbody 加入 job 类，成功! 
input q "q)  退出 "
大功告成。
