Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "WarbandAutoblock.h"
- #include "DebugMenu.h"
- #include "GameTimer.h"
- #include "Settings.h"
- WarbandAutoblock::WarbandAutoblock() {
- }
- WarbandAutoblock::~WarbandAutoblock() {
- }
- wb::attackPhase lastEnemyPhase = wb::attackPhase::ap_none;
- void WarbandAutoblock::autoBlock(wb::agent* localPlayer) {
- auto enemy = EntityList::getClosestAgentWithinZone(localPlayer, 10);
- if (enemy != nullptr) {
- wb::attackPhase enemyPhase;
- wb::attackType enemyAction;
- enemy->getMeleeAttackData(enemyPhase, enemyAction);
- //autoblock
- //if (isKeyHeld(0xDD8718, 7)) {
- if (enemyPhase == wb::attackPhase::ap_ready || enemyPhase == wb::attackPhase::ap_release) {
- switch (enemyAction) {
- case wb::attackType::at_overswing:
- localPlayer->control.actions_2 = 0x8000;
- break;
- case wb::attackType::at_swing_left:
- localPlayer->control.actions_2 = 0x2000;
- break;
- case wb::attackType::at_swing_right:
- localPlayer->control.actions_2 = 0x4000;
- break;
- case wb::attackType::at_thrust:
- localPlayer->control.actions_2 = 0x10000;
- break;
- }
- localPlayer->control.actions_2 |= movementFlag(localPlayer);
- lastEnemyPhase = enemyPhase;
- }
- else {
- localPlayer->control.actions_2 = movementFlag(localPlayer);
- }
- /*}*/
- }
- }
- int WarbandAutoblock::movementFlag(wb::agent* localPlayer) {
- int result = 0;
- int game_key = 0xDD8718;
- if (localPlayer->isMounted()) {
- if (isKeyHeld(game_key, 0) && !isKeyHeld(game_key, 1))
- result |= 0x10u;
- if (isKeyHeld(game_key, 1) && !isKeyHeld(game_key, 0))
- result |= 0x20;
- if (isKeyHeld(game_key, 3) && !isKeyHeld(game_key, 2))
- result |= 0x40;
- if (isKeyHeld(game_key, 2) && !isKeyHeld(game_key, 3))
- result |= 0x80;
- }
- else {
- if (isKeyHeld(game_key, 0) && !isKeyHeld(game_key, 1))
- result |= 0x1;
- if (isKeyHeld(game_key, 1) && !isKeyHeld(game_key, 0))
- result |= 0x2;
- if (isKeyHeld(game_key, 3) && !isKeyHeld(game_key, 2))
- result |= 0x4;
- if (isKeyHeld(game_key, 2) && !isKeyHeld(game_key, 3))
- result |= 0x8;
- }
- return result;
- }
- const float KICK_DISTANCE = 0.95f;
- void WarbandAutoblock::autoKick(wb::agent* localPlayer, float* camera_horizontal_rotation, rgl::vector4 enemyVelocity, rgl::vector4 enemyPosition) {
- //rgl::vector4 movement_dir;
- //movement_dir.x = localPlayer->movement_dir.y;
- //movement_dir.y = -localPlayer->movement_dir.x;
- //movement_dir.x = localPlayer->movement_dir.z;
- //rgl::vector4 movement_dir_turn = localPlayer->movement_dir * 0.6000000238418579;
- //float unknown_x = movement_dir.x * 0.1000000014901161;
- //float unknown_y = movement_dir.y * 0.1000000014901161;
- //float unknown_z = movement_dir.z * 0.1000000014901161;
- //rgl::vector4 kickSpot;
- //kickSpot.x = unknown_x + localPlayer->position.x + movement_dir_turn.x;
- //kickSpot.y = unknown_y + localPlayer->position.y + movement_dir_turn.y;
- //kickSpot.z = unknown_z + localPlayer->position.z + movement_dir_turn.z;
- //auto predictedPosition = rgl::math::predictTime(enemyPosition, enemyVelocity, 25 * TICK_TIMER);
- //auto cross = RglEngine::worldToScreenDirectx9(kickSpot);
- //auto distance = predictedPosition - kickSpot;
- //float kickDistance = distance.x * distance.x + distance.y * distance.y;
- //float d = localPlayer->position.distTo(predictedPosition);
- //if (cross.z <= 1.0f) {
- // DebugMenu::drawCross(cross);
- //}
- //if (d < KICK_DISTANCE) {
- // rgl::vector4 distanceBetween = localPlayer->position - enemyPosition;
- // D3DXVECTOR4 lookDirection = XMath::vectorToAngles(distanceBetween);
- // *camera_horizontal_rotation = D3DXToRadian(lookDirection.x);
- // int viewAngleY = rgl::math::clamp(D3DXToDegree(*camera_horizontal_rotation), 0);
- // int angle = rgl::math::clamp(D3DXToDegree(atan2(-localPlayer->movement_dir.x, localPlayer->movement_dir.y)), 0);
- // if (viewAngleY == angle)
- // localPlayer->control.actions_1 |= 0x10000000;
- //}
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement