mirror of
https://github.com/dashr9230/SA-MP.git
synced 2024-12-22 22:47:29 +08:00
[bot] Add few CNetGame stubs
This commit is contained in:
parent
6a8b5aeae9
commit
f0516a9467
@ -31,6 +31,7 @@
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/samp-npc.exe"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="TRUE"
|
||||
@ -76,6 +77,7 @@
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/samp-npc.exe"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="TRUE"
|
||||
@ -108,6 +110,16 @@
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="net"
|
||||
Filter="">
|
||||
<File
|
||||
RelativePath=".\net\netgame.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\net\netgame.h">
|
||||
</File>
|
||||
</Filter>
|
||||
<File
|
||||
RelativePath=".\bot.rc">
|
||||
</File>
|
||||
|
46
bot/main.cpp
46
bot/main.cpp
@ -2,6 +2,7 @@
|
||||
#include "main.h"
|
||||
|
||||
GAME_SETTINGS tSettings;
|
||||
CNetGame *pNetGame=0;
|
||||
|
||||
void InitSettingsFromCommandLine(char * szCmdLine);
|
||||
|
||||
@ -16,8 +17,11 @@ void InitSettingsFromCommandLine(char * szCmdLine);
|
||||
-n -> NPC's name
|
||||
-m -> script name
|
||||
*/
|
||||
// Absolutely no indication it is named npc or bot...
|
||||
int main (int argc, char** argv)
|
||||
{
|
||||
logprintf("----- NPC Starting -----");
|
||||
|
||||
char szCmdLine[1024];
|
||||
memset(szCmdLine,0,1024);
|
||||
|
||||
@ -31,14 +35,54 @@ int main (int argc, char** argv)
|
||||
}
|
||||
InitSettingsFromCommandLine(szCmdLine);
|
||||
|
||||
pNetGame = new CNetGame();
|
||||
pNetGame->Init(tSettings.szConnectHost,atoi(tSettings.szConnectPort),
|
||||
tSettings.szNickName,tSettings.szConnectPass,tSettings.szModeName);
|
||||
|
||||
#ifdef WIN32
|
||||
timeBeginPeriod(5);
|
||||
#endif
|
||||
|
||||
// TODO: main
|
||||
// Absolutely no indication it is named npc or bot...
|
||||
|
||||
while(1) {
|
||||
pNetGame->Process();
|
||||
SLEEP(5);
|
||||
|
||||
/*
|
||||
v5 = sub_80AC1DC(pNetGame);
|
||||
if(sub_80AC1E6(pNetGame) == 2 ||
|
||||
!(unsigned __int8)(*(int (__cdecl **)(int))(*(_DWORD *)v5 + 76))(v5))
|
||||
break;
|
||||
*/
|
||||
}
|
||||
|
||||
delete pNetGame;
|
||||
|
||||
logprintf("----- NPC: End -----");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//----------------------------------------------------
|
||||
|
||||
void logprintf(char* format, ...)
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, format);
|
||||
|
||||
char buffer[2048];
|
||||
vsprintf(buffer, format, ap);
|
||||
|
||||
#ifdef WIN32
|
||||
OutputDebugString(buffer);
|
||||
#endif
|
||||
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
//----------------------------------------------------
|
||||
|
||||
void SetStringFromCommandLine(char* szCmdLine, char* szString);
|
||||
|
||||
void InitSettingsFromCommandLine(char * szCmdLine)
|
||||
|
@ -2,9 +2,14 @@
|
||||
|
||||
#ifdef WIN32
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#define SLEEP(x) { Sleep(x); }
|
||||
|
||||
#include <windows.h>
|
||||
#include <mmsystem.h>
|
||||
#else
|
||||
#define SLEEP(x) { usleep(x * 1000); }
|
||||
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
#define MAX_SETTINGS_STRING 256
|
||||
@ -20,3 +25,6 @@ typedef struct _GAME_SETTINGS {
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "net/netgame.h"
|
||||
|
||||
void logprintf(char* format, ...);
|
||||
|
165
bot/net/netgame.cpp
Normal file
165
bot/net/netgame.cpp
Normal file
@ -0,0 +1,165 @@
|
||||
|
||||
#include "../main.h"
|
||||
|
||||
//----------------------------------------------------
|
||||
|
||||
CNetGame::CNetGame()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//----------------------------------------------------
|
||||
|
||||
CNetGame::~CNetGame()
|
||||
{
|
||||
// TODO: ~CNetGame (W: 00416D50 L: 080ACFDE)
|
||||
/*
|
||||
(*(void (__cdecl **)(int, _DWORD, _DWORD))(*(_DWORD *)this->field_0 + 12))(this->field_0, 0, 0);
|
||||
sub_80B1B18(this->field_0);
|
||||
sub_80B7942(this->field_0);
|
||||
sub_80712C8(this->field_0);
|
||||
if ( this->field_386 )
|
||||
{
|
||||
s = (void *)this->field_386;
|
||||
if ( s )
|
||||
{
|
||||
sub_80A9434(s);
|
||||
operator delete(s);
|
||||
}
|
||||
this->field_386 = 0;
|
||||
}
|
||||
if ( this->field_38A )
|
||||
{
|
||||
v4 = (void *)this->field_38A;
|
||||
if ( v4 )
|
||||
{
|
||||
sub_80B8160(v4);
|
||||
operator delete(v4);
|
||||
}
|
||||
this->field_38A = 0;
|
||||
}
|
||||
if ( this->field_4 )
|
||||
{
|
||||
v3 = (void *)this->field_4;
|
||||
if ( v3 )
|
||||
{
|
||||
sub_80B1FF8(v3);
|
||||
operator delete(v3);
|
||||
}
|
||||
this->field_4 = 0;
|
||||
}
|
||||
if ( this->field_8 )
|
||||
{
|
||||
v2 = (void *)this->field_8;
|
||||
if ( v2 )
|
||||
{
|
||||
sub_80B9470(v2);
|
||||
operator delete(v2);
|
||||
}
|
||||
this->field_8 = 0;
|
||||
}*/
|
||||
}
|
||||
|
||||
//----------------------------------------------------
|
||||
|
||||
void CNetGame::Init(char *a2, int a3, char *a4, char *a5, char *a6)
|
||||
{
|
||||
// TODO: CNetGame::Init (W: 00416490 L: 080AD126)
|
||||
|
||||
/*
|
||||
strcpy(this->field_202, "San Andreas Multiplayer");
|
||||
strncpy(this->field_302, src, 0x80u);
|
||||
this->field_382 = a3;
|
||||
v6 = (void *)operator new(0x6Eu);
|
||||
sub_80A940C(v6);
|
||||
this->field_386 = (int)v6;
|
||||
v7 = (void *)operator new(0x19u);
|
||||
sub_80B8036(v7);
|
||||
this->field_38A = (int)v7;
|
||||
v8 = (void *)operator new(0xA04Bu);
|
||||
sub_80B1F4E(v8);
|
||||
this->field_4 = (int)v8;
|
||||
sub_80AFBA2(this->field_4, a4);
|
||||
v9 = (void *)operator new(0x1BD50u);
|
||||
sub_80B9408(v9);
|
||||
this->field_8 = (int)v9;
|
||||
this->field_0 = sub_8070E80();
|
||||
sub_8094DD0((unsigned __int16)a3);
|
||||
sub_80B1714(this->field_0);
|
||||
sub_80B7032(this->field_0);
|
||||
sprintf(byte_810A720, "npcmodes/%s.amx", a6);
|
||||
if ( !(unsigned __int8)sub_80A9448((void *)this->field_386, byte_810A720) )
|
||||
exit(1);
|
||||
(*(void (__cdecl **)(int, char *))(*(_DWORD *)this->field_0 + 20))(this->field_0, a5);
|
||||
(*(void (__cdecl **)(int, char *, _DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)this->field_0 + 8))(
|
||||
this->field_0,
|
||||
src,
|
||||
(unsigned __int16)a3,
|
||||
0,
|
||||
0,
|
||||
10);
|
||||
this->field_C = 1;
|
||||
this->field_14 = 0;
|
||||
this->field_1E = 12;
|
||||
this->field_1F = 0;
|
||||
this->field_20 = 10;
|
||||
this->field_34 = 1006834287;
|
||||
this->field_38 = 0;
|
||||
this->field_10 = 0;
|
||||
this->field_3C = 1;
|
||||
this->field_40 = 0;
|
||||
for ( i = 0; i <= 99; ++i )
|
||||
this->field_4A[i] = 0;
|
||||
this->field_31 = 1;
|
||||
this->field_3E = 0;
|
||||
this->field_3D = 0;
|
||||
memset(&word_80E1600, 0, 0x44u);
|
||||
memset(&word_80E1660, 0, 0x3Fu);
|
||||
memset(&word_80E16C0, 0, 0x109A0u);
|
||||
memset(&word_80F2060, 0, 0xF618u);
|
||||
memset(&word_8101680, 0, 0x5DC0u);
|
||||
memset(&dword_8107440, 0, 0xFA0u);
|
||||
memset(&dword_81083E0, 0, 0x1F40u);
|
||||
memset(&byte_810A320, 0, 0x3E8u);
|
||||
this->field_1DE = 0;
|
||||
this->field_1E2 = 0;
|
||||
this->field_1F2 = sub_80AC0BE();
|
||||
byte_80E16B7 = 0;
|
||||
this->field_1FA = -1;
|
||||
this->field_1FE = -1;
|
||||
srand(0);
|
||||
*/
|
||||
}
|
||||
|
||||
//----------------------------------------------------
|
||||
|
||||
//----------------------------------------------------
|
||||
|
||||
void CNetGame::Process()
|
||||
{
|
||||
// TODO: CNetGame::Process (W: 00418370 L: 080AD6A4)
|
||||
/*
|
||||
v2 = sub_80AC130();
|
||||
sub_80AE6A4(this);
|
||||
if ( this->field_C == 2 )
|
||||
{
|
||||
if ( this->field_386 )
|
||||
sub_80A969E(this->field_386, v2);
|
||||
if ( this->field_38A )
|
||||
sub_80B8610(this->field_38A, (signed __int64)(v2 * 1000.0));
|
||||
if ( byte_810A708 )
|
||||
{
|
||||
if ( this->field_1DE )
|
||||
{
|
||||
sub_80ADFDE(this);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_80AD770(this);
|
||||
byte_80E16B7 = 1;
|
||||
}
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
//----------------------------------------------------
|
55
bot/net/netgame.h
Normal file
55
bot/net/netgame.h
Normal file
@ -0,0 +1,55 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
//----------------------------------------------------
|
||||
|
||||
class CNetGame // size: 910 bytes
|
||||
{
|
||||
private:
|
||||
int field_0; // highly m_pRakClient
|
||||
int field_4;
|
||||
int field_8;
|
||||
int field_C;
|
||||
int field_10;
|
||||
int field_14;
|
||||
char _gap18[6];
|
||||
char field_1E; // m_byteWorldTime ?
|
||||
char field_1F;
|
||||
char field_20;
|
||||
char _gap21[16];
|
||||
char field_31;
|
||||
char _gap32[2];
|
||||
int field_34;
|
||||
int field_38;
|
||||
char field_3C;
|
||||
char field_3D;
|
||||
char field_3E;
|
||||
char _gap3F;
|
||||
char field_40;
|
||||
char _gap41[9];
|
||||
int field_4A[100];
|
||||
char _gap1DA[4];
|
||||
int field_1DE;
|
||||
int field_1E2;
|
||||
char _gap1E6[12];
|
||||
int field_1F2;
|
||||
char _gap1F6[4];
|
||||
int field_1FA;
|
||||
int field_1FE;
|
||||
char field_202[256];
|
||||
char field_302[128];
|
||||
int field_382;
|
||||
int field_386;
|
||||
int field_38A;
|
||||
|
||||
public:
|
||||
|
||||
CNetGame();
|
||||
~CNetGame();
|
||||
|
||||
void Init(char *a2, int a3, char *a4, char *a5, char *a6);
|
||||
void Process();
|
||||
|
||||
};
|
||||
|
||||
//----------------------------------------------------
|
Loading…
Reference in New Issue
Block a user