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

Sasiko1

Новичок
24
0
Регай колбек и там меняй парметр листбокса

Ты бля сколько дней уже не можешь получить хп игроков
Я бы уже давно рыдать начал и кричать что программирование это не моё
А потом вскрылся
И я не могу понять какие ошибки искать в коде из примера
Могёшь замутить получение ХП игроков в зоне стрима?
 

kawa operand

перерывпятьминут
602
333
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
окей ща
 

CleanLegend

Известный
Всефорумный модератор
476
929
Пробовал получить ХП игроков в стриме, но чет не получилось, укажите на ошибки.
C++:
#include <windows.h>
#include <string>
#include <assert.h>
#include <process.h>

#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"

SAMPFUNCS *SF = new SAMPFUNCS();

void CALLBACK cmd_show_info_player(std::string param)
{
    if (param.empty()) return;
    int    i = std::stoi(param);

    char buf[128];

    stRemotePlayer *pPlayer = SF->getSAMP()->getPlayers()->pRemotePlayer[i];
    stUnoccupiedData *ppPlayer; // ПЫТАЛСЯ ПОЛУЧИТЬ



    if (!pPlayer) return;

    sprintf(buf, "Nickname - %s, Ping - %d, Score - %d, isNPC - %d, HP - %0.0f AFKState - %d",
        pPlayer->szPlayerName,
        pPlayer->iPing,
        pPlayer->iScore,
        pPlayer->iIsNPC,
        ppPlayer->fHealth, // ПЫТАЛСЯ ПОЛУЧИТЬ
        pPlayer->pPlayerData->iAFKState == 2);

    SF->getSAMP()->getChat()->AddChatMessage(-1, buf);
};


void CALLBACK mainloop()
{
    static bool init = false;
    if (!init)
    {

        SF->getSAMP()->registerChatCommand("showinfo", cmd_show_info_player);     
    init = true;
    }
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
    switch (dwReasonForCall)
    {
        case DLL_PROCESS_ATTACH:
            SF->initPlugin(mainloop, hModule);
            break;
        case DLL_THREAD_ATTACH:
        case DLL_THREAD_DETACH:
        case DLL_PROCESS_DETACH:
            break;
    }
    return TRUE;
}
Ты используешь для получения хп игроков не правильную структуру.
C++:
stUnoccupiedData *ppPlayer; // это удали
sprintf(buf, "Nickname - %s, Ping - %d, Score - %d, isNPC - %d, HP - %.1f AFKState - %d",
pPlayer->szPlayerName,
pPlayer->iPing,
pPlayer->iScore,
pPlayer->iIsNPC,
pPlayer->pPlayerData->fActorHealth ,
pPlayer->pPlayerData->iAFKState == 2);
 
  • Нравится
Реакции: Sasiko1

kawa operand

перерывпятьминут
602
333
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
for (unsigned short i = 0; i < 1000; i++) {
    if (SF->getSAMP()->getPlayers()->IsPlayerDefined(i, true)) {
        float health = SF->getSAMP()->getPlayers()->pRemotePlayer[i]->pPlayerData->fActorHealth;
    }
}
попробуй так
 
  • Нравится
Реакции: Sasiko1

Sasiko1

Новичок
24
0
Ты используешь для получения хп игроков не правильную структуру.
C++:
stUnoccupiedData *ppPlayer; // это удали
sprintf(buf, "Nickname - %s, Ping - %d, Score - %d, isNPC - %d, HP - %.1f AFKState - %d",
pPlayer->szPlayerName,
pPlayer->iPing,
pPlayer->iScore,
pPlayer->iIsNPC,
pPlayer->pPlayerData->fActorHealth ,
pPlayer->pPlayerData->iAFKState == 2);
Все работает
C++:
for (unsigned short i = 0; i < 1000; i++) {
    if (SF->getSAMP()->getPlayers()->IsPlayerDefined(i, true)) {
        float health = SF->getSAMP()->getPlayers()->pRemotePlayer[i]->pPlayerData->fActorHealth;
    }
}
попробуй так
Спасибо вам
 

C&J

Известный
41
22
Уже какой день пытаюсь это сделать,нечего не выходит,то крашит,то игра намертво виснет,уже хз что делать
если по адресу функции, которую хукаешь, уже записан jmp (e9, addr)- то выполнить его после отработки твоеего хука
 

kawa operand

перерывпятьминут
602
333
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Регай евент входящих рпц там отправляй измененные параметры и отклоняй показ диалога
Уже какой день пытаюсь это сделать,нечего не выходит,то крашит,то игра намертво виснет,уже хз что делать
Забей хуй Ты все равно не поймёшь
 

-raymond-

Известный
110
9
покажите пример создания двумерного строкового массива и его использование
 
Последнее редактирование:

kawa operand

перерывпятьминут
602
333
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
std::string a[5][5];
 

-raymond-

Известный
110
9
в чем ошибка? крашит игру

C++:
std::string businnes_name[45][] =
{
    "Alhambra",
    "PigPen",
    "Misty Club",
    "Casino Bellagio",
    "Grove Street Bar",
    "Sobrino de Botin",
    "Vinewood Burger",
    "Marina Burger",
    "Idlewood Pizza",
    "Downtown Cluc",
    "Marina Cluc",
    "Idelwood 24/7",
    "Flint 24/7",
    "Easter 24/7",
    "Mullholand 24/7",
    "Jizzy",
    "Redsands West 24/7",
    "Julius 24/7",
    "Lil\"Probe\"inn",
    "Idelwood Gas",
    "Mullholang Gas",
    "Whetstone 24/7",
    "East Cluc",
    "WillowField Cluc",
    "Flats Cluc",
    "Financial Pizza",
    "Come-A-Lot Gas",
    "FortCarson Gas",
    "BoneCountry Gas",
    "Julius Gas",
    "PricklePine Gas",
    "Flint Gas",
    "Easter Gas",
    "Doherty Gas",
    "Juniper 24/7",
    "Juniper Gas",
    "Emerald Isle 24/7",
    "Emerald Isle Gas",
    "Redsands-West Gas",
    "ElGuebrabos Gas",
    "TierraRobada Gas",
    "AngelPine Gas",
    "WhetStone Gas",
    "Dilimore Gas",
    "Montgomery Gas",
};

void CALLBACK biz_check(std::string param)
{
    for (int i = 0; i <= 45; i++)
    {
        SF->getSAMP()->getChat()->AddChatMessage(COLOR_GREY, "%s", businnes_name[i]);
    }
}