You are not logged in.
0209: 0@ = random_int_in_ranges A B
возвращает число в интервале A..B-1
от -100 до 0
0209: 0@ = random_int_in_ranges -100 1
@GTASA -
Как дать проверку на имение какого либо оружия?
0491
Offline
А радар?
Нашел у себя в архиве скрипт, чтобы стрелять можно было от водительского места типо. Пытаюсь его изменить, чтобы если у игрока есть определенные оружия, он ими палил. Но че за фигня? Если нет Ака, почему он вдруг палит из него? И как можно сделать прокрутку оружий колесиком мыши, если имеется ак и дигл?
// 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
Offline
Offline
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
Хотел добавить оружия, и сделать прокрутку для них, но не крутятся.
А из АК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
как запустить гта в оконном режиме?
Offline
Получается надо ее удалить и все?
Нет, просто эта команда сама по себе дает актеру АК47
Специально для тех, кто не умеет читать по английски. Мой ник читается как "ГИР"!!!
Народная мудрость:
Прежде чем задавать вопросы,ПОЧИТАЙ СПРАВКУ!!!!
Offline
извините, если достал уже своими тупыми вопросами
я хочу сделать скрипт, который отмечает ближайший pay'n'spray маленьким жёлтым квадратом, если выполняется одно из этих условий:
- Здоровье машины меньше/равно 450
- За спиной две или более звезды розыска
естественно, только когда игрок находится в машине.
Но вот как узнать, какой pay'n'spray ближайший?
координаты - не проблема, главное, как узнать %)
Offline
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
ещё вопрос: не компилится, ошибка в 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
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
@WinuX - ты не можешь складывать число и хэндл машины, т.к. car 0@ health не явлется командой. попробуй использовать опкод 0A8E:
Специально для тех, кто не умеет читать по английски. Мой ник читается как "ГИР"!!!
Народная мудрость:
Прежде чем задавать вопросы,ПОЧИТАЙ СПРАВКУ!!!!
Offline
всё бы хорошо, но вот какой код вышел:
{$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
У тебя второй цикл, где восстановление жизни машины, бесконечный (while true). Нужно добавить команду Break, чтобы выйти из него.
И когда игрок сдыхает, игра в винду с ошибкой.
добавь проверку player.defined (опкод 0256)
Offline
@WinuX - не мудри с then, else, while true. попробуй по старинке, потоками. А еще лучше открой уже скомпилированный файл, и изменяй его.
Специально для тех, кто не умеет читать по английски. Мой ник читается как "ГИР"!!!
Народная мудрость:
Прежде чем задавать вопросы,ПОЧИТАЙ СПРАВКУ!!!!
Offline
@Gyr - наоборот лучше освоить then, else, while true, с ними гораздо проще писать скрипты. У него собственно и ошибок почти нет в скрипте, за исключением пары мелочей (например, два if подряд)
Offline
ога точна %)
надо один иф убрать
и неплохо бы ещё снабдить это всё текстом...
----------
без ифа вылет %)
Last edited by WinuX (09-03-2009 12:03)
Offline
а меньшее из числовых переменных можно получитьтолько ифами? их там дофига просто
Offline
а меньшее из числовых переменных можно получитьтолько ифами? их там дофига просто
не понял вопроса. Если ты имеешь в виду опкод для сравнения значения двух переменных (типа 0034: $8276 >= $8278 // (float) ), то их действительно много. Искать нужно по комментариям к опкоду (например, если нужно сравнить две целые локальные переменные, то опкод будет (001D: 27@ > 33@ // (int) или 801D: not 27@ > 33@ // (int) )
Offline
Seemann, я имел в виду, такое: есть , например, 10 числовых переменны (float), все они разные по значению. ,Нужно выбрать из них меньшее . Сравнивать попарно достаточно долго и муторно. И нужно чем-нибудь выбрать меньшее. И предотвратить глюки в случае, если окажутся две равные переменные, и они будут меньше всех других
И ещё, как создать жёлтый маркер, как на входе в дома? естественно, чтобы телепортация происходила, со сменами интерьера, всё такое
Last edited by WinuX (09-03-2009 16:07)
Offline
Подскажите модель части интерьера (в последней миссии, когда проламываешь стенку там что-то типа интерьера, я про него) никак найти немогу.
Offline
@Sw[ee]t - интерьер №2 коорды: 2539.35 -1294.61 1036.19. Пользуйся Мап Эдитором
Специально для тех, кто не умеет читать по английски. Мой ник читается как "ГИР"!!!
Народная мудрость:
Прежде чем задавать вопросы,ПОЧИТАЙ СПРАВКУ!!!!
Offline
я не про интерьер, а про обьект который перед ним. посмотрел в мэйне, узнал что он входит в группу обьектов CARTER. А что именно за обьект - незнаю (ДО того как войдёшь в интерьер, я про этот обьект)
Offline