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

ALF

Известный
Проверенный
320
539
how to get player current weapon name, here what i did


Код:
const struct weapon_entry    *weapon = weapon_list;

            sprintf(ctarget_wep, "{31f8ff}Weapon{FFFFFF} %s{FFFFFF} %u", gta_weapon_get_by_name(weapon->name), g_Players->pRemotePlayer[Target_PlayerID]->pPlayerData->onFootData.byteCurrentWeapon);

const struct weapon_entry    weapon_list[] =
{
    { 0, 0, -1, "Fist" },
    { 1, 0, 331, "Brass Knuckles" },
    { 2, 1, 333, "Golf Club" },
    { 3, 1, 334, "Nitestick" },
    { 4, 1, 335, "Knife" },
    { 5, 1, 336, "Baseball Bat" },
    { 6, 1, 337, "Shovel" },
    { 7, 1, 338, "Pool Cue" },
    { 8, 1, 339, "Katana" },
    { 9, 1, 341, "Chainsaw" },
    { 22, 2, 346, "Pistol" },
    { 23, 2, 347, "Silenced Pistol" },
    { 24, 2, 348, "Desert Eagle" },
    { 25, 3, 349, "Shotgun" },
    { 26, 3, 350, "Sawn-Off Shotgun" },
    { 27, 3, 351, "SPAZ12" },
    { 28, 4, 352, "Micro UZI" },
    { 29, 4, 353, "MP5" },
    { 32, 4, 372, "Tech9" },
    { 30, 5, 355, "AK47" },
    { 31, 5, 356, "M4" },
    { 33, 6, 357, "Country Rifle" },
    { 34, 6, 358, "Sniper Rifle" },
    { 35, 7, 359, "Rocket Launcher" },
    { 36, 7, 360, "Heat Seeking RPG" },
    { 37, 7, 361, "Flame Thrower" },
    { 38, 7, 362, "Minigun" },
    { 16, 8, 342, "Grenade" },
    { 17, 8, 343, "Teargas" },
    { 18, 8, 344, "Molotov Cocktail" },
    { 39, 8, 363, "Remote Explosives" },
    { 41, 9, 365, "Spray Can" },
    { 42, 9, 366, "Fire Extinguisher" },
    { 43, 9, 367, "Camera" },
    { 10, 10, 321, "Dildo 1" },
    { 11, 10, 322, "Dildo 2" },
    { 12, 10, 323, "Vibe 1" },
    { 13, 10, 324, "Vibe 2" },
    { 14, 10, 325, "Flowers" },
    { 15, 10, 326, "Cane" },
    { 44, 11, 368, "NV Goggles" },
    { 45, 11, 369, "IR Goggles" },
    { 46, 11, 371, "Parachute" },
    { 40, 12, 364, "Detonator" },
    { -1, -1, -1, NULL }
};

but this shows
Screenshot_2.jpg


thanks for help !
const struct weapon_entry *weapon = &weapon_list[byteCurrentWeapon];
sprintf(buf, "weapon: %s", weapon->name);
 
  • Нравится
Реакции: _=Gigant=_

_=Gigant=_

Известный
144
225
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
539
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,807
6,491
Зажми клавишу 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
539
??

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

ALF

Известный
Проверенный
320
539
Код:
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
525
Как сделать чтобы 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;

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