-
-
Notifications
You must be signed in to change notification settings - Fork 10
/
csgo_remake.sma
12361 lines (9937 loc) · 278 KB
/
csgo_remake.sma
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
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <csx>
#include <csgo_remake>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#include <nvault>
#include <sqlx>
#include <unixtime>
/* Uncomment this if you want to enable debug informations. Be carefull, this will spam server's logs */
//#define DEBUG
/* Uncomment this if you want to setup HUD Message */
//#define HUD_POS
/* Uncomment this if you need more memory to allocate. */
#pragma dynamic 65536
#define PLUGIN "CS:GO Remake"
#define VERSION "2.2.3"
#define AUTHOR "Shadows Adi"
#define CSGO_TAG "[CS:GO Remake]"
/* Do NOT Modify the limit only if you know what are you doing ( Could cause some on stack problems ) */
#define MAX_SKINS 450
#define WEAPONS_NR CSW_P90 + 1
#define IsPlayer(%0) (1 <= %0 <= g_iMaxPlayers)
#define GetPlayerBit(%0,%1) ( IsPlayer(%1) && ( %0 & ( 1 << ( %1 & 31 ) ) ) )
#define SetPlayerBit(%0,%1) ( IsPlayer(%1) && ( %0 |= ( 1 << ( %1 & 31 ) ) ) )
#define ClearPlayerBit(%0,%1) ( %0 &= ~( 1 << ( %1 & 31 ) ) )
#define XO_WEAPON 4
#define XO_PLAYER 5
#define OFFSET_WEAPONOWNER 41
#define OFFSET_ID 43
#define OFFSET_SECONDARY_ATTACK 47
#define OFFSET_WEAPON_IDLE 48
#define OFFSET_WEAPONCLIP 51
#define OFFSET_WEAPON_IN_RELOAD 54
#define OFFSET_WEAPONSTATE 74
#define OFFSET_ACTIVE_ITEM 373
#define OBS_IN_EYE 4
#define WPNSTATE_USP_SILENCED (1<<0)
#define WPNSTATE_GLOCK18_BURST_MODE (1<<1)
#define WPNSTATE_M4A1_SILENCED (1<<2)
#define WPNSTATE_ELITE_LEFT (1<<3)
#define WPNSTATE_FAMAS_BURST_MODE (1<<4)
#define UNSIL 0
#define SILENCED 1
#define WEAPONTYPE_ELITE 1
#define WEAPONTYPE_GLOCK18 2
#define WEAPONTYPE_FAMAS 3
#define WEAPONTYPE_OTHER 4
#define WEAPONTYPE_M4A1 5
#define WEAPONTYPE_USP 6
#define IDLE_ANIM 0
#define KNIFE_STABMISS 5
#define KNIFE_MIDATTACK1HIT 6
#define KNIFE_MIDATTACK2HIT 7
#define GLOCK18_SHOOT2 4
#define GLOCK18_SHOOT3 5
#define AK47_SHOOT1 3
#define AUG_SHOOT1 3
#define AWP_SHOOT2 2
#define DEAGLE_SHOOT1 2
#define ELITE_SHOOTLEFT5 6
#define ELITE_SHOOTRIGHT5 12
#define CLARION_SHOOT2 4
#define CLARION_SHOOT3 3
#define FIVESEVEN_SHOOT1 1
#define G3SG1_SHOOT 1
#define GALIL_SHOOT3 5
#define M3_FIRE2 2
#define XM1014_FIRE2 2
#define M4A1_SHOOT3 3
#define M4A1_UNSIL_SHOOT3 10
#define M249_SHOOT2 2
#define MAC10_SHOOT1 3
#define MP5N_SHOOT1 3
#define P90_SHOOT1 3
#define P228_SHOOT2 2
#define SCOUT_SHOOT 1
#define SG550_SHOOT 1
#define SG552_SHOOT2 4
#define TMP_SHOOT3 5
#define UMP45_SHOOT2 4
#define USP_UNSIL_SHOOT3 11
#define USP_SHOOT3 3
#define DRYFIRE_PISTOL "csgor/dryfire_pistol.wav"
#define DRYFIRE_RIFLE "csgor/dryfire_rifle.wav"
#define GLOCK18_BURST_SOUND "csgor/glock18-2.wav"
#define GLOCK18_SHOOT_SOUND "csgor/glock18-1.wav"
#define AK47_SHOOT_SOUND "csgor/ak47.wav"
#define AUG_SHOOT_SOUND "csgor/aug.wav"
#define AWP_SHOOT_SOUND "csgor/awp.wav"
#define DEAGLE_SHOOT_SOUND "csgor/deagle.wav"
#define ELITE_SHOOT_SOUND "csgor/elite_fire.wav"
#define CLARION_BURST_SOUND "csgor/famas-1.wav"
#define CLARION_SHOOT_SOUND "csgor/famas-1.wav"
#define FIVESEVEN_SHOOT_SOUND "csgor/fiveseven.wav"
#define G3SG1_SHOOT_SOUND "csgor/g3sg1.wav"
#define GALIL_SHOOT_SOUND "csgor/galil.wav"
#define M3_SHOOT_SOUND "csgor/m3.wav"
#define XM1014_SHOOT_SOUND "csgor/xm1014.wav"
#define M4A1_SILENT_SOUND "csgor/m4a1.wav"
#define M4A1_SHOOT_SOUND "csgor/m4a1_unsil.wav"
#define M249_SHOOT_SOUND "csgor/m249.wav"
#define MAC10_SHOOT_SOUND "csgor/mac10.wav"
#define MP5_SHOOT_SOUND "csgor/mp5.wav"
#define P90_SHOOT_SOUND "csgor/p90.wav"
#define P228_SHOOT_SOUND "csgor/p228.wav"
#define SCOUT_SHOOT_SOUND "csgor/scout_fire.wav"
#define SG550_SHOOT_SOUND "csgor/sg550.wav"
#define SG552_SHOOT_SOUND "csgor/sg552.wav"
#define TMP_SHOOT_SOUND "csgor/tmp.wav"
#define UMP45_SHOOT_SOUND "csgor/ump45.wav"
#define USP_SHOOT_SOUND "csgor/usp_unsil.wav"
#define USP_SILENT_SOUND "csgor/usp.wav"
#define weaponsWithoutInspect ((1<<CSW_C4) | (1<<CSW_HEGRENADE) | (1<<CSW_FLASHBANG) | (1<<CSW_SMOKEGRENADE))
#define weaponsNotVaild ((1<<CSW_C4) | (1<<CSW_HEGRENADE) | (1<<CSW_FLASHBANG) | (1<<CSW_SMOKEGRENADE) | (1<<CSW_KNIFE))
#define weaponsWithoutSkin ((1<<CSW_C4) | (1<<CSW_HEGRENADE) | (1<<CSW_FLASHBANG) | (1<<CSW_SMOKEGRENADE))
#define NO_REFILL_WEAPONS ((1<<CSW_KNIFE)|(1<<CSW_HEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_C4))
#define MISC_ITEMS ((1<<CSI_DEFUSER) | (1<<CSI_NVGS) | (1<<CSI_SHIELD) | (1<<CSI_PRIAMMO) | (1<<CSI_SECAMMO) | (1<<CSI_VEST) | (1<<CSI_VESTHELM))
#define PDATA_SAFE 2
#define EVENT_SVC_INTERMISSION "30"
/* ----------------------- TASKIDs ----------------------- */
enum (+=1404)
{
TASK_TOMBOLA = 1000,
TASK_HUD,
TASK_RESET_NAME,
TASK_RESPAWN,
TASK_SENDDEATH,
TASK_INFO,
TASK_SWAP,
TASK_JACKPOT,
TASK_SET_ICON,
TASK_ROULLETTE_PRE,
TASK_ROULLETTE_POST,
TASK_SHELLS,
TASK_CHECK_NAME,
TASK_MAP_END,
TASK_FADE_BLACK,
TASK_OBS_IN_EYE,
TASK_UPDATE_STATTRACK,
TASK_UPDATE_STATTRACK_KILLS,
TASK_PREVIEW
}
enum _:EnumChat
{
AllChat = 0,
DeadChat,
SpecChat,
CTChat,
TeroChat
}
enum _:EnumSkinsMenuInfo
{
ItemName[32],
ItemID[CSW_P90]
}
enum _:EnumDynamicMenu
{
szMenuName[32],
szMenuCMD[32]
}
enum _:EnumStattrackInfo
{
iWeap[MAX_SKINS + 1],
iKillCount[MAX_SKINS + 1],
iSelected[WEAPONS_NR],
bool:bStattrack[WEAPONS_NR]
}
enum _:EnumBooleans
{
bool:IsInPreview = 0,
bool:IsInInspect,
bool:IsChangeNotAllowed
}
enum
{
KEY = 544,
CASE = 545
}
enum
{
NVAULT = 0,
MYSQL = 1
}
enum
{
iNormal = 0,
iStattrack = 1,
iPreview = 2
}
enum
{
iStandardHUD = 1,
iAdvancedHUD
}
enum _:EnumForwards
{
user_log_in = 0,
user_log_out,
user_register,
user_pass_fail,
user_assist,
user_mvp,
user_case_opening,
user_craft,
user_level_up,
file_executed,
user_drop,
file_buffer
}
enum _:EnumCvars
{
iRegOpen,
iDropType,
iKeyPrice,
iDropChance,
iCraftCost,
iStatTrackCost,
iShowDropCraft,
szRankUpBonus[16],
iCmdAccess,
iOverrideMenu,
iWarmUpDuration,
iSaveType,
iCompetitive,
iBestPoints,
iRespawn,
iFreezetime,
iRespawnDelay,
iMVPMsgType,
iAMinPoints,
iAMaxPoints,
iMVPMinPoints,
iMVPMaxPoints,
iTimeDelete,
iPromoTime,
szNextMapDefault[32],
iPruneDays,
iHMinPoints,
iHMaxPoints,
iKMinPoints,
iKMaxPoints,
iCmdAccess,
iHMinChance,
iHMaxChance,
iKMinChance,
iKMaxChance,
szSqlHost[32],
szSqlUsername[32],
szSqlPassword[32],
szSqlDatabase[32],
iCPreview,
iStartMoney,
iFastLoad,
iWaitForPlace,
iKeyMinCost,
iCostMultiplier,
iCaseMinCost,
iReturnPercent,
iTombolaCost,
iTombolaTimer,
iJackpotTimer,
iShowHUD,
iSilentWeapDamage,
iChatTagPrice,
iChatTagColorPrice,
Float:flShortThrowVelocity,
Float:flRouletteCooldown,
iRoundEndSounds,
iCopyRight,
iCustomChat,
iAntiSpam,
szBonusValues[18],
iCheckBonusType,
szUserInfoField[24]
}
enum _:EnumRoundStats
{
iCTScore,
iTeroScore,
iRoundNum
}
new TraceBullets[][] = { "func_breakable", "func_wall", "func_door", "func_plat", "func_rotating", "worldspawn", "func_door_rotating" }
new g_iWeaponIndex[MAX_PLAYERS + 1]
new g_iUserViewBody[MAX_PLAYERS + 1][31]
new g_iUserBodyGroup[MAX_PLAYERS + 1]
new const g_szGEvents[25][] =
{
"events/awp.sc",
"events/g3sg1.sc",
"events/ak47.sc",
"events/scout.sc",
"events/m249.sc",
"events/m4a1.sc",
"events/sg552.sc",
"events/aug.sc",
"events/sg550.sc",
"events/m3.sc",
"events/xm1014.sc",
"events/usp.sc",
"events/mac10.sc",
"events/ump45.sc",
"events/fiveseven.sc",
"events/p90.sc",
"events/deagle.sc",
"events/p228.sc",
"events/glock18.sc",
"events/mp5n.sc",
"events/tmp.sc",
"events/elite_left.sc",
"events/elite_right.sc",
"events/galil.sc",
"events/famas.sc"
}
// 512 because of MAX_EVENTS const from engine. Found this as the most reasonable way to achieve it without a loop in playback event.
new bool:g_bGEventID[512]
new inspectAnimation[] =
{
0, 7, 0, 5, 0, 7, 0, 6, 6, 0, 16 ,6 ,6 ,5 ,6 ,6 ,16, 13, 6, 6, 5, 7, 14, 6, 5, 0, 6, 6, 6, 8, 6
}
new Handle:g_hSqlTuple
new g_szSqlError[512]
new Handle:g_iSqlConnection
new g_Vault
new g_nVault
new g_pVault
new g_sVault
new g_iRoulleteNumbers[7][8]
new g_iRoulettePlayers
new g_iRouletteTime = 60
new bool:g_bLogged[ MAX_PLAYERS + 1 ]
new bool:g_bSkinHasModelP[MAX_SKINS + 1]
new g_MsgSync
new g_WarmUpSync
new g_iLastOpenCraft[ MAX_PLAYERS + 1 ]
new g_szCfgDir[48]
new g_szConfigFile[64]
new Array:g_aRankName
new Array:g_aRankKills
new Array:g_aDefaultSubmodel
new Array:g_aSkinWeaponID
new Array:g_aSkinName
new Array:g_aSkinModel
new Array:g_aSkinModelP
new Array:g_aSkinSubModel
new Array:g_aSkinType
new Array:g_aSkinChance
new Array:g_aSkinCostMin
new Array:g_aDropSkin
new Array:g_aCraftSkin
new Array:g_aDustsSkin
new Array:g_aLockSkin
new Array:g_aTombola
new Array:g_aJackpotSkins
new Array:g_aJackpotUsers
new Array:g_aPromocodes
new Array:g_aPromocodesUsage
new Array:g_aPromocodesGift
new Array:g_aSkinsMenu
new Array:g_aDynamicMenu
new Array:g_aSkipChat
new g_iRanksNum
new g_iSkinsNum
new g_iPromoNum
new g_iPromoCount[ MAX_PLAYERS + 1 ]
new g_iUserSelectedSkin[ MAX_PLAYERS + 1 ][WEAPONS_NR]
new g_iStattrackWeap[ MAX_PLAYERS + 1][ EnumStattrackInfo ]
new g_iUserSkins[ MAX_PLAYERS + 1 ][MAX_SKINS + 1]
new g_iUserPoints[ MAX_PLAYERS + 1 ]
new g_iUserDusts[ MAX_PLAYERS + 1 ]
new g_iUserKeys[ MAX_PLAYERS + 1 ]
new g_iUserCases[ MAX_PLAYERS + 1 ]
new g_iUserKills[ MAX_PLAYERS + 1 ]
new g_iUserRank[ MAX_PLAYERS + 1 ]
new g_szUserPrefix[ MAX_PLAYERS + 1 ][16]
new g_szUserPrefixColor[ MAX_PLAYERS + 1 ][16]
new g_szTemporaryCtag[ MAX_PLAYERS + 1 ][16]
new g_iDropSkinNum
new g_iCraftSkinNum
new g_szName[ MAX_PLAYERS + 1 ][32]
new g_szSteamID[ MAX_PLAYERS + 1][32]
new g_szUserPassword[ MAX_PLAYERS + 1 ][16]
new g_szUser_SavedPass[ MAX_PLAYERS + 1 ][16]
new g_szUserLastIP[ MAX_PLAYERS + 1 ][19]
new g_iUserPassFail[MAX_PLAYERS + 1]
new g_szUserPromocode[ MAX_PLAYERS + 1 ][32]
new g_Msg_SayText
new g_Msg_StatusIcon
new g_Msg_DeathMsg
new g_iUserSellItem[ MAX_PLAYERS + 1 ]
new g_iUserItemPrice[ MAX_PLAYERS + 1 ]
new bool:g_bUserSell[ MAX_PLAYERS + 1 ]
new g_iLastPlace[ MAX_PLAYERS + 1 ]
new g_iMenuType[ MAX_PLAYERS + 1 ]
new g_iGiftTarget[ MAX_PLAYERS + 1 ]
new g_iGiftItem[ MAX_PLAYERS + 1 ]
new g_iTradeTarget[ MAX_PLAYERS + 1 ]
new g_iTradeItem[ MAX_PLAYERS + 1 ]
new bool:g_bTradeActive[ MAX_PLAYERS + 1 ]
new bool:g_bTradeSecond[ MAX_PLAYERS + 1 ]
new bool:g_bTradeAccept[ MAX_PLAYERS + 1 ]
new g_iTradeRequest[ MAX_PLAYERS + 1 ]
new g_iRouletteCost
new bool:g_bRoulettePlay
new g_iTombolaPlayers
new g_iTombolaPrize
new bool:g_bUserPlay[ MAX_PLAYERS + 1 ]
new g_iNextTombolaStart
new bool:g_bTombolaWork = true
new bool:g_bJackpotWork
new g_iUserJackpotItem[ MAX_PLAYERS + 1 ]
new bool:g_bUserPlayJackpot[ MAX_PLAYERS + 1 ]
new g_iJackpotClose
new g_iCoinflipTarget[ MAX_PLAYERS + 1 ]
new g_iCoinflipItem[ MAX_PLAYERS + 1 ]
new g_iCoinflipRequest[ MAX_PLAYERS + 1 ]
new bool:g_bCoinflipActive[ MAX_PLAYERS + 1 ]
new bool:g_bCoinflipSecond[ MAX_PLAYERS + 1 ]
new bool:g_bCoinflipAccept[ MAX_PLAYERS + 1 ]
new bool:g_bCoinflipWork
new bool:g_bWarmUp
new p_StartMoney
new bool:g_bTeamSwap
new p_Freezetime
new bool:g_bBombExplode
new bool:g_bBombDefused
new g_iBombPlanter
new g_iBombDefuser
new g_iScore[3]
new g_iRoundKills[ MAX_PLAYERS + 1 ]
new g_iDigit[ MAX_PLAYERS + 1 ]
new g_iUserMVP[ MAX_PLAYERS + 1 ]
new g_iDealDamage[ MAX_PLAYERS + 1 ]
new pNextMap
new szNextMap[32]
new g_iMostDamage[ MAX_PLAYERS + 1 ]
new g_iDamage[ MAX_PLAYERS + 1 ][33]
new g_iRedPoints[ MAX_PLAYERS + 1 ]
new g_iWhitePoints[ MAX_PLAYERS + 1 ]
new g_iYellowPoints[ MAX_PLAYERS + 1 ]
new g_eEnumBooleans[MAX_PLAYERS + 1][EnumBooleans]
new g_bitIsAlive
new g_bitShortThrow
new g_iForwards[ EnumForwards ]
new g_iForwardResult
new g_iCvars[EnumCvars]
new g_iStats[EnumRoundStats]
new g_szTWin[] =
{
"csgor/twin.wav"
}
new g_szCTWin[] =
{
"csgor/ctwin.wav"
}
new g_szCaseOpen[] =
{
"csgor/caseopen.wav"
}
new const g_szBombPlanting[] = "csgor/bomb_planting.wav"
new const g_szBombDefusing[] = "csgor/bomb_defusing.wav"
new GrenadeName[][] =
{
"weapon_hegrenade",
"weapon_flashbang",
"weapon_smokegrenade"
}
new const g_szWeaponEntName[][] =
{
"weapon_p228",
"weapon_scout",
"weapon_hegrenade",
"weapon_xm1014",
"weapon_c4",
"weapon_mac10",
"weapon_aug",
"weapon_smokegrenade",
"weapon_elite",
"weapon_fiveseven",
"weapon_ump45",
"weapon_sg550",
"weapon_galil",
"weapon_famas",
"weapon_usp",
"weapon_glock18",
"weapon_awp",
"weapon_mp5navy",
"weapon_m249",
"weapon_m3",
"weapon_m4a1",
"weapon_tmp",
"weapon_g3sg1",
"weapon_flashbang",
"weapon_deagle",
"weapon_sg552",
"weapon_ak47",
"weapon_knife",
"weapon_p90"
}
new const g_iMaxBpAmmo[] =
{
0,
52,
0,
90,
1,
32,
1,
100,
90,
1,
120,
100,
100,
90,
90,
90,
100,
120,
30,
120,
200,
21,
90,
120,
90,
2,
35,
90,
90,
0,
100
}
new const g_szAmmoType[][] =
{
"",
"357sig",
"",
"762nato",
"",
"buckshot",
"",
"45acp",
"556nato",
"",
"9mm",
"57mm",
"45acp",
"556nato",
"556nato",
"556nato",
"45acp",
"9mm",
"338magnum",
"9mm",
"556natobox",
"buckshot",
"556nato",
"9mm",
"762nato",
"",
"50ae",
"556nato",
"762nato",
"",
"57mm"
}
new defaultModels[WEAPONS_NR][48]
new defaultCount
new szSprite[][] =
{
"number_0",
"number_1",
"number_2",
"number_3",
"number_4",
"number_5",
"number_6",
"number_7",
"number_8",
"number_9",
"dmg_rad"
};
#if defined HUD_POS
new Float:HUD_POS_X = 0.02
new Float:HUD_POS_Y = 0.90
#endif
new g_iMaxPlayers
const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)
new g_szData[MAX_SKINS * 5 + 94]
public plugin_init()
{
#if defined DEBUG
log_to_file("csgor_debug_logs.log", "plugin_init()")
#endif
register_plugin(PLUGIN, VERSION, AUTHOR)
new pcvar = create_cvar("csgor_author", "Shadows Adi", FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_UNLOGGED|FCVAR_SPONLY, "DO NOT MODIFY!" )
pcvar = create_cvar("csgor_savetype", "0", FCVAR_NONE, "(0|1) Save type || 0 - nVault Save | 1 - MYSQL Save", true, 0.0, true, 1.0)
bind_pcvar_num(pcvar, g_iCvars[iSaveType])
pcvar = create_cvar("csgor_dbase_host", "localhost", FCVAR_SPONLY | FCVAR_PROTECTED, "Database Host")
bind_pcvar_string(pcvar, g_iCvars[szSqlHost], charsmax(g_iCvars[szSqlHost]))
pcvar = create_cvar("csgor_dbase_user", "username", FCVAR_SPONLY | FCVAR_PROTECTED, "Database Username")
bind_pcvar_string(pcvar, g_iCvars[szSqlUsername], charsmax(g_iCvars[szSqlUsername]))
pcvar = create_cvar("csgor_dbase_pass", "password", FCVAR_SPONLY | FCVAR_PROTECTED, "Database Password")
bind_pcvar_string(pcvar, g_iCvars[szSqlPassword], charsmax(g_iCvars[szSqlPassword]))
pcvar = create_cvar("csgor_dbase_database", "database", FCVAR_SPONLY | FCVAR_PROTECTED, "Database Name")
bind_pcvar_string(pcvar, g_iCvars[szSqlDatabase], charsmax(g_iCvars[szSqlDatabase]))
pcvar = create_cvar("csgor_prunedays", "60", FCVAR_NONE, "(0|∞) The accounts will be erased in X days of inactivity", true, 0.0 )
bind_pcvar_num(pcvar, g_iCvars[iPruneDays])
pcvar = create_cvar("csgor_default_map", "de_dust2", FCVAR_NONE, "If cvar ^"amx_nextmap^" doesn't exist, this will be the next map, only if ^"csgor_competitive_mode^" is ^"1^"")
bind_pcvar_string(pcvar, g_iCvars[szNextMapDefault], charsmax(g_iCvars[szNextMapDefault]))
pcvar = create_cvar("csgor_override_menu", "1", FCVAR_NONE, "(0|1) Main menu will open with ^"M^" key", true, 0.0, true, 1.0 )
bind_pcvar_num(pcvar, g_iCvars[iOverrideMenu])
pcvar = create_cvar("csgor_show_hud", "2", FCVAR_NONE, "(0|1|2) HUD Info^n 0 - Deactivated || 1 - Classic HUD || 2 - Advanced HUD", true, 0.0, true, 2.0 )
bind_pcvar_num(pcvar, g_iCvars[iShowHUD])
pcvar = create_cvar("csgor_head_minpoints", "11", FCVAR_NONE, "How much points for a HeadShot kill^n(MINIMUM)", true, 0.0 )
bind_pcvar_num(pcvar, g_iCvars[iHMinPoints])
pcvar = create_cvar("csgor_head_maxpoints", "15", FCVAR_NONE, "How much points for a HeadShot kill^n(MAXIMUM)", true, 0.0 )
bind_pcvar_num(pcvar, g_iCvars[iHMaxPoints])
pcvar = create_cvar("csgor_kill_minpoints", "6", FCVAR_NONE, "How much points for a kill^n(MINIMUM)", true, 0.0 )
bind_pcvar_num(pcvar, g_iCvars[iKMinPoints])
pcvar = create_cvar("csgor_kill_maxpoints", "10", FCVAR_NONE, "How much points for a kill^n(MAXIMUM)", true, 0.0 )
bind_pcvar_num(pcvar, g_iCvars[iKMaxPoints])
pcvar = create_cvar("csgor_head_minchance", "25", FCVAR_NONE, "Drop chance ( case ) if kill is made by HeadShot^n(MINIMUM)", true, 0.0, true, 99.0 )
bind_pcvar_num(pcvar, g_iCvars[iHMinChance])
pcvar = create_cvar("csgor_head_maxchance", "100", FCVAR_NONE, "Drop chance ( case ) if kill is made by HeadShot^n(MAXIMUM)", true, 0.0, true, 100.0 )
bind_pcvar_num(pcvar, g_iCvars[iHMaxChance])
pcvar = create_cvar("csgor_kill_minchance", "0", FCVAR_NONE, "Drop chance ( case ) for a basic kill^n(MINIMUM)", true, 0.0, true, 99.0 )
bind_pcvar_num(pcvar, g_iCvars[iKMinChance])
pcvar = create_cvar("csgor_kill_maxchance", "100", FCVAR_NONE, "Drop chance ( case ) for a basic kill^n(MAXIMUM)", true, 0.0, true, 100.0 )
bind_pcvar_num(pcvar, g_iCvars[iKMaxChance])
pcvar = create_cvar("csgor_assist_minpoints", "3", FCVAR_NONE, "How much points for an assist^n(MINIMUM)", true, 0.0, true, 99.0 )
bind_pcvar_num(pcvar, g_iCvars[iAMinPoints])
pcvar = create_cvar("csgor_assist_maxpoints", "5", FCVAR_NONE, "How much points for an assist^n(MAXIMUM)", true, 0.0, true, 100.0 )
bind_pcvar_num(pcvar, g_iCvars[iAMaxPoints])
pcvar = create_cvar("csgor_mvp_minpoints", "20", FCVAR_NONE, "How much points the MVP receive^n(MINIMUM)", true, 0.0 )
bind_pcvar_num(pcvar, g_iCvars[iMVPMinPoints])
pcvar = create_cvar("csgor_mvp_maxpoints", "30", FCVAR_NONE, "How much points the MVP receive^n(MAXIMUM)", true, 0.0 )
bind_pcvar_num(pcvar, g_iCvars[iMVPMaxPoints])
pcvar = create_cvar("csgor_mvp_msgtype", "0", FCVAR_NONE, "(0|1|2|3) MVP Message Type^n 0 - No Message is shown^n 1 - Chat Message^n 2 - HUD Message^n 3 - DHUD Message", true, 0.0, true, 3.0 )
bind_pcvar_num(pcvar, g_iCvars[iMVPMsgType])
pcvar = create_cvar("csgor_tombola_cost", "50", FCVAR_NONE, "Required points for joining the raffle", true, 1.0 )
bind_pcvar_num(pcvar, g_iCvars[iTombolaCost])
pcvar = create_cvar("csgor_register_open", "1", FCVAR_NONE, "(0|1) Possibility to register new accounts^n 0 - New accounts can't be registered^n 1 - New accounts can be registered", true, 0.0, true, 1.0 )
bind_pcvar_num(pcvar, g_iCvars[iRegOpen])
pcvar = create_cvar("csgor_best_points", "300", FCVAR_NONE, "How much points receives the best player from a half", true, 1.0 )
bind_pcvar_num(pcvar, g_iCvars[iBestPoints])
pcvar = create_cvar("csgor_rangup_bonus", "kc|200", FCVAR_NONE, "Rank Up Bonus^nExample: ^"kkccc|300^". The player will get: 2 keys and 3 cases and 300 points^nMinimum value: ^"|^" - the player don't receive anything. ^"|10^" - get 10 points. ^"k|^" - get 1 key. ^"c|^" - get 1 case" )
bind_pcvar_string(pcvar, g_iCvars[szRankUpBonus], charsmax(g_iCvars[szRankUpBonus]))
pcvar = create_cvar("csgor_return_percent", "10", FCVAR_NONE, "When destroying the skins, the player receives points.^n1 / value = how much points the player receives", true, 0.0 )
bind_pcvar_num(pcvar, g_iCvars[iReturnPercent])
pcvar = create_cvar("csgor_drop_type", "1", FCVAR_NONE, "Drop type^n0 - drop cases and keys; 1 - drop only cases, the keys needs to be bought", true, 0.0, true, 1.0 )
bind_pcvar_num(pcvar, g_iCvars[iDropType])
pcvar = create_cvar("csgor_key_price", "250", FCVAR_NONE, "Key Price^nOnly if cvar ^"csgor_drop_type^" is ^"1^"", true, 0.0 )
bind_pcvar_num(pcvar, g_iCvars[iKeyPrice])
pcvar = create_cvar("csgor_tombola_timer", "180", FCVAR_NONE, "Every X seconds the raffle takes place.^n 1 minute = 60 seconds", true, 0.0 )
bind_pcvar_num(pcvar, g_iCvars[iTombolaTimer])
pcvar = create_cvar("csgor_jackpot_timer", "120", FCVAR_NONE, "After how many seconds the Jackpot starts.^n 1 minute = 60 seconds", true, 0.0 )
bind_pcvar_num(pcvar, g_iCvars[iJackpotTimer])
pcvar = create_cvar("csgor_competitive_mode", "1", FCVAR_NONE, "(0|1) Two halfs each of 15 rounds are played.^nAfter the first half, the teams are changing + round restart.^nAfter the second half, map is changing.^nPay attention! This needs ^"mapcycle.txt^" configured right!", true, 0.0, true, 1.0 )
bind_pcvar_num(pcvar, g_iCvars[iCompetitive])
pcvar = create_cvar("csgor_warmup_duration", "60", FCVAR_NONE, "WarmUp Time", true, 1.0 )
bind_pcvar_num(pcvar, g_iCvars[iWarmUpDuration])
pcvar = create_cvar("csgor_show_dropcraft", "1", FCVAR_NONE, "(0|1) Show other player's drop.^n0 - Show the drop only to the beneficiary^n1 - Show the drop to all palyers.", true, 0.0, true, 1.0)
bind_pcvar_num(pcvar, g_iCvars[iShowDropCraft])
pcvar = create_cvar("csgor_item_cost_multiplier", "20", FCVAR_NONE, "The quota by which the minimum price of the key / box is multiplied to get the MAXIMUM price", true, 1.0 )
bind_pcvar_num(pcvar, g_iCvars[iCostMultiplier])
pcvar = create_cvar("csgor_bonus_time", "24", FCVAR_NONE, "After how long the player can receive the bonus again?^nValue must be in hours.", true, 1.0)
bind_pcvar_num(pcvar, g_iCvars[iTimeDelete])
pcvar = create_cvar("csgor_prune_promocodes", "7", FCVAR_NONE, "The time interval when the used promocode will be reset.^nRecommended value to be greater than 1", true, 0.0 )
bind_pcvar_num(pcvar, g_iCvars[iPromoTime])
pcvar = create_cvar("csgor_roulette_cooldown", "300", FCVAR_NONE, "The interval when the roulette starts again^nThe value needs to be in seconds.^nIt's recommended that the value can be divided by 60", true, 1.0, false )
bind_pcvar_float(pcvar, g_iCvars[flRouletteCooldown])
pcvar = create_cvar("csgor_chattag_cost", "800", FCVAR_NONE, "The price of a chat prefix", true, 1.0)
bind_pcvar_num(pcvar, g_iCvars[iChatTagPrice])
pcvar = create_cvar("csgor_chattag_color_cost", "500", FCVAR_NONE, "The price of a color for the chat prefix", true, 1.0)
bind_pcvar_num(pcvar, g_iCvars[iChatTagColorPrice])
pcvar = create_cvar("csgor_silenced_weap_type", "1", FCVAR_NONE, "(0|1) Weapons with silencer will have damage similar to that of CS:GO's ones ( M4A1-S ; USP-S ).", true, 0.0, true, 1.0 )
bind_pcvar_num(pcvar, g_iCvars[iSilentWeapDamage])
pcvar = create_cvar("csgor_respawn_enable", "0", FCVAR_NONE, "(0|1) Respawn Mode", true, 0.0, true, 1.0 )
bind_pcvar_num(pcvar, g_iCvars[iRespawn])
pcvar = create_cvar("csgor_respawn_delay", "3", FCVAR_NONE, "How much seconds till player will respawn. If ^"csgor_respawn_enable^" is ^"1^".")
bind_pcvar_num(pcvar, g_iCvars[iRespawnDelay])
pcvar = create_cvar("csgor_dropchance", "85", FCVAR_NONE, "Chance of receiving a drop^nBetween 0 and 99^nThe higher the number, the less often you receive a drop", true, 0.0, true, 99.0 )
bind_pcvar_num(pcvar, g_iCvars[iDropChance])
pcvar = create_cvar("csgor_craft_cost", "10", FCVAR_NONE, "How many scraps do player need to create a rare skin", true, 1.0 )
bind_pcvar_num(pcvar, g_iCvars[iCraftCost])
pcvar = create_cvar("csgor_craft_stattrack_cost", "30", FCVAR_NONE, "How many scraps do player need to create a StatTrack skin?", true, 1.0)
bind_pcvar_num(pcvar, g_iCvars[iStatTrackCost])
pcvar = create_cvar("csgor_case_min_cost", "100", FCVAR_NONE, "The minimum price for a box put up for sale", true, 1.0 )
bind_pcvar_num(pcvar, g_iCvars[iCaseMinCost])
pcvar = create_cvar("csgor_key_min_cost", "100", FCVAR_NONE, "The minimum price for a key put up for sale", true, 1.0 )
bind_pcvar_num(pcvar, g_iCvars[iKeyMinCost])
pcvar = create_cvar("csgor_wait_for_place", "30", FCVAR_NONE, "How many seconds do you have to wait until you can place a new ad", true, 1.0 )
bind_pcvar_num(pcvar, g_iCvars[iWaitForPlace])
pcvar = create_cvar("csgor_freezetime", "2", FCVAR_NONE, "Players freezetime ( exepct when teams are changing and end map )", true, 0.0)
bind_pcvar_num(pcvar, g_iCvars[iFreezetime])
pcvar = create_cvar("csgor_startmoney", "850", FCVAR_NONE, "Players start money", true, 1.0)
bind_pcvar_num(pcvar, g_iCvars[iStartMoney])
pcvar = create_cvar("csgor_preview_time", "7", FCVAR_NONE, "How much time a player can preview a skin?", true, 1.0)
bind_pcvar_num(pcvar, g_iCvars[iCPreview])
pcvar = create_cvar("csgor_fast_load", "1", FCVAR_NONE, "Fast resources load for players", .has_max = true, .max_val = 1.0)
bind_pcvar_num(pcvar, g_iCvars[iFastLoad])
pcvar = create_cvar("csgor_grenade_shortthrow_velocity", "0.50", FCVAR_NONE, "Velocity ( in floating value ) of a grenade when it's in short throw mode.")
bind_pcvar_float(pcvar, g_iCvars[flShortThrowVelocity])
pcvar = create_cvar("csgor_enable_roundend_sounds", "1", FCVAR_NONE, "(0|1) Enable / Disable Round End sounds.", true, 0.0, true, 1.0)
bind_pcvar_num(pcvar, g_iCvars[iRoundEndSounds])
pcvar = create_cvar("csgor_show_copyright", "1", FCVAR_NONE, "(0|1) Show / Hide Copyright Information ( Plugin Author )", true, 0.0, true, 1.0)
bind_pcvar_num(pcvar, g_iCvars[iCopyRight])
pcvar = create_cvar("csgor_custom_chat", "1", FCVAR_NONE, "(0|1) Enable / Disable Mod's custom chat ( Chat rank, chat prefix, etc )", true, 0.0, true, 1.0)
bind_pcvar_num(pcvar, g_iCvars[iCustomChat])
pcvar = create_cvar("csgor_antispam_drop", "1", FCVAR_NONE, "(0|1) Enable / Disable anti spam in chat while opening / crafting skins.^n ATTENTION! If ^"csgor_show_dropcraft^" is ^"1^" anti spam is always active.", true, 0.0, true, 1.0)
bind_pcvar_num(pcvar, g_iCvars[iAntiSpam])
pcvar = create_cvar("csgor_bonus_random_range", "1 10 70 93", FCVAR_NONE, "(0|∞) Drop range for bonuses in the bonus menu.^nFirst two values: Min | Max for Cases, Dusts, Points drop.^nLast two values: Min | Max for Skins drop.", true, 0.0)
bind_pcvar_string(pcvar, g_iCvars[szBonusValues], charsmax(g_iCvars[szBonusValues]))
pcvar = create_cvar("csgor_bonus_check_type", "0", FCVAR_NONE, "(0|1) Bonus check type.^n0 - By IP^n1 - By SteamID", true, 0.0, true, 1.0)
bind_pcvar_num(pcvar, g_iCvars[iCheckBonusType])
pcvar = create_cvar("csgor_userinfo_field", "_csgorpw", FCVAR_NONE, "Userinfo field to check / store player's account password")
bind_pcvar_string(pcvar, g_iCvars[szUserInfoField], charsmax(g_iCvars[szUserInfoField]))
g_iCvars[iCmdAccess] = create_cvar("csgor_commands_access", "a", FCVAR_NONE, "Access flags for admin commands.^nMaximum 9 flags.")
AutoExecConfig(true, "csgo_remake", "csgor" )
register_cvar("csgore_version", VERSION, FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_UNLOGGED|FCVAR_SPONLY)
register_dictionary("csgor_language.txt")
g_Msg_SayText = get_user_msgid("SayText")
g_Msg_StatusIcon = get_user_msgid("StatusIcon")
g_Msg_DeathMsg = get_user_msgid("DeathMsg")
register_message(g_Msg_SayText, "Message_SayText")
register_message(g_Msg_DeathMsg, "Message_DeathMsg")
register_event("HLTV", "ev_NewRound", "a", "1=0", "2=0")
register_event("TextMsg", "event_Game_Restart", "a", "2=#Game_will_restart_in")
register_event("TextMsg", "event_Game_Commencing", "a", "2&#Game_C")
register_event("SendAudio", "ev_RoundWon_T", "a", "2&%!MRAD_terwin")
register_event("SendAudio", "ev_RoundWon_CT", "a", "2=%!MRAD_ctwin")
register_event(EVENT_SVC_INTERMISSION, "ev_Intermission", "a")
register_event("DeathMsg", "ev_DeathMsg", "ae", "1>0")
register_event("Damage", "ev_Damage", "be", "2!0", "3=0", "4!0")
for ( new i; i < sizeof(GrenadeName); i++ )
{
RegisterHam(Ham_Weapon_PrimaryAttack, GrenadeName[i], "Ham_GrenadePrimaryAttack_Pre")
RegisterHam(Ham_Weapon_SecondaryAttack, GrenadeName[i], "Ham_GrenadeSecondaryAttack_Pre")
}
for(new i = 0; i < sizeof(g_szWeaponEntName); i++)
{
RegisterHam(Ham_Item_Deploy, g_szWeaponEntName[i], "Ham_Item_Deploy_Post", 1)
RegisterHam(Ham_CS_Item_CanDrop, g_szWeaponEntName[i], "Ham_Item_Can_Drop_Pre")
RegisterHam(Ham_CS_Weapon_SendWeaponAnim, g_szWeaponEntName[i], "HamF_CS_Weapon_SendWeaponAnim_Post", 1)
}
for (new i; i < sizeof(TraceBullets); i++)
{
RegisterHam(Ham_TraceAttack, TraceBullets[i], "HamF_TraceAttack_Post", 1)
}
RegisterHam(Ham_Spawn, "player", "Ham_Player_Spawn_Post", 1)
RegisterHam(Ham_TakeDamage, "player", "Ham_Take_Damage_Post", 1)
RegisterHam(Ham_Killed, "player", "Ham_Player_Killed_Pre");
RegisterHam(Ham_Killed, "player", "Ham_Player_Killed_Post", 1)
RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_m4a1", "Ham_Weapon_Secondary_Pre")
register_forward(FM_PlaybackEvent, "FM_Hook_PlayBackEvent_Pre")
register_forward(FM_PlaybackEvent, "FM_Hook_PlayBackEvent_Primary_Pre")
register_forward(FM_ClientUserInfoChanged, "FM_ClientUserInfoChanged_Pre")
register_forward(FM_ClientUserInfoChanged, "FM_ClientUserInfoChanged_ClientWeap_Pre")
p_Freezetime = get_cvar_pointer("mp_freezetime")
p_StartMoney = get_cvar_pointer("mp_startmoney")
pNextMap = get_cvar_pointer("amx_nextmap")
g_MsgSync = CreateHudSyncObj()
g_WarmUpSync = CreateHudSyncObj()
g_iMaxPlayers = get_maxplayers()
#if defined HUD_POS
register_clcmd("say /hudpos_menu", "clcmd_say_hudpos")
#endif
register_clcmd("say", "hook_say")
register_clcmd("say_team", "hook_sayteam")
register_clcmd("say /reg", "clcmd_say_reg")
register_clcmd("say /menu", "clcmd_say_menu")
register_clcmd("say /skin", "clcmd_say_skin")
register_clcmd("say /accept", "clcmd_say_accept")
register_clcmd("say /deny", "clcmd_say_deny")
register_clcmd("say /acceptcoin", "clcmd_say_accept_coin")
register_clcmd("say /denycoin", "clcmd_say_deny_coin")
register_clcmd("say /bonus", "clcmd_say_bonus")
register_clcmd("say /savepass", "clcmd_say_savepass")
register_concmd("inspect", "inspect_weapon")
register_concmd("preview", "clcmd_say_preview")
register_concmd("inventory", "clcmd_say_inventory")
register_concmd("opencase", "clcmd_say_opencase")
register_concmd("dustbin", "clcmd_say_dustbin")
register_concmd("market", "clcmd_say_market")
register_concmd("gift", "clcmd_say_gifttrade")
register_concmd("trade", "clcmd_say_gifttrade")
register_concmd("games", "clcmd_say_games")
register_concmd("UserPassword", "concmd_password")
register_concmd("ChatTag", "concmd_chattag")
register_concmd("ItemPrice", "concmd_itemprice")
register_concmd("Promocode", "concmd_promocode")
register_concmd("BetRed", "concmd_betred")
register_concmd("BetWhite", "concmd_betwhite")
register_concmd("BetYellow", "concmd_betyellow")
register_impulse(100, "inspect_weapon")
new Flags[10]
get_pcvar_string(g_iCvars[iCmdAccess], Flags, charsmax(Flags))
new Access = read_flags(Flags)
register_concmd("amx_givepoints", "concmd_givepoints", Access, "<Name> <Amount>")
register_concmd("amx_givecases", "concmd_givecases", Access, "<Name> <Amount>")
register_concmd("amx_givekeys", "concmd_givekeys", Access, "<Name> <Amount>")
register_concmd("amx_givedusts", "concmd_givedusts", Access, "<Name> <Amount>")
register_concmd("amx_setskins", "concmd_giveskins", Access, "<Name> <SkinID> <Amount>")
register_concmd("amx_give_all_skins", "concmd_give_all_skins", Access, "<Name>")
register_concmd("amx_setrank", "concmd_setrank", Access, "<Name> <Rank ID>")
register_concmd("amx_finddata", "concmd_finddata", Access, "<Name>")
register_concmd("amx_resetdata", "concmd_resetdata", Access, "<Name> <Mode>")
register_concmd("amx_change_pass", "concmd_changepass", Access, "<Name> <New Password>")
register_concmd("csgor_getinfo", "concmd_getinfo", Access, "<Type> <Index>")
register_concmd("amx_nick_csgo", "concmd_nick", Access, "<Name> <New Name>")
register_concmd("amx_skin_index", "concmd_skin_index", Access, "<Skin Name>")
if (g_iCvars[iOverrideMenu])
{
register_clcmd("chooseteam", "clcmd_chooseteam")
}
set_task(2.0, "DetectSaveType")
}
public DetectSaveType()
{
#if defined DEBUG
log_to_file("csgor_debug_logs.log", "DetectSaveType()")
#endif