Другое С/С++ Вопрос - Ответ

_=Gigant=_

Известный
128
180
const struct weapon_entry *weapon = &weapon_list[byteCurrentWeapon];
sprintf(buf, "weapon: %s", weapon->name);

it shows name but incorrect for example if player use pistol it shows molotov cocktail but sometimes it show correct name like when player have Fist or Catana

i did it like this

stRemotePlayer *pPlayer = g_SAMP->pPools->pPlayer->pRemotePlayer[player_target];
const struct weapon_entry *weapon = &weapon_list[pPlayer->pPlayerData->onFootData.byteCurrentWeapon];

sa-mp-243.png
 

Babayka2016

Известный
51
2
Приветствую. Создаю бота, который ездит на машине.

Есть координаты машины и чекпоинта.

Как рассчитать угол между двумя точками, куда нужно повернуть машине?

P.S Без SAMPFUNCS и SAMP LUA.
 

ALF

Известный
Проверенный
320
545
it shows name but incorrect for example if player use pistol it shows molotov cocktail but sometimes it show correct name like when player have Fist or Catana

i did it like this

stRemotePlayer *pPlayer = g_SAMP->pPools->pPlayer->pRemotePlayer[player_target];
const struct weapon_entry *weapon = &weapon_list[pPlayer->pPlayerData->onFootData.byteCurrentWeapon];

sa-mp-243.png
C++:
stRemotePlayer *pPlayer = g_SAMP->pPools->pPlayer->pRemotePlayer[player_target];
for (int i = 0; weapon_list[i].name != nullptr; i++)
{
    const struct weapon_entry *weapon = &weapon_list[i];
    if (weapon->id == pPlayer->pPlayerData->onFootData.byteCurrentWeapon)
    {
        sprintf(buf, "weapon: %s", weapon->name);
    }
}
 
  • Нравится
Реакции: 01EG и _=Gigant=_

Revalto

Известный
532
225
Приветствую. Столкнулся с такой проблемой:

К примеру, есть координаты множества чекпоинтов, они расположены хаотично.

Есть координаты машины и поворот персонажа в ней:

Поворот персонажа:

public float Get_Rotation() {
int base_address = mem.ReadInt(0xB6F5F0);
float angel = mem.ReadFloat(base_address + 0x558);

return angel * 6;
}

Координаты машины:

public float[] Get_Car_Coord()
{
float[] Position = new float[2];
int car_offset = mem.ReadInt(0xBA18FC);
int offset_to_matrix_car = mem.ReadInt(car_offset + 0x14);
Position[0] = mem.ReadFloat(offset_to_matrix_car + 0x30);
Position[1] = mem.ReadFloat(offset_to_matrix_car + 0x34);
return Position;
}

Как мне сделать так, чтобы она могла проехать по маршруту чекпоинтов?

Мне нужно как-то взять тот угол, на который она должна повернуться.

Типа... Есть координаты чекпоинта:

x: 1141.513916
y: -1162.998169

И координаты машины:


x: 1162.112061

y: -1199.149658

Как сделать так, чтобы она туда приехала? Как вычислить тот угол, на который она должна повернуть?

Вообще, видел, что реализуют через функцию lua - getHeadingFromVector2d.

Как она вообще устроена? Как её перевести на другой язык, к примеру?

P.S НУЖНО БЕЗ SAMPFUNCS и SAMP LUA.

Заранее спасибо)
Зажми клавишу W через key_event
 

SR_team

like pancake
BH Team
4,921
6,625
Зажми клавишу W через key_event
У тебя не это спросили
Как рассчитать угол между двумя точками, куда нужно повернуть машине?
AsiPlugin(https://git.prime-hack.net/SR_team/AsiPlugin/src/branch/master/CGame/Types.cpp#L29)
X и Y это дельты, как в опкоде CLEO

У SF плагина нет Makefile
 
Последнее редактирование модератором:
  • Нравится
Реакции: Babayka2016

ALF

Известный
Проверенный
320
545
??

float angle = atan2(x_car - x_checkpoint, y_car - y_checkpoint);
angle += M_PI;
 
  • Нравится
Реакции: 01EG

ALF

Известный
Проверенный
320
545
Код:
C:\Новая папка\SFPlugin\SFPlugin\SFPlugin.vcxproj : warning  : Невозможно найти средства сборки для Visual Studio 2012 - Windows XP (v110_xp). Установите Visual Studio 2012 - Windows XP (v110_xp), чтобы выполнить сборку с использованием средств сборки Visual Studio 2012 - Windows XP (v110_xp).
Открываю готовый проект SF, и пишет это
свойства проекта > свойства конфигурации > набор инструментов платформы > ставь что у тебя есть
 
  • Нравится
Реакции: 01EG

ШPEK

Известный
1,474
528
Как сделать чтобы sf проект запускался на версиях ниже 2012??? p.s версия 2010
 

justblast

Новичок
8
1
Как получить анимацию игрока в зоне прорисовки? Подскажите пожалуйста.
SF->getSAMP()->getPlayers()->GetPlayerAnimation(id);
SF->getSAMP()->getInfo()->pPools->pPlayer->GetPlayerAnimation(id);
SF->getSAMP()->getPlayers()->GetOnFootData(id)->sCurrentAnimationID;

Не подходят, они получают только ноли.
 

CleanLegend

Известный
Всефорумный модератор
495
948
Как получить анимацию игрока в зоне прорисовки? Подскажите пожалуйста.
SF->getSAMP()->getPlayers()->GetPlayerAnimation(id);
SF->getSAMP()->getInfo()->pPools->pPlayer->GetPlayerAnimation(id);
SF->getSAMP()->getPlayers()->GetOnFootData(id)->sCurrentAnimationID;

Не подходят, они получают только ноли.
C++:
SF->getSAMP()->getPlayers()->pRemotePlayer[id]->pPlayerData->onFootData.sAnimFlags;
        SF->getSAMP()->getPlayers()->pRemotePlayer[id]->pPlayerData->onFootData.sCurrentAnimationID;

Установи DirectX SDK и подключи к проекту, на ютубе много гайдов по этой теме
why this not working
void Anims()
{

struct actor_info *self = actor_info_get(ACTOR_SELF, ACTOR_ALIVE);

if (FastWalk)
{

if (self == NULL)
return;

ScriptCommand(&anim_speed, ScriptActorId(self), "WALK_PLAYER", set.walk_speed);
}

}

this code above is in .cpp i included void Anims(); in .h file
Are you initializing script?
 
Последнее редактирование:
  • Нравится
Реакции: _=Gigant=_