-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathl4d2_UnitedRPGn.sp
16501 lines (15182 loc) · 582 KB
/
l4d2_UnitedRPGn.sp
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
#pragma semicolon 1
#include <sourcemod>
#include <sdktools>
#include <colors>
#include <adminmenu>
//#include <l4d2_InfectedSpawnApi>
#define PLUGIN_VERSION "2.5"
public Plugin:myinfo=
{
name = "玩家统计",
author = "zonde306",
description = "none",
version = "1.0",
url = ""
};
#define ENABLE_SQL false // 是否使用数据库的方式来存档
#define TEAM_SPECTATORS 1
#define TEAM_SURVIVORS 2
#define TEAM_INFECTED 3
#define CVAR_FLAGS FCVAR_PLUGIN|FCVAR_NOTIFY
#define COMMAND_FILTER COMMAND_FILTER_CONNECTED|COMMAND_FILTER_NO_BOTS
#define IsValidClient(%1) (1 <= %1 <= MaxClients && IsClientInGame(%1))
#define IsValidAliveClient(%1) (1 <= %1 <= MaxClients && IsClientInGame(%1) && IsPlayerAlive(%1))
/* Annonce */
#define MSG_VERSION "{olive}插件版本版本 {green}%s"
#define MSG_PlayerInfo "{lightgreen}你当前等级:{green} Lv.%d, {lightgreen}金钱:{green} $%d\n{lightgreen}力量: {green}%d, {lightgreen}敏捷: {green}%d, {lightgreen}生命: {green}%d, {lightgreen}耐力: {green}%d, {lightgreen}智力: {green}%d"
#define MSG_LEVEL_UP_1 "{green}[升级] {lightgreen}你现在的等级是{green}Lv.%d{lightgreen}你获得了{green}%d属性点{lightgreen}, {green}%d技能点{lightgreen}和{green}$%d"
#define MSG_LEVEL_UP_2 "{green}[升级] {lightgreen}输入{olive}!rpg{lightgreen}打开{olive}RPG{lightgreen}主选单增加你的属性/学习技能等"
#define MSG_WELCOME1 "{blue}欢迎{green}%N{blue}进入United RPG Server"
#define MSG_WELCOME2 "{blue}重要指令:!rpg/[小键盘+制] - 打开RPG主选单"
#define MSG_WELCOME3 "{blue}!jointeam1: {green}加入观察者阵营"
#define MSG_WELCOME4 "{blue}!jointeam2: {green}加入幸存者阵营{olive}, {blue}!jointeam3: {green}加入特殊感染者阵营"
/* Admin Gives */
#define MSG_ADMIN_GIVE_LV "{teamcolor}管理员给予 {olive}%s {teamcolor}等级 {green}%d"
#define MSG_ADMIN_GIVE_EXP "{teamcolor}管理员给予 {olive}%s {green}%d {teamcolor}EXP"
#define MSG_ADMIN_GIVE_CASH "{teamcolor}管理员给予 {olive}%s {teamcolor}金钱 {green}$%d"
#define MSG_ADMIN_GIVE_KT "{teamcolor}管理员给予 {olive}%s {teamcolor}大过 {green}%d"
/* Bind */
#define MSG_BIND_1 "\x03 快捷键已绑定完毕! 详细说明如下:"
#define MSG_BIND_2 "\x04小键盘+\x05:RPG主选单 \x04小键盘-\x05:购物选单 \x04小键盘*\x05:技能选单 \x04小键盘/\x05:队伍资讯"
#define MSG_BIND_3 "\x03═══════════\x04技能\x03═══════════"
#define MSG_BIND_GENERAL "\x04小键盘4\x05:治疗术 \x04小键盘5\x05:暂无 \x04小键盘6\x05:召唤术 \x04小键盘ENTER\x05:超级特感术"
#define MSG_BIND_JOB1 "\x04小键盘7\x05:子弹制造术 \x04小键盘8\x05:卫星炮术"
#define MSG_BIND_JOB2 "\x04小键盘7\x05:加速冲刺术 \x04小键盘8\x05:无限子弹术"
#define MSG_BIND_JOB3 "\x04小键盘7\x05:无敌术 \x04小键盘8\x05:反伤术 \x04小键盘9\x05:近战嗜血术"
#define MSG_BIND_JOB4 "\x04小键盘7\x05:选择传送术 \x04小键盘8\x05:目标传送术 \x04小键盘9\x05:心灵传送术"
#define MSG_BIND_JOB4_1 "\x04小键盘1\x05:治疗光球术"
#define MSG_BIND_JOB5 "\x04小键盘7\x05:火球术 \x04小键盘8\x05:冰球术 \x04小键盘9\x05:连锁闪电术"
/* Infected Exp */
#define MSG_SPITTER_SPIT "{olive}Spitter {lightgreen} 酸液攻击 {olive}幸存者 {green}%d{lightgreen} 次获得 {green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_ANY_SI_ATTACK_SURVIVOR "{lightgreen}持续攻击 {olive}幸存者 {green}%d{lightgreen} 次获得 {green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_SMOKER_GRABBED "{olive}Smoker {lightgreen}拉住 {olive}幸存者 {lightgreen}获得 {green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_HUNTER_POUNCED "{olive}Hunter {lightgreen}突袭 {olive}幸存者 {lightgreen}, 给予了{green}%d{lightgreen}基础伤害, 获得 {green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_BOOMER_VOMIT "{olive}Boomer {lightgreen}呕吐物击中 {olive}幸存者 {lightgreen}获得 {green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_CHARGER_GRABBED "{olive}Charger {lightgreen}抓住 {olive}幸存者 {lightgreen}获得 {green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_CHARGER_IMPACT "{olive}Charger {lightgreen}撞开其他 {olive}幸存者 {lightgreen}获得 {green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_JOCKEY_RIDE "{olive}Jockey {lightgreen}骑中 {olive}幸存者 {lightgreen}获得 {green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_TANK_CLAW "{olive}Tank {lightgreen}爪击 {olive}幸存者 {lightgreen}获得 {green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_TANK_ROCK "{olive}Tank {lightgreen}投石击中 {olive}幸存者 {lightgreen}获得 {green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_EXP_SURVIVOR_INCAPACITATED "{lightgreen}成功制服 {olive}幸存者 {lightgreen}获得 {green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_EXP_SURVIVOR_KILLED "{lightgreen}成功杀死 {olive}幸存者 {lightgreen}获得 {green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_EXP_INFECTED_GOT_KILLED "{lightgreen}给 {olive}幸存者 {lightgreen}击杀扣除{green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_ANY_IS_ATTACK_SURVIVOR "{lightgreen}你召唤的尸持续攻击 {olive}幸存者 {green}%d次{lightgreen}获得 {green}%d{olive}EXP, {green}%d{olive}$"
/* Survivor Exp */
#define MSG_EXP_KILL_WITCH "{lightgreen}击杀 {olive}Witch{lightgreen} 获得 {green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_EXP_KILL_SMOKER "{lightgreen}击杀 {olive}Smoker{lightgreen} 获得 {green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_EXP_KILL_BOOMER "{lightgreen}击杀 {olive}Boomer{lightgreen} 获得 {green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_EXP_KILL_HUNTER "{lightgreen}击杀 {olive}Hunter{lightgreen} 获得 {green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_EXP_KILL_SPITTER "{lightgreen}击杀 {olive}Spitter{lightgreen} 获得 {green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_EXP_KILL_JOCKEY "{lightgreen}击杀 {olive}Jockey{lightgreen} 获得 {green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_EXP_KILL_CHARGER "{lightgreen}击杀 {olive}Charger{lightgreen} 获得 {green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_EXP_KILL_SI_SMOKER "{lightgreen}击杀 {olive}超级Smoker{lightgreen} 获得 {green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_EXP_KILL_SI_BOOMER "{lightgreen}击杀 {olive}超级Boomer{lightgreen} 获得 {green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_EXP_KILL_SI_HUNTER "{lightgreen}击杀 {olive}超级Hunter{lightgreen} 获得 {green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_EXP_KILL_SI_SPITTER "{lightgreen}击杀 {olive}超级Spitter{lightgreen} 获得 {green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_EXP_KILL_SI_JOCKEY "{lightgreen}击杀 {olive}超级Jockey{lightgreen} 获得 {green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_EXP_KILL_SI_CHARGER "{lightgreen}击杀 {olive}超级Charger{lightgreen} 获得 {green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_EXP_FRUSTRATED_TANK "{olive}Tank转手了! {lightgreen}你给予{olive}Tank {green}%d{lightgreen}伤害, 获得 {green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_EXP_KILL_TANK "{olive}Tank死亡了! {lightgreen}你给予{olive}Tank {green}%d{lightgreen}伤害, 获得 {green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_EXP_KILL_TANK_ALL "{lightgreen}由於你在这场与 {olive}Tank{lightgreen} 的搏斗中得以幸存奖励 {green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_EXP_KILL_ZOMBIES "{lightgreen}击杀 {green}%d{lightgreen} 丧尸获得 {green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_EXP_REVIVE "{olive}拉起队友{lightgreen} 获得 {green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_EXP_REVIVE_JOB4 "{olive}拉起队友{lightgreen} 获得 {green}%d{lightgreen}EXP{green}(额外+%d){lightgreen}, {green}%d{olive}${green}(额外+%d)"
#define MSG_EXP_DEFIBRILLATOR "{olive}复活队友{lightgreen} 获得 {green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_EXP_DEFIBRILLATOR_JOB4 "{olive}复活队友{lightgreen} 获得 {green}%d{lightgreen}EXP{green}(额外+%d){lightgreen}, {green}%d{olive}${green}(额外+%d)"
#define MSG_EXP_HEAL_SUCCESS "{olive}治疗队友{lightgreen} 获得 {green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_EXP_HEAL_SUCCESS_JOB4 "{olive}治疗队友{lightgreen} 获得 {green}%d{lightgreen}EXP{green}(额外+%d){lightgreen}, {green}%d{olive}${green}(额外+%d)"
#define MSG_EXP_KILL_TEAMMATE "{green}%N {teamcolor}太惨无人道了,居然残害队友!! 记大过第{green} %d {teamcolor}次,扣除 {green}%d{olive}EXP, {green}%d{olive}$!"
#define MSG_EXP_SURVIVOR_GOT_INCAPPED "{lightgreen}作为 {olive}幸存者 {lightgreen}的你倒下扣除{green}%d{olive}EXP, {green}%d{olive}$"
#define MSG_EXP_SURVIVOR_GOT_KILLED "{lightgreen}作为 {olive}幸存者 {lightgreen}的你死亡扣除{green}%d{olive}EXP, {green}%d{olive}$"
/* Kill TeammateKilledExp */
#define MSG_KT_WARNING_1 "{green}警告!! {lightgreen}大过累计达{green} %d {lightgreen}次以上将无法转职!!"
#define MSG_KT_WARNING_2 "{green}警告!! {lightgreen}大过累计已达{green} %d {lightgreen}次,你将无法转职!! 如想洗清罪孽请{green}Lv.20{lightgreen}之后洗点!!"
#define MSG_KT_WARNING_3 "{green}警告!! {lightgreen}大过累计已达{green} %d {lightgreen}次,系统自动帮你降{green}10{lightgreen}级,并初始化属性/技能"
/* Other */
#define MSG_LACK_POINTS "你已经没有属性点可以使用了!"
#define MSG_LACK_SKILLS "你已经没有技能点可以使用了!"
#define MSG_PLAYER_DIE "抱歉,死亡状态下无法使用技能!"
#define MSG_StAtUS_UP_FAIL "加点失败! 属性点餘额不足!! 当前:%d, 所需:%d"
#define MSG_INVALID_ARG "{green}参数无效!{olive}请输入一个大于零的正数!"
/* Need Job & Skill */
#define MSG_NEED_JOB1 "你没有转职工程师!"
#define MSG_NEED_JOB2 "你没有转职士兵!"
#define MSG_NEED_JOB3 "你没有转职生物专家!"
#define MSG_NEED_JOB4 "你没有转职心灵医师!"
#define MSG_NEED_JOB5 "你没有转职魔法师!"
#define MSG_NEED_SKILL_1 "你没有学习治疗术!"
#define MSG_NEED_SKILL_2 "你没有学习强化甦醒术!"
#define MSG_NEED_SKILL_3 "你没有学习子弹制造术!"
#define MSG_NEED_SKILL_4 "你没有学习加速冲刺术!"
#define MSG_NEED_SKILL_5 "你没有学习无限子弹术!"
#define MSG_NEED_SKILL_6 "你没有学习无敌术!"
#define MSG_NEED_SKILL_7 "你没有学习选择传送术!"
#define MSG_NEED_SKILL_8 "你没有学习目标传送术!"
#define MSG_NEED_SKILL_9 "你没有学习心灵传送术!"
#define MSG_NEED_SKILL_10 "你没有学习反伤术!"
#define MSG_NEED_SKILL_11 "你没有学习近战嗜血术!"
#define MSG_NEED_SKILL_12 "你没有学习超级特感术!"
#define MSG_NEED_SKILL_13 "你没有学习召唤术!"
#define MSG_NEED_SKILL_14 "你没有学习卫星炮术!"
#define MSG_NEED_SKILL_15 "你没有学习火球术!"
#define MSG_NEED_SKILL_16 "你没有学习冰球术!"
#define MSG_NEED_SKILL_17 "你没有学习连锁闪电术!"
#define MSG_NEED_SKILL_18 "你没有学习治疗光球术!"
/* Skills */
#define MSG_SKILL_LACK_MP "[技能] 你的MP不足够发动技能!需要MP: %d, 现在MP: %d"
#define MSG_SKILL_HL_ANNOUNCE "{olive}[技能] 启动了{green}Lv.%d{blue}的治疗术!"
#define MSG_SKILL_HL_ENABLED "{olive}[技能] {green}治疗术{blue}启动中!"
#define MSG_SKILL_HL_END "{olive}[技能] {green}治疗术{blue}结束了!"
#define MSG_SKILL_AM_ANNOUNCE "{olive}[技能] 使用了{green}Lv.%d{blue}的子弹制造技术制造了{green}%d发{blue}子弹!"
#define MSG_SKILL_AM_NOGUN "{olive}[技能] {green}你没有枪械!"
#define MSG_SKILL_SC_ANNOUNCE "{olive}[技能] 启动了{green}Lv.%d{blue}的{olive}卫星炮术{blue}!"
#define MSG_SKILL_SC_CHARGED "{olive}[技能] {green}卫星炮术{blue}冷却完成!"
#define MSG_SKILL_SC_TK "{olive}[技能] {green}%N{blue}的{green}卫星炮术{blue}杀了队友{green}%N{blue}! 扣除{green}%d{olive}EXP{blue}, {green}%d{olive}$"
#define MSG_SKILL_SP_ANNOUNCE "{olive}[技能] 启动了{green}Lv.%d{blue}的{olive}加速冲刺术{blue}!"
#define MSG_SKILL_SP_ENABLED "{olive}[技能] {green}加速冲刺术{blue}启动中!"
#define MSG_SKILL_SP_END "{olive}[技能] {green}加速冲刺术{blue}结束了!"
#define MSG_SKILL_IA_ANNOUNCE "{olive}[技能] 启动了{green}Lv.%d{blue}的{olive}无限子弹术{blue}!"
#define MSG_SKILL_IA_ENABLED "{olive}[技能] {green}无限子弹术{blue}启动中!"
#define MSG_SKILL_IA_END "{olive}[技能] {green}无限子弹术{blue}结束了!"
#define MSG_SKILL_BS_ANNOUNCE "{olive}[技能] 启动了{green}Lv.%d{blue}的{green}无敌术{blue},已进入无敌状态!"
#define MSG_SKILL_BS_ENABLED "{olive}[技能] {green}无敌术{blue}启动中!"
#define MSG_SKILL_BS_END "{olive}[技能] {green}无敌术{blue}结束了! 无敌效果消失!"
#define MSG_SKILL_BS_CHARGED "{olive}[技能] {green}无敌术{blue}冷却完成!"
#define MSG_SKILL_BS_NO_SKILL "{olive}[技能] {green}无敌术{blue}使用期间不能使用其他技能!"
#define MSG_SKILL_BS_NEED_HP "{olive}[技能] {blue}你的血量不足够用来发动无敌术!"
#define MSG_SKILL_TC_ANNOUNCE "{olive}[技能] 使用了心灵传输到了队友{green}%N{blue}的身边!"
#define MSG_SKILL_TC_ANNOUNCE2 "{olive}[技能] 使用了心灵传输到了队友{green}%N{blue}的尸体旁!"
#define MSG_SKILL_TC_CHARGED "{olive}[技能] {green}选择传送术{blue}冷却完成!"
#define MSG_SKILL_AT_ANNOUNCE "{olive}[技能] 使用了心灵传输到了想去的地方!"
#define MSG_SKILL_TT_ANNOUNCE "{olive}[技能] 使用了心灵传输使所有队友回到你的身边!"
#define MSG_SKILL_TT_ANNOUNCE_2 "{olive}[技能] 使用了心灵传输使队友{green}%N{blue}回到你的身边!"
#define MSG_SKILL_TT_CHARGED "{olive}[技能] {green}心灵传送术{blue}冷却完成!"
#define MSG_SKILL_TT_ON_GROUND "{olive}[技能] {green}為了防止集体跳河自杀,此技能只能在地面上使用!"
#define MSG_SKILL_HB_ANNOUNCE "{olive}[技能] 启动了{green}Lv.%d{blue}的{olive}治疗光球术{blue}!"
#define MSG_SKILL_HB_ENABLED "{olive}[技能] {green}治疗光球术{blue}启动中!"
#define MSG_SKILL_HB_END "{olive}[技能] {green}治疗光球术{blue}结束了! 你总共治疗了队友{green}%d{olive}HP, 你获得{green}%d{olive}Exp{blue}, {green}%d{olive}$"
#define MSG_SKILL_DR_ANNOUNCE "{olive}[技能] 消耗了自身的{green}%dHP{blue}去启动{green}Lv.%d{blue}的{olive}反伤术{blue}!"
#define MSG_SKILL_DR_ENABLED "{olive}[技能] {green}反伤术{blue}启动中!"
#define MSG_SKILL_DR_NEED_HP "{olive}[技能] {green}你的血量不足够用来发动反伤术!"
#define MSG_SKILL_DR_END "{olive}[技能] {green}反伤术{blue}失效了!"
#define MSG_SKILL_MS_ANNOUNCE "{olive}[技能] 启动了{green}Lv.%d{blue}的{olive}近战嗜血术{blue}!"
#define MSG_SKILL_MS_ENABLED "{olive}[技能] {green}近战嗜血术{blue}启动中!"
#define MSG_SKILL_MS_END "{olive}[技能] {green}近战嗜血术{blue}结束了!"
#define MSG_SKILL_FB_ANNOUNCE "{olive}[技能] 启动了{green}Lv.%d{blue}的{olive}火球术{blue}!"
#define MSG_SKILL_IB_ANNOUNCE "{olive}[技能] 启动了{green}Lv.%d{blue}的{olive}冰球术{blue}!"
#define MSG_SKILL_CL_ANNOUNCE "{olive}[技能] 启动了{green}Lv.%d{blue}的{olive}连锁闪电术{blue}!"
#define MSG_SKILL_RG_START "{olive}[技能] {blue}生命开始再生!"
#define MSG_SKILL_RG_FULLHP "{olive}[技能] {blue}生命已完全再生!"
#define MSG_SKILL_RG_STOP "{olive}[技能] {blue}受到攻击,再生停止!"
#define MSG_SKILL_SI_CANNOT_TANK "{olive}[技能] {blue}Tank不能变超级!"
#define MSG_SKILL_SI_CANNOT_GHOST "{olive}[技能] {blue}重生后才能变超级!"
#define MSG_SKILL_SI_ALREADY "{olive}[技能] {blue}你已是超级特感!"
#define MSG_SKILL_SI_ANNOUNCE "{olive}[技能] 你已变成{olive}超级%s{blue}! 超级特感能力可维持{green}%.2f{blue}秒!"
#define MSG_SKILL_SI_STOP "{olive}[技能] {blue}你的超级特感能力已用完!"
#define MSG_SKILL_IS_CANNOT_GHOST "{olive}[技能] {blue}重生后才能召唤!"
#define MSG_SKILL_IS_KILLED "{olive}[技能] {blue}你的{green}%d{blue}个召唤尸给杀死了!"
#define MSG_SKILL_IS_DISAPPEAR "{olive}[技能] {blue}你的{green}%d{blue}个召唤尸消失了!"
#define MSG_SKILL_IS_WITCH_ANNOUNCE "{olive}[技能] 召唤了{green}Witch{blue}!"
#define MSG_SKILL_IS_WITCH_KILLED "{olive}[技能] {blue}你召唤的{green}Witch{blue}给杀死了!"
#define MSG_SKILL_IS_WITCH_DISAPPEAR "{olive}[技能] {blue}你召唤的{green}Witch{blue}消失了!"
#define MSG_SKILL_IS_COUNT_MAX "{olive}[技能] {blue}召唤数量已达%d上限!"
#define MSG_SKILL_USE_SURVIVORS_ONLY "{olive}[技能] {blue}该技能仅限幸存者使用!"
#define MSG_SKILL_USE_INFECTED_ONLY "{olive}[技能] {blue}该技能仅限感染者使用!"
#define MSG_SKILL_CHARGING "{olive}[技能] {blue}技能正在冷却, 请稍后!"
/* Status */
#define MSG_ADD_STATUS_STR "{lightgreen}[属性] {olive}力量{lightgreen}变为{green}%d{lightgreen}, {olive}伤害{lightgreen}增加:{green}%.2f%%"
#define MSG_ADD_STATUS_AGI "{lightgreen}[属性] {olive}敏捷{lightgreen}变为{green}%d{lightgreen}, {olive}移动速度{lightgreen}增加:{green}%.2f%%"
#define MSG_ADD_STATUS_HEALTH "{lightgreen}[属性] {olive}生命{lightgreen}变为{green}%d{lightgreen}, {olive}生命值上限{lightgreen}增加:{green}%.2f%%"
#define MSG_ADD_STATUS_ENDURANCE "{lightgreen}[属性] {olive}耐力{lightgreen}变为{green}%d{lightgreen}, {olive}伤害{lightgreen}减少:{green}%.2f%%"
#define MSG_ADD_STATUS_INTELLIGENCE "{lightgreen}[属性] {olive}智力{lightgreen}变为{green}%d{lightgreen}, {olive}MP上限{lightgreen}增加至{green}%d{lightgreen}, 每秒恢复{green}%d{lightgreen}MP\n{lightgreen}[属性] 死亡扣取的经验值和金钱减少!"
#define MSG_ADD_STATUS_MAX "属性点增加已到达上限 %d!"
/* Learn Skills */
#define MSG_ADD_SKILL_TT_NEED "目标传送术和选择传送术必须达到满级才能学习此技能!"
#define MSG_ADD_SKILL_HL "{olive}[技能] {green}治疗术{lightgreen}等级变为{green}Lv.%d{lightgreen}"
#define MSG_ADD_SKILL_HL_LEVEL_MAX "{olive}[技能] {green}治疗术{lightgreen}等级已达上限!"
#define MSG_ADD_SKILL_EQ "{olive}[技能] {green}强化甦醒术{lightgreen}等级变为{green}Lv.%d{lightgreen}"
#define MSG_ADD_SKILL_EQ_LEVEL_MAX "{olive}[技能] {green}强化甦醒术{lightgreen}等级已达上限!"
#define MSG_ADD_SKILL_AM "{olive}[技能] {green}子弹制造术{lightgreen}等级变为{green}Lv.%d{lightgreen}"
#define MSG_ADD_SKILL_AM_LEVEL_MAX "{olive}[技能] {green}子弹制造术{lightgreen}等级已达上限!"
#define MSG_ADD_SKILL_SC "{olive}[技能] {green}卫星炮术{lightgreen}等级变为{green}Lv.%d{lightgreen}"
#define MSG_ADD_SKILL_SC_LEVEL_MAX "{olive}[技能] {green}卫星炮术{lightgreen}等级已达上限!"
#define MSG_ADD_SKILL_EE "{olive}[被动技能] {green}攻防强化术{lightgreen}等级变为{green}Lv.%d{lightgreen}"
#define MSG_ADD_SKILL_EE_LEVEL_MAX "{olive}[技能] {green}攻防强化术{lightgreen}等级已达上限!"
#define MSG_ADD_SKILL_SP "{olive}[技能] {green}加速冲刺术{lightgreen}等级变为 {green}Lv.%d{lightgreen}"
#define MSG_ADD_SKILL_SP_LEVEL_MAX "{olive}[技能] {green}加速冲刺术{lightgreen}等级已达上限!"
#define MSG_ADD_SKILL_IA "{olive}[技能] {green}无限子弹术{lightgreen}等级变为 {green}Lv.%d{lightgreen}"
#define MSG_ADD_SKILL_IA_LEVEL_MAX "{olive}[技能] {green}无限子弹术{lightgreen}等级已达上限!"
#define MSG_ADD_SKILL_BS "{olive}[技能] {green}无敌术{lightgreen}等级变为 {green}Lv.%d{lightgreen}"
#define MSG_ADD_SKILL_BS_LEVEL_MAX "{olive}[技能] {green}无敌术{lightgreen}等级已达上限!"
#define MSG_ADD_SKILL_DR "{olive}[技能] {green}反伤术{lightgreen}等级变为{green}Lv.%d{lightgreen}"
#define MSG_ADD_SKILL_DR_LEVEL_MAX "{olive}[技能] {green}反伤术{lightgreen}等级已达上限!"
#define MSG_ADD_SKILL_MS "{olive}[技能] {green}近战嗜血术{lightgreen}等级变为{green}Lv.%d{lightgreen}"
#define MSG_ADD_SKILL_MS_LEVEL_MAX "{olive}[技能] {green}近战嗜血术{lightgreen}等级已达上限!"
#define MSG_ADD_SKILL_FS "{olive}[被动技能] {green}射速已加强术{lightgreen}等级变为 {green}Lv.%d{lightgreen}"
#define MSG_ADD_SKILL_FS_LEVEL_MAX "{olive}[被动技能] {green}射速加强术{lightgreen}等级已达上限!"
#define MSG_ADD_SKILL_TS "{olive}[技能] {green}选择传送术{lightgreen}等级变为{green}Lv.%d{lightgreen}"
#define MSG_ADD_SKILL_TS_LEVEL_MAX "{olive}[技能] {green}选择传送术{lightgreen}等级已达上限!"
#define MSG_ADD_SKILL_AT "{olive}[技能] {green}目标传送术{lightgreen}等级变为{green}Lv.%d{lightgreen}"
#define MSG_ADD_SKILL_AT_LEVEL_MAX "{olive}[技能] {green}目标传送术{lightgreen}等级已达上限!"
#define MSG_ADD_SKILL_TT "{olive}[技能] {green}心灵传送术{lightgreen}等级变为{green}Lv.%d{lightgreen}"
#define MSG_ADD_SKILL_TT_LEVEL_MAX "{olive}[技能] {green}心灵传送术{lightgreen}等级已达上限!"
#define MSG_ADD_SKILL_HB "{olive}[技能] {green}治疗光球术{lightgreen}等级变为{green}Lv.%d{lightgreen}"
#define MSG_ADD_SKILL_HB_LEVEL_MAX "{olive}[技能] {green}治疗光球术{lightgreen}等级已达上限!"
#define MSG_ADD_SKILL_FB "{olive}[技能] {green}火球术{lightgreen}等级变为{green}Lv.%d{lightgreen}"
#define MSG_ADD_SKILL_FB_LEVEL_MAX "{olive}[技能] {green}火球术{lightgreen}等级已达上限!"
#define MSG_ADD_SKILL_IB "{olive}[技能] {green}冰球术{lightgreen}等级变为{green}Lv.%d{lightgreen}"
#define MSG_ADD_SKILL_IB_LEVEL_MAX "{olive}[技能] {green}冰球术{lightgreen}等级已达上限!"
#define MSG_ADD_SKILL_CL "{olive}[技能] {green}连锁闪电术{lightgreen}等级变为{green}Lv.%d{lightgreen}"
#define MSG_ADD_SKILL_CL_LEVEL_MAX "{olive}[技能] {green}连锁闪电术{lightgreen}等级已达上限!"
#define MSG_ADD_SKILL_RG "{olive}[被动技能] {green}再生术{lightgreen}等级变为{green}Lv.%d{lightgreen}"
#define MSG_ADD_SKILL_RG_LEVEL_MAX "{olive}[被动技能] {green}再生术{lightgreen}等级已达上限!"
#define MSG_ADD_SKILL_SI "{olive}[被动] {green}超级特感术{lightgreen}等级变为{green}Lv.%d{lightgreen}"
#define MSG_ADD_SKILL_SI_LEVEL_MAX "{olive}[被动] {green}超级特感术{lightgreen}等级已达上限!"
#define MSG_ADD_SKILL_IS "{olive}[技能] {green}召唤术{lightgreen}等级变为{green}Lv.%d{lightgreen}"
#define MSG_ADD_SKILL_IS_LEVEL_MAX "{olive}[技能] {green}召唤术{lightgreen}等级已达上限!"
#define MSG_ADD_SKILL_HSP "{olive}[技能] {green}飞扑爆击术{lightgreen}等级变为{green}Lv.%d{lightgreen}"
#define MSG_ADD_SKILL_HSP_LEVEL_MAX "{olive}[技能] {green}飞扑爆击术{lightgreen}等级已达上限!"
#define MSG_ADD_SKILL_NeedNewLife "{olive}[技能] {lightgreen}此技能需要{green}转生{lightgreen}后才能学习!"
/* Choose Jobs */
#define MSG_ZZ_FAIL_KT "{red}罪孽太深,不允许转职!"
#define MSG_ZZ_FAIL_JCB_TURE "{olive}转职失败! {lightgreen}普通玩家只能获得一个职业!"
#define MSG_ZZ_FAIL_NEED_STATUS "{olive}转职失败! {lightgreen}所需的属性点不足!"
#define MSG_ZZ_FAIL_NEED_NEWLIFE "{olive}转职失败! {lightgreen}你需要转生才可选择这个职业!"
#define MSG_ZZ_FAIL_SHOW_STATUS "{lightgreen}你当前的: 力量:{green}%d{lightgreen}, 敏捷:{green}%d{lightgreen}, 生命:{green}%d{lightgreen}, 耐力:{green}%d{lightgreen}, 智力:{green}%d"
#define MSG_ZZ_FAIL_JOB_NEED "{olive}转职所需: 力量:{green}%d{olive}, 敏捷:{green}%d{olive}, 生命:{green}%d{olive}, 耐力:{green}%d{olive}, 智力:{green}%d"
#define MSG_ZZ_SUCCESS_JOB1_ANNOUNCE "{olive}[转职] {olive}恭喜玩家{lightgreen}%N{olive}成功转职{green}工程师"
#define MSG_ZZ_SUCCESS_JOB2_ANNOUNCE "{olive}[转职] {olive}恭喜玩家{lightgreen}%N{olive}成功转职{green}士兵"
#define MSG_ZZ_SUCCESS_JOB3_ANNOUNCE "{olive}[转职] {olive}恭喜玩家{lightgreen}%N{olive}成功转职{green}生物专家"
#define MSG_ZZ_SUCCESS_JOB4_ANNOUNCE "{olive}[转职] {olive}恭喜玩家{lightgreen}%N{olive}成功转职{green}心灵医师"
#define MSG_ZZ_SUCCESS_JOB5_ANNOUNCE "{olive}[转职] {olive}恭喜玩家{lightgreen}%N{olive}成功转职{green}魔法师"
#define MSG_ZZ_SUCCESS_JOB1_REWARD "{olive}[转职属性奖励] 力量{green} 10 {lightgreen}, 耐力{green} 10 {lightgreen}, 智力{green} 10 {lightgreen}增加↑"
#define MSG_ZZ_SUCCESS_JOB2_REWARD "{olive}[转职属性奖励] 力量{green} 10 {lightgreen}, 敏捷{green} 10 {lightgreen}, 生命{green} 10 {lightgreen}增加↑"
#define MSG_ZZ_SUCCESS_JOB3_REWARD "{olive}[转职属性奖励] 力量{green} 10 {lightgreen}, 生命{green} 10 {lightgreen}, 智力{green} 10 {lightgreen}增加↑"
#define MSG_ZZ_SUCCESS_JOB4_REWARD "{olive}[转职属性奖励] 力量{green} 10 {lightgreen}, 生命{green} 10 {lightgreen}, 耐力{green} 10 {lightgreen}增加↑"
#define MSG_ZZ_SUCCESS_JOB5_REWARD "{olive}[转职属性奖励] 力量{green} 10 {lightgreen}, 生命{green} 10 {lightgreen}, 智力{green} 10 {lightgreen}增加↑"
/* Reset Status & Jobs & KT */
#define MSG_XD_SUCCESS "{teamcolor}玩家 {green}%N {teamcolor}已成功洗点!"
#define MSG_XD_SUCCESS_SHOP "{teamcolor}玩家 {green}%N {teamcolor}使用遗忘河药水成功洗点!"
#define MSG_XD_SUCCESS_ADMIN "{teamcolor}管理员已帮助玩家 {olive}%N {teamcolor}洗点!"
#define MSG_XD_KT_REMOVE "{blue}已消除大过,记得以后不要伤害队友喔~"
#define MSG_BUYSUCC "{olive}购买成功! {lightgreen}支出: {green}%d${lightgreen} 剩余金钱: {green}%d$"
#define MSG_BUYFAIL "{olive}购买失败! {lightgreen}需要: {green}%d${lightgreen} 现有金钱: {green}%d$"
#define MSG_RecycleSUCC "{olive}彩票回收成功! {lightgreen}获得: {green}%i${lightgreen}(税:{green}%i{lightgreen}) 剩余金钱: {green}%d$"
#define MSG_ROBOT_UPGRADE_MAX "{lightgreen}此项Robot升级已达最高等级!"
/* 对抗奖励系统 */
#define MSG_VERSUS_SCORE_CHANGE_TEAM_SECONDLEFT "{lightgreen}转换队伍时间剩余{green}%d{lightgreen}秒!"
#define MSG_VERSUS_SCORE_CHANGE_TEAM_TIMESUP "{olive}转换队伍时间够了! {lightgreen}直至下一张地图為止, 你不能转换队伍!"
#define MSG_VERSUS_SCORE_TEAM_A_SRORE "{lightgreen}你的队伍获得{green}%d{lightgreen}积分, 如你的积分高过敌方队伍, 你将获得一些经验值和金钱!"
#define MSG_VERSUS_SCORE_TEAM_B_SRORE "{lightgreen}敌方队伍获得{green}%d{lightgreen}积分, 如你的积分高过敌方队伍, 你将获得一些经验值和金钱!"
#define MSG_VERSUS_SCORE_EXPLAIN "{lightgreen}经验值是根据相方积分差距乘{green}%d{lightgreen}和你在地图参与时间,金钱是经验除{green}10{lightgreen}"
#define MSG_VERSUS_SCORE_TEAM_SRORE "{lightgreen}你的队伍获得{green}%d{lightgreen}积分, 敌方队伍获得{green}%d{lightgreen}积分"
#define MSG_VERSUS_SCORE_TEAM_SPECTATORS_SRORE "{lightgreen}幸存者阵营分数為{green}%d{lightgreen}, 特殊感染者阵营分数為{green}%d{lightgreen}"
#define MSG_VERSUS_SCORE_TEAM_WIN "{olive}恭喜! {lightgreen}你的队伍的积分高於敌方队伍, 你贡献了{green}%.2f%%{lightgreen}时间, 将获得{green}%d{lightgreen}经验值和{green}%d{lightgreen}金钱!"
#define MSG_VERSUS_SCORE_TEAM_LOSS "{olive}对不起! {lightgreen}你的队伍的积分低於敌方队伍, 敌方将获得一些经验值和金钱!"
#define MSG_VERSUS_SCORE_TEAM_DRAW "{lightgreen}两队积分打平!"
/* 密码系统 */
#define MSG_PASSWORD_NOTACTIVATED "{olive}[密码] {blue}你的密码尚未启动! 请打[/rpgpw 密码]设置并启动密码!\n注意: 密码请不要用数字0开头,会被略去的!"
#define MSG_PASSWORD_EXPLAIN "{olive}[密码] {blue}请打[!rpgpwinfo]查看密码系统说明!"
#define MSG_PASSWORD_NOTCONFIRM "{olive}[密码] {blue}你尚未输入密码! 请打[/rpgpw 密码]输入密码!"
#define MSG_PASSWORD_INCORRECT "{olive}[密码] {blue}你输入的密码不正确!"
#define MSG_ENTERPASSWORD_ALREADYCONFIRM "{olive}[密码] {blue}你已输入密码!"
#define MSG_ENTERPASSWORD_ACTIVATED "{olive}[密码] {blue}你的密码已成功启动! 你的密码为{green}%s"
#define MSG_ENTERPASSWORD_BLIND "{olive}[密码] {blue}你不能输入空白的密码!"
#define MSG_ENTERPASSWORD_CORRECT "{olive}[密码] {blue}密码正确! 记录己读取!"
#define MSG_RESETPASSWORD_RESETED "{olive}[密码] {blue}密码已经重新设定!"
/* 伤害显示 */
#define MSG_DAMAGEDISPLAY "造成 %d 伤害"
#define MSG_DAMAGEDISPLAY_DEAD "造成 %d 伤害 (击杀)"
#define MSG_DAMAGEDISPLAY_HEADSHOT "造成 %d 伤害 (爆头)"
#define MSG_TANK_HEALTH_REMAIN "魔王坦克(第%d型态 控制者: %N) 生命值: %d (累积伤害: %d)"
/* Witch尖叫引来尸群 */
#define MSG_WITCH_HARASSERSET_SET_PANIC "{green}%N{blue}惊吓了{green}Witch{blue}! 尖叫将引来尸群!"
#define MSG_WITCH_KILLED_PANIC "{green}%N{blue}杀死了{green}Witch{blue}! 尖叫将引来尸群!"
#define MSG_WitchAdd "幸存者阵营总等级(Lv. %d)多於特殊感染者阵营(Lv. %d), 增加%d隻Witch!"
/* 玩家加入和转队讯息 */
#define MSG_PLAYER_CONNECT "{green}%N{blue}连接游戏!"
#define MSG_PLAYER_JOIN_TEAM1 "{green}%N{blue}加入观察者阵营!"
#define MSG_PLAYER_JOIN_TEAM2 "{green}%N{blue}加入幸存者阵营!"
#define MSG_PLAYER_JOIN_TEAM3 "{green}%N{blue}加入特殊感染者阵营!"
/* 玩家改名 */
#define MESSAGE_CHANGENAME "{blue}你的能力被初始化了, 请重新输入密码读取存档(如有)!"
/* 玩家转生 */
#define MSG_NL_SUCCESS "{olive}[转生] {olive}恭喜玩家{lightgreen}%N{olive}成功{green}转生"
#define MSG_NL_NEED_LV "{lightgreen}你需要有Lv.{green}%d{lightgreen}或以上才能转生!"
/* 其他 */
#define MSG_VersusMarkerReached "%s 带领大家完成了{green} %d%% {default}路程!"
/*** 玩家基本资料 ***/
new Lv[MAXPLAYERS+1];
new EXP[MAXPLAYERS+1];
new Cash[MAXPLAYERS+1];
new MP[MAXPLAYERS+1];
#define KTLimit 5 //TK上限
new KTCount[MAXPLAYERS+1]; //误杀队友统计
new NewLifeCount[MAXPLAYERS+1]; //转生次数
new Handle:NewLifeLv; //转生最低等级要求
#define PasswordRemindSecond 60 //密码提示间隔
#define PasswordLength 64 //最大密码长度
new String:Password[MAXPLAYERS+1][PasswordLength];
new bool:IsPasswordConfirm[MAXPLAYERS+1] = { false, ...};
new PasswordRemindTime[MAXPLAYERS+1];
new bool:HasGetBuJi[MAXPLAYERS+1] = true;
/*** 玩家属性 ****/
new Str[MAXPLAYERS+1];
new Agi[MAXPLAYERS+1];
new Health[MAXPLAYERS+1];
new Endurance[MAXPLAYERS+1];
new Intelligence[MAXPLAYERS+1];
new SkillPoint[MAXPLAYERS+1];
new StatusPoint[MAXPLAYERS+1];
/*** 特殊力量 ****/
new Lis[MAXPLAYERS+1];
new Qgl[MAXPLAYERS+1]; //成功率
new Shitou[MAXPLAYERS+1]; //强化石
new Shilv[MAXPLAYERS+1]; //强化等级
new Qstr[MAXPLAYERS+1]; //强化攻击
/*** 背包系统 ****/
new Baoshu[MAXPLAYERS+1]; //腺上激素
new Baoliao[MAXPLAYERS+1]; //医疗包
new Baojia[MAXPLAYERS+1]; //弹夹
new Baozhan[MAXPLAYERS+1]; //棒球棍
new Baoxie[MAXPLAYERS+1]; //AK47
new Baodian[MAXPLAYERS+1]; //电机器
/****** 特感宝盒 ******/
new WLBH[MAXPLAYERS+1]; //特感宝盒
new AXP[MAXPLAYERS+1]; //A芯片系统
/** 属性上限 **/
#define Limit_Str 1000
#define Limit_Agi 500
#define Limit_Health 1000
#define Limit_Endurance 1000
#define Limit_Intelligence 500
/** 属性效能 **/
#define Effect_Str 0.005
#define Effect_Agi 0.0025
#define Effect_Health 0.01
#define Effect_Endurance 0.005
#define Effect_MaxEndurance 0.5
#define BasicIMP 100
#define BasicMaxMP 30000
/** 属性效果 **/
#define StrEffect[%1] Str[%1]*(1+Lis[%1])*Effect_Str
#define AgiEffect[%1] Agi[%1]*(1+Lis[%1])*Effect_Agi
#define HealthEffect[%1] Health[%1]*(1+Lis[%1])*Effect_Health
#define EnduranceEffect[%1] Endurance[%1]*(1+Lis[%1])*Effect_Endurance
#define IntelligenceEffect_IMP[%1] BasicIMP + Lv[%1] + Intelligence[%1]/2 *(1+Lis[%1])
#define MaxMP[%1] BasicMaxMP + 250*(Lv[%1] + Intelligence[%1]) *(1+Lis[%1])
/**** 幸存者职业和技能 ****/
/*** 幸存者通用技能 ***/
/** 治疗术 **/
new HealingLv[MAXPLAYERS+1];
new HealingCounter[MAXPLAYERS+1];
/** 强化甦醒术 **/
new EndranceQualityLv[MAXPLAYERS+1];
/*** 职业基本资料 ***/
new bool:JobChooseBool[MAXPLAYERS+1];
new JD[MAXPLAYERS+1] = {0, ...};
/** 工程师 **/
/* 职业属性需求 */
#define JOB1_Str 15
#define JOB1_Agi 15
#define JOB1_Health 15
#define JOB1_Endurance 15
#define JOB1_Intelligence 40
/* 子弹制造术 */
new AmmoMakingLv[MAXPLAYERS+1];
/* 射速加强术 */
new FireSpeedLv[MAXPLAYERS+1];
/* 卫星炮术 */
new bool:IsSatelliteCannonReady[MAXPLAYERS+1];
new SatelliteCannonLv[MAXPLAYERS+1];
#define SatelliteCannon_Sound_Launch "animation/bombing_run_01.wav"
/** 士兵 **/
/* 职业属性需求 */
#define JOB2_Str 35
#define JOB2_Agi 10
#define JOB2_Health 10
#define JOB2_Endurance 35
#define JOB2_Intelligence 10
/* 攻防强化术 */
new EnergyEnhanceLv[MAXPLAYERS+1];
/* 加速冲刺术 */
new SprintLv[MAXPLAYERS+1];
new bool:IsSprintEnable[MAXPLAYERS+1];
/* 无限子弹术 */
new bool:IsInfiniteAmmoEnable[MAXPLAYERS+1];
new InfiniteAmmoLv[MAXPLAYERS+1];
/** 生物专家 **/
/* 职业属性需求 */
#define JOB3_Str 10
#define JOB3_Agi 35
#define JOB3_Health 10
#define JOB3_Endurance 10
#define JOB3_Intelligence 35
/* 无敌术 */
new BioShieldLv[MAXPLAYERS+1];
new bool:IsBioShieldEnable[MAXPLAYERS+1];
new bool:IsBioShieldReady[MAXPLAYERS+1];
/* 反伤术 */
new DamageReflectLv[MAXPLAYERS+1];
new bool:IsDamageReflectEnable[MAXPLAYERS+1];
/* 近战嗜血术 */
new MeleeSpeedLv[MAXPLAYERS+1];
new bool:IsMeleeSpeedEnable[MAXPLAYERS+1];
/* 武器速度 */
new WRQ[MAXPLAYERS+1];
new WRQL;
new Float:Multi[MAXPLAYERS+1];
/** 心灵医师 **/
/* 职业属性需求 */
#define JOB4_Str 5
#define JOB4_Agi 30
#define JOB4_Health 30
#define JOB4_Endurance 5
#define JOB4_Intelligence 30
/* 选择传送术 */
new TeleportToSelectLv[MAXPLAYERS+1];
new bool:IsTeleportToSelectEnable[MAXPLAYERS+1];
/* 目标传送术 */
new AppointTeleportLv[MAXPLAYERS+1];
new bool:IsAppointTeleportEnable[MAXPLAYERS+1];
/* 心灵传送术 */
new TeleportTeamLv[MAXPLAYERS+1];
new bool:IsTeleportTeamEnable[MAXPLAYERS+1];
new defibrillator[MAXPLAYERS+1];
/* 心灵传送模式 */
new Handle:TeleportTeam_Mode;
/* 治疗光球术 */
new HealingBallLv[MAXPLAYERS+1];
new HealingBallExp[MAXPLAYERS+1];
new bool:IsHealingBallEnable[MAXPLAYERS+1];
new Handle:HealingBallTimer[MAXPLAYERS+1];
//#define HealingBall_Particle "st_elmos_fire_cp0"
#define HealingBall_Particle_Effect "st_elmos_fire_cp0"
#define HealingBall_Sound_Lanuch "ambient/fire/gascan_ignite1.wav"
#define HealingBall_Sound_Heal "buttons/bell1.wav"
/** 魔法师 **/
/* 职业属性需求 */
#define JOB5_Str 5
#define JOB5_Agi 5
#define JOB5_Health 5
#define JOB5_Endurance 5
#define JOB5_Intelligence 80
/* 火球术 */
new FireBallLv[MAXPLAYERS+1];
#define FireBall_Model "models/props_unique/airport/atlas_break_ball.mdl"
#define FireBall_Sound_Impact01 "ambient/fire/gascan_ignite1.wav"
#define FireBall_Sound_Impact02 "ambient/atmosphere/firewerks_burst_01.wav"
#define FireBall_Particle_Fire01 "molotov_explosion"
#define FireBall_Particle_Fire02 "gas_explosion_fireball2"
#define FireBall_Particle_Fire03 "fire_small_03"
/* 冰球术 */
new IceBallLv[MAXPLAYERS+1];
new bool:IsFreeze[MAXPLAYERS+1];
#define IceBall_Sound_Impact01 "animation/van_inside_hit_wall.wav"
#define IceBall_Sound_Impact02 "ambient/explosions/explode_3.wav"
#define IceBall_Sound_Freeze "physics/glass/glass_pottery_break3.wav"
#define IceBall_Sound_Defrost "physics/glass/glass_sheet_break1.wav"
#define IceBall_Particle_Ice01 "pillardust_highrise"
/* 连锁闪电术 */
new ChainLightningLv[MAXPLAYERS+1];
new bool:IsChained[MAXPLAYERS+1];
#define ChainLightning_Sound_launch "ambient/energy/zap1.wav"
#define ChainLightning_Particle_hit "electrical_arc_01_system"
/**** 特殊感染者职业和技能 ****/
/* 再生术设置 */
new HPRegenerationLv[MAXPLAYERS+1];
/* 超级特感术设置 */
new String:bossname[9][10]={ "", "Smoker", "Boomer", "Hunter", "Spitter", "Jockey", "Charger", "", "Tank"};
new bool:IsSuperInfectedEnable[MAXPLAYERS+1];
new SuperInfectedLv[MAXPLAYERS+1];
#define SuperInfected_Particle "molotov_explosion_child_streams"
#define SuperInfected_Sound_launch "animation/bridge_destruct_swt_01.wav"
/* 召唤术设置 */
enum Uncommons {riot, ceda, clown, mudman, roadcrew, jimmy, fallen, witch}
enum UncommonInfo {String:infectedname[10], String:infectedmodel[64]}
static UncommonData[Uncommons][UncommonInfo];
new InfectedSummonLv[MAXPLAYERS+1];
new InfectedSummonCount[MAXPLAYERS+1];
new Handle:Cost_InfectedSummon[8];
/* 飞扑爆击术 */
new SuperPounceLv[MAXPLAYERS+1];
#define SuperPounce_Particle_Hit "awning_collapse"
#define SuperPounce_Sound_Hit "player/tank/hithulk_punch_1.wav"
/* 技能等级上限 */
#define LvLimit_Healing 50
#define LvLimit_EndranceQuality 30
#define LvLimit_AmmoMaking 40
#define LvLimit_SatelliteCannon 30
#define LvLimit_FireSpeed 20
#define LvLimit_EnergyEnhance 50
#define LvLimit_Sprint 50
#define LvLimit_BioShield 30
#define LvLimit_DamageReflect 30
#define LvLimit_MeleeSpeed 40
#define LvLimit_InfiniteAmmo 50
#define LvLimit_TeleportToSelect 20
#define LvLimit_AppointTeleport 20
#define LvLimit_TeleportTeam 20
#define LvLimit_HPRegeneration 30
#define LvLimit_SuperInfected 30
#define LvLimit_InfectedSummon 30
#define LvLimit_FireBall 30
#define LvLimit_IceBall 30
#define LvLimit_ChainLightning 30
#define LvLimit_HealingBall 30
#define LvLimit_SuperPounce 20
/* 技能效果范围等 */
#define HealingEffect 5
#define HealingDuration[%1] 10 + HealingLv[%1] *(1+Lis[%1])
#define EndranceQualityEffect[%1] 0.3 + 0.02*EndranceQualityLv[%1] *(1+Lis[%1])
#define AmmoMakingEffect[%1] 5*AmmoMakingLv[%1] *(1+Lis[%1])
#define SatelliteCannonTKExpFactor 10
#define SatelliteCannonLaunchTime 3.0
#define SatelliteCannonDamage[%1] (2000 + 200*SatelliteCannonLv[%1]) *(1+Lis[%1])
#define SatelliteCannonSurvivorDamage[%1] 0
#define SatelliteCannonCDTime[%1] 25.0 - 0.5*SatelliteCannonLv[%1]*(1+Lis[%1])
#define SatelliteCannonRadius[%1] 300 + 25*SatelliteCannonLv[%1]*(1+Lis[%1])
#define FireSpeedEffect[%1] 0.2*FireSpeedLv[%1]*(1+Lis[%1])
#define EnergyEnhanceEffect_MaxEndurance[%1] 0.004*EnergyEnhanceLv[%1]*(1+Lis[%1])
#define EnergyEnhanceEffect_Endurance[%1] 0.01*EnergyEnhanceLv[%1]*(1+Lis[%1])
#define EnergyEnhanceEffect_Attack[%1] 0.01*EnergyEnhanceLv[%1]*(1+Lis[%1])
#define SprintEffect[%1] 0.5 + 0.01*SprintLv[%1]*(1+Lis[%1])
#define SprintDuration[%1] 5.0 + SprintLv[%1]*(1+Lis[%1])
#define InfiniteAmmoDuration[%1] 20.0 + 2.0*InfiniteAmmoLv[%1]*(1+Lis[%1])
#define BioShieldDuration[%1] 5.0 + 1.0*BioShieldLv[%1]*(1+Lis[%1])
#define BioShieldCDTime[%1] 80.0 - 1.0*BioShieldLv[%1]*(1+Lis[%1])
#define BioShieldSideEffect[%1] 0.2 + 0.01*BioShieldLv[%1]*(1+Lis[%1])
#define DamageReflectEffect[%1] 1.0*DamageReflectLv[%1]*(1+Lis[%1])
#define DamageReflectDuration[%1] 10.0 + 2.0*DamageReflectLv[%1]*(1+Lis[%1])
#define DamageReflectSideEffect[%1] 0.2 + 0.01*DamageReflectLv[%1]*(1+Lis[%1])
#define MeleeSpeedEffect[%1] MeleeSpeedLv[%1]*0.1*(1+Lis[%1])
#define MeleeSpeedDuration[%1] 20.0 + 1.0*MeleeSpeedLv[%1]*(1+Lis[%1])
#define HPRegeneration_DamageStopTime 3.0
#define HPRegeneration_Rate 1.0
#define HPRegeneration_HPRate[%1] 0.005*HPRegenerationLv[%1]
#define SuperInfectedEffect_Attack[%1] 0.5 + 0.025*SuperInfectedLv[%1]
#define SuperInfectedEffect_Endurance[%1] 0.5 + 0.05*SuperInfectedLv[%1]
#define SuperInfectedEffect_Speed[%1] 1.0 + 0.02*SuperInfectedLv[%1]
#define SuperInfectedDuration[%1] 10.0 + 1.0*SuperInfectedLv[%1]
#define Job4_ExtraReward[%1] Lv[%1] + TeleportToSelectLv[%1] + AppointTeleportLv[%1] + TeleportTeamLv[%1]
#define InfectedSummonMax[%1] 20 + 2*InfectedSummonLv[%1]
#define FireIceBallLife 10.0
#define FireBallDamageInterval[%1] 0.5
#define FireBallDamage[%1] 10 + FireBallLv[%1]*(1+Lis[%1])
#define FireBallTKDamage[%1] 0
#define FireBallDuration[%1] 2.5 + 0.5*FireBallLv[%1]*(1+Lis[%1])
#define FireBallRadius[%1] 100 + 10*FireBallLv[%1]*(1+Lis[%1])
#define IceBallDamage[%1] 50*(1+Lis[%1])
#define IceBallTKDamage[%1] 1
#define IceBallDuration[%1] 3.0 + 0.3*IceBallLv[%1]*(1+Lis[%1])
#define IceBallRadius[%1] 100 + 5*IceBallLv[%1]*(1+Lis[%1])
#define ChainLightningInterval[%1] 1.0
#define ChainLightningDamage[%1] 20 + ChainLightningLv[%1]*(1+Lis[%1])
#define ChainLightningRadius[%1] 100 + 5*ChainLightningLv[%1]*(1+Lis[%1])
#define ChainLightningLaunchRadius[%1] 150 + 15*ChainLightningLv[%1]*(1+Lis[%1])
#define HealingBallInterval 1.0
#define HealingBallEffect[%1] 5*(1+Lis[%1])
#define HealingBallRadius[%1] 150 + 15*HealingBallLv[%1]*(1+Lis[%1])
#define HealingBallDuration[%1] 10.0 + 1.0*HealingBallLv[%1]*(1+Lis[%1])
#define SuperPounceDamage[%1] 10 + SuperPounceLv[%1]
#define SuperPounceRadius[%1] 100 + 10*SuperPounceLv[%1]
/* 幸存者经验值 */
new Handle:JockeyKilledExp;
new Handle:HunterKilledExp;
new Handle:ChargerKilledExp;
new Handle:SmokerKilledExp;
new Handle:SpitterKilledExp;
new Handle:BoomerKilledExp;
new Handle:SuperInfectedExpFactor;
new Handle:TankKilledExp;
new Handle:WitchKilledExp;
new Handle:ZombieKilledExp;
new Handle:TeammateKilledExp;
new Handle:TankSurvivedExp;
new Handle:ReviveTeammateExp;
new Handle:ReanimateTeammateExp;
new Handle:HealTeammateExp;
new Handle:SurvivorGotIncappedExpFactor;
new Handle:SurvivorGotKilledExpFactor;
/* 幸存者金钱 */
new Handle:JockeyKilledCash;
new Handle:HunterKilledCash;
new Handle:ChargerKilledCash;
new Handle:SmokerKilledCash;
new Handle:SpitterKilledCash;
new Handle:BoomerKilledCash;
new Handle:SuperInfectedCashFactor;
new Handle:TankKilledCash;
new Handle:WitchKilledCash;
new Handle:ZombieKilledCash;
new Handle:TeammateKilledCash;
new Handle:TankSurvivedCash;
new Handle:ReviveTeammateCash;
new Handle:ReanimateTeammateCash;
new Handle:HealTeammateCash;
new Handle:SurvivorGotIncappedCashFactor;
new Handle:SurvivorGotKilledCashFactor;
/* 感染者者经验值 */
new Handle:SurvivorKilledExp;
new Handle:SurvivorIncappedExp;
new Handle:SpitterSpitExp;
new Handle:SmokerGrabbedExp;
new Handle:HunterPouncedExp;
new Handle:HunterPouncedAddExp;
new Handle:BoomerVomitExp;
new Handle:ChargerGrabbedExp;
new Handle:ChargerImpactExp;
new Handle:JockeyRideExp;
new Handle:TankClawExp;
new Handle:TankRockExp;
new Handle:InfectedAttackExp;
new Handle:SummonInfectedAttackExp;
new Handle:InfectedGotKilledExpFactor;
/* 感染者者金钱 */
new Handle:SurvivorKilledCash;
new Handle:SurvivorIncappedCash;
new Handle:SpitterSpitCash;
new Handle:SmokerGrabbedCash;
new Handle:HunterPouncedCash;
new Handle:HunterPouncedAddCash;
new Handle:BoomerVomitCash;
new Handle:ChargerGrabbedCash;
new Handle:ChargerImpactCash;
new Handle:JockeyRideCash;
new Handle:TankClawCash;
new Handle:TankRockCash;
new Handle:InfectedAttackCash;
new Handle:SummonInfectedAttackCash;
new Handle:InfectedGotKilledCashFactor;
new Float:infectedPosition[MAXPLAYERS+1][3];
/* 特殊商店 */
new Handle:RemoveKTCost;//消除大过
new Handle:ResetStatusCost;//遗忘河药水
new Handle:TomeOfExpCost;//经验之书
new Handle:TomeOfExpEffect;
/** 枪械强化率 **/
//#define Qgl[%1] 100 - Shilv[%1]*10
//#define Sbl[%1] 0 + Shilv[%1]*5
//#define Jbl[%1] 0 + Shilv[%1]*5
#define MAXSHITOULV 50 //强化等级最大上限
/*
枪械说明
pistol_magnum|玛格南手枪
autoshotgun|1代的连发霰弹枪
shotgun_spas|2代的连发霰弹枪
pumpshotgun|1代的单发霰弹枪
shotgun_chrome|2代的单发霰弹枪
hunting_rifle|1代的连狙
sniper_military|2代的连狙
rifle|M16突击步枪
rifle_m60|M60突击步枪
rifle_ak47|AK-47突击步枪
rifle_desert|SCAR突击步枪(三连发)
smg|轻型冲锋枪
smg_silenced|消音轻型冲锋枪
pistol|手枪
weapon_grenade_launcher|榴弹发射器
weapon_sniper_awp|麦格农重型狙击枪
weapon_sniper_scout|斯太尔轻型狙击枪
weapon_smg_mp5|MP5冲锋枪
weapon_rifle_sg552|SIG SG552突击步枪
*/
/* 彩票 */
#define diceNumMin 1
#define diceNumMax 35
new Handle:LotteryWeakenCommonsHpTimer = INVALID_HANDLE;
//#define LotteryEvent 3
new Lottery[MAXPLAYERS+1] = {0, ...};
new AdminDiceNum[MAXPLAYERS+1] = {-1, ...};
new bool:IsGlowClient[MAXPLAYERS+1] = {false, ...};
new Handle:LotteryEnable;
new Handle:LotteryCost;
new Handle:LotteryRecycle;
//new LotteryEventDuration[LotteryEvent] = {-1, ...};
//static String:LotteryEventName[LotteryEvent][64];
/* 升级奖励 */
new Handle:LvUpSP;
new Handle:LvUpKSP;
new Handle:LvUpCash;
/* 升级成本 */
new Handle:LvUpExpRate;
/* 攻击/击杀/召唤尸消失被击杀次数计算 */
new HurtCount[MAXPLAYERS+1];
new SummonHurtCount[MAXPLAYERS+1];
new SpitCount[MAXPLAYERS+1];
new ZombiesKillCount[MAXPLAYERS+1];
new SummonKilledCount[MAXPLAYERS+1];
new SummonDisappearedCount[MAXPLAYERS+1];
/* Robot升级设置 */
new RobotUpgradeLv[MAXPLAYERS+1][3];
//枪械强化伤害
#define DMG_LVD 6
//枪械伤害 武器伤害
#define DMG_AK47 50
#define DMG_M60 25
#define DMG_M16 35
#define DMG_MP5 20
#define DMG_SPAS 1
#define DMG_CHROME 1
#define DMG_AUTOSHOTGUN 1
#define DMG_HUNTING 60
#define DMG_SCOUT 85
#define DMG_AWP 65
#define DMG_GL 150
#define DMG_SMG 25
#define DMG_SMG_S 23
#define DMG_MAGNUM 50
#define NAME_AK47 "weapon_rifle_ak47"
#define NAME_M60 "weapon_rifle_m60"
#define NAME_M16 "weapon_rifle"
#define NAME_MP5 "weapon_smg_mp5"
#define NAME_SPAS "weapon_shotgun_spas"
#define NAME_CHROME "weapon_shotgun_chrome"
#define NAME_AUTOSHOTGUN "weapon_autoshotgun"
#define NAME_HUNTING "weapon_hunting_rifle"
#define NAME_SCOUT "weapon_sniper_scout"
#define NAME_AWP "weapon_sniper_awp"
#define NAME_GL "weapon_grenade_launcher"
#define NAME_SMG "weapon_smg"
#define NAME_SMG_S "weapon_smg_silenced"
#define NAME_MAGNUM "weapon_pistol_magnum"
/* 技能成本 */
new Handle:Cost_Healing;
new Handle:Cost_AmmoMaking;
new Handle:Cost_SatelliteCannon;
new Handle:Cost_Sprint;
new Handle:Cost_BioShield;
new Handle:Cost_DamageReflect;
new Handle:Cost_MeleeSpeed;
new Handle:Cost_InfiniteAmmo;
new Handle:Cost_SuperInfected;
new Handle:Cost_TeleportToSelect;
new Handle:Cost_AppointTeleport;
new Handle:Cost_TeleportTeammate;
new Handle:Cost_HealingBall;
new Handle:Cost_FireBall;
new Handle:Cost_IceBall;
new Handle:Cost_ChainLightning;
/* Admin选单 */
new Handle:hTopMenu = INVALID_HANDLE;
new TopMenuObject:Admin_GiveExp;
new TopMenuObject:Admin_GiveLv;
new TopMenuObject:Admin_ResetStatus;
new TopMenuObject:Admin_GiveCash;
new TopMenuObject:Admin_GiveKT;
new AdminGiveAmount[MAXPLAYERS+1];
new g_id[MAXPLAYERS+1];
/* 洗点模式 */
#define General 1
#define Shop 2
#define Admin 3
#define NewLife 4
/* 玩家资讯显示模式 */
#define colored 1
#define simple 2
/* 其他 */
new Handle:BindMode = INVALID_HANDLE;
new Handle:ShowMode = INVALID_HANDLE;
new Handle:GiveAnnonce = INVALID_HANDLE;
new Handle:CleanSaveFileDays = INVALID_HANDLE;
new Handle:VersusScoreEnable = INVALID_HANDLE;
new Handle:VersusScoreMultipler = INVALID_HANDLE;
new Handle:BotHP = INVALID_HANDLE;
new Handle:WitchBalanceLv = INVALID_HANDLE;
new Handle:g_hCvarShow = INVALID_HANDLE;
/* 存档和排名 */
new String:SavePath[256];
new String:RankPath[256];
new Handle:RPGSave = INVALID_HANDLE;
new Handle:RPGRank = INVALID_HANDLE;
#define RankNo 100
new String:LevelRankClient[MAXPLAYERS+RankNo][256];
new LevelRank[MAXPLAYERS+RankNo];
new String:CashRankClient[MAXPLAYERS+RankNo][256];
new CashRank[MAXPLAYERS+RankNo];
new bool:IsAdmin[MAXPLAYERS+1] = {false, ...};
/* 购物商店 */
new Handle:CfgNormalItemShopEnable;
new Handle:CfgSelectedGunShopEnable;
new Handle:CfgMeleeShopEnable;
/* Number of Normal Items */
#define NORMALITEMMAX 10
/* Number of Selected Guns */
#define SELECTEDGUNMAX 8
/* Number of Selected Melees */
#define SELECTEDMELEEMAX 13
/* Number of Robot */
#define ROBOTMAX 17
static String:WeaponName[ROBOTMAX][]={ "猎枪","M16突击步枪","战术散弹鎗", "散弹鎗", "乌兹衝锋鎗", "手枪", "麦格农手枪","AK47",
"SCAR步枪", "SG552步枪", "铬钢散弹鎗", "战斗散弹鎗", "自动式狙击枪", "SCOUT轻型狙弹枪", "AWP麦格农狙击枪", "MP5衝锋鎗", "灭音衝锋鎗"};
/* 商品价格 */
new Handle:CfgNormalItemCost[NORMALITEMMAX];
new Handle:CfgSelectedGunCost[SELECTEDGUNMAX];
new Handle:CfgMeleeCost[SELECTEDMELEEMAX];
new Handle:CfgRobotCost[ROBOTMAX];
/* 音效 */
#define TSOUND "ui/critical_event_1.wav"
/* 圈圈顏色 */
new CyanColor[4] = {0, 255, 255, 255};
//new PurpleColor[4] = {255, 0, 255, 255};
new RedColor[4] = {255, 80, 80, 255};
new BlueColor[4] = {80, 80, 255, 255};
/* 对抗计分 */
new TeamChangeSecondLeft;
new RoundNo;
new Round1SurvivorScore;
new Round2SurvivorScore;
new StartScore[3];
new SurvivorLogicalTeam;
new InfectedLogicalTeam;
new PlayerAliveTime[MAXPLAYERS+1];
new NextRoundTeam[MAXPLAYERS+1];
new RoundPlayTime;
new Handle:TeamChangeTimer = INVALID_HANDLE;
new Handle:RoundPlayTimer = INVALID_HANDLE;
new Handle:VersusScoreChangeTeamTime = INVALID_HANDLE;
new Handle:gConf = INVALID_HANDLE;
new Handle:fGTS = INVALID_HANDLE;
new Handle:fSHS = INVALID_HANDLE;
new Handle:fTOB = INVALID_HANDLE;
new bool:IsVersus;
//new bool:IsFirstMap;
//new bool:IsMapEnd;
#define SOUND_TRACING "items/suitchargeok1.wav"
/* Particle */
#define PARTICLE_INFECTEDSUMMON "electrical_arc_01_parent"
#define PARTICLE_SCEFFECT "gen_hit_up"
#define PARTICLE_HLEFFECT "embers_medium_03"
//#define PARTICLE_HLEFFECT "firework_crate_explosion_01"
//#define PARTICLE_HLEFFECT_1 "firework_crate_explosion_02"
//#define PARTICLE_HLEFFECT_2 "fireworks_explosion_glow_03"
//#define PARTICLE_HLEFFECT_3 "fireworks_explosion_trail_04"
//#define PARTICLE_HLEFFECT_4 "fireworks_explosion_trail_04b"
#define DamageDisplayBuffer 5
#define DamageDisplayLength 64
#define ALIVE 0
#define NORMALDEAD 1
#define HEADSHOT 2
new DamageToTank[MAXPLAYERS+1][MAXPLAYERS+1];
new String:DamageDisplayString[MAXPLAYERS+1][DamageDisplayBuffer][DamageDisplayLength];
//new LastDamage[MAXPLAYERS+1];
/************ Robot设置 ************/
#define SOUNDCLIPEMPTY "weapons/ClipEmpty_Rifle.wav"
#define SOUNDRELOAD "weapons/shotgun/gunother/shotgun_load_shell_2.wav"
#define SOUNDREADY "weapons/shotgun/gunother/shotgun_pump_1.wav"
#define WEAPONCOUNT 17
#define SOUND0 "weapons/hunting_rifle/gunfire/hunting_rifle_fire_1.wav"
#define SOUND1 "weapons/rifle/gunfire/rifle_fire_1.wav"
#define SOUND2 "weapons/auto_shotgun/gunfire/auto_shotgun_fire_1.wav"
#define SOUND3 "weapons/shotgun/gunfire/shotgun_fire_1.wav"
#define SOUND4 "weapons/SMG/gunfire/smg_fire_1.wav"
#define SOUND5 "weapons/pistol/gunfire/pistol_fire.wav"
#define SOUND6 "weapons/magnum/gunfire/magnum_shoot.wav"
#define SOUND7 "weapons/rifle_ak47/gunfire/rifle_fire_1.wav"
#define SOUND8 "weapons/rifle_desert/gunfire/rifle_fire_1.wav"
#define SOUND9 "weapons/sg552/gunfire/sg552-1.wav"
#define SOUND10 "weapons/shotgun_chrome/gunfire/shotgun_fire_1.wav"
#define SOUND11 "weapons/auto_shotgun_spas/gunfire/shotgun_fire_1.wav"
#define SOUND12 "weapons/sniper_military/gunfire/sniper_military_fire_1.wav"
#define SOUND13 "weapons/scout/gunfire/scout_fire-1.wav"
#define SOUND14 "weapons/awp/gunfire/awp1.wav"
#define SOUND15 "weapons/mp5navy/gunfire/mp5-1.wav"
#define SOUND16 "weapons/smg_silenced/gunfire/smg_fire_1.wav"
#define MODEL0 "weapon_hunting_rifle"
#define MODEL1 "weapon_rifle"
#define MODEL2 "weapon_autoshotgun"
#define MODEL3 "weapon_pumpshotgun"
#define MODEL4 "weapon_smg"
#define MODEL5 "weapon_pistol"
#define MODEL6 "weapon_pistol_magnum"
#define MODEL7 "weapon_rifle_ak47"
#define MODEL8 "weapon_rifle_desert"
#define MODEL9 "weapon_rifle_sg552"
#define MODEL10 "weapon_shotgun_chrome"
#define MODEL11 "weapon_shotgun_spas"
#define MODEL12 "weapon_sniper_military"
#define MODEL13 "weapon_sniper_scout"
#define MODEL14 "weapon_sniper_awp"
#define MODEL15 "weapon_smg_mp5"
#define MODEL16 "weapon_smg_silenced"
/* Particle */
#define PARTICLE_BLOOD "blood_impact_infected_01"
new String:SOUND[WEAPONCOUNT+3][70]=
{SOUND0, SOUND1, SOUND2, SOUND3, SOUND4, SOUND5, SOUND6, SOUND7,SOUND8,SOUND9, SOUND10, SOUND11,SOUND12,SOUND13,SOUND14, SOUND15,SOUND16,SOUNDCLIPEMPTY, SOUNDRELOAD, SOUNDREADY};
new String:MODEL[WEAPONCOUNT][32]=
{MODEL0, MODEL1, MODEL2, MODEL3, MODEL4, MODEL5,MODEL6, MODEL7,MODEL8,MODEL9,MODEL10, MODEL11, MODEL12,MODEL13,MODEL14, MODEL15, MODEL16};
new Float:fireinterval[WEAPONCOUNT]={0.25, 0.068, 0.30, 0.65, 0.060, 0.20, 0.33, 0.145, 0.14, 0.064, 0.65, 0.30, 0.265, 0.9, 1.25, 0.065, 0.055};
new Float:bulletaccuracy[WEAPONCOUNT]={1.15, 1.4, 3.5, 3.5, 1.6, 1.7, 1.7, 1.5, 1.6, 1.5, 3.5, 3.5, 1.15, 1.00, 0.8, 1.6,1.6};
new Float:weaponbulletdamage[WEAPONCOUNT]={90.0, 30.0, 25.0, 30.0, 20.0, 30.0, 60.0, 70.0, 40.0, 40.0, 30.0, 30.0, 90.0, 100.0, 150.0, 35.0, 35.0};
new weaponclipsize[WEAPONCOUNT]={15, 50, 10, 8, 50, 30, 8, 40, 20, 50, 8, 10, 30, 15, 20, 50, 50};
new weaponbulletpershot[WEAPONCOUNT]={1, 1, 7, 7, 1, 1, 1, 1, 1, 1, 7, 7,1, 1, 1,1,1};
new Float:weaponloadtime[WEAPONCOUNT]={2.0, 1.5, 0.3, 0.3, 1.5, 1.5, 1.9, 1.5, 1.5, 1.6, 0.3, 0.3, 2.0,2.0, 2.0, 1.5, 1.5};
new weaponloadcount[WEAPONCOUNT]={15, 50, 1,1, 50, 30, 8, 40, 60, 50, 1, 1, 30, 15, 20, 50, 50};
new bool:weaponloaddisrupt[WEAPONCOUNT]={false,false, true, true,false,false, false, false, false, true, true, false, false, false, false, false};
new robot[MAXPLAYERS+1];
new keybuffer[MAXPLAYERS+1];
new weapontype[MAXPLAYERS+1];
new bullet[MAXPLAYERS+1];
new Float:firetime[MAXPLAYERS+1];
new bool:reloading[MAXPLAYERS+1];
new Float:reloadtime[MAXPLAYERS+1];
new Float:scantime[MAXPLAYERS+1];
new Float:walktime[MAXPLAYERS+1];
new Float:botenerge[MAXPLAYERS+1];
new SIenemy[MAXPLAYERS+1];
new CIenemy[MAXPLAYERS+1];
new Float:robotangle[MAXPLAYERS+1][3];
new Handle:RobotReactiontime = INVALID_HANDLE;
new Handle:RobotEnergy = INVALID_HANDLE;
new Handle:CfgRobotUpgradeCost[3] = INVALID_HANDLE;
new Float:robot_reactiontime;
new Float:robot_energy;
new bool:robot_gamestart = false;
new RobotCount[MAXPLAYERS+1];