爵位捐献的NPCA代码 有需要的拿去
需要属性改动的自己修改下,这个是开过区的绝对没有什么问题!
program Mir2; {$I TaoZhuang.pas} var s1,s2,s3,s4,s5 : integer; l1,l2,l3,l4,l5 : integer; //次数限制-变量 n1,n2,n3,n4,n5 : string; str :string; num,num1,num2,today,num4 :integer; procedure _DoExit; begin This_Npc.CloseDialog(This_Player); end; procedure _Exit; begin This_Npc.CloseDialog(This_Player); end; procedure domain; begin today := GetDateNum(GetNow); //定义today为当前日期值 if This_Player.GetV(78,10) <> today then //查询个人变量78,10 不等于当前日期则清理其他数据 begin This_Player.SetV(78,10,today); This_Player.SetV(78,1,0); This_Player.SetV(78,2,0); end; if getg(78,10) <> today then //查询个人变量78,10 不等于当前日期则清理其他数据 begin SetG(78,10,today); SetG(78,1,0); SetG(78,2,0); SetG(78,3,0); SetG(78,4,0); SetG(78,5,0); SetG(78,7,0); end; if This_Player.getV(78,1) < 0 then This_Player.SetV(78,1,0); //初始化个人变量 if This_Player.getV(78,2) < 0 then This_Player.SetV(78,2,0); //初始化个人变量 num := StrToIntDef(This_NPC.InputStr,-1); if getg(78,1) < 0 then //初始化全局变量 SetG(78,1,0); if getg(78,2) < 0 then SetG(78,2,0); if getg(78,3) < 0 then SetG(78,3,0); if getg(78,4) < 0 then SetG(78,4,0); if getg(78,5) < 0 then SetG(78,5,0); s1 := getg(78,1); //定义变量 s2 := getg(78,2); s3 := getg(78,3); s4 := getg(78,4); s5 := getg(78,5); if This_Player.getV(78,1) > 0 then begin if This_Player.getV(78,1) = s1 then n1 := This_Player.Name; if This_Player.getV(78,1) = s2 then n2 := This_Player.Name; if This_Player.getV(78,1) = s3 then n3 := This_Player.Name; if This_Player.getV(78,1) = s4 then n4 := This_Player.Name; if This_Player.getV(78,1) = s5 then n5 := This_Player.Name; end; This_Npc.NpcDialog(This_Player, // +'你目前的元宝捐献数为:<'+inttostr(This_Player.GetV(78,1))+'/fcolor=250> \' // +'|今日总捐献为:<'+inttostr(GetG(78,7))+'/fcolor=250> 沙城奖池:<'+inttostr(GetG(78,7)/10)+'/fcolor=250> \' // +'|<排名 攻魔道 捐献数 玩家名/fcolor=151>' // +'|<第一名/fcolor=250>: <40-40/FCOLOR=254>< '+ inttostr(s1)+'/fcolor=250> <'+n1+'/fcolor=249>\' // +'|<第二名/fcolor=250>: <30-30/FCOLOR=254>< '+ inttostr(s2)+'/fcolor=250> <'+n2+'/fcolor=249>\' // +'|<第三名/fcolor=250>: <20-20/FCOLOR=254>< '+ inttostr(s3)+'/fcolor=250> <'+n3+'/fcolor=249>\' // +'|<第四名/fcolor=250>: <15-15/FCOLOR=254>< '+ inttostr(s4)+'/fcolor=250> <'+n4+'/fcolor=249>\' // +'|<第五名/fcolor=250>: <10-10/FCOLOR=254>< '+ inttostr(s5)+'/fcolor=250> <'+n5+'/fcolor=249>\' // +'|<六名后/fcolor=250>: <5-5/FCOLOR=254> \' // +'|<捐赠后属性自动领取,时效1小时,时间到加1元宝即可,英雄也加./fCOLOR=149> \' +'|<此功能已关闭/fCOLOR=22> \' // +'|<注:每晚00:00自动清空捐献数据!/fCOLOR=22> \' // +'|{cmd}<我要捐献/@jxyb>\' ); end;
procedure lqsx; begin if This_Player.GetV(78,1) > 0 then begin if This_Player.GetV(78,1) = s1 then begin This_Player.AddPlayerAbil(0, 40,3600); This_Player.AddPlayerAbil(1, 40,3600); This_Player.AddPlayerAbil(2, 40,3600);
This_Player.AddHeroAbil(0,40,3600); //英雄一起增加属性,可以删除 This_Player.AddHeroAbil(1,40,3600); This_Player.AddHeroAbil(2,40,3600); This_Player.PlayerNotice('捐献属性领取成功:全属性增加40,时效1小时',2); This_NPC.NpcNotice('土豪:'+This_Player.Name+'获得元宝贡献榜第一名!'); end else if This_Player.GetV(78,1) = s2 then begin This_Player.AddPlayerAbil(0, 30,3600); This_Player.AddPlayerAbil(1, 30,3600); This_Player.AddPlayerAbil(2, 30,3600);
This_Player.AddHeroAbil(0,30,3600); //英雄一起增加属性,可以删除 This_Player.AddHeroAbil(1,30,3600); This_Player.AddHeroAbil(2,30,3600); This_Player.PlayerNotice('捐献属性领取成功:全属性增加30,时效1小时',2); This_NPC.NpcNotice('土豪:'+This_Player.Name+'获得元宝贡献榜第二名!'); end else if This_Player.GetV(78,1) = s3 then begin This_Player.AddPlayerAbil(0, 20,3600); This_Player.AddPlayerAbil(1, 20,3600); This_Player.AddPlayerAbil(2, 20,3600);
This_Player.AddHeroAbil(0,20,3600); //英雄一起增加属性,可以删除 This_Player.AddHeroAbil(1,20,3600); This_Player.AddHeroAbil(2,20,3600); This_Player.PlayerNotice('捐献属性领取成功:全属性增加20,时效1小时',2); This_NPC.NpcNotice('土豪:'+This_Player.Name+'获得元宝贡献榜第三名!'); end else if This_Player.GetV(78,1) = s4 then begin This_Player.AddPlayerAbil(0, 15,3600); This_Player.AddPlayerAbil(1, 15,3600); This_Player.AddPlayerAbil(2, 15,3600);
This_Player.AddHeroAbil(0,15,3600); //英雄一起增加属性,可以删除 This_Player.AddHeroAbil(1,15,3600); This_Player.AddHeroAbil(2,15,3600); This_Player.PlayerNotice('捐献属性领取成功:全属性增加15,时效1小时',2); This_NPC.NpcNotice('土豪:'+This_Player.Name+'获得元宝贡献榜第四名!'); end else if This_Player.GetV(78,1) = s5 then begin This_Player.AddPlayerAbil(0, 10,3600); This_Player.AddPlayerAbil(1, 10,3600); This_Player.AddPlayerAbil(2, 10,3600);
This_Player.AddHeroAbil(0,10,3600); //英雄一起增加属性,可以删除 This_Player.AddHeroAbil(1,10,3600); This_Player.AddHeroAbil(2,10,3600); This_Player.PlayerNotice('捐献属性领取成功:全属性增加10,时效1小时',2); This_NPC.NpcNotice('土豪:'+This_Player.Name+'获得元宝贡献榜第五名!'); end else if This_Player.GetV(78,1) < s5 then begin This_Player.AddPlayerAbil(0, 5,3600); This_Player.AddPlayerAbil(1, 5,3600); This_Player.AddPlayerAbil(2, 5,3600);
This_Player.AddHeroAbil(0,5,3600); //英雄一起增加属性,可以删除 This_Player.AddHeroAbil(1,5,3600); This_Player.AddHeroAbil(2,5,3600); This_Player.PlayerNotice('捐献属性领取成功:全属性增加5,时效1小时',2); end; end;
end; procedure _jxyb; begin This_NPC.InputDialog(This_Player,'请输入你要买的数额',0,111) ; end;
procedure p111; begin num4 := GetG(78,7); num := StrToIntDef(This_NPC.InputStr,-1);//输入非阿拉伯数字的字符都返回-1 if This_NPC.InputOK then begin if (num < 1) or (num > 65534) then begin This_NPC.NpcDialog(This_Player,'捐献一次至少1元宝,总额不能大于65534,只能使用阿拉伯数字!') ; end else if (num >= 1) and (num1 < 65535) then begin if This_Player.YBNum >= num then begin This_Player.PsYBConsum(This_NPC,'xin',20001,num,1);
This_Player.CallOut(This_NPC,1,'jxyb'); SetG(78,7,num4+num); end else This_NPC.NpcDialog(This_Player,'你没有足够的元宝捐献!' +'{cmd}<返回/@main>') ; end; end; end;
procedure jxyb; begin num := StrToIntDef(This_NPC.InputStr,-1);//输入非阿拉伯数字的字符都返回-1 if This_Player.getV(78,1) < 0 then This_Player.SetV(78,1,0); num1 := This_Player.getV(78,1); num2 :=num + num1; s1 := getg(78,1); s2 := getg(78,2); s3 := getg(78,3); s4 := getg(78,4); s5 := getg(78,5); if num2 > s1 then begin if (num1 < s5) or (num1 = s5) then begin SetG(78,5,s4); SetG(78,4,s3); SetG(78,3,s2); SetG(78,2,s1); SetG(78,1,num2); This_Player.SetV(78,1,num1+num); n5 := n4; n4 := n3; n3 := n2; n2 := n1; n1 := This_Player.Name; This_Player.CallOut(This_NPC,1,'lqsx'); domain; end else if num1 = s4 then begin SetG(78,4,s3); SetG(78,3,s2); SetG(78,2,s1); SetG(78,1,num2); This_Player.SetV(78,1,num1+num); n4 := n3; n3 := n2; n2 := n1; n1 := This_Player.Name; This_Player.CallOut(This_NPC,1,'lqsx'); domain; end else if num1 = s3 then begin SetG(78,3,s2); SetG(78,2,s1); SetG(78,1,num2); This_Player.SetV(78,1,num1+num); n3 := n2; n2 := n1; n1 := This_Player.Name; This_Player.CallOut(This_NPC,1,'lqsx'); domain; end else if num1 = s2 then begin SetG(78,2,s1); SetG(78,1,num2); This_Player.SetV(78,1,num1+num); n2 := n1; n1 := This_Player.Name; This_Player.CallOut(This_NPC,1,'lqsx'); domain; end else if num1 = s1 then begin SetG(78,1,num2); This_Player.SetV(78,1,num1+num); n1 := This_Player.Name; This_Player.CallOut(This_NPC,1,'lqsx'); domain; end;
end else if (s2 < num2) and ((num2< s1) or (num2 = s1)) then begin if (num1 < s5) or (num1 = s5) then begin SetG(78,5,s4); SetG(78,4,s3); SetG(78,3,s2); SetG(78,2,num2); This_Player.SetV(78,1,num1+num); n5 := n4; n4 := n3; n3 := n2; n2 := This_Player.Name; This_Player.CallOut(This_NPC,1,'lqsx'); domain; end else if num1 = s4 then begin SetG(78,4,s3); SetG(78,3,s2); SetG(78,2,num2); This_Player.SetV(78,1,num1+num); n4 := n3; n3 := n2; n2 := This_Player.Name; This_Player.CallOut(This_NPC,1,'lqsx'); domain; end else if num1 = s3 then begin SetG(78,3,s2); SetG(78,2,num2); This_Player.SetV(78,1,num1+num); n3 := n2; n2 := This_Player.Name; This_Player.CallOut(This_NPC,1,'lqsx'); domain; end else if num1 = s2 then begin SetG(78,2,num2); This_Player.SetV(78,1,num1+num); n2 := This_Player.Name; This_Player.CallOut(This_NPC,1,'lqsx'); domain; end; end else if (s3 < num2) and ((num2< s2) or (num2 = s2)) then begin if (num1 < s5) or (num1 = s5) then begin SetG(78,5,s4); SetG(78,4,s3); SetG(78,3,num2); This_Player.SetV(78,1,num1+num); n5 := n4; n4 := n3; n3 := This_Player.Name; This_Player.CallOut(This_NPC,1,'lqsx'); domain; end else if num1 = s4 then begin SetG(78,4,s3); SetG(78,3,num2); This_Player.SetV(78,1,num1+num); n4 := n3; n3 := This_Player.Name; This_Player.CallOut(This_NPC,1,'lqsx'); domain; end else if num1 = s3 then begin SetG(78,3,num2); This_Player.SetV(78,1,num1+num); n3 := This_Player.Name; This_Player.CallOut(This_NPC,1,'lqsx'); domain; end; end else if (s4 < num2) and ((num2< s3) or (num2 = s3)) then begin if (num1 < s5) or (num1 = s5) then begin SetG(78,5,s4); SetG(78,4,num2); This_Player.SetV(78,1,num1+num); n5 := n4; n4 := This_Player.Name; This_Player.CallOut(This_NPC,1,'lqsx'); domain; end else if num1 = s4 then begin SetG(78,4,num2); This_Player.SetV(78,1,num1+num);
n4 := This_Player.Name; This_Player.CallOut(This_NPC,1,'lqsx'); domain; end; end else if (s5 < num2) and ((num2< s4) or (num2 = s5)) then begin SetG(78,5,num2); This_Player.SetV(78,1,num1+num); n5:=This_Player.Name; This_Player.CallOut(This_NPC,1,'lqsx'); domain; end else if num2 < s5 then begin This_Player.SetV(78,1,num1+num); This_Player.CallOut(This_NPC,1,'lqsx'); domain; end; end; function xin(price, num: Integer):boolean; begin result := true; end; { procedure Execute; begin if (GetHour = 0) and (GetMin < 1) then begin This_Player.SetV(78,1,0); SetG(78,1,0); SetG(78,2,0); SetG(78,3,0); SetG(78,4,0); SetG(78,5,0); SetG(78,7,0); end; end; } begin if GetG(78,7) < 0 then begin SetG(78,7,0); end;
domain; end. |