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

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

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

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

Собственно назревает вопрос. Нахуя?
Есть класс описывающий игрока. Игроков много, каждый должен выполнять разные задачи. Удобнее это сделать, через скриптовый язык. У каждого игрока должен быть свой скрипт на Lua. Вызов определенных методов игрока должен вызывать соответствующие коллбэки в Lua. И наоборот, вызов определенных функций в Lua, должен вызывать методы в классе. Так я смогу легко прописать логику каждому игроку.
 
Ответить с цитированием

  #2  
Старый 05.04.2017, 14:51
444555
Новичок
Регистрация: 18.06.2014
Сообщений: 24
С нами: 6263906

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

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

Есть класс описывающий игрока. Игроков много, каждый должен выполнять разные задачи. Удобнее это сделать, через скриптовый язык. У каждого игрока должен быть свой скрипт на Lua. Вызов определенных методов игрока должен вызывать соответствующие коллбэки в Lua. И наоборот, вызов определенных функций в Lua, должен вызывать методы в классе. Так я смогу легко прописать логику каждому игроку.
я так и не понял, зачем вызывать колбеки в луа, если можно вызывать их в плюсах
 
Ответить с цитированием

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

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

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

я так и не понял, зачем вызывать колбеки в луа, если можно вызывать их в плюсах
Затем, что у меня много различных поведений для игроков. Каждый из них должен по разному реагировать на вызов колбека. Если я буду вызывать колбэки в луа, то у меня будет один универсальный класс для всех игроков, и у каждого игрока будет свой особый скрипт. Если же все писать в плюсах, то в каждом колбэке придется пихать код для всех типов игроков. Что-то типа switch(тип игрока) и 100 кейсов для каждого типа. И так в каждом колбеке. Лютый говнокод получится.
 
Ответить с цитированием

  #4  
Старый 06.04.2017, 13:34
FYP
Познавший АНТИЧАТ
Регистрация: 09.03.2013
Сообщений: 1,771
С нами: 6935121

Репутация: 233


По умолчанию

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

Как в C++ использовать скрипты на Lua? Погуглил, все советуют разное, кто-то LuaBridge, кто-то swig. Что все-таки лучше использовать?
sol2 - очень годный враппер, используется в муне
 
Ответить с цитированием

  #5  
Старый 09.04.2017, 09:13
444555
Новичок
Регистрация: 18.06.2014
Сообщений: 24
С нами: 6263906

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

Указатели и их переменные выглядят вот так:

C:





Код:
int
dpId
;
byte dS
;
TCHAR title
;
TCHAR descr
;
TCHAR b1
;
TCHAR b2
;
int
*
dpIdP
=
&
dpId
;
byte
*
dSP
=
&
dS
;
TCHAR
*
titleP
=
&
title
;
TCHAR
*
descrP
=
&
descr
;
TCHAR
*
b1P
=
&
b1
;
TCHAR
*
b2P
=
&
b2
;


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

C:





Код:
bool CALLBACK
OP
(
stRakNetHookParams
*
params
)
{
if
(
params
->
packetId
==
61
)
{
params
->
bitStream
->
Read
(
*
dpIdP
)
;
params
->
bitStream
->
Read
(
*
dSP
)
;
params
->
bitStream
->
Read
(
*
titleP
)
;
params
->
bitStream
->
Read
(
*
descrP
)
;
params
->
bitStream
->
Read
(
*
b1P
)
;
params
->
bitStream
->
Read
(
*
b2P
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
444444
,
*
dpIdP
)
;
}
}


Вот так выглядит ошибка:

Код:





Код:
невозможно преобразовать аргумент 2 из "int" в "const char *"


Как вывести в чат сообщение через bool callback (хук), используя указатель на переменную вместо переменной?

Примечательно то, что если выводить не указатель а саму переменную, вывод будет нормальный не смотря на то что он не const char, однако в случае с указателем как раз на это ссылается студия.

И главный вопрос. В чём конкретно я ошибся?
 
Ответить с цитированием

  #6  
Старый 09.04.2017, 10:03
BlackKnigga
Постоянный
Регистрация: 10.01.2016
Сообщений: 922
С нами: 5441999

Репутация: 133


По умолчанию

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

Указатели и их переменные выглядят вот так:

C:





Код:
int
dpId
;
byte dS
;
TCHAR title
;
TCHAR descr
;
TCHAR b1
;
TCHAR b2
;
int
*
dpIdP
=
&
dpId
;
byte
*
dSP
=
&
dS
;
TCHAR
*
titleP
=
&
title
;
TCHAR
*
descrP
=
&
descr
;
TCHAR
*
b1P
=
&
b1
;
TCHAR
*
b2P
=
&
b2
;


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

C:





Код:
bool CALLBACK
OP
(
stRakNetHookParams
*
params
)
{
if
(
params
->
packetId
==
61
)
{
params
->
bitStream
->
Read
(
*
dpIdP
)
;
params
->
bitStream
->
Read
(
*
dSP
)
;
params
->
bitStream
->
Read
(
*
titleP
)
;
params
->
bitStream
->
Read
(
*
descrP
)
;
params
->
bitStream
->
Read
(
*
b1P
)
;
params
->
bitStream
->
Read
(
*
b2P
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
444444
,
*
dpIdP
)
;
}
}


Вот так выглядит ошибка:

Код:





Код:
невозможно преобразовать аргумент 2 из "int" в "const char *"


Как вывести в чат сообщение через bool callback (хук), используя указатель на переменную вместо переменной?
Примечательно то, что если выводить не указатель а саму переменную, вывод будет нормальный не смотря на то что он не const char, однако в случае с указателем как раз на это ссылается студия.

И главный вопрос. В чём конкретно я ошибся?
А зачем все это извращение?
 
Ответить с цитированием

  #7  
Старый 09.04.2017, 11:35
444555
Новичок
Регистрация: 18.06.2014
Сообщений: 24
С нами: 6263906

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

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

А зачем все это извращение?
Хороший вопрос

Да вот хотел на шести переменных организовать весь плагин, перезаписывая их. Ну, интереса ради, получится ли такое сделать
 
Ответить с цитированием

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

Репутация: 183


По умолчанию

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

Хороший вопрос
Да вот хотел на шести переменных организовать весь плагин, перезаписывая их. Ну, интереса ради, получится ли такое сделать
Опиши задачу.
 
Ответить с цитированием

  #9  
Старый 09.04.2017, 22:06
444555
Новичок
Регистрация: 18.06.2014
Сообщений: 24
С нами: 6263906

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

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

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

Суть самого плагина: нужно при получении showDialog считать все его данные, а заодно вывести на экран чтобы убедиться что всё считало верно, и записало это всё дело в текстовый документ.

Но я не могу проверить валидность данных прямо в игре, т.к. addChatMessage не принимает в качестве строки разыменованный указатель.
 
Ответить с цитированием

  #10  
Старый 09.04.2017, 11:41
BlackKnigga
Постоянный
Регистрация: 10.01.2016
Сообщений: 922
С нами: 5441999

Репутация: 133


По умолчанию

Так юзай обычные, зачем указатели?
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.