You are not logged in.
Еще раз помощь нужна, пишу вот так: 4@ = Actor.Create(24,#SFR1,-2443.4973, 501.8636, 30.0928). При этом создается два актера сразу.
Offline
Еще раз помощь нужна, пишу вот так: 4@ = Actor.Create(24,#SFR1,-2443.4973, 501.8636, 30.0928). При этом создается два актера сразу.
Сам по себе он не создаёт несколько актёров. Скорее всего дубликат скрипта есть. По коду легче будет понять где что пошло не так. Покажите этот код, будем разгребать проблему
Last edited by wmysterio (13-06-2018 17:26)
Offline
Kim wrote:Еще раз помощь нужна, пишу вот так: 4@ = Actor.Create(24,#SFR1,-2443.4973, 501.8636, 30.0928). При этом создается два актера сразу.
Сам по себе он не создаёт несколько актёров. Скорее всего дубликат скрипта есть. По коду легче будет понять где что пошло не так. Покажите этот код, будем разгребать проблему
А, все! Я нашел ошибку, спасибо за помощь!
Offline
Недавно появился такой вопрос: как же создавать актеров, как, например, в миссии полицейского, чтобы они создавались близко к игроку, при этом создавались всегда на дорогах?
Last edited by Kim (22-06-2018 16:11)
Offline
Люди! У меня появился вопрос. Я использую опкод 0D7E от DK22Pac, для рисования индикатора. И в этом опкоде есть параметры at_cornerA и at_cornerB. Я в at_cornerB вписал значения 512.0 и 256.0. Насколько я понял, cornerB отвечает за ширину и высоту рисования текстуры. При изменении at_cornerA текстура изменяется по размерам и прочему, насколько я понял. Вопрос: Как текстуру рисовать в центре используя опкод рисования от DK22Pac?
Offline
rect_x1 = center_x - width/2 rect_x2 = center_x + width/2 rect_y1 = center_y - height/2 rect_y2 = center_y + height/2
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
rect_x1 = center_x - width/2 rect_x2 = center_x + width/2 rect_y1 = center_y - height/2 rect_y2 = center_y + height/2
Спасибо! Но я сообразить не могу, как рисовать текстуру в центре экрана?
Offline
Всем здравия желаю, прошу подсказать и надоумить, сделал скрипт, но он не работает, хотя логически в нем все правильно, но я допускаю где-то ошибку, оно и понятно, я далек от программирования, вот и остается только логический метод.
Скрипт создает маркеры в гаражах перекраски по всему штату, и заехав на машине в маркер/гараж и если у тебя копы на хвосте, то с игрока снимут деньжат за снятие розыска, чем больше розыск, тем больше сумма. Но не могу понять что не так, маркеры есть, а деньги не снимают, вот собственно скрипт:
{$CLEO .cs} //-------------MAIN--------------- 0000: NOP thread 'pas' :pas_2 wait 100 03BC: 0@ = create_sphere_at 2067.9 -1831.3 13.5 radius 7.0 03BC: 1@ = create_sphere_at 1025.0 -1026.4 32.1 radius 7.0 03BC: 2@ = create_sphere_at 487.6 -1738.1 11.1 radius 7.0 03BC: 3@ = create_sphere_at -1904.3 280.7 41.0 radius 7.0 03BC: 4@ = create_sphere_at -2425.6 1025.3 50.3 radius 7.0 03BC: 5@ = create_sphere_at 1971.7 2162.4 11.0 radius 7.0 03BC: 6@ = create_sphere_at -100.0 1114.2 19.7 radius 7.0 03BC: 7@ = create_sphere_at -1420.6 2587.9 55.8 radius 7.0 03BC: 8@ = create_sphere_at 720.1 -460.6 16.3 radius 7.0 :pas_3 0001: wait 0 ms 00D6: if 0256: player $PLAYER_CHAR defined //010F: player $PLAYER_CHAR wanted_level > 0 else_jump @pas_3 01C0: 32@ = player $PLAYER_CHAR wanted_level 0002: jump @pas_01 :pas_01 0001: wait 0 ms if 0039: 32@ == 1 else_jump @pas_02 jump @pas_1z1 :pas_02 0001: wait 0 ms if 0039: 32@ == 2 else_jump @pas_03 jump @pas_1z2 :pas_03 0001: wait 0 ms if 0039: 32@ == 3 else_jump @pas_04 jump @pas_1z3 :pas_04 0001: wait 0 ms if 0039: 32@ == 4 else_jump @pas_05 jump @pas_1z4 :pas_05 0001: wait 0 ms if 0039: 32@ == 5 else_jump @pas_06 jump @pas_1z5 :pas_06 0001: wait 0 ms if 0039: 32@ == 6 else_jump @pas_04 jump @pas_1z6 :pas_1z1 wait 0 00D6: if 0100: actor $PLAYER_ACTOR in_sphere 2067.9 -1831.3 13.5 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_4z1 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -1000 0002: jump @pas_3 :pas_1z2 wait 0 00D6: if 0100: actor $PLAYER_ACTOR in_sphere 2067.9 -1831.3 13.5 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_4z2 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -2000 0002: jump @pas_3 :pas_1z3 wait 0 00D6: if 0100: actor $PLAYER_ACTOR in_sphere 2067.9 -1831.3 13.5 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_4z3 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -3000 0002: jump @pas_3 :pas_1z4 wait 0 00D6: if 0100: actor $PLAYER_ACTOR in_sphere 2067.9 -1831.3 13.5 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_4z4 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -4000 0002: jump @pas_3 :pas_1z5 wait 0 00D6: if 0100: actor $PLAYER_ACTOR in_sphere 2067.9 -1831.3 13.5 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_4z5 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -5000 0002: jump @pas_3 :pas_1z6 wait 0 00D6: if 0100: actor $PLAYER_ACTOR in_sphere 2067.9 -1831.3 13.5 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_4z6 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -6000 0002: jump @pas_3 :pas_4z1 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere 1025.0 -1026.4 32.1 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_5z1 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -1000 0002: jump @pas_3 :pas_4z2 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere 1025.0 -1026.4 32.1 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_5z2 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -2000 0002: jump @pas_3 :pas_4z3 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere 1025.0 -1026.4 32.1 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_5z3 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -3000 0002: jump @pas_3 :pas_4z4 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere 1025.0 -1026.4 32.1 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_5z4 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -4000 0002: jump @pas_3 :pas_4z5 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere 1025.0 -1026.4 32.1 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_5z5 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -5000 0002: jump @pas_3 :pas_4z6 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere 1025.0 -1026.4 32.1 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_5z6 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -6000 0002: jump @pas_3 :pas_5z1 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere 487.6 -1738.1 11.1 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_6z1 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -1000 0002: jump @pas_3 :pas_5z2 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere 487.6 -1738.1 11.1 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_6z2 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -2000 0002: jump @pas_3 :pas_5z3 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere 487.6 -1738.1 11.1 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_6z3 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -3000 0002: jump @pas_3 :pas_5z4 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere 487.6 -1738.1 11.1 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_6z4 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -4000 0002: jump @pas_3 :pas_5z5 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere 487.6 -1738.1 11.1 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_6z5 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -5000 0002: jump @pas_3 :pas_5z6 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere 487.6 -1738.1 11.1 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_6z6 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -6000 0002: jump @pas_3 :pas_6z1 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere -1904.3 280.7 41.0 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_7z1 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -1000 0002: jump @pas_3 :pas_6z2 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere -1904.3 280.7 41.0 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_7z2 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -2000 0002: jump @pas_3 :pas_6z3 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere -1904.3 280.7 41.0 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_7z3 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -3000 0002: jump @pas_3 :pas_6z4 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere -1904.3 280.7 41.0 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_7z4 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -4000 0002: jump @pas_3 :pas_6z5 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere -1904.3 280.7 41.0 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_7z5 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -5000 0002: jump @pas_3 :pas_6z6 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere -1904.3 280.7 41.0 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_7z6 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -6000 0002: jump @pas_3 :pas_7z1 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere -2425.6 1025.3 50.3 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_8z1 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -1000 0002: jump @pas_3 :pas_7z2 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere -2425.6 1025.3 50.3 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_8z2 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -2000 0002: jump @pas_3 :pas_7z3 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere -2425.6 1025.3 50.3 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_8z3 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -3000 0002: jump @pas_3 :pas_7z4 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere -2425.6 1025.3 50.3 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_8z4 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -4000 0002: jump @pas_3 :pas_7z5 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere -2425.6 1025.3 50.3 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_8z5 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -5000 0002: jump @pas_3 :pas_7z6 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere -2425.6 1025.3 50.3 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_8z6 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -6000 0002: jump @pas_3 :pas_8z1 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere 1971.7 2162.4 11.0 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_9z1 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -1000 0002: jump @pas_3 :pas_8z2 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere 1971.7 2162.4 11.0 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_9z2 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -2000 0002: jump @pas_3 :pas_8z3 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere 1971.7 2162.4 11.0 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_9z3 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -3000 0002: jump @pas_3 :pas_8z4 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere 1971.7 2162.4 11.0 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_9z4 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -4000 0002: jump @pas_3 :pas_8z5 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere 1971.7 2162.4 11.0 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_9z5 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -5000 0002: jump @pas_3 :pas_8z6 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere 1971.7 2162.4 11.0 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_9z6 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -6000 0002: jump @pas_3 :pas_9z1 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere -100.0 1114.2 19.7 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_10z1 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -1000 0002: jump @pas_3 :pas_9z2 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere -100.0 1114.2 19.7 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_10z2 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -2000 0002: jump @pas_3 :pas_9z3 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere -100.0 1114.2 19.7 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_10z3 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -3000 0002: jump @pas_3 :pas_9z4 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere -100.0 1114.2 19.7 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_10z4 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -4000 0002: jump @pas_3 :pas_9z5 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere -100.0 1114.2 19.7 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_10z5 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -5000 0002: jump @pas_3 :pas_9z6 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere -100.0 1114.2 19.7 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_10z6 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -6000 0002: jump @pas_3 :pas_10z1 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere -1420.6 2587.9 55.8 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_11z1 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -1000 0002: jump @pas_3 :pas_10z2 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere -1420.6 2587.9 55.8 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_11z2 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -2000 0002: jump @pas_3 :pas_10z3 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere -1420.6 2587.9 55.8 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_11z3 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -3000 0002: jump @pas_3 :pas_10z4 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere -1420.6 2587.9 55.8 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_11z4 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -4000 0002: jump @pas_3 :pas_10z5 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere -1420.6 2587.9 55.8 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_11z5 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -5000 0002: jump @pas_3 :pas_10z6 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere -1420.6 2587.9 55.8 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_11z6 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -6000 0002: jump @pas_3 :pas_11z1 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere 720.1 -460.6 16.3 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_1z1 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -1000 0002: jump @pas_3 :pas_11z2 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere 720.1 -460.6 16.3 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_1z2 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -2000 0002: jump @pas_3 :pas_11z3 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere 720.1 -460.6 16.3 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_1z3 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -3000 0002: jump @pas_3 :pas_11z4 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere 720.1 -460.6 16.3 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_1z4 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -4000 0002: jump @pas_3 :pas_11z5 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere 720.1 -460.6 16.3 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_1z5 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -5000 0002: jump @pas_3 :pas_11z6 wait 0 00D6: if //0039: 32@ == 1 0100: actor $PLAYER_ACTOR in_sphere 720.1 -460.6 16.3 radius 7.0 7.0 7.0 sphere 1 in_car else_jump @pas_1z6 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += -6000 0002: jump @pas_3
Offline
хотя логически в нем все правильно
Это тот случай, когда знание побеждает логику. Переменная 32@ используется для таймеров и она постоянно изменяет своё значение. Классическая ошибка. Можно и так написать скрипт:
{$CLEO} 03BC: 0@ = create_sphere_at 2067.9 -1831.3 13.5 radius 7.0 03BC: 1@ = create_sphere_at 1025.0 -1026.4 32.1 radius 7.0 03BC: 2@ = create_sphere_at 487.6 -1738.1 11.1 radius 7.0 03BC: 3@ = create_sphere_at -1904.3 280.7 41.0 radius 7.0 03BC: 4@ = create_sphere_at -2425.6 1025.3 50.3 radius 7.0 03BC: 5@ = create_sphere_at 1971.7 2162.4 11.0 radius 7.0 03BC: 6@ = create_sphere_at -100.0 1114.2 19.7 radius 7.0 03BC: 7@ = create_sphere_at -1420.6 2587.9 55.8 radius 7.0 03BC: 8@ = create_sphere_at 720.1 -460.6 16.3 radius 7.0 while true wait 250 if 8256: not player $PLAYER_CHAR defined then continue end 01C0: 10@ = player $PLAYER_CHAR wanted_level if 10@ == 0 then continue end if or 0100: actor $PLAYER_ACTOR in_sphere 2067.9 -1831.3 13.5 radius 7.0 7.0 7.0 sphere 1 in_car 0100: actor $PLAYER_ACTOR in_sphere 1025.0 -1026.4 32.1 radius 7.0 7.0 7.0 sphere 1 in_car 0100: actor $PLAYER_ACTOR in_sphere 487.6 -1738.1 11.1 radius 7.0 7.0 7.0 sphere 1 in_car 0100: actor $PLAYER_ACTOR in_sphere -1904.3 280.7 41.0 radius 7.0 7.0 7.0 sphere 1 in_car 0100: actor $PLAYER_ACTOR in_sphere -2425.6 1025.3 50.3 radius 7.0 7.0 7.0 sphere 1 in_car then gosub @WANTED_CLEAR end if or 0100: actor $PLAYER_ACTOR in_sphere 1971.7 2162.4 11.0 radius 7.0 7.0 7.0 sphere 1 in_car 0100: actor $PLAYER_ACTOR in_sphere -100.0 1114.2 19.7 radius 7.0 7.0 7.0 sphere 1 in_car 0100: actor $PLAYER_ACTOR in_sphere -1420.6 2587.9 55.8 radius 7.0 7.0 7.0 sphere 1 in_car 0100: actor $PLAYER_ACTOR in_sphere 720.1 -460.6 16.3 radius 7.0 7.0 7.0 sphere 1 in_car then gosub @WANTED_CLEAR end /* пишем другие проверки */ end :WANTED_CLEAR 10@ *= 1000 0085: 9@ = 10@ // (int) 9@ -= 1 if 010A: player $PLAYER_CHAR money > 9@ then 10@ *= -1 0110: clear_player $PLAYER_CHAR wanted_level 0109: player $PLAYER_CHAR money += 10@ end return
Last edited by wmysterio (19-08-2018 13:44)
Offline
Wmysterio, спасибо за конкретный ответ!!!
Абсолютно с тобой согласен, знание это сила, а незнание напрасная трата сил и времени. С твоей помощью получился рабочий скрипт, теперь все как надо:
{$CLEO .cs} //-------------MAIN--------------- 03BC: 0@ = create_sphere_at 2067.9 -1831.3 13.5 radius 7.0 03BC: 1@ = create_sphere_at 1025.0 -1026.4 32.1 radius 7.0 03BC: 2@ = create_sphere_at 487.6 -1738.1 11.1 radius 7.0 03BC: 3@ = create_sphere_at -1904.3 280.7 41.0 radius 7.0 03BC: 4@ = create_sphere_at -2425.6 1025.3 50.3 radius 7.0 03BC: 5@ = create_sphere_at 1971.7 2162.4 11.0 radius 7.0 03BC: 6@ = create_sphere_at -100.0 1114.2 19.7 radius 7.0 03BC: 7@ = create_sphere_at -1420.6 2587.9 55.8 radius 7.0 03BC: 8@ = create_sphere_at 720.1 -460.6 16.3 radius 7.0 :NONAME_225 wait 250 if Player.Defined($PLAYER_CHAR) jf @NONAME_225 jump @NONAME_253 :NONAME_253 10@ = Player.WantedLevel($PLAYER_CHAR) if 10@ == 0 jf @NONAME_286 jump @NONAME_655 :NONAME_286 if or 0100: actor $PLAYER_ACTOR in_sphere 2067.9 -1831.3 13.5 radius 7.0 7.0 7.0 sphere 1 in_car 0100: actor $PLAYER_ACTOR in_sphere 1025.0 -1026.4 32.1 radius 7.0 7.0 7.0 sphere 1 in_car 0100: actor $PLAYER_ACTOR in_sphere 487.6 -1738.1 11.1 radius 7.0 7.0 7.0 sphere 1 in_car 0100: actor $PLAYER_ACTOR in_sphere -1904.3 280.7 41.0 radius 7.0 7.0 7.0 sphere 1 in_car 0100: actor $PLAYER_ACTOR in_sphere -2425.6 1025.3 50.3 radius 7.0 7.0 7.0 sphere 1 in_car jf @NONAME_489 gosub @NONAME_662 :NONAME_489 if or 0100: actor $PLAYER_ACTOR in_sphere 1971.7 2162.4 11.0 radius 7.0 7.0 7.0 sphere 1 in_car 0100: actor $PLAYER_ACTOR in_sphere -100.0 1114.2 19.7 radius 7.0 7.0 7.0 sphere 1 in_car 0100: actor $PLAYER_ACTOR in_sphere -1420.6 2587.9 55.8 radius 7.0 7.0 7.0 sphere 1 in_car 0100: actor $PLAYER_ACTOR in_sphere 720.1 -460.6 16.3 radius 7.0 7.0 7.0 sphere 1 in_car jf @NONAME_655 gosub @NONAME_662 :NONAME_655 jump @NONAME_225 :NONAME_662 10@ *= 1000 //0085: 9@ = 10@ // (int) //9@ -= 1 if 010F: player $PLAYER_CHAR wanted_level > 0 10@ *= -1 Player.ClearWantedLevel($PLAYER_CHAR) Player.Money($PLAYER_CHAR) += 10@ jump @NONAME_225 //:NONAME_721 //return
З.ы.
О, у тебя есть сайт, пойдука там пошарюсь...
Offline
С твоей помощью получился рабочий скрипт, теперь все как надо
Что немного странно, так как gosub должен обязательно заканчиваться return-ом, а у тебя там прыжок стоит.
О, у тебя есть сайт, пойдука там пошарюсь...
Шарься, там есть полно информации. Только там акцент больше на MAIN.SCM, хотя сам скриптинг там ничем не отличается от CLEO, кроме некоторых моментов.
Last edited by wmysterio (19-08-2018 20:00)
Offline
Что немного странно, так как gosub должен обязательно заканчиваться return-ом, а у тебя там прыжок стоит.
По другому выходило что-то не то, или сброшенная звезда мигала и деньги беспрерывно исчислялись или вообще ничего не происходило, я кароче помыкался, подумал что-же не так и убрал проверку денежек в кармане у игрока и прыжки переставил/вставил, после этого заработало нормально, пока не вылетело ни разу, поживем-увидим короче. Может виноваты другие скрипты, у меня стоят несколько управляющие силой розыска, принципом розыска и т.п.
Главное пока работает, если бы не ты и того бы не было
Offline
Приветствую знатоков.
В общем решил немного сократить размер своего скрипта, в связи с чем возник вопрос, можно ли одну и ту-же машину определить сразу в 2 переменные?
Например есть проверка:
if 29@ == 0 then 0@ = Actor.CurrentCar($PLAYER_ACTOR) 29@ = Actor.CurrentCar($PLAYER_ACTOR) end if and 056E: car 0@ defined 056E: car 29@ defined then if Actor.InCar($PLAYER_ACTOR, 0@) then Car.SetImmunities(0@, 0, 0, 0, 0, 0) Car.LockInCurrentPosition(0@) = False 041E: set_radio_station 7@ Marker.Disable(28@) Car.RemoveReferences(0@) if not 29@ == 0 then Car.SetImmunities(29@, 0, 0, 0, 0, 0) Car.LockInCurrentPosition(29@) = False Car.RemoveReferences(29@) end jump @SVRSAVE_90 end else if 056E: car 0@ defined then car.destroy(0@) Car.RemoveReferences(0@) end if 056E: car 29@ defined then car.destroy(29@) Car.RemoveReferences(29@) end end
Тут суть, что 29@ это переменная для прицепа, и если прицеп был, но внезапно исчез, то машина из переменной 0@ уничтожается, а если прицепа не было изначально, то в обе переменных помещается машина игрока. В общем будет ли оно такое работать?
Вторая проблема с массивами. При попытке записать
0A8D: 17@(15@, 15i) = read_memory 9@ size 2 virtual_protect 0
компилятор пишет недостаточно параметров, ожидалось 4
А тут вообще игра вылетает:
15@ = 0 for 15@ = 0 to 14 if not 17@(15@,15i) == 65535 then 06E9: load_car_component 17@(15@,15i) 31@ = 0 wait 13@ 13@ += 10 if and 13@ < 200 06EA: car_component 17@(15@,15i) available then if 056E: car 1@ defined then 06E7: 9@ = add_car_component 17@(15@,15i) to_car 1@ 06EB: release_car_component 17@(15@,15i) else 15@ = 14 jump @SVRSAVE_105 end else if 13@ < 200 then 15@ -= 1 end end end end
Last edited by Svyatogor2007 (06-10-2018 14:35)
Offline
можно ли одну и ту-же машину определить сразу в 2 переменные?
Можно хоть во все доступные
0@ = Actor.CurrentCar($PLAYER_ACTOR) 0085: 1@ = 0@ // (int) <---- переменная 1@ будет указывать на машину 0@ 0085: 2@ = 0@ // (int) <---- переменная 2@ будет указывать на машину 0@ 0085: 3@ = 0@ // (int) <---- переменная 3@ будет указывать на машину 0@ ... 0085: N = 0@ // (int) <---- переменная N будет указывать на машину 0@
Если машина 0@ была удалена, то остальные переменные будут указывать "в никуда" и будут содержать только числа.
В общем будет ли оно такое работать?
Я не знаю, как Вы это себе представляете. В SB есть опкод, которые используются для прицепов. Можно это использовать, чтобы не танцевать с бубном:
// ... 0@ = Car.Create( #LINERUN, 0.0, 0.0, 0.0 ) 1@ = Car.Create( #ARTICT1, 10.0, 0.0, 0.0 ) :LOOP wait 0 if or 856E: not car 0@ defined 856E: not car 1@ defined then jump @CAR_NOT_FOUND end if 07AB: car 0@ has_attached_trailer 1@ then 0AD1: show_formatted_text_highpriority "Trailer attached!" time 1 else 0AD1: show_formatted_text_highpriority "Trailer NOT attached!" time 1 end jump @LOOP :CAR_NOT_FOUND // ...
компилятор пишет недостаточно параметров, ожидалось 4
Массив неправильно написан, уберите пробелы между скобок:
17@(15@,15i)
А тут вообще игра вылетает
Пишите комментарии того, что Вы делаете )
1) Что в было в массиве до вызова цикла?
2) Компоненты действительно можно прицепить к машине? Не на все тачки можно ставить компоненты.
3) Ещё заметил, что вы изменяете порядок счётчика 15@. Этого лучше избегать - может игра зависнуть, если цикл будет слишком долго выполнятся.
Last edited by wmysterio (07-10-2018 15:01)
Offline
Спасибо, с вылетом разобрался, оказывается массив вообще ни при чем был. Касаемо счетчика, там еще таймер есть, если скрипт будет скакать на одном месте таймер заполнится и прервет цикл.
Я не знаю, как Вы это себе представляете. В SB есть опкод, которые используются для прицепов. Можно это использовать, чтобы не танцевать с бубном:
Опкод не подойдет, прицеп может быть, а может и не быть. Собственно на него изначально указывает переменная 29@, если она пуста, значит прицепа быть не должно. Впрочем пока роблему решил так:
if 056E: car 0@ defined then if not 29@ == 0 then if 856E: not car 29@ defined then car.destroy(0@) Car.RemoveReferences(0@) jump @SVRSAVE_106 end end if Actor.InCar($PLAYER_ACTOR, 0@) then Car.SetImmunities(0@, 0, 0, 0, 0, 0) Car.LockInCurrentPosition(0@) = False 041E: set_radio_station 7@ Marker.Disable(28@) Car.RemoveReferences(0@) if not 29@ == 0 then Car.SetImmunities(29@, 0, 0, 0, 0, 0) Car.LockInCurrentPosition(29@) = False Car.RemoveReferences(29@) end jump @SVRSAVE_90 end else if not 29@ == 0 then if 056E: car 29@ defined then car.destroy(29@) Car.RemoveReferences(29@) end end jump @SVRSAVE_106 end
Offline
Опкод не подойдет, прицеп может быть, а может и не быть.
В структуре транспорта есть m_pTrailer адрес +0x4C8 (size 4), по которому можно определить есть у транспорта прицеп или нет. И предыдущий адрес +0x4C4 (size 4) - это m_pTractor
Offline
Опкод не подойдет, прицеп может быть, а может и не быть.
В структуре транспорта есть m_pTrailer адрес +0x4C8 (size 4), по которому можно определить есть у транспорта прицеп или нет. И предыдущий адрес +0x4C4 (size 4) - это m_pTractor
Меня чуток не поняли видимо. Я все свое сохранение для транспорта мучаю. Тут цимес не в наличии прицепа в принципе, а в том, что бы упростить скрипт и убрать лишние строки. Там дело в том, что игра прицеп удаляет рано, гораздо раньше автомобиля игрока, поэтому приходится проверять отдельно существует ли прицеп (если он был изначально) и существует ли автомобиль (если прицепа изначально не было), хотя в целом нынешний вариант тоже удачный получился, весь скрипт на 10кб поджал и добавил чего не хватало.
Тут новый вопрос возник, как пользоваться опкодом interceptor? Весь яндекс перерыл, нигде внятной справки нет, в стандартной справке билдера тоже тишина.
0AE2: почему-то глючит если много машин захватывать, а мне порядка 30-ти штук надо как то удержать от удаления... Бида.
Offline
0AE2: почему-то глючит если много машин захватывать, а мне порядка 30-ти штук надо как то удержать от удаления... Бида.
Дело не в количестве. Возможно код неправильно написан.
Offline
Там дело в том, что игра прицеп удаляет рано, гораздо раньше автомобиля игрока
Если Вы думаете, что
0@ = Actor.CurrentCar($PLAYER_ACTOR) 29@ = Actor.CurrentCar($PLAYER_ACTOR)
захватывает прицеп и машину игрока, то это не так. Никакого прицепа там не запишется, а будет только машина игрока. Следовательно все проверки и действия с 29@ можно попросту убрать и использовать только 0@. Чем Вам не стирание лишних строк. Я не видел весь код, но тот что указан здесь можно сократить.
Меня чуток не поняли видимо
Я лично вообще не понял что нужно сделать Слишком мало подробностей, чтобы понять.
весь скрипт на 10кб поджал
Это ради чего? У меня мини-игра на 700+ строчек занимала 22 Кб. Не так у ж много. На быстродействие как-то не оказывает давления при грамотном подходе. Если это Cleo-скрипты, то можете добавить директиву {$NOSOURCE}, тогда ещё меньше получится. Для Cleo-миссий он вообще бесценен.
Offline
0AE2: почему-то глючит если много машин захватывать, а мне порядка 30-ти штук надо как то удержать от удаления... Бида.
Дело не в количестве. Возможно код неправильно написан.
Да, переписал заново, теперь работает. Только с рандомом проблема:
... 00BF: 0@ = current_time_hours, 2@ = current_time_minutes if and 0@ == 23 0@ == 0 0@ == 1 0@ == 2 0@ == 3 0@ == 4 0@ == 5 then 0@ = 60 else 0@ = 100 end // ... // 0209: 10@ = random_int_in_ranges 0 0@ // ... // if and 10@ < 55 8AE2: not 2@ = random_vehicle_near_point 2162.47 -1807.2 13.1119 in_radius 3.0 find_next 0 pass_wrecked 1 then 03C5: create_random_car_for_carpark 2162.47 -1807.2 12.3119 z_angle 180.723 end 2@ = 0
И днем и ночью почти ничего не меняется, т.е. сам рандом работает, но машин в среднем одинаково появляется.
Кстати в вашем скрипте не весь тюнинг сохраняется, и еще вы же мне сами писали, проверяй наличие авто после wait, а у вас:
:AVTO1_1024 wait 0 06EA: car_component 25@ available else_jump @AVTO1_1024 06E7: 6@ = add_car_component 25@ to_car 9@ 06EB: release_car_component 25@ jump @AVTO1_1371
, но у меня тоже бида, не могу найти указатель на второй номер, сохраняется только первый.
Last edited by Svyatogor2007 (09-10-2018 21:39)
Offline
Только с рандомом проблема
В опкодах случайного выбора значения из какого-либо диапазона, правое значение в диапазон не входит.
И ещё вот эту строчку
10@ < 55
попробуй записать так
001B: 55 > 10@
Кстати в вашем скрипте не весь тюнинг сохраняется
Не весь. На все детали не хватило переменных.
и еще вы же мне сами писали, проверяй наличие авто после wait, а у вас:
Ошибки в старых скриптах возможны. Я тоже когда-то учился, как ты сейчас. Проверять надо.
Выше ты писал про сокращение размера скрипта. Размер скрипта не столь важен. Важен хорошо читаемый правильный оптимизированный код скрипта. Вот эти строчки можно сократить (P.S. тем более, что это условие всегда будет ложным)
if and 0@ == 23 0@ == 0 0@ == 1 0@ == 2 0@ == 3 0@ == 4 0@ == 5
до такого варианта
if or 0@ == 23 8019: not 0@ > 5
а если взять отсчёт не от 23, а от 24 т.е. 0, то ещё короче
if 8019: not 0@ > 5
не могу найти указатель на второй номер, сохраняется только первый.
Какой номер ты имеешь ввиду?
Last edited by kenking (10-10-2018 10:48)
Offline
Приветствую, программисты!
Отрадно видеть что SA еще модифицируют, игра еще жива! Наверно это потому-что 5 часть не стала эволюционным венцом всей серии, да много нового, современного, но нету штата Сан Андреас, есть всего один город и его пригород, а SA это целый штат, 3 города и их пригороды!
Да, у SA карта меньше, но снаружи,а внутри она больше
Отвлекся я, а порог околачиваю с таким вопросом или просьбой, раньше был на руках скрипт одного умельца, который отключил агрессивное поведение водил, ну когда они начинают бешено таранить машину игрока, мстя за царапину на крыле
Помню что скрипт был простой и короткий, что-то с адресами памяти, найти в сети не получается, как испарился, может подскажет хороший человек, что это за скрипт, или адреса памяти?
Offline
не могу найти указатель на второй номер, сохраняется только первый.
Какой номер ты имеешь ввиду?
Номер машины имеется ввиду. Один есть, а второй рандомный от игры.
Offline
Добрый день,
подскажите пожалуйста, в чем отличия опкодов:
011C: actor $PLAYER_ACTOR clear_objective 009F: set_actor $PLAYER_ACTOR idle 0192: set_actor $PLAYER_ACTOR objective_to_stand_still
В игре все трое только прерывают действие педа, и больше никакого эффекта
VC
Last edited by trashmas (12-10-2018 17:05)
Offline
trashmas, я в опкодах не шарю, но чисто логически:
1. это когда нужно обязать актера ничего не делать, "типа заморозить".
2. idle вроде как анимация бездействия, следовательно этим назначается актеру.
3. это как понимаю заставить актера остановиться( если до этого он топал ). Ну или заставляет стоять на месте но "курить можно"
В любом случае инфа по этим опкодам есть здесь: https://gtagmodding.com/opcode-database/opcode/0192/
Last edited by 4lifeGTA (12-10-2018 20:55)
Offline