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

Dark_Knight

Me, me and me.
Друг
4,062
2,078
У кого есть функция stristr ? Проще говоря, strstr без учета регистра.
Код:
#include <iostream>
#include <algorithm>
#include <string>
#include <ctype.h>
using namespace std;

void main() {
     string str("HernYa"), str1("hernya");
     transform(str.begin(), str.end(), str.begin(), tolower);
     transform(str1.begin(), str1.end(), str1.begin(), tolower);
     cout << (str == str1 ? "true" : "false");
}
 
  • Нравится
Реакции: Vandal™

Vandal™

Известный
55
4
Код:
#include <iostream>
#include <algorithm>
#include <string>
#include <ctype.h>
using namespace std;

void main() {
     string str("HernYa"), str1("hernya");
     transform(str.begin(), str.end(), str.begin(), tolower);
     transform(str1.begin(), str1.end(), str1.begin(), tolower);
     cout << (str == str1 ? "true" : "false");
}
Не первый раз уже выручаешь. Еще раз спасибо.

Чуток переделал код, что бы и русские символы в нижний регистр менялись.
C++:
bool stristr(std::string str, std::string str1)
{
    setlocale(LC_CTYPE, "Russian");
    transform(str.begin(), str.end(), str.begin(), tolower);
    transform(str1.begin(), str1.end(), str1.begin(), tolower);
    return strstr(str.c_str(), str1.c_str());
}

Исходник - SRString(https://blast.hk/threads/18698/)

C++:
int stristr(SRString one, SRString two){
    return one.toLower().indexOf(two.toLower());
}
По мне, проще использовать то, что сверху, чем добавлять полный пак и не пользоваться им :)
 

Alfinity

Известный
94
52
Привет, ребята! Может ли кто-то рассказать как работать с камерой: установить позицию(включая направление "взгляда"), узнать позицию(включая направление "взгляда") и т.п.?
 

Сэнд

Известный
Проверенный
436
212
0xB6F258 - направление по горизонтали
0xB6F248 - по вертикали

вроде бы в радианах, не помню
 
  • Нравится
Реакции: Alfinity

BABLIK

Известный
15
1
Как отловить исходящий RPC пакет от игрока в raksamp или собейте ? Мне нужно получить RPC_GiveTakeDamage
 
Последнее редактирование:

Dexide

Новичок
45
1
Как исправить ошибку? Понимаю что файл не может открыться, но почему?

1>C:\Users\banmachine\Documents\Visual Studio 2015\Projects\sf_plug\SFPlugin\SFAPI\SAMPFUNCS_API.h(21): fatal error C1083: Не удается открыть файл включение: d3dx9.h: No such file or directory

Проблему врод исправил но появилась другая,

1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\hash_map(17): error C2338: <hash_map> is deprecated and will be REMOVED. Please use <unordered_map>. You can define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS to acknowledge that you have received this warning.
1>main.cpp(18): warning C4477: "sscanf": в строке форматирования "%d" требуется аргумент типа "int *", но вариативный аргумент "1" имеет тип "int"

Код:
#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();

int time = -1;

void CALLBACK Weather(std::string param)
{
    char weatherstring[128];
    if (param.empty())
        return;
    sscanf(param.c_str(), "%d", 0xC81320);
    SF->Log("{00FF00}ID погоды был изменен на {FFFFFF}%s", param.c_str());
}

void CALLBACK Time(std::string param)
{
    if (param.empty())
        return;
    time = std::stoi(param);
    if (time > 23 || time < 0)
    {
        time = -1;
        SF->Log("{FF0000}Значение должно быть не больше 23 и не мешьше 0.");
        return;
    }
    else
    {
        SF->Log("{00FF00}Время было изменено на {FFFFFF}%d {00FF00}часов.", time);
    }
}

void CALLBACK mainloop()
{
    static bool init = false;
    if (!init)
    {
        if (GAME == nullptr)
            return;
        if (GAME->GetSystemState() != eSystemState::GS_PLAYING_GAME)
            return;
        if (!SF->getSAMP()->IsInitialized())
            return;
        SF->registerConsoleCommand("setweather", Weather);
        SF->getSAMP()->registerChatCommand("setweather", Weather);
        SF->registerConsoleCommand("settime", Time);
        SF->getSAMP()->registerChatCommand("settime", Time);
        init = true;
    }

    if (time > -1)
        SF->getCLEO()->callOpcode("00C0: %d 0", time);
}

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;
}
 
Последнее редактирование модератором:

LUCHARE

Известный
Друг
545
688
Проблему врод исправил но появилась другая,

1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\hash_map(17): error C2338: <hash_map> is deprecated and will be REMOVED. Please use <unordered_map>. You can define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS to acknowledge that you have received this warning.
1>main.cpp(18): warning C4477: "sscanf": в строке форматирования "%d" требуется аргумент типа "int *", но вариативный аргумент "1" имеет тип "int"

Код:
#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();

int time = -1;

void CALLBACK Weather(std::string param)
{
    char weatherstring[128];
    if (param.empty())
        return;
    sscanf(param.c_str(), "%d", 0xC81320);
    SF->Log("{00FF00}ID погоды был изменен на {FFFFFF}%s", param.c_str());
}

void CALLBACK Time(std::string param)
{
    if (param.empty())
        return;
    time = std::stoi(param);
    if (time > 23 || time < 0)
    {
        time = -1;
        SF->Log("{FF0000}Значение должно быть не больше 23 и не мешьше 0.");
        return;
    }
    else
    {
        SF->Log("{00FF00}Время было изменено на {FFFFFF}%d {00FF00}часов.", time);
    }
}

void CALLBACK mainloop()
{
    static bool init = false;
    if (!init)
    {
        if (GAME == nullptr)
            return;
        if (GAME->GetSystemState() != eSystemState::GS_PLAYING_GAME)
            return;
        if (!SF->getSAMP()->IsInitialized())
            return;
        SF->registerConsoleCommand("setweather", Weather);
        SF->getSAMP()->registerChatCommand("setweather", Weather);
        SF->registerConsoleCommand("settime", Time);
        SF->getSAMP()->registerChatCommand("settime", Time);
        init = true;
    }

    if (time > -1)
        SF->getCLEO()->callOpcode("00C0: %d 0", time);
}

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;
}
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 1
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,695
1,448
Он не вызывается у меня.. Возможно потому что этот RPC исходящий от игрока.. Он точно должен вызываться ?
По-моему, приходит тогда, когда игрок наносит дамаг локальному игроку.
 

kawa operand

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

SF->getCLEO()->callOpcode("00C0: %d 0", time);
извращенец.

C++:
samp = (int)GetModuleHandleA("samp.dll");
int stSAMP = *(int *)(samp + 0x21A0F8);
int ServerPresets = *(int *)(stSAMP + 0x3C5);
*(unsigned short *)(ServerPresets + 44) = hour;

код не мой, взял для теста с бх, у меня даже стандартный проект сф не копмпилируется...
Скачай последнюю мсвс и в самое начало
C++:
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS
(до инклудов, в main.cpp прям на первой строчке)

Можешь дать ссылку? Не понимаю что такое мсвс и куда его инсталлировать
Visual Studio IDE, редактор кода, Team Services и Mobile Center(https://www.visualstudio.com/ru/)
 
Последнее редактирование модератором: