{
版本信息:
脚本名称:坎那贝拉村西门(战士烧技能)
作者:CGHang
最后更新日期:2004/11/7
运行起点:
1、坎那贝拉村医院外面的路上,纵坐标在 47~49 之间。
2、任意。此时须人物40级以上,登入点在阿凯鲁法村,并开了坎那贝拉村的传送。
挂机地点:
坎那贝拉村西门外树区
安全血魔说明:
SafeHP: 回村补给的人的血下限
SafeMP: 回村补给的人的魔下限
PetSafeHP:回村补给的宠的血下限
PetSafeMP:回村补给的宠的魔下限
速度说明:
StartSpeed:坎那贝拉村内的速度,建议500
MoveSpeed: 阿凯鲁法村内的速度,建议500
WarSpeed: 随机路线循环遇敌时的速度,建议300
补充说明:
1、提供详细的消耗统计。
此脚本非常费钱,请务必带够。
2、战斗技能由脚本控制。战斗设置第一、三行各三个技能,第二行不启用。具体技能在函数 GetSkillInfo 内修改。
没卡时或技能全部烧完就关闭游戏。需要其他处理方式在函数 SetSkill 内修改。
3、没钱补魔则关闭游戏。
需要其他处理方式需修改函数 Rest。
4、人或宠受伤,会自动找NPC医生治疗。
不需要治疗的,打开附加战斗设置中的人、宠受伤检查。
5、循环遇敌时只检查人的血魔量。不检查宠的血魔量。
务必使用生存能力强的、高级宠,否则须增加对宠的检查。
6、结束循环遇敌后自动逃跑
建议启用技能MP下限逃跑、100%逃跑。
}
//函数:给定技能信息
//作用对象列表:1 默认,2 敌人,3 人物,4 宠
//作用范围列表:1 单体,2 四体,3 全体,4 回力,5 小刀,6 全部
var
SkillName11,SkillName12,SkillName13,SkillName31,SkillName32,SkillName33:String;
SKillAim11,SkillAim12,SkillAim13,SkillAim31,SkillAim32,SkillAim33:Integer;
SKillRange11,SKillRange12,SKillRange13,SKillRange31,SKillRange32,SKillRange33:Integer;
SkillLimit11,SkillLimit12,SkillLimit13,SkillLimit31,SkillLimit32,SkillLimit33:Integer;
Procedure GetSkillInfo();
begin
SkillName11:=\'反击\'; //战斗设置第一行在用技能名字
SkillAim11:=3; //战斗设置第一行在用技能作用对象
SKillRange11:=1; //战斗设置第一行在用技能作用范围
SkillLimit11:=8; //战斗设置第一行在用技能等级限制
SkillName12:=\'护卫\'; //战斗设置第一行备用技能名字
SkillAim12:=4; //战斗设置第一行备用技能作用对象
SKillRange12:=1; //战斗设置第一行备用技能作用范围
SkillLimit12:=8; //战斗设置第一行备用技能等级限制
SkillName13:=\'诸刃\'; //战斗设置第一行第二备用技能名字
SkillAim13:=2; //战斗设置第一行第二备用技能作用对象
SKillRange13:=1; //战斗设置第一行第二备用技能作用范围
SkillLimit13:=8; //战斗设置第一行第二备用技能等级限制
SkillName31:=\'乾坤一掷\';//战斗设置第三行在用技能名字
SkillAim31:=2; //战斗设置第三行在用技能作用对象
SKillRange31:=1; //战斗设置第三行在用技能作用范围
SkillLimit31:=8; //战斗设置第三行在用技能等级限制
SkillName32:=\'诸刃\'; //战斗设置第三行备用技能名字
SkillAim32:=2; //战斗设置第三行备用技能作用对象
SKillRange32:=1; //战斗设置第三行备用技能作用范围
SkillLimit32:=8; //战斗设置第三行备用技能等级限制
SkillName33:=\'护卫\'; //战斗设置第三行第二备用技能名字
SkillAim33:=4; //战斗设置第三行第二备用技能作用对象
SKillRange33:=1; //战斗设置第三行第二备用技能作用范围
SkillLimit33:=8; //战斗设置第三行第二备用技能等级限制
//检查技能的有效性
if (GetSkillLv(SkillName11)<1) or (GetSkillLv(SkillName12)<1) or (GetSkillLv(SkillName13)<1) or (GetSkillLv(SkillName31)<1) or (GetSkillLv(SkillName32)<1) or (GetSkillLv(SkillName33)<1) then
begin
OutPutMes(\'脚本中使用了没学习的技能\');
OutPutMes(\'请检查函数 GetSkillInfo 中赋值的有效性\');
QuitScript;
end;
end;
//函数:设置技能
Procedure SetSkill();
begin
if (Get(\'CardTime\')<1) or ((GetSkillLv(SkillName11)>=SkillLimit11) and (GetSkillLv(SkillName12)>=SkillLimit12) and (GetSkillLv(SkillName13)>=SkillLimit13) and (GetSkillLv(SkillName31)>=SkillLimit31) and (GetSkillLv(SkillName32)>=SkillLimit32) and (GetSkillLv(SkillName33)>=SkillLimit33)) then ExitGame; //没卡时,或技能全部烧完,就关闭游戏
if GetSkillLv(SkillName11)>=SkillLimit11 then
begin
if GetSkillLv(SkillName12)>=SkillLimit12 then
begin
ChangeSkillEx(SkillName13,GetSkillLv(SkillName13),SkillAim13,SkillRange13);
end
else ChangeSkillEx(SkillName12,GetSkillLv(SkillName12),SkillAim12,SkillRange12);
end
else ChangeSkillEx(SkillName11,GetSkillLv(SkillName11),SkillAim11,SkillRange11);
if GetSkillLv(SkillName31)>=SkillLimit31 then
begin
if GetSkillLv(SkillName32)>=SkillLimit32 then
begin
ChangeSkill3Ex(SkillName33,GetSkillLv(SkillName33),SkillAim33,SkillRange33);
end
else ChangeSkill3Ex(SkillName32,GetSkillLv(SkillName32),SkillAim32,SkillRange32);
end
else ChangeSkill3Ex(SkillName31,GetSkillLv(SkillName31),SkillAim31,SkillRange31);
end;
//函数:过图
Procedure MyReMap(nMapID,nX,nY:Integer);
begin
sp(GetH(\'H_SHUNYI\')+\' a 0 \'+C10TO62(nX)+\' \'+C10TO62(nY)+\' -1\');
while Get(\'MapNo\')<>nMapID do Sleep(100);
end;
//函数:传送
Procedure Transfer(nMapNO:Integer);
begin
if (Get(\'LV\')<40) or (Get(\'Money\')<400) then
begin
OutPutMes(\'无法传送到坎那贝拉村\');
OutPutMes(\'请检查人物等级、金币数\');
QuitScript;
end;
NPCEx(326,4,\'\' );
while Get(\'MapNo\')<>nMapNO do Sleep(100);
end;
//函数:补血
Procedure Rest();
begin
if (Get(\'Money\')+Get(\'MP\'))<Get(\'MaxMP\') then ExitGame; //没钱补魔则关闭游戏
if Get(\'MP\')<Get(\'MaxMP\') then
begin
NPCEx(328,0,\'1\');
NPCEx(329,4,\'\' );
NPCEx(330,1,\'\' );
end;
if Get(\'HP\')<Get(\'MaxHP\') then
begin
NPCEx(328,0,\'3\');
NPCEx(331,4,\'\' );
NPCEx(330,1,\'\' );
end;
if (Get(\'PetHP\')<Get(\'PetMaxHP\')) or (Get(\'PetMP\')<Get(\'PetMaxMP\')) then
begin
NPCEx(328,0,\'5\');
NPCEx(332,4,\'\' );
end;
end;
//函数:打卡
Procedure Card();
begin
NPCEx(347,4,\'\');
end;
//函数:卖石头
Procedure Sell();
begin
NPCEx(333,0,\'2\');
NPCEx(334,0,\'8\');
end;
//函数:NPC医生疗伤
Procedure Cure();
begin
NPCEx(336,0,\'7\');
end;
//函数:消耗统计
var
OldMoney,OldTime,AllMoney,AllTime,CycNum:Integer;
procedure ShowEfficiency();
var
tempMoney,tempTime,NowTime:Integer;
begin
if CycNum>0 then
begin
NowTime:=Get(\'CurrentTime\');
tempTime:=3600*(NowTime/10000-OldTime/10000)+60*((NowTime mod 10000)/100-(OldTime mod 10000)/100)+(NowTime mod 100)-(OldTime mod 100);
if tempTime<0 then tempTime:=tempTime+86400;
AllTime:=AllTime+tempTime;
tempMoney:=OldMoney-Get(\'Money\')-GetItemNum(\'魔石\',1)*259;
AllMoney:=AllMoney+tempMoney;
OutPutMes(\' 用时:\'+IntToStr(tempTime/60)+\'分\'+IntToStr(tempTime mod 60)+\'秒\');
OutPutMes(\' 烧钱:\'+IntToStr(tempMoney)+\' G\');
OutPutMes(\'平均一次循环\');
OutPutMes(\' 用时:\'+IntToStr(AllTime/CycNum/60)+\'分\'+IntToStr((AllTime/CycNum) mod 60)+\'秒\');
OutPutMes(\' 烧钱:\'+IntToStr(AllMoney/CycNum)+\' G\');
OutPutMes(\'平均一小时\');
OutPutMes(\' 烧钱:\'+IntToStr(3600*AllMoney/AllTime)+\' G\');
end;
OldTime:=Get(\'CurrentTime\');
OldMoney:=Get(\'Money\')+GetItemNum(\'魔石\',1)*259;
CycNum:=CycNum+1;
OutPutMes(\'\');
OutPutMes(\'第\'+IntToStr(CycNum)+\'次循环\');
end;
begin
SetDropItem(\'/卡片/水晶碎片/\');
GetSkillInfo();
//到坎那贝拉村医院外面
MoveNear(Get(\'PosX\'),Get(\'PosY\'));
if (Get(\'MapNO\')<>33500) or (Get(\'POSY\')>49) or (Get(\'POSY\')<47)then
begin
Sleep(1000);
HoldPoint(0);
if Get(\'MapNO\')<>33200 then
begin
OutPutMes(\'登入点不在阿凯鲁法村\');
OutPutMes(\'无法到达坎那贝拉村\');
QuitScript;
end;
SetSpeed(530);
MoveNear(98,165);
MoveNear(96,167);
MoveNear(96,173);
SetSpeed(Get(\'MoveSpeed\'));
MoveNear(115,173);
MoveNear(121,167);
MoveNear(126,167);
MoveNear(128,169);
MoveNear(162,169);
//打卡
if (Get(\'CanCard\')=1) and (Get(\'CardTime\')>0) then
begin
MoveNear(179,186);
MoveNear(179,211);
MoveNear(190,211);
MoveNear(192,209);
MoveNear(192,208);
MyReMap(33207,192,208);
MoveNear(4,21);
MoveNear(10,15);
MoveNear(10,13);
WayTo(1);
Card();
MoveNear(10,15);
MoveNear(4,21);
MoveNear(4,23);
MyReMap(33200,4,23);
MoveNear(192,209);
MoveNear(190,211);
MoveNear(179,211);
MoveNear(179,186);
MoveNear(169,176);
end;
MoveNear(169,162);
MoveNear(179,152);
MoveNear(179,121);
MoveNear(180,115);
MoveNear(178,115);
MoveNear(175,112);
MoveNear(171,108);
MoveNear(168,108);
WayTo(7);
Transfer(33500);
MoveNear(25,31);
MoveNear(29,31);
MoveNear(29,41);
MoveNear(35,47);
end;
//开始挂机
while True do
begin
SetSpeed(Get(\'StartSpeed\'));
MoveNear(35,48);
//加血
if (Get(\'MP\')<Get(\'MaxMP\')) or (Get(\'HP\')<Get(\'MaxHP\')) or (Get(\'PetHP\')<Get(\'PetMaxHP\')) or (Get(\'PetMP\')<Get(\'PetMaxMP\')) then
begin
MoveNear(38,45);
MoveNear(38,44);
MyReMap(33516,38,44);
MoveNear(15,22);
MoveNear(20,17);
WayTo(2);
Rest();
if (Get(\'Health\')>0) or (Get(\'PetHealth\')>0) then //人宠受伤,则找NPC治疗
begin
MoveNear(19,16);
MoveNear(19,13);
MoveNear(22,10);
MoveNear(22,7);
WayTo(1);
Cure();
MoveNear(22,10);
MoveNear(15,17);
end
else MoveNear(15,22);
MoveNear(15,25);
MyReMap(33500,15,25);
MoveNear(38,45);
end;
//卖石头
if (Get(\'Item\')>17) and (GetItemPos(\'魔石\')>1) then
begin
MoveNear(41,48);
MoveNear(53,48);
MoveNear(58,53);
MoveNear(58,72);
MoveNear(60,74);
MoveNear(61,74);
MyReMap(33511,61,74);
MoveNear(8,9);
MoveNear(9,10);
WayTo(3);
Sell();
MoveNear(8,9);
MoveNear(2,9);
MyReMap(33500,2,9);
MoveNear(60,74);
MoveNear(58,72);
MoveNear(58,53);
MoveNear(53,48);
end
else MoveNear(35,48);
ShowEfficiency();
SetSkill();
//出村,到挂机点
MoveNear(13,48);
MyReMap(33000,13,48);
SetSpeed(Get(\'WarSpeed\'));
MoveNear(620,305);
//循环遇敌
//while (Get(\'Item\')<20) and (Get(\'MP\')>=Get(\'SafeMP\')) and (Get(\'HP\')>=Get(\'SafeHP\')) and (Get(\'PetHP\')>=Get(\'PetSafeHP\')) and (Get(\'PetMP\')>=Get(\'PetSafeMP\')) do
while (Get(\'MP\')>=Get(\'SafeMP\')) and (Get(\'HP\')>=Get(\'SafeHP\')) do
begin
MoveNear(616+random(3),302+Random(8));
if (Get(\'MP\')>=Get(\'SafeMP\')) and (Get(\'HP\')>=Get(\'SafeHP\')) then MoveNear(623-random(3),302+Random(8));
end;
//回村
ChangeSkill(\'Escape\',0);
ChangeSkill3(\'Escape\',0);
MoveNear(623,305);
MoveNear(627,305);
MyReMap(33500,627,305);
end;
end.