This repository has been archived by the owner on Sep 17, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
/
code.txt
2220 lines (1869 loc) · 78.9 KB
/
code.txt
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
@name grim's assistant v17-1007
@outputs Explosive
@persist Owner:entity Follow Light Vector:vector Su [Version WebVersion MOTD]:string Update NewCode:string VersionInfo:array
@persist Ent:entity EntTarget:entity InfExplosive DevLock
@persist Height Height2 Target Who:entity WorldPos:vector
@persist OrbitType OrbitRadius OrbitVelocity SSource:entity PropInfo PropOwner:string
@persist Color:vector Color4:vector4 HSize:vector Size:number Skin:string Trail:string TrailColor:vector TrailSize:number Opacity:number NotSolid:number HSkin:string
@persist PropCore #addon check
@persist Snake SnakeList:array SnakeTarget:entity Counter Max
@persist Necromancer Base:vector Delay NecroTarget:entity E:entity
@persist Psychokinesis Holding Use HoldDistance ThrowStrength Haax
@persist Revenge Players:array PlayerKills:array Deaths WhoDeaths PlayerCount
@persist Aggregate AggPlayer:entity AggTarget PropList:array PropPositionList:array SearchFlag PropCount Index ExplosionPosition:vector ExplosionSequenceInitiated NumPropsAtDestination AllPropsAtDestination PropsVibrating Exploding
@persist Blind BlindTarget:entity EarRape MusicList:array
@persist Locate Locating LocateList:array LocateListNames:array
@persist NPCArmy Army:array ArmyTarget:entity ArmyPos:vector ArmyFollow
@model models/hunter/misc/sphere025x025.mdl
###############-- Assistant by Grim Kriegor --###############
# grimkriegor@krutt.org
Version = "v17-1007"
#Your assistant will inform you everytime a new version is avaliable!
#There's a changelog at the end of the code...
#[
V E R Y USEFULL COMMAND LIST BELOW [SCROLL DOWN]
and also some history too:
----------------------------------------------------------------------------------------------
Hey there!
I wrote the first lines of this little toy back in July of 2010 when learning the magix of Expression2.
With the intention of stuffing every possible ability I could into one single chip a created the
assistant as a tool for my day to day Garry's Mod needs.
As its popularity began to increasce I remained concerned with the minge-magnitude that could be unleashed
with it. It was in early 2011 that I finally decided to release the source code and unlock the anti-dupe protection
I had built into the chip.
As of now you are able to receive updates as they are released on git, directly into the assistant embeded code updater, you are also free to share and edit it under the terms of the General Public License version 2.
I hope you have fun with this simple toy. As some users have already done, feel free to email me with any questions you might have. Even tho it has been years since I coded into the assistant, I still enjoy helping people using it.
> The small percentage of the code I didnt write is credited in the Command List Below.
> 25% of the maxquota is a lot while idle, I know. I dont know how to decreasce that without deletting half of the code. Feel free to share if you have any method of making it more efficient in that regard.
------------------------------------------------------------------------------------------------
MANY THANKS TO:
- Luck Wielding Lunatic (for being the best gaming pal of all tiemz :D)
- NeO_Huperman (for hosting his amazing GMod Server)
- Silicon (for his leet skills and will to help, also for hosting his MaximumTrolling-Sponge-compatible Server :D
- Ghostrin, bestchallenger|PT|, Clicklord, Kamakazebanzai,
OMEGA, BeafyBubbles, Donut, mr. bubbles, Beaver,
Zatrac and Galacon (for the inspiration and support)
- All the E2 authors and Minges that contributed and inspired the concepts and features in this code
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
--- Updater ---
/update - updates or redownloads The Assistant from the Web (git repository)
--- Position ---
/height NUMBER - changes Height to NUMBER (Default=120)
/up | /down - +-10 Height
/radius NUMBER - changes the orbit radius to NUMBER (Default=70)
/ovelocity NUMBER - changes orbit velocity to NUMBER (Default=90)
/master - follow OWNER
/omaster or /nomaster - orbit OWNER
/cross - follow CROSSHAIRS
/ocross - orbit CROSSHAIRS
/follow PLAYER - follow PLAYER
/orbit PLAYER or /norbit PLAYER - orbit PLAYER
/that - follow TARGET ENTITY [CROSSHAIRS ON TARGET]
/othat - orbit TARGET ENTITY [CROSSHAIRS ON TARGET]
/place - hover TARGET COORDINATES [CROSSHAIRS ON MAP]
/oplace or /noplace - hover and orbit CROSSHAIRS COORDINATES [CROSSHAIRS ON MAP]
/gosleep - makes the drone deactivates itself in a location [CROSSHAIRS ON MAP]
--- Skills ---
/sd! - Self Destruction!!!
bba - activates EXPLOSIVE OUTPUT
/ppinfo - activates PropInfo (MouseKey2 on target to see the owner)
/ppinfooff deactivates PropInfo
!brl or !brls - spawns 1 or 10 barrels, respectively (needs 'wire_expression2_concmd 1')
/fury PLAYER - follow PLAYER with FURY MODE (hurts PLAYER)
/efury PLAYER - follow PLAYER with FURY MODE and repetitive explosions
/torture PLAYER - uses both the Blind major skill, the /earrape and the /efury skills to torment PLAYER
/tortureoff - deactivates Torture
/earrape - activates the Ear Rape skill
/earrapeoff - deactivates the Ear Rape skill
/e2list - lists all the Expression2 chips in the server
--- Skills + Return ---
(NOTE: 'say mbba' and 'say mbbas' should be binded to Keyboard Keys for easy access)
pbba PLAYER - assassinates PLAYER with Explosives and returns (needs explosives wired to EXPLOSIVE OUTPUT)
mbba - explodes in the CROSSHAIR LOCATION and returns
mbbas - explodes in the CROSSHAIR LOCATION, spawning 10 flaming barrels and returns (needs a huge HP explosive, or else might kill the owner when returning) (needs 'wire_expression2_concmd 1')
find PLAYER - finds PLAYER and returns
findi PLAYER - finds PLAYER and returns invisible
--- Cammo ---
/invisible - makes the Assistant invisible
/visible - makes the Assistant visible
/sneak - makes OWNER invisible
/unsneak - makes OWNER visible
/hide = /invisible + /sneak
/unhide = /visible + /unsneak
--- Body ---
/ghost - Activates GHOST Mode making the Assistant Non-Solid [!!! REQUIRES the PropCore plugin !!!]
/unghost - Deactivates GHOST Mode
/body reset - resets the body options (color, size...)
/size NUMBER - changes the size to NUMBER
/trailsize NUMBER - changes the trail size to NUMBER
/body COLOR - changes the color preset
COLOURs are: black, yellow, green, green2, blue, red, white, white2 and electric
--- Sounds ---
/soundstop - stops the music player and the ambient sounds
/ss_(owner, ent, weld, target) - changes the source of the sound (Default='/ss_owner')
/music | /music NUMBER - activates or changes the music track (/music will pick a random track)
/ambient | /ambient NUMBER - activates or changes the ambient track (/ambient will pick a random track)
--- Movement and General ---
/on - turns ON the movement
/off - turns OFF the movement
/reset - turns ON the movement and restarts the position to default
/skillsoff - turns OFF all the MAJOR SKILLS
/reboot - reboots the chip, as if it just spawned
/su PLAYER - changes user to PLAYER (/su reverts back to the original owner)
---- Major Skills ----
----------------------
::: Snake :::
(With this skill all the OWNER's props with the model Helicopter Bomb will spin above the player's head and attack the CROSSHAIRS when the CTRL key is pressed)
(If a player was targeted by this skill, the props will stop attacking the CROSSHAIRS position to attack the targeted player)
(Many thanks to 'EXO's Propsnake' for providing part of the code)
/snkon - activates Snake
/snkoff - deactivates Snake
/snkreset - resets Snake
/snk PLAYER - assigns PLAYER as Snake's target (will sometimes fail, try /snkoff first)
/snks - activates Snake and spawns 10 HeliBombs (needs 'wire_expression2_concmd 1')
::: Necromancer :::
(This skill allows the player to animate a Ragdoll to attack someone)
(I gotta thank 'Bone Example: Zombie (by Shoffing)' from the GMod's Wiki for providing the base code)
/necro PLAYER - assigns PLAYER as NECROMANCER's target and activates it [CROSSAIRS ON THE RAGDOLL]
/necroon - activates NECROMANCER
/necrooff - deactivates NECROMANCER
/necroset PLAYER - sets PLAYER as NECROMANCER'S target on that ragdoll with the ragdoll still inactive [CROSSAIRS ON THE RAGDOLL]
/necrochange PLAYER - sets PLAYER as the new NECROMANCER's target
::: Psychokinesis :::
(A skill that allows the player to pick up a Prop and throw it around, use it as a boomerang and increase its mass for maximum throwing power)
(Thanks to 'Roflc0pter's Snake E2' for the concept)
(E key to select prop/grab prop/release prop || Mouse1 to throw || Mouse2 to recall selected prop/increase its mass)
('say !brl' should be binded to a Keyboard Key for easy explosive barrel spawn)
/kinesis - activates PSYCHOKINESIS
/kinesisoff - deactivates PSYCHOKINESIS
/kinesisreset - resets PSYCHOKINESIS
mmss - increases the selected prop's mass to MAX
!haax - DR.HAAX sounds
!haaxoff - deactivates DR.HAAX sounds
::: Revenge :::
(This skill will kill someone who kills you, with the Bomb Assassination SKill)
(Props to 'Fairy by MURDATS' for the concept)
/revenge - activates REVENGE MODE and avenges OWNER's last death last death
/revengeon - activates REVENGE MODE without avenging the OWNER's last death
/revengeoff - deactivates REVENGE MODE
::: Aggregate :::
(This one allows you to make explosive barrels Aggregate in a spot)
(All credit goes to EXO for his 'PropSplosion E2'. I just merged it with this drone because it was such a cool E2)
(E key to make the barrels Aggregate in the CROSSHAIRS spot)
(BROTIP: Spawn barrels in a distant location with the '!brls', activate the skill '/agg',
press E on the Target Location, wait until the barrels start flying up, and then E again to make them rain)
/agg - activates AGGREGATE
/aggoff - deactivates AGGREGATE
/aggp PLAYER - set AGGREGATE's Target to PLAYER
::: Blind:::
(Covers the target's field of vision)
/blind PLAYER - blinds PLAYER
/unblind - deactivates the Blind Major Skill
::: Locate :::
(Creates a holo HUD pointing the location of the selected players or E2 Chips)
(Thx to Failcake's E2 Finder, for providing the brilliant concept & the color change by distance method, its pretty neat)
(Red/Orange is for normal players and E2 Chips, Green for Steam Friends and Blue for admins)
/locate PLAYER - activates and adds PLAYER to the Locate List
/locate e2 /or/ friends - activates, lists and locates E2 Chips or Steam Friends
/loca PLAYER - activates and locates PLAYER (and only PLAYER)
/locateoff - resets the list and deactivates the LOCATE Major Skill
::: NPC Army :::
(Allows the user to mobilize a group of NPCs to his will)
(Press E to make the army go to a spot on the map near them)
(They will attack anyone you attack)
/army - activates the Army
/armyoff - deactivates the Army
/armyfollow - toggles the Follow mode
/army WEAPON - gives WEAPON to the army (ex: /army pistol)
/armyattack PLAYER - makes the Army target PLAYER
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
]#
#Boot Sequence --------------------------------------------------------
if (first()|duped()) {
runOnTick(1)
runOnChat(1)
#ifdef httpData()
runOnHTTP(1)
#endif
DevLock=0
setName("grim's assistant "+Version)
hint(" Assistant by Grim Kriegor ",10)
print(_HUD_PRINTCENTER,"grim's assistant")
print("Version: "+Version)
print("by Grim Kriegor")
if (owner():name()=="Grim Kriegor" & owner():steamID() != "STEAM_0:0:10211667") {selfDestructAll() , hint("Wrong Username",5)}
Owner=owner()
#Version Check (SEND REQUEST)
#ifdef httpData()
if(httpCanRequest()) {
httpRequest("https://raw.github.com/GrimKriegor/assistant/master/VERSION")
}
#else
print("Wire HTTP Functions are turned off on this server. Auto Updater is disabled.")
#endif
entity():soundPlay(1,0,"buttons/blip2.wav")
#Major Skills
Necromancer=0
Snake=0
Psychokinesis=0
PropInfo=0
Revenge=0
Aggregate=0
Blind=0
Locate=0
NPCArmy=0
#Default Position
EarRape=0
InfExplosive=0
OrbitType=11
Target=11
OrbitRadius=75
Height=120
Height2=120
OrbitVelocity=90
timer("reset",7000)
#Psychokinesis
Haax=0
HoldDistance = 150
ThrowStrength = 3500
#Misc
SSource=entity():owner()
Ent1=entity()
Ent= Ent1 #(Ent1:isWeldedTo() ? Ent1:isWeldedTo() : Ent1)
#Default Body
Size=1
HSize=vec(Size,Size,Size)
Skin="models/gibs/metalgibs/metal_gibs"
HSkin=Skin
Trail="trails/plasma"
TrailSize=15
TrailColor=vec(0,255,0)
Opacity=255
NotSolid=0
entity():setMaterial(Skin)
entity():setTrails(TrailSize,1,1,Trail,TrailColor,Opacity) interval(10)
#### Development Lock ####
if (DevLock) {
if (owner():steamID() != "STEAM_0:0:10211667") {
hint("Grim's Assistant can only be controled by its owner",7)
selfDestructAll()}else{print("-- Development Lock! --")}}
### Blacklisted Abusive Users ###
BlackListed=array("wpww" , "STEAM_fag1")
for(B=1, BlackListed:count()) {
if (owner():name():lower() == BlackListed[B, string] | owner():steamID() == BlackListed[B, string]) {
hint("grim's assistant: Blacklisted for Abusive Usage",7) , selfDestruct()}
}
}
# End of the Boot Sequence
# --------------------------------------------------------------------------------------
#Core Constants ------------------------------------------
Inertia=Ent:inertia():length()/sqrt(3)
LastSaid=Owner:lastSaid():lower():explode(" ")
LastSaid1=LastSaid:string(1)
LastSaid2=LastSaid:string(2)
GLastSaid=lastSaid():lower():explode(" ")
GLastSaid1=GLastSaid:string(1)
GLastSaid2=GLastSaid:string(2)
#Hey, have you seen my trash can with a shitload of guns in it? " LwL
Me=Owner:pos()
Aim=Owner:aimPos()
Circle=vec(0,1,0):rotate(0,curtime()*OrbitVelocity,0) #Vector circular
Speed=toUnit("km/h", Owner:vel():length())
Strength=10000000
Use = owner():keyUse()
KeyAttack1 = owner():keyAttack1()
KeyAttack2 = owner():keyAttack2()
#----------------------------------------------------------
#Version Check
#ifdef httpData()
if (httpClk() & httpRequestUrl()=="https://raw.github.com/GrimKriegor/assistant/master/VERSION") {
VersionInfo=httpData():trim():explode(";")
WebVersion=VersionInfo:string(1)
MOTD=VersionInfo:string(2)
if (Version!=WebVersion & WebVersion!="") {timer("versioncheck",7000)}
if (MOTD!="") {timer("motd",20000)}
}
if(clk("versioncheck")){
hint("Version ["+WebVersion+"] is avaliable on the web!",7)
timer("versioncheck2",2000)
}
if(clk("versioncheck2")) {hint("Type /update to update from ["+Version+"] to ["+WebVersion+"]",7)}
if(clk("motd")) {hint("Message from Grim: "+MOTD,7) , Ent:soundPlay(1,0,"ui/buttonrollover.wav")}
#endif
#Addon/Plugin Checker ------------------------------------------------
#PropCore
#ifdef entity:propNotSolid(number)
if (first() | duped()) {PropCore=1}
#endif
#Body Hologram
if (first() | duped()) {holoCreate(1000), holoAlpha(1000,0)}
if (Size>1) {
runOnTick(1)
runOnChat(1)
holoAlpha(1000,255)
#holoCreate(1000)
holoModel(1000,"hq_sphere")
holoParent(1000,entity())
holoMaterial(1000,HSkin)
holoColor(1000, Color4)
holoScale(1000,HSize)
holoPos(1000,entity():pos())
holoAng(1000,entity():angles())}
else {holoAlpha(1000,0)}
#Body Solidity
#ifdef entity:propNotSolid(number)
runOnChat(1)
entity():propNotSolid(NotSolid)
entity():isWeldedTo():propNotSolid(NotSolid)
#endif
#My magic balls provide me with everything I desire! No wonder I have a beautiful wife, a sports car and two lovely houses... because... everything I desire just comes out of my balls! Weeeee! " WaverlyFilms
## Chat Triggers ---------------------------------------------
if (chatClk(Owner)) {
#Updater & Related --------------------------------------------------
if (LastSaid1=="/update") {
hideChat(1)
timer("update",10000)
hint("Attempting update to version ["+WebVersion+"]",5)
entity():soundPlay(1,0,"buttons/button9.wav")
}
if (LastSaid1=="/help" | LastSaid1=="/list") {
hideChat(1)
#print(_HUD_PRINTCONSOLE,HelpText) , print(_HUD_PRINTCONSOLE,HelpText2)
#hint("Look at your console!",5)
hint("Feature to be implemented in the future, read the first 200 lines of the code instead",5)
entity():soundPlay(1,0,"common/bugreporter_succeeded.wav")
}
#Position --------------------------------------------------
if (LastSaid1=="/height") {
hideChat(1)
Height2=Height=LastSaid2:toNumber()
entity():soundPlay(1,0,"buttons/combine_button1.wav")
hint("Height is now "+Height,5)
}
elseif (LastSaid1=="/up") {
hideChat(1)
Height2=Height=Height+10
entity():soundPlay(1,0,"buttons/combine_button1.wav")
hint("Height is now "+Height,5)
}
elseif (LastSaid1=="/down") {
hideChat(1)
Height2=Height=Height-10
entity():soundPlay(1,0,"buttons/combine_button1.wav")
hint("Height is now "+Height,5)
}
elseif (LastSaid1=="/radius") {
hideChat(1)
OrbitRadius=LastSaid2:toNumber()
entity():soundPlay(1,0,"buttons/combine_button2.wav")
hint("Orbit Radius is now "+OrbitRadius,5)
}
elseif (LastSaid1=="/ovelocity") {
hideChat(1)
OrbitVelocity=LastSaid2:toNumber()
entity():soundPlay(1,0,"buttons/combine_button3.wav")
hint("Orbit Velocity is now "+OrbitVelocity,5)
}
#Replace the sponge in the center of the spaceship or face explosion " Silicon
elseif (LastSaid1=="/master") {
hideChat(1)
Target=1
entity():soundPlay(1,0,"buttons/combine_button5.wav")
hint("Hovering Owner",5)
}
elseif (LastSaid1=="/cross") {
hideChat(1)
Target=2
entity():soundPlay(1,0,"buttons/combine_button1.wav")
hint("Hovering the Crosshairs' Position",5)
}
elseif (LastSaid1=="/ocross") {
hideChat(1)
Target=3
entity():soundPlay(1,0,"buttons/combine_button1.wav")
hint("Orbiting Crossairs' Position",5)
}
elseif (LastSaid1=="/omaster") {
hideChat(1)
Target=11
OrbitType=11
entity():soundPlay(1,0,"buttons/combine_button_locked.wav")
hint("Orbiting Owner",5)
}
elseif (LastSaid1=="/nomaster") {
hideChat(1)
Target=4
OrbitType=4
entity():soundPlay(1,0,"buttons/combine_button_locked.wav")
hint("Orbiting Owner (Alternative Orbit)",5)
}
elseif (LastSaid1=="/follow") {
hideChat(1)
Target=5
Who=findPlayerByName(LastSaid2)
entity():soundPlay(1,0,"buttons/combine_button2.wav")
hint("Hovering "+Who:name(),5)
}
elseif (LastSaid1=="/that") {
hideChat(1)
Height=20
Target=6
EntTarget=Owner:aimEntity()
entity():soundPlay(1,0,"buttons/combine_button3.wav")
hint("Hovering Entity",5)
}
elseif (LastSaid1=="/place") {
hideChat(1)
#Height=100
Target=9
WorldPos=Owner:aimPos()
entity():soundPlay(1,0,"buttons/combine_button2.wav")
hint("Hovering this Coordinates",5)
}
elseif (LastSaid1=="/oplace") {
hideChat(1)
#Height=100
Target=13
WorldPos=Owner:aimPos()
entity():soundPlay(1,0,"buttons/combine_button7.wav")
hint("Orbiting this Coordinates",5)
}
elseif (LastSaid1=="/noplace") {
hideChat(1)
#Height=100
Target=10
WorldPos=Owner:aimPos()
entity():soundPlay(1,0,"buttons/combine_button7.wav")
hint("Orbiting this Coordinates",5)
}
elseif (LastSaid1=="/othat") {
hideChat(1)
Target=14
EntTarget=Owner:aimEntity()
entity():soundPlay(1,0,"buttons/combine_button3.wav")
hint("Orbiting Entity",5)
}
elseif (LastSaid1=="/nothat") {
hideChat(1)
Target=8
EntTarget=Owner:aimEntity()
entity():soundPlay(1,0,"buttons/combine_button3.wav")
hint("Orbiting Entity",5)
}
elseif (LastSaid1=="/orbit") {
hideChat(1)
Target=12
Who=findPlayerByName(LastSaid2)
entity():soundPlay(1,0,"buttons/combine_button2.wav")
hint("Orbiting "+Who:name(),5)
}
elseif (LastSaid1=="/norbit") {
hideChat(1)
Target=7
Who=findPlayerByName(LastSaid2)
entity():soundPlay(1,0,"buttons/combine_button2.wav")
hint("Orbiting "+Who:name(),5)
}
#Skills ---------------------------------------
elseif (LastSaid1=="/sd!") {
hideChat(1)
hint("Self Destructed!!!",5)
selfDestructAll()
}
elseif (LastSaid1=="bba") {
hideChat(1)
Explosive=1
timer("explosive",1000)
if (->Explosive) {hint("Bomb!",5) , entity():soundPlay(5,1.5,"ambient/alarms/siren.wav",0.5)}else{hint("Sorry, but you need to wire an Explosive for this to work!",7)}
}
elseif (LastSaid1=="/ppinfo") {
hideChat(1)
PropInfo=1 hint("PropInfo is ON",5)
}
elseif (LastSaid1=="/ppinfooff") {
hideChat(1)
PropInfo=0 hint("PropInfo is OFF",5)
}
elseif (LastSaid1=="!brls") {
hideChat(1)
for (I=1,10) {concmd("gm_spawn models/props_c17/oildrum001_explosive.mdl")}
entity():soundPlay(1,0,"buttons/combine_button2.wav")
hint("Spawning Barrels",5)
}
elseif (LastSaid1=="/fury") {
hideChat(1)
Target=7
Height=20
OrbitVelocity=5000
Who=findPlayerByName(LastSaid2)
entity():soundPlay(1,0,"buttons/combine_button7.wav")
hint("Fury Tackle on "+Who:name(),5)
}
elseif (LastSaid1=="/efury") {
hideChat(1)
InfExplosive=1
Follow=1
Target=7
Height=20
OrbitVelocity=5000
Who=findPlayerByName(LastSaid2)
timer("infiniteexplosive",500)
entity():soundPlay(1,0,"buttons/combine_button7.wav")
hint("Fury Explosive on "+Who:name(),5)
}
elseif (LastSaid1=="/torture") {
hideChat(1)
InfExplosive=1
EarRape=1
Follow=1
Target=7
Height=20
OrbitVelocity=5000
Blind=1
Who=findPlayerByName(LastSaid2)
BlindTarget=findPlayerByName(LastSaid2)
for(I=1,3) {holoAlpha(I,255)}
timer("infiniteexplosive",500)
entity():soundPlay(1,0,"buttons/combine_button7.wav")
hint("Torturing "+Who:name(),5)
}
elseif (LastSaid1=="/tortureoff") {
hideChat(1)
InfExplosive=0
EarRape=0 , for(I=9,11) {soundStop(I)}
Follow=1
Target=OrbitType
OrbitVelocity=90
OrbitRadius=75
Height=120
Height2=120
for(I=1,3) {holoAlpha(I,0)}
entity():soundPlay(1,0,"buttons/combine_button2.wav")
hint("Torture is now OFF",5)
}
elseif (LastSaid1=="/earrape") {
hideChat(1)
EarRape=1
hint("Ear Rape is ON",5)
}
elseif (LastSaid1=="/earrapeoff") {
hideChat(1)
EarRape=0 , for(I=9,11) {soundStop(I)}
hint("Ear Rape is OFF",5)
}
elseif (LastSaid1=="/e2list") {
hideChat(1)
findByClass(entity():type())
E2List=findToArray()
for (I=1,E2List:count()) {
print("("+I:toString()+") "+E2List:entity(I):getName()+" | "+E2List:entity(I):owner():name())}
if (E2List:count()==0) {print("No Expression2 Chips discovered!")}
}
#Skills + Return ---------------------------------------
elseif (LastSaid1=="pbba") {
hideChat(1)
Follow=1
Target=5
Who=findPlayerByName(LastSaid2)
entity():soundPlay(1,0,"buttons/combine_button2.wav")
timer("explosive2",3000)
timer("reset",4200)
hint("Assassinating "+Who:name(),5)
}
elseif (LastSaid1=="mbba") {
hideChat(1)
Follow=1
Target=2
Height=30
entity():soundPlay(1,0,"buttons/combine_button2.wav")
timer("explosive2",2000)
timer("reset",3200)
hint("Crosshairs Explosion",5)
}
elseif (LastSaid1=="mbbas") {
hideChat(1)
Follow=1
Target=2
Height=30
entity():soundPlay(1,0,"buttons/combine_button1.wav")
#timer("barrels",1600) #when using an explosive without delay
timer("barrels",2600)
timer("explosive2",2000)
timer("reset",3100)
hint("Crosshairs Explosion with Flaming Barrels",5)
}
elseif (LastSaid1=="find") {
hideChat(1)
Follow=1
Target=5
Who=findPlayerByName(LastSaid2)
entity():soundPlay(1,0,"buttons/combine_button2.wav")
timer("reset",3000)
hint("Locating "+Who:name(),5)
}
elseif (LastSaid1=="findi") {
hideChat(1)
Follow=1
Target=5
Who=findPlayerByName(LastSaid2)
entity():soundPlay(1,0,"buttons/combine_button2.wav")
Opacity=255
Color4=vec4(255,255,255,Opacity)
entity():setColor(Color4)
entity():setMaterial(Skin)
entity():setTrails(TrailSize,1,1,Trail,TrailColor,Opacity) interval(10)
hint("The Assistant is visible",5)
timer("reset",3000)
timer("invisible",3000)
hint("[INVISIBLE] Locating "+Who:name(),5)
}
elseif (LastSaid1=="/gosleep") {
hideChat(1)
Follow=1
WorldPos=Owner:aimPos()
Target=9
Height=10
timer("off",3000)
hint("Going to sleep...",5)
}
#Cammo -----------------------------------------------
elseif (LastSaid1=="/invisible") {
hideChat(1)
Opacity=0
Color4=vec4(0,0,0,Opacity)
Size=1
HSize=vec(Size,Size,Size)
TrailSize=Size*15
entity():setColor(Color4)
entity():setTrails(TrailSize,1,1,Trail,TrailColor,Opacity) interval(10)
hint("The Assistant is now Invisible",5)
}
elseif (LastSaid1=="/visible") {
hideChat(1)
Opacity=255
Color4=vec4(255,255,255,Opacity)
entity():setColor(Color4)
entity():setMaterial(Skin)
entity():setTrails(TrailSize,1,1,Trail,TrailColor,Opacity) interval(10)
entity():soundPlay(5,7,"ambient/alarms/warningbell1.wav")
hint("The Assistant is now Visible",5)
}
elseif (LastSaid1=="/sneak") {
hideChat(1)
owner():setColor(0,0,0,0)
owner():setMaterial("models/effects/vol_light001.mdl")
#Owner:weapon():setMaterial("models/effects/vol_light001.mdl")
hint("You are now Invisible",5)
}
elseif (LastSaid1=="/unsneak") {
hideChat(1)
owner():setColor(255,255,255,255)
owner():setMaterial("")
#Owner:weapon():setMaterial("")
entity():soundPlay(5,7,"ambient/alarms/warningbell1.wav")
hint("You are now Visible",5)
}
elseif (LastSaid1=="/hide") {
hideChat(1)
Opacity=0
Color4=vec4(0,0,0,Opacity)
Size=1
HSize=vec(Size,Size,Size)
TrailSize=Size*15
entity():setColor(Color4)
entity():setTrails(TrailSize,1,1,Trail,TrailColor,Opacity) interval(10)
owner():setColor(0,0,0,0)
owner():setMaterial("models/effects/vol_light001.mdl")
for(I=2,8) {holoAlpha(I,0)}
#Owner:weapon():setMaterial("models/effects/vol_light001.mdl")
entity():soundPlay(1,0,"ambient/hallow07.wav")
hint("You and The Assistant are now Invisible",5)
}
elseif (LastSaid1=="/unhide") {
hideChat(1)
Opacity=255
Color4=vec4(255,255,255,Opacity)
entity():setColor(Color4)
entity():setMaterial(Skin)
entity():setTrails(TrailSize,1,1,Trail,TrailColor,Opacity) interval(10)
entity():soundPlay(5,7,"ambient/alarms/warningbell1.wav")
owner():setColor(255,255,255,255)
owner():setMaterial("")
entity():soundPlay(5,7,"ambient/alarms/warningbell1.wav")
hint("You and The Assistant are now Visible",5)
}
#Sound ------------------------------------------
elseif (LastSaid1=="/soundstop") { hideChat(1) , soundStop(2) , soundStop(3) , hint("Stopping the Music Player and the Ambient Sounds",5)}
#Soundsource
elseif (LastSaid1=="/ss_owner") {hideChat(1) SSource=entity():owner()}
elseif (LastSaid1=="/ss_ent") {hideChat(1) SSource=entity()}
elseif (LastSaid1=="/ss_weld") {hideChat(1) SSource=entity():isWeldedTo()}
elseif (LastSaid1=="/ss_target") {hideChat(1) SSource=EntTarget}
#Background Music
elseif (LastSaid1=="/music") {
hideChat(1)
MusicList=array(
"music/stingers/hl1_stinger_song28.mp3",
"music/hl2_song20_submix4.mp3",
"music/hl2_song29.mp3",
"music/hl2_song33.mp3",
"music/hl2_song26.mp3",
"music/hl2_song25_teleporter.mp3",
"music/ravenholm_1.mp3",
"music/hl2_song15.mp3",
"music/hl1_song10.mp3",
"music/hl1_song15.mp3",
"music/hl2_song3.mp3",
"music/hl1_song17.mp3",
"music/hl2_song12_long.mp3",
"music/hl2_song16.mp3",
"music/hl2_song23_suitsong3.mp3",
"music/hl2_song20_submix0.mp3",
"music/hl1_song19.mp3",
"music/hl1_song14.mp3",
"music/hl2_song29.mp3",
"music/hl2_song6.mp3",
"music/hl2_song8.mp3",
"music/vlvx_song3.mp3",
"music/stingers/industrial_suspense2.wav",
"music/portal_still_alive.mp3",
"music/portal_4000_degrees_kelvin.mp3",
"music/portal_self_esteem_fund.mp3",
"music/portal_stop_what_you_are_doing.mp3",
"music/portal_android_hell.mp3",
"music/portal_no_cake_for_you.mp3"
)
if (LastSaid2:toNumber()==0) {
RandomMusic=randint(1,MusicList:count())
hint("Now Playing: "+RandomMusic+" of "+MusicList:count()+" || "+MusicList[RandomMusic, string],7)
SSource:soundPlay(2,0,MusicList[RandomMusic, string])}
else{
hint("Now Playing: "+LastSaid2:toNumber()+" of "+MusicList:count()+" || "+MusicList[LastSaid2:toNumber(), string],7)
SSource:soundPlay(2,0,MusicList[LastSaid2:toNumber(), string])}
}
#Ambient Sounds
elseif (LastSaid1=="/ambient") {
hideChat(1)
AmbientList=array(
"ambient/atmosphere/cave_outdoor1.wav",
"ambient/atmosphere/city_beacon_loop1.wav",
"ambient/atmosphere/cave_hit4.wav",
"ambient/atmosphere/captain_room.wav",
"ambient/atmosphere/cave_hit1.wav",
"ambient/atmosphere/cave_hit2.wav",
"ambient/atmosphere/cave_hit3.wav",
"ambient/atmosphere/cave_hit4.wav",
"ambient/atmosphere/cave_hit5.wav",
"ambient/atmosphere/cave_hit6.wav",
"ambient/atmosphere/city_truckpass1.wav",
"ambient/atmosphere/corridor.wav",
"ambient/atmosphere/corridor2.wav"
)
if (LastSaid2:toNumber()==0) {
RandomAmbient=randint(1,AmbientList:count())
hint("Ambient: "+RandomAmbient+" of "+AmbientList:count()+" || "+AmbientList[RandomAmbient, string],7)
SSource:soundPlay(3,0,AmbientList[RandomAmbient, string])}
else {
hint("Ambient: "+LastSaid2:toNumber()+" of "+AmbientList:count()+" || "+AmbientList[LastSaid2:toNumber(), string],7)
SSource:soundPlay(3,0,AmbientList[LastSaid2:toNumber(), string])}
}
#Voice
elseif (LastSaid1=="!!cheese") { hideChat(1) entity():soundPlay(3,0,"vo/npc/male01/question06.wav") }
elseif (LastSaid1=="!!bullshit") { hideChat(1) entity():soundPlay(3,0,"vo/npc/male01/question26.wav") }
elseif (LastSaid1=="!!sorry") { hideChat(1) entity():soundPlay(3,0,"vo/npc/male01/sorry01.wav") }
#End of the Chat Triggers
}
#Skills code ------------------------------------
if(EarRape) {
entity():soundPlay(9,0,"synth/sine_880.wav")
entity():soundPlay(10,0,"synth/pink_noise.wav")
entity():soundPlay(11,0,"synth/saw_inverted_1760.wav")
}
#Body options ------------------------------------
if (chatClk(Owner)) {
if (LastSaid1=="/ghost" | LastSaid1=="-/ghost") {
hideChat(1)
NotSolid=1
if (PropCore) {hint("The Assistant is now in GHOST Mode",5) , entity():soundPlay(1,0,"ambient/hallow08.wav")}else{hint("Sorry, you need PropCore to use this",5)}
}
if (LastSaid1=="/unghost" | LastSaid1=="-/unghost") {
hideChat(1)
NotSolid=0
if (PropCore) {hint("The Assistant is now Solid",5)}else{hint("Sorry, you need PropCore to use this",5)}
}
elseif (LastSaid1=="/size" | LastSaid1=="-/size") {
hideChat(1)
Size=LastSaid2:toNumber()
HSize=vec(Size,Size,Size)
TrailSize=Size*15
Skin=Skin
HSkin=Skin
entity():setTrails(TrailSize,1,1,Trail,TrailColor,Opacity) interval(10)
hint("The Assistant's size is now: "+Size,5)
}
elseif (LastSaid1=="/trailsize") {
hideChat(1)
TrailSize=LastSaid2:toNumber()
entity():setTrails(TrailSize,1,1,Trail,TrailColor,Opacity) interval(10)
hint("The Assistant's trail size is now: "+TrailSize,5)
}
elseif (LastSaid1=="/body") {
hideChat(1)