он понимает когда игрок в каре, а когда нет. Проблема если игрок в каре, то скорость автомобиля не выводит, а сразу краш.actor.Driving не принимает аргумент в виде ид игрока/автомобиля сампа
он понимает когда игрок в каре, а когда нет. Проблема если игрок в каре, то скорость автомобиля не выводит, а сразу краш.actor.Driving не принимает аргумент в виде ид игрока/автомобиля сампа
CLEO:0B35: samp 1@ = get_last_command_params if 0AD4: 2@ = scan_string 1@ format "%d" 3@ then if actor.Driving(3@) then 03C0: 4@ = actor 3@ car 02E3: 5@ = Car 4@ speed chatmsg "Ñêîðîñòü: %.1f " -1 5@ else chatmsg "Èãðîê íå â êàðå" -1 end else 0AF8: samp add_message_to_chat "/kek id" color 0xFFD700 end
что не так?
actor.Driving принимает только хендл актера, а не его ид. Т.е. тебе нужно получить хендл по иду и проверять, что хендл не равен нулю.он понимает когда игрок в каре, а когда нет. Проблема если игрок в каре, то скорость автомобиля не выводит, а сразу краш.
Я думаю, в конструкции ещё wait не помешал бы. Многовато операций за раз выходит.actor.Driving принимает только хендл актера, а не его ид. Т.е. тебе нужно получить хендл по иду и проверять, что хендл не равен нулю.
Тело функции, которое обрабатывается с помощью SF, не благотворят wait внутри.Я думаю, в конструкции ещё wait не помешал бы. Многовато операций за раз выходит.
Здравствуйте, скриптеры! У меня возникло парочку вопросов, надеюсь на вашу помощь.
1. Почему не стоит использовать глобальные переменные?
2. Можно ли сделать переменных больше чем 31@.
3. Как остановить цикл REPEAT, если функция выключена (Например: У меня есть функция, которую я включил, а потом выключил, но при этом цикл, который у меня присутствует в коде все еще идет, и если проверка выполнится, скрипт все равно сработает. Как это исправить?)
0AC8: 0@ = allocate_memory_size 8 // "2 переменные", каждая может содержать по 4 байта информации => 2 * 4 = 8
0AB1: call @writeToMemory 2 p 0@ n 0 value 1234
0AB1: call @writeToMemory 2 p 0@ n 1 value 200.5
0AB1: call @readFromMemory 2 p 0@ n 0 ret_to 1@
0AB1: call @readFromMemory 2 p 0@ n 1 ret_to 2@
0AD1: show_formatted_text_highpriority "%d %f" time 3000 1@ 2@
:writeToMemory
// call @writeToMemoryOffset 2 p 0@ n 1@ value 2@
1@ *= 4
005A: 0@ += 1@
0A8C: write_memory 0@ size 4 value 2@ virtual_protect 0
0AB2: ret 0
:readFromMemory
// call @readFromMemory 2 p 0@ n 1@ ret_to 2@
1@ *= 4
005A: 0@ += 1@
0A8D: 2@ = read_memory 0@ size 4 virtual_protect 0
0AB2: ret 1 2@
Помешает он толькоЯ думаю, в конструкции ещё wait не помешал бы. Многовато операций за раз выходит.
3. Когда я ввожу команду /cmd, у меня переменной 0@ присваивается true (0@ = 1). После этого прыгает на gosub (смотри ниже), а в gosub у меня стоит цикл RETURN. Так вот если я передумал использовать скрипт и снова ввел /cmd, то переменной 0" присваивается false, т.е. скрипт не должен работать, но так как у меня в gosub стоит цикл, пока он не выполнится, скрипт не выключится. Как это исправить?Тело функции, которое обрабатывается с помощью SF, не благотворят wait внутри.
- Можешь использовать те, которые зарезервированы и не используются. "Создание" своих приведет к перезаписи переменных, которые могут использоваться игрой;
- Выдели память (4 байта - 1 переменная) с помощью, к примеру 0AC8, и потом записывай туда что-хочешь размером в 4 байта;
CLEO:0AC8: 0@ = allocate_memory_size 8 // "2 переменные", каждая может содержать по 4 байта информации => 2 * 4 = 8 0AB1: call @writeToMemory 2 p 0@ n 0 value 1234 0AB1: call @writeToMemory 2 p 0@ n 1 value 200.5 0AB1: call @readFromMemory 2 p 0@ n 0 ret_to 1@ 0AB1: call @readFromMemory 2 p 0@ n 1 ret_to 2@ 0AD1: show_formatted_text_highpriority "%d %f" time 3000 1@ 2@ :writeToMemory // call @writeToMemoryOffset 2 p 0@ n 1@ value 2@ 1@ *= 4 005A: 0@ += 1@ 0A8C: write_memory 0@ size 4 value 2@ virtual_protect 0 0AB2: ret 0 :readFromMemory // call @readFromMemory 2 p 0@ n 1@ ret_to 2@ 1@ *= 4 005A: 0@ += 1@ 0A8D: 2@ = read_memory 0@ size 4 virtual_protect 0 0AB2: ret 1 2@
- Какая проверка?.
:DRIVING
REPEAT
0001: 100
UNTIL 00DF: $PLAYER_ACTOR {REPEAT}
04C4: store_coords_to 10@ 11@ 12@ from_actor $PLAYER_ACTOR with_offset 0.0 0.0 0.0
03C0: 0@ = actor $PLAYER_ACTOR car
0051:
Помешает он только
Тело функции, которое обрабатывается с помощью SF, не благотворят wait внутри.
- Можешь использовать те, которые зарезервированы и не используются. "Создание" своих приведет к перезаписи переменных, которые могут использоваться игрой;
- Выдели память (4 байта - 1 переменная) с помощью, к примеру 0AC8, и потом записывай туда что-хочешь размером в 4 байта;
CLEO:0AC8: 0@ = allocate_memory_size 8 // "2 переменные", каждая может содержать по 4 байта информации => 2 * 4 = 8 0AB1: call @writeToMemory 2 p 0@ n 0 value 1234 0AB1: call @writeToMemory 2 p 0@ n 1 value 200.5 0AB1: call @readFromMemory 2 p 0@ n 0 ret_to 1@ 0AB1: call @readFromMemory 2 p 0@ n 1 ret_to 2@ 0AD1: show_formatted_text_highpriority "%d %f" time 3000 1@ 2@ :writeToMemory // call @writeToMemoryOffset 2 p 0@ n 1@ value 2@ 1@ *= 4 005A: 0@ += 1@ 0A8C: write_memory 0@ size 4 value 2@ virtual_protect 0 0AB2: ret 0 :readFromMemory // call @readFromMemory 2 p 0@ n 1@ ret_to 2@ 1@ *= 4 005A: 0@ += 1@ 0A8D: 2@ = read_memory 0@ size 4 virtual_protect 0 0AB2: ret 1 2@
- Какая проверка?.
В цикле3. Когда я ввожу команду /cmd, у меня переменной 0@ присваивается true (0@ = 1). После этого прыгает на gosub (смотри ниже), а в gosub у меня стоит цикл RETURN. Так вот если я передумал использовать скрипт и снова ввел /cmd, то переменной 0" присваивается false, т.е. скрипт не должен работать, но так как у меня в gosub стоит цикл, пока он не выполнится, скрипт не выключится. Как это исправить?
if 0@ == 0 then
break
end
Насчет чего?Т.е. в сампфунксе на этот счёт всё предусмотрено?
Ой, спасибо тебе большое! Выручил)В цикле
CLEO:if 0@ == 0 then break end
Насчет чего?
При регистрации команды указывается колбэк, в колбэках некорректно использовать wait и подобные операторы.
Нет такого опкода.Упс... У меня кейворда "break" нет. Не подскажешь опкод?
Его sb не подсвечиваетТогда у меня он просто не работает
В цикле
CLEO:if 0@ == 0 then break end
Насчет чего?
При регистрации команды указывается колбэк, в колбэках некорректно использовать wait и подобные операторы.