 |
|

07.03.2016, 17:00
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Ну так сам думай и пробуй
|
|
|

07.03.2016, 17:15
|
|
Познающий
Регистрация: 10.01.2016
Сообщений: 98
С нами:
5442178
Репутация:
18
|
|
C++:
Код:
int
square
=
1
;
CVector fPos
=
{
FxPos
,
FyPos
,
0.0
}
;
GAME
->
Get3DMarkers
(
)
->
CreateMarker
(
square
,
MARKER3D_TUBE
,
&
fPos
,
40.0
,
1.0
,
3
,
52
,
227
,
255
)
;
Беда, не могу нарисовать маркер, где косяк может быть?
FxPos и FyPos в зависимости от введенных данных по свичу выбираются
|
|
|

07.03.2016, 17:23
|
|
Флудер
Регистрация: 23.03.2013
Сообщений: 2,696
С нами:
6915558
Репутация:
183
|
|
Этот класс вообще странный.
Для начала - после создания необходимо получить указатель на C3DMarker(который возвращается при создании). Функции CreateMarker по барабану какую позицию ты указал, тебе придется снова установить её: C3DMarker::SetPosition(CVector*);
Потом в цикле C3DMarker::SetActive();
Насчет Z координаты - её тоже нужно указать. 0.0 не покатит в многих случаях.
|
|
|

07.03.2016, 18:05
|
|
Познающий
Регистрация: 10.01.2016
Сообщений: 98
С нами:
5442178
Репутация:
18
|
|
Сообщение от legend2360
Этот класс вообще странный.
Для начала - после создания необходимо получить указатель на C3DMarker(который возвращается при создании). Функции CreateMarker по барабану какую позицию ты указал, тебе придется снова установить её: C3DMarker::SetPosition(CVector*);
Потом в цикле C3DMarker::SetActive();
Насчет Z координаты - её тоже нужно указать. 0.0 не покатит в многих случаях.
Я нуб, как указатель пишется? ))
|
|
|

07.03.2016, 18:06
|
|
Флудер
Регистрация: 23.03.2013
Сообщений: 2,696
С нами:
6915558
Репутация:
183
|
|
C3DMarker* pointer;
|
|
|

07.03.2016, 18:16
|
|
Познающий
Регистрация: 10.01.2016
Сообщений: 98
С нами:
5442178
Репутация:
18
|
|
Сообщение от legend2360
C3DMarker* pointer;
C3DMarker* pointer = GAME->Get3DMarkers()->CreateMarker(square, MARKER3D_TUBE, &fPos, 40.0, 1.0, 3, 52, 227, 255);
C3DMarker::SetPosition(pointer);
C3DMarker::SetActive(pointer);
ругается на C3DMarker::SetPosition и C3DMarker::SetActive
|
|
|

07.03.2016, 18:19
|
|
Флудер
Регистрация: 23.03.2013
Сообщений: 2,696
С нами:
6915558
Репутация:
183
|
|
Бли.
pointer->SetPosition(&fpos);
|
|
|

07.03.2016, 18:36
|
|
Познающий
Регистрация: 10.01.2016
Сообщений: 98
С нами:
5442178
Репутация:
18
|
|
Сообщение от legend2360
Бли.
pointer->SetPosition(&fpos);
переписал строки, сейчас посмотрим
Сообщение от legend2360
Бли.
pointer->SetPosition(&fpos);
В итоге все равно не реагирует на результат
|
|
|

07.03.2016, 20:10
|
|
Флудер
Регистрация: 23.03.2013
Сообщений: 2,696
С нами:
6915558
Репутация:
183
|
|
Сообщение от McFree
В итоге все равно не реагирует на результат
[S]В цикле, который mainloop, нужно фигачить ->SetActive();[/S]
Сообщение от Спойлер
C++:
Код:
C3DMarker
*
marker
=
nullptr
;
void
CALLBACK
mainloop
(
)
{
static
bool
init
=
false
;
if
(
!
init
)
{
if
(
!
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
return
;
C3DMarker
*
freeMarker
=
GAME
->
Get3DMarkers
(
)
->
FindFreeMarker
(
)
;
if
(
freeMarker
)
{
CVector pos
=
CVector
(
0.0f
,
0.0f
,
0.0f
)
;
marker
=
GAME
->
Get3DMarkers
(
)
->
CreateMarker
(
freeMarker
->
GetIdentifier
(
)
,
MARKER3D_TUBE
,
&
pos
,
40.0f
,
1.0f
,
3
,
52
,
227
,
255
)
;
marker
->
SetPosition
(
&
pos
)
;
}
init
=
true
;
}
else
{
if
(
marker
!=
nullptr
)
{
marker
->
SetActive
(
)
;
}
}
}
Всё в какашечку укатилось. Этот код уже не рабочий. Прошло 1,5 месяца.
|
|
|

07.03.2016, 20:45
|
|
Участник форума
Регистрация: 09.03.2015
Сообщений: 218
С нами:
5884065
Репутация:
0
|
|
PHP:
Код:
#include
#include
#include
#include
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
stFontInfo
*
pFont
;
bool alfonso
=
false
;
char adm
[
11
]
[
60
]
;
bool admint
;
char pl
[
125
]
;
char adonl
[
125
]
[
125
]
;
int coutadmin
;
void
del_adm_onl
(
int nac
)
{
for
(
int i
=
nac
;
i
getSAMP
(
)
-
>
getChat
(
)
-
>
AddChatMessage
(
-
1
,
"Error reading list admins"
)
;
f1
=
fopen
(
".\\SAMPFUNCS\\admins.txt"
,
"w"
)
;
fputs
(
"Nick_Name"
,
f1
)
;
fclose
(
f1
)
;
return
;
}
char
*
fs
,
*
fp
,
gna
[
25
]
;
for
(
int i
=
0
;
i
packetId
==
ScriptRPCEnumeration
:
:
RPC_ScrServerJoin
&&
alfonso
)
// если это RPC_ScrServerJoin
{
short int sPlayerID
;
D3DCOLOR
D3DPlayerColor
;
byte isNPC
,
nameLen
;
char szPlayerName
[
25
]
;
params
-
>
bitStream
-
>
ResetReadPointer
(
)
;
// обнуляем оффсет чтения.
params
-
>
bitStream
-
>
Read
(
sPlayerID
)
;
// читаем ID игрока.
params
-
>
bitStream
-
>
Read
(
D3DPlayerColor
)
;
// цвет ника игрока.
params
-
>
bitStream
-
>
Read
(
isNPC
)
;
// флаг говорящий о том, NPC это или нет.
params
-
>
bitStream
-
>
Read
(
nameLen
)
;
// длина ника.
params
-
>
bitStream
-
>
Read
(
szPlayerName
,
nameLen
)
;
// ник.
szPlayerName
[
nameLen
]
=
'\0'
;
// обрезаем чтоб не было мусора
params
-
>
bitStream
-
>
ResetReadPointer
(
)
;
// обнуляем оффсет чтения
sprintf
(
pl
,
"%s[%d] Подключился к серверу."
,
szPlayerName
,
sPlayerID
)
;
// добавляем сообшение в чат.
for
(
int i
=
0
;
i
packetId
==
ScriptRPCEnumeration
:
:
RPC_ScrServerQuit
&&
alfonso
)
// если player quit
{
short int PlayerID
;
byte ReasonID
;
params
-
>
bitStream
-
>
ResetReadPointer
(
)
;
// обнуляем оффсет чтения.
params
-
>
bitStream
-
>
Read
(
PlayerID
)
;
// читаем ID игрока.
params
-
>
bitStream
-
>
Read
(
ReasonID
)
;
for
(
int i
=
0
;
i
getSAMP
(
)
-
>
getPlayers
(
)
-
>
GetPlayerName
(
PlayerID
)
,
adonl
[
i
]
)
==
0
)
{
del_adm_onl
(
i
)
;
coutadmin
--
;
}
//SF->getSAMP()->getChat()->AddChatMessage(-1,"OFF: %s",SF->getSAMP()->getPlayers()->GetPlayerName(PlayerID));
}
}
}
;
return
true
;
// успешно завершаем обработку RPC.
}
;
bool
CALLBACK
Present
(
CONST
RECT
*
pSourceRect
,
CONST
RECT
*
pDestRect
,
HWND
hDestWindowOverride
,
CONST
RGNDATA
*
pDirtyRegion
)
{
if
(
SUCCEEDED
(
SF
-
>
getRender
(
)
-
>
BeginRender
(
)
&&
alfonso
)
)
{
for
(
int i
=
0
;
i
Print
(
adonl
[
i
]
,
D3DCOLOR_ARGB
(
255
,
255
,
255
,
0
)
,
10
,
260
,
false
)
;
}
SF
-
>
getRender
(
)
-
>
EndRender
(
)
;
// завершаем рисование
}
;
return
true
;
}
void
CALLBACK
famc
(
std
:
:
string param
)
{
alfonso
^
=
true
;
}
void
CALLBACK
mainloop
(
)
{
static
bool init
=
false
;
if
(
!
init
)
{
if
(
GAME
==
nullptr
)
return
;
if
(
GAME
-
>
GetSystemState
(
)
!=
eSystemState
:
:
GS_PLAYING_GAME
)
return
;
if
(
!
SF
-
>
getSAMP
(
)
-
>
IsInitialized
(
)
)
return
;
SF
-
>
getSAMP
(
)
-
>
getChat
(
)
-
>
AddChatMessage
(
D3DCOLOR_XRGB
(
0
,
0xAA
,
0
)
,
"1"
)
;
SF
-
>
getRender
(
)
-
>
registerD3DCallback
(
eDirect3DDeviceMethods
:
:
D3DMETHOD_PRESENT
,
Present
)
;
pFont
=
SF
-
>
getRender
(
)
-
>
CreateNewFont
(
"Tahoma"
,
12
,
FCR_BORDER
)
;
SF
-
>
getSAMP
(
)
-
>
registerChatCommand
(
"fam"
,
famc
)
;
get_list_admin
(
)
;
init
=
true
;
}
}
BOOL
APIENTRY
DllMain
(
HMODULE
hModule
,
DWORD
dwReasonForCall
,
LPVOID
lpReserved
)
{
switch
(
dwReasonForCall
)
{
case
DLL_PROCESS_ATTACH
:
SF
-
>
initPlugin
(
mainloop
,
hModule
)
;
break
;
case
DLL_THREAD_ATTACH
:
case
DLL_THREAD_DETACH
:
case
DLL_PROCESS_DETACH
:
break
;
}
return
TRUE
;
}
Почему крашит?
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|