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

CodeDog

Новичок
6
0
Здравствуйте, подскажете пожалуйста как перевести собейт с SA:MP 0.3z на SA:MP 0.3.7
 

Dark_Knight

Me, me and me.
Друг
4,062
2,077
Нет. Находишь адресс функции спавн и меняешь его на новый. К примеру.
До
define FUNC_SPAWN 0x36D0
После
define FUNC_SPAWN 0x0
Без знаний работы с ассемблером ты его не обновишь.
 
  • Нравится
Реакции: CodeDog

0pc0d3R

Потрачен
550
269
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Это что вот так #define FUNC_SPAWN 0x36D0 Это на это заменять 0x36A0
Как все на 0.3.7 перейдут, потом через какое то время адресса выложат если сам не умеешь.
Может и уже есть, не видел.
 
  • Нравится
Реакции: CodeDog

denryazancev00

Новичок
31
3
Скажите почему в любом участке кода где есть
Код:
g_SAMP->
Он выдает ошибки например:
Код:
void SendFakeOnfootSyncData(float fPos[3], float Health, int byteCurrentWeapon, float speed[3])
{
 ONFOOT_SYNC_DATA picSync;
 memset(&picSync, 0, sizeof(ONFOOT_SYNC_DATA));
 ::BitStream bsOnfootSync;
 picSync.byteHealth = Health;
 picSync.byteCurrentWeapon = byteCurrentWeapon;
 picSync.vecPos[0] = fPos[0];
 picSync.vecPos[1] = fPos[1];
 picSync.vecPos[2] = fPos[2];
 picSync.vecMoveSpeed[0] = speed[0];
 picSync.vecMoveSpeed[1] = speed[1];
 picSync.vecMoveSpeed[2] = speed[2];
 bsOnfootSync.Write((BYTE)ID_PLAYER_SYNC);
 bsOnfootSync.Write((PCHAR)&picSync,sizeof(ONFOOT_SYNC_DATA));
 g_SAMP->pRakClientInterface->Send(&bsOnfootSync, HIGH_PRIORITY, UNRELIABLE_SEQUENCED, 0);

}
Он пишет типо:
Код:
Ошибка    1    error C2227: выражение слева от "->Send" должно указывать на тип класса, структуры или объединения либо на универсальный тип    C:\Users\Денис\Desktop\Новая папка\mod_s0beit_sa-master\src\RakClient.cpp    94    1    mod_sa
 

0pc0d3R

Потрачен
550
269
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
У тебя здесь ошибка, ты не указал имя класса.
PHP:
::BitStream bsOnfootSync;
Должно на подобии этого быть
PHP:
RakNet::BitStream bsOnfootSync;
И ты получается обращаешься по указателю на указатель. Оставь там
PHP:
pRakClientInterface->Send(&bsOnfootSync, HIGH_PRIORITY, UNRELIABLE_SEQUENCED, 0);
Если ты соб лапирулы редачишь, то с моего примера ошибок точно не будет.
 
Последнее редактирование:
  • Нравится
Реакции: denryazancev00

denryazancev00

Новичок
31
3
Скажите почему всегда ошибка типо
Код:
 SendFakeOnfootSyncData индефикатор не определен
Хотя я его в RakClient определял
 

denryazancev00

Новичок
31
3
Да все сделал.
Структуру добавил, все объявил, но почему-то всегда все равно ошибка вылетает
LWcuyOZ.png
 

0pc0d3R

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

denryazancev00

Новичок
31
3
Покажи сигнатуру определения.
В РакКлиент.кпп
Код:
void SendFakeOnfootSyncData(float fPos[3], float Health, int byteCurrentWeapon, float speed[3])
{
ONFOOT_SYNC_DATA picSync;
memset(&picSync, 0, sizeof(ONFOOT_SYNC_DATA));
BitStream bsOnfootSync;
picSync.byteHealth = Health;
picSync.byteCurrentWeapon = byteCurrentWeapon;
picSync.vecPos[0] = fPos[0];
picSync.vecPos[1] = fPos[1];
picSync.vecPos[2] = fPos[2];
picSync.vecMoveSpeed[0] = speed[0];
picSync.vecMoveSpeed[1] = speed[1];
picSync.vecMoveSpeed[2] = speed[2];
bsOnfootSync.Write((BYTE)ID_PLAYER_SYNC);
bsOnfootSync.Write((PCHAR)&picSync,sizeof(ONFOOT_SYNC_DATA));
g_RakClient->Send(&bsOnfootSync, HIGH_PRIORITY, UNRELIABLE_SEQUENCED, 0);

}
В РакКлиент.х
Код:
typedef struct _ONFOOT_SYNC_DATA
{
#pragma pack ( 1 )
WORD lrAnalog;
WORD udAnalog;
WORD wKeys;
float vecPos[3];
float fQuaternion[4];
BYTE byteHealth;
BYTE byteArmour;
BYTE byteCurrentWeapon;
BYTE byteSpecialAction;
float vecMoveSpeed[3];
float vecSurfOffsets[3];
WORD wSurfInfo;
int iCurrentAnimationID;
} ONFOOT_SYNC_DATA;
Там же
Код:
 void SendFakeOnfootSyncData(float fPos[3], float speed[3]);
Короче, ты как функу вызываешь?

Вызывай так
g_RakClient->SendFakeOnfootSyncData(Бла, Бла, Бла)
Я так и делаю, но в любом случае выдает ошибку
 

denryazancev00

Новичок
31
3
Скажите написал, такой типо "чекпоинт-мастер"
Код:
void cheat_handle_gotocheck(){
    if( cheat_state->_generic.gotocheck == 1 )
{ 
  for(int i=0; i <= 32; i++) { 
   float x = *(float *)(0xC7DD58+48+160*i); 
   float y = *(float *)(0xC7DD58+52+160*i); 
   float z = *(float *)(0xC7DD58+56+160*i); 
   if((x > 2695 && x < 2696 && y > -1705 && y < -1704) || (x > 1099 && x < 1100 && y > 1601 && y < 1602) || (x == 0 && y == 0) || *(WORD *)(0xC7DD58+80+160*i) != 1) continue; 
   else { 
    float pos[3] = {x,y,z+1}; 
    cheat_teleport(pos,0);
        Sleep(9000);
        {
            return;
        }
    }
  }
    }
}
Вроде работает, но почему при запуске так лагает?