├── .gitattributes
├── .gitignore
├── D-Caitlyn++
├── AfterAttack.h
├── Auto-Killsteal.h
├── Combo.h
├── D-Caitlyn++.cpp
├── D-Caitlyn++.vcxproj
├── D-Caitlyn++.vcxproj.filters
├── EWQ.h
├── Extension.h
├── Farm.h
├── Geometry.h
├── Harass.h
├── Items.h
├── Menu.h
├── OnAnimation.h
├── OnProcessSpellCast.h
├── Render.h
├── Spells.h
├── Template.h
└── malachite_Extension.h
├── D-Corki++
├── D-Corki++.cpp
├── D-Corki++.vcxproj
└── D-Corki++.vcxproj.filters
├── D-Ekko++
├── Combo.h
├── D-Ekko++.cpp
├── D-Ekko++.vcxproj
├── D-Ekko++.vcxproj.filters
├── Damage.h
├── Extension.h
├── Harass.h
├── Items.h
├── JungleClear.h
├── LaneClear.h
├── Menu.h
├── OnCast.h
├── OnCreate_OnDelete.h
├── OnProcessCast.h
├── PermaActive.h
├── Render.h
├── RunForest.h
├── Smite.h
├── SpellDatabase.h
├── Spells.h
└── dodgeSkills.h
├── D-Ezreal
├── D-Ezreal.cpp
├── D-Ezreal.vcxproj
└── D-Ezreal.vcxproj.filters
├── D-Graves
├── Animation.h
├── Burst.h
├── Color.h
├── Combo.h
├── D-Graves.cpp
├── D-Graves.vcxproj
├── D-Graves.vcxproj.filters
├── Damage.h
├── Extensions.h
├── Farm.h
├── Harass.h
├── Items.h
├── KillSteal.h
├── Menu.h
├── OnProcessSpellCast.h
├── Render.h
└── Spells.h
├── D-Jayce++
├── D-Jayce++.vcxproj
├── D-Jayce++.vcxproj.filters
└── D-Jayce.cpp
├── D-Nidalee++
├── D-Nidalee++.vcxproj
├── D-Nidalee++.vcxproj.filters
└── D-Nidalee.cpp
├── D-Rengar++
├── Combo.h
├── D-Rengar++.cpp
├── D-Rengar++.vcxproj
├── D-Rengar++.vcxproj.filters
├── Damage.h
├── Extension.h
├── Harass.h
├── Items.h
├── JungleClear.h
├── LaneClear.h
├── Menu.h
├── OnCreate_OnDelete.h
├── OnProcessCast.h
├── Potions.h
├── REQWT.h
├── RETQW.h
├── RETWQ.h
├── Render.h
├── Smite.h
└── Spells.h
├── D-Riven++
├── AfterAttack.h
├── Burst.h
├── Color.h
├── Combo.h
├── D-Riven++.cpp
├── D-Riven++.vcxproj
├── D-Riven++.vcxproj.filters
├── Damage.h
├── Extensions.h
├── Flee.h
├── Harass.h
├── Items.h
├── JungleClear.h
├── Laneclear.h
├── Menu.h
├── OnAnimation.h
├── OnAttack.h
├── OnCast.h
├── OnCreate_OnDelete.h
├── OnProcessSpellCast.h
├── Render.h
├── Sexy.h
├── ShyCombo.h
├── SpellDatabase.h
├── Spells.h
├── Ultilogic.h
├── WerhliCombo.h
├── killsteal.h
└── nidalee.h
├── D-Rumble++
├── D-Rumble++.cpp
├── D-Rumble++.vcxproj
└── D-Rumble++.vcxproj.filters
├── D-Thresh++
├── D-Thresh++.cpp
├── D-Thresh++.vcxproj
└── D-Thresh++.vcxproj.filters
├── D-Tristana++
├── D-Tristana++.cpp
├── D-Tristana++.vcxproj
└── D-Tristana++.vcxproj.filters
├── D-Vayne++
├── D-Vayne++.cpp
├── D-Vayne++.vcxproj
└── D-Vayne++.vcxproj.filters
├── D-Vladimir++
├── Burst.h
├── Combo.h
├── D-Vladimir++.cpp
├── D-Vladimir++.vcxproj
├── D-Vladimir++.vcxproj.filters
├── Damage.h
├── Extension.h
├── Harass.h
├── Items.h
├── JungleClear.h
├── KillSteal.h
├── LaneClear.h
├── Menu.h
├── OnCast.h
├── OnProcessCast.h
├── Render.h
├── SpellDatabase.h
└── Spells.h
├── D-Xerath++
├── Combo.h
├── D-Xerath++.cpp
├── D-Xerath++.vcxproj
├── D-Xerath++.vcxproj.filters
├── Damage.h
├── Extension.h
├── Geometry.h
├── MalachitePred.h
├── Menu.h
├── OnCreate_OnDelete.h
├── OnProcessSpellCast.h
├── Potions.h
├── Render.h
├── Spells.h
├── Template.h
└── malachite_Extension.h
├── D-jarvan++
├── D-Jarvan++.cpp
├── D-jarvan++.vcxproj
└── D-jarvan++.vcxproj.filters
├── L++ SDK
├── L++ SDK.vcxproj
├── L++ SDK.vcxproj.filters
├── LPPConstants.h
├── PluginData.h
├── PluginSDK.cpp
├── PluginSDK.h
└── Vector3.h
├── L++.sln
├── Resource
├── AioVersion
└── Diabathsaioingame.png
└── Spred
├── Collision.h
├── PathTracker.h
├── ReadMe.txt
├── SPrediction.cpp
├── SPrediction.h
├── Spred.vcxproj
└── Spred.vcxproj.filters
/.gitattributes:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | # Set default behavior to automatically normalize line endings.
3 | ###############################################################################
4 | * text=auto
5 |
6 | ###############################################################################
7 | # Set default behavior for command prompt diff.
8 | #
9 | # This is need for earlier builds of msysgit that does not have it on by
10 | # default for csharp files.
11 | # Note: This is only used by command line
12 | ###############################################################################
13 | #*.cs diff=csharp
14 |
15 | ###############################################################################
16 | # Set the merge driver for project and solution files
17 | #
18 | # Merging from the command prompt will add diff markers to the files if there
19 | # are conflicts (Merging from VS is not affected by the settings below, in VS
20 | # the diff markers are never inserted). Diff markers may cause the following
21 | # file extensions to fail to load in VS. An alternative would be to treat
22 | # these files as binary and thus will always conflict and require user
23 | # intervention with every merge. To do so, just uncomment the entries below
24 | ###############################################################################
25 | #*.sln merge=binary
26 | #*.csproj merge=binary
27 | #*.vbproj merge=binary
28 | #*.vcxproj merge=binary
29 | #*.vcproj merge=binary
30 | #*.dbproj merge=binary
31 | #*.fsproj merge=binary
32 | #*.lsproj merge=binary
33 | #*.wixproj merge=binary
34 | #*.modelproj merge=binary
35 | #*.sqlproj merge=binary
36 | #*.wwaproj merge=binary
37 |
38 | ###############################################################################
39 | # behavior for image files
40 | #
41 | # image files are treated as binary by default.
42 | ###############################################################################
43 | #*.jpg binary
44 | #*.png binary
45 | #*.gif binary
46 |
47 | ###############################################################################
48 | # diff behavior for common document formats
49 | #
50 | # Convert binary document formats to text before diffing them. This feature
51 | # is only available from the command line. Turn it on by uncommenting the
52 | # entries below.
53 | ###############################################################################
54 | #*.doc diff=astextplain
55 | #*.DOC diff=astextplain
56 | #*.docx diff=astextplain
57 | #*.DOCX diff=astextplain
58 | #*.dot diff=astextplain
59 | #*.DOT diff=astextplain
60 | #*.pdf diff=astextplain
61 | #*.PDF diff=astextplain
62 | #*.rtf diff=astextplain
63 | #*.RTF diff=astextplain
64 |
--------------------------------------------------------------------------------
/D-Caitlyn++/AfterAttack.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 |
4 |
5 | PLUGIN_EVENT(void) OnAfterAttack(IUnit* source, IUnit* target)
6 | {
7 | if (GOrbwalking->GetOrbwalkingMode() == kModeCombo)
8 | {
9 | if (E->IsReady() && ComboE->Enabled() && target->IsHero())
10 | {
11 | if (target != nullptr && myHero->IsValidTarget(target, E->Range()))
12 | {
13 | AdvPredictionOutput prediction_output;
14 | E->RunPrediction(target, true, kCollidesWithYasuoWall | kCollidesWithMinions, &prediction_output);
15 | if (prediction_output.HitChance >= kHitChanceHigh)
16 | {
17 | E->CastOnTarget(target);
18 | GOrbwalking->ResetAA();
19 | /*if (AlwaysQAfterE->Enabled() && Q->IsReady())
20 | {
21 | Q->CastOnTarget(target);
22 | }*/
23 | }
24 | }
25 | }
26 | }
27 | }
--------------------------------------------------------------------------------
/D-Caitlyn++/Auto-Killsteal.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 |
4 | inline void AutoImmobile()
5 | {
6 |
7 | if (Q->IsReady())
8 | {
9 | auto target = GTargetSelector->FindTarget(QuickestKill, PhysicalDamage, Q->Range());
10 | if (!target->IsWard() && target != nullptr && myHero->IsValidTarget(target, Q->Range()) && !target->IsInvulnerable())
11 | {
12 | if (ImmobileQ->Enabled())
13 | {
14 | Q->CastOnTarget(target, kHitChanceImmobile);
15 | }
16 | }
17 | }
18 | }
19 |
20 | inline void killsteal()
21 | {
22 | for (auto Enemy : GEntityList->GetAllHeros(false, true))
23 | {
24 | if (Enemy != nullptr && !Enemy->IsDead())
25 | {
26 | if (KillstealQ->Enabled() && Q->IsReady() && !Enemy->IsWard())
27 | {
28 | auto dmg = GDamage->GetSpellDamage(GEntityList->Player(), Enemy, kSlotQ);
29 | if (myHero->IsValidTarget(Enemy, Q->Range()) && !Enemy->IsInvulnerable())
30 | {
31 | if (Enemy->GetHealth() <= dmg && GetDistance(myHero->GetPosition(), Enemy->GetPosition()) > 700)
32 | {
33 | Q->CastOnTarget(Enemy, kHitChanceHigh);
34 | }
35 | }
36 | }
37 | if (KillstealR->Enabled() && R->IsReady() && !GUtility->IsPositionUnderTurret(myHero->GetPosition()))
38 | {
39 | auto Rmin = RMin->GetInteger();
40 | if (myHero->IsValidTarget(Enemy, RRange) && Enemy != nullptr)
41 | {
42 | auto dmg = GDamage->GetSpellDamage(GEntityList->Player(), Enemy, kSlotR);
43 | if (Enemy->GetHealth() < dmg &&!Enemy->IsInvulnerable() && GetDistance(myHero->GetPosition(), Enemy->GetPosition()) > Rmin && CountEnemiesInRange(RMinenemies->GetInteger()) == 0)
44 | {
45 | R->CastOnUnit(Enemy);
46 | }
47 | }
48 | }
49 | }
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/D-Caitlyn++/Combo.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 |
4 | inline void Combo()
5 | {
6 | if (ComboQ->Enabled())
7 | {
8 | auto target = GTargetSelector->FindTarget(QuickestKill, PhysicalDamage, Q->Range());
9 | CastQ(target);
10 | }
11 | if (ComboW->Enabled() && W->IsReady() && GGame->TickCount() - LastWTick > 2000)
12 | {
13 | if (myHero->GetMana() > Q->ManaCost() + E->ManaCost())
14 | {
15 | auto Enemy = GTargetSelector->FindTarget(QuickestKill, PhysicalDamage, W->Range());
16 | if (myHero->IsValidTarget(Enemy, W->Range()) && Enemy != nullptr && !Enemy->HasBuff("caitlynyordletrapinternal"))
17 | {
18 | AdvPredictionOutput prediction_output;
19 | W->RunPrediction(Enemy, true, kCollidesWithNothing, &prediction_output);
20 | /*if (prediction_output.HitChance >= kHitChanceVeryHigh && Enemy->IsFacing(myHero))
21 | {
22 | auto vector = Enemy->GetPosition() - myHero->GetPosition();
23 | auto Behind = prediction_output.CastPosition - vector.VectorNormalize() * 100;
24 | W->CastOnPosition(Behind);
25 | }
26 | if (prediction_output.HitChance >= kHitChanceVeryHigh && !Enemy->IsFacing(myHero))
27 | {
28 | auto vector = Enemy->GetPosition() - myHero->GetPosition();
29 | auto Behind = prediction_output.CastPosition + vector.VectorNormalize() * 100;
30 | W->CastOnPosition(Behind);
31 | }*/
32 | }
33 | }
34 | }
35 | if (ComboR->Enabled() && R->IsReady() && GGame->TickCount() - QCastTime > 1000 && !GUtility->IsPositionUnderTurret(myHero->GetPosition()))
36 | {
37 | auto Rmin = RMin->GetInteger();
38 | auto Enemy = GTargetSelector->FindTarget(QuickestKill, PhysicalDamage, RRange);
39 | if (myHero->IsValidTarget(Enemy, RRange) && Enemy != nullptr)
40 | {
41 | auto dmg = GDamage->GetSpellDamage(myHero, Enemy, kSlotR);
42 | if (Enemy->GetHealth() < dmg && !Enemy->IsInvulnerable() && GetDistance(myHero->GetPosition(), Enemy->GetPosition()) > Rmin && CountEnemiesInRange(RMinenemies->GetInteger()) == 0)
43 | {
44 | R->CastOnUnit(Enemy);
45 | }
46 | }
47 | }
48 | }
--------------------------------------------------------------------------------
/D-Caitlyn++/D-Caitlyn++.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hh;hpp;hxx;hm;inl;inc;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 |
18 |
19 | Source Files
20 |
21 |
22 |
23 |
24 | Header Files
25 |
26 |
27 | Header Files
28 |
29 |
30 | Header Files
31 |
32 |
33 | Header Files
34 |
35 |
36 | Header Files
37 |
38 |
39 | Header Files
40 |
41 |
42 | Header Files
43 |
44 |
45 | Header Files
46 |
47 |
48 | Header Files
49 |
50 |
51 | Header Files
52 |
53 |
54 | Header Files
55 |
56 |
57 | Header Files
58 |
59 |
60 | Header Files
61 |
62 |
63 | Header Files
64 |
65 |
66 | Header Files
67 |
68 |
69 | Header Files
70 |
71 |
72 |
--------------------------------------------------------------------------------
/D-Caitlyn++/EWQ.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 |
4 | inline void burst()
5 | {
6 | auto Enemy = GTargetSelector->FindTarget(QuickestKill, PhysicalDamage, 1000);
7 | GGame->IssueOrder(myHero, kAttackUnit, GGame->CursorPosition());
8 | GOrbwalking->Orbwalk(Enemy, GGame->CursorPosition());
9 | auto mana = Q->ManaCost() + E->ManaCost() + W->ManaCost();
10 | if (Enemy != nullptr && myHero->IsValidTarget(Enemy, W->Range() + W->Radius()) && myHero->GetMana() >= mana)
11 | {
12 | AdvPredictionOutput prediction_output;
13 | E->RunPrediction(Enemy, true, kCollidesWithYasuoWall | kCollidesWithMinions, &prediction_output);
14 |
15 | if (E->IsReady() && prediction_output.HitChance >= kHitChanceHigh)
16 | {
17 | Vec3 Enemypos;
18 | GPrediction->GetFutureUnitPosition(Enemy, 0.5, true, Enemypos);
19 | E->CastOnPosition(Enemypos);
20 | if (GGame->CurrentTick() - LastWTick > 500)
21 | {
22 | W->CastOnPosition(Enemypos);
23 | }
24 | GOrbwalking->ResetAA();
25 | }
26 | }
27 | if (Enemy != nullptr && myHero->IsValidTarget(Enemy, Q->Range() - 50))
28 | {
29 | if (Q->IsReady() && Enemy->HasBuff("caitlynyordletrapsight"))
30 | {
31 | Q->CastOnTarget(Enemy);
32 | }
33 | }
34 | }
35 |
36 | inline void processEWQ(CastedSpell const& spell)
37 | {
38 | auto Enemy = GTargetSelector->FindTarget(QuickestKill, PhysicalDamage, Q->Range());
39 | if (spell.Data_ == nullptr) return;
40 | if (Enemy != nullptr && spell.Caster_ == myHero && GetAsyncKeyState(EWQCombo->GetInteger()))
41 | {
42 | if (strstr(spell.Name_, "CaitlynEntrapment") || strstr(spell.Name_, "CaitlynEntrapmentMissile"))
43 | {
44 | if (W->IsReady() && myHero->IsValidTarget(Enemy, W->Range() + W->Radius()))
45 | {
46 | Vec3 Enemypos;
47 | GPrediction->GetFutureUnitPosition(Enemy, 0.5, true, Enemypos);
48 | W->CastOnPosition(Enemypos);
49 | return;
50 |
51 | }
52 | }
53 | if (Q->IsReady() && myHero->IsValidTarget(Enemy, Q->Range() - 100) && Enemy->HasBuff("caitlynyordletrapsight"))
54 | {
55 | Q->CastOnUnit(spell.Target_);
56 | }
57 | }
58 | }
59 | /*static void burstAfter(IUnit* source, IUnit* target)
60 | {
61 |
62 | if (target != nullptr && myHero->IsValidTarget(target, Q->Range() - 100))
63 | {
64 | auto mana = Q->ManaCost() + E->ManaCost() + R->ManaCost();
65 |
66 | if (nowauto)
67 | {
68 | R->CastOnPosition(target->ServerPosition());
69 | }
70 | if (E->IsReady() && !R->IsReady())
71 | {
72 | E->CastOnPosition(target->ServerPosition());
73 | GOrbwalking->ResetAA();
74 | }
75 | if (Q->IsReady() && !R->IsReady())
76 | {
77 | Q->CastOnPosition(target->GetPosition());
78 | }
79 | if (!Q->IsReady() && W->IsReady() && !R->IsReady())
80 | {
81 | W->CastOnPosition(target->GetPosition());
82 | }
83 | }
84 | }
85 | */
86 |
--------------------------------------------------------------------------------
/D-Caitlyn++/Extension.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Menu.h"
3 |
4 | inline int EnemiesInRange(IUnit* Source, float range)
5 | {
6 | auto Targets = GEntityList->GetAllHeros(false, true);
7 | auto enemiesInRange = 0;
8 |
9 | for (auto target : Targets)
10 | {
11 | if (target != nullptr)
12 | {
13 | auto flDistance = (target->GetPosition() - Source->GetPosition()).Length();
14 | if (flDistance < range)
15 | {
16 | enemiesInRange++;
17 | }
18 | }
19 | }
20 | return enemiesInRange;
21 | }
22 |
23 | inline float GetDistance(IUnit* Player, IUnit* target)
24 | {
25 | return (Player->GetPosition() - target->GetPosition()).Length2D();
26 | }
27 |
28 | inline float GetDistance(Vec3 from, Vec3 to)
29 | {
30 | return (from - to).Length2D();
31 | }
32 |
33 | inline float GetDistance(IUnit* from, Vec3 to)
34 | {
35 | return (from->GetPosition() - to).Length2D();
36 | }
37 | inline float GetDistance(Vec2 from, Vec2 to)
38 | {
39 | return (from - to).Length();
40 | }
41 |
42 | inline int CountEnemiesInRange(float range)
43 | {
44 | int enemies = 0;
45 | for (auto enemy : GEntityList->GetAllHeros(false, true))
46 | {
47 | if (enemy != nullptr && !enemy->IsDead() && GetDistance(GEntityList->Player(), enemy) <= range)
48 | {
49 | enemies++;
50 | }
51 | }
52 | return enemies;
53 | }
54 |
55 | inline void CastQ(IUnit* target)
56 | {
57 | if (Q->IsReady() && target != nullptr && !target->IsWard())
58 | {
59 | if (myHero->IsValidTarget(target, Q->Range()))
60 | {
61 | auto dmg = GDamage->GetSpellDamage(myHero, target, kSlotQ);
62 | AdvPredictionOutput prediction_output;
63 | Q->RunPrediction(target, true, kCollidesWithYasuoWall, &prediction_output);
64 | if (prediction_output.HitChance >= kHitChanceHigh && CountEnemiesInRange(400) == 0 && !myHero->GetRealAutoAttackRange(target))
65 | {
66 | if (target->GetHealth() < dmg && !target->IsWard())
67 | {
68 | Q->CastOnTarget(target);
69 | }
70 | else if (target->HasBuff("caitlynyordletrapinternal") || target->HasBuffOfType(BUFF_Stun) || target->HasBuffOfType(BUFF_Snare))
71 | {
72 | Q->CastOnTarget(target);
73 | }
74 | }
75 | }
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/D-Caitlyn++/Farm.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 | #include "malachite_Extension.h"
4 |
5 | inline void laneclear()
6 | {
7 | for (auto minions : GEntityList->GetAllMinions(false, true, false))
8 | {
9 | if (myHero->ManaPercent() < FarmManaPercent->GetInteger())
10 | return;
11 | if (Q->IsReady() && !minions->IsWard())
12 | {
13 | auto dmg = GDamage->GetSpellDamage(myHero, minions, kSlotQ);
14 | if (minions != nullptr && myHero->IsValidTarget(minions, Q->Range()))
15 | { //credits malachite
16 | auto pred = FindBestLineCastPosition(vector{ myHero->GetPosition() }, Q->Range(), Q->Range(), 60, true, false);
17 | if (FarmQ->Enabled() && pred.HitCount >= minminions->GetInteger() && pred.CastOnUnit != nullptr)
18 | {
19 | Q->CastOnUnit(pred.CastOnUnit);
20 | }
21 |
22 | if (LastHitQ->Enabled() && minions->GetHealth() < dmg && GetDistance(myHero, minions) > myHero->AttackRange())
23 | {
24 | Q->CastOnUnit(minions);
25 | return;
26 | }
27 | }
28 | }
29 | }
30 | }
31 |
32 | inline void jungleclear()
33 | {
34 | for (auto jMinion : GEntityList->GetAllMinions(false, false, true))
35 | {
36 | if (myHero->ManaPercent() < JungleManaPercent->GetInteger())
37 | return;
38 | if (strstr(jMinion->GetObjectName(), "mini")) return;
39 | if (JungleQ->Enabled() && Q->IsReady())
40 | {
41 | if (jMinion != nullptr && !jMinion->IsDead() && myHero->IsValidTarget(jMinion, Q->Range()))
42 | {
43 | Q->CastOnUnit(jMinion);
44 | }
45 | }
46 | if (JungleE->Enabled() && E->IsReady())
47 | {
48 | if (jMinion != nullptr && !jMinion->IsDead() && myHero->IsValidTarget(jMinion, E->Range()))
49 | {
50 | E->CastOnTarget(jMinion);
51 | }
52 | }
53 | }
54 | }
--------------------------------------------------------------------------------
/D-Caitlyn++/Harass.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 |
4 | inline void Harass()
5 | {
6 | if (myHero->ManaPercent() < HarassManaPercent->GetInteger())
7 | return;
8 | if (HarassQ->Enabled())
9 | {
10 | if (Q->IsReady())
11 | {
12 | auto target = GTargetSelector->FindTarget(QuickestKill, PhysicalDamage, Q->Range());
13 | if (myHero->IsValidTarget(target, Q->Range()) && target != nullptr && !target->IsWard())
14 | {
15 | AdvPredictionOutput prediction_output;
16 | Q->RunPrediction(target, true, kCollidesWithYasuoWall, &prediction_output);
17 | if (prediction_output.HitChance >= kHitChanceHigh && CountEnemiesInRange(400) == 0)
18 | {
19 | if (!myHero->GetRealAutoAttackRange(target) && (target->HasBuffOfType(BUFF_Stun) || target->HasBuffOfType(BUFF_Slow)))
20 | {
21 | Q->CastOnTarget(target);
22 | }
23 | }
24 | if (CountEnemiesInRange(400) == 0)
25 | {
26 | Q->CastOnTargetAoE(target, 2, kHitChanceHigh);
27 | }
28 | }
29 | }
30 | }
31 | }
--------------------------------------------------------------------------------
/D-Caitlyn++/Items.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 |
4 | inline void UseItems()
5 | {
6 | if (GOrbwalking->GetOrbwalkingMode() == kModeCombo)
7 | {
8 | for (auto enemy : GEntityList->GetAllHeros(false, true))
9 | {
10 | if (Blade_Cutlass->Enabled() && myHero->IsValidTarget(enemy, 550))
11 | {
12 | if (myHero->HealthPercent() < MyHpPreBlade->GetInteger() || enemy->HealthPercent() < EnemyHpPreBlade->GetInteger())
13 | {
14 | if (blade->IsOwned() && blade->IsReady())
15 | blade->CastOnTarget(enemy);
16 | if (Cutlass->IsOwned() && Cutlass->IsReady())
17 | Cutlass->CastOnTarget(enemy);
18 | }
19 | }
20 |
21 | }
22 | }
23 | }
24 |
25 | inline void Usepotion()
26 | {
27 | if (usepotion->Enabled() && !myHero->IsRecalling() && !myHero->IsDead())
28 | {
29 | if (CountEnemiesInRange(2000) > 0)
30 | {
31 | bool usepotions = myHero->GetHealth() < myHero->GetMaxHealth()* usepotionhpper->GetInteger() / 100;
32 | if (usepotions)
33 | {
34 | if (myHero->GetBuffDataByName("ItemDarkCrystalFlask") || myHero->GetBuffDataByName("ItemMiniRegenPotion")
35 | || myHero->GetBuffDataByName("ItemCrystalFlask") || myHero->GetBuffDataByName("RegenerationPotion") || myHero->HasBuff("ItemCrystalFlaskJungle"))
36 | return;
37 |
38 | if (Biscuit->IsOwned() && !GUtility->IsPositionInFountain(myHero->GetPosition()) && Biscuit->IsReady())
39 | {
40 | Biscuit->CastOnPlayer();
41 | }
42 | else if (HealthPot->IsOwned() && !GUtility->IsPositionInFountain(myHero->GetPosition()) && HealthPot->IsReady())
43 | {
44 | HealthPot->CastOnPlayer();
45 | }
46 | else if (CorruptPot->IsOwned() && CorruptPot->IsReady())
47 | {
48 | CorruptPot->CastOnPlayer();
49 | }
50 | else if (RefillPot->IsOwned() && RefillPot->IsReady())
51 | {
52 | RefillPot->CastOnPlayer();
53 | }
54 | else if (hunter->IsOwned() && hunter->IsReady())
55 | {
56 | hunter->CastOnPlayer();
57 | }
58 | }
59 | }
60 | }
61 | }
--------------------------------------------------------------------------------
/D-Caitlyn++/OnAnimation.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 |
4 | PLUGIN_EVENT(void) OnPlayAnimation(IUnit* Source, std::string const Args)
5 | {
6 |
7 | }
8 |
9 | /*PLUGIN_EVENTD(void) OnPlayAnimation(IUnit* Source, std::string const AnimationId)
10 | {
11 |
12 | if (Source == GEntityList->Player())
13 | {
14 | GGame->PrintChat(AnimationId.c_str());
15 | }
16 | }*/
17 |
--------------------------------------------------------------------------------
/D-Caitlyn++/OnProcessSpellCast.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 | #include "EWQ.h"
4 |
5 | PLUGIN_EVENT(void) OnProcessSpellCast(CastedSpell const& spell)
6 | {
7 | if (spell.Caster_ == myHero && Q->IsReady() && !GetAsyncKeyState(USEE->GetInteger()))
8 | {
9 | auto target = GTargetSelector->FindTarget(QuickestKill, PhysicalDamage, Q->Range());
10 |
11 | if (Contains(spell.Name_, "CaitlynEntrapment"))
12 | {
13 | if (GetAsyncKeyState(EWQCombo->GetInteger()) || (ComboW->Enabled() && GOrbwalking->GetOrbwalkingMode() == kModeCombo))
14 | {
15 | auto enemy = GTargetSelector->FindTarget(QuickestKill, PhysicalDamage, W->Range() + W->Radius());
16 | Vec3 Enemypos;
17 | GPrediction->GetFutureUnitPosition(enemy, 0.5, true, Enemypos);
18 | W->CastOnPosition(Enemypos);
19 | }
20 | if (!GetAsyncKeyState(EWQCombo->GetInteger()) && target != nullptr && AlwaysQAfterE->Enabled() && myHero->IsValidTarget(target, Q->Range()))
21 | {
22 | Q->CastOnPosition(target->GetPosition());
23 | }
24 | }
25 | }
26 | if (spell.Caster_ == myHero)
27 | {
28 | if (std::string(spell.Name_) == "CaitlynYordleTrap")
29 | {
30 | LastWTick = GGame->TickCount();
31 | }
32 |
33 | if (std::string(spell.Name_) == "CaitlynPiltoverPeacemaker" || std::string(spell.Name_) == "CaitlynEntrapment")
34 | {
35 | QCastTime = GGame->TickCount();
36 | }
37 | }
38 | if (spell.Caster_->IsEnemy(myHero))
39 | {
40 | if (std::string(spell.Name_) == "summonerflash" && GetDistance(myHero, spell.Caster_) < 300 && E->IsReady() && myHero->IsValidTarget(spell.Caster_, E->Range()))
41 | {
42 | E->CastOnPosition(spell.EndPosition_);
43 | }
44 | }
45 | if (GetAsyncKeyState(EWQCombo->GetInteger()))
46 | {
47 | processEWQ(spell);
48 | }
49 | /*if (GSpellData->GetSlot(args.Data_) == kSlotW)
50 | {
51 | LastWTick = GGame->TickCount();
52 | GGame->PrintChat("Last W");
53 | }*/
54 | }
--------------------------------------------------------------------------------
/D-Caitlyn++/Render.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 |
4 | PLUGIN_EVENT(void) OnRender()
5 | {
6 | Vec4 color;
7 | Vec4 colorw;
8 | Vec4 colore;
9 | Vec4 colorr;
10 | qRangeColor->GetColor(&color);
11 | wRangeColor->GetColor(&colorw);
12 | eRangeColor->GetColor(&colore);
13 | rRangeColor->GetColor(&colorr);
14 | if (DrawReady->Enabled())
15 | {
16 | if (Q->IsReady() && DrawQ->Enabled()) { GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), color, Q->Range()); }
17 |
18 | if (W->IsReady() && DrawW->Enabled()) { GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colorw, W->Range()); }
19 |
20 | if (E->IsReady() && DrawE->Enabled()) { GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colore, E->Range()); }
21 |
22 | if (R->IsReady() && DrawR->Enabled()) { GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colorr, RRange); }
23 | }
24 | else
25 | {
26 | if (DrawQ->Enabled()) { GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), color, Q->Range()); }
27 |
28 | if (DrawW->Enabled()) { GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colorw, W->Range()); }
29 |
30 | if (DrawE->Enabled()) { GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colore, E->Range()); }
31 |
32 | if (DrawR->Enabled()) { GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colorr, RRange); }
33 | }
34 | }
--------------------------------------------------------------------------------
/D-Caitlyn++/Spells.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include "Menu.h"
4 | inline void LoadSpells()
5 | {
6 | Q = GPluginSDK->CreateSpell2(kSlotQ, kLineCast, true, true, static_cast(kCollidesWithNothing));
7 | Q->SetSkillshot(0.25f, 60.f, 2000.f, 1200.f);
8 |
9 | W = GPluginSDK->CreateSpell2(kSlotW, kCircleCast, true, false, static_cast(kCollidesWithNothing));
10 | W->SetSkillshot(1.00f, 100.f, FLT_MAX, 800.f);
11 |
12 | E = GPluginSDK->CreateSpell2(kSlotE, kLineCast, true, false, static_cast (kCollidesWithYasuoWall | kCollidesWithMinions));
13 | E->SetSkillshot(0.25f, 80.f, 1600.f, 770.f);
14 |
15 | R = GPluginSDK->CreateSpell2(kSlotR, kLineCast, false, false, static_cast(kCollidesWithYasuoWall | kCollidesWithHeroes));
16 | R->SetSkillshot(0.25f, 0.f, 1000.f, RRange);
17 |
18 | auto slot1 = GPluginSDK->GetEntityList()->Player()->GetSpellName(kSummonerSlot1);
19 | auto slot2 = GPluginSDK->GetEntityList()->Player()->GetSpellName(kSummonerSlot2);
20 |
21 | if (strcmp(slot1, "SummonerDot") == 0)
22 | {
23 | Ignite = GPluginSDK->CreateSpell(kSummonerSlot1, 600);
24 | }
25 | if (strcmp(slot2, "SummonerDot") == 0)
26 | {
27 | Ignite = GPluginSDK->CreateSpell(kSummonerSlot2, 600);
28 | }
29 | else Ignite == nullptr;
30 |
31 |
32 | blade = GPluginSDK->CreateItemForId(3153, 550);
33 | Cutlass = GPluginSDK->CreateItemForId(3144, 550);
34 | HealthPot = GPluginSDK->CreateItemForId(2003, 0);
35 | CorruptPot = GPluginSDK->CreateItemForId(2033, 0);
36 | RefillPot = GPluginSDK->CreateItemForId(2031, 0);
37 | Biscuit = GPluginSDK->CreateItemForId(2010, 0);
38 | hunter = GPluginSDK->CreateItemForId(2032, 0);
39 | }
40 |
--------------------------------------------------------------------------------
/D-Corki++/D-Corki++.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hh;hpp;hxx;hm;inl;inc;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 |
18 |
19 | Source Files
20 |
21 |
22 |
--------------------------------------------------------------------------------
/D-Ekko++/Combo.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Damage.h"
3 | #include "Menu.h"
4 | #include "Smite.h"
5 | #include "Items.h"
6 | #include "Extension.h"
7 |
8 | inline void Combo()
9 | {
10 | auto Enemy = GTargetSelector->FindTarget(QuickestKill, SpellDamage, 1500);
11 | if (Enemy != nullptr && !Enemy->IsDead())
12 | {
13 | smitetarget();
14 | UseItems();
15 | auto rdmg = GDamage->GetSpellDamage(myHero, Enemy, kSlotR);
16 | auto wdmg = GDamage->GetSpellDamage(myHero, Enemy, kSlotW);
17 | auto mana = W->ManaCost() + R->ManaCost();
18 | auto autodmg = GDamage->GetAutoAttackDamage(myHero, Enemy, true);
19 | if (Ignite != nullptr)
20 | {
21 | if (UseIgnitecombo->Enabled() && Ignite->IsReady())
22 | {
23 | if (Enemy->IsValidTarget(myHero, 570))
24 | {
25 | if (Enemy->GetHealth() <= TotalDamage(Enemy))
26 | {
27 | Ignite->CastOnUnit(Enemy);
28 | }
29 | }
30 | }
31 | }
32 | ProtoBelt();
33 | if (ComboQ->Enabled() && Q->IsReady())
34 | {
35 | if (myHero->IsValidTarget(Enemy, Q->Range()))
36 | {
37 | AdvPredictionOutput QPred;
38 | Q->RunPrediction(Enemy, true, kCollidesWithNothing, &QPred);
39 |
40 | if (QPred.HitChance >= kHitChanceVeryHigh)
41 | {
42 | Q->CastOnUnit(Enemy);
43 | }
44 | }
45 | }
46 |
47 | if (ComboW->Enabled() && W->IsReady() && myHero->IsValidTarget(Enemy, W->Range()))
48 | {
49 | WLogic(Enemy);
50 | }
51 | if (ComboE->Enabled() && E->IsReady())
52 | {
53 | auto harasspos = myHero->GetPosition().Extend(GGame->CursorPosition(), E->Range());
54 | if (myHero->IsValidTarget(Enemy, E->Range() + 475) && GetDistance(myHero->ServerPosition(), Enemy->ServerPosition()) <= E->Range() + 475
55 | && UseE(harasspos))
56 | {
57 | E->CastOnPosition(harasspos);
58 | GGame->IssueOrder(GEntityList->Player(), kAutoAttack, Enemy);
59 | }
60 | }
61 | if (ComboR->Enabled() && R->IsReady())
62 | {
63 | if (Rpos != nullptr)
64 | {
65 | if (CountEnemiesInRange(Rpos->GetPosition(), R->Radius()>=1))
66 | {
67 | if (Enemy->GetHealth() < TotalDamage(Enemy))
68 | {
69 | R->CastOnPlayer();
70 | }
71 | }
72 | if (myHero->HealthPercent() <= 4)
73 | {
74 | if (myHero->IsValidTarget(Enemy, Q->Range()))
75 | {
76 | auto Qdmg = GDamage->GetSpellDamage(myHero, Enemy, kSlotQ);
77 | auto Edmg = GDamage->GetSpellDamage(myHero, Enemy, kSlotE);
78 | auto attack = GDamage->GetAutoAttackDamage(myHero, Enemy, true);
79 | if (CountEnemiesInRange(W->Range()) <= 1 && Enemy->GetHealth() < Qdmg && Q->IsReady() && Q->CastOnTarget(Enemy, kHitChanceHigh)) return;
80 | if (CountEnemiesInRange(W->Range()) <= 1 && Enemy->GetHealth() < Edmg && E->IsReady() && UseE(Enemy->GetPosition()) && E->CastOnPosition(Enemy->GetPosition())) return;
81 | if (CountEnemiesInRange(W->Range()) <= 1 && Enemy->GetHealth() < attack && myHero->GetRealAutoAttackRange(Enemy)) return;
82 | if (Usezhonyas->Enabled() && zhonyas->IsOwned() && zhonyas->IsReady())
83 | {
84 | zhonyas->CastOnPlayer();
85 | return;
86 | }
87 | if ((zhonyas->IsOwned() && !zhonyas->IsReady() || !zhonyas->IsOwned() || !Usezhonyas->Enabled()) && R->IsReady())
88 | {
89 | R->CastOnPlayer();
90 | return;
91 | }
92 | }
93 | }
94 | }
95 | }
96 | if (ComboRAOE->Enabled() && R->IsReady())
97 | {
98 | if (Rpos != nullptr)
99 | {
100 | if (CountEnemiesInPositionRange(Rpos->GetPosition(), R->Radius()) >= ComboRAOEUse->GetInteger())
101 | {
102 | R->CastOnPlayer();
103 | }
104 | }
105 | }
106 | }
107 | }
--------------------------------------------------------------------------------
/D-Ekko++/D-Ekko++.cpp:
--------------------------------------------------------------------------------
1 | // D-Dias.cpp : Defines the exported functions for the DLL application.
2 | //
3 |
4 | //#include "stdafx.h"
5 |
6 |
7 | #include "PluginSDK.h"
8 | #include "Spells.h"
9 | #include "Menu.h"
10 | #include "Render.h"
11 | #include "Laneclear.h"
12 | #include "JungleClear.h"
13 | #include "Smite.h"
14 | #include "RunForest.h"
15 | #include "OnCreate_OnDelete.h"
16 | #include "Combo.h"
17 | #include "OnProcessCast.h"
18 | #include "Harass.h"
19 | #include "PermaActive.h"
20 | #include "OnCast.h"
21 |
22 |
23 | PluginSetup("D-Ekko++");
24 |
25 | static void CheatRito()
26 | {
27 | if (ChangeSkin->Enabled())
28 | {
29 | if (myHero->GetSkinId() != SkinChangeid->GetInteger())
30 | {
31 | myHero->SetSkinId(SkinChangeid->GetInteger());
32 | }
33 | }
34 | else
35 | {
36 | myHero->SetSkinId(myHero->GetSkinId());
37 | }
38 | }
39 |
40 |
41 | PLUGIN_EVENT(void) OnGameUpdate()
42 | {
43 | //if (Recallback->Enabled())
44 | //{
45 | //recallinlane();
46 | //}
47 | for (auto Missile : GEntityList->GetAllUnits())
48 | {
49 | if (!strcmp(Missile->GetObjectName(), "Ekko") && Missile->IsVisible())
50 | {
51 | Rpos = Missile;
52 | }
53 | }
54 | if (GGame->IsChatOpen() || myHero->IsDead() || myHero->IsRecalling()) return;
55 | for (auto RMisspos : GEntityList->GetAllUnits())
56 | {
57 | if (!strcmp(RMisspos->GetObjectName(), "Ekko") && RMisspos->IsVisible())
58 | {
59 | Rpos = RMisspos;
60 | }
61 | }
62 | if (GOrbwalking->GetOrbwalkingMode() == kModeCombo)
63 | {
64 | Combo();
65 | }
66 |
67 | if (GOrbwalking->GetOrbwalkingMode() == kModeMixed)
68 | {
69 | Harass();
70 | }
71 | if (GOrbwalking->GetOrbwalkingMode() == kModeLaneClear)
72 | {
73 | laneclear();
74 | jungleclear();
75 | }
76 | if (GetAsyncKeyState(FleeKey->GetInteger()))
77 | {
78 | runforest();
79 | }
80 | if (smitejungle->Enabled())
81 | {
82 | Smiteuse();
83 | }
84 | if (Qin2stucks->Enabled())
85 | {
86 | Qtoprocpassive();
87 | }
88 | killsteal();
89 | UseItems();
90 | Usepotion();
91 | smitestatus();
92 | CheatRito();
93 | }
94 |
95 | PLUGIN_API void OnLoad(IPluginSDK* PluginSDK)
96 | {
97 | PluginSDKSetup(PluginSDK);
98 | Menu();
99 | LoadSpells();
100 | myHero = GEntityList->Player();
101 |
102 | GEventManager->AddEventHandler(kEventOnGameUpdate, OnGameUpdate);
103 | GEventManager->AddEventHandler(kEventOnRender, OnRender);
104 | GEventManager->AddEventHandler(kEventOnSpellCast, OnProcessCast);
105 | GEventManager->AddEventHandler(kEventOnDoCast, OnCast);
106 | GEventManager->AddEventHandler(kEventOnCreateObject, OnCreateObject);
107 | GEventManager->AddEventHandler(kEventOnDestroyObject, OnDestroyObject);
108 |
109 | if (strcmp(GEntityList->Player()->ChampionName(), "Ekko") == 0)
110 | {
111 | GRender->NotificationEx(Vec4(220, 20, 60, 255), 2, true, true, "D-Ekko : Loaded!");
112 | }
113 | else
114 | {
115 | GRender->NotificationEx(Vec4(220, 20, 60, 255), 2, true, true, "You are not playing Ekko...");
116 | }
117 | }
118 |
119 |
120 | PLUGIN_API void OnUnload()
121 | {
122 | MainMenu->Remove();
123 |
124 | GEventManager->RemoveEventHandler(kEventOnGameUpdate, OnGameUpdate);
125 | GEventManager->RemoveEventHandler(kEventOnRender, OnRender);
126 | GEventManager->RemoveEventHandler(kEventOnSpellCast, OnProcessCast);
127 | GEventManager->RemoveEventHandler(kEventOnDoCast, OnCast);
128 | GEventManager->RemoveEventHandler(kEventOnCreateObject, OnCreateObject);
129 | GEventManager->RemoveEventHandler(kEventOnDestroyObject, OnDestroyObject);
130 |
131 | }
--------------------------------------------------------------------------------
/D-Ekko++/D-Ekko++.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hh;hpp;hxx;hm;inl;inc;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 |
18 |
19 | Source Files
20 |
21 |
22 |
23 |
24 | Header Files
25 |
26 |
27 | Header Files
28 |
29 |
30 | Header Files
31 |
32 |
33 | Header Files
34 |
35 |
36 | Header Files
37 |
38 |
39 | Header Files
40 |
41 |
42 | Header Files
43 |
44 |
45 | Header Files
46 |
47 |
48 | Header Files
49 |
50 |
51 | Header Files
52 |
53 |
54 | Header Files
55 |
56 |
57 | Header Files
58 |
59 |
60 | Header Files
61 |
62 |
63 | Header Files
64 |
65 |
66 | Header Files
67 |
68 |
69 | Header Files
70 |
71 |
72 | Header Files
73 |
74 |
75 | Header Files
76 |
77 |
78 |
--------------------------------------------------------------------------------
/D-Ekko++/Damage.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 |
4 | inline float TotalDamage(IUnit* target)
5 | {
6 | if (target == nullptr || target->IsDead())
7 | {
8 | return 0;
9 | }
10 |
11 | auto damage = 0;
12 |
13 | if (Q->IsReady())
14 | {
15 | damage += 2 * GDamage->GetSpellDamage(myHero, target, kSlotQ);
16 | }
17 |
18 | if (W->IsReady())
19 | {
20 | damage += GDamage->GetSpellDamage(myHero, target, kSlotW);
21 | }
22 | if (E->IsReady())
23 | {
24 | damage += GDamage->GetSpellDamage(myHero, target, kSlotE);
25 | }
26 | if (R->IsReady())
27 | {
28 | damage += GDamage->GetSpellDamage(myHero, target, kSlotR);
29 | //damage +=Rdamage(target);
30 | }
31 | damage += 2 * GDamage->GetAutoAttackDamage(myHero, target, true);
32 |
33 | if (Ignite != nullptr&& Ignite->IsReady())
34 | {
35 | damage += GDamage->GetSpellDamage(myHero, target, kSummonerSpellIgnite);
36 | }
37 | if (target->HasBuff("GarenW"))
38 | {
39 | damage = damage * 0.7f;
40 | }
41 |
42 | if (target->HasBuff("ferocioushowl"))
43 | {
44 | damage = damage * 0.7f;
45 | }
46 |
47 | if (target->HasBuff("BlitzcrankManaBarrierCD") && target->HasBuff("ManaBarrier"))
48 | {
49 | damage -= target->GetMana() / 2;
50 | }
51 | if (myHero->HasBuff("summonerexhaust"))
52 | {
53 | damage *= 0.6f;
54 | }
55 | if (myHero->HasBuff("dianaarcready"))
56 | {
57 | damage += 15 + 5 * GEntityList->Player()->GetLevel();
58 | }
59 |
60 | if (GEntityList->Player()->HasBuff("LichBane"))
61 | {
62 | damage += myHero->TotalPhysicalDamage() *0.75 + myHero->MagicDamage() * 0.5;
63 | }
64 | if (protobelt->IsOwned() && protobelt->IsReady())
65 | {
66 | auto proto = (79 + 4 * (myHero->GetLevel() - 1)) + 0.25*myHero->MagicDamage();
67 | damage += proto;
68 | }
69 | return static_cast(damage);
70 | }
71 |
--------------------------------------------------------------------------------
/D-Ekko++/Harass.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 |
4 |
5 | inline void Harass()
6 | {
7 | auto Enemy = GTargetSelector->FindTarget(QuickestKill, SpellDamage, 1500);
8 | if (myHero->ManaPercent() < HarassManaPercent->GetInteger())
9 | return;
10 | if (Enemy != nullptr && !Enemy->IsDead())
11 | {
12 | if (HarassQ->Enabled() && Q->IsReady())
13 | {
14 | if (myHero->IsValidTarget(Enemy, Q->Range()))
15 | {
16 | AdvPredictionOutput QPred;
17 | Q->RunPrediction(Enemy, true, kCollidesWithNothing, &QPred);
18 |
19 | if (QPred.HitChance >= kHitChanceVeryHigh)
20 | {
21 | Q->CastOnUnit(Enemy);
22 | }
23 | }
24 | }
25 | if (HarassW->Enabled())
26 | {
27 | if (W->IsReady())
28 | {
29 | if (Enemy->IsValidTarget(myHero, W->Range()) && !CanMove(Enemy))
30 | W->CastOnTarget(Enemy, kHitChanceHigh);
31 | }
32 | }
33 | if (HarassE->Enabled())
34 | {
35 | if (E->IsReady())
36 | {
37 | auto harasspos = myHero->GetPosition().Extend(GGame->CursorPosition(), E->Range());
38 | if (myHero->IsValidTarget(Enemy, E->Range() + 475) && GetDistance(myHero->ServerPosition(), Enemy->ServerPosition()) <= E->Range() + 475
39 | && UseE(harasspos))
40 | {
41 | E->CastOnPosition(harasspos);
42 | GGame->IssueOrder(GEntityList->Player(), kAutoAttack, Enemy);
43 | }
44 | }
45 | }
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/D-Ekko++/Items.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 |
4 | inline void UseItems()
5 | {
6 | if (GOrbwalking->GetOrbwalkingMode() == kModeCombo)
7 | {
8 | for (auto enemy : GEntityList->GetAllHeros(false, true))
9 | {
10 | if (Blade_Cutlass->Enabled() && myHero->IsValidTarget(enemy, 550))
11 | {
12 | if (myHero->HealthPercent() < MyHpPreBlade->GetInteger() || enemy->HealthPercent() < EnemyHpPreBlade->GetInteger())
13 | {
14 | if (Hextech->IsOwned() && Hextech->IsReady())
15 | Hextech->CastOnTarget(enemy);
16 | if (Cutlass->IsOwned() && Cutlass->IsReady())
17 | Cutlass->CastOnTarget(enemy);
18 | }
19 | }
20 |
21 | }
22 | }
23 | }
24 | inline void ProtoBelt()
25 | {
26 | if (GOrbwalking->GetOrbwalkingMode() == kModeCombo)
27 | {
28 | for (auto enemy : GEntityList->GetAllHeros(false, true))
29 | {
30 | if (UseProto->Enabled() && myHero->IsValidTarget(enemy, 600))
31 | {
32 | if (protobelt->IsOwned() && protobelt->IsReady())
33 | protobelt->CastOnPosition(enemy->GetPosition());
34 | }
35 | }
36 |
37 | }
38 | }
39 | inline void Usepotion()
40 | {
41 | if (usepotion->Enabled() && !myHero->IsRecalling() && !myHero->IsDead())
42 | {
43 | if (CountEnemiesInRange(2000) > 0)
44 | {
45 | bool usepotions = myHero->GetHealth() < myHero->GetMaxHealth()* usepotionhpper->GetInteger() / 100;
46 | if (usepotions)
47 | {
48 | if (myHero->GetBuffDataByName("ItemDarkCrystalFlask") || myHero->GetBuffDataByName("ItemMiniRegenPotion")
49 | || myHero->GetBuffDataByName("ItemCrystalFlask") || myHero->GetBuffDataByName("RegenerationPotion") || myHero->HasBuff("ItemCrystalFlaskJungle"))
50 | return;
51 |
52 | if (Biscuit->IsOwned() && !GUtility->IsPositionInFountain(myHero->GetPosition()) && Biscuit->IsReady())
53 | {
54 | Biscuit->CastOnPlayer();
55 | }
56 | else if (HealthPot->IsOwned() && !GUtility->IsPositionInFountain(myHero->GetPosition()) && HealthPot->IsReady())
57 | {
58 | HealthPot->CastOnPlayer();
59 | }
60 | else if (CorruptPot->IsOwned() && CorruptPot->IsReady())
61 | {
62 | CorruptPot->CastOnPlayer();
63 | }
64 | else if (RefillPot->IsOwned() && RefillPot->IsReady())
65 | {
66 | RefillPot->CastOnPlayer();
67 | }
68 | else if (hunter->IsOwned() && hunter->IsReady())
69 | {
70 | hunter->CastOnPlayer();
71 | }
72 | }
73 | }
74 | }
75 | }
--------------------------------------------------------------------------------
/D-Ekko++/JungleClear.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Items.h"
3 |
4 | inline void jungleclear()
5 | {
6 | for (auto jMinion : GEntityList->GetAllMinions(false, false, true))
7 | {
8 | if (UseProtojungle->Enabled() && myHero->IsValidTarget(jMinion, 600))
9 | {
10 | if (protobelt->IsOwned() && protobelt->IsReady())
11 | protobelt->CastOnPosition(jMinion->GetPosition());
12 | }
13 | if (myHero->ManaPercent() < JungleManaPercent->GetInteger())
14 | return;
15 | if (!strstr(jMinion->GetObjectName(), "mini"))
16 | {
17 | if (JungleW->Enabled() && W->IsReady())
18 | {
19 | if (jMinion != nullptr && !jMinion->IsDead() && myHero->IsValidTarget(jMinion, W->Range()))
20 | {
21 | W->CastOnPosition(jMinion->GetPosition());
22 | return;
23 | }
24 | }
25 |
26 | if (JungleQ->Enabled() && Q->IsReady())
27 | {
28 | if (jMinion != nullptr && !jMinion->IsDead() && myHero->IsValidTarget(jMinion, Q->Range()))
29 | {
30 | Q->CastOnUnit(jMinion);
31 | return;
32 | }
33 | }
34 |
35 | if (JungleE->Enabled() && E->IsReady())
36 | {
37 | if (jMinion != nullptr && !jMinion->IsDead() && myHero->IsValidTarget(jMinion, E->Range()))
38 | {
39 | E->CastOnPosition(jMinion->GetPosition());
40 | GGame->IssueOrder(myHero, kAttackUnit, GGame->CursorPosition());
41 | return;
42 | }
43 | }
44 | }
45 | }
46 | }
--------------------------------------------------------------------------------
/D-Ekko++/LaneClear.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include "Extension.h"
4 |
5 |
6 | inline void laneclear()
7 | {
8 | for (auto minions : GEntityList->GetAllMinions(false, true, false))
9 | {
10 | if (myHero->ManaPercent() < FarmManaPercent->GetInteger())
11 | return;
12 | if (Q->IsReady() && FarmQ->Enabled())
13 | {
14 | auto dmg = GDamage->GetSpellDamage(myHero, minions, kSlotQ);
15 | if (minions != nullptr && myHero->IsValidTarget(minions, Q->Range()))
16 | {
17 |
18 | Q->AttackMinions(3);
19 | return;
20 | }
21 | if (minions != nullptr && myHero->IsValidTarget(minions, Q->Range()) && minions->GetHealth() < dmg)
22 | {
23 | Q->CastOnUnit(minions);
24 | return;
25 | }
26 | }
27 |
28 | if (E->IsReady())
29 | {
30 | auto dmg = GDamage->GetSpellDamage(myHero, minions, kSlotE);
31 | if (minions != nullptr && myHero->IsValidTarget(minions, E->Range()))
32 | {
33 |
34 | if (FarmE->Enabled() && minions->GetHealth() < dmg)
35 | {
36 | E->CastOnPosition(minions->GetPosition());
37 | GGame->IssueOrder(myHero, kAttackUnit, GGame->CursorPosition());
38 | return;
39 | }
40 | }
41 | }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/D-Ekko++/OnCast.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 |
4 | PLUGIN_EVENT(void) OnCast(CastedSpell const& spell)
5 | {
6 | if (zhonyas->IsOwned() && zhonyas->IsReady() || R->IsReady())
7 | {
8 | if (!spell.Caster_->IsEnemy(myHero) && !myHero->IsValidTarget(spell.Caster_, W->Range()))
9 | return;
10 | if (!spell.Caster_->IsHero() || !spell.Caster_->IsTurret() || spell.Caster_ == nullptr)
11 | return;
12 |
13 | if (spell.Target_ !=myHero)
14 | return;
15 | if (!GSpellData->IsAutoAttack(spell.Data_))
16 | return;
17 |
18 | auto attackdmg = GDamage->GetAutoAttackDamage(spell.Caster_, spell.Target_, true)*2;
19 | if (CountEnemiesInRange(W->Range()) > 0 && (myHero->HealthPercent() < 4 || myHero->GetHealth() < attackdmg))
20 | {
21 | if (Usezhonyas->Enabled() && zhonyas->IsOwned() && zhonyas->IsReady())
22 | {
23 | zhonyas->CastOnPlayer();
24 | return;
25 | }
26 | if ((zhonyas->IsOwned() && !zhonyas->IsReady() || !zhonyas->IsOwned() || !Usezhonyas->Enabled()) && Ultisave->Enabled() && R->IsReady())
27 | {
28 | R->CastOnPlayer();
29 | }
30 | }
31 | }
32 | }
--------------------------------------------------------------------------------
/D-Ekko++/OnCreate_OnDelete.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 |
4 | PLUGIN_EVENT(void) OnCreateObject(IUnit* obj)
5 | {
6 | if (obj != nullptr)
7 | {
8 | if (obj->GetClassId() != kobj_GeneralParticleEmitter && strstr(obj->GetObjectName(), "Ekko"))
9 | {
10 | Rpos = obj;
11 | }
12 | }
13 | }
14 | PLUGIN_EVENT(void) OnDestroyObject(IUnit* obj)
15 | {
16 | if (obj != nullptr)
17 | {
18 | if (!strcmp(obj->GetObjectName(), "Ekko"))
19 | {
20 | Rpos = nullptr;
21 | }
22 |
23 | }
24 | }
--------------------------------------------------------------------------------
/D-Ekko++/OnProcessCast.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 | #include "dodgeSkills.h"
4 | #include "SpellDatabase.h"
5 |
6 | PLUGIN_EVENT(void) OnProcessCast(CastedSpell const& spell)
7 | {
8 |
9 | if (spell.Caster_ == myHero)
10 | {
11 | if (Contains(std::string(spell.Name_), "EkkoE"))
12 | {
13 | Reset();
14 | }
15 | }
16 | if (zhonyas->IsOwned() && zhonyas->IsReady() || R->IsReady())
17 | {
18 |
19 | if (!spell.Caster_->IsEnemy(myHero) && !myHero->IsValidTarget(spell.Caster_, W->Range()))
20 | return;
21 | if (!spell.Caster_->IsHero() || spell.Caster_ == nullptr)
22 | return;
23 |
24 | if (spell.Target_ != myHero)
25 | return;
26 |
27 | if (GSpellData->IsAutoAttack(spell.Data_))
28 | return;
29 |
30 | if (GSpellData->GetBaseDamage(spell.Data_) > 0.f)
31 | {
32 |
33 | auto slot = GSpellData->GetSlot(spell.Data_);
34 | if (slot != kSlotUnknown)
35 | {
36 | auto spelldmg = GDamage->GetSpellDamage(spell.Caster_, spell.Target_, slot) * 2;
37 | if (CountEnemiesInRange(W->Range()) > 0 && (myHero->GetHealth() < spelldmg || myHero->HealthPercent() < 4))
38 | {
39 | if (Usezhonyas->Enabled() && zhonyas->IsOwned() && zhonyas->IsReady())
40 | {
41 | zhonyas->CastOnPlayer();
42 | return;
43 | }
44 | if ((zhonyas->IsOwned() && !zhonyas->IsReady() || !zhonyas->IsOwned() || !Usezhonyas->Enabled()) && Ultisave->Enabled() && R->IsReady())
45 | {
46 | R->CastOnPlayer();
47 | return;
48 | }
49 | }
50 | }
51 | }
52 | }
53 | // 100% Gredits SoNiice
54 | if (AutoE->Enabled() && E->IsReady())
55 | {
56 | if (!spell.Caster_->IsEnemy(GEntityList->Player()))
57 | return;
58 | if (spell.Caster_->IsHero())
59 | {
60 | auto championName = const_cast(spell.Caster_->GetBaseSkinName());
61 | auto spellName = const_cast(GSpellData->GetSpellName(spell.Data_));
62 |
63 | for (auto champion : SpellDatabase::Champions)
64 | {
65 | if (strstr(champion.first, championName) != nullptr)
66 | {
67 | for (auto championSpell : champion.second.Spells)
68 | {
69 | if (strstr(championSpell.Name, spellName) != nullptr)
70 | {
71 | if (GetMenuBoolean(std::string(championSpell.Name)))
72 | {
73 | auto UseE = false;
74 |
75 | if (spell.Target_ != nullptr && spell.Target_ == myHero)
76 | UseE = true;
77 |
78 | if (spell.Target_ == nullptr)
79 | {
80 | auto currentSpell = GPluginSDK->CreateSpell2(championSpell.Slot, championSpell.SpellType, championSpell.Missile, championSpell.AoE, championSpell.Collisions);
81 | currentSpell->SetSkillshot(championSpell.Delay, championSpell.Radius, championSpell.Speed, championSpell.Range);
82 |
83 | AdvPredictionOutput pOutput;
84 | currentSpell->RunPrediction(myHero, championSpell.AoE, championSpell.Collisions, &pOutput);
85 |
86 | if (pOutput.HitChance >= kHitChanceHigh)
87 | {
88 | UseE = true;
89 | }
90 | }
91 |
92 | if (UseE)
93 | {
94 | GPluginSDK->DelayFunctionCall(championSpell.Delay - championSpell.Delay * 0.3, [] {
95 | auto Enemy = GTargetSelector->FindTarget(QuickestKill, PhysicalDamage, Q->Range());
96 |
97 | auto epos = myHero->ServerPosition().Extend(Enemy->GetPosition(), -E->Range());
98 |
99 | E->CastOnPosition(epos);
100 | });
101 | }
102 | }
103 | break;
104 | }
105 | }
106 | }
107 | }
108 | }
109 | }
110 | }
111 |
112 |
113 | /*if (E->IsReady() && AutoE->Enabled()&& !GSpellData->IsAutoAttack(spell.Data_))
114 | {
115 | auto epos = myHero->ServerPosition().Extend(target->GetPosition(), -E->Range());
116 | if (myHero->IsValidTarget(spell.Caster_, 900))
117 | {
118 | for (auto spellName : dodgeSkills)
119 | {
120 | if (Contains(std::string(spell.Name_), spellName))
121 | E->CastOnPosition(epos);
122 | }
123 | }
124 | }
125 | }*/
126 |
--------------------------------------------------------------------------------
/D-Ekko++/PermaActive.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 |
4 |
5 | inline void killsteal()
6 | {
7 | if (GGame->IsChatOpen()) return;
8 | for (auto Enemy : GEntityList->GetAllHeros(false, true))
9 | {
10 | if (Enemy->IsVisible())
11 | {
12 | if (Enemy != nullptr && !Enemy->IsDead())
13 | {
14 | if (KillstealQ->Enabled())
15 | {
16 | auto dmgQ = GDamage->GetSpellDamage(GEntityList->Player(), Enemy, kSlotQ);
17 | if (myHero->IsValidTarget(Enemy, Q->Range()) && !Enemy->IsInvulnerable())
18 | {
19 | if (Enemy->GetHealth() <= dmgQ && Q->IsReady())
20 | {
21 | Q->CastOnTarget(Enemy, kHitChanceHigh);
22 | }
23 | }
24 | }
25 |
26 | if (KillstealE->Enabled() && E->IsReady())
27 | {
28 | auto dmgE = GDamage->GetSpellDamage(GEntityList->Player(), Enemy, kSlotE);
29 | if (myHero->IsValidTarget(Enemy, E->Range() + 475) && !Enemy->IsInvulnerable())
30 | {
31 | if (Enemy->GetHealth() <= dmgE)
32 | {
33 | E->CastOnPosition(Enemy->GetPosition());
34 | }
35 | }
36 | }
37 | if (KillstealR->Enabled() && R->IsReady())
38 | {
39 | if (Rpos != nullptr)
40 | {
41 | if (CountEnemiesInRange(Rpos->GetPosition(), R->Radius() >= 1) && !Enemy->IsInvulnerable())
42 | {
43 | auto dmgR = GDamage->GetSpellDamage(GEntityList->Player(), Enemy, kSlotR);
44 | if (Enemy->GetHealth() <= dmgR)
45 | {
46 | R->CastOnPlayer();
47 | }
48 | }
49 | }
50 | }
51 | }
52 | }
53 | }
54 | }
55 | inline void Qtoprocpassive()
56 | {
57 | if (Q->IsReady())
58 | {
59 | auto Enemy = GTargetSelector->FindTarget(QuickestKill, SpellDamage, Q->Range() + Q->Radius());
60 | if (Enemy != nullptr && myHero->IsValidTarget(Enemy, Q->Range() + Q->Radius()))
61 | {
62 | if (HittoPassive(Enemy))
63 | {
64 | Q->CastOnTarget(Enemy, kHitChanceHigh);
65 | }
66 | }
67 | }
68 | }
69 | inline void recallinlane()
70 | {
71 | if (R->IsReady())
72 | {
73 | auto end = GBuffData->GetEndTime(myHero->GetBuffDataByName("Recall"));
74 | auto start = GBuffData->GetStartTime(myHero->GetBuffDataByName("Recall"));
75 | if (end)
76 | {
77 | lastrecall = GGame->CurrentTick();
78 | GGame->PrintChat("STAGTE_1");
79 | }
80 | if (GUtility->IsPositionInFountain(myHero->GetPosition()) && GGame->CurrentTick() - lastrecall >3900)
81 | {
82 | R->CastOnPlayer();
83 | GGame->PrintChat("STAGTE_2");
84 | }
85 | }
86 | }
--------------------------------------------------------------------------------
/D-Ekko++/Render.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 | #include "Damage.h"
4 |
5 |
6 | int xOffset = 10;
7 | int yOffset = 15;
8 | int Width = 103;
9 | int Height = 8;
10 | PLUGIN_EVENT(void) OnRender()
11 | {
12 | Vec4 color;
13 | Vec4 colorw;
14 | Vec4 colore;
15 | Vec4 colorr;
16 | Vec4 colorrpos;
17 | qRangeColor->GetColor(&color);
18 | wRangeColor->GetColor(&colorw);
19 | eRangeColor->GetColor(&colore);
20 | rRangeColor->GetColor(&colorr);
21 | RposRangeColor->GetColor(&colorrpos);
22 | if (DrawSmite->Enabled())
23 | {
24 | if (smitejungle->Enabled())
25 | {
26 | Vec2 pos;
27 | if (GGame->Projection(myHero->GetPosition(), &pos))
28 | GRender->DrawTextW(Vec2(pos.x + 72, pos.y + 10), Vec4(0, 255, 0, 255), "SMITE: ON");
29 | }
30 | else {
31 | Vec2 pos;
32 | if (GGame->Projection(myHero->GetPosition(), &pos))
33 | GRender->DrawTextW(Vec2(pos.x + 72, pos.y + 10), Vec4(255, 0, 0, 255), "SMITE: OFF");
34 | }
35 | }
36 | if(Rpos !=nullptr && DrawRpos->Enabled())
37 | {
38 | GRender->DrawOutlinedCircle(Rpos->GetPosition(), colorrpos, R->Radius());
39 | }
40 | /*if (DrawCombomode->Enabled())
41 | {
42 | Vec3 worldToScreen;
43 | GGame->Projection(myHero->GetPosition(), &worldToScreen);
44 |
45 | if (mode == 0)
46 | {
47 | GRender->DrawTextW(Vec2(worldToScreen.x, worldToScreen.y), Vec4(255, 255, 0, 255), "Combo:Q-R");
48 | }
49 | if (mode == 1)
50 | {
51 | GRender->DrawTextW(Vec2(worldToScreen.x, worldToScreen.y), Vec4(255, 255, 0, 255), "Combo:R-Q");
52 | }
53 | }*/
54 | if (DrawReady->Enabled())
55 | {
56 | if (Q->IsReady() && DrawQ->Enabled())
57 | {
58 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), color, Q->Range());
59 | }
60 | if (W->IsReady() && DrawW->Enabled())
61 | {
62 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colorw, W->Range());
63 | }
64 | if (E->IsReady() && DrawE->Enabled())
65 | {
66 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colore, E->Range());
67 | }
68 | if (R->IsReady() && DrawR->Enabled())
69 | {
70 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colorr, R->Range());
71 | }
72 | }
73 | else
74 | {
75 | if (DrawQ->Enabled())
76 | {
77 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), color, Q->Range());
78 | }
79 | if (DrawW->Enabled())
80 | {
81 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colorw, W->Range());
82 | }
83 | if (DrawE->Enabled())
84 | {
85 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colore, E->Range());
86 | }
87 | if (DrawR->Enabled())
88 | {
89 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colorr, R->Range());
90 | }
91 | }
92 |
93 | if (Drawhealthbar->Enabled()) //Damage.Healthbar"))
94 | {
95 | for (auto enemy : GEntityList->GetAllHeros(false, true))
96 | {
97 | Vec4 colorheal;
98 | healRangeColor->GetColor(&colorheal);
99 | Vec2 barPos = Vec2();
100 | if (enemy->GetHPBarPosition(barPos))
101 | {
102 | auto Damage = TotalDamage(enemy);
103 | float percentHealthAfterDamage = max(0, enemy->GetHealth() - float(Damage)) / enemy->GetMaxHealth();
104 | float yPos = barPos.y + yOffset;
105 | float xPosDamage = (barPos.x + xOffset) + Width * percentHealthAfterDamage;
106 | float xPosCurrentHp = barPos.x + xOffset + Width * (enemy->GetHealth() / enemy->GetMaxHealth());
107 | if (!enemy->IsDead() && enemy->IsValidTarget())
108 | {
109 | float differenceInHP = xPosCurrentHp - xPosDamage;
110 | float pos1 = barPos.x + 9 + (107 * percentHealthAfterDamage);
111 |
112 | for (int i = 0; i < differenceInHP; i++)
113 | {
114 | GRender->DrawLine(Vec2(pos1 + i, yPos), Vec2(pos1 + i, yPos + Height), colorheal);
115 | }
116 | if (!enemy->IsVisible())
117 | {
118 |
119 | }
120 | }
121 | }
122 | }
123 | }
124 | }
--------------------------------------------------------------------------------
/D-Ekko++/RunForest.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 | inline void runforest()
4 | {
5 | auto Qmana = Q->ManaCost();
6 | auto Wmana = W->ManaCost();
7 | auto Emana = E->ManaCost();
8 | auto mana = Qmana + Wmana + Emana;
9 | auto Enemy = GTargetSelector->FindTarget(QuickestKill, PhysicalDamage, W->Range());
10 | GGame->IssueOrder(myHero, kMoveTo, GGame->CursorPosition());
11 | if (Enemy != nullptr)
12 | {
13 | if (myHero->IsValidTarget(Enemy, W->Range()) && mana)
14 | {
15 | if (W->IsReady())
16 | {
17 | W->CastOnPosition(myHero->GetPosition());
18 | }
19 | if (Q->IsReady() && myHero->IsValidTarget(Enemy, Q->Range()))
20 | {
21 | Q->CastOnTarget(Enemy, kHitChanceHigh);
22 | }
23 | }
24 | if(E->IsReady() && myHero->IsValidTarget(Enemy, Q->Range()))
25 | {
26 | E->CastOnPosition(myHero->GetPosition().Extend(GGame->CursorPosition(), E->Range()));
27 | }
28 | if (protobelt->IsOwned() && protobelt->IsReady())
29 | {
30 | protobelt->CastOnPosition(myHero->GetPosition().Extend(GGame->CursorPosition(), 600));
31 | }
32 | }
33 | }
--------------------------------------------------------------------------------
/D-Ekko++/Smite.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Menu.h"
3 | inline void smitestatus()
4 | {
5 | keyDown = GetAsyncKeyState(smitekey->GetInteger()); //smite key
6 |
7 | if (GUtility->IsLeagueWindowFocused() && !GGame->IsChatOpen())
8 | {
9 | if (keyDown < 0)
10 | {
11 | if (SmiteDown == false)
12 | {
13 | if (smitejungle->GetInteger() == 0) { smitejungle->UpdateInteger(1); }
14 | else { smitejungle->UpdateInteger(0); }
15 | SmiteDown = true;
16 | }
17 | }
18 | else
19 | {
20 | SmiteDown = false;
21 | }
22 | }
23 | }
24 |
25 | inline void smitetarget()
26 | {
27 | if (smite != nullptr)
28 | {
29 | if (!usesmitetarget->Enabled() || !smite->IsReady()) return;
30 | auto enemy = GTargetSelector->FindTarget(QuickestKill, SpellDamage, 1500);
31 | if (enemy != nullptr && myHero->IsValidTarget(enemy, 570))
32 | {
33 | auto Dmg = GDamage->GetSummonerSpellDamage(myHero, enemy, kSummonerSpellSmite);
34 | smite->CastOnUnit(enemy);
35 | }
36 | }
37 | }
38 |
39 | inline void Smiteuse()
40 | {
41 | if (smite != nullptr && smite->IsReady())
42 | {
43 | auto minions = GEntityList->GetAllMinions(false, false, true);
44 | for (IUnit* minion : minions)
45 | {
46 | auto smitestage = usesmitejungle->GetInteger();
47 | if (smitestage == 0)
48 | {
49 | if (strstr(minion->GetObjectName(), "Blue") || strstr(minion->GetObjectName(), "Gromp")
50 | || strstr(minion->GetObjectName(), "Murkwolf") || strstr(minion->GetObjectName(), "Razorbeak")
51 | || strstr(minion->GetObjectName(), "RiftHerald") || strstr(minion->GetObjectName(), "Red")
52 | || strstr(minion->GetObjectName(), "Krug") || strstr(minion->GetObjectName(), "Dragon")
53 | || strstr(minion->GetObjectName(), "Baron"))
54 | {
55 | auto Dmg = GDamage->GetSummonerSpellDamage(myHero, minion, kSummonerSpellSmite);
56 | if (minion != nullptr && !minion->IsDead() && minion->GetHealth() <= Dmg && myHero->IsValidTarget(minion, 570))
57 | {
58 | smite->CastOnUnit(minion);
59 | }
60 | }
61 | }
62 | if (smitestage == 1)
63 | {
64 | if (strstr(minion->GetObjectName(), "RiftHerald") || strstr(minion->GetObjectName(), "Dragon")
65 | || strstr(minion->GetObjectName(), "Baron"))
66 | {
67 | auto Dmg = GDamage->GetSummonerSpellDamage(myHero, minion, kSummonerSpellSmite);
68 | if (minion != nullptr && !minion->IsDead() && minion->GetHealth() <= Dmg && myHero->IsValidTarget(minion, 570))
69 | {
70 | smite->CastOnUnit(minion);
71 | }
72 | }
73 | }
74 | }
75 | }
76 | }
77 |
78 |
--------------------------------------------------------------------------------
/D-Ekko++/Spells.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Menu.h"
3 |
4 | inline void LoadSpells()
5 | {
6 | Q = GPluginSDK->CreateSpell2(kSlotQ, kLineCast, true, true, static_cast(kCollidesWithYasuoWall));
7 | Q->SetSkillshot(0.25f, 60.f, 1650.f, 950.f);
8 |
9 | W = GPluginSDK->CreateSpell2(kSlotW, kCircleCast, true, true, static_cast(kCollidesWithNothing));
10 | W->SetSkillshot(3.75f, 200.f, 1650, 1600.f);
11 |
12 | E = GPluginSDK->CreateSpell2(kSlotE, kLineCast, false, false, static_cast(kCollidesWithNothing));
13 | E->SetOverrideRange(325);
14 |
15 | R = GPluginSDK->CreateSpell2(kSlotR, kCircleCast, false, false, static_cast(kCollidesWithNothing));
16 | R->SetSkillshot(0.25f, 375.f, FLT_MAX, 280.f);
17 |
18 | auto slot1 = GPluginSDK->GetEntityList()->Player()->GetSpellName(kSummonerSlot1);
19 | auto slot2 = GPluginSDK->GetEntityList()->Player()->GetSpellName(kSummonerSlot2);
20 |
21 | if (strcmp(slot1, "SummonerDot") == 0)
22 | {
23 | Ignite = GPluginSDK->CreateSpell(kSummonerSlot1, 600);
24 | }
25 | if (strcmp(slot2, "SummonerDot") == 0)
26 | {
27 | Ignite = GPluginSDK->CreateSpell(kSummonerSlot2, 600);
28 | }
29 | else Ignite == nullptr;
30 | if (strstr(slot1, "SummonerSmite"))
31 | {
32 | smite = GPluginSDK->CreateSpell2(kSummonerSlot1, kTargetCast, false, false, kCollidesWithNothing);
33 | smite->SetOverrideRange(550.f);
34 | }
35 | if (strstr(slot2, "SummonerSmite"))
36 | {
37 | smite = GPluginSDK->CreateSpell2(kSummonerSlot2, kTargetCast, false, false, kCollidesWithNothing);
38 | smite->SetOverrideRange(550.f);
39 | }
40 |
41 | zhonyas = GPluginSDK->CreateItemForId(3157, 0);
42 | blade = GPluginSDK->CreateItemForId(3153, 550);
43 | Cutlass = GPluginSDK->CreateItemForId(3144, 550);
44 | Hextech = GPluginSDK->CreateItemForId(3146, 600);
45 | protobelt = GPluginSDK->CreateItemForId(3152, 600);
46 | HealthPot = GPluginSDK->CreateItemForId(2003, 0);
47 | CorruptPot = GPluginSDK->CreateItemForId(2033, 0);
48 | RefillPot = GPluginSDK->CreateItemForId(2031, 0);
49 | Biscuit = GPluginSDK->CreateItemForId(2010, 0);
50 | hunter = GPluginSDK->CreateItemForId(2032, 0);
51 | }
52 |
--------------------------------------------------------------------------------
/D-Ekko++/dodgeSkills.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 | #include
4 |
5 | static std::vector dodgeSkills = {
6 | "FizzPiercingStrike",
7 | "UFSlash",
8 | "HungeringStrike",
9 | "YasuoDash",
10 | "KatarinaRTrigger",
11 | "KatarinaE",
12 | "DariusR",
13 | "GarenQ",
14 | "GarenR",
15 | "IreliaE",
16 | "LeeSinR",
17 | "OlafE",
18 | "RenektonW",
19 | "RenektonPreExecute",
20 | "RengarQ",
21 | "VeigarR",
22 | "VolibearW",
23 | "XenZhaoThrust3",
24 | "TwitchEParticle",
25 | "MonkeyKingSpinToWin",
26 | "RengarPassiveBuffDash",
27 | "TalonCutthroat",
28 | "CurseoftheSadMummy",
29 | "EnchantedCrystalArrow",
30 | "RocketGrab",
31 | "EliseHumanE",
32 | "GragasE",
33 | "GravesChargeShot",
34 | "JhinRShot",
35 | "LeonaZenithBlade",
36 | "LeonaSolarFlare",
37 | "DarkBindingMissile",
38 | "OlafAxeThrowCast",
39 | "OrianaDetonateCommand-",
40 | "RumbleCarpetBombM",
41 | "SejuaniGlacialPrisonStart",
42 | "SonaR",
43 | "ThreshQ",
44 | "Vi-q",
45 | "xerathrmissilewrapper",
46 | "ZyraE"
47 | };
48 |
--------------------------------------------------------------------------------
/D-Ezreal/D-Ezreal.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hh;hpp;hxx;hm;inl;inc;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 |
18 |
19 | Source Files
20 |
21 |
22 |
--------------------------------------------------------------------------------
/D-Graves/Animation.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extensions.h"
3 |
4 | /*PLUGIN_EVENTD(void) OnPlayAnimation(IUnit* Source, std::string const AnimationId)
5 | {
6 |
7 | if (Source == GEntityList->Player())
8 | {
9 | GGame->PrintChat(AnimationId.c_str());
10 | }
11 | }*/
12 | PLUGIN_EVENT(void) OnPlayAnimation(IUnit* Source, std::string const Args)
13 | {
14 | auto Enemy = GTargetSelector->FindTarget(QuickestKill, PhysicalDamage, Q->Range() - 100);
15 | if (Source == myHero)
16 | {
17 | if (GetAsyncKeyState(Burst_b->GetInteger()) || GOrbwalking->GetOrbwalkingMode() == kModeCombo)
18 | {
19 | if (Contains(Args, "59b") || Contains(Args, "84b"))
20 | {
21 | ResetAA();
22 | nowauto = true;
23 | GPluginSDK->DelayFunctionCall(400, []()
24 | {
25 | nowauto = false;
26 | });
27 | }
28 | if (Contains(Args, "b4f63b8e"))
29 | {
30 | lastE = GGame->CurrentTick();
31 | if (!R->IsReady())
32 | {
33 | Q->CastOnPosition(Enemy->ServerPosition());
34 | }
35 | ResetE();
36 |
37 | }
38 | if (Contains(Args, "b7f"))
39 | {
40 | lastR = GGame->CurrentTick();
41 | ResetR();
42 | if (!R->IsReady())
43 | {
44 | E->CastOnPosition(Enemy->ServerPosition());
45 | }
46 | }
47 | if (Contains(Args, "bf2"))
48 | {
49 | ResetQ();
50 | }
51 | }
52 | }
53 | }
--------------------------------------------------------------------------------
/D-Graves/Burst.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extensions.h"
3 |
4 | inline void burst()
5 | {
6 | auto Enemy = GTargetSelector->FindTarget(QuickestKill, PhysicalDamage, 1000);
7 | GGame->IssueOrder(myHero, kAttackUnit, GGame->CursorPosition());
8 | GOrbwalking->Orbwalk(Enemy, GGame->CursorPosition());
9 | auto mana = Q->ManaCost() + E->ManaCost() + R->ManaCost();
10 | if (Enemy != nullptr && myHero->IsValidTarget(Enemy, Q->Range() - 100) && myHero->GetMana() >= mana)
11 | {
12 |
13 | if (nowauto)
14 | {
15 | R->CastOnPosition(Enemy->ServerPosition());
16 | }
17 | GOrbwalking->ResetAA();
18 | if (!R->IsReady())
19 | {
20 | E->CastOnPosition(Enemy->ServerPosition());
21 | GOrbwalking->ResetAA();
22 | }
23 | if (!E->IsReady() && !R->IsReady())
24 | {
25 | Q->CastOnPosition(Enemy->GetPosition());
26 | }
27 | if (!Q->IsReady() && !R->IsReady())
28 | {
29 | W->CastOnPosition(Enemy->GetPosition());
30 | }
31 | }
32 | }
33 |
34 | static void burstAfter(IUnit* source, IUnit* target)
35 | {
36 |
37 | if (target != nullptr && myHero->IsValidTarget(target, Q->Range() - 100))
38 | {
39 | auto mana = Q->ManaCost() + E->ManaCost() + R->ManaCost();
40 |
41 | if (nowauto)
42 | {
43 | R->CastOnPosition(target->ServerPosition());
44 | }
45 | if (E->IsReady() && !R->IsReady())
46 | {
47 | E->CastOnPosition(target->ServerPosition());
48 | GOrbwalking->ResetAA();
49 | }
50 | if (Q->IsReady() && !R->IsReady())
51 | {
52 | Q->CastOnPosition(target->GetPosition());
53 | }
54 | if (!Q->IsReady() && W->IsReady() && !R->IsReady())
55 | {
56 | W->CastOnPosition(target->GetPosition());
57 | }
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/D-Graves/Color.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Vector3.h"
3 |
4 | class Color
5 | {
6 | public:
7 | Color()
8 | {
9 | r = g = b = a = 0;
10 | }
11 |
12 | Color(int r, int g, int b, int a)
13 | : r(r), g(g), b(b), a(a) { }
14 |
15 | Color(int r, int g, int b)
16 | : r(r), g(g), b(b), a(255) { }
17 |
18 | inline Vec4 Get() const
19 | {
20 | return Vec4(r, g, b, a);
21 | }
22 |
23 | inline Vec4 Get(int alpha) const
24 | {
25 | return Vec4(r, g, b, alpha);
26 | }
27 |
28 | inline DWORD GetHex() const
29 | {
30 | return static_cast((((a)& 0xff) << 24) | (((r)& 0xff) << 16) | (((g)& 0xff) << 8) | ((b)& 0xff));
31 | }
32 |
33 | inline DWORD GetHex(int alpha) const
34 | {
35 | return static_cast((((alpha)& 0xff) << 24) | (((r)& 0xff) << 16) | (((g)& 0xff) << 8) | ((b)& 0xff));
36 | }
37 |
38 | inline static Color White() { return Color(255, 255, 255); }
39 | inline static Color Black() { return Color(0, 0, 0); }
40 | inline static Color Red() { return Color(255, 0, 0); }
41 | inline static Color Green() { return Color(0, 255, 0); }
42 | inline static Color Blue() { return Color(0, 0, 255); }
43 | inline static Color LightBlue() { return Color(0, 115, 200); }
44 | inline static Color LightBlue2() { return Color(66, 173, 255); }
45 | inline static Color LightGrey2() { return Color(150, 150, 150); }
46 | inline static Color Grey() { return Color(70, 70, 70); }
47 | inline static Color LightGrey() { return Color(170, 170, 170); }
48 | inline static Color DarkGrey() { return Color(45, 45, 45); }
49 | inline static Color Yellow() { return Color(255, 255, 0); }
50 | inline static Color Magenta() { return Color(255, 0, 255); }
51 | inline static Color DarkMagenta() { return Color(139, 0, 139); }
52 | inline static Color Purple() { return Color(128, 0, 128); }
53 | inline static Color DarkGreen() { return Color(0, 128, 0); }
54 | inline static Color DarkGreen2() { return Color(0, 100, 0); }
55 | inline static Color Crimson() { return Color(220, 20, 60); } // cuz people blush
56 | inline static Color LightRed2() { return Color(255, 75, 75); }
57 | inline static Color LightGreen() { return Color(75, 255, 75); }
58 | inline static Color LightRed() { return Color(255, 50, 50); }
59 | inline static Color Orange() { return Color(255, 69, 0); }
60 |
61 | private:
62 | int a, r, g, b;
63 | };
--------------------------------------------------------------------------------
/D-Graves/Combo.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extensions.h"
3 | #include "Damage.h"
4 |
5 | inline void Combo()
6 | {
7 | auto useQ = ComboQ->Enabled();
8 | auto useW = ComboW->Enabled();
9 | smitetarget();
10 | if (useQ)
11 | {
12 | if (Q->IsReady())
13 | {
14 | auto t = GTargetSelector->FindTarget(QuickestKill, PhysicalDamage, QRange->GetInteger());
15 | if (t != nullptr && myHero->IsValidTarget(t, Q->Range()))
16 | Q->CastOnTarget(t, kHitChanceHigh);
17 | }
18 | }
19 | if (useW && !E->IsReady())
20 | {
21 | if (W->IsReady())
22 | {
23 | auto t = GTargetSelector->FindTarget(QuickestKill, PhysicalDamage, W->Range());
24 | if (t != nullptr && myHero->IsValidTarget(t, W->Range()))
25 | W->CastOnTarget(t, kHitChanceHigh);
26 | }
27 | }
28 | if (ComboR->Enabled() && R->IsReady())
29 | {
30 | for (auto Enemy : GEntityList->GetAllHeros(false, true))
31 | {
32 | if (Enemy != nullptr && !Enemy->IsDead())
33 | {
34 | auto Rlvl = GEntityList->Player()->GetSpellLevel(kSlotR) - 1;
35 | auto BaseDamage = std::vector({ 200, 320, 440 }).at(Rlvl);
36 | auto ADMultiplier = 1.07 * GEntityList->Player()->TotalPhysicalDamage();
37 | auto TotalD = BaseDamage + ADMultiplier;
38 | if (myHero->IsValidTarget(Enemy, R->Range()) && !Enemy->IsInvulnerable())
39 | {
40 | if (Enemy->GetHealth() <= Rdamage(Enemy))
41 | {
42 | R->CastOnTarget(Enemy, kHitChanceHigh);
43 | }
44 | }
45 | }
46 | }
47 | }
48 |
49 | if (R->IsReady() && ComboRAOEuse->Enabled())
50 | {
51 | for (auto target : GEntityList->GetAllHeros(false, true))
52 | if (target != nullptr && myHero->IsValidTarget(target, R->Range()))
53 | {
54 | R->CastOnTargetAoE(target, 3, kHitChanceLow);
55 | }
56 | }
57 | }
--------------------------------------------------------------------------------
/D-Graves/D-Graves.cpp:
--------------------------------------------------------------------------------
1 | // D-Graves.cpp : Defines the exported functions for the DLL application.
2 | //
3 |
4 | //#include "stdafx.h"
5 | #include "PluginSDK.h"
6 | #include "Menu.h"
7 | #include "Spells.h"
8 | #include "Farm.h"
9 | #include "Items.h"
10 | #include "Animation.h"
11 | #include "Color.h"
12 | #include "Burst.h"
13 | #include "OnProcessSpellCast.h"
14 | #include "killsteal.h"
15 | #include "Combo.h"
16 | #include "Render.h"
17 | #include "OnCast.h"
18 |
19 | PluginSetup("D-Graves");
20 |
21 |
22 |
23 | PLUGIN_EVENT(void) OnAfterAttack(IUnit* source, IUnit* target)
24 | {
25 | auto useE = ComboE->Enabled();
26 | if (source == myHero && target != nullptr && GOrbwalking->GetOrbwalkingMode() == kModeCombo)
27 | {
28 | if (useE && !myHero->GetBuffDataByName("GravesBasicAttackAmmo2") && E->IsReady())
29 | {
30 | auto t = GTargetSelector->FindTarget(QuickestKill, PhysicalDamage, Q->Range());
31 | if (t != nullptr && myHero->IsValidTarget(t, Q->Range()))
32 | E->CastOnPosition(GGame->CursorPosition());
33 | GOrbwalking->ResetAA();
34 | }
35 | }
36 | if (GetAsyncKeyState(Burst_b->GetInteger()))
37 | {
38 | burstAfter(source, target);
39 | }
40 | }
41 |
42 | PLUGIN_EVENT(void) OnGapcloser(GapCloserSpell const& args)
43 | {
44 | if (args.Source->IsEnemy(myHero) && args.Source->IsHero())
45 | {
46 | if (GapcloseW->Enabled() && W->IsReady() && !args.IsTargeted)
47 | {
48 | auto t = args.Source;
49 | if (myHero->IsValidTarget(t, W->Range()))
50 | if (!t->IsMelee())
51 | {
52 | W->CastOnTarget(args.Source);
53 | }
54 | else W->CastOnPlayer();
55 | }
56 | }
57 | }
58 |
59 | PLUGIN_EVENT(void) OnGameUpdate()
60 | {
61 | if (GetAsyncKeyState(Burst_b->GetInteger()))
62 | {
63 | burst();
64 | }
65 | if (GetAsyncKeyState(SemiR->GetInteger()) && R->IsReady())
66 | {
67 | auto target = GTargetSelector->FindTarget(QuickestKill, PhysicalDamage, R->Range());
68 | if (target != nullptr && myHero->IsValidTarget(target, R->Range()))
69 | {
70 | R->CastOnTarget(target, kHitChanceHigh);
71 | }
72 | }
73 | if (GOrbwalking->GetOrbwalkingMode() == kModeCombo)
74 | {
75 | Combo();
76 | }
77 | if (GOrbwalking->GetOrbwalkingMode() == kModeLaneClear)
78 | {
79 | LaneClear();
80 | JungleClear();
81 | }
82 | killsteal();
83 | UseItems();
84 | Usepotion();
85 | if (smitejungle->Enabled())
86 | {
87 | Smiteuse();
88 | }
89 | }
90 |
91 | PLUGIN_API void OnLoad(IPluginSDK* PluginSDK)
92 | {
93 | PluginSDKSetup(PluginSDK);
94 | Menu();
95 | LoadSpells();
96 | myHero = GEntityList->Player();
97 |
98 | GEventManager->AddEventHandler(kEventOnGameUpdate, OnGameUpdate);
99 | GEventManager->AddEventHandler(kEventOnRender, OnRender);
100 | GEventManager->AddEventHandler(kEventOrbwalkAfterAttack, OnAfterAttack);
101 | GEventManager->AddEventHandler(kEventOnGapCloser, OnGapcloser);
102 | GEventManager->AddEventHandler(kEventOnPlayAnimation, OnPlayAnimation);
103 | //GEventManager->AddEventHandler(kEventOnSpellCast, OnProcessSpellCast);
104 | GEventManager->AddEventHandler(kEventOnDoCast, OnDoCast);
105 |
106 | if (strcmp(GEntityList->Player()->ChampionName(), "Graves") == 0)
107 | {
108 | GRender->NotificationEx(Color::Crimson().Get(), 2, true, true, "D-Graves : Loaded!");
109 | }
110 | else
111 | {
112 | GRender->NotificationEx(Color::Crimson().Get(), 2, true, true, "You are not playing Graves...");
113 | }
114 | }
115 |
116 |
117 | PLUGIN_API void OnUnload()
118 | {
119 | MainMenu->Remove();
120 |
121 | GEventManager->RemoveEventHandler(kEventOnGameUpdate, OnGameUpdate);
122 | GEventManager->RemoveEventHandler(kEventOnRender, OnRender);
123 | GEventManager->RemoveEventHandler(kEventOrbwalkAfterAttack, OnAfterAttack);
124 | GEventManager->RemoveEventHandler(kEventOnGapCloser, OnGapcloser);
125 | GEventManager->RemoveEventHandler(kEventOnPlayAnimation, OnPlayAnimation);
126 | //GEventManager->RemoveEventHandler(kEventOnSpellCast, OnProcessSpellCast);
127 | GEventManager->RemoveEventHandler(kEventOnDoCast, OnDoCast);
128 |
129 | }
--------------------------------------------------------------------------------
/D-Graves/D-Graves.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hh;hpp;hxx;hm;inl;inc;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 |
18 |
19 | Source Files
20 |
21 |
22 |
23 |
24 | Header Files
25 |
26 |
27 | Header Files
28 |
29 |
30 | Header Files
31 |
32 |
33 | Header Files
34 |
35 |
36 | Header Files
37 |
38 |
39 | Header Files
40 |
41 |
42 | Header Files
43 |
44 |
45 | Header Files
46 |
47 |
48 | Header Files
49 |
50 |
51 | Header Files
52 |
53 |
54 | Header Files
55 |
56 |
57 | Header Files
58 |
59 |
60 | Header Files
61 |
62 |
63 | Header Files
64 |
65 |
66 | Header Files
67 |
68 |
69 |
--------------------------------------------------------------------------------
/D-Graves/Damage.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extensions.h"
3 | inline float Rdamage(IUnit* target)
4 | {
5 | auto damage = 0;
6 | if (myHero->GetSpellBook()->GetLevel(kSlotR) == 0)
7 | {
8 | return 0;
9 | }
10 | auto Rlvl = GEntityList->Player()->GetSpellLevel(kSlotR) - 1;
11 | auto BaseDamage = std::vector({ 200, 320, 440 }).at(Rlvl);
12 | auto ADMultiplier = 1.07 * GEntityList->Player()->TotalPhysicalDamage();
13 | auto TotalD = BaseDamage + ADMultiplier;
14 | damage += TotalD;
15 | return static_cast(damage);
16 | }
17 |
18 | inline float TotalDamage(IUnit* target)
19 | {
20 | if (target == nullptr || target->IsDead())
21 | {
22 | return 0;
23 | }
24 |
25 | auto damage = 0;
26 |
27 | if (Q->IsReady())
28 | {
29 | damage += GDamage->GetSpellDamage(myHero, target, kSlotQ);
30 | }
31 |
32 | if (W->IsReady())
33 | {
34 | damage += GDamage->GetSpellDamage(myHero, target, kSlotW);
35 | }
36 |
37 | if (R->IsReady())
38 | {
39 | damage +=Rdamage(target);
40 | }
41 | damage += GDamage->GetAutoAttackDamage(myHero, target, true);
42 |
43 | if (target->HasBuff("GarenW"))
44 | {
45 | damage = damage * 0.7f;
46 | }
47 |
48 | if (target->HasBuff("ferocioushowl"))
49 | {
50 | damage = damage * 0.7f;
51 | }
52 |
53 | if (target->HasBuff("BlitzcrankManaBarrierCD") && target->HasBuff("ManaBarrier"))
54 | {
55 | damage -= target->GetMana() / 2;
56 | }
57 | if (GEntityList->Player()->HasBuff("summonerexhaust"))
58 | damage *= 0.6f;
59 |
60 | return static_cast(damage);
61 | }
62 |
--------------------------------------------------------------------------------
/D-Graves/Farm.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extensions.h"
3 |
4 | inline void LaneClear()
5 | {
6 | for (auto minions : GEntityList->GetAllMinions(false, true, false))
7 | {
8 | if (myHero->ManaPercent() < FarmManaPercent->GetInteger())
9 | return;
10 | if (FarmQ->Enabled() && Q->IsReady())
11 | {
12 | if (minions != nullptr && myHero->IsValidTarget(minions, Q->Range()))
13 | {
14 | Q->CastOnUnit(minions);
15 | }
16 | else Q->LastHitMinion();
17 | }
18 | if (FarmW->Enabled() && W->IsReady())
19 | {
20 | if (minions != nullptr && myHero->IsValidTarget(minions, W->Range()))
21 | {
22 | W->CastOnUnit(minions);
23 | }
24 | else W->LastHitMinion();
25 | }
26 | }
27 | }
28 |
29 | inline void JungleClear()
30 | {
31 | for (auto jMinion : GEntityList->GetAllMinions(false, false, true))
32 | {
33 | if (myHero->ManaPercent() < JungleManaPercent->GetInteger())
34 | return;
35 | if (JungleQ->Enabled() && Q->IsReady())
36 | {
37 | if (jMinion != nullptr && myHero->IsValidTarget(jMinion, Q->Range()))
38 | {
39 | Q->CastOnUnit(jMinion);
40 | }
41 | }
42 | if (JungleW->Enabled() && W->IsReady())
43 | {
44 | if (jMinion != nullptr && myHero->IsValidTarget(jMinion, W->Range()))
45 | {
46 | W->CastOnUnit(jMinion);
47 | }
48 | }
49 | if (JungleE->Enabled() && E->IsReady())
50 | {
51 | if (jMinion != nullptr && myHero->IsValidTarget(jMinion, 500))
52 | {
53 | if (!myHero->GetBuffDataByName("GravesBasicAttackAmmo2") && E->IsReady())
54 | E->CastOnPosition(GGame->CursorPosition());
55 | GOrbwalking->ResetAA();
56 | }
57 | }
58 | }
59 | }
--------------------------------------------------------------------------------
/D-Graves/Harass.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extensions.h"
3 |
4 | inline void Harass()
5 | {
6 | if (myHero->ManaPercent() < HarassManaPercent->GetInteger())
7 | return;
8 | if (HarassQ->Enabled())
9 | {
10 | if (Q->IsReady())
11 | {
12 | auto target = GTargetSelector->FindTarget(QuickestKill, PhysicalDamage, Q->Range());
13 | if (target->IsValidTarget(myHero, Q->Range()))
14 | Q->CastOnTarget(target, kHitChanceHigh);
15 | }
16 | }
17 | if (HarassW->Enabled())
18 | {
19 | if (W->IsReady() && !Q->IsReady())
20 | {
21 | auto target = GTargetSelector->FindTarget(QuickestKill, PhysicalDamage, W->Range());
22 | if (target->IsValidTarget(myHero, W->Range()))
23 | W->CastOnTarget(target, kHitChanceHigh);
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/D-Graves/Items.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extensions.h"
3 |
4 | inline void Usepotion()
5 | {
6 | if (usepotion->Enabled() && !myHero->IsRecalling() && !myHero->IsDead())
7 | {
8 | if (CountEnemiesInRange(2000) > 0)
9 | {
10 | bool usepotions = myHero->GetHealth() < myHero->GetMaxHealth()* usepotionhpper->GetInteger() / 100;
11 | if (usepotions)
12 | {
13 | if (myHero->GetBuffDataByName("ItemDarkCrystalFlask") || myHero->GetBuffDataByName("ItemMiniRegenPotion")
14 | || myHero->GetBuffDataByName("ItemCrystalFlask") || myHero->GetBuffDataByName("RegenerationPotion") || myHero->HasBuff("ItemCrystalFlaskJungle"))
15 | return;
16 |
17 | if (Biscuit->IsOwned() && !GUtility->IsPositionInFountain(myHero->GetPosition()) && Biscuit->IsReady())
18 | {
19 | Biscuit->CastOnPlayer();
20 | }
21 | else if (HealthPot->IsOwned() && !GUtility->IsPositionInFountain(myHero->GetPosition()) && HealthPot->IsReady())
22 | {
23 | HealthPot->CastOnPlayer();
24 | }
25 | else if (CorruptPot->IsOwned() && CorruptPot->IsReady())
26 | {
27 | CorruptPot->CastOnPlayer();
28 | }
29 | else if (RefillPot->IsOwned() && RefillPot->IsReady())
30 | {
31 | RefillPot->CastOnPlayer();
32 | }
33 | else if (hunter->IsOwned() && hunter->IsReady())
34 | {
35 | hunter->CastOnPlayer();
36 | }
37 | }
38 | }
39 | }
40 | }
41 |
42 | inline void UseItems()
43 | {
44 | if (GOrbwalking->GetOrbwalkingMode() == kModeCombo)
45 | {
46 | for (auto enemy : GEntityList->GetAllHeros(false, true))
47 | {
48 | if (enemy != nullptr)
49 | {
50 | if (Blade_Cutlass->Enabled() && myHero->IsValidTarget(enemy, 550))
51 | {
52 | if (myHero->HealthPercent() < MyHpPreBlade->GetInteger() || enemy->HealthPercent() < EnemyHpPreBlade->GetInteger())
53 | {
54 | if (blade->IsOwned() && blade->IsReady())
55 | blade->CastOnTarget(enemy);
56 | if (Cutlass->IsOwned() && Cutlass->IsReady())
57 | Cutlass->CastOnTarget(enemy);
58 | }
59 | }
60 | if (useYoumuu->Enabled() && Youmuu->IsReady() && Youmuu->IsOwned())
61 | {
62 | if (myHero->IsValidTarget(enemy, 550))
63 | Youmuu->CastOnPlayer();
64 | }
65 | }
66 | }
67 | }
68 | }
--------------------------------------------------------------------------------
/D-Graves/KillSteal.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extensions.h"
3 | #include "Damage.h"
4 |
5 | inline void killsteal()
6 | {
7 | if (GGame->IsChatOpen()) return;
8 | for (auto Enemy : GEntityList->GetAllHeros(false, true))
9 | {
10 | if (Enemy != nullptr && !Enemy->IsDead())
11 | {
12 | if (KillstealQ->Enabled())
13 | {
14 | auto dmg = GDamage->GetSpellDamage(GEntityList->Player(), Enemy, kSlotQ);
15 | if (myHero->IsValidTarget(Enemy, Q->Range()) && !Enemy->IsInvulnerable())
16 | {
17 | if (Enemy->GetHealth() <= dmg && Q->IsReady())
18 | {
19 | Q->CastOnTarget(Enemy, kHitChanceHigh);
20 | }
21 | }
22 | }
23 | if (KillstealW->Enabled())
24 | {
25 | auto dmg = GDamage->GetSpellDamage(myHero, Enemy, kSlotW);
26 | if (myHero->IsValidTarget(Enemy, W->Range()) && !Enemy->IsInvulnerable())
27 | {
28 | if (Enemy->GetHealth() <= dmg && W->IsReady())
29 | {
30 | W->CastOnTarget(Enemy, kHitChanceHigh);
31 | }
32 | }
33 | }
34 | if (KillstealR->Enabled() && R->IsReady())
35 | {
36 | if (myHero->IsValidTarget(Enemy, R->Range()) && !Enemy->IsInvulnerable())
37 | {
38 | auto Rlvl = GEntityList->Player()->GetSpellLevel(kSlotR) - 1;
39 | auto BaseDamage = std::vector({ 200, 320, 440 }).at(Rlvl);
40 | auto ADMultiplier = 1.07 * GEntityList->Player()->TotalPhysicalDamage();
41 | auto TotalD = BaseDamage + ADMultiplier;
42 | if (Enemy->GetHealth()<= Rdamage(Enemy))
43 | {
44 | R->CastOnTarget(Enemy, kHitChanceHigh);
45 | }
46 | }
47 | }
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/D-Graves/OnProcessSpellCast.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extensions.h"
3 |
4 | PLUGIN_EVENT(void) OnProcessSpellCast(CastedSpell const& spell)
5 | {
6 | auto Enemy = GTargetSelector->FindTarget(QuickestKill, PhysicalDamage, Q->Range() - 100);
7 |
8 | if (Enemy != nullptr && spell.Caster_ == myHero && GOrbwalking->GetOrbwalkingMode() == kModeCombo)
9 | {
10 | if (!GSpellData->IsAutoAttack(spell.Data_) && ComboE->Enabled())// && !myHero->GetBuffDataByName("GravesBasicAttackAmmo2"))
11 | {
12 | E->CastOnPosition(Enemy->ServerPosition());
13 | lastE = GGame->CurrentTick();
14 | }
15 | if (std::string(spell.Name_) == "GravesMove")
16 | {
17 | ResetE();
18 | lastE = GGame->CurrentTick();
19 |
20 | }
21 | }
22 | if (Enemy != nullptr && spell.Caster_ == myHero && GetAsyncKeyState(Burst_b->GetInteger()))
23 | {
24 |
25 | if (std::string(spell.Name_) == "GravesMove")
26 | {
27 | ResetE();
28 | lastE = GGame->CurrentTick();
29 |
30 | }
31 | if (nowauto)
32 | {
33 | R->CastOnPosition(Enemy->ServerPosition());
34 | lastR = GGame->CurrentTick();
35 | if(!E->IsReady() && !R->IsReady())
36 | {
37 | Q->CastOnPosition(Enemy->GetPosition());
38 | }
39 | }
40 | if (std::string(spell.Name_) == "GravesQLineSpell")
41 | {
42 | W->CastOnPosition(Enemy->GetPosition());
43 | }
44 | if (std::string(spell.Name_) == "GravesChargeShot")
45 | {
46 | lastR = GGame->CurrentTick();
47 | ResetR();
48 | if (!E->IsReady() && !R->IsReady())
49 | {
50 | Q->CastOnPosition(Enemy->GetPosition());
51 | }
52 | }
53 | }
54 | }
--------------------------------------------------------------------------------
/D-Graves/Render.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Damage.h""
3 |
4 | int xOffset = 10;
5 | int yOffset = 15;
6 | int Width = 103;
7 | int Height = 8;
8 |
9 | PLUGIN_EVENT(void) OnRender()
10 | {
11 | Vec4 color;
12 | Vec4 colorw;
13 | Vec4 colore;
14 | Vec4 colorr;
15 | Vec4 colordmg;
16 | Vec4 colorburst;
17 | BurstColor->GetColor(&colorburst);
18 | qRangeColor->GetColor(&color);
19 | wRangeColor->GetColor(&colorw);
20 | rRangeColor->GetColor(&colorr);
21 | dmgRangeColor->GetColor(&colordmg);
22 | if (DrawReady->Enabled())
23 | {
24 | if (Q->IsReady() && R->IsReady() && E->IsReady() && DrawBurst->Enabled())
25 | {
26 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colorburst, Q->Range() - 300);
27 | }
28 | if (Q->IsReady() && DrawQ->Enabled())
29 | {
30 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), color, QRange->GetInteger());
31 | }
32 |
33 | if (W->IsReady() && DrawW->Enabled())
34 | {
35 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colorw, W->Range());
36 | }
37 |
38 | if (R->IsReady() && DrawR->Enabled())
39 | {
40 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colorr, R->Range());
41 | }
42 | }
43 | else
44 | {
45 | if (DrawBurst->Enabled())
46 | {
47 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colorburst, Q->Range() - 300);
48 | }
49 | if (DrawQ->Enabled())
50 | {
51 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), color, QRange->GetInteger());
52 | }
53 |
54 | if (DrawW->Enabled())
55 | {
56 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colorw, W->Range());
57 | }
58 |
59 | if (DrawR->Enabled())
60 | {
61 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colorr, R->Range());
62 | }
63 | }
64 | for (auto enemy : GEntityList->GetAllHeros(false, true))
65 | {
66 | if (enemy->IsDead() || !enemy->IsVisible())
67 | continue;
68 |
69 | Vec3 worldToScreen;
70 | GGame->Projection(enemy->GetPosition(), &worldToScreen);
71 |
72 |
73 | if (Drawdmg->Enabled())
74 | {
75 | auto Damage = TotalDamage(enemy);
76 | auto currentPercentage = ceil(Damage / enemy->GetHealth() * 100);
77 |
78 | GRender->DrawTextW(Vec2(worldToScreen.x, worldToScreen.y), currentPercentage >= 100 ? Vec4(255, 255, 0, 255) : Vec4(255, 255, 255, 255), currentPercentage >= 100 ? "Killable" : "%d (%.1f%%)", Damage, currentPercentage);
79 | }
80 |
81 | if (Drawhealthbar->Enabled()) //Damage.Healthbar"))
82 | {
83 | Vec2 barPos = Vec2();
84 | if (enemy->GetHPBarPosition(barPos))
85 | {
86 | auto Damage = TotalDamage(enemy);
87 | float percentHealthAfterDamage = max(0, enemy->GetHealth() - float(Damage)) / enemy->GetMaxHealth();
88 | float yPos = barPos.y + yOffset;
89 | float xPosDamage = (barPos.x + xOffset) + Width * percentHealthAfterDamage;
90 | float xPosCurrentHp = barPos.x + xOffset + Width * (enemy->GetHealth() / enemy->GetMaxHealth());
91 | if (!enemy->IsDead() && enemy->IsValidTarget())
92 | {
93 | float differenceInHP = xPosCurrentHp - xPosDamage;
94 | float pos1 = barPos.x + 9 + (107 * percentHealthAfterDamage);
95 |
96 | for (int i = 0; i < differenceInHP; i++)
97 | {
98 | GRender->DrawLine(Vec2(pos1 + i, yPos), Vec2(pos1 + i, yPos + Height), colordmg);
99 | }
100 | if (!enemy->IsVisible())
101 | {
102 |
103 | }
104 | }
105 | }
106 | }
107 | }
108 | }
--------------------------------------------------------------------------------
/D-Graves/Spells.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include "PluginSDK.h"
4 | #include "Menu.h"
5 |
6 | inline void LoadSpells()
7 | {
8 | Q = GPluginSDK->CreateSpell2(kSlotQ, kLineCast, true, true, static_cast(kCollidesWithYasuoWall | kCollidesWithWalls));
9 | W = GPluginSDK->CreateSpell2(kSlotW, kCircleCast, true, true, static_cast(kCollidesWithNothing));
10 | E = GPluginSDK->CreateSpell2(kSlotE, kTargetCast, false, false, static_cast(kCollidesWithNothing));
11 | R = GPluginSDK->CreateSpell2(kSlotR, kLineCast, true, true, static_cast(kCollidesWithYasuoWall));
12 |
13 | Q->SetOverrideRange(950);
14 | W->SetOverrideRange(950);
15 | E->SetOverrideRange(450);
16 | R->SetOverrideRange(1500);
17 |
18 | Q->SetOverrideDelay(0.25);
19 | W->SetOverrideDelay(0.35);
20 | R->SetOverrideDelay(0.25);
21 |
22 | Q->SetOverrideRadius(60);
23 | W->SetOverrideRadius(150);
24 | R->SetOverrideRadius(100);
25 | Q->SetOverrideSpeed(2000);
26 | W->SetOverrideSpeed(1650);
27 | R->SetOverrideSpeed(2100);
28 |
29 |
30 | auto slot1 = GPluginSDK->GetEntityList()->Player()->GetSpellName(kSummonerSlot1);
31 | auto slot2 = GPluginSDK->GetEntityList()->Player()->GetSpellName(kSummonerSlot2);
32 | if (strstr(slot1, "SummonerSmite"))
33 | {
34 | smite = GPluginSDK->CreateSpell2(kSummonerSlot1, kTargetCast, false, false, kCollidesWithNothing);
35 | smite->SetOverrideRange(550.f);
36 | }
37 | if (strstr(slot2, "SummonerSmite"))
38 | {
39 | smite = GPluginSDK->CreateSpell2(kSummonerSlot2, kTargetCast, false, false, kCollidesWithNothing);
40 | smite->SetOverrideRange(550.f);
41 | }
42 |
43 | blade = GPluginSDK->CreateItemForId(3153, 550);
44 | Cutlass = GPluginSDK->CreateItemForId(3144, 550);
45 | Youmuu = GPluginSDK->CreateItemForId(3142, 0);
46 |
47 | HealthPot = GPluginSDK->CreateItemForId(2003, 0);
48 | CorruptPot = GPluginSDK->CreateItemForId(2033, 0);
49 | RefillPot = GPluginSDK->CreateItemForId(2031, 0);
50 | Biscuit = GPluginSDK->CreateItemForId(2010, 0);
51 | hunter = GPluginSDK->CreateItemForId(2032, 0);
52 | }
53 |
54 |
--------------------------------------------------------------------------------
/D-Jayce++/D-Jayce++.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hh;hpp;hxx;hm;inl;inc;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 |
18 |
19 | Source Files
20 |
21 |
22 |
--------------------------------------------------------------------------------
/D-Nidalee++/D-Nidalee++.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hh;hpp;hxx;hm;inl;inc;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 |
18 |
19 | Source Files
20 |
21 |
22 |
--------------------------------------------------------------------------------
/D-Rengar++/Combo.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "RETWQ.h"
3 | #include "RETQW.h"
4 | #include "REQWT.h"
5 |
6 | inline void Combo()
7 | {
8 |
9 | if (ComboMode == 0)
10 | {
11 | RETQW();
12 | return;
13 | }
14 | if (ComboMode == 1)
15 | {
16 | REQWT();
17 | return;
18 | }
19 | if (ComboMode == 2)
20 | {
21 | RETWQ();
22 | }
23 | }
24 |
25 | inline void Combo(CastedSpell const& spell)
26 | {
27 | if (ComboMode == 0)
28 | {
29 | RETQW(spell);
30 | return;
31 | }
32 | if (ComboMode == 1)
33 | {
34 | REQWT(spell);
35 | return;
36 | }
37 | if (ComboMode == 2)
38 | {
39 | RETWQ(spell);
40 | }
41 | }
--------------------------------------------------------------------------------
/D-Rengar++/D-Rengar++.cpp:
--------------------------------------------------------------------------------
1 | // D-Dias.cpp : Defines the exported functions for the DLL application.
2 | //
3 |
4 | //#include "stdafx.h"
5 |
6 |
7 | #include "PluginSDK.h"
8 | #include "Spells.h"
9 | #include "Menu.h"
10 | #include "Render.h"
11 | #include "Potions.h"
12 | #include "Items.h"
13 | #include "Smite.h"
14 | #include "Combo.h"
15 | #include "OnProcessCast.h"
16 | #include "OnCreate_OnDelete.h"
17 | #include "Laneclear.h"
18 | #include "JungleClear.h"
19 | #include "Harass.h"
20 | #include "Flee.h"
21 |
22 |
23 | PluginSetup("D-Rengar++");
24 |
25 | static void CheatRito()
26 | {
27 | if (ChangeSkin->Enabled())
28 | {
29 | if (myHero->GetSkinId() != SkinChangeid->GetInteger())
30 | {
31 | myHero->SetSkinId(SkinChangeid->GetInteger());
32 | }
33 | }
34 | else
35 | {
36 | myHero->SetSkinId(myHero->GetSkinId());
37 | }
38 | }
39 | /*PLUGIN_EVENT(void) OnGapcloser(GapCloserSpell const& args)
40 | {
41 | if (args.Source->IsEnemy(myHero) && args.Source->IsHero())
42 | {
43 | if (AutoEGapcloser->Enabled() && E->IsReady() && !args.IsTargeted && myHero->IsValidTarget(args.Source, 250))
44 | {
45 | E->CastOnPosition(args.Source->ServerPosition());
46 | GOrbwalking->ResetAA();
47 | }
48 | }
49 | }*/
50 |
51 | void ChangePriority()
52 | {
53 | if (GetAsyncKeyState(Comboprio->GetInteger()) && !GGame->IsChatOpen() && GGame->Time() > CombokeyDown)
54 | {
55 | if (ComboMode == 0)
56 | {
57 | ComboMode = 1;
58 | CombokeyDown = GGame->Time() + 0.250;
59 | }
60 | else if (ComboMode == 1)
61 | {
62 | ComboMode = 2;
63 | CombokeyDown = GGame->Time() + 0.250;
64 | }
65 | else
66 | {
67 | ComboMode = 0;
68 | CombokeyDown = GGame->Time() + 0.250;
69 | }
70 | }
71 | }
72 | PLUGIN_EVENT(void) OnGameUpdate()
73 | {
74 |
75 | if (GGame->IsChatOpen() || myHero->IsDead() || myHero->IsRecalling()) return;
76 |
77 | if (GOrbwalking->GetOrbwalkingMode() == kModeCombo)
78 | {
79 | Combo();
80 | }
81 |
82 | if (GOrbwalking->GetOrbwalkingMode() == kModeMixed)
83 | {
84 | Harass();
85 | }
86 | if (GOrbwalking->GetOrbwalkingMode() == kModeLaneClear)
87 | {
88 | laneclear();
89 | jungleclear();
90 | }
91 |
92 | if (smitejungle->Enabled())
93 | {
94 | Smiteuse();
95 | }
96 |
97 | //killsteal();
98 | CheatRito();
99 | Usepotion();
100 | smitestatus();
101 | ChangePriority();
102 |
103 | }
104 |
105 | PLUGIN_API void OnLoad(IPluginSDK* PluginSDK)
106 | {
107 | PluginSDKSetup(PluginSDK);
108 | Menu();
109 | LoadSpells();
110 | myHero = GEntityList->Player();
111 |
112 | GEventManager->AddEventHandler(kEventOnGameUpdate, OnGameUpdate);
113 | GEventManager->AddEventHandler(kEventOnRender, OnRender);
114 | GEventManager->AddEventHandler(kEventOnBuffAdd, OnBuffAdd);
115 | GEventManager->AddEventHandler(kEventOnSpellCast, OnProcessCast);
116 | GEventManager->AddEventHandler(kEventOnCreateObject, OnCreateObject);
117 | GEventManager->AddEventHandler(kEventOnDestroyObject, OnDestroyObject);
118 | //GEventManager->AddEventHandler(kEventOnDoCast, OnCast);
119 |
120 | if (strcmp(GEntityList->Player()->ChampionName(), "Rengar") == 0)
121 | {
122 | GRender->NotificationEx(Vec4(220, 20, 60, 255), 2, true, true, "D-Rengar : Loaded!");
123 | }
124 | else
125 | {
126 | GRender->NotificationEx(Vec4(220, 20, 60, 255), 2, true, true, "You are not playing Rengar...");
127 | }
128 | }
129 |
130 |
131 | PLUGIN_API void OnUnload()
132 | {
133 | MainMenu->Remove();
134 |
135 | GEventManager->RemoveEventHandler(kEventOnGameUpdate, OnGameUpdate);
136 | GEventManager->RemoveEventHandler(kEventOnRender, OnRender);
137 | GEventManager->RemoveEventHandler(kEventOnBuffAdd, OnBuffAdd);
138 | GEventManager->RemoveEventHandler(kEventOnSpellCast, OnProcessCast);
139 | GEventManager->RemoveEventHandler(kEventOnCreateObject, OnCreateObject);
140 | GEventManager->RemoveEventHandler(kEventOnDestroyObject, OnDestroyObject);
141 | //GEventManager->RemoveEventHandler(kEventOnDoCast, OnCast);
142 |
143 | }
--------------------------------------------------------------------------------
/D-Rengar++/D-Rengar++.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hh;hpp;hxx;hm;inl;inc;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 |
18 |
19 | Source Files
20 |
21 |
22 |
23 |
24 | Header Files
25 |
26 |
27 | Header Files
28 |
29 |
30 | Header Files
31 |
32 |
33 | Header Files
34 |
35 |
36 | Header Files
37 |
38 |
39 | Header Files
40 |
41 |
42 | Header Files
43 |
44 |
45 | Header Files
46 |
47 |
48 | Header Files
49 |
50 |
51 | Header Files
52 |
53 |
54 | Header Files
55 |
56 |
57 | Header Files
58 |
59 |
60 | Header Files
61 |
62 |
63 | Header Files
64 |
65 |
66 | Header Files
67 |
68 |
69 | Header Files
70 |
71 |
72 | Header Files
73 |
74 |
75 |
--------------------------------------------------------------------------------
/D-Rengar++/Damage.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 |
4 | inline float TotalDamage(IUnit* target)
5 | {
6 | if (target == nullptr || target->IsDead())
7 | {
8 | return 0;
9 | }
10 |
11 | auto damage = 0;
12 |
13 | if (Q->IsReady())
14 | {
15 | damage += 2 * GDamage->GetSpellDamage(myHero, target, kSlotQ);
16 | }
17 |
18 | if (W->IsReady())
19 | {
20 | damage += GDamage->GetSpellDamage(myHero, target, kSlotW);
21 | }
22 | if (E->IsReady())
23 | {
24 | damage += GDamage->GetSpellDamage(myHero, target, kSlotE);
25 | }
26 |
27 | damage += 2 * GDamage->GetAutoAttackDamage(myHero, target, true);
28 |
29 | if (Ignite != nullptr&& Ignite->IsReady())
30 | {
31 | damage += GDamage->GetSpellDamage(myHero, target, kSummonerSpellIgnite);
32 | }
33 | if (target->HasBuff("GarenW"))
34 | {
35 | damage = damage * 0.7f;
36 | }
37 |
38 | if (target->HasBuff("ferocioushowl"))
39 | {
40 | damage = damage * 0.7f;
41 | }
42 |
43 | if (target->HasBuff("BlitzcrankManaBarrierCD") && target->HasBuff("ManaBarrier"))
44 | {
45 | damage -= target->GetMana() / 2;
46 | }
47 | if (myHero->HasBuff("summonerexhaust"))
48 | {
49 | damage *= 0.6f;
50 | }
51 |
52 | if (GEntityList->Player()->HasBuff("LichBane"))
53 | {
54 | damage += myHero->TotalPhysicalDamage() *0.75 + myHero->MagicDamage() * 0.5;
55 | }
56 | return static_cast(damage);
57 | }
58 |
--------------------------------------------------------------------------------
/D-Rengar++/Harass.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 |
4 |
5 | inline void Harass()
6 | {
7 | auto Enemy = GTargetSelector->FindTarget(QuickestKill, SpellDamage, 1500);
8 |
9 | if (Enemy != nullptr && !Enemy->IsDead())
10 | {
11 | if (HarassQ->Enabled() && Q->IsReady())
12 | {
13 | if (myHero->IsValidTarget(Enemy, Q->Range()))
14 | {
15 | Q->CastOnUnit(Enemy);
16 | }
17 | }
18 | if (HarassW->Enabled() && W->IsReady())
19 | {
20 | if (Enemy->IsValidTarget(myHero, W->Range()))
21 | {
22 | W->CastOnPlayer();
23 | }
24 | }
25 | if (HarassE->Enabled())
26 | {
27 | if (E->IsReady() && myHero->IsValidTarget(Enemy, E->Range()))
28 | {
29 | AdvPredictionOutput EPred;
30 | E->RunPrediction(Enemy, true, kCollidesWithYasuoWall | kCollidesWithMinions, &EPred);
31 |
32 | if (EPred.HitChance >= kHitChanceHigh)
33 | {
34 | E->CastOnUnit(Enemy);
35 | }
36 | }
37 | }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/D-Rengar++/Items.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Menu.h"
3 | #include
4 |
5 |
6 | inline bool use_Youmuu()
7 | {
8 | if (Youmuu->IsReady() && Youmuu->IsOwned()&& useYoumuu->Enabled())
9 | {
10 | return true;
11 | }
12 | return false;
13 | }
14 | inline void _Youmuu(IUnit* target)
15 | {
16 | if (myHero->IsValidTarget(target, 550))
17 | {
18 | Youmuu->CastOnPlayer();
19 | }
20 | }
21 |
22 | inline void Titanic(IUnit* target)
23 | {
24 | if (Hydra->Enabled() && myHero->IsValidTarget(target, 385))
25 | {
26 | if (Titanic_Hydra->IsOwned() && Titanic_Hydra->IsReady())
27 | {
28 | Titanic_Hydra->CastOnTarget(target);
29 | GOrbwalking->ResetAA();
30 | }
31 | }
32 | }
33 |
34 | inline void Tiamat_hydra(IUnit* target)
35 | {
36 |
37 | if (_tiamat->Enabled() && myHero->IsValidTarget(target, 385))
38 | {
39 | if (Tiamat->IsOwned() && Tiamat->IsReady())
40 | {
41 | Tiamat->CastOnPlayer();
42 | GOrbwalking->ResetAA();
43 | return;
44 | }
45 | }
46 | if (RHydra->Enabled() && myHero->IsValidTarget(target, 385))
47 | {
48 | if (Ravenous_Hydra->IsOwned() && Ravenous_Hydra->IsReady())
49 | {
50 | Ravenous_Hydra->CastOnPlayer();
51 | GOrbwalking->ResetAA();
52 | }
53 | }
54 | }
55 | inline bool haveitems()
56 | {
57 | if (Tiamat->IsOwned() && Tiamat->IsReady() ||
58 | Titanic_Hydra->IsOwned() && Titanic_Hydra->IsReady() || Ravenous_Hydra->IsOwned() && Ravenous_Hydra->IsReady())
59 | {
60 | return true;
61 | }
62 | return false;
63 | }
64 |
65 | inline void UseItems(IUnit* target)
66 | {
67 | /*if (Blade_Cutlass->Enabled() && myHero->IsValidTarget(target, 550))
68 | {
69 | if (myHero->HealthPercent() < MyHpPreBlade->GetInteger() || target->HealthPercent() < EnemyHpPreBlade->GetInteger())
70 | {
71 | if (blade->IsOwned() && blade->IsReady())
72 | blade->CastOnTarget(target);
73 | if (Cutlass->IsOwned() && Cutlass->IsReady())
74 | Cutlass->CastOnTarget(target);
75 | }
76 | }*/
77 | if (Tiamat->IsOwned() && Tiamat->IsReady() && _tiamat->Enabled() && myHero->IsValidTarget(target, 385))
78 | {
79 | Tiamat->CastOnPlayer();
80 | return;
81 | }
82 | if (Titanic_Hydra->IsOwned() && Titanic_Hydra->IsReady() && Hydra->Enabled() && myHero->IsValidTarget(target, 385))
83 | {
84 | Titanic_Hydra->CastOnPlayer();
85 | return;
86 | }
87 | if (Ravenous_Hydra->IsOwned() && Ravenous_Hydra->IsReady() && RHydra->Enabled() && myHero->IsValidTarget(target, 385))
88 | {
89 | Ravenous_Hydra->CastOnPlayer();
90 | }
91 | }
92 |
93 | std::function Item_Delay = [&]() -> void {
94 | if (menuquicksilver->Enabled() && Quicksilver->IsOwned() && Quicksilver->IsReady())
95 | {
96 | Quicksilver->CastOnPlayer();
97 | return;
98 | }
99 | if (menumercurial->Enabled() && Mercurial->IsOwned() && Mercurial->IsReady())
100 | {
101 | Mercurial->CastOnPlayer();
102 | return;
103 | }
104 | };
105 |
106 | PLUGIN_EVENT(void) OnBuffAdd(IUnit* Source)
107 | {
108 | if (Source->GetNetworkId() == myHero->GetNetworkId() && (Source->HasBuffOfType(BUFF_Charm)
109 | || Source->HasBuffOfType(BUFF_Fear) || Source->HasBuffOfType(BUFF_Snare)
110 | || Source->HasBuffOfType(BUFF_Stun) || Source->HasBuffOfType(BUFF_Taunt)))
111 | {
112 | {
113 | GPluginSDK->DelayFunctionCall(300, []()
114 | {
115 | if (W->IsReady() && AutoW->Enabled() && myHero->GetMana() == 4)
116 | {
117 | W->CastOnPlayer();
118 | }
119 | if (!W->IsReady() || myHero->GetMana() != 4 || !AutoW->Enabled())
120 | {
121 | if (menumercurial->Enabled() && Mercurial->IsOwned() && Mercurial->IsReady())
122 | {
123 | Mercurial->CastOnPlayer();
124 | return;
125 | }
126 | if (menuquicksilver->Enabled() && Quicksilver->IsOwned() && Quicksilver->IsReady())
127 | {
128 | Quicksilver->CastOnPlayer();
129 | return;
130 | }
131 | }
132 | });
133 | }
134 | }
135 | }
136 |
--------------------------------------------------------------------------------
/D-Rengar++/JungleClear.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include "Extension.h"
4 | #include "Items.h"
5 |
6 | inline void jungleclear()
7 | {
8 | for (auto minions : GEntityList->GetAllMinions(false, false, true))
9 | {
10 | if (Q->IsReady() && JungleQ->Enabled())
11 | {
12 | if (myHero->IsValidTarget(minions, Q->Range()))
13 | {
14 | Q->CastOnUnit(minions);
15 | }
16 | }
17 | if (Itemsinlane->Enabled())
18 | {
19 | if (haveitems() && myHero->IsValidTarget(minions, 375))
20 | {
21 | if (Tiamat->IsOwned() && Tiamat->IsReady())
22 | {
23 | Tiamat->CastOnPlayer();
24 | GOrbwalking->ResetAA();
25 | return;
26 | }
27 |
28 | if (Ravenous_Hydra->IsOwned() && Ravenous_Hydra->IsReady())
29 | {
30 | Ravenous_Hydra->CastOnPlayer();
31 | GOrbwalking->ResetAA();
32 | }
33 | }
34 | }
35 | if (W->IsReady() && JungleW)
36 | {
37 | if (myHero->HealthPercent() < 2 && myHero->IsValidTarget(minions, W->Range()))
38 | {
39 | W->CastOnPlayer();
40 | return;
41 | }
42 | if (myHero->IsValidTarget(minions, W->Range()))
43 | {
44 | W->CastOnPlayer();
45 | return;
46 | }
47 | }
48 | if (E->IsReady() && JungleE->Enabled())
49 | {
50 | if (minions != nullptr && myHero->IsValidTarget(minions, E->Range()))
51 | {
52 | E->CastOnUnit(minions);
53 | return;
54 | }
55 | }
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/D-Rengar++/LaneClear.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include "Extension.h"
4 | #include "Items.h"
5 |
6 | inline void laneclear()
7 | {
8 | for (auto minions : GEntityList->GetAllMinions(false, true, false))
9 | {
10 | if (Q->IsReady() && FarmQ->Enabled())
11 | {
12 | auto dmg = GDamage->GetSpellDamage(myHero, minions, kSlotQ);
13 | if (myHero->IsValidTarget(minions, Q->Range()))
14 | {
15 | if (dmg >= minions->GetHealth())
16 | {
17 | Q->CastOnUnit(minions);
18 |
19 | }
20 | else Q->AttackMinions(4);
21 | }
22 | }
23 | if (Itemsinlane->Enabled())
24 | {
25 | if (haveitems() && myHero->IsValidTarget(minions, 375))
26 | {
27 | if (Tiamat->IsOwned() && Tiamat->IsReady())
28 | {
29 | Tiamat->CastOnPlayer();
30 | GOrbwalking->ResetAA();
31 | }
32 |
33 | if (Ravenous_Hydra->IsOwned() && Ravenous_Hydra->IsReady())
34 | {
35 | Ravenous_Hydra->CastOnPlayer();
36 | GOrbwalking->ResetAA();
37 | }
38 | }
39 | }
40 | if (W->IsReady() && FarmW)
41 | {
42 | auto dmg = GDamage->GetSpellDamage(myHero, minions, kSlotW);
43 | if (myHero->IsValidTarget(minions, W->Range()))
44 | {
45 | if (myHero->HealthPercent() < 2 && myHero->IsValidTarget(minions, W->Range()))
46 | {
47 | W->CastOnPlayer();
48 | }
49 | if (CountminionInRange(W->Range()) >= minminionsW->GetInteger())
50 | {
51 | W->CastOnPlayer();
52 | }
53 | if (dmg >= minions->GetHealth())
54 | {
55 | W->CastOnPlayer();
56 | }
57 | }
58 | }
59 | if (E->IsReady() && FarmE->Enabled())
60 | {
61 | auto dmg = GDamage->GetSpellDamage(myHero, minions, kSlotE);
62 | if (minions != nullptr && myHero->IsValidTarget(minions, E->Range()))
63 | {
64 |
65 | if (minions->GetHealth() < dmg)
66 | {
67 | E->CastOnUnit(minions);
68 | }
69 | else E->CastOnUnit(minions);
70 | }
71 | }
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/D-Rengar++/OnCreate_OnDelete.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 |
4 | PLUGIN_EVENT(void) OnCreateObject(IUnit* obj)
5 | {
6 | /*auto Enemy = GTargetSelector->FindTarget(QuickestKill, SpellDamage, 1500);
7 | if (useYoumuu->Enabled())
8 | {
9 | if (UltiOn() && use_Youmuu())
10 | {
11 | GPluginSDK->DelayFunctionCall(300, []()
12 | {
13 | Youmuu->CastOnPlayer();
14 | });
15 | }
16 | }
17 | if (Enemy != nullptr && !Enemy->IsDead())
18 | {
19 | if (myHero->GetMana() != 4)
20 | {
21 | if (E->IsReady() && ComboE->Enabled() && !passiveup)
22 | {
23 | if (myHero->IsValidTarget(Enemy, E->Range()))
24 | {
25 | E->CastOnTarget(Enemy, kHitChanceHigh);
26 | }
27 | }
28 | if (strcmp(obj->GetObjectName(), "missile") == 0)
29 | {
30 |
31 | if (haveitems() && myHero->IsValidTarget(Enemy, E->Range()))
32 | {
33 | if (_tiamat->Enabled())
34 | {
35 | if (Tiamat->IsOwned() && Tiamat->IsReady())
36 | {
37 | Tiamat->CastOnPlayer();
38 | GOrbwalking->ResetAA();
39 | return;
40 | }
41 | }
42 | if (RHydra->Enabled())
43 | {
44 | if (Ravenous_Hydra->IsOwned() && Ravenous_Hydra->IsReady())
45 | {
46 | Ravenous_Hydra->CastOnPlayer();
47 | GOrbwalking->ResetAA();
48 | }
49 | }
50 | }
51 | }
52 |
53 | if (Contains(obj->GetObjectName(), "TiamatMelle_itm_active"))
54 |
55 | {
56 | if (W->IsReady() && ComboW->Enabled() && myHero->IsValidTarget(Enemy, W->Range()))
57 | {
58 | W->CastOnPlayer();
59 | }
60 | }
61 | if (Contains(obj->GetObjectName(), "Rengar_Base_W_Roar"))
62 | //E spell
63 | {
64 | if (Q->IsReady() && ComboQ->Enabled() && myHero->IsValidTarget(Enemy, Q->Range()))
65 | {
66 | Q->CastOnTarget(Enemy, kHitChanceMedium);
67 | }
68 | }
69 | }
70 | if (myHero->GetMana() == 4)
71 | {
72 |
73 | }
74 | }*/
75 | if (obj != nullptr)
76 | {
77 | /*if (strcmp(obj->GetObjectName(), "Rengar_Base_P_Buf.troy") == 0)
78 | {
79 | passivedown = false;
80 | GGame->PrintChat("passive");
81 | }
82 | if (strcmp(obj->GetObjectName(), "GlobalCamouflagePersistant.troy") == 0)
83 | {
84 | passivedown = false;
85 | }*/
86 | if (strcmp(obj->GetObjectName(), "Rengar_Base_P_Buf_Enhanced_Ring.troy") == 0)
87 | {
88 | passiveup = true;
89 | }
90 | }
91 | }
92 | PLUGIN_EVENT(void) OnDestroyObject(IUnit* obj)
93 | {
94 | if (obj != nullptr)
95 | {
96 | /*if (strcmp(obj->GetObjectName(), "Rengar_Base_P_Buf.troy") == 0)
97 | {
98 | passivedown = true;
99 | GGame->PrintChat("passive");
100 | }
101 | if (strcmp(obj->GetObjectName(), "GlobalCamouflagePersistant.troy") == 0)
102 | {
103 | passivedown = true;
104 | }*/
105 | if (strcmp(obj->GetObjectName(), "Rengar_Base_P_Buf_Enhanced_Ring.troy") == 0)
106 | {
107 | passiveup = false;
108 | }
109 | }
110 | }
--------------------------------------------------------------------------------
/D-Rengar++/OnProcessCast.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 | #include "Combo.h"
4 | PLUGIN_EVENT(void) OnProcessCast(CastedSpell const& spell)
5 | {
6 | if (spell.Caster_ == myHero)
7 | {
8 | if (Contains(std::string(spell.Name_), "RengarQ"))
9 | {
10 | ResetQ();
11 | }
12 | if (Contains(std::string(spell.Name_), "RengarE"))
13 | {
14 | ResetE();
15 | }
16 | }
17 | if (GOrbwalking->GetOrbwalkingMode() == kModeCombo)
18 | {
19 | Combo(spell);
20 | return;
21 | }
22 | if (GOrbwalking->GetOrbwalkingMode() == kModeMixed)
23 | {
24 | // harass(spell);
25 | return;
26 | }
27 | if (GOrbwalking->GetOrbwalkingMode() == kModeLaneClear)
28 | {
29 | //laneclear(spell);
30 | //jungleclear(spell);
31 | }
32 | }
--------------------------------------------------------------------------------
/D-Rengar++/Potions.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 |
4 | inline void Usepotion()
5 | {
6 | if (usepotion->Enabled() && !myHero->IsRecalling() && !myHero->IsDead())
7 | {
8 | if (CountEnemiesInRange(2000) > 0)
9 | {
10 | bool usepotions = myHero->GetHealth() < myHero->GetMaxHealth()* usepotionhpper->GetInteger() / 100;
11 | if (usepotions)
12 | {
13 | if (myHero->GetBuffDataByName("ItemDarkCrystalFlask") || myHero->GetBuffDataByName("ItemMiniRegenPotion")
14 | || myHero->GetBuffDataByName("ItemCrystalFlask") || myHero->GetBuffDataByName("RegenerationPotion") || myHero->HasBuff("ItemCrystalFlaskJungle"))
15 | return;
16 |
17 | if (Biscuit->IsOwned() && !GUtility->IsPositionInFountain(myHero->GetPosition()) && Biscuit->IsReady())
18 | {
19 | Biscuit->CastOnPlayer();
20 | }
21 | else if (HealthPot->IsOwned() && !GUtility->IsPositionInFountain(myHero->GetPosition()) && HealthPot->IsReady())
22 | {
23 | HealthPot->CastOnPlayer();
24 | }
25 | else if (CorruptPot->IsOwned() && CorruptPot->IsReady())
26 | {
27 | CorruptPot->CastOnPlayer();
28 | }
29 | else if (RefillPot->IsOwned() && RefillPot->IsReady())
30 | {
31 | RefillPot->CastOnPlayer();
32 | }
33 | else if (hunter->IsOwned() && hunter->IsReady())
34 | {
35 | hunter->CastOnPlayer();
36 | }
37 | }
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/D-Rengar++/Render.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 | #include "Damage.h"
4 |
5 |
6 | int xOffset = 10;
7 | int yOffset = 15;
8 | int Width = 103;
9 | int Height = 8;
10 | PLUGIN_EVENT(void) OnRender()
11 | {
12 | Vec4 color;
13 | Vec4 colorw;
14 | Vec4 colore;
15 | qRangeColor->GetColor(&color);
16 | wRangeColor->GetColor(&colorw);
17 | eRangeColor->GetColor(&colore);
18 | if (DrawSmite->Enabled())
19 | {
20 | if (smitejungle->Enabled())
21 | {
22 | Vec2 pos;
23 | if (GGame->Projection(myHero->GetPosition(), &pos))
24 | GRender->DrawTextW(Vec2(pos.x + 72, pos.y + 10), Vec4(0, 255, 0, 255), "SMITE: ON");
25 | }
26 | else {
27 | Vec2 pos;
28 | if (GGame->Projection(myHero->GetPosition(), &pos))
29 | GRender->DrawTextW(Vec2(pos.x + 72, pos.y + 10), Vec4(255, 0, 0, 255), "SMITE: OFF");
30 | }
31 | }
32 | if (DrawCombomode->Enabled())
33 | {
34 | Vec3 worldToScreen;
35 | GGame->Projection(myHero->GetPosition(), &worldToScreen);
36 |
37 | if (ComboMode == 0)
38 | {
39 | GRender->DrawTextW(Vec2(worldToScreen.x, worldToScreen.y), Vec4(156, 123, 190, 255), "RETQW");
40 | }
41 | if (ComboMode == 1)
42 | {
43 | GRender->DrawTextW(Vec2(worldToScreen.x, worldToScreen.y), Vec4(156, 123, 190, 255), "REQWT");
44 | }
45 | if (ComboMode == 2)
46 | {
47 | GRender->DrawTextW(Vec2(worldToScreen.x, worldToScreen.y), Vec4(156, 123, 190, 255), "RETWQ");
48 | }
49 | }
50 | /*if (DrawCombomode->Enabled())
51 | {
52 | Vec3 worldToScreen;
53 | GGame->Projection(myHero->GetPosition(), &worldToScreen);
54 |
55 | if (mode == 0)
56 | {
57 | GRender->DrawTextW(Vec2(worldToScreen.x, worldToScreen.y), Vec4(255, 255, 0, 255), "Combo:Q-R");
58 | }
59 | if (mode == 1)
60 | {
61 | GRender->DrawTextW(Vec2(worldToScreen.x, worldToScreen.y), Vec4(255, 255, 0, 255), "Combo:R-Q");
62 | }
63 | }*/
64 | if (DrawReady->Enabled())
65 | {
66 | if (Q->IsReady() && DrawQ->Enabled())
67 | {
68 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), color, Q->Range());
69 | }
70 | if (W->IsReady() && DrawW->Enabled())
71 | {
72 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colorw, W->Range());
73 | }
74 | if (E->IsReady() && DrawE->Enabled())
75 | {
76 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colore, E->Range());
77 | }
78 | }
79 | else
80 | {
81 | if (DrawQ->Enabled())
82 | {
83 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), color, Q->Range());
84 | }
85 | if (DrawW->Enabled())
86 | {
87 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colorw, W->Range());
88 | }
89 | if (DrawE->Enabled())
90 | {
91 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colore, E->Range());
92 | }
93 | }
94 |
95 | if (Drawhealthbar->Enabled()) //Damage.Healthbar"))
96 | {
97 | for (auto enemy : GEntityList->GetAllHeros(false, true))
98 | {
99 | Vec4 colorheal;
100 | healRangeColor->GetColor(&colorheal);
101 | Vec2 barPos = Vec2();
102 | if (enemy->GetHPBarPosition(barPos))
103 | {
104 | auto Damage = TotalDamage(enemy);
105 | float percentHealthAfterDamage = max(0, enemy->GetHealth() - float(Damage)) / enemy->GetMaxHealth();
106 | float yPos = barPos.y + yOffset;
107 | float xPosDamage = (barPos.x + xOffset) + Width * percentHealthAfterDamage;
108 | float xPosCurrentHp = barPos.x + xOffset + Width * (enemy->GetHealth() / enemy->GetMaxHealth());
109 | if (!enemy->IsDead() && enemy->IsValidTarget())
110 | {
111 | float differenceInHP = xPosCurrentHp - xPosDamage;
112 | float pos1 = barPos.x + 9 + (107 * percentHealthAfterDamage);
113 |
114 | for (int i = 0; i < differenceInHP; i++)
115 | {
116 | GRender->DrawLine(Vec2(pos1 + i, yPos), Vec2(pos1 + i, yPos + Height), colorheal);
117 | }
118 | if (!enemy->IsVisible())
119 | {
120 |
121 | }
122 | }
123 | }
124 | }
125 | }
126 | }
--------------------------------------------------------------------------------
/D-Rengar++/Smite.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Menu.h"
3 | inline void smitestatus()
4 | {
5 | keyDown = GetAsyncKeyState(smitekey->GetInteger()); //smite key
6 |
7 | if (GUtility->IsLeagueWindowFocused() && !GGame->IsChatOpen())
8 | {
9 | if (keyDown < 0)
10 | {
11 | if (SmiteDown == false)
12 | {
13 | if (smitejungle->GetInteger() == 0) { smitejungle->UpdateInteger(1); }
14 | else { smitejungle->UpdateInteger(0); }
15 | SmiteDown = true;
16 | }
17 | }
18 | else
19 | {
20 | SmiteDown = false;
21 | }
22 | }
23 | }
24 |
25 | inline void smitetarget(IUnit* target)
26 | {
27 | if (smite != nullptr)
28 | {
29 | if (!usesmitetarget->Enabled() || !smite->IsReady()) return;
30 | if (target != nullptr && myHero->IsValidTarget(target, 550))
31 | {
32 | auto Dmg = GDamage->GetSummonerSpellDamage(myHero, target, kSummonerSpellSmite);
33 | smite->CastOnUnit(target);
34 | }
35 | }
36 | }
37 |
38 | inline void Smiteuse()
39 | {
40 | if (smite != nullptr && smite->IsReady())
41 | {
42 | auto minions = GEntityList->GetAllMinions(false, false, true);
43 | for (IUnit* minion : minions)
44 | {
45 | auto smitestage = usesmitejungle->GetInteger();
46 | if (smitestage == 0)
47 | {
48 | if (strstr(minion->GetObjectName(), "Blue") || strstr(minion->GetObjectName(), "Gromp")
49 | || strstr(minion->GetObjectName(), "Murkwolf") || strstr(minion->GetObjectName(), "Razorbeak")
50 | || strstr(minion->GetObjectName(), "RiftHerald") || strstr(minion->GetObjectName(), "Red")
51 | || strstr(minion->GetObjectName(), "Krug") || strstr(minion->GetObjectName(), "Dragon")
52 | || strstr(minion->GetObjectName(), "Baron"))
53 | {
54 | auto Dmg = GDamage->GetSummonerSpellDamage(myHero, minion, kSummonerSpellSmite);
55 | if (minion != nullptr && !minion->IsDead() && minion->GetHealth() <= Dmg && myHero->IsValidTarget(minion, 570))
56 | {
57 | smite->CastOnUnit(minion);
58 | }
59 | }
60 | }
61 | if (smitestage == 1)
62 | {
63 | if (strstr(minion->GetObjectName(), "RiftHerald") || strstr(minion->GetObjectName(), "Dragon")
64 | || strstr(minion->GetObjectName(), "Baron"))
65 | {
66 | auto Dmg = GDamage->GetSummonerSpellDamage(myHero, minion, kSummonerSpellSmite);
67 | if (minion != nullptr && !minion->IsDead() && minion->GetHealth() <= Dmg && myHero->IsValidTarget(minion, 570))
68 | {
69 | smite->CastOnUnit(minion);
70 | }
71 | }
72 | }
73 | }
74 | }
75 | }
76 |
77 |
--------------------------------------------------------------------------------
/D-Rengar++/Spells.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Menu.h"
3 |
4 | inline void LoadSpells()
5 | {
6 | Q = GPluginSDK->CreateSpell2(kSlotQ, kConeCast, false, true, static_cast(kCollidesWithYasuoWall));
7 | Q->SetOverrideRange(450.f);
8 |
9 | W = GPluginSDK->CreateSpell2(kSlotW, kTargetCast, false, true, static_cast(kCollidesWithYasuoWall));
10 | W->SetOverrideRange(450.f);
11 |
12 | E = GPluginSDK->CreateSpell2(kSlotE, kLineCast, true, false, static_cast(kCollidesWithYasuoWall | kCollidesWithMinions));
13 | E->SetSkillshot(0.125f, 70.f, 1500.f, 980.f);
14 |
15 | R = GPluginSDK->CreateSpell2(kSlotR, kTargetCast, false, false, static_cast(kCollidesWithNothing));
16 | R->SetOverrideRange(2000);
17 | auto slot1 = GPluginSDK->GetEntityList()->Player()->GetSpellName(kSummonerSlot1);
18 | auto slot2 = GPluginSDK->GetEntityList()->Player()->GetSpellName(kSummonerSlot2);
19 |
20 | if (strstr(slot1, "SummonerDot"))
21 | {
22 | Ignite = GPluginSDK->CreateSpell2(kSummonerSlot1, kTargetCast, false, false, kCollidesWithNothing);
23 | Ignite->SetOverrideRange(600.f);
24 | }
25 | if (strstr(slot2, "SummonerDot"))
26 | {
27 | Ignite = GPluginSDK->CreateSpell2(kSummonerSlot2, kTargetCast, false, false, kCollidesWithNothing);
28 | Ignite->SetOverrideRange(600.f);
29 | }
30 | if (strstr(slot1, "SummonerSmite"))
31 | {
32 | smite = GPluginSDK->CreateSpell2(kSummonerSlot1, kTargetCast, false, false, kCollidesWithNothing);
33 | smite->SetOverrideRange(550.f);
34 | }
35 | if (strstr(slot2, "SummonerSmite"))
36 | {
37 | smite = GPluginSDK->CreateSpell2(kSummonerSlot2, kTargetCast, false, false, kCollidesWithNothing);
38 | smite->SetOverrideRange(550.f);
39 | }
40 |
41 | Titanic_Hydra = GPluginSDK->CreateItemForId(3748, 385);
42 | Ravenous_Hydra = GPluginSDK->CreateItemForId(3074, 385);
43 | Tiamat = GPluginSDK->CreateItemForId(3077, 385);
44 | Youmuu = GPluginSDK->CreateItemForId(3142, 0);
45 | blade = GPluginSDK->CreateItemForId(3153, 550);
46 | Cutlass = GPluginSDK->CreateItemForId(3144, 550);
47 | Quicksilver = GPluginSDK->CreateItemForId(3140, 0);
48 | Mercurial = GPluginSDK->CreateItemForId(3139, 600);
49 |
50 | HealthPot = GPluginSDK->CreateItemForId(2003, 0);
51 | CorruptPot = GPluginSDK->CreateItemForId(2033, 0);
52 | RefillPot = GPluginSDK->CreateItemForId(2031, 0);
53 | Biscuit = GPluginSDK->CreateItemForId(2010, 0);
54 | hunter = GPluginSDK->CreateItemForId(2032, 0);
55 | }
56 |
--------------------------------------------------------------------------------
/D-Riven++/AfterAttack.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extensions.h"
3 | #include "Burst.h"
4 |
5 | PLUGIN_EVENT(void) Afterattack(IUnit* source, IUnit* target)
6 | {
7 | if (target != nullptr || !target->IsDead() || target->IsHero())
8 | {
9 | if (GOrbwalking->GetOrbwalkingMode() == kModeCombo)
10 | {
11 | afterattackCombo(source, target);
12 | }
13 | if (GetAsyncKeyState(Burst_b->GetInteger()))
14 | {
15 | afterattackBurst(source, target);
16 | }
17 | if (GOrbwalking->GetOrbwalkingMode() == kModeMixed)
18 | {
19 | afterattackHarass(source, target);
20 | }
21 | }
22 |
23 | }
24 |
25 | PLUGIN_EVENT(void) OnAttack(IUnit* source, IUnit* target)
26 | {
27 |
28 | }
--------------------------------------------------------------------------------
/D-Riven++/Burst.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include "ShyCombo.h"
4 | #include "WerhliCombo.h"
5 | #include "Sexy.h"
6 | #include "nidalee.h"
7 |
8 |
9 | inline void Burst()
10 | {
11 | if (BurstMode == 0)
12 | {
13 | Burstshy();
14 | return;
15 | }
16 | if (BurstMode == 1)
17 | {
18 | Werhli();
19 | return;
20 | }
21 | if (BurstMode == 2)
22 | {
23 | Sexy();
24 | return;
25 | }
26 | if (BurstMode == 3)
27 | {
28 | Nidalee();
29 | return;
30 | }
31 | }
32 |
33 |
34 | static void afterattackBurst(IUnit* source, IUnit* target)
35 | {
36 | if (BurstMode == 0)
37 | {
38 | ShyBurstafter(source, target);
39 | return;
40 | }
41 | if (BurstMode == 1)
42 | {
43 | WerhliBurstafter(source, target);
44 | return;
45 | }
46 | if (BurstMode == 2)
47 | {
48 | //SexyBurstafter(source, target);
49 | return;
50 | }
51 | }
52 |
53 |
54 | static void processBurst(CastedSpell const& spell)
55 | {
56 | if (BurstMode == 0)
57 | {
58 | processShyBurst(spell);
59 | return;
60 | }
61 | if (BurstMode == 1)
62 | {
63 | processWerhliBurst(spell);
64 | return;
65 | }
66 | if (BurstMode == 2)
67 | {
68 | processSexyBurst(spell);
69 | return;
70 | }
71 | if (BurstMode == 3)
72 | {
73 | processNidaleeBurst(spell);
74 | }
75 | }
--------------------------------------------------------------------------------
/D-Riven++/Color.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Vector3.h"
3 |
4 | class Color
5 | {
6 | public:
7 | Color()
8 | {
9 | r = g = b = a = 0;
10 | }
11 |
12 | Color(int r, int g, int b, int a)
13 | : r(r), g(g), b(b), a(a) { }
14 |
15 | Color(int r, int g, int b)
16 | : r(r), g(g), b(b), a(255) { }
17 |
18 | inline Vec4 Get() const
19 | {
20 | return Vec4(r, g, b, a);
21 | }
22 |
23 | inline Vec4 Get(int alpha) const
24 | {
25 | return Vec4(r, g, b, alpha);
26 | }
27 |
28 | inline DWORD GetHex() const
29 | {
30 | return static_cast((((a) & 0xff) << 24) | (((r) & 0xff) << 16) | (((g) & 0xff) << 8) | ((b) & 0xff));
31 | }
32 |
33 | inline DWORD GetHex(int alpha) const
34 | {
35 | return static_cast((((alpha) & 0xff) << 24) | (((r) & 0xff) << 16) | (((g) & 0xff) << 8) | ((b) & 0xff));
36 | }
37 |
38 | inline static Color White() { return Color(255, 255, 255); }
39 | inline static Color Black() { return Color(0, 0, 0); }
40 | inline static Color Red() { return Color(255, 0, 0); }
41 | inline static Color Green() { return Color(0, 255, 0); }
42 | inline static Color Blue() { return Color(0, 0, 255); }
43 | inline static Color LightBlue() { return Color(0, 115, 200); }
44 | inline static Color LightBlue2() { return Color(66, 173, 255); }
45 | inline static Color LightGrey2() { return Color(150, 150, 150); }
46 | inline static Color Grey() { return Color(70, 70, 70); }
47 | inline static Color LightGrey() { return Color(170, 170, 170); }
48 | inline static Color DarkGrey() { return Color(45, 45, 45); }
49 | inline static Color Yellow() { return Color(255, 255, 0); }
50 | inline static Color Magenta() { return Color(255, 0, 255); }
51 | inline static Color DarkMagenta() { return Color(139, 0, 139); }
52 | inline static Color Purple() { return Color(128, 0, 128); }
53 | inline static Color DarkGreen() { return Color(0, 128, 0); }
54 | inline static Color DarkGreen2() { return Color(0, 100, 0); }
55 | inline static Color Crimson() { return Color(220, 20, 60); } // cuz people blush
56 | inline static Color LightRed2() { return Color(255, 75, 75); }
57 | inline static Color LightGreen() { return Color(75, 255, 75); }
58 | inline static Color LightRed() { return Color(255, 50, 50); }
59 | inline static Color Orange() { return Color(255, 69, 0); }
60 |
61 | private:
62 | int a, r, g, b;
63 | };
--------------------------------------------------------------------------------
/D-Riven++/D-Riven++.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hh;hpp;hxx;hm;inl;inc;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 |
18 |
19 | Header Files
20 |
21 |
22 | Header Files
23 |
24 |
25 | Header Files
26 |
27 |
28 | Header Files
29 |
30 |
31 | Header Files
32 |
33 |
34 | Header Files
35 |
36 |
37 | Header Files
38 |
39 |
40 | Header Files
41 |
42 |
43 | Header Files
44 |
45 |
46 | Header Files
47 |
48 |
49 | Header Files
50 |
51 |
52 | Header Files
53 |
54 |
55 | Header Files
56 |
57 |
58 | Header Files
59 |
60 |
61 | Header Files
62 |
63 |
64 | Header Files
65 |
66 |
67 | Header Files
68 |
69 |
70 | Header Files
71 |
72 |
73 | Header Files
74 |
75 |
76 | Header Files
77 |
78 |
79 | Header Files
80 |
81 |
82 | Header Files
83 |
84 |
85 | Header Files
86 |
87 |
88 | Header Files
89 |
90 |
91 | Header Files
92 |
93 |
94 |
95 |
96 | Source Files
97 |
98 |
99 |
--------------------------------------------------------------------------------
/D-Riven++/Damage.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extensions.h"
3 |
4 | inline double GetPassive()
5 | {
6 | if (myHero->GetLevel() == 18)
7 | {
8 | return 0.5;
9 | }
10 |
11 | if (myHero->GetLevel() >= 15)
12 | {
13 | return 0.45;
14 | }
15 | if (myHero->GetLevel() >= 12)
16 | {
17 | return 0.40;
18 | }
19 | if (myHero->GetLevel() >= 9)
20 | {
21 | return 0.35;
22 | }
23 | if (myHero->GetLevel() >= 6)
24 | {
25 | return 0.30;
26 | }
27 | if (myHero->GetLevel() >= 3)
28 | {
29 | return 0.25;
30 | }
31 | return 0.2;
32 | }
33 |
34 | /*inline float Rdamage(IUnit* target)
35 | {
36 | auto damage = 0;
37 | if (myHero->GetSpellBook()->GetLevel(kSlotR) == 0)
38 | {
39 | return 0;
40 | }
41 | auto Rlvl = GEntityList->Player()->GetSpellLevel(kSlotR) - 1;
42 | auto BaseDamage = std::vector({ 80, 120, 160 }).at(Rlvl);
43 | auto ADMultiplier = 0.6 * GEntityList->Player()->TotalPhysicalDamage() *
44 | (1 + (target->GetMaxHealth() - target->GetHealth()) / target->GetMaxHealth() > 0.75 ?
45 | 0.75 : ((target->GetMaxHealth() - target->GetHealth()) / target->GetMaxHealth()) * 8 / 3);
46 | damage += BaseDamage + ADMultiplier;
47 | return static_cast(damage);
48 | }*/
49 |
50 | //return target->HasBuff("tristanaecharge") ? GDamage->GetSpellDamage(GEntityList->Player(), target, kSlotE) + GDamage->GetSpellDamage(GEntityList->Player(), target, kSlotE) * target->GetBuffCount("tristanaechargesound") * 0.3f : 0.f;
51 | inline float TotalDamage(IUnit* target)
52 | {
53 | if (target == nullptr || target->IsDead())
54 | {
55 | return 0;
56 | }
57 |
58 | auto damage = 0;
59 |
60 | if (Q->IsReady() || myHero->HasBuff("RivenTriCleave"))
61 | {
62 | auto Qhan = 3 - Qstack;
63 | auto Qhanpassive = Qhan * (1 + GetPassive());
64 | damage += GDamage->GetSpellDamage(myHero, target, kSlotQ) * Qhan +
65 | GDamage->GetSpellDamage(myHero, target, kSlotQ)*Qhanpassive;
66 |
67 | }
68 |
69 | if (W->IsReady())
70 | {
71 | damage += GDamage->GetSpellDamage(myHero, target, kSlotW);
72 | }
73 |
74 | if (R->IsReady())
75 | {
76 | damage += GDamage->GetSpellDamage(myHero, target, kSlotR);
77 | //damage +=Rdamage(target);
78 | }
79 | damage += GDamage->GetAutoAttackDamage(myHero, target, true);
80 |
81 | if (Ignite != nullptr&& Ignite->IsReady())
82 | {
83 | damage += GDamage->GetSpellDamage(myHero, target, kSummonerSpellIgnite);
84 | }
85 | if (target->HasBuff("GarenW"))
86 | {
87 | damage = damage * 0.7f;
88 | }
89 |
90 | if (target->HasBuff("ferocioushowl"))
91 | {
92 | damage = damage * 0.7f;
93 | }
94 |
95 | if (target->HasBuff("BlitzcrankManaBarrierCD") && target->HasBuff("ManaBarrier"))
96 | {
97 | damage -= target->GetMana() / 2;
98 | }
99 | if (GEntityList->Player()->HasBuff("summonerexhaust"))
100 | damage *= 0.6f;
101 |
102 | return static_cast(damage);
103 | }
104 |
--------------------------------------------------------------------------------
/D-Riven++/Flee.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Spells.h"
3 |
4 | static void Flee()
5 | {
6 |
7 | GGame->IssueOrder(myHero, kMoveTo, GGame->CursorPosition());
8 | auto epos = myHero->GetPosition().Extend(GGame->CursorPosition(), 300);
9 | for (auto Enemy : GEntityList->GetAllHeros(false, true))
10 | {
11 | if (Enemy != nullptr && W->IsReady() && myHero->IsValidTarget(Enemy, W->Range()))
12 | {
13 | W->CastOnPlayer();
14 | }
15 | }
16 | if (Q->IsReady() && !myHero->IsRecalling() && !myHero->IsDashing())
17 | {
18 | Q->CastOnPosition(GGame->CursorPosition());
19 | }
20 | if (E->IsReady())
21 | {
22 | E->CastOnPosition(epos);
23 | LastE = GGame->CurrentTick();
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/D-Riven++/Harass.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Spells.h"
3 | #include "Items.h"
4 |
5 | inline void Harass()
6 | {
7 | auto Enemy = GTargetSelector->FindTarget(QuickestKill, PhysicalDamage, 900);
8 | if (Enemy != nullptr && !Enemy->IsDead())
9 | {
10 | if (HarassMode->GetInteger() == 0)
11 | {
12 | auto epos = myHero->GetPosition() + (myHero->GetPosition() - Enemy->GetPosition()).VectorNormalize() * E->Range();
13 | if (E->IsReady() && Qstack == 2 && HarassE->Enabled())
14 | {
15 | E->CastOnPosition(myHero->GetPosition().Extend(epos, E->Range()).VectorNormalize());
16 | }
17 |
18 | if (Q->IsReady() && HarassQ->Enabled() && CanMoveMent(myHero) && Qstack == 2)
19 | {
20 | GPluginSDK->DelayFunctionCall(100, []()
21 | {
22 | auto Enemy = GTargetSelector->FindTarget(QuickestKill, PhysicalDamage, 900);
23 | if (Enemy != nullptr && !Enemy->IsDead())
24 | {
25 | auto epos = myHero->GetPosition() + (myHero->GetPosition() - Enemy->GetPosition()).VectorNormalize() * E->Range();
26 | Q->CastOnPosition(myHero->GetPosition().Extend(epos, E->Range()).VectorNormalize());
27 | }
28 | });
29 | }
30 | if (W->IsReady() && HarassW->Enabled() && myHero->IsValidTarget(Enemy, W->Range()) && Qstack == 1)
31 | {
32 | W->CastOnPlayer();
33 | }
34 |
35 |
36 | if (Q->IsReady() && HarassQ->Enabled())
37 | {
38 | if (Qstack == 0 && myHero->IsValidTarget(Enemy, Q->Range() + myHero->GetRealAutoAttackRange(Enemy)))
39 | {
40 | ModeQ(Enemy);
41 | GOrbwalking->GetLastTarget();
42 | }
43 |
44 | if (Qstack == 1 && GGame->TickCount() - LastQ > 600)
45 | {
46 | ModeQ(Enemy);
47 | GOrbwalking->GetLastTarget();
48 | }
49 | }
50 | }
51 | if (HarassMode->GetInteger() == 1)
52 | {
53 | if (E->IsReady() && HarassE->Enabled() && GetDistance(myHero, Enemy) <= 325 + Q->Range() && GetDistance(myHero, Enemy) > IsInAutoAttackRange(Enemy) + 100 && CanMoveMent(myHero))
54 | {
55 | E->CastOnPosition(Enemy->GetPosition());
56 | }
57 |
58 | if (Q->IsReady() && HarassQ->Enabled() && myHero->IsValidTarget(Enemy, Q->Range() + myHero->GetRealAutoAttackRange(Enemy)) && Qstack == 0 &&
59 | GGame->TickCount() - LastQ > 500)
60 | {
61 | ModeQ(Enemy);
62 | GOrbwalking->GetLastTarget();
63 | }
64 |
65 | if (W->IsReady() && HarassW->Enabled() && myHero->IsValidTarget(Enemy, W->Range()) && (!Q->IsReady() || Qstack == 1))
66 | {
67 | W->CastOnPlayer();
68 | }
69 | }
70 | }
71 | }
72 |
73 | static void afterattackHarass(IUnit* source, IUnit* target)
74 | {
75 | if (target == nullptr || !target->IsValidTarget())
76 | return;
77 |
78 | if (HarassQ->Enabled() && Q->IsReady())
79 | {
80 | if (HarassMode->GetInteger() == 0)
81 | {
82 | if (Qstack == 1)
83 | {
84 | ModeQ(target);
85 | }
86 | }
87 | if (HarassMode->GetInteger() == 1)
88 | {
89 | ModeQ(target);
90 | }
91 | }
92 | }
93 |
94 |
--------------------------------------------------------------------------------
/D-Riven++/JungleClear.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Items.h"
3 |
4 | inline void jungleclear()
5 | {
6 | for (auto jMinion : GEntityList->GetAllMinions(false, false, true))
7 | {
8 | if (Itemsinlane->Enabled())
9 | {
10 | if (jMinion != nullptr && myHero->IsValidTarget(jMinion, 385))
11 | {
12 | if (haveitems())
13 | {
14 | UseItems(jMinion);
15 | GOrbwalking->ResetAA();
16 | return;
17 | }
18 | }
19 | }
20 | if (JungleQ->Enabled() && Q->IsReady() && GGame->TickCount() - LastQ > 700)
21 | {
22 | if (jMinion != nullptr && !jMinion->IsDead() && myHero->IsValidTarget(jMinion, Q->Range()))
23 | {
24 | Q->CastOnUnit(jMinion);
25 | return;
26 | }
27 | }
28 | if (JungleW->Enabled() && W->IsReady())
29 | {
30 | if (jMinion != nullptr && !jMinion->IsDead() && myHero->IsValidTarget(jMinion, W->Range()))
31 | {
32 | W->CastOnPlayer();
33 | return;
34 | }
35 | }
36 | if (JungleE->Enabled() && E->IsReady())
37 | {
38 | if (jMinion != nullptr && !jMinion->IsDead() && myHero->IsValidTarget(jMinion, E->Range()))
39 | {
40 | E->CastOnPosition(jMinion->GetPosition());
41 | return;
42 | }
43 | }
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/D-Riven++/Laneclear.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Items.h"
3 |
4 | inline void laneclear()
5 | {
6 | for (auto minions : GEntityList->GetAllMinions(false, true, false))
7 | {
8 |
9 | if (W->IsReady() && FarmW->Enabled())
10 | {
11 | auto dmg = GDamage->GetSpellDamage(myHero, minions, kSlotW);
12 | if (minions != nullptr && myHero->IsValidTarget(minions, W->Range()))
13 | {
14 | Vec3 pos;
15 | int Whit;
16 | GPrediction->FindBestCastPosition(W->Range(), W->Radius(), false, true, false, pos, Whit);
17 | if (Whit >= 3)
18 | {
19 | W->CastOnPlayer();
20 | return;
21 | }
22 | if (minions->GetHealth() < dmg)
23 | {
24 | W->CastOnPlayer();
25 | return;
26 | }
27 |
28 | }
29 | }
30 | if (Itemsinlane->Enabled())
31 | {
32 | if (minions != nullptr && myHero->IsValidTarget(minions, 385))
33 | {
34 | if (haveitems())
35 | {
36 | UseItems(minions);
37 | return;
38 | }
39 | }
40 | }
41 | }
42 | }
43 |
44 | inline void afterattacklane(IUnit* source, IUnit* target)
45 | {
46 | for (auto minions : GEntityList->GetAllMinions(false, true, false))
47 | {
48 | if (Q->IsReady() && FarmQ->Enabled())
49 | {
50 | auto end = GBuffData->GetEndTime(myHero->GetBuffDataByName("RivenTriCleave"));
51 | auto start = GBuffData->GetStartTime(myHero->GetBuffDataByName("RivenTriCleave"));
52 | auto dmg = GDamage->GetSpellDamage(myHero, minions, kSlotQ);
53 | auto qPosition = GEntityList->Player()->ServerPosition() + GEntityList->Player()->Direction() * (Q->Range() + 100);
54 | if (minions != nullptr && myHero->IsValidTarget(minions, Q->Range()))
55 | {
56 | Vec3 pos;
57 | int Qhit;
58 | GPrediction->FindBestCastPosition(Q->Range(), Q->Radius(), false, true, false, pos, Qhit);
59 |
60 | if (Qhit >= 2 && GGame->TickCount() - LastQ > 1400)
61 | {
62 | Q->CastOnPosition(GGame->CursorPosition());
63 | return;
64 | }
65 | if (minions->GetHealth() < dmg && GGame->TickCount() - LastQ > 700)
66 | {
67 | Q->CastOnPosition(GGame->CursorPosition());
68 | return;
69 | }
70 | if (myHero->HasBuff("RivenTriCleave") && end - GGame->Time() <= 0.1 * (end - start))
71 | {
72 | Q->CastOnPosition(GGame->CursorPosition());
73 | return;
74 | }
75 | }
76 | }
77 | }
78 | }
--------------------------------------------------------------------------------
/D-Riven++/OnAnimation.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extensions.h"
3 |
4 | PLUGIN_EVENT(void) OnPlayAnimation(IUnit* Source, std::string const Args)
5 | {/*
6 | *if (Autoattackanimation->Enabled() && Source == myHero &&(GetAsyncKeyState(Burst_b->GetInteger())|| GOrbwalking->GetOrbwalkingMode() == kModeCombo))
7 | {
8 | if (Contains(Args, "56b") || Contains(Args, "58b") || Contains(Args, "59b"))
9 | {
10 | if (Debug->Enabled())
11 | {
12 | GGame->PrintChat("AA_cancel");
13 | }
14 | AAcancel();
15 | }
16 | }
17 | if (ManualAACancel->Enabled() || GOrbwalking->GetOrbwalkingMode() == kModeLaneClear|| GOrbwalking->GetOrbwalkingMode() == kModeCombo || GetAsyncKeyState(Burst_b->GetInteger()) || GOrbwalking->GetOrbwalkingMode() == kModeMixed)
18 | {
19 | if (Source == myHero)
20 | {
21 | if (Contains(Args, "c29"))
22 | {
23 | if (Debug->Enabled())
24 | {
25 | GGame->PrintChat("AnimQ-1");
26 | }
27 | //ResetQ1();
28 | return;
29 | }
30 | if (Contains(Args, "c39"))
31 | {
32 | if (Debug->Enabled())
33 | {
34 | GGame->PrintChat("AnimQ-2");
35 | }
36 | //Qstack = 2;
37 | //ResetQ2();
38 | return;
39 | }
40 | if (Contains(Args, "c49"))
41 | {
42 | if (Debug->Enabled())
43 | {
44 | GGame->PrintChat("AnimQ-3");
45 | }
46 | //Qstack = 0;
47 | //ResetQ3();
48 | return;
49 | }
50 | if (Contains(Args, "b4f"))
51 | {
52 | if (Debug->Enabled())
53 | {
54 | GGame->PrintChat("Anim_W");
55 | }
56 | //ResetW();
57 | return;
58 | }
59 | if (Contains(Args, "bea6"))
60 | {
61 | if (Debug->Enabled())
62 | {
63 | GGame->PrintChat("Anim_R1");
64 | }
65 | //ResetR1();
66 | }
67 | if (Contains(Args, "bda"))
68 | {
69 | if (Debug->Enabled())
70 | {
71 | GGame->PrintChat("Anim_R2");
72 | }
73 | //ResetR2();
74 | }
75 | }
76 | }*/
77 | }
--------------------------------------------------------------------------------
/D-Riven++/OnAttack.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extensions.h"
3 | #include "Items.h"
4 | static void Onattack(IUnit* source, IUnit* target)
5 | {
6 | auto Enemy = GTargetSelector->FindTarget(QuickestKill, PhysicalDamage, 900);
7 |
8 | if (target != nullptr && target->IsValidTarget() && !target->IsDead() && target->IsHero() &&
9 | (GOrbwalking->GetOrbwalkingMode() == kModeMixed || GOrbwalking->GetOrbwalkingMode() == kModeCombo))
10 | {
11 | if (Q->IsReady() && ComboQ->Enabled())
12 | {
13 | if (haveitems() && myHero->IsValidTarget(Enemy, 380))
14 | {
15 | if (_tiamat->Enabled())
16 | {
17 | if (Tiamat->IsOwned() && Tiamat->IsReady())
18 | {
19 | Tiamat->CastOnPlayer();
20 | GOrbwalking->ResetAA();
21 | return;
22 | }
23 | }
24 | if (RHydra->Enabled())
25 | {
26 | if (Ravenous_Hydra->IsOwned() && Ravenous_Hydra->IsReady())
27 | {
28 | Ravenous_Hydra->CastOnPlayer();
29 | GOrbwalking->ResetAA();
30 | }
31 | }
32 | if (Hydra->Enabled())
33 | {
34 | if (Titanic_Hydra->IsOwned() && Titanic_Hydra->IsReady())
35 | {
36 | Titanic_Hydra->CastOnTarget(Enemy);
37 | GOrbwalking->ResetAA();
38 | }
39 | }
40 | }
41 | if (Qstack == 1)
42 | {
43 | if (Enemy != nullptr && myHero->IsValidTarget(Enemy, Q->Range() + IsInAutoAttackRange(Enemy) + 75))
44 | {
45 | if (Debug->Enabled())
46 | {
47 | GGame->PrintChat("ONATTACK_1");
48 | }
49 | Q->CastOnPosition(Enemy->GetPosition());
50 | return;
51 | }
52 | }
53 | if (Qstack == 2)
54 | {
55 | if (Enemy != nullptr && myHero->IsValidTarget(Enemy, Q->Range() + IsInAutoAttackRange(Enemy) + 75))
56 | {
57 | if (Debug->Enabled())
58 | {
59 | GGame->PrintChat("ONATTACK_2");
60 | }
61 | Q->CastOnPosition(Enemy->GetPosition());
62 | return;
63 | }
64 | }
65 | if (Qstack == 0)
66 | {
67 | if (Enemy != nullptr && myHero->IsValidTarget(Enemy, Q->Range() + IsInAutoAttackRange(Enemy) + 75))
68 | {
69 | if (Debug->Enabled())
70 | {
71 | GGame->PrintChat("ONATTACK_3");
72 | }
73 | Q->CastOnPosition(Enemy->GetPosition());
74 | return;
75 | }
76 | }
77 | }
78 | }
79 | }
--------------------------------------------------------------------------------
/D-Riven++/OnCast.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extensions.h"
3 | #include "Items.h"
4 | #include "Burst.h"
5 | PLUGIN_EVENT(void) OnDoCast(CastedSpell const& spell)
6 | {
7 | /*if (Contains(args.Name_, "ItemTiamatCleave")) forceItem = false;
8 | if (Contains(args.Name_, "RivenTriCleave")) forceQ = false;
9 | if (Contains(args.Name_, "RivenMartyr")) forceW = false;
10 | if (Equals(args.Name_, IsFirstR)) forceR = false;
11 | if (Equals(args.Name_, IsSecondR)) forceR2 = false;*/
12 |
13 | auto Enemy = GTargetSelector->FindTarget(QuickestKill, PhysicalDamage, 900);
14 |
15 | if (spell.Caster_ == myHero && std::string(spell.Name_) == "RivenIzunaBlade")
16 | {
17 | ResetR2();
18 | }
19 |
20 | if (Enemy != nullptr && spell.Caster_ == myHero && Enemy->IsHero() && (GOrbwalking->GetOrbwalkingMode() == kModeMixed || GOrbwalking->GetOrbwalkingMode() == kModeCombo))
21 | {
22 |
23 |
24 | /*if (Q->IsReady() && ComboQ->Enabled() && myHero->IsValidTarget(Enemy, Q->Range()) && !AutoAttack)
25 | {
26 | if (Debug->Enabled())
27 | {
28 | GGame->PrintChat("q_OnDoCast");
29 | }
30 | AutoAttack = true;
31 | Q->CastOnPosition(Enemy->ServerPosition());
32 | }*/
33 | if (GOrbwalking->GetOrbwalkingMode() == kModeCombo && ComboW->Enabled() && W->IsReady() && myHero->IsValidTarget(Enemy, W->Range()) &&
34 | (Qstack != 0 || Enemy->IsMelee() || Enemy->IsFacing(myHero) || !Q->IsReady() ||
35 | myHero->HasBuff("RivenFeint")))
36 | {
37 | if (Debug->Enabled())
38 | {
39 | GGame->PrintChat("W_OnDoCast");
40 | }
41 | W->CastOnPlayer();
42 | }
43 | }
44 | }
--------------------------------------------------------------------------------
/D-Riven++/OnCreate_OnDelete.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extensions.h"
3 |
4 | PLUGIN_EVENT(void) OnCreateObject(IUnit* obj)
5 | {
6 |
7 | if (obj != nullptr)
8 | {
9 |
10 | if (strcmp(obj->GetObjectName(), "Riven_Base_Q_01_Wpn_Trail.troy") == 0)
11 | {
12 | LastQ = GGame->TickCount();
13 | Qstack = 1;
14 | ResetQ1();
15 | }
16 | if (strcmp(obj->GetObjectName(), "Riven_Base_Q_02_Wpn_Trail.troy") == 0)
17 | {
18 | LastQ = GGame->TickCount();
19 | Qstack = 2;
20 | ResetQ2();
21 | }
22 | if (strcmp(obj->GetObjectName(), "Riven_Base_Q_03_Wpn_Trail.troy") == 0)
23 | {
24 | LastQ = GGame->TickCount();
25 | Qstack = 0;
26 | ResetQ3();
27 | }
28 | if (strcmp(obj->GetObjectName(), "Riven_Base_W_Cast.troy") == 0)
29 | {
30 | ResetW();
31 | }
32 | if (strcmp(obj->GetObjectName(), "Riven_Base_R_Sword.troy") == 0)
33 | {
34 | ResetR1();
35 | }
36 | }
37 | }
38 | PLUGIN_EVENT(void) OnDestroyObject(IUnit* obj)
39 | {
40 | if (obj != nullptr)
41 | {
42 | /*if (strcmp(obj->GetObjectName(), "Rengar_Base_P_Buf.troy") == 0)
43 | {
44 | passivedown = true;
45 | GGame->PrintChat("passive");
46 | }
47 | if (strcmp(obj->GetObjectName(), "GlobalCamouflagePersistant.troy") == 0)
48 | {
49 | passivedown = true;
50 | }*/
51 |
52 | }
53 | }
--------------------------------------------------------------------------------
/D-Riven++/OnProcessSpellCast.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extensions.h"
3 | #include "Combo.h"
4 | #include "Burst.h"
5 | #include "SpellDatabase.h"
6 |
7 | PLUGIN_EVENT(void) OnProcessSpellCast(CastedSpell const& spell)
8 | {
9 | auto target = GTargetSelector->FindTarget(QuickestKill, PhysicalDamage, 900);
10 |
11 | if (spell.Caster_ == myHero)
12 | {
13 | /*if (Autoattackanimation->Enabled() && (GetAsyncKeyState(Burst_b->GetInteger()) || GOrbwalking->GetOrbwalkingMode() == kModeCombo))
14 | {
15 | if (std::string(spell.Name_) == "RivenBasicAttack" || std::string(spell.Name_) == "RivenBasicAttack2" || std::string(spell.Name_) == "RivenBasicAttack3")
16 | {
17 | if (Debug->Enabled())
18 | {
19 | GGame->PrintChat("AA_cancel");
20 | }
21 | AAcancel();
22 | }
23 | }*/
24 | if (GOrbwalking->GetOrbwalkingMode() == kModeCombo)
25 | {
26 | processCombo(spell);
27 | return;
28 | }
29 | if (GetAsyncKeyState(Burst_b->GetInteger()))
30 | {
31 | processBurst(spell);
32 | return;
33 | }
34 | if (std::string(spell.Name_) == "RivenTriCleave")
35 | {
36 | if (Debug->Enabled())
37 | {
38 | GGame->PrintChat("LastQ");
39 | }
40 | return;
41 | }
42 | if (Contains(std::string(spell.Name_), "RivenBasicAttack"))
43 | {
44 | AutoAttack = true;
45 | return;
46 | //GPluginSDK->DelayFunctionCall(AADelay->GetInteger(), []()
47 | //{
48 | // AutoAttack = false;
49 | //});
50 | }
51 | if (GSpellData->IsAutoAttack(spell.Data_))
52 | {
53 | AutoAttack = false;
54 | return;
55 | }
56 | }
57 |
58 | if (AutoE->Enabled() && E->IsReady())
59 | {
60 | if (!spell.Caster_->IsEnemy(GEntityList->Player()))
61 | return;
62 | if (spell.Caster_->IsHero())
63 | {
64 | auto championName = const_cast(spell.Caster_->GetBaseSkinName());
65 | auto spellName = const_cast(GSpellData->GetSpellName(spell.Data_));
66 |
67 | for (auto champion : SpellDatabase::Champions)
68 | {
69 | if (strstr(champion.first, championName) != nullptr)
70 | {
71 | for (auto championSpell : champion.second.Spells)
72 | {
73 | if (strstr(championSpell.Name, spellName) != nullptr)
74 | {
75 | if (GetMenuBoolean(std::string(championSpell.Name)))
76 | {
77 | auto UseE = false;
78 |
79 | if (spell.Target_ != nullptr && spell.Target_ == myHero)
80 | UseE = true;
81 |
82 | /* if (spell.Target_ == nullptr)
83 | {
84 | auto currentSpell = GPluginSDK->CreateSpell2(championSpell.Slot, championSpell.SpellType, championSpell.Missile, championSpell.AoE, championSpell.Collisions);
85 | currentSpell->SetSkillshot(championSpell.Delay, championSpell.Radius, championSpell.Speed, championSpell.Range);
86 |
87 | AdvPredictionOutput pOutput;
88 | currentSpell->RunPrediction(myHero, championSpell.AoE, championSpell.Collisions, &pOutput);
89 |
90 | if (pOutput.HitChance >= kHitChanceHigh)
91 | {
92 | UseE = true;
93 | }
94 | }
95 |
96 | if (UseE)
97 | {
98 | GPluginSDK->DelayFunctionCall(championSpell.Delay - championSpell.Delay * 0.3, []
99 | {
100 | auto epos = myHero->GetPosition() + (myHero->GetPosition() - spell.Caster_->GetPosition()).VectorNormalize() * 300;
101 | E->CastOnPosition(epos);
102 | return;
103 | });
104 | }*/
105 | }
106 | }
107 | break;
108 | }
109 | }
110 | }
111 | }
112 | }
113 | }
--------------------------------------------------------------------------------
/D-Riven++/Spells.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "PluginSDK.h"
3 | #include "Menu.h"
4 |
5 | ISpell2* Q;
6 | ISpell2* W;
7 | ISpell2* E;
8 | ISpell2* R;
9 | ISpell2* R2;
10 | ISpell* Ignite;
11 | ISpell* Flash;
12 |
13 | //float Wrange;
14 |
15 | inline void LoadSpells()
16 | {
17 | Q = GPluginSDK->CreateSpell2(kSlotQ, kTargetCast, false, true, static_cast(kCollidesWithNothing));
18 | Q->SetOverrideRange(260);
19 | Q->SetOverrideRadius(FLT_MAX);
20 |
21 | W = GPluginSDK->CreateSpell2(kSlotW, kTargetCast, true, true, static_cast(kCollidesWithNothing));
22 | W->SetOverrideRange(265);
23 |
24 | E = GPluginSDK->CreateSpell2(kSlotE, kLineCast, true, false, static_cast (kCollidesWithYasuoWall | kCollidesWithMinions));
25 | E->SetSkillshot(0.f, 0.f, 1450.f, 325.f);
26 |
27 | R = GPluginSDK->CreateSpell2(kSlotR, kTargetCast, true, true, static_cast(kCollidesWithYasuoWall | kCollidesWithHeroes));
28 |
29 | R2 = GPluginSDK->CreateSpell2(kSlotR, kConeCast, true, true, static_cast(kCollidesWithYasuoWall | kCollidesWithHeroes));
30 | R2->SetSkillshot(0.25f, 60.f, 2200.f, 900.f);
31 |
32 | auto slot1 = GPluginSDK->GetEntityList()->Player()->GetSpellName(kSummonerSlot1);
33 | auto slot2 = GPluginSDK->GetEntityList()->Player()->GetSpellName(kSummonerSlot2);
34 |
35 | if (strcmp(slot1, "SummonerDot") == 0)
36 | {
37 | Ignite = GPluginSDK->CreateSpell(kSummonerSlot1, 600);
38 | }
39 | if (strcmp(slot2, "SummonerDot") == 0)
40 | {
41 | Ignite = GPluginSDK->CreateSpell(kSummonerSlot2, 600);
42 | }
43 | else Ignite == nullptr;
44 |
45 | if (strcmp(slot1, "SummonerFlash") == 0)
46 | {
47 | Flash = GPluginSDK->CreateSpell(kSummonerSlot1, 425);
48 | }
49 | if (strcmp(slot2, "SummonerFlash") == 0)
50 | {
51 | Flash = GPluginSDK->CreateSpell(kSummonerSlot2, 425);
52 | }
53 | else Flash == nullptr;
54 |
55 | Titanic_Hydra = GPluginSDK->CreateItemForId(3748, 385);
56 | Ravenous_Hydra = GPluginSDK->CreateItemForId(3074, 385);
57 | Tiamat = GPluginSDK->CreateItemForId(3077, 385);
58 | Youmuu = GPluginSDK->CreateItemForId(3142, 0);
59 | blade = GPluginSDK->CreateItemForId(3153, 550);
60 | Cutlass = GPluginSDK->CreateItemForId(3144, 550);
61 | HealthPot = GPluginSDK->CreateItemForId(2003, 0);
62 | CorruptPot = GPluginSDK->CreateItemForId(2033, 0);
63 | RefillPot = GPluginSDK->CreateItemForId(2031, 0);
64 | Biscuit = GPluginSDK->CreateItemForId(2010, 0);
65 | hunter = GPluginSDK->CreateItemForId(2032, 0);
66 | }
67 |
--------------------------------------------------------------------------------
/D-Riven++/Ultilogic.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extensions.h"
3 | #include "Damage.h"
4 |
5 | static bool isR1()
6 | {
7 | if (myHero->GetSpellBook()->GetLevel(kSlotR) > 0)
8 | {
9 | return strcmp(GEntityList->Player()->GetSpellBook()->GetName(kSlotR), "RivenFengShuiEngine") == 0;
10 | }
11 | return false;
12 | }
13 | static bool isR2()
14 | {
15 | if (myHero->GetSpellBook()->GetLevel(kSlotR) > 0)
16 | {
17 | return strcmp(GEntityList->Player()->GetSpellBook()->GetName(kSlotR), "RivenIzunaBlade") == 0;
18 | }
19 | return false;
20 | }
21 | static bool R1Logic(IUnit* target)
22 | {
23 | if (!myHero->IsValidTarget(target, R2->Range()) || !isR1() || !ComboR->Enabled() || target->HealthPercent() <= DmgPercentmin->GetInteger())
24 | {
25 | return false;
26 | }
27 |
28 | return R->CastOnPlayer();
29 | }
30 |
31 | static bool R2Logic(IUnit* target)
32 | {
33 | auto dmg = GDamage->GetSpellDamage(GEntityList->Player(), target, kSlotR);
34 | auto dmg1 = GDamage->GetAutoAttackDamage(myHero, target, true);
35 | auto end = GBuffData->GetEndTime(myHero->GetBuffDataByName("RivenFengShuiEngine"));
36 | auto start = GBuffData->GetStartTime(myHero->GetBuffDataByName("RivenFengShuiEngine"));
37 | if (!myHero->IsValidTarget(target, R2->Range()) || isR1() || !ComboR2->Enabled())
38 | {
39 | return false;
40 | }
41 |
42 |
43 | if (end - GGame->Time() <= 0.1 * (end - start) || target->HealthPercent() < 20 || (target->GetHealth() > dmg + dmg1 * 2 && target->HealthPercent() < 40) ||
44 | (target->GetHealth() <= dmg || (target->GetHealth() <= TotalDamage(target))))
45 | {
46 | return R2->CastOnTarget(target, kHitChanceHigh);
47 | }
48 |
49 | return false;
50 | }
51 |
--------------------------------------------------------------------------------
/D-Riven++/killsteal.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Spells.h"
3 | #include "Extensions.h"
4 | inline void killsteal()
5 | {
6 | if (GGame->IsChatOpen() || GetAsyncKeyState(Burst_b->GetInteger())) return;
7 | for (auto Enemy : GEntityList->GetAllHeros(false, true))
8 | {
9 | if (Enemy != nullptr && !Enemy->IsDead())
10 | {
11 | if (KillstealW->Enabled() && W->IsReady())
12 | {
13 | auto dmg = GDamage->GetSpellDamage(GEntityList->Player(), Enemy, kSlotW);
14 | if (myHero->IsValidTarget(Enemy, W->Range()) && !Enemy->IsInvulnerable())
15 | {
16 | if (Enemy->GetHealth() <= dmg && W->IsReady())
17 | {
18 | W->CastOnPlayer();
19 | }
20 | }
21 | }
22 | if (KillstealR->Enabled() && R2->IsReady() && myHero->HasBuff("RivenFengShuiEngine"))
23 | {
24 | auto dmg = GDamage->GetSpellDamage(GEntityList->Player(), Enemy, kSlotR);
25 | if (E->IsReady() && KillstealE->Enabled())
26 | {
27 | if (EnemiesInRange(myHero, R2->Range() + E->Range()) < 3 &&
28 | myHero->HealthPercent() > 50 && myHero->IsValidTarget(Enemy, R->Range() + E->Range() - 100)
29 | && GetDistance(myHero, Enemy) >= R2->Range() && Enemy->GetHealth() <= dmg)
30 | {
31 | E->CastOnPosition(Enemy->ServerPosition());
32 | if (myHero->IsValidTarget(Enemy, R2->Range()))
33 | {
34 | R2->CastOnUnit(Enemy);
35 | }
36 | }
37 | }
38 | else
39 | {
40 | if (myHero->IsValidTarget(Enemy, R2->Range()) && Enemy->GetHealth() <= dmg)
41 | {
42 | R2->CastOnUnit(Enemy);
43 | }
44 | }
45 | }
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/D-Rumble++/D-Rumble++.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hh;hpp;hxx;hm;inl;inc;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 |
18 |
19 | Source Files
20 |
21 |
22 |
--------------------------------------------------------------------------------
/D-Thresh++/D-Thresh++.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hh;hpp;hxx;hm;inl;inc;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 |
18 |
19 | Source Files
20 |
21 |
22 |
--------------------------------------------------------------------------------
/D-Tristana++/D-Tristana++.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hh;hpp;hxx;hm;inl;inc;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 |
18 |
19 | Source Files
20 |
21 |
22 |
--------------------------------------------------------------------------------
/D-Vayne++/D-Vayne++.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hh;hpp;hxx;hm;inl;inc;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 |
18 |
19 | Source Files
20 |
21 |
22 |
--------------------------------------------------------------------------------
/D-Vladimir++/Combo.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Damage.h"
3 | #include "Menu.h"
4 | #include "Items.h"
5 |
6 |
7 | inline void Combo()
8 | {
9 | auto Enemy = GTargetSelector->FindTarget(QuickestKill, SpellDamage, 1500);
10 | if (Enemy != nullptr && !Enemy->IsDead())
11 | {
12 | UseItems();
13 | if (Ignite != nullptr)
14 | {
15 | if (UseIgnitecombo->Enabled() && Ignite->IsReady())
16 | {
17 | if (Enemy->IsValidTarget(myHero, 570))
18 | {
19 | if (Enemy->GetHealth() <= 1.4 * TotalDamage(Enemy))
20 | {
21 | Ignite->CastOnUnit(Enemy);
22 | return;
23 | }
24 | }
25 | }
26 | }
27 | ProtoBelt();
28 | if (ComboQ->Enabled() && Q->IsReady())
29 | {
30 | if (myHero->IsValidTarget(Enemy, Q->Range()))
31 | {
32 | Q->CastOnTarget(Enemy);
33 | return;
34 | }
35 | }
36 |
37 | if (ComboE->Enabled() && E->IsReady() && myHero->HealthPercent() > UseEHPC->GetInteger())
38 | {
39 | auto Distance = (myHero->GetPosition() - Enemy->GetPosition()).Length();
40 | if (myHero->IsValidTarget(Enemy, E->Range()) && !myHero->HasBuff("VladimirE"))
41 | {
42 | E->StartCharging();
43 | return;
44 | }
45 | if (myHero->HasBuff("VladimirE") && myHero->IsValidTarget(Enemy, E->Range()))
46 | {
47 | E->CastOnPlayer();
48 | return;
49 | }
50 | if (myHero->HasBuff("VladimirE") && myHero->IsValidTarget(Enemy, E->Range() && Distance > E->Range()-100 && !Enemy->IsFacing(myHero)))
51 | {
52 | E->CastOnPlayer();
53 | return;
54 | }
55 | }
56 | if (ComboR->Enabled() && R->IsReady())
57 | {
58 | if (Enemy->GetHealth() <1.4* TotalDamage(Enemy))
59 | {
60 | AdvPredictionOutput RPred;
61 | R->RunPrediction(Enemy, true, kCollidesWithNothing, &RPred);
62 | if (myHero->IsValidTarget(Enemy, R->Range()))
63 | {
64 | if (RPred.HitChance >= kHitChanceHigh)
65 | {
66 | R->CastOnPosition(RPred.CastPosition);
67 | return;
68 |
69 | }
70 | }
71 | }
72 | }
73 | if (ComboRAOE->Enabled() && R->IsReady())
74 | {
75 | int heros = 0;
76 | Vec3 pos = Vec3();
77 | R->FindBestCastPosition(false, true, pos, heros);
78 | if (heros >= ComboRAOEUse->GetInteger())
79 | {
80 | R->CastOnPosition(pos);
81 | }
82 | }
83 | }
84 | }
--------------------------------------------------------------------------------
/D-Vladimir++/D-Vladimir++.cpp:
--------------------------------------------------------------------------------
1 |
2 |
3 | //#include "stdafx.h"
4 | #include "PluginSDK.h"
5 | #include "Extension.h"
6 | #include "Spells.h"
7 | #include "Items.h"
8 | #include "LaneClear.h"
9 | #include "Combo.h"
10 | #include "Render.h"
11 | //#include "AfterAttack.h"
12 | #include "OnProcessCast.h"
13 | #include "JungleClear.h"
14 | #include "Harass.h"
15 | #include "OnCast.h"
16 | #include "killsteal.h"
17 | #include "Burst.h"
18 |
19 |
20 | #define M_PI 3.14159265358979323846
21 |
22 | PluginSetup("D-Vladimir++");
23 |
24 | static void CheatRito()
25 | {
26 | if (ChangeSkin->Enabled())
27 | {
28 | if (myHero->GetSkinId() != SkinChangeid->GetInteger())
29 | {
30 | myHero->SetSkinId(SkinChangeid->GetInteger());
31 | }
32 | }
33 | else
34 | {
35 | myHero->SetSkinId(myHero->GetSkinId());
36 | }
37 | }
38 |
39 | PLUGIN_EVENT(void) OnGapcloser(GapCloserSpell const& args)
40 | {
41 | if (args.Source->IsEnemy(myHero) && args.Source->IsHero())
42 | {
43 | if (AutoEGapcloser->Enabled() && E->IsReady() && !args.IsTargeted && myHero->IsValidTarget(args.Source, 250))
44 | {
45 | E->CastOnPosition(args.Source->ServerPosition());
46 | }
47 | }
48 | }
49 |
50 | PLUGIN_EVENT(void) OnGameUpdate()
51 | {
52 | if (GGame->IsChatOpen() || myHero->IsDead() || myHero->IsRecalling()) return;
53 |
54 | if (myHero->HasBuff("VladimirE")|| myHero->HasBuff("VladimirSanguinePool"))
55 | {
56 | GOrbwalking->SetMovementAllowed(true);
57 | GOrbwalking->SetAttacksAllowed(false);
58 | GGame->IssueOrder(myHero, kMoveTo, GGame->CursorPosition());
59 | }
60 | else GOrbwalking->SetAttacksAllowed(true);
61 |
62 | if (GetAsyncKeyState(Burst->GetInteger()))
63 | {
64 | burst();
65 | }
66 | if (GOrbwalking->GetOrbwalkingMode() == kModeCombo)
67 | {
68 | Combo();
69 | }
70 |
71 | if (GOrbwalking->GetOrbwalkingMode() == kModeMixed)
72 | {
73 | Harass();
74 | }
75 |
76 | if (GOrbwalking->GetOrbwalkingMode() == kModeLaneClear)
77 | {
78 | laneclear();
79 | jungleclear();
80 | }
81 | killsteal();
82 | Usepotion();
83 | CheatRito();
84 | }
85 |
86 | PLUGIN_API void OnLoad(IPluginSDK* PluginSDK)
87 | {
88 | PluginSDKSetup(PluginSDK);
89 | Menu();
90 | LoadSpells();
91 | myHero = GEntityList->Player();
92 |
93 | GEventManager->AddEventHandler(kEventOnGameUpdate, OnGameUpdate);
94 | GEventManager->AddEventHandler(kEventOnRender, OnRender);
95 | GEventManager->AddEventHandler(kEventOnSpellCast, OnProcessCast);
96 | GEventManager->AddEventHandler(kEventOnDoCast, OnCast);
97 |
98 | if (strcmp(GEntityList->Player()->ChampionName(), "Vladimir") == 0)
99 | {
100 | GRender->NotificationEx(Vec4(220, 20, 60, 255), 2, true, true, "D-Vladimir : Loaded!");
101 | }
102 | else
103 | {
104 | GRender->NotificationEx(Vec4(220, 20, 60, 255), 2, true, true, "You are not playing Vladimir...");
105 | }
106 | }
107 |
108 |
109 | PLUGIN_API void OnUnload()
110 | {
111 | MainMenu->Remove();
112 |
113 | GEventManager->RemoveEventHandler(kEventOnGameUpdate, OnGameUpdate);
114 | GEventManager->RemoveEventHandler(kEventOnRender, OnRender);
115 | GEventManager->RemoveEventHandler(kEventOnSpellCast, OnProcessCast);
116 | GEventManager->RemoveEventHandler(kEventOnDoCast, OnCast);
117 |
118 | }
--------------------------------------------------------------------------------
/D-Vladimir++/D-Vladimir++.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hh;hpp;hxx;hm;inl;inc;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 |
18 |
19 | Source Files
20 |
21 |
22 |
23 |
24 | Header Files
25 |
26 |
27 | Header Files
28 |
29 |
30 | Header Files
31 |
32 |
33 | Header Files
34 |
35 |
36 | Header Files
37 |
38 |
39 | Header Files
40 |
41 |
42 | Header Files
43 |
44 |
45 | Header Files
46 |
47 |
48 | Header Files
49 |
50 |
51 | Header Files
52 |
53 |
54 | Header Files
55 |
56 |
57 | Header Files
58 |
59 |
60 | Header Files
61 |
62 |
63 | Header Files
64 |
65 |
66 | Header Files
67 |
68 |
69 |
--------------------------------------------------------------------------------
/D-Vladimir++/Damage.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 |
4 | inline float QDamage(IUnit* Target)
5 | {
6 | float Damage = 0;
7 |
8 | if (myHero->GetSpellLevel(kSlotQ) == 1)
9 | Damage += 75 + 0.55*myHero->MagicDamage();
10 | else if (myHero->GetSpellLevel(kSlotQ) == 2)
11 | Damage += 90 + 0.55*myHero->MagicDamage();
12 | else if (myHero->GetSpellLevel(kSlotQ) == 3)
13 | Damage += 105 + 0.55*myHero->MagicDamage();
14 | else if (myHero->GetSpellLevel(kSlotQ) == 4)
15 | Damage += 120 + 0.55*myHero->MagicDamage();
16 | else if (myHero->GetSpellLevel(kSlotQ) == 5)
17 | Damage += 135 + 0.55*myHero->MagicDamage();
18 |
19 | return Damage;
20 | }
21 |
22 | inline float WDamage(IUnit* Target)
23 | {
24 | float Damage = 0;
25 |
26 | if (myHero->GetSpellLevel(kSlotW) == 1)
27 | Damage += 80;
28 | else if (myHero->GetSpellLevel(kSlotW) == 2)
29 | Damage += 135;
30 | else if (myHero->GetSpellLevel(kSlotW) == 3)
31 | Damage += 190;
32 | else if (myHero->GetSpellLevel(kSlotW) == 4)
33 | Damage += 245;
34 | else if (myHero->GetSpellLevel(kSlotW) == 5)
35 | Damage += 300;
36 |
37 | return Damage;
38 | }
39 |
40 | inline float EDamage(IUnit* Target)
41 | {
42 | float Damage = 0;
43 |
44 | if (myHero->GetSpellLevel(kSlotE) == 1)
45 | Damage += 60 + 0.45*myHero->MagicDamage();
46 | else if (myHero->GetSpellLevel(kSlotE) == 2)
47 | Damage += 80 + 0.45*myHero->MagicDamage();
48 | else if (myHero->GetSpellLevel(kSlotE) == 3)
49 | Damage += 100 + 0.45*myHero->MagicDamage();
50 | else if (myHero->GetSpellLevel(kSlotE) == 4)
51 | Damage += 120 + 0.45*myHero->MagicDamage();
52 | else if (myHero->GetSpellLevel(kSlotE) == 5)
53 | Damage += 140 + 0.45*myHero->MagicDamage();
54 |
55 | return Damage;
56 | }
57 |
58 | inline float RDamage(IUnit* Target)
59 | {
60 | float Damage = 0;
61 |
62 | if (myHero->GetSpellLevel(kSlotR) == 1)
63 | Damage += 150 + 0.7*myHero->MagicDamage();
64 | else if (myHero->GetSpellLevel(kSlotR) == 2)
65 | Damage += 250 + 0.7*myHero->MagicDamage();
66 | else if (myHero->GetSpellLevel(kSlotR) == 3)
67 | Damage += 350 + 0.7*myHero->MagicDamage();
68 |
69 |
70 | return Damage;
71 | }
72 | inline float TotalDamage(IUnit* target)
73 | {
74 | if (target == nullptr || target->IsDead())
75 | {
76 | return 0;
77 | }
78 |
79 | auto damage = 0;
80 |
81 | if (Q->IsReady())
82 | {
83 | damage += QDamage(target);
84 | }
85 |
86 | if (W->IsReady())
87 | {
88 | damage += WDamage(target);
89 | }
90 | if (E->IsReady())
91 | {
92 | damage += EDamage(target);
93 | }
94 | if (R->IsReady())
95 | {
96 | damage += RDamage(target);
97 | }
98 | damage += 2 * GDamage->GetAutoAttackDamage(myHero, target, true);
99 |
100 | if (Ignite != nullptr&& Ignite->IsReady())
101 | {
102 | damage += GDamage->GetSpellDamage(myHero, target, kSummonerSpellIgnite);
103 | }
104 | if (target->HasBuff("GarenW"))
105 | {
106 | damage = damage * 0.7f;
107 | }
108 |
109 | if (target->HasBuff("ferocioushowl"))
110 | {
111 | damage = damage * 0.7f;
112 | }
113 |
114 | if (target->HasBuff("BlitzcrankManaBarrierCD") && target->HasBuff("ManaBarrier"))
115 | {
116 | damage -= target->GetMana() / 2;
117 | }
118 | if (myHero->HasBuff("summonerexhaust"))
119 | {
120 | damage *= 0.6f;
121 | }
122 |
123 | if (GEntityList->Player()->HasBuff("LichBane"))
124 | {
125 | damage += myHero->TotalPhysicalDamage() *0.75 + myHero->MagicDamage() * 0.5;
126 | }
127 | if (protobelt->IsOwned() && protobelt->IsReady())
128 | {
129 | auto proto = (79 + 4 * (myHero->GetLevel() - 1)) + 0.25*myHero->MagicDamage();
130 | damage += proto;
131 | }
132 | return static_cast(damage);
133 | }
134 |
--------------------------------------------------------------------------------
/D-Vladimir++/Harass.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Items.h"
3 |
4 | inline void Harass()
5 | {
6 | auto Enemy = GTargetSelector->FindTarget(QuickestKill, SpellDamage, 1500);
7 |
8 | if (Enemy != nullptr && !Enemy->IsDead())
9 | {
10 | if (HarassQ->Enabled() && Q->IsReady())
11 | {
12 | if (myHero->IsValidTarget(Enemy, Q->Range()))
13 | {
14 | Q->CastOnUnit(Enemy);
15 | return;
16 | }
17 | }
18 |
19 | if (E->IsReady() && HarassE->Enabled() && myHero->HealthPercent() > UseEHPH->GetInteger())
20 | {
21 | if (myHero->IsValidTarget(Enemy, E->Range() + 100) && Enemy->IsFacing(myHero))
22 | {
23 | E->CastOnPlayer();
24 | return;
25 | }
26 | if (myHero->IsValidTarget(Enemy, E->Range()))
27 | {
28 | E->CastOnPlayer();
29 | return;
30 | }
31 | if (myHero->HasBuff("VladimirE") && myHero->IsValidTarget(Enemy, E->Range()))
32 | {
33 | E->StartCharging();
34 | }
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/D-Vladimir++/Items.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 |
4 | inline void UseItems()
5 | {
6 | if (GOrbwalking->GetOrbwalkingMode() == kModeCombo)
7 | {
8 | for (auto enemy : GEntityList->GetAllHeros(false, true))
9 | {
10 | if (Blade_Cutlass->Enabled() && myHero->IsValidTarget(enemy, 550))
11 | {
12 | if (myHero->HealthPercent() < MyHpPreBlade->GetInteger() || enemy->HealthPercent() < EnemyHpPreBlade->GetInteger())
13 | {
14 | if (Hextech->IsOwned() && Hextech->IsReady())
15 | Hextech->CastOnTarget(enemy);
16 | if (Cutlass->IsOwned() && Cutlass->IsReady())
17 | Cutlass->CastOnTarget(enemy);
18 | }
19 | }
20 |
21 | }
22 | }
23 | }
24 | inline void ProtoBelt()
25 | {
26 | if (GOrbwalking->GetOrbwalkingMode() == kModeCombo)
27 | {
28 | for (auto enemy : GEntityList->GetAllHeros(false, true))
29 | {
30 | if (UseProto->Enabled() && myHero->IsValidTarget(enemy, 600))
31 | {
32 | if (protobelt->IsOwned() && protobelt->IsReady())
33 | protobelt->CastOnPosition(enemy->GetPosition());
34 | }
35 | }
36 |
37 | }
38 | }
39 | inline void Usepotion()
40 | {
41 | if (usepotion->Enabled() && !myHero->IsRecalling() && !myHero->IsDead())
42 | {
43 | if (CountEnemiesInRange(2000) > 0)
44 | {
45 | bool usepotions = myHero->GetHealth() < myHero->GetMaxHealth()* usepotionhpper->GetInteger() / 100;
46 | if (usepotions)
47 | {
48 | if (myHero->GetBuffDataByName("ItemDarkCrystalFlask") || myHero->GetBuffDataByName("ItemMiniRegenPotion")
49 | || myHero->GetBuffDataByName("ItemCrystalFlask") || myHero->GetBuffDataByName("RegenerationPotion") || myHero->HasBuff("ItemCrystalFlaskJungle"))
50 | return;
51 |
52 | if (Biscuit->IsOwned() && !GUtility->IsPositionInFountain(myHero->GetPosition()) && Biscuit->IsReady())
53 | {
54 | Biscuit->CastOnPlayer();
55 | }
56 | else if (HealthPot->IsOwned() && !GUtility->IsPositionInFountain(myHero->GetPosition()) && HealthPot->IsReady())
57 | {
58 | HealthPot->CastOnPlayer();
59 | }
60 | else if (CorruptPot->IsOwned() && CorruptPot->IsReady())
61 | {
62 | CorruptPot->CastOnPlayer();
63 | }
64 | else if (RefillPot->IsOwned() && RefillPot->IsReady())
65 | {
66 | RefillPot->CastOnPlayer();
67 | }
68 | else if (hunter->IsOwned() && hunter->IsReady())
69 | {
70 | hunter->CastOnPlayer();
71 | }
72 | }
73 | }
74 | }
75 | }
--------------------------------------------------------------------------------
/D-Vladimir++/JungleClear.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Items.h"
3 |
4 | inline void jungleclear()
5 | {
6 | for (auto jMinion : GEntityList->GetAllMinions(false, false, true))
7 | {
8 |
9 | if (JungleQ->Enabled() && Q->IsReady())
10 | {
11 | if (jMinion != nullptr && !jMinion->IsDead() && myHero->IsValidTarget(jMinion, Q->Range()))
12 | {
13 | Q->CastOnUnit(jMinion);
14 | return;
15 | }
16 | }
17 | if (W->IsReady() && myHero->HealthPercent()<=2)
18 | {
19 | if (jMinion != nullptr && !jMinion->IsDead() && myHero->IsValidTarget(jMinion, W->Range()))
20 | {
21 | W->CastOnPlayer();
22 | return;
23 | }
24 | }
25 | if (JungleE->Enabled() && E->IsReady())
26 | {
27 | if (jMinion != nullptr && !jMinion->IsDead())
28 | {
29 | if (myHero->HasBuff("VladimirE") && myHero->IsValidTarget(jMinion, E->Range()))
30 | {
31 | E->CastOnPlayer();
32 | return;
33 | }
34 | if (!myHero->HasBuff("VladimirE") && myHero->IsValidTarget(jMinion, E->Range()))
35 | {
36 | E->StartCharging();
37 | return;
38 | }
39 | }
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/D-Vladimir++/KillSteal.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 |
4 |
5 | inline void killsteal()
6 | {
7 | if (GGame->IsChatOpen()) return;
8 | for (auto Enemy : GEntityList->GetAllHeros(false, true))
9 | {
10 | if (Enemy != nullptr && !Enemy->IsDead())
11 | {
12 | if (KillstealQ->Enabled() && Q->IsReady())
13 | {
14 | auto dmgQ = GDamage->GetSpellDamage(GEntityList->Player(), Enemy, kSlotQ);
15 | if (myHero->IsValidTarget(Enemy, Q->Range()) && !Enemy->IsInvulnerable())
16 | {
17 | if (Enemy->GetHealth() <= dmgQ)
18 | {
19 | Q->CastOnUnit(Enemy);
20 | return;
21 | }
22 | }
23 | }
24 |
25 | if (KillstealE->Enabled() && E->IsReady())
26 | {
27 | auto dmgE = GDamage->GetSpellDamage(GEntityList->Player(), Enemy, kSlotE);
28 | if (myHero->IsValidTarget(Enemy, E->Range()) && !Enemy->IsInvulnerable())
29 | {
30 | if (Enemy->GetHealth() <= dmgE)
31 | {
32 | E->CastOnPlayer();
33 | return;
34 | }
35 | }
36 | }
37 |
38 | if (KillstealR->Enabled() && R->IsReady())
39 | {
40 | AdvPredictionOutput RPred;
41 | R->RunPrediction(Enemy, true, kCollidesWithNothing, &RPred);
42 | if (myHero->IsValidTarget(Enemy, R->Range()) && !Enemy->IsInvulnerable())
43 | {
44 | if (RPred.HitChance >= kHitChanceHigh)
45 | {
46 | if (Enemy->GetHealth() < RDamage(Enemy))
47 | {
48 | R->CastOnPosition(RPred.CastPosition);
49 | return;
50 | }
51 | }
52 | }
53 | }
54 | }
55 | }
56 | }
--------------------------------------------------------------------------------
/D-Vladimir++/LaneClear.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include "Extension.h"
4 |
5 |
6 | inline void laneclear()
7 | {
8 | for (auto minions : GEntityList->GetAllMinions(false, true, false))
9 | {
10 | if (Q->IsReady())
11 | {
12 | auto dmg = GDamage->GetSpellDamage(myHero, minions, kSlotQ);
13 | if (FarmQ->Enabled() && minions != nullptr && myHero->IsValidTarget(minions, Q->Range()))
14 | {
15 |
16 | Q->CastOnUnit(minions);
17 | return;
18 | }
19 | if (LastHitQ->Enabled() && minions->GetHealth() < dmg && myHero->IsValidTarget(minions, Q->Range()))
20 | {
21 | Q->CastOnUnit(minions);
22 | return;
23 | }
24 | }
25 |
26 | if (FarmE->Enabled() && E->IsReady() && myHero->IsValidTarget(minions, E->Range()))
27 | {
28 | if (myHero->HealthPercent() > UseEHP->GetInteger())
29 | {
30 | if (CountminionInRange(E->Range()) >= minminionsE->GetInteger())
31 | {
32 | if (myHero->HasBuff("VladimirE") && myHero->IsValidTarget(minions, E->Range()))
33 | {
34 | E->CastOnPlayer();
35 | return;
36 | }
37 | if (!myHero->HasBuff("VladimirE") && myHero->IsValidTarget(minions, E->Range()))
38 | {
39 | E->StartCharging();
40 | return;
41 | }
42 | }
43 | }
44 | }
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/D-Vladimir++/OnCast.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 |
4 | PLUGIN_EVENT(void) OnCast(CastedSpell const& spell)
5 | {
6 | if (zhonyas->IsOwned() && zhonyas->IsReady() || W->IsReady())
7 | {
8 | if (!spell.Caster_->IsEnemy(myHero) && !myHero->IsValidTarget(spell.Caster_, 1200))
9 | return;
10 | if (!spell.Caster_->IsHero() || !spell.Caster_->IsTurret() || spell.Caster_ == nullptr)
11 | return;
12 |
13 | if (spell.Target_ != myHero)
14 | return;
15 | if (!GSpellData->IsAutoAttack(spell.Data_))
16 | return;
17 |
18 | auto attackdmg = GDamage->GetAutoAttackDamage(spell.Caster_, spell.Target_, true) * 2;
19 | if (CountEnemiesInRange(Q->Range()) > 0 && (myHero->HealthPercent() < 4 || myHero->GetHealth() < attackdmg))
20 | {
21 | if (Usezhonyas->Enabled() && zhonyas->IsOwned() && zhonyas->IsReady())
22 | {
23 | zhonyas->CastOnPlayer();
24 | return;
25 | }
26 | if (zhonyas->IsOwned() && (!zhonyas->IsReady() || !Usezhonyas->Enabled()) && ComboW->Enabled() && W->IsReady())
27 | {
28 | W->CastOnPlayer();
29 | }
30 | }
31 | }
32 | }
--------------------------------------------------------------------------------
/D-Vladimir++/Render.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 | #include "Damage.h"
4 |
5 |
6 | int xOffset = 10;
7 | int yOffset = 15;
8 | int Width = 103;
9 | int Height = 8;
10 | PLUGIN_EVENT(void) OnRender()
11 | {
12 | Vec4 color;
13 | Vec4 colorb;
14 | Vec4 colore;
15 | Vec4 colorr;
16 | qRangeColor->GetColor(&color);
17 | eRangeColor->GetColor(&colore);
18 | rRangeColor->GetColor(&colorr);
19 | bRangeColor->GetColor(&colorb);
20 | /*if (DrawCombomode->Enabled())
21 | {
22 | Vec3 worldToScreen;
23 | GGame->Projection(myHero->GetPosition(), &worldToScreen);
24 |
25 | if (mode == 0)
26 | {
27 | GRender->DrawTextW(Vec2(worldToScreen.x, worldToScreen.y), Vec4(255, 255, 0, 255), "Combo:Q-R");
28 | }
29 | if (mode == 1)
30 | {
31 | GRender->DrawTextW(Vec2(worldToScreen.x, worldToScreen.y), Vec4(255, 255, 0, 255), "Combo:R-Q");
32 | }
33 | }*/
34 | if(Burstdraw->Enabled())
35 | {
36 | if(Flash->IsReady() && UseFlash->Enabled())
37 | {
38 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colorb, 1300);
39 | }
40 | if (!Flash->IsReady() || !UseFlash->Enabled())
41 | {
42 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colorb, 800);
43 | }
44 | }
45 | if (DrawReady->Enabled())
46 | {
47 | if (Q->IsReady() && DrawQ->Enabled())
48 | {
49 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), color, Q->Range());
50 | }
51 |
52 | if (E->IsReady() && DrawE->Enabled())
53 | {
54 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colore, E->Range());
55 | }
56 | if (R->IsReady() && DrawR->Enabled())
57 | {
58 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colorr, R->Range());
59 | }
60 | }
61 | else
62 | {
63 | if (DrawQ->Enabled())
64 | {
65 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), color, Q->Range());
66 | }
67 |
68 | if (DrawE->Enabled())
69 | {
70 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colore, E->Range());
71 | }
72 | if (DrawR->Enabled())
73 | {
74 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colorr, R->Range());
75 | }
76 | }
77 |
78 | if (Drawhealthbar->Enabled()) //Damage.Healthbar"))
79 | {
80 | for (auto enemy : GEntityList->GetAllHeros(false, true))
81 | {
82 | Vec4 colorheal;
83 | healRangeColor->GetColor(&colorheal);
84 | Vec2 barPos = Vec2();
85 | if (enemy->GetHPBarPosition(barPos))
86 | {
87 | auto Damage = TotalDamage(enemy);
88 | float percentHealthAfterDamage = max(0, enemy->GetHealth() - float(Damage)) / enemy->GetMaxHealth();
89 | float yPos = barPos.y + yOffset;
90 | float xPosDamage = (barPos.x + xOffset) + Width * percentHealthAfterDamage;
91 | float xPosCurrentHp = barPos.x + xOffset + Width * (enemy->GetHealth() / enemy->GetMaxHealth());
92 | if (!enemy->IsDead() && enemy->IsValidTarget())
93 | {
94 | float differenceInHP = xPosCurrentHp - xPosDamage;
95 | float pos1 = barPos.x + 9 + (107 * percentHealthAfterDamage);
96 |
97 | for (int i = 0; i < differenceInHP; i++)
98 | {
99 | GRender->DrawLine(Vec2(pos1 + i, yPos), Vec2(pos1 + i, yPos + Height), colorheal);
100 | }
101 | if (!enemy->IsVisible())
102 | {
103 |
104 | }
105 | }
106 | }
107 | }
108 | }
109 | }
--------------------------------------------------------------------------------
/D-Vladimir++/Spells.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Menu.h"
3 |
4 | inline void LoadSpells()
5 | {
6 | Q = GPluginSDK->CreateSpell2(kSlotQ, kTargetCast, false, false, static_cast(kCollidesWithNothing));
7 | Q->SetOverrideRange(650);
8 |
9 | W = GPluginSDK->CreateSpell2(kSlotW, kTargetCast, false, false, static_cast(kCollidesWithNothing));
10 |
11 | E = GPluginSDK->CreateSpell2(kSlotE, kCircleCast, false, false, static_cast(kCollidesWithYasuoWall));
12 | E->SetOverrideRange(610);
13 | E->SetCharged(610, 610, 1.4);
14 |
15 | R = GPluginSDK->CreateSpell2(kSlotR, kCircleCast, false, false, static_cast(kCollidesWithNothing));
16 | R->SetSkillshot(0.25f, 175.f, 700.f, 700.f);
17 |
18 | auto slot1 = GPluginSDK->GetEntityList()->Player()->GetSpellName(kSummonerSlot1);
19 | auto slot2 = GPluginSDK->GetEntityList()->Player()->GetSpellName(kSummonerSlot2);
20 |
21 | if (strcmp(slot1, "SummonerFlash") == 0)
22 | {
23 | Flash = GPluginSDK->CreateSpell2(kSummonerSlot1, kCircleCast, false, false, kCollidesWithNothing);
24 | Flash->SetOverrideRange(425.f);
25 | }
26 | if (strcmp(slot2, "SummonerFlash") == 0)
27 | {
28 | Flash = GPluginSDK->CreateSpell2(kSummonerSlot2, kCircleCast, false, false, kCollidesWithNothing);
29 | Flash->SetOverrideRange(425.f);
30 | }
31 | else Flash == nullptr;
32 |
33 | if (strcmp(slot1, "SummonerDot") == 0)
34 | {
35 | Ignite = GPluginSDK->CreateSpell(kSummonerSlot1, 600);
36 | }
37 | if (strcmp(slot2, "SummonerDot") == 0)
38 | {
39 | Ignite = GPluginSDK->CreateSpell(kSummonerSlot2, 600);
40 | }
41 | else Ignite == nullptr;
42 | if (strcmp(slot1, "SummonerSmite") == 0)
43 | {
44 | smite = GPluginSDK->CreateSpell(kSummonerSlot1, 570);
45 | }
46 | if (strcmp(slot2, "SummonerSmite") == 0)
47 | {
48 | smite = GPluginSDK->CreateSpell(kSummonerSlot2, 570);
49 | }
50 | else smite == nullptr;
51 |
52 | zhonyas = GPluginSDK->CreateItemForId(3157, 0);
53 | blade = GPluginSDK->CreateItemForId(3153, 550);
54 | Cutlass = GPluginSDK->CreateItemForId(3144, 550);
55 | Hextech = GPluginSDK->CreateItemForId(3146, 600);
56 | protobelt = GPluginSDK->CreateItemForId(3152, 600);
57 | HealthPot = GPluginSDK->CreateItemForId(2003, 0);
58 | CorruptPot = GPluginSDK->CreateItemForId(2033, 0);
59 | RefillPot = GPluginSDK->CreateItemForId(2031, 0);
60 | Biscuit = GPluginSDK->CreateItemForId(2010, 0);
61 | hunter = GPluginSDK->CreateItemForId(2032, 0);
62 | }
63 |
--------------------------------------------------------------------------------
/D-Xerath++/Combo.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Damage.h"
3 | #include "Menu.h"
4 |
5 |
6 |
7 | inline void Combo()
8 | {
9 | auto Enemy = GTargetSelector->FindTarget(QuickestKill, SpellDamage, 1600);
10 | if (Enemy != nullptr && !Enemy->IsDead())
11 | {
12 | if (Ignite != nullptr)
13 | {
14 | if (UseIgnitecombo->Enabled() && Ignite->IsReady())
15 | {
16 | if (Enemy->IsValidTarget(myHero, Ignite->Range()))
17 | {
18 | if (Enemy->GetHealth() <= 1.4 * TotalDamage(Enemy))
19 | {
20 | Ignite->CastOnUnit(Enemy);
21 | return;
22 | }
23 | }
24 | }
25 | }
26 | if (ComboQ->Enabled() && Q->IsReady())
27 | {
28 | if (myHero->IsValidTarget(Enemy, Q->Range()))
29 | {
30 | QCast(Enemy);
31 | return;
32 | }
33 | }
34 | if (ComboW->Enabled() && W->IsReady() && !UltiIsUp)
35 | {
36 | if (Enemy->IsValidTarget(myHero, W->Range()))
37 | {
38 | MalachiteCast(W, Enemy, kHitChanceHigh);
39 | }
40 | }
41 | if (ComboE->Enabled() && E->IsReady() && !UltiIsUp)
42 | {
43 | if (Enemy->IsValidTarget(myHero, E->Range()))
44 | {
45 | MalachiteCast(E, Enemy, kHitChanceHigh);
46 | }
47 | }
48 | if (ComboR->Enabled() && R->IsReady())
49 | {
50 | if (Enemy->IsValidTarget(myHero, R->Range()))
51 | {
52 | if (!UltiIsUp && Enemy->GetHealth() < TotalDamage(Enemy))
53 | {
54 | R->CastOnPlayer();
55 | }
56 |
57 | if (UltiIsUp)
58 | {
59 | if (bluetinket->IsOwned() && bluetinket->IsReady())
60 | {
61 | if (myHero->IsValidTarget(Enemy, 4000) && !Enemy->IsVisible())
62 | {
63 | bluetinket->CastOnPosition(GGame->CursorPosition());
64 | }
65 | }
66 | Rcast(Enemy);
67 | }
68 | }
69 | }
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/D-Xerath++/D-Xerath++.cpp:
--------------------------------------------------------------------------------
1 |
2 |
3 | #include "PluginSDK.h"
4 | #include "Spells.h"
5 | #include "Menu.h"
6 | #include "Render.h"
7 | #include "Potions.h"
8 | #include "Combo.h"
9 | #include "OnCreate_OnDelete.h"
10 |
11 |
12 |
13 | PluginSetup("D-Xerath++");
14 |
15 | static void CheatRito()
16 | {
17 | if (ChangeSkin->Enabled())
18 | {
19 | if (myHero->GetSkinId() != SkinChangeid->GetInteger())
20 | {
21 | myHero->SetSkinId(SkinChangeid->GetInteger());
22 | }
23 | }
24 | else
25 | {
26 | myHero->SetSkinId(myHero->GetSkinId());
27 | }
28 | }
29 | /*PLUGIN_EVENT(void) OnGapcloser(GapCloserSpell const& args)
30 | {
31 | if (args.Source->IsEnemy(myHero) && args.Source->IsHero())
32 | {
33 | if (AutoEGapcloser->Enabled() && E->IsReady() && !args.IsTargeted && myHero->IsValidTarget(args.Source, 250))
34 | {
35 | E->CastOnPosition(args.Source->ServerPosition());
36 | GOrbwalking->ResetAA();
37 | }
38 | }
39 | }*/
40 |
41 |
42 | PLUGIN_EVENT(void) OnGameUpdate()
43 | {
44 |
45 | if (GGame->IsChatOpen() || myHero->IsDead() || myHero->IsRecalling()) return;
46 | if (myHero->GetSpellLevel(kSlotR) > 0)
47 | {
48 | float range = 2000 + myHero->GetSpellLevel(kSlotR) * 1200;
49 | R->SetOverrideRange(range);
50 | }
51 | if (Q->IsCharging() || UltiIsUp)
52 | {
53 | GOrbwalking->SetAttacksAllowed(false);
54 | }
55 | else GOrbwalking->SetAttacksAllowed(true);
56 | if (GOrbwalking->GetOrbwalkingMode() == kModeCombo)
57 | {
58 | Combo();
59 | }
60 |
61 | if (GOrbwalking->GetOrbwalkingMode() == kModeMixed)
62 | {
63 | //Harass();
64 | }
65 | if (GOrbwalking->GetOrbwalkingMode() == kModeLaneClear)
66 | {
67 | //laneclear();
68 | //jungleclear();
69 | }
70 |
71 | //killsteal();
72 | CheatRito();
73 | Usepotion();
74 | }
75 |
76 | PLUGIN_API void OnLoad(IPluginSDK* PluginSDK)
77 | {
78 | PluginSDKSetup(PluginSDK);
79 | Menu();
80 | LoadSpells();
81 | myHero = GEntityList->Player();
82 |
83 | GEventManager->AddEventHandler(kEventOnGameUpdate, OnGameUpdate);
84 | GEventManager->AddEventHandler(kEventOnRender, OnRender);
85 | //GEventManager->AddEventHandler(kEventOnBuffAdd, OnBuffAdd);
86 | //GEventManager->AddEventHandler(kEventOnSpellCast, OnProcessCast);
87 | GEventManager->AddEventHandler(kEventOnCreateObject, OnCreateObject);
88 | GEventManager->AddEventHandler(kEventOnDestroyObject, OnDestroyObject);
89 | //GEventManager->AddEventHandler(kEventOnDoCast, OnCast);
90 |
91 | if (strcmp(GEntityList->Player()->ChampionName(), "Xerath") == 0)
92 | {
93 | GRender->NotificationEx(Vec4(220, 20, 60, 255), 2, true, true, "D-Xerath : Loaded!");
94 | }
95 | else
96 | {
97 | GRender->NotificationEx(Vec4(220, 20, 60, 255), 2, true, true, "You are not playing Xerath...");
98 | }
99 | }
100 |
101 |
102 | PLUGIN_API void OnUnload()
103 | {
104 | MainMenu->Remove();
105 |
106 | GEventManager->RemoveEventHandler(kEventOnGameUpdate, OnGameUpdate);
107 | GEventManager->RemoveEventHandler(kEventOnRender, OnRender);
108 | //GEventManager->RemoveEventHandler(kEventOnBuffAdd, OnBuffAdd);
109 | //GEventManager->RemoveEventHandler(kEventOnSpellCast, OnProcessCast);
110 | GEventManager->RemoveEventHandler(kEventOnCreateObject, OnCreateObject);
111 | GEventManager->RemoveEventHandler(kEventOnDestroyObject, OnDestroyObject);
112 | //GEventManager->RemoveEventHandler(kEventOnDoCast, OnCast);
113 |
114 | }
--------------------------------------------------------------------------------
/D-Xerath++/D-Xerath++.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hh;hpp;hxx;hm;inl;inc;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 |
18 |
19 | Header Files
20 |
21 |
22 | Header Files
23 |
24 |
25 | Header Files
26 |
27 |
28 | Header Files
29 |
30 |
31 | Header Files
32 |
33 |
34 | Header Files
35 |
36 |
37 | Header Files
38 |
39 |
40 | Header Files
41 |
42 |
43 | Header Files
44 |
45 |
46 | Header Files
47 |
48 |
49 | Header Files
50 |
51 |
52 | Header Files
53 |
54 |
55 | Header Files
56 |
57 |
58 |
59 |
60 | Source Files
61 |
62 |
63 |
--------------------------------------------------------------------------------
/D-Xerath++/Damage.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 |
4 | inline float TotalDamage(IUnit* target)
5 | {
6 | if (target == nullptr || target->IsDead())
7 | {
8 | return 0;
9 | }
10 |
11 | auto damage = 0;
12 |
13 | if (Q->IsReady())
14 | {
15 | damage += GDamage->GetSpellDamage(myHero, target, kSlotQ);
16 | }
17 |
18 | if (W->IsReady())
19 | {
20 | damage += GDamage->GetSpellDamage(myHero, target, kSlotW);
21 | }
22 | if (E->IsReady())
23 | {
24 | damage += GDamage->GetSpellDamage(myHero, target, kSlotE);
25 | }
26 | if (R->IsReady())
27 | {
28 | damage += RemaingAmmo * GDamage->GetSpellDamage(myHero, target, kSlotR);
29 | //damage +=Rdamage(target);
30 | }
31 | damage += 2 * GDamage->GetAutoAttackDamage(myHero, target, true);
32 |
33 | if (Ignite != nullptr&& Ignite->IsReady())
34 | {
35 | damage += GDamage->GetSpellDamage(myHero, target, kSummonerSpellIgnite);
36 | }
37 | if (target->HasBuff("GarenW"))
38 | {
39 | damage = damage * 0.7f;
40 | }
41 |
42 | if (target->HasBuff("ferocioushowl"))
43 | {
44 | damage = damage * 0.7f;
45 | }
46 |
47 | if (target->HasBuff("BlitzcrankManaBarrierCD") && target->HasBuff("ManaBarrier"))
48 | {
49 | damage -= target->GetMana() / 2;
50 | }
51 | if (myHero->HasBuff("summonerexhaust"))
52 | {
53 | damage *= 0.6f;
54 | }
55 |
56 | if (GEntityList->Player()->HasBuff("LichBane"))
57 | {
58 | damage += myHero->TotalPhysicalDamage() *0.75 + myHero->MagicDamage() * 0.5;
59 | }
60 |
61 | return static_cast(damage);
62 | }
63 |
--------------------------------------------------------------------------------
/D-Xerath++/OnCreate_OnDelete.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 |
4 | PLUGIN_EVENT(void) OnCreateObject(IUnit* obj)
5 | {
6 |
7 | if (obj != nullptr)
8 | {
9 | if (strcmp(obj->GetObjectName(), "Xerath_Base_R_buf_range1_green.troy") == 0)
10 | {
11 | UltiIsUp = true;
12 | }
13 | if (strcmp(obj->GetObjectName(), "Xerath_Base_R_aoe_miss.troy") == 0)
14 | {
15 | RemaingAmmo = ultiammo() - 1;
16 | RCastTime = GGame->TickCount();
17 | }
18 | if (strcmp(obj->GetObjectName(), "Global_Trinket_Blue_ward.troy") == 0)
19 | {
20 | trinkettime = GGame->TickCount();
21 | }
22 |
23 | }
24 | }
25 | PLUGIN_EVENT(void) OnDestroyObject(IUnit* obj)
26 | {
27 | if (obj != nullptr)
28 | {
29 | if (strcmp(obj->GetObjectName(), "Xerath_Base_R_buf_range1_green.troy") == 0)
30 | {
31 | UltiIsUp = false;
32 | }
33 |
34 | }
35 | }
--------------------------------------------------------------------------------
/D-Xerath++/OnProcessSpellCast.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 |
4 | PLUGIN_EVENT(void) OnProcessSpellCast(CastedSpell const& spell)
5 | {
6 | auto target = GTargetSelector->FindTarget(QuickestKill, PhysicalDamage, 900);
7 |
8 | if (spell.Caster_ == myHero)
9 | {
10 | if (std::string(spell.Name_) == "XerathLocusPulse")
11 | {
12 | RCastTime = GGame->TickCount();
13 | }
14 | if (std::string(spell.Name_) == "SummonerFlash")
15 | {
16 | RDashTime = GGame->TickCount();
17 | }
18 | }
19 | if (zhonyas->IsOwned() && zhonyas->IsReady() || W->IsReady())
20 | {
21 |
22 | if (!spell.Caster_->IsEnemy(myHero) && !myHero->IsValidTarget(spell.Caster_, 1200))
23 | return;
24 | if (!spell.Caster_->IsHero() || spell.Caster_ == nullptr)
25 | return;
26 |
27 | if (spell.Target_ != myHero)
28 | return;
29 |
30 | if (GSpellData->IsAutoAttack(spell.Data_))
31 | return;
32 |
33 | if (GSpellData->GetBaseDamage(spell.Data_) > 0.f)
34 | {
35 |
36 | auto slot = GSpellData->GetSlot(spell.Data_);
37 | if (slot != kSlotUnknown)
38 | {
39 | auto spelldmg = GDamage->GetSpellDamage(spell.Caster_, spell.Target_, slot) * 2;
40 | if (CountEnemiesInRange(Q->Range()) > 0 && (myHero->GetHealth() < spelldmg || myHero->HealthPercent() < 4))
41 | {
42 | if (Usezhonyas->Enabled() && zhonyas->IsOwned() && zhonyas->IsReady())
43 | {
44 | zhonyas->CastOnPlayer();
45 | return;
46 | }
47 | }
48 | }
49 | }
50 | }
51 | }
52 |
53 | PLUGIN_EVENT(void) OnCast(CastedSpell const& spell)
54 | {
55 | if (zhonyas->IsOwned() && zhonyas->IsReady() || W->IsReady())
56 | {
57 | if (!spell.Caster_->IsEnemy(myHero) && !myHero->IsValidTarget(spell.Caster_, 1200))
58 | return;
59 | if (!spell.Caster_->IsHero() || !spell.Caster_->IsTurret() || spell.Caster_ == nullptr)
60 | return;
61 |
62 | if (spell.Target_ != myHero)
63 | return;
64 | if (!GSpellData->IsAutoAttack(spell.Data_))
65 | return;
66 |
67 | auto attackdmg = GDamage->GetAutoAttackDamage(spell.Caster_, spell.Target_, true) * 2;
68 | if (CountEnemiesInRange(Q->Range()) > 0 && (myHero->HealthPercent() < 4 || myHero->GetHealth() < attackdmg))
69 | {
70 | if (Usezhonyas->Enabled() && zhonyas->IsOwned() && zhonyas->IsReady())
71 | {
72 | zhonyas->CastOnPlayer();
73 | return;
74 | }
75 | }
76 | }
77 | }
--------------------------------------------------------------------------------
/D-Xerath++/Potions.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 |
4 | inline void Usepotion()
5 | {
6 | if (usepotion->Enabled() && !myHero->IsRecalling() && !myHero->IsDead())
7 | {
8 | if (CountEnemiesInRange(2000) > 0)
9 | {
10 | bool usepotions = myHero->GetHealth() < myHero->GetMaxHealth()* usepotionhpper->GetInteger() / 100;
11 | if (usepotions)
12 | {
13 | if (myHero->GetBuffDataByName("ItemDarkCrystalFlask") || myHero->GetBuffDataByName("ItemMiniRegenPotion")
14 | || myHero->GetBuffDataByName("ItemCrystalFlask") || myHero->GetBuffDataByName("RegenerationPotion") || myHero->HasBuff("ItemCrystalFlaskJungle"))
15 | return;
16 |
17 | if (Biscuit->IsOwned() && !InFountain(myHero) && Biscuit->IsReady())
18 | {
19 | Biscuit->CastOnPlayer();
20 | }
21 | else if (HealthPot->IsOwned() && !InFountain(myHero) && HealthPot->IsReady())
22 | {
23 | HealthPot->CastOnPlayer();
24 | }
25 | else if (CorruptPot->IsOwned() && CorruptPot->IsReady())
26 | {
27 | CorruptPot->CastOnPlayer();
28 | }
29 | else if (RefillPot->IsOwned() && RefillPot->IsReady())
30 | {
31 | RefillPot->CastOnPlayer();
32 | }
33 | else if (hunter->IsOwned() && hunter->IsReady())
34 | {
35 | hunter->CastOnPlayer();
36 | }
37 | }
38 | }
39 | }
40 | }
--------------------------------------------------------------------------------
/D-Xerath++/Render.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Extension.h"
3 | #include "Damage.h"
4 |
5 |
6 | int xOffset = 10;
7 | int yOffset = 15;
8 | int Width = 103;
9 | int Height = 8;
10 | PLUGIN_EVENT(void) OnRender()
11 | {
12 | Vec4 color;
13 | Vec4 colorw;
14 | Vec4 colore;
15 | Vec4 colorr;
16 | qRangeColor->GetColor(&color);
17 | wRangeColor->GetColor(&colorw);
18 | eRangeColor->GetColor(&colore);
19 | rRangeColor->GetColor(&colorr);
20 |
21 | if (DrawReady->Enabled())
22 | {
23 | if (Q->IsReady() && DrawQ->Enabled())
24 | {
25 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), color, Q->Range());
26 | }
27 | if (W->IsReady() && DrawW->Enabled())
28 | {
29 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colorw, W->Range());
30 | }
31 | if (E->IsReady() && DrawE->Enabled())
32 | {
33 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colore, E->Range());
34 | }
35 | if (R->IsReady() && DrawR->Enabled())
36 | {
37 | GPluginSDK->GetRenderer()->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colorr, R->Range());
38 | //GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colorr, R->Range());
39 | }
40 | }
41 | else
42 | {
43 | if (DrawQ->Enabled())
44 | {
45 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), color, Q->Range());
46 | }
47 | if (DrawW->Enabled())
48 | {
49 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colorw, W->Range());
50 | }
51 | if (DrawE->Enabled())
52 | {
53 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colore, E->Range());
54 | }
55 | if (DrawR->Enabled())
56 | {
57 | GRender->DrawOutlinedCircle(GEntityList->Player()->GetPosition(), colorr, R->Range());
58 | }
59 | }
60 |
61 | if (Drawhealthbar->Enabled()) //Damage.Healthbar"))
62 | {
63 | for (auto enemy : GEntityList->GetAllHeros(false, true))
64 | {
65 | Vec4 colorheal;
66 | healRangeColor->GetColor(&colorheal);
67 | Vec2 barPos = Vec2();
68 | if (enemy->GetHPBarPosition(barPos))
69 | {
70 | auto Damage = TotalDamage(enemy);
71 | float percentHealthAfterDamage = max(0, enemy->GetHealth() - float(Damage)) / enemy->GetMaxHealth();
72 | float yPos = barPos.y + yOffset;
73 | float xPosDamage = (barPos.x + xOffset) + Width * percentHealthAfterDamage;
74 | float xPosCurrentHp = barPos.x + xOffset + Width * (enemy->GetHealth() / enemy->GetMaxHealth());
75 | if (!enemy->IsDead() && enemy->IsValidTarget())
76 | {
77 | float differenceInHP = xPosCurrentHp - xPosDamage;
78 | float pos1 = barPos.x + 9 + (107 * percentHealthAfterDamage);
79 |
80 | for (int i = 0; i < differenceInHP; i++)
81 | {
82 | GRender->DrawLine(Vec2(pos1 + i, yPos), Vec2(pos1 + i, yPos + Height), colorheal);
83 | }
84 | if (!enemy->IsVisible())
85 | {
86 |
87 | }
88 | }
89 | }
90 | }
91 | }
92 | }
--------------------------------------------------------------------------------
/D-Xerath++/Spells.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Menu.h"
3 |
4 | inline void LoadSpells()
5 | {
6 |
7 |
8 | //WCenter = new Spell(SpellSlot.W, 1000f);
9 | //WCenter.SetSkillshot(0.7f, 50f, float.MaxValue, false, SkillshotType.SkillshotCircle);
10 |
11 | Q = GPluginSDK->CreateSpell2(kSlotQ, kLineCast, true, true, static_cast(kCollidesWithYasuoWall));
12 | Q->SetSkillshot(0.6f, 100.f, FLT_MAX, 1600.f);
13 | Q->SetCharged(750, 1550, 1.5);
14 |
15 | W = GPluginSDK->CreateSpell2(kSlotW, kCircleCast, false, true, static_cast(kCollidesWithNothing));
16 | W->SetSkillshot(0.7f, 200.f, FLT_MAX, 1000.f);
17 |
18 | E = GPluginSDK->CreateSpell2(kSlotE, kLineCast, true, false, static_cast(kCollidesWithYasuoWall | kCollidesWithHeroes | kCollidesWithMinions));
19 | E->SetSkillshot(0.2f, 60.f, 1400.f, 1150.f);
20 |
21 | R = GPluginSDK->CreateSpell2(kSlotR, kCircleCast, false, false, static_cast(kCollidesWithNothing));
22 | R->SetSkillshot(0.7f, 120.f, FLT_MAX, 2950.f);
23 |
24 | auto slot1 = GPluginSDK->GetEntityList()->Player()->GetSpellName(kSummonerSlot1);
25 | auto slot2 = GPluginSDK->GetEntityList()->Player()->GetSpellName(kSummonerSlot2);
26 |
27 | if (strcmp(slot1, "SummonerDot") == 0)
28 | {
29 | Ignite = GPluginSDK->CreateSpell2(kSummonerSlot1, kCircleCast, false, false, kCollidesWithNothing);
30 | Ignite->SetOverrideRange(600.f);
31 | }
32 |
33 | if (strcmp(slot2, "SummonerDot") == 0)
34 | {
35 | Ignite = GPluginSDK->CreateSpell2(kSummonerSlot2, kCircleCast, false, false, kCollidesWithNothing);
36 | Ignite->SetOverrideRange(600.f);
37 | }
38 | bluetinket = GPluginSDK->CreateItemForId(3363, 4000);
39 | Titanic_Hydra = GPluginSDK->CreateItemForId(3748, 385);
40 | Ravenous_Hydra = GPluginSDK->CreateItemForId(3074, 385);
41 | Tiamat = GPluginSDK->CreateItemForId(3077, 385);
42 | Youmuu = GPluginSDK->CreateItemForId(3142, 0);
43 | blade = GPluginSDK->CreateItemForId(3153, 550);
44 | Cutlass = GPluginSDK->CreateItemForId(3144, 550);
45 | Quicksilver = GPluginSDK->CreateItemForId(3140, 0);
46 | Mercurial = GPluginSDK->CreateItemForId(3139, 600);
47 |
48 | HealthPot = GPluginSDK->CreateItemForId(2003, 0);
49 | CorruptPot = GPluginSDK->CreateItemForId(2033, 0);
50 | RefillPot = GPluginSDK->CreateItemForId(2031, 0);
51 | Biscuit = GPluginSDK->CreateItemForId(2010, 0);
52 | hunter = GPluginSDK->CreateItemForId(2032, 0);
53 | }
54 |
--------------------------------------------------------------------------------
/D-jarvan++/D-jarvan++.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hh;hpp;hxx;hm;inl;inc;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 |
18 |
19 | Source Files
20 |
21 |
22 |
--------------------------------------------------------------------------------
/L++ SDK/L++ SDK.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hh;hpp;hxx;hm;inl;inc;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 |
18 |
19 | Source Files
20 |
21 |
22 |
23 |
24 | Resource Files
25 |
26 |
27 | Resource Files
28 |
29 |
30 | Resource Files
31 |
32 |
33 | Resource Files
34 |
35 |
36 |
--------------------------------------------------------------------------------
/L++ SDK/PluginSDK.cpp:
--------------------------------------------------------------------------------
1 | #include "PluginSDK.h"
2 |
3 | IPluginSDK* GPluginSDK = nullptr;
4 | IEventManager* GEventManager = nullptr;
5 | IRender* GRender = nullptr;
6 | IEntityList* GEntityList = nullptr;
7 | IGame* GGame = nullptr;
8 | IDamage* GDamage = nullptr;
9 | IPrediction* GPrediction = nullptr;
10 | IHealthPrediction* GHealthPrediction = nullptr;
11 | ITargetSelector* GTargetSelector = nullptr;
12 | IOrbwalking* GOrbwalking = nullptr;
13 | ISpellData* GSpellData = nullptr;
14 | IBuffData* GBuffData = nullptr;
15 | IMissileData* GMissileData = nullptr;
16 | INavMesh* GNavMesh = nullptr;
17 | IUtility* GUtility = nullptr;
--------------------------------------------------------------------------------
/Resource/AioVersion:
--------------------------------------------------------------------------------
1 | 2.0
2 |
--------------------------------------------------------------------------------
/Resource/Diabathsaioingame.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/diabaths/LeagueC-Plus-Plus/213c380aa57034c9c1459e64adbc2623f51d636c/Resource/Diabathsaioingame.png
--------------------------------------------------------------------------------
/Spred/Collision.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 |
4 | enum class CollisionFlags
5 | {
6 | None = 0,
7 | Minions = 1,
8 | AllyChampions = 2,
9 | EnemyChampions = 4,
10 | Wall = 8,
11 | YasuoWall = 16,
12 | };
13 |
14 | struct CollisionResult
15 | {
16 | std::vector units_;
17 | CollisionFlags objects_;
18 | };
19 |
20 | class ICollision
21 | {
22 | public:
23 | virtual bool CheckCollision(const Vec2& from, const Vec2& to, float width, float delay, float missile_speed, bool check_minion = true, bool check_enemy = false, bool check_yasuowall = true, bool check_ally = false, bool check_wall = false, bool is_arc = false) = 0;
24 | virtual bool CheckMinionCollision(const Vec2& from, const Vec2& to, float width, float delay, float missile_speed = 0, bool is_arc = false) = 0;
25 | virtual bool CheckEnemyHeroCollision(const Vec2& from, const Vec2& to, float width, float delay, float missile_speed = 0, bool is_arc = false) = 0;
26 | virtual bool CheckAllyHeroCollision(const Vec2& from, const Vec2& to, float width, float delay, float missile_speed = 0, bool is_arc = false) = 0;
27 | virtual bool CheckWallCollision(const Vec2& from, const Vec2& to) = 0;
28 | virtual bool CheckYasuoWallCollision(const Vec2& from, const Vec2& to, float width, bool is_arc = false) = 0;
29 | virtual CollisionResult GetCollisions(const Vec2& from, const Vec2& to, float range, float width, float delay, float missile_speed = 0, bool is_arc = false) = 0;
30 | };
--------------------------------------------------------------------------------
/Spred/PathTracker.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 | #include
4 |
5 | class IPathTracker
6 | {
7 | public:
8 | virtual uint32_t GetMovImmobileTime(IUnit *hero) = 0;
9 | virtual uint32_t GetLastMovChangeTime(IUnit *hero) = 0;
10 | virtual float GetAvgMovChangeTime(IUnit *hero) = 0;
11 | virtual float GetAvgPathLenght(IUnit *hero) = 0;
12 | virtual float GetLastAngleDiff(IUnit *hero) = 0;
13 | virtual float GetAvgOrbwalkTime(IUnit *hero) = 0;
14 | };
--------------------------------------------------------------------------------
/Spred/ReadMe.txt:
--------------------------------------------------------------------------------
1 | ========================================================================
2 | STATIC LIBRARY : Spred Project Overview
3 | ========================================================================
4 |
5 | AppWizard has created this Spred library project for you.
6 |
7 | No source files were created as part of your project.
8 |
9 |
10 | Spred.vcxproj
11 | This is the main project file for VC++ projects generated using an Application Wizard.
12 | It contains information about the version of Visual C++ that generated the file, and
13 | information about the platforms, configurations, and project features selected with the
14 | Application Wizard.
15 |
16 | Spred.vcxproj.filters
17 | This is the filters file for VC++ projects generated using an Application Wizard.
18 | It contains information about the association between the files in your project
19 | and the filters. This association is used in the IDE to show grouping of files with
20 | similar extensions under a specific node (for e.g. ".cpp" files are associated with the
21 | "Source Files" filter).
22 |
23 | /////////////////////////////////////////////////////////////////////////////
24 | Other notes:
25 |
26 | AppWizard uses "TODO:" comments to indicate parts of the source code you
27 | should add to or customize.
28 |
29 | /////////////////////////////////////////////////////////////////////////////
30 |
--------------------------------------------------------------------------------
/Spred/SPrediction.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 | #include "Collision.h"
4 | #include "PathTracker.h"
5 |
6 | struct PredictionInput;
7 | struct PredictionResult;
8 | struct PredictionAoeResult;
9 |
10 | class ISPrediction
11 | {
12 | public:
13 | virtual bool CastSpell(ISpell2 *spell, IUnit *target, ePredictionChance hit_chance = kHitChanceHigh, bool aoe = false, uint8_t min_hit = 1) = 0;
14 | virtual bool CastArcSpell(ISpell2 *spell, IUnit *target, ePredictionChance hit_chance = kHitChanceHigh, bool aoe = false, uint8_t min_hit = 1) = 0;
15 | virtual bool CastRingSpell(ISpell2 *spell, IUnit *target, float ring_radius, ePredictionChance hit_chance = kHitChanceHigh) = 0;
16 | virtual bool CastVectorSpell(ISpell2 *spell, IUnit *target, ePredictionChance hit_chance = kHitChanceHigh, bool aoe = false, uint8_t min_hit = 1) = 0;
17 | virtual PredictionResult GetPrediction(ISpell2 *spell, IUnit *target) = 0;
18 | virtual Vec2 GetFastUnitPosition(IUnit *target, float delay, float missile_speed = 0, float distance_set = 0, float move_speed = 0) = 0;
19 | virtual Vec2 GetFastUnitPosition(IUnit *target, const Vec3& from, float delay, float missile_speed = 0, float distance_set = 0, float move_speed = 0) = 0;
20 | virtual ICollision& GetCollisionEngine() = 0;
21 | virtual IPathTracker& GetPathTrackerEngine() = 0;
22 | };
23 |
24 | extern ISPrediction *g_SPrediction;
25 |
26 | #define SPredicitonSDKSetup(x) g_SPrediction = reinterpret_cast(x->FindPluginInterface("SPrediction"))
--------------------------------------------------------------------------------
/Spred/Spred.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hh;hpp;hxx;hm;inl;inc;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | Header Files
23 |
24 |
25 | Header Files
26 |
27 |
28 | Header Files
29 |
30 |
31 |
32 |
33 | Source Files
34 |
35 |
36 |
--------------------------------------------------------------------------------