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

  #1  
Старый 05.03.2021, 17:51
Compich
Участник форума
Регистрация: 07.10.2015
Сообщений: 237
С нами: 5578435

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

Как отправить сообщение в чат в SAMPFUNCS?
 
Ответить с цитированием

  #2  
Старый 05.03.2021, 18:36
sc6ut
Постоянный
Регистрация: 03.05.2020
Сообщений: 385
С нами: 3174020

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

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

Как отправить сообщение в чат в SAMPFUNCS?
Код:
SF->getSAMP()->getPlayers()->pLocalPlayer->Say("говно");
 
Ответить с цитированием

  #3  
Старый 06.03.2021, 18:27
legendabrn
Участник форума
Регистрация: 08.03.2019
Сообщений: 121
С нами: 3781678

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

как для имгуя можно использовать кириллицу без u8?

в переменной хранится текст

Код:





Код:
ImGui::Text(u8"%s", text);


пытался так, но не получалось
 
Ответить с цитированием

  #4  
Старый 06.03.2021, 19:12
sc6ut
Постоянный
Регистрация: 03.05.2020
Сообщений: 385
С нами: 3174020

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

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

как для имгуя можно использовать кириллицу без u8?
в переменной хранится текст

Код:





Код:
ImGui::Text(u8"%s", text);


пытался так, но не получалось
чтобы использовать переменную text в imgui, тебе надо сначало пеконвертировать её из cp1251 в utf8. вот функция, что делает это к примеру:

C++:





Код:
std
::
string
CP1251_to_UTF8
(
const
char
*
str
)
{
std
::
string res
;
int
result_u
,
result_c
;
result_u
=
MultiByteToWideChar
(
1251
,
0
,
str
,
-
1
,
0
,
0
)
;
if
(
!
result_u
)
{
return
0
;
}
wchar_t
*
ures
=
new
wchar_t
[
result_u
]
;
if
(
!
MultiByteToWideChar
(
1251
,
0
,
str
,
-
1
,
ures
,
result_u
)
)
{
delete
[
]
ures
;
return
0
;
}
result_c
=
WideCharToMultiByte
(
65001
,
0
,
ures
,
-
1
,
0
,
0
,
0
,
0
)
;
if
(
!
result_c
)
{
delete
[
]
ures
;
return
0
;
}
char
*
cres
=
new
char
[
result_c
]
;
if
(
!
WideCharToMultiByte
(
65001
,
0
,
ures
,
-
1
,
cres
,
result_c
,
0
,
0
)
)
{
delete
[
]
cres
;
return
0
;
}
delete
[
]
ures
;
res
.
append
(
cres
)
;
delete
[
]
cres
;
return
res
;
}
 
Ответить с цитированием

  #5  
Старый 07.03.2021, 13:37
legendabrn
Участник форума
Регистрация: 08.03.2019
Сообщений: 121
С нами: 3781678

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

блокировка управления игроком (lockPlayerControl - lua), для плюсов есть адрес?
 
Ответить с цитированием

  #6  
Старый 07.03.2021, 14:08
AdCKuY_DpO4uLa
Постоянный
Регистрация: 05.08.2018
Сообщений: 372
С нами: 4091290

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

C++:





Код:
void
GTAfunc_TogglePlayerControllable
(
bool
bToggle
)
{
DWORD func
=
0x56E870
;
float
fTen
=
10.0f
;
_asm
{
mov ecx
,
0x00B7CD98
push        fTen
        push        bToggle
        call        func
}
}
 
Ответить с цитированием

  #7  
Старый 11.03.2021, 16:54
legendabrn
Участник форума
Регистрация: 08.03.2019
Сообщений: 121
С нами: 3781678

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

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

C++:





Код:
void
GTAfunc_TogglePlayerControllable
(
bool
bToggle
)
{
DWORD func
=
0x56E870
;
float
fTen
=
10.0f
;
_asm
{
mov ecx
,
0x00B7CD98
push        fTen
        push        bToggle
        call        func
}
}

в луа немножко не этот адрес используется
 
Ответить с цитированием

  #8  
Старый 11.03.2021, 17:52
AdCKuY_DpO4uLa
Постоянный
Регистрация: 05.08.2018
Сообщений: 372
С нами: 4091290

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

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

в луа немножко не этот адрес используется
Это имеет большое значение? Человеку нужно было заблокировать управление игроком, функция вполне справляется с этим
 
Ответить с цитированием

  #9  
Старый 08.03.2021, 23:47
Compich
Участник форума
Регистрация: 07.10.2015
Сообщений: 237
С нами: 5578435

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

Как выбрать определенный пункт диалога (DIALOG_STYLE_LIST), нажать первую кнопку, ввести значение в поле диалога (DIALOG_STYLE_INPUT) и опять нажать первую кнопку? (SAMPFUNCS)
 
Ответить с цитированием

  #10  
Старый 09.03.2021, 00:04
sc6ut
Постоянный
Регистрация: 03.05.2020
Сообщений: 385
С нами: 3174020

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

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

Как выбрать определенный пункт диалога (DIALOG_STYLE_LIST), нажать первую кнопку, ввести значение в поле диалога (DIALOG_STYLE_INPUT) и опять нажать первую кнопку? (SAMPFUNCS)
для начала узнаешь айди обоих диалогов

предположим ты узнал и айди первого равен 2011, а айди второго - 2012

C++:





Код:
// затем, вставляешь код функцию которая отправляет ответ диалогу
void
send_dialog_responce
(
unsigned
short
id
,
unsigned
char
responce
,
unsigned
short
list_item
,
const
char
*
text
)
{
BitStream bs
;
bs
.
ResetWritePointer
(
)
;
bs
.
Write
(
id
)
;
bs
.
Write
(
responce
)
;
bs
.
Write
(
list_item
)
;
bs
.
Write
(
static_cast

(
strlen
(
text
)
)
)
;
bs
.
Write
(
text
,
strlen
(
text
)
)
;
SF
->
getRakNet
(
)
->
SendRPC
(
RPC_DialogResponse
,
&
bs
)
;
}
// создаешь переменную отвечающую за этап работы плагина, у нее будет значение 1 или 2
static
uint8_t
stage
=
1
;
// регистрируешь колбэк на приходящии RPC в mainloop
SF
->
getRakNet
(
)
->
registerRakNetCallback
(
RAKHOOK_TYPE_INCOMING_RPC
,
incomingRPC
)
;
bool
__stdcall
incomingRPC
(
stRakNetHookParams
*
params
)
{
// проверяем айди RPC
if
(
params
->
packetId
==
RPC_ScrShowDialog
)
{
// читаем данные диалога, нам нужен только айди
uint16_t
dialogID
;
params
->
bitStream
->
ResetReadPointer
(
)
;
params
->
bitStream
->
Read
(
dialogID
)
;
// проверяем айди диалога и этап
if
(
dialogID
==
/* айди первого диалога */
2011
&&
stage
==
1
)
{
// меняешь этап на 2
stage
=
2
;
// отправляешь нажатие 1 кнопки
send_dialog_responce
(
dialogID
,
1
,
0
,
""
)
;
// по желанию отключаешь показ диалога
return
false
;
}
else
if
(
dialogID
==
/* айди второго диалога */
2012
&&
stage
==
2
)
{
// меняешь этап на 1
stage
=
1
;
// отправляешь нажатие 1 кнопки и нужный текст, к примеру "test"
send_dialog_responce
(
dialogID
,
1
,
0
,
"test"
)
;
// по желанию отключаешь показ диалога
return
false
;
}
}
return
true
;
}
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.

×

Внести депозит

Введите сумму USDT:

Принимается только USDT TRC20. Fake/Flash USDT не засчитывается.

×

Вывести депозит

Сумма USDT:

Ваш USDT TRC20 кошелек:

Заявка будет отправлена администратору.