
05.04.2017, 14:07
|
|
Познающий
Регистрация: 24.02.2017
Сообщений: 75
С нами:
4849680
Репутация:
0
|
|
Сообщение от Dark_Knight
Собственно назревает вопрос. Нахуя?
Есть класс описывающий игрока. Игроков много, каждый должен выполнять разные задачи. Удобнее это сделать, через скриптовый язык. У каждого игрока должен быть свой скрипт на Lua. Вызов определенных методов игрока должен вызывать соответствующие коллбэки в Lua. И наоборот, вызов определенных функций в Lua, должен вызывать методы в классе. Так я смогу легко прописать логику каждому игроку.
|
|
|

05.04.2017, 14:51
|
|
Новичок
Регистрация: 18.06.2014
Сообщений: 24
С нами:
6263906
Репутация:
0
|
|
Сообщение от winrare
Есть класс описывающий игрока. Игроков много, каждый должен выполнять разные задачи. Удобнее это сделать, через скриптовый язык. У каждого игрока должен быть свой скрипт на Lua. Вызов определенных методов игрока должен вызывать соответствующие коллбэки в Lua. И наоборот, вызов определенных функций в Lua, должен вызывать методы в классе. Так я смогу легко прописать логику каждому игроку.
я так и не понял, зачем вызывать колбеки в луа, если можно вызывать их в плюсах
|
|
|

05.04.2017, 15:02
|
|
Познающий
Регистрация: 24.02.2017
Сообщений: 75
С нами:
4849680
Репутация:
0
|
|
Сообщение от 444555
я так и не понял, зачем вызывать колбеки в луа, если можно вызывать их в плюсах
Затем, что у меня много различных поведений для игроков. Каждый из них должен по разному реагировать на вызов колбека. Если я буду вызывать колбэки в луа, то у меня будет один универсальный класс для всех игроков, и у каждого игрока будет свой особый скрипт. Если же все писать в плюсах, то в каждом колбэке придется пихать код для всех типов игроков. Что-то типа switch(тип игрока) и 100 кейсов для каждого типа. И так в каждом колбеке. Лютый говнокод получится.
|
|
|

06.04.2017, 13:34
|
|
Познавший АНТИЧАТ
Регистрация: 09.03.2013
Сообщений: 1,771
С нами:
6935121
Репутация:
233
|
|
Сообщение от winrare
Как в C++ использовать скрипты на Lua? Погуглил, все советуют разное, кто-то LuaBridge, кто-то swig. Что все-таки лучше использовать?
sol2 - очень годный враппер, используется в муне
|
|
|

09.04.2017, 09:13
|
|
Новичок
Регистрация: 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, однако в случае с указателем как раз на это ссылается студия.
И главный вопрос. В чём конкретно я ошибся?
|
|
|

09.04.2017, 10:03
|
|
Постоянный
Регистрация: 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, однако в случае с указателем как раз на это ссылается студия.
И главный вопрос. В чём конкретно я ошибся?
А зачем все это извращение?
|
|
|

09.04.2017, 11:35
|
|
Новичок
Регистрация: 18.06.2014
Сообщений: 24
С нами:
6263906
Репутация:
0
|
|
Сообщение от BlackKnigga
А зачем все это извращение?
Хороший вопрос
Да вот хотел на шести переменных организовать весь плагин, перезаписывая их. Ну, интереса ради, получится ли такое сделать
|
|
|

09.04.2017, 21:34
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Сообщение от 444555
Хороший вопрос 
Да вот хотел на шести переменных организовать весь плагин, перезаписывая их. Ну, интереса ради, получится ли такое сделать
Опиши задачу.
|
|
|

09.04.2017, 22:06
|
|
Новичок
Регистрация: 18.06.2014
Сообщений: 24
С нами:
6263906
Репутация:
0
|
|
Сообщение от Dark_Knight
Опиши задачу.
Дело такое: решил попробовать написать плагин, который будет работать с памятью, которая не будет очищаться при каждом выходе из функции. Для этого я создал переменные и указатели на них.
Суть самого плагина: нужно при получении showDialog считать все его данные, а заодно вывести на экран чтобы убедиться что всё считало верно, и записало это всё дело в текстовый документ.
Но я не могу проверить валидность данных прямо в игре, т.к. addChatMessage не принимает в качестве строки разыменованный указатель.
|
|
|

09.04.2017, 11:41
|
|
Постоянный
Регистрация: 10.01.2016
Сообщений: 922
С нами:
5441999
Репутация:
133
|
|
Так юзай обычные, зачем указатели?
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|