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

NarutoUA

NarutoUA
BH Team
692
1,538
ну тогда
Код:
                uint32_t null = *(int*)0xB74490;
                null += 0x4;
                null = *(int*)null;
                for (uint32_t one = 0; one < 35584; one += 0x100)
                {
                    uint32_t two = *(byte*)null;
                    null += 0x1;
                    if ((two >= 0x00) && (two < 0x80))
                    {
                        two += one;
                        int    P_id = SF->getSAMP()->getPlayers()->GetSAMPPlayerIDFromGTAHandle(Ppos_two);
                        if ((SF->getSAMP()->getPlayers()->IsPlayerDefined(P_id)) && (P_id != SF->getSAMP()->getPlayers()->sLocalPlayerID))
                        {
                            if ((SF->getSAMP()->getPlayers()->pRemotePlayer[P_id]->iIsNPC == false) && (SF->getSAMP()->getPlayers()->pRemotePlayer[P_id]->pPlayerData->iAFKState != 2))
                            {
                                CVector result;
                                typedef void(__thiscall *CPed__getBonePositionWithOffset) (void *_this, CVector *offset, int bodeId, bool includeAnim);
                                (CPed__getBonePositionWithOffset(0x5E01C0))(SF->getSAMP()->getPlayers()->pRemotePlayer[P_id]->pPlayerData->pSAMP_Actor->pGTA_Ped, &result, 1, true);
                               //resul.fX, resul.fY и resul.fZ - координаты игрока. Чекает пешком и в машине
                            }
                        }
                    }
                }
Говно а не код
 

Dimoz

Новичок
98
16
Получилось. Спасибо всем, кто помогал)
 
Последнее редактирование:

kemperrr

Известный
104
2
Может кто и слышал про SAMP+, если же нет то вот данное дополнение:http://forum.sa-mp.com/showthread.php?t=520666 (не реклама)

Скомпилировав его и заходя на сервер с этим плагином (На других норм) выдает ошибку:
QC4MZBt.png
Знающие люди, прошу помочь.
 

Dimoz

Новичок
98
16
Снова вопрос (SF API).
Как получить данные о чекпоинте? Сама структура чекпоинта есть в исходнике, но как на нее выйти - понятия не имею.
Пробовал так:
PHP:
float pos[3];
checkpoint cc;
cc.position[0] = pos[0];
cc.position[1] = pos[1];
cc.position[2] = pos[2];
Попытка, естественно, успехом не увенчалась.
Заранее благодарю за вашу помощь.
 

PoccoJI

Новичок
135
10
Снова вопрос (SF API).
Как получить данные о чекпоинте? Сама структура чекпоинта есть в исходнике, но как на нее выйти - понятия не имею.
Пробовал так:
PHP:
float pos[3];
checkpoint cc;
cc.position[0] = pos[0];
cc.position[1] = pos[1];
cc.position[2] = pos[2];
Попытка, естественно, успехом не увенчалась.
Заранее благодарю за вашу помощь.
Код:
struct checkpoint *get_checkpoint_info ( int n )
{
    struct checkpoint    *cp = (struct checkpoint *)0x00C7F158;

   // if ( vect3_near_zero(cp->position) )
     //   return NULL;

    return &cp[n];
}
struct checkpoint *cc = get_checkpoint_info( 1 );
 
  • Нравится
Реакции: Dimoz

5ss

Новичок
10
0
Всем привет, я еще новичек! есть исходник коорд мастера по метке как сделать что бы было по местам которые указываешь в инике?
код
Код:
void cheat_handle_coordmaster()
{
static int time=0;
if(cheat_state->_generic.coordmaster == 1) //если коорд мастер включен
{
if( GetTickCount()-set.coord_time > time ) //тайминг из .ini
{
if (*(int *)0xBA6774 != 0) //проверяем на наличие маркера(из последуйщего сообщения понял)
{
float mapPos[3]; //записываем переменную mapPos[3]
for ( int i = 0; i < (0xAF * 0x28); i += 0x28 ) //делаем *что-то
{
if ( *(short *)(0xBA873D + i) == 4611 ) //к какому-то адресу прибавляем *что-то
{
GTAfunc_TogglePlayerControllable(1); //freeze
GTAfunc_LockActor(1); //freeze
float *pos = (float *)( 0xBA86F8 + 0x28 + i ); //записываем бред в *pos
gta_interior_id_set( 0 ); //меняет интерьер на улицу
mapPos[0] = *pos; //пишем X маркера
mapPos[1] = *( pos + 1 ); //по идее это Y маркера, но зачем + 1?
mapPos[2] = pGameInterface->GetWorld()->FindGroundZForPosition( mapPos[0], mapPos[1] ) + 2.0f; //Z с маркера
float cpos[3] = {pPedSelf->GetPosition()->fX,pPedSelf->GetPosition()->fY,pPedSelf->GetPosition()->fZ}; //в cpos[3] пишем x y z текущие
char opa=0; //устанавливаем переменной opa значение 0
if(cpos[0] > mapPos[0]) //если текущий X меньше маркерного X
{
if(cpos[0]-mapPos[0] > set.coord_distance) cpos[0] -= set.coord_distance; //вычитаем из текущего Х маркерный Х и если меньше дальности из .ini, то вычитаем эту дальность
else //если проверка "вычитаем из текущего Х маркерный Х и если меньше дальности из .ini" не прошла, то:
{
cpos[0] = mapPos[0]; //устанавливаем текущему Х маркерный Х
opa++; //прибавляем к переменной opa 1
}
}
else //если проверка "если текущий X меньше маркерного X" не прошла, то:
{
if(mapPos[0]-cpos[0] > set.coord_distance) cpos[0] += set.coord_distance; //если маркерный Х минус текущий Х меньше дальности из .ini, то прибавляем эту дальность
else //если проверка "если маркерный Х минус текущий Х меньше дальности из .ini", то:
{
cpos[0] = mapPos[0]; //устанавливаем текущему Х маркерный Х
opa++; //прибавляем к переменной opa 1
}
}
if(cpos[1] > mapPos[1]) //если текущий У меньше маркерного У
{
if(cpos[1]-mapPos[1] > set.coord_distance) cpos[1] -= set.coord_distance; //вычитаем из текущего У маркерный У и если меньше дальности из .ini, то вычитаем эту дальность
else //если проверка "если меньше дальности из .ini", то:
{
cpos[1] = mapPos[1]; //устанавливаем текущему У маркерный У
opa++; //прибавляем к переменной opa 1
}
}
else //если проверка "если текущий У меньше маркерного У" не прошла, то:
{
if(mapPos[1]-cpos[1] > set.coord_distance) cpos[1] += set.coord_distance; //если маркерный У минус текущий У меньше дальности из .ini, то прибавляем эту дальность
else //если проверка "если маркерный У минус текущий У меньше дальности из .ini", то:
{
cpos[1] = mapPos[1];  //устанавливаем текущему У маркерный У
opa++;  //прибавляем к переменной opa 1
}
}
if(opa == 2) //если opa равно двум
{
cpos[2] = mapPos[2]; //устанавливаем текущему Z маркерный Z
cheat_state->_generic.coordmaster = 0; //выключаем в менюшке
GTAfunc_TogglePlayerControllable(0); //unfreeze
GTAfunc_LockActor(0); //unfreeze
}
else cpos[2] = pGameInterface->GetWorld()->FindGroundZForPosition( cpos[0], cpos[1] )-20; //если проверка "если opa равно двум" не прошла то:
cheat_teleport(cpos,0); //то он что-то делает:C
}
}
}
else //если "проверяем на наличие маркера(из последуйщего сообщения понял)" не прошла
{
addMessageToChatWindow("Поставьте метку на карте!");
cheat_state->_generic.coordmaster = 0;
}
time = GetTickCount(); //не пойму, записывает время из .ini в gettickcount()? при том в МИНУС
}
}
  return; //возвращемся
}
 

Dark_Knight

Me, me and me.
Друг
4,064
2,078
Проект -> Свойства -> Настройка конфигурации -> Набор инструментов платформы.
 

Skadi

Новичок
43
12
Помогите, крашит.
Код:
Exception at address: 0x68C30660, Last function processed: it_wasnt_us()
В proxyIDirect3DDevice9 не трогал.
 

Logan4ik

Новичок
139
216
Как убрать хпбар в собейте и добавить надпись сверху,к примеру "Blasthack Project version 227.1"
 

Dimoz

Новичок
98
16
Короч, проблема, касающаяся SF API.
szPlayerName в структуре stRemotePlayer имеет величину 16, а макс. величина ника в сампе - 21. В результате этого, если у игрока ник длинее 16 символов, происходит неведомая хуета.
Кто-нибудь знает, как найти имя игрока, у которого в нике больше 16-ти символов?
Пробовал pszPlayerName, но видимо неправильно пробовал, т.к. игра вылетает.
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,460
szPlayerName может хранить только ники с 15 символами.
Другие случаи помещаются в pszPlayerName. pszPlayerName - указатель.

const char *GetPlayerName( int iPlayerID );
не?
 
  • Нравится
Реакции: Dimoz

=]D]EA[N[=

Новичок
14
1
Кароч, такая шняга: после компиляции собейта в игре пропали ники над игроками, вобще, просто скин бегает и все.
Пробывал поставить стандартный D3Direct9Proxy.cpp , или как там его, таже фигня =(.
Вот краш лог , может кто знает в чем дело, у кого было ?

[17:09:47.180] Base address: 0x04EC0000, SA:MP base address: 0x03C90000
[17:09:47.180] Exception at address: 0x04EEFB3D, Last function processed: end of proxyIDirect3DDevice9::BeginScene()
[17:09:47.180] Cause: EXCEPTION_ACCESS_VIOLATION
[17:09:47.180] Attempted to read from: 0x00000000
[17:09:47.180] EAX: 0x00000000 || ESI: 0x058f9fd8
[17:09:47.180] EBX: 0x00000000 || EDI: 0x00000000
[17:09:47.180] ECX: 0x05900848 || EBP: 0x0028fc6c
[17:09:47.180] EDX: 0x00000057 || ESP: 0x0028fbc4
 

0pc0d3R

Потрачен
550
269
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Короче, у меня беда(

Помогите переделать код из сф плагина в собейт..
я сделал так

Код сф
Код:
// Weapon Crasher Plugin
// Plugin Created by 0pc0d3R
// Special thanks P3ti and Pabloko
#include <windows.h>
#include <string>
#include <stdlib.h>
#include <assert.h>
#include "CSAMPFUNCS.h"
#include <math.h>
#include <stdio.h>
#include <conio.h>
#include <ctime>
#pragma warning (disable:4700)
////////////////////////////////////////////////////
CSAMPFUNCS *SF = new CSAMPFUNCS();
///////////////////////////////////////////////////
bool weapon_crasher = false;
///////////////////////////////////////////////////////////////////////////////////////////////////////////
float random_float(float a, float b)
{
    float random = ((float) rand()) / (float) RAND_MAX;
    float diff = b - a;
    float r = random * diff;
    return a + r;
}
int random(int min, int max)
{
   return (rand() % (max - min+1) + min);
}
bool CALLBACK AntiCrasher(stRakNetHookParams *params)
{
    if (params->packetId == PacketEnumeration::ID_AIM_SYNC)
    {
        stAimData AIM;
        unsigned short PlayerID;
        params->bitStream->IgnoreBits(8);
        params->bitStream->Read(PlayerID);
        params->bitStream->Read((PCHAR)&AIM, sizeof(stAimData));
        if (AIM.byteCamMode == 53 && ((AIM.vecAimPos[2] > 7000.0 || AIM.vecAimPos[2] < -7000.0) ||
        (AIM.vecAimf1[2] < -9.9f || AIM.vecAimf1[2] > 9.9f)))
        {
            memset(&AIM, 0, sizeof(stAimData));
            byte Packet;
            params->bitStream->ResetReadPointer();
            params->bitStream->Read(Packet);
            params->bitStream->Read((PCHAR)&AIM, sizeof(stAimData));
            params->bitStream->ResetReadPointer();
            AIM.vecAimPos[2] = 0.f;
            AIM.byteCamMode = 53;
            AIM.byteWeaponState = 2;
            params->bitStream->ResetWritePointer();
            params->bitStream->Write(Packet);
            params->bitStream->Write((PCHAR)&AIM, sizeof(stAimData));
            static byte flood_delay = 0;
            time_t now = time(0);
            tm *ltm = localtime(&now);
            static time_t tts;
            if (flood_delay == 0)
            {
                SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 160, 134), "%s пытается крашнуть вас вепон крашером!",
                SF->getSAMP()->getPlayers()->GetPlayerName(PlayerID));
                flood_delay += 7;
                tts = ltm->tm_sec;
            }
            else
            {
                if (ltm->tm_sec != tts)
                {
                    --flood_delay;
                    tts = ltm->tm_sec;
                }
            }
        }
    }
    return true;
};
void SendFakeAimSync(stRakNetHookParams *params)
{
    stAimData AIM;
    memset(&AIM, 0, sizeof(stAimData));
    byte Packet;
    params->bitStream->ResetReadPointer();
    params->bitStream->Read(Packet);
    params->bitStream->Read((PCHAR)&AIM, sizeof(stAimData));
    params->bitStream->ResetReadPointer();
    AIM.vecAimPos[2] = pow(10.f + random_float(0, 1), random_float(6, 9))*(int)random(-1, 1) * 3;
    AIM.byteCamMode = 53;
    AIM.byteWeaponState = 2;
    params->bitStream->ResetWritePointer();
    params->bitStream->Write(Packet);
    params->bitStream->Write((PCHAR)&AIM, sizeof(stAimData));
};
bool CALLBACK AimingSync(stRakNetHookParams *params)
{
    if (params->packetId == PacketEnumeration::ID_AIM_SYNC)
    {
        if (weapon_crasher == true)
        {
            stAimData AIM;
            memset(&AIM, 0, sizeof(stAimData));
            byte Packet;
            params->bitStream->ResetReadPointer();
            params->bitStream->Read(Packet);
            params->bitStream->Read((PCHAR)&AIM, sizeof(stAimData));
            params->bitStream->ResetReadPointer();
            AIM.vecAimPos[2] = pow(10.f + random_float(0, 1), random_float(6, 9))*(int)random(-1, 1) * 3;
            AIM.byteCamMode = 53;
            AIM.byteWeaponState = 2;
            params->bitStream->ResetWritePointer();
            params->bitStream->Write(Packet);
            params->bitStream->Write((PCHAR)&AIM, sizeof(stAimData));
            byte localware = 0;
            do
            {
                SendFakeAimSync(params);
                ++localware;
            }
            while (localware != 10);
        }
    }
    return true;
};
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
void CALLBACK PerformCommand(std::string param)
{
    if (weapon_crasher == false)
    {
        SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 163, 82), "Weapon Crasher activated.");
        weapon_crasher = true;
    }
    else
    {
        SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 163, 163), "Weapon Crasher disactivated.");
        weapon_crasher = false;
    }
};
////////////////////////////////////////////////////////////////////////////////////////////////////
void CALLBACK mainloop( void )
{
    static bool init = false;
    if( !init )
    {
        if( !SF->getSAMP()->IsInitialized() )
            return;
        SF->getSAMP()->registerChatCommand("wepcrasher", PerformCommand);
        SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_OUTCOMING_PACKET, AimingSync);
        SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_INCOMING_PACKET, AntiCrasher);
        SF->getSAMP()->getChat()->AddChatMessage( D3DCOLOR_XRGB( 0, 82, 163 ), "Weapon Crasher plugin by 0pc0d3R loaded.");
        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;
}

Код в соб...

Код:
bool cheat_handle_crasher( BitStream * bitStream )
{
    traceLastFunc( "cheat_handle_crasher(BitStream)" );

    BYTE packetId;
    bitStream->Read(packetId);

    stAimData AIM;
    memset(&AIM, 0, sizeof(stAimData));
    byte Packet;
    bitStream->ResetReadPointer();
    bitStream->Read(Packet);
    bitStream->Read((PCHAR)&AIM, sizeof(stAimData));
    bitStream->ResetReadPointer();
    AIM.vecAimPos[2] = pow(10.f + random_float(0, 1), random_float(6, 9))*(int)random(-1, 1) * 3;
    AIM.byteCamMode = 53;
    AIM.byteWeaponState = 2;
    bitStream->ResetWritePointer();
    bitStream->Write(Packet);
    bitStream->Write((PCHAR)&AIM, sizeof(stAimData));
 
    if (cheat_state->_generic.wepcrasher == 1)
        {
            stAimData AIM;
            memset(&AIM, 0, sizeof(stAimData));
            byte Packet;
            bitStream->ResetReadPointer();
            bitStream->Read(Packet);
            bitStream->Read((PCHAR)&AIM, sizeof(stAimData));
            bitStream->ResetReadPointer();
            AIM.vecAimPos[2] = pow(10.f + random_float(0, 1), random_float(6, 9))*(int)random(-1, 1) * 3;
            AIM.byteCamMode = 53;
            AIM.byteWeaponState = 2;
            bitStream->ResetWritePointer();
            bitStream->Write(Packet);
            bitStream->Write((PCHAR)&AIM, sizeof(stAimData));
            byte localware = 0;
            do
            {
                BitStream(bitStream);
                ++localware;
            }
            while (localware != 10);
        }
    return true;
}

Не работает... Что я сделал не так?
Да вырежи его из исходников лапирулы и не парся.
И да там не нужен тот цикл, я затупил и 10 раз переписывал пакет перед отправкой, оно конечно то работает но а нах надо :D