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

D

deleted-user-204957

Гость
мужики в чем проблема

условие: Дано целое число N (> 0). Найти произведение N! = 1 • 2 • ... • N.


Код:
#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL, "rus");
    int n = 0;
    cout << "Введите последнее число факториала: ";
    cin >> n;
    for (int i = 1; i < n; i++)
    {
        n *= i;
    }
    cout << n << endl;
    system("pause");
    return 0;
}

в таком случае в консоль не выводится ничего, если в for написать int i = 0, выведется 0.
Потому что факториал 0 = 1. А у тебя в коде он равен 0
 

bl3ckside

Новичок
1
0
С помощью каких библиотек можно получить кол-во онлайн игроков на сервере по IP сервера?
Язык C#.
 

Tox777z

Известный
21
2
Допустим у меня есть dll в чите. Как создать для него лоадер .exe чтобы еще его можно было отгрузить на кнопку?
 

loganhackerdff

Известный
868
519
@DarkP1xel , помоги пж, я хочу получить CVehicle через handle машины, (пока-что только с SFAPI) я пробовал:
ты когда-то сказал что хендл это типо игрового id
CVehicle
Каждый транспорт как объект, равняется 2584 (0xA18) байтам и начинается с 0xC502AA0.
0xB74494 - Содержит указатель. Этот указатель:
  • +0 = Содержит указатель на первый элемент в пуле CVehicle
  • +4 = Содержит указатель на карту байтов показывающую какие элементы сейчас используются в пуле CVehicle
  • +8 = [dword] максимальное кол-во элементов в пуле CVehicle
  • +12 = [dword] текущее кол-во элементов в пуле CVehicle
C++:
            DW pools_cars = *(DW*)0xB74494; //
            int carid = SF->getSAMP()->getPlayers()->pLocalPlayer->inCarData.sVehicleID;
            int veh_handle = SF->getSAMP()->getVehicles()->GetCarHandleFromSAMPCarID(carid);
            DW car = *(DW*)(pools_cars + (veh_handle * 0xA18));
////////////////////////////////////////////////////////////////////////////////////
            DW pools_cars = *(DW*)(*(DW*)0xB74494);
            int carid = SF->getSAMP()->getPlayers()->pLocalPlayer->inCarData.sVehicleID;
            int veh_handle = SF->getSAMP()->getVehicles()->GetCarHandleFromSAMPCarID(carid);
            DW car = *(DW*)(pools_cars + (veh_handle * 0xA18));
////////////////////////////////////////////////////////////////////////////////////
            DW pools_cars = 0xC502AA0;
            int carid = SF->getSAMP()->getPlayers()->pLocalPlayer->inCarData.sVehicleID;
            int veh_handle = SF->getSAMP()->getVehicles()->GetCarHandleFromSAMPCarID(carid);
            DW car = *(DW*)(pools_cars + (veh_handle * 0xA18));
но всё крашило
 

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,744
4,808
@DarkP1xel , помоги пж, я хочу получить CVehicle через handle машины, (пока-что только с SFAPI) я пробовал:
ты когда-то сказал что хендл это типо игрового id
CVehicle
Каждый транспорт как объект, равняется 2584 (0xA18) байтам и начинается с 0xC502AA0.
0xB74494 - Содержит указатель. Этот указатель:
  • +0 = Содержит указатель на первый элемент в пуле CVehicle
  • +4 = Содержит указатель на карту байтов показывающую какие элементы сейчас используются в пуле CVehicle
  • +8 = [dword] максимальное кол-во элементов в пуле CVehicle
  • +12 = [dword] текущее кол-во элементов в пуле CVehicle
C++:
            DW pools_cars = *(DW*)0xB74494; //
            int carid = SF->getSAMP()->getPlayers()->pLocalPlayer->inCarData.sVehicleID;
            int veh_handle = SF->getSAMP()->getVehicles()->GetCarHandleFromSAMPCarID(carid);
            DW car = *(DW*)(pools_cars + (veh_handle * 0xA18));
////////////////////////////////////////////////////////////////////////////////////
            DW pools_cars = *(DW*)(*(DW*)0xB74494);
            int carid = SF->getSAMP()->getPlayers()->pLocalPlayer->inCarData.sVehicleID;
            int veh_handle = SF->getSAMP()->getVehicles()->GetCarHandleFromSAMPCarID(carid);
            DW car = *(DW*)(pools_cars + (veh_handle * 0xA18));
////////////////////////////////////////////////////////////////////////////////////
            DW pools_cars = 0xC502AA0;
            int carid = SF->getSAMP()->getPlayers()->pLocalPlayer->inCarData.sVehicleID;
            int veh_handle = SF->getSAMP()->getVehicles()->GetCarHandleFromSAMPCarID(carid);
            DW car = *(DW*)(pools_cars + (veh_handle * 0xA18));
но всё крашило
Ты хочешь машину в которой ты сидишь получить?
 

sc6ut

неизвестный
Модератор
382
1,089
В имгуи при попытке загрузки шрифта из пути имеющего русские символы, не получается загрузить шрифт.
1602825649513.png
Загружаю так:
C++:
io.Fonts->AddFontFromFileTTF(font, 15.0f, &icons_config, icons_ranges);
Кто-то знает как можно решить эту проблему?
 

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,744
4,808
В имгуи при попытке загрузки шрифта из пути имеющего русские символы, не получается загрузить шрифт.
Загружаю так:
C++:
io.Fonts->AddFontFromFileTTF(font, 15.0f, &icons_config, icons_ranges);
Кто-то знает как можно решить эту проблему?
Путь в utf-8 отдаешь?
 

#Northn

Pears Project — уже запущен!
Всефорумный модератор
2,650
2,535
делаю вот так, но не уверен, что это правильно
C++:
char path[MAX_PATH], font[MAX_PATH];
GetCurrentDirectory(MAX_PATH, path);
sprintf(font, u8"%s\\%s", path, FONT_PATH);
Это нелогично, ты обёртываешь под кодировку не путь, а только текст %s\\%s, поэтому ошибка, у тебя строка всё ещё не под utf8
Отдельно перекодируй
 
  • Нравится
Реакции: sc6ut

|| NN - NoName ||

Известный
1,049
635
1603382820937.png

C++:
#include <Windows.h>
#include "main.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];

    if (!pPlayer) return;

    sprintf(buf, "Nickname - %s, Ping - %d, Score - %d, isNPC - %d, AFKState - %d",
        pPlayer->szPlayerName,
        pPlayer->iPing,
        pPlayer->iScore,
        pPlayer->iIsNPC,
        pPlayer->pPlayerData->iAFKState == 2);

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

void __stdcall mainloop()
{
    static bool initialized = false;
    if (!initialized)
    {
        if (GAME && GAME->GetSystemState() == eSystemState::GS_PLAYING_GAME && SF->getSAMP()->IsInitialized())
        {
            SF->getSAMP()->registerChatCommand("showinfo", cmd_show_info_player);
            initialized = true;
            SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "Bl");
        }
    }
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
    if (dwReasonForCall == DLL_PROCESS_ATTACH)
        SF->initPlugin(mainloop, hModule);
    return TRUE;
}
 

#Northn

Pears Project — уже запущен!
Всефорумный модератор
2,650
2,535
Посмотреть вложение 72673
C++:
#include <Windows.h>
#include "main.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];

    if (!pPlayer) return;

    sprintf(buf, "Nickname - %s, Ping - %d, Score - %d, isNPC - %d, AFKState - %d",
        pPlayer->szPlayerName,
        pPlayer->iPing,
        pPlayer->iScore,
        pPlayer->iIsNPC,
        pPlayer->pPlayerData->iAFKState == 2);

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

void __stdcall mainloop()
{
    static bool initialized = false;
    if (!initialized)
    {
        if (GAME && GAME->GetSystemState() == eSystemState::GS_PLAYING_GAME && SF->getSAMP()->IsInitialized())
        {
            SF->getSAMP()->registerChatCommand("showinfo", cmd_show_info_player);
            initialized = true;
            SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "Bl");
        }
    }
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
    if (dwReasonForCall == DLL_PROCESS_ATTACH)
        SF->initPlugin(mainloop, hModule);
    return TRUE;
}
настрой и посмотри
там скорее всего исключение в stoi вызывается, если больше sizeof(int) то std::out_of_range, если туда отправляется текст без цифр то std::invalid_argument
 

|| NN - NoName ||

Известный
1,049
635
настрой и посмотри
там скорее всего исключение в stoi вызывается, если больше sizeof(int) то std::out_of_range, если туда отправляется текст без цифр то std::invalid_argument
Сорри, я тупой нихуя не понял. Но, то что ты скинул(ссылку), я сделал уже.
 

#Northn

Pears Project — уже запущен!
Всефорумный модератор
2,650
2,535
Сорри, я тупой нихуя не понял
C++:
void CALLBACK si(std::string param)
{
    if (param.empty() || param.length() > 23)
        return SF->getSAMP()->getChat()->AddChatMessage(-1, "Please use /si <ID>");
    try {
        int id = std::stoi(param);
        if (id > SAMP_MAX_PLAYERS - 5)
            _Xout_of_range("stoi");
        stRemotePlayer* pData = SF->getSAMP()->getPlayers()->pRemotePlayer[i];
        if (!pData)
            throw std::exception("Player is offline");
        std::string text
            = "ID: " + param
            + " | NAME: " + pData.name // fields may be wrong
            + " | SCORE: " + to_string(pData.score)
            + " | PING: " + to_string(pData.ping);
        SF->getSAMP()->getChat()->AddChatMessage(-1, text.c_str());
    }
    catch (const std::out_of_range)
    {
        SF->getSAMP()->getChat()->AddChatMessage(-1, "Not more than 1000");
    }
    catch (const std::invalid_argument)
    {
        // here u can try find player by nickname
        SF->getSAMP()->getChat()->AddChatMessage(-1, "You didn't put number");
    }
    catch (const std::exception& arg)
    {
        SF->getSAMP()->getChat()->AddChatMessage(-1, arg.what());
    }
}
 

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,744
4,808
C++:
void CALLBACK si(std::string param)
{
    if (param.empty() || param.length() > 23)
        return SF->getSAMP()->getChat()->AddChatMessage(-1, "Please use /si <ID>");
    try {
        int id = std::stoi(param);
        if (id > SAMP_MAX_PLAYERS - 5)
            _Xout_of_range("stoi");
        stRemotePlayer* pData = SF->getSAMP()->getPlayers()->pRemotePlayer[i];
        if (!pData)
            throw std::exception("Player is offline");
        std::string text
            = "ID: " + param
            + " | NAME: " + pData.name // fields may be wrong
            + " | SCORE: " + to_string(pData.score)
            + " | PING: " + to_string(pData.ping);
        SF->getSAMP()->getChat()->AddChatMessage(-1, text.c_str());
    }
    catch (const std::out_of_range)
    {
        SF->getSAMP()->getChat()->AddChatMessage(-1, "Not more than 1000");
    }
    catch (const std::invalid_argument)
    {
        // here u can try find player by nickname
        SF->getSAMP()->getChat()->AddChatMessage(-1, "You didn't put number");
    }
    catch (const std::exception& arg)
    {
        SF->getSAMP()->getChat()->AddChatMessage(-1, arg.what());
    }
}
Исключения в c++ чересчур медленные. Для чтения числа можно использовать scanf, либо regex_match.