-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmasterquest.mod
More file actions
1004 lines (918 loc) · 25.5 KB
/
masterquest.mod
File metadata and controls
1004 lines (918 loc) · 25.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
masterquest={}
mqfar={}
mqkill={}
masterquest["ok"]=nil
masterquest["fail"]=nil
mqcount="0"
mqquests=0
mqstarttime=0
mqquestperh=0
mqletter={}
mqletterflee=false
initmqletter=function()
mqletter.city=""
mqletter.npc=""
mqletter.arrive=0
end
masterquest.normal=0
masterquest.assistor=1
masterquest.assister=2
masterquest.levelmax=0
assist={}
assist["er"]=""
assist["erid"]=""
assist["or"]=""
assist["orid"]=""
assist["loc"]=0
masterquest.type=masterquest.normal
initmq=function()
DeleteTimer("lettertimeout")
masterquest["npc"]=""
masterquest["npcid"]=nil
masterquest["city"]=""
masterquest.far=false
masterquest.flee=false
masterquest.die=false
masterquest.assistwait=false
masterquest.assistneedreport=false
mqfar.index=1
masterquest.waitletter=false
mqfar.max=0
npc.id=nil
mqkill["searchcount"]=0
mqkill["city"]=""
mqkill["searchmax"]=3
initmqletter()
if masterquest.type~=masterquest.assister then
masterquest.firstsearch=true
else
masterquest.firstsearch=false
end
masterquest.fleesearch=false
end
initmq()
masterquest.setuptri=function()
EnableTriggerGroup("masterquest",true)
if masterquest.type==masterquest.assister then
EnableTrigger("mqassistnpc",true)
EnableTriggerGroup("mqassist",true)
elseif masterquest.type==masterquest.assistor then
EnableTrigger("mqassistok",true)
EnableTriggerGroup("mqassist",true)
end
if masterquest.type==masterquest.normal then
hook(hooks.accept,masterquest.acceptcheck)
end
if mudvar.dragon=="kill" or mudvar.dragon=="find" then
hook(hooks.dragon,masterquest.dragoncheck)
end
end
do_masterquest=function(masterquest_ok,masterquest_fail,levelmax)
masterquest["ok"]=masterquest_ok
masterquest["fail"]=masterquest_fail
masterquest.levelmax=getnum(levelmax)
setmqmastertri()
masterquest.setuptri()
hook(hooks.faint,mqfaintrecon)
initmq()
masterquest.main()
end
masterquest.loop=function()
if _skilllist~=nil then
busytest(masterquest.loopcmd)
else
quest.stop=true
masterquest["end"]()
busytest(aliasaftercmd)
end
end
masterquest.resume=function()
hook(hooks.faint,mqfaintrecon)
masterquest.setuptri()
busytest(masterquest.main)
end
masterquest.loopcmd=function()
do_masterquest(masterquest.loop,masterquest.loop,masterquest.levelmax)
end
masterquest.main=function()
getstatus(masterquest["check"])
end
masterquest.check=function()
if do_check(masterquest["main"],masterquest.loop) then
elseif checkfangqi(masterquest["main"],masterquest["main"]) then
elseif checkjiqu(masterquest["main"],masterquest["main"]) then
elseif checknuqi(masterquest["main"],masterquest["main"]) then
elseif quest.stop and masterquest.die==true then
masterquest["end"]()
return
else
busytest(masterquest.case)
end
end
masterquest.go=function(mqnpc,mqcity,mqflee)
initmq()
masterquest["npc"]=mqnpc
masterquest["city"]=mqcity
if mqflee==true then
masterquest["flee"]=true
end
busytest(masterquest.main)
end
mq=masterquest.go
masterquest.askquest=function()
if masterquest.type~=masterquest.assister then
go(familys[me.fam].masterloc,masterquest.arrive,masterquest_end_fail)
else
go(kdloc,mqassistgivecmd,mqassistgivecmd)
end
end
masterquest.arrive=function()
busytest(masterquest.questgive)
end
masterquest.questgive=function()
initmq()
run("give head to "..familys[me.fam].masterid..";quest cancel;mastercmd")
busytest(masterquest.testask)
end
masterquest.testask=function()
if checkmasterweapon(masterquest.questgo,masterquest.questgo) then
else
masterquest.questcmd()
end
end
masterquest.questgo=function()
go(familys[me.fam].masterloc,masterquest.questcmd,masterquest_end_fail)
end
masterquest.questcmd=function()
trigrpon("mqinfo")
npchere(familys[me.fam].masterid,"quest "..familys[me.fam].masterid)
trigrpoff("mqinfo")
trigrpoff("mqinfo2")
infoend(masterquest.questok)
end
masterquest.questok=function()
mqletterflee=false
if masterquest.npc~="" and masterquest.npc~=nil then
run("drop head")
busytest(masterquest.main)
else
masterquest_end_fail()
end
end
masterquest.case=function()
if masterquest.die==false and masterquest.npc~="" and masterquest.assistwait==false then
if masterquest.far==true then
busytest(mqfar.main)
elseif masterquest.flee==true then
do_mqask(masterquest.maincmd,masterquest.findfar)
else
do_mqkill(masterquest["city"],3,masterquest_end_ok,masterquest.asknpc)
end
elseif checkstudy(masterquest["main"],masterquest.loop,masterquest.levelmax) then
elseif masterquest.assistneedreport==true then
if masterquest.type==masterquest.assistor then
mqassistorreport()
else
mqassisterreport()
end
delay(1,masterquest["main"])
elseif masterquest.assistwait==true then
go(kdloc,mqassistwait,mqassistwait)
elseif masterquest.type==masterquest.assister and masterquest.die==false then
masterquest.assistwait=true
busytest(masterquest.main)
else
masterquest.askquest()
end
end
masterquest.maincmd=function()
busytest(masterquest.main)
end
masterquest.asknpc=function()
partyhelp(masterquest.npc)
do_mqask(masterquest.maincmd,masterquest.askyou)
end
masterquest.askyou=function()
if masterquest["npcid"]==nil or masterquest["npcid"]=="" then
masterquest["npcid"]=getcnname(npc.name)
end
if masterquest["npcid"]==nil then
masterquest.findfar()
return
end
do_askyou(masterquest["npcid"],masterquest.findfar,masterquest.givehead)
end
masterquest.killnpc=function()
do_mqkill(masterquest["city"],3,masterquest_end_ok,masterquest.asknpc)
end
masterquest.findfar=function()
partyhelp(masterquest.npc)
print("未得到npc信息,开始全地图通缉")
mqfar.new()
do_mqfar(masterquest.main,masterquest.main)
end
masterquest["end"]=function(s)
if ((s~="")and(s~=nil)) then
call(masterquest[s])
end
hook(hooks.faint,nil)
EnableTriggerGroup("masterquestkill",false)
EnableTriggerGroup("masterquest",false)
EnableTriggerGroup("mqassist",false)
EnableTrigger("mqassistnpc",false)
EnableTrigger("mqassistok",false)
DeleteTimer("lettertimeout")
masterquest["ok"]=nil
masterquest["fail"]=nil
EnableTimer("keepidle",false)
end
masterquest_end_ok=function()
if quest.stop and masterquest.die==true then
masterquest["end"]()
else
masterquest["end"]("ok")
end
end
masterquest_end_fail=function()
masterquest["end"]("fail")
end
mqinfo=function(n,l,w)
masterquest["npc"]=w[2]
partyhelp(w[2])
masterquest["city"]=UTF8Sub(w[4],0,2)
EnableTriggerGroup("mqinfo2",true)
end
masterflee=function()
masterquest.flee=true
end
setmqmastertri=function()
SetTriggerOption ("mqinfo", "match", "^(> )*"..familys[me.fam].mastername.."对你道:“我早就看(.*)不顺眼,听说(他|她)最近在(.*),你去做了他,带他的人头来交差!”")
SetTriggerOption ("mqinfo1", "match", "^(> )*"..familys[me.fam].mastername.."对你道:“(.*)(这个败类打家劫舍,无恶不作,听说他最近在|这个所谓大侠屡次和我派作对,听说他最近在)(.*)")
SetTriggerOption ("masterflee", "match", "^(> )*"..familys[me.fam].mastername.."话音刚落,突然一人急急忙忙的赶了过来")
SetTriggerOption ("mqletterquest", "match", "^(> )*"..familys[me.fam].mastername.."吩咐你在(.*)之前割下(.*)的人头,回(.*)交差。\\n据说此人前不久曾经在(.*)出没。")
if helpfindid==nil then helpfindid="" end
SetTriggerOption ("mqinfo", "on_partyfind", "^(> )*【(明教|天地会)】.{2,8}\\[.*\\]:helllua.find-(|"..helpfindid..")-(.*)-(.*)-(.*)")
end
masterquest.givehead=function()
masterquest.waitletter=false
masterquest.die=true
if masterquest.type~=masterquest.assister then
go(familys[me.fam].masterloc,masterquest.giveheadcmd,masterquest_end_fail)
else
go(kdloc,mqassistgivecmd,mqassistgivecmd)
end
end
masterquest.giveheadcmd=function()
run("give head to "..familys[me.fam].masterid..";drop head;quest cancel;mastercmd")
busytest(masterquest.main)
end
--------------------------------
mqfar["ok"]=nil
mqfar["fail"]=nil
mqfar.max=0
mqfar.index=1
do_mqfar=function(mqfar_ok,mqfar_fail)
mqfar["ok"]=mqfar_ok
mqfar["fail"]=mqfar_fail
mqfar.main()
end
mqfar.new=function()
masterquest.far=true
mqfar.max=#farlist
if getnum(me.hp.exp)<400000 then
mqfar.max=mqfar.max-3
elseif getnum(me.hp.exp)<700000 then
mqfar.max=mqfar.max-2
end
mqfar.index=1
end
mqfar.askyoucity={}
mqfar.askyoucity["西域"]=true
mqfar.main=function()
if mqfar.index>mqfar.max then
initmq()
busytest(mqfar_end_fail)
else
print("全图通缉----"..farlist[mqfar.index])
masterquest.city=farlist[mqfar.index]
if mqfar.askyoucity[masterquest.city]==true then
if masterquest["npcid"]==nil or masterquest["npcid"]=="" then
masterquest["npcid"]=getcnname(npc.name)
end
if masterquest["npcid"]==nil then
mqfar.searchcmd()
return
end
do_askyou(masterquest["npcid"],mqfar.searchcmd,masterquest.givehead)
else
mqfar.searchcmd()
end
end
end
mqfar.searchcmd=function()
do_mqkill(farlist[mqfar.index],3,mqfar.ok,mqfar.searchend)
end
mqfar.searchend=function()
print(farlist[mqfar.index].."搜索完毕,去下一个城市")
mqfar.index=mqfar.index+1
busytest(masterquest.main)
end
mqfar["end"]=function(s)
if ((s~="")and(s~=nil)) then
call(mqfar[s])
end
mqfar["ok"]=nil
mqfar["fail"]=nil
end
mqfar_end_ok=function()
mqfar["end"]("ok")
end
mqfar_end_fail=function()
mqfar["end"]("fail")
end
------------------------------------
mqask={}
mqask["ok"]=nil
mqask["fail"]=nil
do_mqask=function(mqask_ok,mqask_fail)
mqask["ok"]=mqask_ok
mqask["fail"]=mqask_fail
mqask.info=""
do_askinfolist(masterquest["npc"],city[masterquest["city"]].info,mqask.settri,mq_asktest,mqask_end_ok,mqask_end_fail)
end
mqask.settri=function(str)
SetTriggerOption ("mq_asknpc", "match", "^(> )*"..str.."说道:.*(好像听人说过是在|他不是在|据说是躲到|好像去了|已经躲到|好像是去了|但是也有人说他在|有人说在|不过听人说在|听说是在|不过听说他好像在|现在应该是去了)(.*)")
end
mq_asknpc=function(n,l,w)
mqask.info=UTF8Sub(w[3],0,2)
end
mq_asktest=function(n,l,w)
if mqask.info~="" then
masterquest.flee=false
masterquest["city"]=mqask.info
masterquest.flee=false
if masterquest["city"]~="很远" then
masterquest.fleesearch=true
askinfolist_end_ok()
else
askinfolist["end"]()
mqask["end"]()
busytest(masterquest.findfar)
end
else
askinfolist.askcmd()
end
end
mqask["end"]=function(s)
if ((s~="")and(s~=nil)) then
call(mqask[s])
end
mqask["ok"]=nil
mqask["fail"]=nil
end
mqask_end_ok=function()
mqask["end"]("ok")
end
mqask_end_fail=function()
partyhelp(masterquest.npc)
mqask["end"]("fail")
end
----------------------------------
mqkill["ok"]=nil
mqkill["fail"]=nil
do_mqkill=function(mqkcity,mqkmax,mqkill_ok,mqkill_fail)
mqkill["ok"]=mqkill_ok
mqkill["fail"]=mqkill_fail
mqkill["city"]=mqkcity
mqkill["searchmax"]=mqkmax
mqkill["searchcount"]=1
hook(hooks.killme,mqkill.onkillme)
npc.name=masterquest.npc
setmqkilltri()
mqkill.main()
end
mqkill["end"]=function(s)
if ((s~="")and(s~=nil)) then
call(mqkill[s])
end
hook(hooks.killme,nil)
EnableTriggerGroup("masterquestkill",false)
EnableTriggerGroup("mqassistor",false)
mqkill["ok"]=nil
mqkill["fail"]=nil
end
mqkill_end_ok=function()
mqkill["end"]("ok")
end
mqkill_end_fail=function()
print("敌人狡猾狡猾滴,没找到")
mqkill["end"]("fail")
end
mqkill.main=function()
if masterquest.die==true then
busytest(mqkill.questend)
elseif mqkill["searchmax"]<mqkill["searchcount"] then
mqkill_end_fail()
else
mqkill["searchcount"]=mqkill["searchcount"]+1
eatdrink()
busytest(mqkill.search)
end
end
mqkill.search=function()
print(mqkill["city"])
partyhelp(masterquest.npc)
if masterquest.fleesearch==true then
masterquest.fleesearch=false
masterquest.firstsearch=false
if city[mqkill["city"]].path2~=nil then
do_npcinpath(city[mqkill["city"]].path2,mqkill.npcfind,mqkill.main)
return
end
elseif masterquest.firstsearch==true then
masterquest.firstsearch=false
if city[mqkill["city"]].path1~=nil then
do_npcinpath(city[mqkill["city"]].path1,mqkill.npcfind,mqkill.main)
return
end
end
do_npcinpath(city[mqkill["city"]].path,mqkill.npcfind,mqkill.main)
end
mqkill.search2=function()
print("search2")
do_searchnpc(mqkill.npcfind,mqkill.search2fail)
end
mqkill.search2fail=function()
busytest(mqkill.search)
end
mqkill.npcfind=function()
mqkill["searchcount"]=1
masterquest.city=mqkill["city"]
masterquest.far=false
EnableTriggerGroup("masterquestkill",true)
if npc.id~=nil then
masterquest["npcid"]=npc.id
end
if masterquest["npcid"]==nil or masterquest["npcid"]=="" then
masterquest["npcid"]=getcnname(npc.name)
end
if masterquest["npcid"]==nil then masterquest["npcid"]="" end
do_kill(masterquest["npcid"],mqkill.heal,mqkill.search2)
assist["loc"]=_roomid
if masterquest.type==masterquest.assistor then
SetTriggerOption ("mqassistkill", "match", "^(> )*你对著"..masterquest.npc.."喝道:")
EnableTriggerGroup("mqassistkill",true)
end
end
mqassistkill=function()
masterquest.assistwait=true
EnableTriggerGroup("mqassistkill",false)
masterquest.assistneedreport=true
hook(hooks.logok,mqassistlogok)
recon()
end
mqassistlogok=function()
unhookall()
mqassistorreport()
go(safeloc,masterquest.resume,masterquest.resume)
end
mqkill.heal=function()
EnableTriggerGroup("mqhelper",false)
hp()
busytest(mqkill.healcmd)
end
mqkill.healcmd=function()
if checkdispel(mqkill.heal,mqkill.heal) then
elseif masterquest.flee==true and (me.hp["qixue%"]<getvbquemin()) then
do_heal(mqkill.heal,mqkill.heal,true)
else
busytest(mqkill.killend)
end
end
mqkill.killend=function()
if masterquest.die==true then
mqkill.questend()
else
jianuzero()
masterquest.flee=true
mqkill["end"]()
masterquest.main()
end
end
mqkill.questend=function()
masterquest.waitletter=true
if letteraccept()==true then
if mqletter.arrive==1 then
mqlookletter()
else
killcmd()
end
else
masterquest.givehead()
end
end
mqkill.testyou=function()
end
mqkill.npckillme=function()
if _roomid~=killmeloc then
go(npc.loc,mqkill.npcfind,mqkill.main)
else
mq.npcfind()
end
steppath["end"]()
npcinpath["end"]()
end
jianuzero=function()
if tonumber(GetVariable("nuqimin")) >0 then
run("jianu 0")
end
end
masterquest_npcfaint=function()
masterquest.die=true
run("get silver from "..masterquest["npcid"])
run("faintcmd "..masterquest.npcid)
jianuzero()
weapon(2)
end
masterquest_npcdie=function()
masterquest.die=true
meforce=me.skills.force
if meforce==nil then
meforce=0
else
meforce=meforce.lv
end
if meforce>100 then
weapon(0)
end
AddTimer("lettertimeout",0,0,30,"",17445,"mqlettertimeout")
run("cutheadcmd "..masterquest.npcid)
run("cut head from corpse;get head")
mqquests=mqquests+1
mqlasttime=os.time()-mqstarttime
if mqlasttime>0 and mqstarttime~=0 then
mqquestperh=math.floor(mqquests*3600/mqlasttime)
print("平均每小时Quest数:"..tostring(mqquestperh))
end
mqcount="0"
catch("mqquestnum","quest")
end
setmqkilltri=function()
SetTriggerOption ("masterquest_npcfaint", "match", "^(> )*"..masterquest["npc"].."脚下一个不稳,跌在地上一动也不动了。")
SetTriggerOption ("masterquest_npcdie", "match", "^(> )*"..masterquest["npc"].."扑在地上挣扎了几下,腿一伸,口中喷出几口鲜血,死了!")
SetTriggerOption ("mqhelper1", "match", "^(> )*"..masterquest["npc"].."(大声喝道:“好一个|忽然撮舌吹哨,你听了不禁微微一愣。|一声长啸,声音绵泊不绝,远远的传了开去。)")
end
-------------------------------------
letteraccept=function()
tpath,tdelay=mapper.getpath(_roomid,familys[me.fam].masterloc,1)
print(tdelay)
local potmax=getnum(tonumber(GetVariable("potmax")))
if masterquest.type~=masterquest.normal then
print('type')
elseif mqletter.arrive ==2 then
print('arrive')
elseif giftquest[mqcount] ==true then
print('giftquest')
elseif quest.stop==true then
print('stop')
elseif tdelay>-1 and tdelay<=acceptmaxstep then
print('delay',tdelay,acceptmaxstep)
elseif potmax>0 and me.hp.pot>potmax then
print('pot')
elseif needaskmasterweapon() then
print('askweapon')
elseif _skilllist==nil then
print('skilllist')
else
return true
end
return false
end
mqletterattive=function(n,l,w)
DeleteTimer("lettertimeout")
mqletter.arrive=1
if masterquest.waitletter and letteraccept()==true then
run("halt")
mqlookletter()
end
end
mqlookletter=function()
masterquest.waitletter=false
initmqletter()
catch("mqletter","l letter")
infoend(mqletterlooked)
end
mqlettercontent=function(n,l,w)
mqletter.city=w[6]..w[7]
end
mqletterlooked=function()
if string.find(mqletter.city,"西域",1,true)==nil and string.find(mqletter.city,"大理",1,true)==nil then
catch("mqletterquest","accept quest;quest;drop head")
else
busytest(masterquest.givehead)
end
end
mqletterquest=function(n,l,w)
if masterquest.npc==w[3] then
busytest(masterquest.givehead)
else
initmq()
initmqletter()
masterquest.npc=w[3]
partyhelp(w[3])
masterquest.city=UTF8Sub(w[5],0,2)
masterquest.flee=mqletterflee
mqletterflee=false
masterquest.questok()
end
end
mqquestnum=function(n,l,w)
mqcount=w[1]
end
mqlettertimeout=function(n,l,w)
DeleteTimer("lettertimeout")
mqletter.arrive=2
if masterquest.waitletter==true then
print("等信超时")
run("halt")
busytest(masterquest.givehead)
end
end
letterflee=function(n,l,w)
mqletterflee=true
end
----------------------------
mqhelploc=0
mqhelperrecon=function()
mqhelploc=_roomid
hook(hooks.logok,mqhelperlogok)
recon()
end
mqfaintrecon=function()
hook(hooks.logok,mqfaintlogok)
recon()
end
mqfaintlogok=function()
unhookall()
print("前往安全场所")
go(safeloc,resume,resume)
end
mqhelper1=function(n,l,w)
EnableTriggerGroup("mqhelper",true)
end
mqhelper=function(n,l,w)
EnableTriggerGroup("mqhelper",false)
mqhelperrecon()
end
mqkill.onkillme=function(npcname)
if npcname~=masterquest.npc then
if hashook(hooks.fight)==true then
mqhelperrecon()
else
run("halt")
end
end
end
mqhelperlogok=function()
unhookall()
_roomid=mqhelploc
busytest(mqkill.reconkill)
end
mqkill.reconkill=function()
mqkill["searchcount"]=1
masterquest.city=mqkill["city"]
masterquest.setuptri()
if npc.id~=nil then
masterquest["npcid"]=npc.id
end
if masterquest["npcid"]==nil or masterquest["npcid"]=="" then
masterquest["npcid"]=getcnname(npc.name)
end
if masterquest["npcid"]==nil then masterquest["npcid"]="" end
do_kill(masterquest["npcid"],mqkill.heal,masterquest.main)
end
---------------------
helpfindnpc={}
partyhelp=function(name)
Broadcast("help "..GetVariable("id").." "..name)
end
on_bc_partyhelp=function(id,name)
helpfindnpc[id]={}
helpfindnpc[id].name=name
end
on_partyhelp=function(n,l,w)
if w[4]~="" and w[4]~=helpfindid then
return
end
if blacklist[w3]==true then
return
end
if w[4]==helpfiindid then
w[5]=decrypt(w[5],helpfindpassword)
end
helpfindnpc[w[3]]={}
helpfindnpc[w[3]].name=w[5]
if w[4]=="" then
helpfindnpc[w[3]].encrypt=false
else
helpfindnpc[w[3]].encrypt=true
end
end
helpfindnpcfound=function(finder,loc,city,npcid)
if loc-0<0 then return end
if helpfindnpc[finder]==nil then return end
loc=tostring(loc)
local id=""
--run("party helllua.find-"..id.."-"..helpfindnpc[finder].name.."-"..loc.."-"..city)
Broadcast("found "..GetVariable("id").." "..finder.." "..helpfindnpc[finder].name.." "..loc.." "..city.." "..npcid)
helpfindnpc[finder]=nil
end
on_bc_partyfind=function(id,finder,name,loc,cityname,npcid)
helpfindnpc[finder]=nil
if id==GetVariable("id") then
return
end
if name~=masterquest.npc then return end
if masterquest.assistwait==true then return end
if city[cityname]==nil then return end
local loc=tonumber(loc)
if loc==nil then return end
if loc<0 then return end
print("感谢队友",id,"提供线索 ",name,"@",loc,"|",cityname,"-")
WriteLog("感谢队友提供线索",id,"-",name)
masterquest.fleesearch=false
masterquest.firstsearch=false
masterquest.city=cityname
masterquest.far=false
masterquest.flee=false
masterquest.npcid=npcid
mqkill.city=cityname
mqkill["searchcount"]=1
if walking==nil then
return
end
go(loc,mqkill.npcfind,masterquest.main)
end
on_partyfind=function(n,l,w)
if w[4]~="" then
if w[4]~=helpfindid then return end
w[5]=decrypt(w[5],helpfindpassword)
w[6]=decrypt(w[6],helpfindpassword)
w[7]=decrypt(w[7],helpfindpassword)
end
if w[5]~=masterquest.npc or masterquest.far==false then return end
if masterquest.assistwait==true then return end
if city[w[7]]==nil then return end
-- if city[w[7]]==masterquest.city then return end
local loc=tonumber(w[6])
if loc==nil then return end
if loc<0 then return end
masterquest.fleesearch=false
masterquest.firstsearch=false
masterquest.city=w[7]
masterquest.far=false
masterquest.flee=false
mqkill.city=w[7]
mqkill["searchcount"]=1
print("接到线报。")
go(loc,mqkill.npcfind,masterquest.main)
end
-----------------------
killcmd=function()
kill_cmd=GetVariable("killcmd")
if kill_cmd~=nil then
run(kill_cmd)
end
end
------------------
mqassistorcmd=function()
EnableTrigger("mqassister",true)
masterquest.type=masterquest.assistor
end
mqassistercmd=function(str)
masterquest.type=masterquest.assister
EnableTrigger("mqassistor",true)
assist["orid"]=str
run("assist none;assist "..str)
initmq()
end
mqassister=function(n,l,w)
if mudvar.canaccept~=nil then
if mudvar.canaccept[w[4]]~=nil then
assist["er"]=w[2]
assist["erid"]=w[4]
run("right "..w[4]..";team dismiss")
EnableTrigger("mqassister",false)
EnableTrigger("mqassistok",true)
SetTriggerOption("mqassistok","match","^(> )*"..assist["er"].."\\("..string.upper(string.sub(assist["erid"],1,1))..string.sub(assist["erid"],2,#assist["erid"]).."\\)告诉你:npckillok")
SetTriggerOption("mqassistreport","match","^(> )*你告诉"..assist["er"].."\\("..string.upper(string.sub(assist["erid"],1,1))..string.sub(assist["erid"],2,#assist["erid"]).."\\)")
initmq()
do_masterquest(masterquest.loop,masterquest.loop)
return
end
end
print("不支持的协助者,请把协助者设置在can_accpet里,比如set can_accept bao")
end
mqassistor=function(n,l,w)
assist["or"]=w[2]
SetTriggerOption("mqassistnpc","match","^(> )*"..assist["or"].."\\("..string.upper(string.sub(assist["orid"],1,1))..string.sub(assist["orid"],2,#assist["orid"]).."\\)告诉你:npckill\\.(.*)\\.(.*)\\.(.*)\\.(.*)")
SetTriggerOption("mqassistreport","match","^(> )*你告诉"..assist["or"].."\\("..string.upper(string.sub(assist["orid"],1,1))..string.sub(assist["orid"],2,#assist["orid"]).."\\)")
do_masterquest(masterquest.loop,masterquest.loop)
end
mqassistnpc=function(n,l,w)
print(w[2])
print(w[3])
print(w[4])
print(w[5])
masterquest.assistneedreport=false
npc.name=w[2]
masterquest.npc=w[2]
masterquest.npcid=w[3]
npc.id=w[3]
mqkill["city"]=w[5]
masterquest.city=w[5]
local _loc=tonumber(w[4])
if _loc==nil then _loc=-1 end
mqkill["searchmax"]=3
mqkill["searchcount"]=1
hook(hooks.killme,mqkill.onkillme)
setmqkilltri()
EnableTimer("keepidle",false)
if masterquest.assistwait==true then
print("123")
masterquest.assistwait=false
if _loc<0 then
masterquest.main()
else
go(_loc,mqkill.npcfind,masterquest.main)
end
end
end
mqassistok=function(n,l,w)
masterquest.assistneedreport=false
masterquest.assistwait=false
EnableTimer("keepidle",false)
masterquest.die=true
masterquest.flee=false
masterquest.far=false
busytest(masterquest.main)
end
mqassistreport=function(n,l,w)
masterquest.assistneedreport=false
end
mqassistorreport=function()
run("tell "..assist["erid"].." npckill."..masterquest.npc.."."..masterquest.npcid.."."..tostring(assist.loc).."."..masterquest["city"])
end
mqassisterreport=function()
run("tell "..assist["orid"].." npckillok")
end
keepidle=function()
run("keepidle")
end
mqassistwait=function()
AddTimer("keepidle",0,2,0,"",17441,"keepidle")
end
mqassistgivecmd=function()
npchere(assist["orid"],"give head to "..assist["orid"])
busytest(mqassisttestgive)
end
mqassisttestgive=function()
if npc.nobody>0 then
delay(1,masterquest.main)
else
masterquest.assistneedreport=true
initmq()
mqassisterreport()
masterquest.main()
end
end
--------------------------
masterquest.stopable=function()
if study.skill~=nil then
if study.skill.study=="closed" then
return false
end
end
return true
end
masterquest.acceptcheck=function()
if masterquest.stopable()==true and posioned==false then
quest.resume=accept.resume
stopall()
run("halt")
do_accept(masterquest.restore,masterquest.restore)
end
end
masterquest.dragoncheck=function(name)
if masterquest.stopable()==true then
quest.resume=dragon.resume
stopall()
run("halt")
do_dragon(name,masterquest.restore,masterquest.restore)
end
end
masterquest.restore=function()