法师与凝血我的法师号刚会凝血,我
用bbx挂机练救行了。
aci代码如下
//程序名称:高级技能云寂练(破血狂杀、铁布衫、凝血离魂、云寂术、阴阳法环)
//程序版本:Ver0。95
//4 经过5小时不端的断线测试,发现BBX的人物出现函数在短时间掉线(一般是显示掉线后,一次就上线的情况)后,人物在原来的位置出现
// 不会有返回数据,导致无法连续练习,本版本可强行云寂,不再判断人物是否在旁边,道士在有朋友在的时候帮助朋友,不在时对自己
// 使用,如果网络情况好不要用强行云寂版,会增加耗药,特别是需要帮助的朋友不在,会一直对自己使用到买不了药或其他原因中断
// 为止,建议只保留需要的钱(估计200W足够),其他的...全部
用bbx挂机练救行了。
aci代码如下
//程序名称:高级技能云寂练(破血狂杀、铁布衫、凝血离魂、云寂术、阴阳法环)
//程序版本:Ver0。95
//4 经过5小时不端的断线测试,发现BBX的人物出现函数在短时间掉线(一般是显示掉线后,一次就上线的情况)后,人物在原来的位置出现
// 不会有返回数据,导致无法连续练习,本版本可强行云寂,不再判断人物是否在旁边,道士在有朋友在的时候帮助朋友,不在时对自己
// 使用,如果网络情况好不要用强行云寂版,会增加耗药,特别是需要帮助的朋友不在,会一直对自己使用到买不了药或其他原因中断
// 为止,建议只保留需要的钱(估计200W足够),其他的请转走,请谨慎使用。
// 设置强行云寂模式需要将force_canhelp=0 改为 force_canhelp=1
//3 修正了以前版本在互相练习的一个循环缺陷,防止使用云寂术不成功时造成的效率降低。
//2 修正了道士帮助练习时寻找朋友的缺陷。
(拷的时候掉了个字母)
//1 修正了法师的练功时定位的缺陷。
//运行环境:百宝箱3。24测试版(请正确使用BBX版本)
//程序作者:黄鹤楼 风满袖
//发布时间:2005。1。30 版权所有,以上部分禁止修改。
每练习一次,感谢一次,你的感谢是对我最好的鼓励。
//程序理论上可支持道士自己练习云寂术、阴阳法环,帮助战士练破血狂杀、铁布衫,帮法师练凝血离魂,支持断线重连,自动补给药品。
//此程序参考了许多前辈的程序。
在此表示感谢!
//各职业通用设置:买药和买副请在百宝箱的“弹出设置”中设定,还要关闭幽灵盾,关闭神圣战甲术,不要招宝宝,关闭自动魔法盾,
// 关闭组队,使用前先特修武器和装备,丢掉无用物品和垃圾符。
// 出发地点设置在诺玛村落,其他为就地。练功地点可设置为寄售周围的一个小的区域。注意:道士必须学过云寂术。
// 练功地点程序设置在诺玛村落的寄售商边,如果是道士为151、141,如果是法师为151、142。
可自己根据需要修改。
// 程序中所有的sleep(0。5)是为保证魔法正确使用加的延时,如果网快,服务器好,可以都去掉;
//道士专用设置:如果是练习云寂术,将程序中的"阴阳法环"修改为"神圣战甲术"或"幽灵盾",道士会打防后自己练习。
// 如果练习的是阴阳法环,不需要任何修改。(必须学会云寂术)
// 如果是道士帮助别人练习,在string friend_name=""的""之间填上需要帮助的ID的名字,同时将
// "阴阳法环"修改为"云寂术"。
如需要强行云寂,force_canhelp=0改为force_canhelp=1。
//战士专用设置:如果练习的是破血狂杀,不需要任何修改。(必须有一已学会云寂术的道士也运行该ACI)
// 如果要练习铁布衫的,请将程序中的"破血狂杀"改为"铁布衫"或"铁布杉"即可。
//法师专用设置:如果练习的是凝血离魂,不需要任何修改。(必须有一已学会云寂术的道士也运行该ACI)
//
//注意事项:Ver0。90是传奇3G使用的版本,为了避免练习时被人爆,请不要带好的装备。
// 请先到杂货去买3个地牢,再点加载。将本程序加载后,程序可能会先使用地牢(BBX本身设置),如果在系统消息窗显示是开始练功
// 并向城里跑去,则工作正常,如果向其他地图的练功地点去或停止几分钟不动或就地打怪,到登陆界面点断开,再点登陆就正常了!
// 程序中的sleep(0。
5)都是为确保魔法使用而加的延时,如果你网络够快,服务器不卡,可以都去掉,可再提高效率。
//本持续目前只测试了云寂术,阴阳法环,帮助法师消盾。
#define TIMER_SECS 15 //断线重连的判断时间,不要修改
#define SLEEP_SECS 4//练习开始时的等待时间,网速越慢和电脑性能越低的该值要越大。
用户需要依据自己的电脑环境选定一个合适的值。P4 2G和ADSL 1M以上的用户建议用2,PII 500和Modem 56K用户建议用5以上。
#define WAIT1_SECS 4 //道士帮练时、战士和法师使用魔法时的间隔时间,可根据需要修改。
#define WORK_THREAD "WORK_THREAD"
#define WORK_TIMER "WORK_TIMER"
int last_last_respond = 0;
int in_skill = 0;
int x,y;
int skill_num = 0;
int friend_canhelp=0;
int force_canhelp=1; //如需要强行云寂,force_canhelp=0改为force_canhelp=1。
string timer_name = "";
string skill_name="";
string friend_name=""; //如果是道士帮助别人练习在""之间填上需要帮助的ID的名字。
void main_thread() //主体程序
{
tell_user("开始主体程序,好好练习,天天谢我。;-)\n");
sleep(5);
if(me()["race"]==RACE_TAOIST)
{
if(taoist_config["auto_batleship"]) tell_user("为了顺利的练习,请暂时不要使用神圣战甲术\n");
if(taoist_config["auto_ghost"]) tell_user("为了顺利的练习,请暂时不要使用幽灵盾\n");
skill_name="阴阳法环"; //如果是道士帮助别人练习将"阴阳法环"改为"云寂术"。
}
if(me()["race"]==RACE_WIZARD)
{
if(config["auto_shield"]) tell_user("为了顺利的练习,请暂时不要使用魔法盾\n");
if(wizard_config["auto_use_burst"]) tell_user("为了顺利的练习,请暂时不要自动使用凝血离魂\n");
skill_name="凝血离魂";
}
if(me()["race"]==RACE_WARRIOR)
{
if(warrior_config["auto_use_burst"]) tell_user("为了顺利的练习,请暂时不要自动使用破血狂杀\n");
skill_name="破血狂杀";
}
if(sizeof(member_leader)) tell_user("为了顺利的练习,请暂时关闭组队功能\n");
if (uptime()) tell_user(sprintf("你已经练习了%d分钟,共获得%s%d点技能,每小时练习%d点\n",uptime()/60,skill_name,skill_num*2,skill_num*3600/uptime()));
in_skill=0;
back(1);
tell_user("停止练功,返回城市\n");
// restart_game(1);
start_quest(1);
tell_user("主体程序结束\n");
}
void timer()//定时检测在线状态
{
timer_name = ctime();
if(last_respond() == last_last_respond)
{
tell_user("失去服务器的响应,重新连接游戏\n");
restart_game(0);
}
last_last_respond = last_respond();
set_timer(TIMER_SECS, timer_name, "timer");
}
void create_work()//创建练习线程
{
delete_thread(WORK_THREAD);
create_thread(WORK_THREAD, "work_thread");
tell_user("创建练习线程\n");
}
void on_enter_world() //进入游戏世界,重新来过
{
tell_user("进入游戏世界,重新来过\n");
timer();
create_work();
}
void on_post_prepare_for_quest() //完成准备,前往练习地点
{
tell_user("完成准备,前往练习地点\n");
delete_timer(WORK_TIMER);
set_timer(5, WORK_TIMER, "create_work");
stop_quest();
}
int check_m() //检查药和副是否还够用
{
if(get_item_amount("金创药(小)")+get_item_amount("金创药(中)")+get_item_amount("金创药(大)")+get_item_amount("金创药(特)")<5) return 0;
if(get_item_amount("魔法药(小)")+get_item_amount("魔法药(中)")+get_item_amount("魔法药(大)")+get_item_amount("魔法药(特)")<5) return 0;
if(me()["race"]==RACE_TAOIST)
{
if(count_item_amount("护身符(小)")+count_item_amount("神圣护身符(小)")+count_item_amount("火焰护身符(小)")+count_item_amount("霹雷护身符(小)")+count_item_amount("狂风护身符(小)")+count_item_amount("寒气护身符(小)")+count_item_amount("护身符(中)")+count_item_amount("神圣护身符(中)")+count_item_amount("火焰护身符(中)")+count_item_amount("霹雷护身符(中)")+count_item_amount("狂风护身符(中)")+count_item_amount("寒气护身符(中)")<3) return 0;
}
return 1;
}
void on_char_appear(mapping ob)
{
if (friend_name != "")
{
if (ob["name"] == friend_name)
{
tell_user(sprintf("%s出现,可以帮助。
\n", ob["name"]));
friend_canhelp = 1;
}
}
}
void on_char_disappeared(mapping ob)
{
if (friend_name != "")
{
if (ob["name"] == friend_name)
{
tell_user(sprintf("%s消失,不可以帮助。
\n", ob["name"]));
friend_canhelp = 0;
}
}
}
void work_thread() //好好练习,天天谢我。
;-)
{
sleep(SLEEP_SECS);
if(!in_skill)
{
if(me()["race"] != RACE_TAOIST)
{
x = 151;
y = 142;
}
else
{
x = 151;
y = 141;
}
if (!goto_city_ex("诺玛村落",x,y,15))
{
tell_user("没有发现合适的路径,回城重新准备\n");
main_thread();
return ;
}
unride();
walk_to(x,y);
in_skill=1;
}
while (check_m())
{
if(in_skill)
{
if(me()["race"]==RACE_WIZARD||me()["race"]==RACE_WARRIOR)
{
for(i=0;i<3;i++)
{
if (cast(me(),skill_name)) i=4;
sleep(0。
5);
}
if ( i == 5 )tell_user(sprintf("%s技能使用成功。感谢风满袖同志;-)。\n",skill_name));
sleep(WAIT1_SECS); //法师和战士用一次技能休息的时间,根据需要调整在开始的定义中修改
}
if(me()["race"]==RACE_TAOIST)
{
if(skill_name != "云寂术")
{
for(i=0;i<3;i++)
{
if (casti(me(),skill_name)) i=4;
sleep(0。
5);
}
if ( i == 5 ) tell_user(sprintf("%s技能使用成功。感谢风满袖同志;-)。\n",skill_name));
}
if(skill_name != "云寂术")
{
for(i=0;i<3;i++)
{
if (casti(me(),"云寂术")) i=4;
sleep(0。
5);
}
if ( i == 5 ) tell_user("云寂术技能使用成功。感谢风满袖同志;-)。\n");
}
}
if(me()["race"]==RACE_TAOIST)
{
if(force_canhelp) friend_canhelp = 1;
if((skill_name == "云寂术") && (friend_canhelp == 1))
{
for(i=0;i<3;i++)
{
if (casti(friend_name,"云寂术")) i=4;
sleep(WAIT1_SECS);
}
if ( i == 5 ) tell_user("使用云寂术帮助朋友成功。
感谢风满袖同志;-)。
\n");
}
}
skill_num=skill_num+1;
}
}
if (!check_m())
{
tell_user("物品用光,回城重新准备\n");
main_thread();
return;
}
}
private void destruct() //结束程序
{
printf("程序执行结束\n");
delete_thread(WORK_THREAD);
delete_timer(WORK_TIMER);
delete_timer(timer_name);
}
printf("程序开始执行\n"); //启动程序
timer();
main_thread();
。收起