HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1481  
Старый 27.04.2017, 16:40
ishi
Постоянный
Регистрация: 17.01.2014
Сообщений: 493
С нами: 6483143

Репутация: 93
По умолчанию

Цитата:
Сообщение от SR_team  

int a = reinterpret_cast(&fout);
Это ведь можно использовать как сам fout, ссылаясь на него? Так примерно:

*a
 
Ответить с цитированием

  #1482  
Старый 27.04.2017, 17:17
Dark_Knight
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами: 6921957

Репутация: 183


По умолчанию

Какая у тебя задача вообще ? А то щас настроеш код из говна и палок и потом хер разберешься почему у тебя крашит.
 
Ответить с цитированием

  #1483  
Старый 27.04.2017, 17:22
ishi
Постоянный
Регистрация: 17.01.2014
Сообщений: 493
С нами: 6483143

Репутация: 93
По умолчанию

Цитата:
Сообщение от Dark_Knight  

Какая у тебя задача вообще ? А то щас настроеш код из говна и палок и потом хер разберешься почему у тебя крашит.
Отлично сказано.

Да вот я хотел поставить условие на проверку существования файла для логов, и открывать файл создавая указатель для записи, в зависимости от его наличия - есть файл, пишем с конца . Нет файла - создаём заново. Вот. И поскольку заполнение лога идёт через хук, мне требуется создать указатель на файл, (fout) в mainloop, чтобы он был доступен коллбеку irpc, вот код если не понятно:

Цитата:
Сообщение от Спойлер  


C++:





Код:
#include 
#include 
#include 
#include 
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
#include "SFAPI\SFRakNet.h"
#include 
#include 
#include 
#include 
#include 
#include "qwe\main.h"
#pragma comment(lib, "shlwapi.lib")
using
namespace
std
;
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
int
*
a
=
nullptr
;
bool
CALLBACK
irpc
(
stRakNetHookParams
*
params
)
{
if
(
params
->
packetId
==
ScriptRPCEnumeration
::
RPC_ScrClientMessage
)
// id: 93 thanks for MISTER_GONWIK
{
D3DCOLOR color
=
-
1
;
int
length
=
0
;
char
message
[
144
]
{
0
}
;
params
->
bitStream
->
Read
(
color
)
;
params
->
bitStream
->
Read
(
length
)
;
params
->
bitStream
->
Read
(
message
,
length
)
;
//sss[len] = '\0';
if
(
strcmp
(
string
(
message
)
.
c_str
(
)
,
" "
)
==
0
)
return
false
;
else
{
//SF->getSAMP()->getChat()->AddChatMessage(555555, "%s", string(message).c_str());
//fout 
GetSystemState
(
)
!=
eSystemState
::
GS_PLAYING_GAME
)
return
;
if
(
!
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
return
;
init
=
true
;
char
meow
[
MAX_PATH
]
;
GetCurrentDirectory
(
sizeof
(
meow
)
,
meow
)
;
if
(
PathFileExists
(
strcat
(
meow
,
"/yiffme"
)
)
)
{
ofstream
fout
(
"yiffme"
,
ios
::
app
)
;
*
a
=
reinterpret_cast

(
&
fout
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
555555
,
"file exist"
)
;
}
else
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
555555
,
"file doesnt exist"
)
;
fout

getRakNet
(
)
->
registerRakNetCallback
(
RakNetScriptHookType
::
RAKHOOK_TYPE_INCOMING_RPC
,
irpc
)
;
}
}


 
Ответить с цитированием

  #1484  
Старый 27.04.2017, 19:21
MISTER_GONWIK
Познавший АНТИЧАТ
Регистрация: 09.03.2013
Сообщений: 1,262
С нами: 6935116

Репутация: 183


По умолчанию

Цитата:
Сообщение от Снежок  

Отлично сказано.
Да вот я хотел поставить условие на проверку существования файла для логов, и открывать файл создавая указатель для записи, в зависимости от его наличия - есть файл, пишем с конца . Нет файла - создаём заново. Вот. И поскольку заполнение лога идёт через хук, мне требуется создать указатель на файл, (fout) в mainloop, чтобы он был доступен коллбеку irpc, вот код если не понятно:
Цитата:
Сообщение от Спойлер  


C++:





Код:
#include 
#include 
#include 
#include 
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
#include "SFAPI\SFRakNet.h"
#include 
#include 
#include 
#include 
#include 
#include "qwe\main.h"
#pragma comment(lib, "shlwapi.lib")
using
namespace
std
;
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
int
*
a
=
nullptr
;
bool
CALLBACK
irpc
(
stRakNetHookParams
*
params
)
{
if
(
params
->
packetId
==
ScriptRPCEnumeration
::
RPC_ScrClientMessage
)
// id: 93 thanks for MISTER_GONWIK
{
D3DCOLOR color
=
-
1
;
int
length
=
0
;
char
message
[
144
]
{
0
}
;
params
->
bitStream
->
Read
(
color
)
;
params
->
bitStream
->
Read
(
length
)
;
params
->
bitStream
->
Read
(
message
,
length
)
;
//sss[len] = '\0';
if
(
strcmp
(
string
(
message
)
.
c_str
(
)
,
" "
)
==
0
)
return
false
;
else
{
//SF->getSAMP()->getChat()->AddChatMessage(555555, "%s", string(message).c_str());
//fout 
GetSystemState
(
)
!=
eSystemState
::
GS_PLAYING_GAME
)
return
;
if
(
!
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
return
;
init
=
true
;
char
meow
[
MAX_PATH
]
;
GetCurrentDirectory
(
sizeof
(
meow
)
,
meow
)
;
if
(
PathFileExists
(
strcat
(
meow
,
"/yiffme"
)
)
)
{
ofstream
fout
(
"yiffme"
,
ios
::
app
)
;
*
a
=
reinterpret_cast

(
&
fout
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
555555
,
"file exist"
)
;
}
else
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
555555
,
"file doesnt exist"
)
;
fout

getRakNet
(
)
->
registerRakNetCallback
(
RakNetScriptHookType
::
RAKHOOK_TYPE_INCOMING_RPC
,
irpc
)
;
}
}


Это лишь пример накидал, но не пользуйся такими дерьмовыми функциями как:

C++:





Код:
GetCurrentDirectory
(
.
.
)
,
PathFileExists
(
.
.
)
и т
.
д
.


займись изучением чего-то более классного и функционального

C++:





[CODE]
// после всех инклудов
#include
namespace
fs
=
std
::
experimental
::
filesystem
;
// самой первой функцией
std
::
ofstream
&
log
(
)
{
static
std
::
ofstream logFile
;
if
(
logFile
.
is_open
(
)
==
false
)
{
fs
::
path workDirectoryPath
=
fs
::
current_path
(
)
/
"SAMPFUNCS"
/
"Meow"
;
if
(
!
fs
::
exists
(
workDirectoryPath
)
)
fs
::
create_directories
(
workDirectoryPath
)
;
fs
::
path logFilePath
=
workDirectoryPath
/
"yiffme.fr"
;
bool
fileExists
=
fs
::
exists
(
logFilePath
)
;
logFile
.
open
(
logFilePath
.
string
(
)
,
std
::
ios
::
app
)
;
if
(
fileExists
==
true
)
logFile



ну и mainloop в твоём случае должен выглядеть вот так:

C++:





[CODE]
void
CALLBACK
mainloop
(
)
{
static
bool
init
=
false
;
if
(
!
init
)
{
if
(
GAME
==
nullptr
)
return
;
if
(
!
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
return
;
SF
->
getRakNet
(
)
->
registerRakNetCallback
(
RakNetScriptHookType
::
RAKHOOK_TYPE_INCOMING_RPC
,
incomingRPC
)
;
log
(
)



а irpc

C++:





[CODE]
bool
CALLBACK
incomingRPC
(
stRakNetHookParams
*
params
)
{
if
(
params
->
packetId
==
ScriptRPCEnumeration
::
RPC_ScrClientMessage
)
// id: 93 thanks for MISTER_GONWIK
{
D3DCOLOR color
=
-
1
;
int
length
=
0
;
char
message
[
144
]
{
0
}
;
params
->
bitStream
->
Read
(
color
)
;
params
->
bitStream
->
Read
(
length
)
;
params
->
bitStream
->
Read
(
message
,
length
)
;
if
(
!
strcmp
(
message
,
" "
)
)
return
false
;
log
(
)

 
Ответить с цитированием

  #1485  
Старый 28.04.2017, 09:09
winrare
Познающий
Регистрация: 24.02.2017
Сообщений: 75
С нами: 4849680

Репутация: 0
По умолчанию

Запустил через RakSAMP три бота на advance. Примерно через 10 минут двух ботов телепортировал к себе администратор, а ещё через минуту забанил всех трех за использование "песочницы".

Как он определил, что я использую "песочницу"? Скорее всего посмотрел, что одинаковые ip, но как тогда можно обмануть админов? Можно сделать, чтобы боты двигались, но администратор может телепортировать в любую точку и бот тупо может забежать в стену.
 
Ответить с цитированием

  #1486  
Старый 28.04.2017, 09:26
MISTER_GONWIK
Познавший АНТИЧАТ
Регистрация: 09.03.2013
Сообщений: 1,262
С нами: 6935116

Репутация: 183


По умолчанию

Цитата:
Сообщение от winrare  

Запустил через RakSAMP три бота на advance. Примерно через 10 минут двух ботов телепортировал к себе администратор, а ещё через минуту забанил всех трех за использование "песочницы".
Как он определил, что я использую "песочницу"? Скорее всего посмотрел, что одинаковые ip, но как тогда можно обмануть админов? Можно сделать, чтобы боты двигались, но администратор может телепортировать в любую точку и бот тупо может забежать в стену.
проще сказать, что никак.
 
Ответить с цитированием

  #1487  
Старый 28.04.2017, 09:42
winrare
Познающий
Регистрация: 24.02.2017
Сообщений: 75
С нами: 4849680

Репутация: 0
По умолчанию

Цитата:
Сообщение от MISTER_GONWIK  

проще сказать, что никак.
А если не проще? Я не ищу легких путей.
 
Ответить с цитированием

  #1488  
Старый 28.04.2017, 10:08
MISTER_GONWIK
Познавший АНТИЧАТ
Регистрация: 09.03.2013
Сообщений: 1,262
С нами: 6935116

Репутация: 183


По умолчанию

Цитата:
Сообщение от winrare  

А если не проще? Я не ищу легких путей.
для тебя это невозможно, хочешь чтоб бот бегал как человек, пиши систему путей, но учти, у тебя нет никакой карты коллизии
 
Ответить с цитированием

  #1489  
Старый 28.04.2017, 10:28
winrare
Познающий
Регистрация: 24.02.2017
Сообщений: 75
С нами: 4849680

Репутация: 0
По умолчанию

Цитата:
Сообщение от MISTER_GONWIK  

для тебя это невозможно, хочешь чтоб бот бегал как человек, пиши систему путей, но учти, у тебя нет никакой карты коллизии
Такая система мне нужна в случае, если админ уже телепортировал меня. А что если просто не доходить до этого? Скорее всего он вычисляет меня по ip (если есть ещё варианты, скажи), значит если будут разные ip, то все будет нормально. Разные ip можно получить используя прокси, но я не знаю, поддерживает ли RakSAMP или хотя бы RakNet прокси.
 
Ответить с цитированием

  #1490  
Старый 28.04.2017, 10:44
MISTER_GONWIK
Познавший АНТИЧАТ
Регистрация: 09.03.2013
Сообщений: 1,262
С нами: 6935116

Репутация: 183


По умолчанию

Цитата:
Сообщение от winrare  

Такая система мне нужна в случае, если админ уже телепортировал меня. А что если просто не доходить до этого? Скорее всего он вычисляет меня по ip (если есть ещё варианты, скажи), значит если будут разные ip, то все будет нормально. Разные ip можно получить используя прокси, но я не знаю, поддерживает ли RakSAMP или хотя бы RakNet прокси.
1. обычный раксамп не поддерживает работу через прокси, но сделать можно, как это сделать, думай сам.

2. я не админ на сервере, так что могут сказать лишь предположительно, что есть команда, по которой отображаются текущие онлайн аккаунты с одного ип (как ты и подумал), для раксампа нужны прокси UDP, их ты не найдёшь, только если с помощью программ hotspot shield и прочих.

3. сомневаюсь что всё это спасёт тебя от банов, ведь они всё равно палятся (я про ботов)
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.