 |
|

07.08.2016, 14:52
|
|
Постоянный
Регистрация: 14.06.2015
Сообщений: 402
С нами:
5744580
Репутация:
28
|
|
Сообщение от loremi735
C++:
Код:
void
CALLBACK
cmd_show_info_player
(
std
::
string param
)
{
if
(
param
.
empty
(
)
)
return
;
int
i
=
std
::
stoi
(
param
)
;
char
buf
[
128
]
;
stRemotePlayer
*
pPlayer
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
i
]
;
if
(
!
pPlayer
)
return
;
sprintf
(
buf
,
"Nickname - %s, Ping - %d, Score - %d, isNPC - %d, AFKState - %d"
,
pPlayer
->
szPlayerName
,
pPlayer
->
iPing
,
pPlayer
->
iScore
,
pPlayer
->
iIsNPC
,
pPlayer
->
pPlayerData
->
iAFKState
==
2
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
buf
)
;
}
;
Почему-то функция выходит после if(!pPlayer).
Насколько я понимаю, что-то не так с указателем на объект класса stRemotePlayer; но i == 0, как я и указал в команде: /showinfo 0, и игрок с таким ID есть, но всё равно !pPlayer возвращает true, и из-за этого выполнение функции прекращается. Что не так?
ты это не на свой ид юзаешь?
|
|
|

07.08.2016, 15:41
|
|
Новичок
Регистрация: 26.07.2016
Сообщений: 11
С нами:
5157565
Репутация:
0
|
|
Сообщение от Woofing Giraffe
ты это не на свой ид юзаешь?
Ок, попробовал на других игроках и работает. Благодарю
|
|
|

08.08.2016, 09:00
|
|
Новичок
Регистрация: 29.08.2013
Сообщений: 12
С нами:
6686454
Репутация:
0
|
|
Как работать с CHandlingEntry
Код:
Код:
for (int i = 0; i GetPools()->GetVehicle(i)) {
continue;
}
CHandlingEntry *entry = GAME->GetPools()->GetVehicle(i)->GetHandlingData();
entry->SetABS(true);
}
моментально крашит игру при вызове любого метода этого класса.:help:
|
|
|

08.08.2016, 09:38
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
После получение CHandlingEntry делай проверку на валидность
Код:
Код:
if(entry){
entry->SetABS(true);
} else {
SF->Log("CHandlingEntry empty");
}
|
|
|

08.08.2016, 10:12
|
|
Новичок
Регистрация: 29.08.2013
Сообщений: 12
С нами:
6686454
Репутация:
0
|
|
Сообщение от Dark_Knight
После получение CHandlingEntry делай проверку на валидность
Код:
Код:
if(entry){
entry->SetABS(true);
} else {
SF->Log("CHandlingEntry empty");
}
Они все пустые или я что-то не так делаю
|
|
|

08.08.2016, 10:20
|
|
Участник форума
Регистрация: 12.07.2013
Сообщений: 161
С нами:
6755146
Репутация:
78
|
|
Не путай SAMP ID авто и GTA ID (Handle).
C++:
Код:
if
(
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pVehicle
->
iIsListed
[
i
]
)
GAME
->
GetPools
(
)
->
GetVehicle
(
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pVehicle
->
GetCarHandleFromSAMPCarID
(
i
)
)
;
|
|
|

08.08.2016, 15:40
|
|
Постоянный
Регистрация: 17.02.2014
Сообщений: 611
С нами:
6438231
Репутация:
133
|
|
PHP:
Код:
void
CALLBACK
textflood
(
std
:
:
string param
)
{
if
(
param
.
empty
(
)
)
return
;
char b
[
64
]
;
sscanf
(
param
.
c_str
(
)
,
"%s"
,
&
b
)
;
SF
-
>
Log
(
" %s"
,
b
)
;
}
;
Если вводить текст например blast hack.
Будет выводиться только blast. Как его заставить что бы полностью брал текст?
|
|
|

08.08.2016, 15:43
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
param юзай.
|
|
|

08.08.2016, 18:04
|
|
Постоянный
Регистрация: 14.06.2015
Сообщений: 402
С нами:
5744580
Репутация:
28
|
|
Сообщение от iAmerican
PHP:
Код:
void
CALLBACK
textflood
(
std
:
:
string param
)
{
if
(
param
.
empty
(
)
)
return
;
char b
[
64
]
;
sscanf
(
param
.
c_str
(
)
,
"%s"
,
&
b
)
;
SF
-
>
Log
(
" %s"
,
b
)
;
}
;
Если вводить текст например blast hack.
Будет выводиться только blast. Как его заставить что бы полностью брал текст?
Либо полностью выводи param, либо регулярное выражение заюзай (например sscanf(param.c_str(), "%[a-zA-Z]", b) 
|
|
|

08.08.2016, 20:33
|
|
Флудер
Регистрация: 23.03.2013
Сообщений: 2,696
С нами:
6915558
Репутация:
183
|
|
Сообщение от Woofing Giraffe
либо регулярное выражение заюзай (например sscanf(param.c_str(), "%[a-zA-Z]", b)
Тот же результат будет. Пробел то не учитываешь
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|