Другое SAMPFUNCS | API C++

Uztor

Новичок
42
0
Что не так?
Код:
//NAMETAGS
for (int i = 0; i < 1000; i++)
{
    stRemotePlayer *pPlayer = SF->getSAMP()->getPlayers()->pRemotePlayer[i];
    if (SF->getSAMP()->getPlayers()->IsPlayerDefined(i))
    {
        char buffer[24];
        sprintf(buffer, "%s", pPlayer->szPlayerName);
        SF->getSAMP()->getInfo()->pPools->pPool_Text3D->Create3DText(i, buffer,0.00,5000.0,true,i);
    }
}
 

AxweII

Известный
5
0
Код:
void _cdecl cmd_show_info_player( char *param )
{
    int    i = atoi( param );

    char buf[128];

    stRemotePlayer *pPlayer = SF->getSAMP()->getPlayers()->pRemotePlayer[ i ];

    sprintf_s( 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 CALLBACK mainloop(void)
{
    static bool init = false;
    if(!init)
    {
        if(!SF->getSAMP()->IsInitialized()) return;
        SF->getSAMP()->registerChatCommand("ubot", cmd_show_info_player);
        init = true;
    }
}
При в ходе крашит игру. Если убрать регистрацию команды то все норм. Где ошибка?
 

PoccoJI

Новичок
135
10
Код:
void _cdecl cmd_show_info_player( char *param )
{
    int    i = atoi( param );

    char buf[128];

    stRemotePlayer *pPlayer = SF->getSAMP()->getPlayers()->pRemotePlayer[ i ];

    sprintf_s( 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 CALLBACK mainloop(void)
{
    static bool init = false;
    if(!init)
    {
        if(!SF->getSAMP()->IsInitialized()) return;
        SF->getSAMP()->registerChatCommand("ubot", cmd_show_info_player);
        init = true;
    }
}
При в ходе крашит игру. Если убрать регистрацию команды то все норм. Где ошибка?


void cmd_show_info_player(char *param);
pPlayer->pPlayerData->iAFKState == 2
== 2 убери
 

AxweII

Известный
5
0
Даже если так сделать:
Код:
#include <Windows.h>
#include <string>
#include <assert.h>
#include "CSAMPFUNCS.h"

CSAMPFUNCS *SF = new CSAMPFUNCS();


void _cdecl cmd_show_info_player( char *param ){};

void CALLBACK mainloop(void)
{
    static bool init = false;
    if(!init)
    {
        if(!SF->getSAMP()->IsInitialized()) return;
        SF->getSAMP()->registerChatCommand("ubot", 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 );
    }
    return true;
Все равно краш. Проблема именно в регистрации команды, если в место нее засунуть вывод сообщения в чат то все пашет.
 

PoccoJI

Новичок
135
10
Даже если так сделать:
Код:
#include <Windows.h>
#include <string>
#include <assert.h>
#include "CSAMPFUNCS.h"

CSAMPFUNCS *SF = new CSAMPFUNCS();


void _cdecl cmd_show_info_player( char *param ){};

void CALLBACK mainloop(void)
{
    static bool init = false;
    if(!init)
    {
        if( !SF->getSAMP()->IsInitialized() ) 
             return; 
        if(!SF->getSAMP()->IsInitialized()) return;
        SF->getSAMP()->registerChatCommand("ubot", 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 );
    }
    return true;
Все равно краш. Проблема именно в регистрации команды, если в место нее засунуть вывод сообщения в чат то все пашет.
Код:
#include <windows.h>
#include <string>
#include <assert.h>
#include "CSAMPFUNCS.h"

CSAMPFUNCS *SF = new CSAMPFUNCS();


void cmd_show_info_player( char *param )
{
    int    i = atoi( param );

    char buf[128];

    stRemotePlayer *pPlayer = SF->getSAMP()->getPlayers()->pRemotePlayer[ i ];

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

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

void CALLBACK mainloop(void)
{
    static bool init = false;
    if(!init)
    {
        if(!SF->getSAMP()->IsInitialized()) return;
        SF->getSAMP()->registerChatCommand("ubot",(CMDPROC) 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 );
    }
    return true;
}
вот абсалютли рабочий код
вот что сделал SF->getSAMP()->registerChatCommand("ubot",(CMDPROC) cmd_show_info_player);
 
Последнее редактирование:
  • Нравится
Реакции: XyJluraH_J

AxweII

Известный
5
0
Однако все равно крашит. Что то тут не так.. Ведь без этой гребаной регистрации команды все работает!
 

CarLCas

Известный
161
118
Подскажите, пожалуйста, как отправить команду/текст в чат?
 

Uztor

Новичок
42
0
Hello, what is wrong?
Код:
if (params->packetId == ScriptRPCEnumeration::RPC_ScrSetPlayerHealth)
{
    short int sPlayerID;
    float health;
    char buf[256];
    params->bitStream->Read(sPlayerID);
    params->bitStream->Read(health);
    params->bitStream->ResetReadPointer();
    sprintf(buf, "%s (%d) health set to %.1f gesetzt", SF->getSAMP()->getPlayers()->GetPlayerName(sPlayerID), sPlayerID, health);
    log(buf);
}
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,468
Maybe log(buf);?
Change to SF->log(buf); or... it's(log(buf)) your function?
 

urShadow

Потрачен
Автор темы
21
27
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Код:
if (params->packetId == ScriptRPCEnumeration::RPC_ScrSetPlayerHealth)
{
float health;
char buf[128];
params->bitStream->ResetReadPointer();
params->bitStream->Read(health);
params->bitStream->ResetReadPointer();
sprintf(buf, "My health set to %.2f", health);
SF->Log( buf );
}
 

0pc0d3R

Потрачен
550
270
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Распишите пожалуйста по подробнее о структуре stBulletData, буду очень благодарен. А то я не понял какие параметры что значат. Допустим fOrigin, fCenter и fTarget. И еще подскажите как получать ближающего удаленного игрока.