├── .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 | --------------------------------------------------------------------------------