#851 08-03-2009 12:11

Seemann
Registered: 07-08-2006
Posts: 2,156

Re: Один вопрос

0209: 0@ = random_int_in_ranges A B

возвращает число в интервале A..B-1

от -100 до 0

0209: 0@ = random_int_in_ranges -100 1

@GTASA -

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

0491

Offline

#852 08-03-2009 13:00

GTASA
Registered: 13-09-2008
Posts: 476

Re: Один вопрос

А радар?

Нашел у себя в архиве скрипт, чтобы стрелять можно было от водительского места типо. Пытаюсь его изменить, чтобы если у игрока есть определенные оружия, он ими палил. Но че за фигня? Если нет Ака, почему он вдруг палит из него? И как можно сделать прокрутку оружий колесиком мыши, если имеется ак и дигл?

// This file was decompiled using sascm.ini published by Seemann (http://sannybuilder.com/files/SASCM.rar) on 13.10.2007

{$VERSION 3.1.0027}
{$CLEO .cs}

//-------------MAIN---------------
wait 10 

:1
wait 0
if
Player.Defined($PLAYER_CHAR)
else_jump @1
if //одиночное условие
0449: actor $PLAYER_ACTOR in_a_car
else_jump @1 //если нетак, прыгаем вначало
0811: 2@ = actor $PLAYER_ACTOR
if //одиночное условие
Actor.InCar($PLAYER_ACTOR, 2@)
else_jump @1 
wait 10
if //одиночное условие
00E1: key_pressed 0 11 
else_jump @1 

:loadAK 
wait 0 
if 
Actor.HasWeapon($PLAYER_ACTOR, 30)
jf @AK

:loadDeagle 
wait 0 
if 
Actor.HasWeapon($PLAYER_ACTOR, 24)
jf @Deagle

:AK               
wait 0
0407: create_coordinate $XCar $YCar $ZCar from_car 2@ offset -5.0 1.0 0.0 
0362: remove_actor $PLAYER_ACTOR from_car_and_place_at 0.0 0.0 0.0 
0464: put_actor $PLAYER_ACTOR into_1_on_car 2@ at_car_offset -0.70 0.2 0.45 position 0 shooting_angle 360.0 with_weapon 30 
jump @out 

:Deagle                     
wait 0
0407: create_coordinate $XCar $YCar $ZCar from_car 2@ offset -5.0 1.0 0.0 
0362: remove_actor $PLAYER_ACTOR from_car_and_place_at 0.0 0.0 0.0 //удаляем игрока из тачки
0464: put_actor $PLAYER_ACTOR into_1_on_car 2@ at_car_offset -0.70 0.2 0.45 position 0 shooting_angle 360.0 with_weapon 24 
jump @out

:out //4ый лейбл
wait 10
if
00E1: key_pressed 0 10
else_jump @out
0362: remove_actor $PLAYER_ACTOR from_car_and_place_at $XCar $YCar $ZCar 
0465: remove_actor $PLAYER_ACTOR from_1_mode 
036A: put_actor $PLAYER_ACTOR in_car 2@ 
jump @1

Offline

#853 08-03-2009 13:01

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

Re: Один вопрос

или Actor.HasWeapon($actor_handle,weapon_id)
smile

Offline

#854 08-03-2009 13:31

WinuX
Registered: 06-03-2009
Posts: 138

Re: Один вопрос

как запустить гта в оконном режиме?

Offline

#855 08-03-2009 14:01

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

Re: Один вопрос

to_GTASA -

В твоем скрипте очень много ошибок, не понимаю как он вообще работает. У тебя много проблем с else_jump'aми, ты их неправильно используешь. Я переделал твой скрипт:

{$VERSION 3.1.0027}
{$CLEO .cs}

//-------------MAIN---------------
wait 10 

:1
wait 0
if
Player.Defined($PLAYER_CHAR)
else_jump @1
if //одиночное условие
0449: actor $PLAYER_ACTOR in_a_car
else_jump @1 //если нетак, прыгаем вначало
03C0: 2@ = actor $PLAYER_ACTOR car 

if //одиночное условие
Actor.InCar($PLAYER_ACTOR, 2@)
else_jump @1 
wait 10
if //одиночное условие
00E1: key_pressed 0 11 
else_jump @1 

:loadAK
wait 0 
if 
Actor.HasWeapon($PLAYER_ACTOR, 30)
jf @loadDeagle
wait 0
0407: create_coordinate $XCar $YCar $ZCar from_car 2@ offset -5.0 1.0 0.0 
0362: remove_actor $PLAYER_ACTOR from_car_and_place_at 0.0 0.0 0.0 
0464: put_actor $PLAYER_ACTOR into_1_on_car 2@ at_car_offset -0.70 0.2 0.45 position 0 shooting_angle 360.0 with_weapon 30 
jump @out 

:loadDeagle 
wait 0 
if 
Actor.HasWeapon($PLAYER_ACTOR, 24)
jf @loadAK 
0407: create_coordinate $XCar $YCar $ZCar from_car 2@ offset -5.0 1.0 0.0 
0362: remove_actor $PLAYER_ACTOR from_car_and_place_at 0.0 0.0 0.0 //удаляем игрока из тачки
0464: put_actor $PLAYER_ACTOR into_1_on_car 2@ at_car_offset -0.70 0.2 0.45 position 0 shooting_angle 360.0 with_weapon 24 
jump @NEXT_EAGLE

:NEXT_EAGLE
wait 0
if and
02D8:   actor $PLAYER_ACTOR current_weapon == 30 
00E1: key_pressed 0 7 
0491:   actor $PLAYER_ACTOR has_weapon 24 
jf @NEXT_AK
wait 0
0464: put_actor $PLAYER_ACTOR into_1_on_car 2@ at_car_offset -0.70 0.2 0.45 position 0 shooting_angle 360.0 with_weapon 24 
jump @out

:NEXT_AK
wait 0
if and
02D8:   actor $PLAYER_ACTOR current_weapon == 24 
00E1: key_pressed 0 7 
0491:   actor $PLAYER_ACTOR has_weapon 30 
jf @out
wait 0
0464: put_actor $PLAYER_ACTOR into_1_on_car 2@ at_car_offset -0.70 0.2 0.45 position 0 shooting_angle 360.0 with_weapon 30 
jump @out

:out //4ый лейбл
wait 10
if
00E1: key_pressed 0 10
else_jump @NEXT_EAGLE
0362: remove_actor $PLAYER_ACTOR from_car_and_place_at $XCar $YCar $ZCar 
0465: remove_actor $PLAYER_ACTOR from_1_mode 
036A: put_actor $PLAYER_ACTOR in_car 2@ 
jump @1

и добавил прокрутку оружия колёсиком мыши.

Сравни эти два скрипта, и ты всё поймешь

А из АК47 он стреляет потому, что ты используешь команду

0464: put_actor $PLAYER_ACTOR into_1_on_car 2@ at_car_offset -0.70 0.2 0.45 position 0 shooting_angle 360.0 with_weapon 30

Last edited by Gyr (08-03-2009 14:48)


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

Offline

#856 08-03-2009 14:51

GTASA
Registered: 13-09-2008
Posts: 476

Re: Один вопрос

Хотел добавить оружия, и сделать прокрутку для них, но не крутятся.

А из АК47 он стреляет потому, что ты используешь команду

Получается надо ее удалить и все?

{$VERSION 3.1.0027}
{$CLEO .cs}

//-------------MAIN---------------
wait 10 

:1
wait 0
if
Player.Defined($PLAYER_CHAR)
else_jump @1
if //одиночное условие
0449: actor $PLAYER_ACTOR in_a_car
else_jump @1 //если нетак, прыгаем вначало
03C0: 2@ = actor $PLAYER_ACTOR car 

if //одиночное условие
Actor.InCar($PLAYER_ACTOR, 2@)
else_jump @1 
wait 10
if //одиночное условие
00E1: key_pressed 0 11 
else_jump @1 

:loadAK
wait 0 
if 
Actor.HasWeapon($PLAYER_ACTOR, 30)
jf @loadDeagle
wait 0
0407: create_coordinate $XCar $YCar $ZCar from_car 2@ offset -5.0 1.0 0.0 
0362: remove_actor $PLAYER_ACTOR from_car_and_place_at 0.0 0.0 0.0 
0464: put_actor $PLAYER_ACTOR into_1_on_car 2@ at_car_offset -0.70 0.2 0.45 position 0 shooting_angle 360.0 with_weapon 30 
jump @out 

:loadDeagle 
wait 0 
if 
Actor.HasWeapon($PLAYER_ACTOR, 24)
jf @loadM4 
0407: create_coordinate $XCar $YCar $ZCar from_car 2@ offset -5.0 1.0 0.0 
0362: remove_actor $PLAYER_ACTOR from_car_and_place_at 0.0 0.0 0.0 //удаляем игрока из тачки
0464: put_actor $PLAYER_ACTOR into_1_on_car 2@ at_car_offset -0.70 0.2 0.45 position 0 shooting_angle 360.0 with_weapon 24 
jump @NEXT_EAGLE

:loadM4
wait 0 
if 
Actor.HasWeapon($PLAYER_ACTOR, 25)
jf @loadDrobov
wait 0
0407: create_coordinate $XCar $YCar $ZCar from_car 2@ offset -5.0 1.0 0.0 
0362: remove_actor $PLAYER_ACTOR from_car_and_place_at 0.0 0.0 0.0 
0464: put_actor $PLAYER_ACTOR into_1_on_car 2@ at_car_offset -0.70 0.2 0.45 position 0 shooting_angle 360.0 with_weapon 31 
jump @NEXT_M4 

:loadDrobov 
wait 0 
if 
Actor.HasWeapon($PLAYER_ACTOR, 25)
jf @loadPistol 
0407: create_coordinate $XCar $YCar $ZCar from_car 2@ offset -5.0 1.0 0.0 
0362: remove_actor $PLAYER_ACTOR from_car_and_place_at 0.0 0.0 0.0 //удаляем игрока из тачки
0464: put_actor $PLAYER_ACTOR into_1_on_car 2@ at_car_offset -0.70 0.2 0.45 position 0 shooting_angle 360.0 with_weapon 25 
jump @NEXT_DROBOV

:loadPistol 
wait 0 
if 
Actor.HasWeapon($PLAYER_ACTOR, 22)
jf @loadAK 
0407: create_coordinate $XCar $YCar $ZCar from_car 2@ offset -5.0 1.0 0.0 
0362: remove_actor $PLAYER_ACTOR from_car_and_place_at 0.0 0.0 0.0 //удаляем игрока из тачки
0464: put_actor $PLAYER_ACTOR into_1_on_car 2@ at_car_offset -0.70 0.2 0.45 position 0 shooting_angle 360.0 with_weapon 22 
jump @NEXT_PISTOL

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

:NEXT_EAGLE
wait 0
if and
02D8:   actor $PLAYER_ACTOR current_weapon == 30 
00E1: key_pressed 0 7 
Actor.HasWeapon($PLAYER_ACTOR, 24) 
jf @NEXT_AK
wait 0
0464: put_actor $PLAYER_ACTOR into_1_on_car 2@ at_car_offset -0.70 0.2 0.45 position 0 shooting_angle 360.0 with_weapon 24 
jump @out

:NEXT_AK
wait 0
if and
02D8:   actor $PLAYER_ACTOR current_weapon == 24 
00E1: key_pressed 0 7 
Actor.HasWeapon($PLAYER_ACTOR, 30)
jf @out
wait 0
0464: put_actor $PLAYER_ACTOR into_1_on_car 2@ at_car_offset -0.70 0.2 0.45 position 0 shooting_angle 360.0 with_weapon 30 
jump @out

:NEXT_M4
wait 0
if and
02D8:   actor $PLAYER_ACTOR current_weapon == 30 
00E1: key_pressed 0 7 
Actor.HasWeapon($PLAYER_ACTOR, 31) 
jf @out
wait 0
0464: put_actor $PLAYER_ACTOR into_1_on_car 2@ at_car_offset -0.70 0.2 0.45 position 0 shooting_angle 360.0 with_weapon 31 
jump @out

:NEXT_DROBOV
wait 0
if and
02D8:   actor $PLAYER_ACTOR current_weapon == 31 
00E1: key_pressed 0 7 
Actor.HasWeapon($PLAYER_ACTOR, 25)
jf @out
wait 0
0464: put_actor $PLAYER_ACTOR into_1_on_car 2@ at_car_offset -0.70 0.2 0.45 position 0 shooting_angle 360.0 with_weapon 25 
jump @out

:NEXT_PISTOL
wait 0
if and
02D8:   actor $PLAYER_ACTOR current_weapon == 25 
00E1: key_pressed 0 7 
Actor.HasWeapon($PLAYER_ACTOR, 22) 
jf @out
wait 0
0464: put_actor $PLAYER_ACTOR into_1_on_car 2@ at_car_offset -0.70 0.2 0.45 position 0 shooting_angle 360.0 with_weapon 22 
jump @out

:NEXT
wait 0
if and
02D8:   actor $PLAYER_ACTOR current_weapon == 22 
00E1: key_pressed 0 7 
Actor.HasWeapon($PLAYER_ACTOR, 30) 
jf @out
wait 0
0464: put_actor $PLAYER_ACTOR into_1_on_car 2@ at_car_offset -0.70 0.2 0.45 position 0 shooting_angle 360.0 with_weapon 30 
jump @out

:out //4ый лейбл
wait 10
if
00E1: key_pressed 0 10
else_jump @NEXT_EAGLE
0362: remove_actor $PLAYER_ACTOR from_car_and_place_at $XCar $YCar $ZCar 
0465: remove_actor $PLAYER_ACTOR from_1_mode 
036A: put_actor $PLAYER_ACTOR in_car 2@ 
jump @1

Offline

#857 08-03-2009 16:32

Alien
Registered: 12-10-2008
Posts: 564

Re: Один вопрос

WinuX wrote:

как запустить гта в оконном режиме?

в это теме посмотри

Offline

#858 08-03-2009 17:26

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

Re: Один вопрос

Получается надо ее удалить и все?

Нет, просто эта команда сама по себе дает актеру АК47


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

Offline

#859 08-03-2009 19:21

WinuX
Registered: 06-03-2009
Posts: 138

Re: Один вопрос

извините, если достал уже своими тупыми вопросами smile
я хочу сделать скрипт, который отмечает ближайший pay'n'spray маленьким жёлтым квадратом, если выполняется одно из этих условий:
- Здоровье машины меньше/равно 450
- За спиной две или более звезды розыска
естественно, только когда игрок находится в машине.
Но вот как узнать, какой pay'n'spray ближайший?
координаты - не проблема, главное, как узнать %)

Offline

#860 08-03-2009 20:08

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

Re: Один вопрос

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

0509: 17@ = distance_between_XY $TEMPVAR_FLOAT_1 $TEMPVAR_FLOAT_2 and_XY 14@ 15@

Last edited by Den_spb (08-03-2009 20:11)

Offline

#861 08-03-2009 20:26

WinuX
Registered: 06-03-2009
Posts: 138

Re: Один вопрос

ещё вопрос: не компилится, ошибка в 25 строке (см. комментарий)

{$CLEO .cs} 
        
0000: NOP
:prover_numfive
wait 0
if
0AB0: 101
jf @prover_numfive
jump @do_hlt

:do_hlt
wait 10
        if
            Actor.Driving($PLAYER_ACTOR)
        then
            03C0: 0@ = actor $PLAYER_ACTOR car
            while true
                wait 0
                if
                if
                    8185:   not car 0@ health >= 1000
                then
                    wait 10 
                    8185: car 0@ health = 1000 
                    Player.Money($PLAYER_CHAR) += car 0@ health - 1000 // тут ошибка: Недостаточно параметров. Ожидалось 2 параметров.
                end 
            
            end
            end
wait 100
jump @prover_numfive

Last edited by WinuX (08-03-2009 22:11)

Offline

#862 08-03-2009 22:16

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

Re: Один вопрос

0509: 17@ = distance_between_XY A B and_XY C D
A - x первой точки, B - y первой точки, C - x второй точки, D - y второй точки. Расстояние между ними будет записано в переменную 17@.

и ещё, как прочитать и изменить значение здоровья авто?

В СБ есть полезная функция - поиск опкодов (Сервис - Инструменты - Поиск опкодов). Вводим "car health" и находим то, что нам надо: 0227 - узнать здоровье машины, 0224 - изменить здоровье машины.
Насчет ошибки: СБ не понимает конструкций типа А+Б+Ц, складывать надо отдельно по 2 числа. Вместо той строки, где ошибка, надо написать так:

0227: 30@ = car 0@ health
0109: player $PLAYER_CHAR money += 30@
0109: player $PLAYER_CHAR money += -1000

Last edited by Den_spb (08-03-2009 22:30)

Offline

#863 09-03-2009 05:57

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

Re: Один вопрос

@WinuX - ты не можешь складывать число и хэндл машины, т.к. car 0@ health не явлется командой. попробуй использовать опкод 0A8E:


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

Offline

#864 09-03-2009 10:41

WinuX
Registered: 06-03-2009
Posts: 138

Re: Один вопрос

всё бы хорошо, но вот какой код вышел:

{$CLEO .cs} 
        
0000: NOP
:prover_numfive
wait 0
if
0AB0: 101
jf @prover_numfive
jump @do_hlt

:do_hlt
wait 10
        if
            Actor.Driving($PLAYER_ACTOR)
        then
            03C0: 0@ = actor $PLAYER_ACTOR car
            while true
                wait 0
                if
                if
                    8185:   not car 0@ health >= 1000
                then
                    wait 10
                    32@ = Player.Money($PLAYER_CHAR)
                    if 32@ > 0 
                    then 
                    0227: 30@ = car 0@ health
                    Player.Money($PLAYER_CHAR) += 30@
                    Player.Money($PLAYER_CHAR) += -1000
                    0224: set_car 0@ health_to 1000 
                    end
                end 
                end
            end
wait 100
jump @prover_numfive

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

Offline

#865 09-03-2009 11:16

Seemann
Registered: 07-08-2006
Posts: 2,156

Re: Один вопрос

У тебя второй цикл, где восстановление жизни машины, бесконечный (while true). Нужно добавить команду Break, чтобы выйти из него.

И когда игрок сдыхает, игра в винду с ошибкой.

добавь проверку player.defined (опкод 0256)

Offline

#866 09-03-2009 11:18

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

Re: Один вопрос

@WinuX - не мудри с then, else, while true. попробуй по старинке, потоками. А еще лучше открой уже скомпилированный файл, и изменяй его.


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

Offline

#867 09-03-2009 11:32

Seemann
Registered: 07-08-2006
Posts: 2,156

Re: Один вопрос

@Gyr - наоборот лучше освоить then, else, while true, с ними гораздо проще писать скрипты. У него собственно и ошибок почти нет в скрипте, за исключением пары мелочей (например, два if подряд)

Offline

#868 09-03-2009 11:53

WinuX
Registered: 06-03-2009
Posts: 138

Re: Один вопрос

ога точна %)

надо один иф убрать
и неплохо бы ещё снабдить это всё текстом...
----------
без ифа вылет %)

Last edited by WinuX (09-03-2009 12:03)

Offline

#869 09-03-2009 12:49

WinuX
Registered: 06-03-2009
Posts: 138

Re: Один вопрос

а меньшее из числовых переменных можно получитьтолько ифами? их там дофига просто

Offline

#870 09-03-2009 12:56

Seemann
Registered: 07-08-2006
Posts: 2,156

Re: Один вопрос

а меньшее из числовых переменных можно получитьтолько ифами? их там дофига просто

не понял вопроса. Если ты имеешь в виду опкод для сравнения значения двух переменных (типа 0034:   $8276 >= $8278 // (float) ), то их действительно много. Искать нужно по комментариям к опкоду  (например, если нужно сравнить две целые локальные переменные, то опкод будет (001D:   27@ > 33@ // (int) или 801D:   not 27@ > 33@ // (int) )

Offline

#871 09-03-2009 16:01

WinuX
Registered: 06-03-2009
Posts: 138

Re: Один вопрос

Seemann, я имел в виду, такое: есть , например, 10 числовых переменны (float), все они разные по значению. ,Нужно выбрать из них меньшее . Сравнивать попарно достаточно долго и муторно. И нужно чем-нибудь выбрать меньшее. И предотвратить глюки в случае, если окажутся две равные переменные, и они будут меньше всех других

И ещё, как создать жёлтый маркер, как на входе в дома? естественно, чтобы телепортация происходила, со сменами интерьера, всё такое smile

Last edited by WinuX (09-03-2009 16:07)

Offline

#872 09-03-2009 16:28

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

Re: Один вопрос

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

Offline

#873 09-03-2009 17:21

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

Re: Один вопрос

@Sw[ee]t -  интерьер №2 коорды: 2539.35   -1294.61  1036.19. Пользуйся Мап Эдитором good


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

Offline

#874 09-03-2009 17:47

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

Re: Один вопрос

я не про интерьер, а про обьект который перед ним. посмотрел в мэйне, узнал что он входит в группу обьектов CARTER. А что именно за обьект - незнаю (ДО того как войдёшь в интерьер, я про этот обьект)

Offline

#875 09-03-2009 17:53

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

Re: Один вопрос

@Sw[ee]t - ты имеешь ввиду стенку, которую надо разбить?


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

Offline

Board footer

Powered by FluxBB