void draw() { if (!enabled || CE_BAD(LOCAL_E) || !LOCAL_E->m_bAlivePlayer()) return; // Loop all players for (int i = 1; i < (*buildings ? MAX_ENTITIES : g_IEngine->GetMaxClients()); i++) { // Get and check player auto ent = ENTITY(i); if (CE_BAD(ent) || !ent->m_bAlivePlayer()) continue; if (*buildings) if (ent->m_Type() != ENTITY_PLAYER && ent->m_Type() != ENTITY_BUILDING) continue; if (ent == LOCAL_E) continue; auto color = getColor(ent); if (!color) continue; Vector out; if (!draw::WorldToScreen(ent->m_vecOrigin(), out)) { // We need to flip on both x and y axis in case m_vecOrigin its not actually on screen out.x = draw::width - out.x; out.y = draw::height - out.y; auto extended = toBorder(draw::width / 2, draw::height / 2, out.x, out.y, 0, 0, draw::width, draw::height); out.x = extended.x; out.y = extended.y; } draw::Line(draw::width / 2, draw::height / 2, out.x - draw::width / 2, out.y - draw::height / 2, *color, 2); } }
bool EffectGlow::ShouldRenderGlow(IClientEntity *entity) { static CachedEntity *ent; if (entity->entindex() < 0) return false; ent = ENTITY(entity->entindex()); if (CE_BAD(ent)) return false; if (ent->m_IDX == LOCAL_E->m_IDX && !glowself) return false; switch (ent->m_Type()) { case ENTITY_BUILDING: if (!buildings) return false; if (!ent->m_bEnemy() && !(teammate_buildings || teammates)) return false; return true; case ENTITY_PLAYER: if (!players) return false; if (!teammates && !ent->m_bEnemy() && playerlist::IsDefault(ent)) return false; if (CE_BYTE(ent, netvar.iLifeState) != LIFE_ALIVE) return false; return true; break; case ENTITY_PROJECTILE: if (!ent->m_bEnemy()) return false; if (stickies && ent->m_iClassID() == CL_CLASS(CTFGrenadePipebombProjectile)) { return true; } break; case ENTITY_GENERIC: const auto &type = ent->m_ItemType(); if (type >= ITEM_HEALTH_SMALL && type <= ITEM_HEALTH_LARGE) { return *medkits; } else if (type >= ITEM_AMMO_SMALL && type <= ITEM_AMMO_LARGE) { return *ammobox; } else if (type >= ITEM_POWERUP_FIRST && type <= ITEM_POWERUP_LAST) { return *show_powerups; // lol? whoever made it return const char *powerups is psmart } break; } return false; }
void Update() { for (int i = 1; i < HIGHEST_ENTITY; i++) { CachedEntity *ent = ENTITY(i); if (CE_BAD(ent)) continue; const model_t *model = RAW_ENT(ent)->GetModel(); bool issandwich = false; if (model && tickcount % 33 == 0) { std::string model_name(g_IModelInfo->GetModelName(model)); if (model_name.find("plate") != std::string::npos) { issandwich = true; Vector abs_orig = RAW_ENT(ent)->GetAbsOrigin(); float movement = prevloc[i].DistTo(abs_orig); logging::Info("Sandwich movement: %f", movement); prevloc[i] = abs_orig; } } if (ent->m_Type() == ENTITY_PROJECTILE || issandwich) { /*int owner = CE_INT(ent, 0x894) & 0xFFF; if (owner != LOCAL_W->m_IDX) continue;*/ if (tickcount % 20 == 0) { Vector abs_orig = RAW_ENT(ent)->GetAbsOrigin(); float movement = prevloc[i].DistTo(abs_orig); logging::Info("movement: %f", movement); prevloc[i] = abs_orig; const Vector &v = ent->m_vecVelocity; const Vector &a = ent->m_vecAcceleration; Vector eav; velocity::EstimateAbsVelocity(RAW_ENT(ent), eav); // logging::Info("%d [%s]: CatVelocity: %.2f %.2f //%.2f //(%.2f) | EAV: %.2f %.2f %.2f (%.2f)", i, // RAW_ENT(ent)->GetClientClass()->GetName(), v.x, v.y, v.z, // v.Length(), a.x, a.y, a.z); logging::Info("%d [%s]: CatVelocity: %.2f %.2f %.2f (%.2f) | " "EAV: %.2f %.2f %.2f (%.2f)", i, RAW_ENT(ent)->GetClientClass()->GetName(), v.x, v.y, v.z, v.Length(), eav.x, eav.y, eav.z, eav.Length()); } } } }
rgba_t EffectGlow::GlowColor(IClientEntity *entity) { static CachedEntity *ent; static IClientEntity *owner; ent = ENTITY(entity->entindex()); if (CE_BAD(ent)) return colors::white; if (ent == hacks::shared::aimbot::CurrentTarget()) return colors::pink; if (re::C_BaseCombatWeapon::IsBaseCombatWeapon(entity)) { owner = re::C_TFWeaponBase::GetOwnerViaInterface(entity); if (owner) { return GlowColor(owner); } } switch (ent->m_Type()) { case ENTITY_BUILDING: if (health) { return colors::Health(ent->m_iHealth(), ent->m_iMaxHealth()); } break; case ENTITY_PLAYER: if (ent->m_IDX == LOCAL_E->m_IDX) { if (rainbow) return colors::RainbowCurrent(); else if (LOCAL_E->m_iTeam() == TEAM_BLU) return colors::blu; else return colors::red; } if (health && playerlist::IsDefault(ent)) { return colors::Health(ent->m_iHealth(), ent->m_iMaxHealth()); } break; } return colors::EntityF(ent); }
wxChar wxHtmlEntitiesParser::GetEntityChar(const wxString& entity) const { unsigned code = 0; if (entity.empty()) return 0; // invalid entity reference if (entity[0] == wxT('#')) { // NB: parsed value is a number, so it's OK to use wx_str(), internal // representation is the same for numbers const wxStringCharType *ent_s = entity.wx_str(); const wxStringCharType *format; if (ent_s[1] == wxS('x') || ent_s[1] == wxS('X')) { format = wxS("%x"); ent_s++; } else format = wxS("%u"); ent_s++; if (wxSscanf(ent_s, format, &code) != 1) code = 0; } else { // store the literals in wx's internal representation (either char* // in UTF-8 or wchar_t*) for best performance: #define ENTITY(name, code) { wxS(name), code } static wxHtmlEntityInfo substitutions[] = { ENTITY("AElig", 198), ENTITY("Aacute", 193), ENTITY("Acirc", 194), ENTITY("Agrave", 192), ENTITY("Alpha", 913), ENTITY("Aring", 197), ENTITY("Atilde", 195), ENTITY("Auml", 196), ENTITY("Beta", 914), ENTITY("Ccedil", 199), ENTITY("Chi", 935), ENTITY("Dagger", 8225), ENTITY("Delta", 916), ENTITY("ETH", 208), ENTITY("Eacute", 201), ENTITY("Ecirc", 202), ENTITY("Egrave", 200), ENTITY("Epsilon", 917), ENTITY("Eta", 919), ENTITY("Euml", 203), ENTITY("Gamma", 915), ENTITY("Iacute", 205), ENTITY("Icirc", 206), ENTITY("Igrave", 204), ENTITY("Iota", 921), ENTITY("Iuml", 207), ENTITY("Kappa", 922), ENTITY("Lambda", 923), ENTITY("Mu", 924), ENTITY("Ntilde", 209), ENTITY("Nu", 925), ENTITY("OElig", 338), ENTITY("Oacute", 211), ENTITY("Ocirc", 212), ENTITY("Ograve", 210), ENTITY("Omega", 937), ENTITY("Omicron", 927), ENTITY("Oslash", 216), ENTITY("Otilde", 213), ENTITY("Ouml", 214), ENTITY("Phi", 934), ENTITY("Pi", 928), ENTITY("Prime", 8243), ENTITY("Psi", 936), ENTITY("Rho", 929), ENTITY("Scaron", 352), ENTITY("Sigma", 931), ENTITY("THORN", 222), ENTITY("Tau", 932), ENTITY("Theta", 920), ENTITY("Uacute", 218), ENTITY("Ucirc", 219), ENTITY("Ugrave", 217), ENTITY("Upsilon", 933), ENTITY("Uuml", 220), ENTITY("Xi", 926), ENTITY("Yacute", 221), ENTITY("Yuml", 376), ENTITY("Zeta", 918), ENTITY("aacute", 225), ENTITY("acirc", 226), ENTITY("acute", 180), ENTITY("aelig", 230), ENTITY("agrave", 224), ENTITY("alefsym", 8501), ENTITY("alpha", 945), ENTITY("amp", 38), ENTITY("and", 8743), ENTITY("ang", 8736), ENTITY("apos", 39), ENTITY("aring", 229), ENTITY("asymp", 8776), ENTITY("atilde", 227), ENTITY("auml", 228), ENTITY("bdquo", 8222), ENTITY("beta", 946), ENTITY("brvbar", 166), ENTITY("bull", 8226), ENTITY("cap", 8745), ENTITY("ccedil", 231), ENTITY("cedil", 184), ENTITY("cent", 162), ENTITY("chi", 967), ENTITY("circ", 710), ENTITY("clubs", 9827), ENTITY("cong", 8773), ENTITY("copy", 169), ENTITY("crarr", 8629), ENTITY("cup", 8746), ENTITY("curren", 164), ENTITY("dArr", 8659), ENTITY("dagger", 8224), ENTITY("darr", 8595), ENTITY("deg", 176), ENTITY("delta", 948), ENTITY("diams", 9830), ENTITY("divide", 247), ENTITY("eacute", 233), ENTITY("ecirc", 234), ENTITY("egrave", 232), ENTITY("empty", 8709), ENTITY("emsp", 8195), ENTITY("ensp", 8194), ENTITY("epsilon", 949), ENTITY("equiv", 8801), ENTITY("eta", 951), ENTITY("eth", 240), ENTITY("euml", 235), ENTITY("euro", 8364), ENTITY("exist", 8707), ENTITY("fnof", 402), ENTITY("forall", 8704), ENTITY("frac12", 189), ENTITY("frac14", 188), ENTITY("frac34", 190), ENTITY("frasl", 8260), ENTITY("gamma", 947), ENTITY("ge", 8805), ENTITY("gt", 62), ENTITY("hArr", 8660), ENTITY("harr", 8596), ENTITY("hearts", 9829), ENTITY("hellip", 8230), ENTITY("iacute", 237), ENTITY("icirc", 238), ENTITY("iexcl", 161), ENTITY("igrave", 236), ENTITY("image", 8465), ENTITY("infin", 8734), ENTITY("int", 8747), ENTITY("iota", 953), ENTITY("iquest", 191), ENTITY("isin", 8712), ENTITY("iuml", 239), ENTITY("kappa", 954), ENTITY("lArr", 8656), ENTITY("lambda", 955), ENTITY("lang", 9001), ENTITY("laquo", 171), ENTITY("larr", 8592), ENTITY("lceil", 8968), ENTITY("ldquo", 8220), ENTITY("le", 8804), ENTITY("lfloor", 8970), ENTITY("lowast", 8727), ENTITY("loz", 9674), ENTITY("lrm", 8206), ENTITY("lsaquo", 8249), ENTITY("lsquo", 8216), ENTITY("lt", 60), ENTITY("macr", 175), ENTITY("mdash", 8212), ENTITY("micro", 181), ENTITY("middot", 183), ENTITY("minus", 8722), ENTITY("mu", 956), ENTITY("nabla", 8711), ENTITY("nbsp", 160), ENTITY("ndash", 8211), ENTITY("ne", 8800), ENTITY("ni", 8715), ENTITY("not", 172), ENTITY("notin", 8713), ENTITY("nsub", 8836), ENTITY("ntilde", 241), ENTITY("nu", 957), ENTITY("oacute", 243), ENTITY("ocirc", 244), ENTITY("oelig", 339), ENTITY("ograve", 242), ENTITY("oline", 8254), ENTITY("omega", 969), ENTITY("omicron", 959), ENTITY("oplus", 8853), ENTITY("or", 8744), ENTITY("ordf", 170), ENTITY("ordm", 186), ENTITY("oslash", 248), ENTITY("otilde", 245), ENTITY("otimes", 8855), ENTITY("ouml", 246), ENTITY("para", 182), ENTITY("part", 8706), ENTITY("permil", 8240), ENTITY("perp", 8869), ENTITY("phi", 966), ENTITY("pi", 960), ENTITY("piv", 982), ENTITY("plusmn", 177), ENTITY("pound", 163), ENTITY("prime", 8242), ENTITY("prod", 8719), ENTITY("prop", 8733), ENTITY("psi", 968), ENTITY("quot", 34), ENTITY("rArr", 8658), ENTITY("radic", 8730), ENTITY("rang", 9002), ENTITY("raquo", 187), ENTITY("rarr", 8594), ENTITY("rceil", 8969), ENTITY("rdquo", 8221), ENTITY("real", 8476), ENTITY("reg", 174), ENTITY("rfloor", 8971), ENTITY("rho", 961), ENTITY("rlm", 8207), ENTITY("rsaquo", 8250), ENTITY("rsquo", 8217), ENTITY("sbquo", 8218), ENTITY("scaron", 353), ENTITY("sdot", 8901), ENTITY("sect", 167), ENTITY("shy", 173), ENTITY("sigma", 963), ENTITY("sigmaf", 962), ENTITY("sim", 8764), ENTITY("spades", 9824), ENTITY("sub", 8834), ENTITY("sube", 8838), ENTITY("sum", 8721), ENTITY("sup", 8835), ENTITY("sup1", 185), ENTITY("sup2", 178), ENTITY("sup3", 179), ENTITY("supe", 8839), ENTITY("szlig", 223), ENTITY("tau", 964), ENTITY("there4", 8756), ENTITY("theta", 952), ENTITY("thetasym", 977), ENTITY("thinsp", 8201), ENTITY("thorn", 254), ENTITY("tilde", 732), ENTITY("times", 215), ENTITY("trade", 8482), ENTITY("uArr", 8657), ENTITY("uacute", 250), ENTITY("uarr", 8593), ENTITY("ucirc", 251), ENTITY("ugrave", 249), ENTITY("uml", 168), ENTITY("upsih", 978), ENTITY("upsilon", 965), ENTITY("uuml", 252), ENTITY("weierp", 8472), ENTITY("xi", 958), ENTITY("yacute", 253), ENTITY("yen", 165), ENTITY("yuml", 255), ENTITY("zeta", 950), ENTITY("zwj", 8205), ENTITY("zwnj", 8204), {NULL, 0}}; #undef ENTITY static size_t substitutions_cnt = 0; if (substitutions_cnt == 0) while (substitutions[substitutions_cnt].code != 0) substitutions_cnt++; wxHtmlEntityInfo *info; info = (wxHtmlEntityInfo*) bsearch(entity.wx_str(), substitutions, substitutions_cnt, sizeof(wxHtmlEntityInfo), wxHtmlEntityCompare); if (info) code = info->code; } if (code == 0) return 0; else return GetCharForCode(code); }
void Draw() { if (!radar_enabled) return; if (!g_IEngine->IsInGame()) return; if (CE_BAD(LOCAL_E)) return; int x, y; rgba_t outlineclr; std::vector<CachedEntity *> enemies{}; CachedEntity *ent; x = (int) radar_x; y = (int) radar_y; int radar_size = *size; int half_size = radar_size / 2; outlineclr = GUIColor(); draw::Rectangle(x, y, radar_size, radar_size, colors::Transparent(colors::black, 0.4f)); draw::RectangleOutlined(x, y, radar_size, radar_size, outlineclr, 0.5f); if (enemies_over_teammates) enemies.clear(); std::vector<CachedEntity *> sentries; for (int i = 1; i < HIGHEST_ENTITY; i++) { ent = ENTITY(i); if (CE_BAD(ent)) continue; if (!ent->m_bAlivePlayer()) continue; if (i == g_IEngine->GetLocalPlayer()) continue; if (!show_teammates && ent->m_Type() == ENTITY_PLAYER && !ent->m_bEnemy()) continue; if (ent->m_iClassID() == CL_CLASS(CObjectSentrygun)) sentries.push_back(ent); else if (!enemies_over_teammates || !show_teammates || ent->m_Type() != ENTITY_PLAYER) DrawEntity(x, y, ent); else if (ent->m_bEnemy()) enemies.push_back(ent); else DrawEntity(x, y, ent); } if (enemies_over_teammates && show_teammates) for (auto enemy : enemies) DrawEntity(x, y, enemy); for (auto Sentry : sentries) DrawEntity(x, y, Sentry); if (CE_GOOD(LOCAL_E)) { DrawEntity(x, y, LOCAL_E); const auto &wtr = WorldToRadar(g_pLocalPlayer->v_Origin.x, g_pLocalPlayer->v_Origin.y); if (!use_icons) draw::RectangleOutlined(x + wtr.first, y + wtr.second, int(icon_size), int(icon_size), GUIColor(), 0.5f); } draw::Line(x + half_size, y + half_size / 2, 0, half_size, colors::Transparent(GUIColor(), 0.4f), 0.5f); draw::Line(x + half_size / 2, y + half_size, half_size, 0, colors::Transparent(GUIColor(), 0.4f), 0.5f); }