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

  #1691  
Старый 24.06.2017, 19:13
Vesca
Новичок
Регистрация: 31.03.2016
Сообщений: 20
С нами: 5324981

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

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

Ставишь хук на RPC_ScrClientMessage. В нём добавляешь проверку , на необходимые тебе сообщения.
Если сообщение пришло возвращаешь return false; и выводишь своё сообщение.

C++:





Код:
bool
CALLBACK
incomingRPC
(
stRakNetHookParams
*
params
)
{
if
(
params
->
packetId
==
ScriptRPCEnumeration
::
RPC_ScrClientMessage
)
{
D3DCOLOR color
=
-
1
;
int
length
=
0
;
char
message
[
144
]
{
0
}
;
params
->
bitStream
->
Read
(
color
)
;
params
->
bitStream
->
Read
(
length
)
;
params
->
bitStream
->
Read
(
message
,
length
)
;
if
(
!
strcmp
(
message
,
" "
)
)
return
false
;
if
(
strstr
(
message
,
"Какое то сообщение пришло"
)
!=
NULL
)
{
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
">> Какое то сообщение отредактировано"
)
;
return
false
;
}
return
true
;
}
;


в mainloop , до init = true;

C++:





Код:
SF
->
getRakNet
(
)
->
registerRakNetCallback
(
RakNetScriptHookType
::
RAKHOOK_TYPE_INCOMING_RPC
,
incomingRPC
)
;

Большое спасибо
 
Ответить с цитированием

  #1692  
Старый 26.06.2017, 13:02
SR_team
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами: 6603505

Репутация: 183


По умолчанию

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

Делаю ползунок. И не могу составить формулу.
Данный код .
// maxsize , максимальное значение для ползунка , не длинна.
....
Т.Е. Допустим будет максимальное значение 1 , значит 0 будет в начале линии , 1 будет в конце уже.
макс. значение 300 , 0 в начале линии , 300 в конце..
Ну думаю понятно это .
// var , переменная в которую будет записываться значение ползунка.

C++:





Код:
bool
SlideInt
(
std
::
string text
,
int
maxsize
,
int
&
var
)
{
static
int
iPoligonX
=
(
(
var
/
280
)
*
maxsize
)
;
// Положение ползунка на линии. Тут и не могу составить нормальную формулу.
SF
->
getRender
(
)
->
DrawLine
(
0
,
900
,
280
,
900
,
2
,
-
1
)
;
// Сама линия
SF
->
getRender
(
)
->
DrawPolygon
(
iPoligonX
,
900
,
10
,
10
,
0
,
20
,
D3DCOLOR_ARGB
(
155
,
0
,
0
,
255
)
)
;
// Ползунок
}

Много вас таких, не способных сделать ползунок.

C++:





Код:
void
CNode
::
DrawScrollBarVertical
(
int
so_V
,
int
so_H
)
{
int
fullScroll
=
_size
.
y
-
4
;
float
rollerSize
=
(
float
)
_size
.
y
/
(
(
float
)
_scrollSizeVertical
)
*
(
float
)
fullScroll
;
float
rollerOffset
=
(
float
)
_size
.
y
/
(
(
float
)
_scrollSizeVertical
)
*
(
float
)
_scrollOffsetVertical
;
_draw
->
D3DBox
(
_pos
.
x
+
_size
.
x
-
so_H
,
_pos
.
y
-
so_V
,
6
,
_size
.
y
,
_scrollFrame
)
;
_draw
->
D3DBox
(
_pos
.
x
+
_size
.
x
+
2
-
so_H
,
(
_pos
.
y
+
2
)
-
so_V
,
2
,
fullScroll
,
_scrollMat
)
;
_draw
->
D3DBox
(
_pos
.
x
+
_size
.
x
+
2
-
so_H
,
(
_pos
.
y
+
2
+
rollerOffset
)
-
so_V
,
2
,
rollerSize
,
_scrollRoller
)
;
}
void
CNode
::
DrawScrollBarHorizontal
(
int
so_V
,
int
so_H
)
{
float
rollerSize
=
(
float
)
_size
.
x
/
(
(
float
)
_scrollSizeHorizontal
)
*
(
float
)
_size
.
x
;
float
rollerOffset
=
(
float
)
_size
.
x
/
(
(
float
)
_scrollSizeHorizontal
)
*
(
float
)
_scrollOffsetHorizontal
;
_draw
->
D3DBox
(
_pos
.
x
-
so_H
,
(
_pos
.
y
+
_size
.
y
)
-
so_V
,
_size
.
x
+
6
,
6
,
_scrollFrame
)
;
_draw
->
D3DBox
(
_pos
.
x
+
3
-
so_H
,
(
_pos
.
y
+
_size
.
y
+
2
)
-
so_V
,
_size
.
x
,
2
,
_scrollMat
)
;
_draw
->
D3DBox
(
_pos
.
x
+
3
+
rollerOffset
-
so_H
,
(
_pos
.
y
+
_size
.
y
+
2
)
-
so_V
,
rollerSize
,
2
,
_scrollRoller
)
;
}


so_V и so_H тебе не нужны скорее всего - можешь их просто удалить или передавать нули.

Прокрутка:

C++:





Код:
switch
(
uMsg
)
{
case
WM_MOUSEWHEEL
:
if
(
GET_WHEEL_DELTA_WPARAM
(
wParam
)

_scrollSizeVertical
)
_scrollOffsetVertical
=
_scrollSizeVertical
-
_size
.
y
;
}
else
{
_scrollOffsetVertical
-=
_scrollStep
;
if
(
_scrollOffsetVertical

_scrollSizeVertical
)
_scrollOffsetVertical
=
_scrollSizeVertical
-
_size
.
y
;
return
false
;
case
VK_LEFT
:
_scrollOffsetHorizontal
-=
_scrollStep
;
if
(
_scrollOffsetHorizontal

_scrollSizeHorizontal
)
_scrollOffsetHorizontal
=
_scrollSizeHorizontal
-
_size
.
x
;
return
false
;
case
VK_PRIOR
:
_scrollOffsetVertical
=
0
;
return
false
;
case
VK_NEXT
:
_scrollOffsetVertical
=
_scrollSizeVertical
-
_size
.
y
;
return
false
;
case
VK_HOME
:
_scrollOffsetHorizontal
=
0
;
return
false
;
case
VK_END
:
_scrollOffsetHorizontal
=
_scrollSizeHorizontal
-
_size
.
x
;
return
false
;
default
:
break
;
}
break
;
default
:
break
;
}


Размер скролла у меня указывается в пикселях, но можно притянуть и строки.
 
Ответить с цитированием

  #1693  
Старый 26.06.2017, 13:04
iAmerican
Постоянный
Регистрация: 17.02.2014
Сообщений: 611
С нами: 6438231

Репутация: 133


По умолчанию

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

Много вас таких, не способных сделать ползунок.

C++:





Код:
void
CNode
::
DrawScrollBarVertical
(
int
so_V
,
int
so_H
)
{
int
fullScroll
=
_size
.
y
-
4
;
float
rollerSize
=
(
float
)
_size
.
y
/
(
(
float
)
_scrollSizeVertical
)
*
(
float
)
fullScroll
;
float
rollerOffset
=
(
float
)
_size
.
y
/
(
(
float
)
_scrollSizeVertical
)
*
(
float
)
_scrollOffsetVertical
;
_draw
->
D3DBox
(
_pos
.
x
+
_size
.
x
-
so_H
,
_pos
.
y
-
so_V
,
6
,
_size
.
y
,
_scrollFrame
)
;
_draw
->
D3DBox
(
_pos
.
x
+
_size
.
x
+
2
-
so_H
,
(
_pos
.
y
+
2
)
-
so_V
,
2
,
fullScroll
,
_scrollMat
)
;
_draw
->
D3DBox
(
_pos
.
x
+
_size
.
x
+
2
-
so_H
,
(
_pos
.
y
+
2
+
rollerOffset
)
-
so_V
,
2
,
rollerSize
,
_scrollRoller
)
;
}
void
CNode
::
DrawScrollBarHorizontal
(
int
so_V
,
int
so_H
)
{
float
rollerSize
=
(
float
)
_size
.
x
/
(
(
float
)
_scrollSizeHorizontal
)
*
(
float
)
_size
.
x
;
float
rollerOffset
=
(
float
)
_size
.
x
/
(
(
float
)
_scrollSizeHorizontal
)
*
(
float
)
_scrollOffsetHorizontal
;
_draw
->
D3DBox
(
_pos
.
x
-
so_H
,
(
_pos
.
y
+
_size
.
y
)
-
so_V
,
_size
.
x
+
6
,
6
,
_scrollFrame
)
;
_draw
->
D3DBox
(
_pos
.
x
+
3
-
so_H
,
(
_pos
.
y
+
_size
.
y
+
2
)
-
so_V
,
_size
.
x
,
2
,
_scrollMat
)
;
_draw
->
D3DBox
(
_pos
.
x
+
3
+
rollerOffset
-
so_H
,
(
_pos
.
y
+
_size
.
y
+
2
)
-
so_V
,
rollerSize
,
2
,
_scrollRoller
)
;
}


so_V и so_H тебе не нужны скорее всего - можешь их просто удалить или передавать нули.

Прокрутка:

C++:





Код:
switch
(
uMsg
)
{
case
WM_MOUSEWHEEL
:
if
(
GET_WHEEL_DELTA_WPARAM
(
wParam
)

_scrollSizeVertical
)
_scrollOffsetVertical
=
_scrollSizeVertical
-
_size
.
y
;
}
else
{
_scrollOffsetVertical
-=
_scrollStep
;
if
(
_scrollOffsetVertical

_scrollSizeVertical
)
_scrollOffsetVertical
=
_scrollSizeVertical
-
_size
.
y
;
return
false
;
case
VK_LEFT
:
_scrollOffsetHorizontal
-=
_scrollStep
;
if
(
_scrollOffsetHorizontal

_scrollSizeHorizontal
)
_scrollOffsetHorizontal
=
_scrollSizeHorizontal
-
_size
.
x
;
return
false
;
case
VK_PRIOR
:
_scrollOffsetVertical
=
0
;
return
false
;
case
VK_NEXT
:
_scrollOffsetVertical
=
_scrollSizeVertical
-
_size
.
y
;
return
false
;
case
VK_HOME
:
_scrollOffsetHorizontal
=
0
;
return
false
;
case
VK_END
:
_scrollOffsetHorizontal
=
_scrollSizeHorizontal
-
_size
.
x
;
return
false
;
default
:
break
;
}
break
;
default
:
break
;
}


Размер скролла у меня указывается в пикселях, но можно притянуть и строки.
Благодарю , но оказывается , было вроде как все правильно , просто ползнунок оставался на том же месте , пока до него не дотронешься...
 
Ответить с цитированием

  #1694  
Старый 26.06.2017, 13:11
medvedko
Новичок
Регистрация: 07.03.2007
Сообщений: 1
С нами: 10095041

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

Как загрузить и отрисовать текстуру с помощью SFAPI? К примеру Дигла. Спасибо.
 
Ответить с цитированием

  #1695  
Старый 26.06.2017, 13:14
iAmerican
Постоянный
Регистрация: 17.02.2014
Сообщений: 611
С нами: 6438231

Репутация: 133


По умолчанию

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

Как загрузить и отрисовать текстуру с помощью SFAPI? К примеру Дигла. Спасибо.
Цитата:
Сообщение от san0  

А в чем проблема то?
В VS нажимаешь Добавить-> Новый объект -> Файл ресурсов .rc
Открываешь его дабл кликом, если он сам не открылся.
Добавляешь ресурс вот так



В окошке нажимаешь импорт, выбираешь картинку где-угодно и пишешь тип ресурса RCDATA
Далее просто открыть эту папку(RCDATA) в этом же "окошке" и посмотреть/поменять id ресурса: по умолчанию это IDR_RCDATA1, 2 итд
К примеру, я изменил имя на IDR_LANDSCAPE

Ну и аналогично тому, как и происходит рендер с файла, объявить callback и переменные. Загрузить так (даже никаких макросов на преобразование в LPTSTR не нужно):
pTexture = SF->getRender()->LoadTextureFromResource(IDR_LANDSCAPE, -1);

Результат очевиден:
Цитата:
Сообщение от Спойлер  




 
Ответить с цитированием

  #1696  
Старый 26.06.2017, 13:29
medvedko
Новичок
Регистрация: 07.03.2007
Сообщений: 1
С нами: 10095041

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

А нельзя ли это завязать не на ресурсах проекта, а на внутриигровых текстурах? Да бы вызывать его по иду.
 
Ответить с цитированием

  #1697  
Старый 27.06.2017, 15:29
Vesca
Новичок
Регистрация: 31.03.2016
Сообщений: 20
С нами: 5324981

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

Как сделать кнопку (и вещи, когда я ее нажимаю)?
 
Ответить с цитированием

  #1698  
Старый 27.06.2017, 17:48
DarkP1xel
Флудер
Регистрация: 17.06.2013
Сообщений: 3,635
С нами: 6791977

Репутация: 183


По умолчанию

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

Как сделать кнопку (и вещи, когда я ее нажимаю)?
Какую кнопку, какие вещи?
 
Ответить с цитированием

  #1699  
Старый 27.06.2017, 20:02
Sonik Mells
Новичок
Регистрация: 29.08.2013
Сообщений: 12
С нами: 6685693

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

Показываю своё меню на рендере (SF), мышь показываю путем SF->getSAMP()->getMisc()->ToggleCursor(true);, вопрос! Как отловить нажатие ESC, дабы скрыть курсор с меню моим, блокируя показ игрового меню?
 
Ответить с цитированием

  #1700  
Старый 27.06.2017, 20:31
Dark_Knight
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами: 6921957

Репутация: 183


По умолчанию

SF->getGame()-isActiveMenu()
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.

×

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

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

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

×

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

Сумма USDT:

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

Заявка будет отправлена администратору. Комиссия форума: 2%.

×

Создать сделку

Продавец: ник или ID

Название сделки:

Сумма USDT:

Срок сделки, дней:

Кто платит комиссию:

Условия сделки:

После создания сделки средства будут зарезервированы в холде до завершения сделки.

×

Мои сделки

Загрузка...
×

Сделка


Загрузка чата...
×

ESCROW ADMIN PANEL

Загрузка...
Загрузка...