#26 02-10-2009 23:25

GTASA
Registered: 13-09-2008
Posts: 476

Re: SB in SAMP

Такого вроде бы нет. Может быть это подойдет?

0470: 1@ = actor $PLAYER_ACTOR current_weapon - в переменную закидывается ID текущего оружия.
0491:   actor $PLAYER_ACTOR has_weapon ID - проверка. Имеет ли игрок такое оружие.

Нажми Ctrl + Alt + 2 в проге и напиши там weapon. Все команды, связанные с оружием, там будут.

Offline

#27 03-10-2009 14:54

BritishColonist
Registered: 30-09-2009
Posts: 72

Re: SB in SAMP

Смотри. Сделал для теста.

wait 0 

:NONAME_4
wait 10 

:NONAME_8
wait 0 
   Player.Defined($PLAYER_CHAR)
else_jump @NONAME_8 

:NONAME_18
wait 0 
if and
00E1:   player 0 pressed_key 10 //если нажаты клавиши
00E1:   player 0 pressed_key 11 //Y+N
else_jump @NONAME_3A 
jump @NONAME_41 

:NONAME_3A
jump @NONAME_18 

:NONAME_41
wait 10 
0470: 0@ = actor $PLAYER_ACTOR current_weapon //пробить ид оружия (по идее)
03FE: set_actor $PLAYER_CHAR money 0@ //установить значение денег на значение переменной, в которой хранился ид пушки
jump @NONAME_4

Вылетает из игры)

Offline

#28 03-10-2009 16:41

Sw[ee]t
From: Нижний Новгород
Registered: 16-02-2009
Posts: 686
Website

Re: SB in SAMP

dragonforce wrote:

Смотри. Сделал для теста.

wait 0 

:NONAME_4
wait 10 

:NONAME_8
wait 0 
   Player.Defined($PLAYER_CHAR)
else_jump @NONAME_8 

:NONAME_18
wait 0 
if and
00E1:   player 0 pressed_key 10 //если нажаты клавиши
00E1:   player 0 pressed_key 11 //Y+N
else_jump @NONAME_3A 
jump @NONAME_41 

:NONAME_3A
jump @NONAME_18 

:NONAME_41
wait 10 
0470: 0@ = actor $PLAYER_ACTOR current_weapon //пробить ид оружия (по идее)
03FE: set_actor $PLAYER_CHAR money 0@ //установить значение денег на значение переменной, в которой хранился ид пушки
jump @NONAME_4

Вылетает из игры)

Разумеется.
В 0@ вроде, храниться название модели, и вообще, это не очень хороший способ.

Offline

#29 03-10-2009 17:38

3Doomer
From: КаZан
Registered: 14-05-2008
Posts: 659
Website

Re: SB in SAMP

в 0@ хранится цифра, причём это ИД не модели, а оружия...


GIMS developer

Offline

#30 03-10-2009 22:37

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: SB in SAMP

dragonforce, если при тестировании хочешь вывести параметр на ден. счет, то я бы предложил свой вариант:

{$CLEO}
wait 0
while true
    wait 0
    repeat
        wait 0
    until Player.Defined($PLAYER_CHAR)
    repeat
        wait 0
    until 00E1: player 0 pressed_key 11  // "Yes" button
    010B: 0@ = player $PLAYER_CHAR money
    0085: 1@ = 0@ // (int)
    1@ *= -1
    0109: player $PLAYER_CHAR money += 1@
    0470: 1@ = actor $PLAYER_ACTOR current_weapon
    0109: player $PLAYER_CHAR money += 1@
end

В обычной игре "денежный" способ неудобен, поэтому можно просто выводить числа на экран циклом:

{$CLEO}
wait 0 
while true
    wait 10 
    repeat
        wait 0 
    until Player.Defined($PLAYER_CHAR)
    repeat
        wait 0
    until 00E1:   player 0 pressed_key 10 //  No - показать номер оружия
    0470: 0@ = actor $PLAYER_ACTOR current_weapon
    repeat
        wait 0
        03F0: enable_text_draw 1 
        045A: draw_text_1number 10.0 10.0 GXT 'NUMBER' number 0@
    until 00E1:   player 0 pressed_key 11  // Yes - убрать номер оружия
end

Last edited by Den_spb (03-10-2009 22:39)

Offline

#31 14-10-2009 13:11

BritishColonist
Registered: 30-09-2009
Posts: 72

Re: SB in SAMP

Как можно определить транспорт другого игрока? Нужно, чтобы было "выделение цели". Можно как-нибудь отметить цель? Игрока. Маркером или лучше прицелом (как на гидре/Heat Seeker).
Думаю сделать, как в игре Blazing Angels. Будучи на самолёте, приметил себе цель,  выделил цель (какой-нибудь кнопкой), нажал Shift, камера держится на цели (пока нажата клавиша Shift), в то же время игрок летит дальше, отпустил Shift - камеру кидает обратно на свой самолёт.
Знаю, есть такая тема:

00D9: 68@ = actor $PLAYER_ACTOR car

Запишет в переменную 68@ тачку игрока. А технику другого игрока можно залить в переменную?

Offline

#32 14-10-2009 13:17

3Doomer
From: КаZан
Registered: 14-05-2008
Posts: 659
Website

Re: SB in SAMP

вместо $PLAYER_ACTOR можно подставить любого педа вообще-то...

эта фича во многих играх есть


GIMS developer

Offline

#33 14-10-2009 14:06

BritishColonist
Registered: 30-09-2009
Posts: 72

Re: SB in SAMP

Хм. Мне для мультиплеера.
Как это можно сделать? Опкод есть?

Offline

#34 14-10-2009 15:30

3Doomer
From: КаZан
Registered: 14-05-2008
Posts: 659
Website

Re: SB in SAMP

опкода нет, но решение найти можно. думай


GIMS developer

Offline

#35 14-10-2009 17:17

BritishColonist
Registered: 30-09-2009
Posts: 72

Re: SB in SAMP

Хм. Ну хоть намекни. Мне нужен транспорт, находящийся рядом, на виду. Значит должен быть какой-то опкод определения ближнего транспорта? Проверка на наличие водителя? Есть что-то такое?
Просто в поиске берётся тачка и только по ней определяется водитель.

0205:   actor $PLAYER_ACTOR near_car 73@ radius 25.0 25.0 25.0 flag 0

Я так понимаю, проверка на нахождение рядом с игроком машины 73@ (рядом = radius 25.0 25.0 25.0). flag 0 - без понятия, что это)
Можно заменить 73@ на переменную "любая машина"? Типа $ANY_CAR (как пример).

Offline

#36 14-10-2009 17:37

3Doomer
From: КаZан
Registered: 14-05-2008
Posts: 659
Website

Re: SB in SAMP

-1 работает как любая машина, но данный опкод только сигнализирует то, что твой игрок рядом с машиной))

тебе надо искать машины в некотором радиусе от игрока и получать их хендл, для этого свои опкоды(сказать не могу)


GIMS developer

Offline

#37 15-10-2009 13:22

Gyr
From: Серпухов
Registered: 03-02-2009
Posts: 246
Website

Re: SB in SAMP

@3Doomer - Не издевайся над новичком!
@dragonforce - Есть клео опкод ( в саннике есть такая замечательная вещь, как справка) 0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 0@ closest_ped_to 1@. В данном случае в переменную 0@ записывается ближайшая машина, а в 1@ - ближайший пед(прохожий).
Так же можешь воспользоваться скриптом The Interceptor


Специально для тех, кто не умеет читать по английски. Мой ник читается как "ГИР"!!!
Народная мудрость:
Прежде чем задавать вопросы,ПОЧИТАЙ СПРАВКУ!!!!

Offline

#38 25-10-2009 11:08

BritishColonist
Registered: 30-09-2009
Posts: 72

Re: SB in SAMP

{$CLEO}

:TEST
wait 100

:EXISTS
wait 10
Player.Defined($PLAYER_CHAR)
jf @EXISTS

:PRESS
wait 10
0AB0: key_pressed 220
jf @PRESS

0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 0@ closest_ped_to 1@

Игра по нажатию клавиши вылетает. SA:MP 0.2x
Проверил и в сингле. Там то же самое.

Last edited by dragonforce (25-10-2009 11:09)

Offline

#39 25-10-2009 11:25

mfisto
From: Russia Perm
Registered: 01-02-2008
Posts: 558
Website

Re: SB in SAMP

И что скрипт вот так заканчивается??? Конечно вылетит, надо хоть

jump @EXISTS

в конце добавить!!!
И потом это бесмысленно, что этот скрипт делает?


I know everything and nothing...

Offline

#40 25-10-2009 12:02

GTASA
Registered: 13-09-2008
Posts: 476

Re: SB in SAMP

Он хотел сделать поиск актера, как видно из скрипта. xD
А еще вылетает от того, что перед 0AB0 не написали if

Last edited by GTASA (25-10-2009 12:05)

Offline

#41 25-10-2009 17:00

BritishColonist
Registered: 30-09-2009
Posts: 72

Re: SB in SAMP

Вы меня за идиота принимаете?! grin
Ясное дело, скрипт так заканчиваться не будет. Это как бы для теста. Был у меня скрипт, игра от него вылетала.
Переписал заново поэтапно и понял, что вылетает именно здесь.

GTASA wrote:

Он хотел сделать поиск актера, как видно из скрипта. xD
А еще вылетает от того, что перед 0AB0 не написали if

Никогда не ставлю if в таких случаях, и всё прекрасно пашет:

:метка
действие
jf @метка
то, что выполняется после действия, если оно всё же выполнилось

Уже много раз замечаю, что вылетает именно из-за store closest ped to 0@ closest vehicle to 1@.

Offline

#42 25-10-2009 17:12

Gyr
From: Серпухов
Registered: 03-02-2009
Posts: 246
Website

Re: SB in SAMP

Уже много раз замечаю, что вылетает именно из-за store closest ped to 0@ closest vehicle to 1@.

Всё правильно. Использовав этот опкод, надо поставить проверку, существует ли пед под именем 1@ (аналогично для тачки)
056D:   actor 1@ defined
056E:   car 0@ defined
Приблизительно скрипт будет выглядеть так:

:1
wait 0
if
player.Defined($PLAYER_CHAR)
jf @1
0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 0@ closest_ped_to 1@
jump @2

:2
wait 0
if
056D:   actor 1@ defined 
jf @3
// здесь проводятся действия над педом


:3
wait 0
if
 056E:   car 0@ defined
 jf @1
 // здесь проводятся действия над тачкой

Last edited by Gyr (25-10-2009 17:13)


Специально для тех, кто не умеет читать по английски. Мой ник читается как "ГИР"!!!
Народная мудрость:
Прежде чем задавать вопросы,ПОЧИТАЙ СПРАВКУ!!!!

Offline

#43 25-10-2009 17:19

3Doomer
From: КаZан
Registered: 14-05-2008
Posts: 659
Website

Re: SB in SAMP

а ещё лучше

0@ <> -1
1@ <> -1

GIMS developer

Offline

#44 25-10-2009 18:00

BritishColonist
Registered: 30-09-2009
Posts: 72

Re: SB in SAMP

Ну я точно знаю, что на сервере машины и игроки есть.
Зачем делать проверку? Для правильности? Пусть. НО:
скрипт определяет тачку/педа не в определённой области рядом с игроком, а вообще по всей карте. Как такой тачки/педа может не быть?
Повторюсь, вылетает сразу после 0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 0@ closest_ped_to 1@, а не при попытке сделать с переменными что-либо.

Offline

#45 25-10-2009 18:10

Gyr
From: Серпухов
Registered: 03-02-2009
Posts: 246
Website

Re: SB in SAMP

Приведи весь код, который используешь. Тогда можно будет судить.


Специально для тех, кто не умеет читать по английски. Мой ник читается как "ГИР"!!!
Народная мудрость:
Прежде чем задавать вопросы,ПОЧИТАЙ СПРАВКУ!!!!

Offline

#46 25-10-2009 18:38

BritishColonist
Registered: 30-09-2009
Posts: 72

Re: SB in SAMP

Вот. Что-то типа такого было, только цвет маркера менялся во время игры по нажатию клавиши (там я садился в тачку и появлялся маркер, а тут надо просто на ближайшую тачку).

{$CLEO}

:TEST
wait 100

:EXISTS
wait 10
Player.Defined($PLAYER_CHAR)
jf @EXISTS

:PRESS
wait 10
0AB0: key_pressed 220
jf @PRESS

0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 0@ closest_ped_to 1@

if 056E:   car 0@ defined
then
0186: 2@ = create_marker_above_car 0@
0165: set_marker 2@ color_to 14
0168: set_marker 2@ size 3 
end

Эффекта нету (точнее игра вылетает).
P.S. Подумал, что могут как-то влиять другие скрипты (их у меня до фига).
Удалил всё, кроме этого. Всё равно вылетает.

Last edited by dragonforce (25-10-2009 18:44)

Offline

#47 25-10-2009 18:40

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: SB in SAMP

dragonforce wrote:

Зачем делать проверку?

Надо дождаться, пока актер (или машина, или и то и другое - в зависимости от задачи) будет занесен в переменную, т.к. обращение к несуществующему актеру (машине, объекту...) 100 % влечет вылет.

dragonforce wrote:

Эффекта нету (точнее игра вылетает).

Скрипт (если он не зациклен)всегда должен иметь команду завершения 0A93:
А вот исправленный вариант

{$CLEO}

:TEST
wait 100

:EXISTS
wait 10
Player.Defined($PLAYER_CHAR)
jf @EXISTS

repeat
          wait 0
until 0AB0: key_pressed 220
0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 0@ closest_ped_to 1@
repeat
          wait 0
until 056E:   car 0@ defined // ждем, пока машина не будет записана в переменную
0186: 2@ = create_marker_above_car 0@
0165: set_marker 2@ color_to 14
0168: set_marker 2@ size 3
0a93:

Last edited by Den_spb (25-10-2009 18:51)

Offline

#48 25-10-2009 19:08

BritishColonist
Registered: 30-09-2009
Posts: 72

Re: SB in SAMP

Отлично, Den_spb. Большое спасибо.
Вопрос. Раз маркер использует одну переменную (0186: 2@ = create_marker_above_car 0@) 2@, то почему создаются новые маркеры, а старые не удаляются?
Вопрос2. Как убрать маркер?) 0164: disable_marker 2@?
Вопрос3. Что такое 018B: set_marker 2@ radar_mode 2? Что ещё за мод радара? Сколько их? Какие? Где б надыбать подобную инфу? Часто возникают эти вопросы.

Offline

#49 25-10-2009 19:16

3Doomer
From: КаZан
Registered: 14-05-2008
Posts: 659
Website

Re: SB in SAMP

1) не удаляются, ибо не удалил опкодом(из вопроса 2).
а то, что лишил их референса - фигня
3) опытным путём. результаты наблюдений лучше выложи на форум(чтобы облегчить задачу другим)

Last edited by 3Doomer (25-10-2009 19:19)


GIMS developer

Offline

#50 25-10-2009 19:58

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: SB in SAMP

dragonforce wrote:

Вопрос3. Что такое 018B: set_marker 2@ radar_mode 2? Что ещё за мод радара? Сколько их? Какие? Где б надыбать подобную инфу? Часто возникают эти вопросы.

Радар_мод - это режим маркера: отображается и в игре (светящийся конус), и на карте; только на карте; только в игре и т.п. Соответствие режимов с их номерами можно легко установить тестированием. Я помню только, что режим 2 - отображение только на радаре (конуса нет).

Offline

Board footer

Powered by FluxBB