Не пизди. Всё нормально копируется, а если ты особо одаренный, то сохрани исходный код в txt и загрузи его куда-нибудь. Функция сохранения есть в SB.Код копируется зеркально, да еще и без переноса строк - нечитабельная херня, без кода всё же .-.
Почему при использовании четырёх actor.putAt подряд, но с интервалами по 500 мс, варпает только на последний - игнорируя три предшествующих + общую задержку в две секунды?
Вынести телепорт из метки команды в основной поток скрипта, который ты деактивировал.Так как установить задержку, если не с wait?
056D: actor 3@ defined удалитьПочему крашит при отсутствии игрока в стриме?
отмазкиЯ реально не в курсе как это исправить, это мой первый скрипт .-.
ну иди, блять, нахуй значитя стесняюсь это позорище показывать, к тому же я его еще не доделал
нет там никаких махинацийТе махинации с 10@, это, получается, рекурсия? Ну или какой-то кустарный цикл...
Я реально нуб, я не понял что ты имеешь ввиду. Какой поток я деактивировал?
Ты имеешь ввиду pause thread 0?
upd1
Эй, спасибо!
Я удалил defined и поставил проверку на получении ида - теперь не крашит, если игрок не в стриме!
{$CLEO .cs}
{$INCLUDE SF}
0000:nop
while not samp.Available()
wait 1000
end
0af8: "wait for cmd" -1
0B34: samp register_client_command "k" to_label @k
0BDE: pause_thread 0
// сам скрипт перестает работать
// работает только вызов метки @k через команду /k
:k
0B35: samp 0@ = get_last_command_params
if 0AD4: 1@ = scan_string 0@ format "%d" 2@
then
// 0B20: samp 3@ = actor_handle_by_samp_player_id 2@
// if 056D: actor 3@ defined
if 0B20: samp 3@ = actor_handle_by_samp_player_id 2@ // фикс краша
then
0af8: "Игрок в зоне стрима!" -1 // thank for legend
00A0: store_actor $PLAYER_ACTOR 13@ 14@ 15@
04C4: store_coords_to 4@ 5@ 6@ from_actor 3@ with_offset 0.0 0.0 -3.0
04C4: store_coords_to 7@ 8@ 9@ from_actor 3@ with_offset 0.0 0.0 -2.0
04C4: store_coords_to 10@ 11@ 12@ from_actor 3@ with_offset 0.0 0.0 -1.0
else
0af8: "Вне стрима" -1
if actor.driving($PLAYER_ACTOR)
then
Actor.PutAt($PLAYER_ACTOR,4@,5@,6@)
wait 500 // задержки игнорируются, если вызов метки произошел из команды
Actor.PutAt($PLAYER_ACTOR,7@,8@,9@)
wait 500
Actor.PutAt($PLAYER_ACTOR,10@,11@,12@)
wait 1000
actor.PutAt($PLAYER_ACTOR,13@,14@,15@)
else
0af8: "car not found" -1
end
end
end
0B43: samp cmd_ret
/*0B35: samp 0@ = get_last_command_params
if 0AD4: 5@ = scan_string 0@ format "%d" 2@
then
0AD1: show_formatted_text_highpriority "Command accepted" time 500 0x0AD1
0B20: samp 1@ = actor_handle_by_samp_player_id 2@
0AD1: show_formatted_text_highpriority "Handle found" time 500 0x0AD1
end
while true
wait 0
end
:k
29@ = 1 // 29@ - любая нигде больше не используемая переменная
0B43: samp cmd_ret
Код не компилировал.Есть опкод проверяющий что игрок сел в машину? Не находится, не садится, а сел.
:GetActorCarStatus
if 0449: is_char_sitting_in_any_car 0@
then 1@ = 1 // в машине
else 1@ = 0 // не в машине
end
wait 0 // ждем один кадр
if 0449: is_char_sitting_in_any_car 0@
then 2@ = 1 // в машине
else 2@ = 0 // не в машине
end
if 1@ < 2@ // не сидел, а спустя кадр - сидит
then 0AB2: ret 1 0
end
if 1@ > 2@ // сидел, а спустя кадр - не сидит
then 0AB2: ret 1 1
end
if 1@ == 2@ // состояние не менялось
then 0AB2: ret 1 -1
end
0AB1: @GetActorCarStatus 1 actor $PLAYER_ACTOR ret 0@
cmdretВот так?
К слову. После того как перестало крашить при отсутствии игрока в стриме, стало крашить, когда идёт очередь опкода actor.putAt
Вот так?
{$CLEO .cs}
{$INCLUDE SF}
0000:nop
while not samp.Available()
wait 1000
end
0af8: "wait for cmd" -1
0B34: samp register_client_command "k" to_label @k
while true
wait 0
if 29@ == 1
then
29@ = 0
0B35: samp 0@ = get_last_command_params
if 0AD4: 1@ = scan_string 0@ format "%d" 2@
then
if 0B20: samp 3@ = actor_handle_by_samp_player_id 2@
then
0af8: "Игрок в зоне стрима!" -1 // thank for legend
00A0: store_actor $PLAYER_ACTOR 13@ 14@ 15@
04C4: store_coords_to 4@ 5@ 6@ from_actor 3@ with_offset 0.0 0.0 -3.0
04C4: store_coords_to 7@ 8@ 9@ from_actor 3@ with_offset 0.0 0.0 -2.0
04C4: store_coords_to 10@ 11@ 12@ from_actor 3@ with_offset 0.0 0.0 -1.0
else
0af8: "Вне стрима" -1
if actor.driving($PLAYER_ACTOR)
then
Actor.PutAt($PLAYER_ACTOR,4@,5@,6@)
wait 500
Actor.PutAt($PLAYER_ACTOR,7@,8@,9@)
wait 500
Actor.PutAt($PLAYER_ACTOR,10@,11@,12@)
wait 1000
actor.PutAt($PLAYER_ACTOR,13@,14@,15@)
else
0af8: "car not found" -1
end
end
end
end
end
:k
29@ = 1
0B43: samp cmd_ret
Да, это кусок предыдущего сообщения приклеился как-то.Если уж ты и впрямь такой знаток, не можешь мне рассказать под шум волны какие-нибудь основные правила построения скриптов, ну там - что с чем нельзя, что с чем можно?
И заранее прошу прощения за некорректный вопрос
большая кнопка WIKI вверху сайта для кого?Я там читал, но там ни строчки нету о СФ, а без него почти ничего не сделать, Мой принцип построения, по логике, должен был без ошибок работать именно в обычном клео, но в обычном клео нету опкода "зарегистрировать команду" - а мне нужно ид жертвы указывать .-.
Ну, в плане работы с командами принцип простой: лучше (а если есть задержки в коде — обязательно) для каждой команды делать небольшой обработчик, а сам код выполнять в главном цикле (либо сделать отдельную scm-функцию, которая будет вызываться из главного цикла).Я там читал, но там ни строчки нету о СФ, а без него почти ничего не сделать.
Это производная от скорости.В смысле, "ускорение"?
Ну, если я правильно помню, стандартный опкод для получения координат со смещением, как раз, получает их относительно того игрока, к которому применяется. Тебя интересует координата Y.был я там, слишком тупой для вики.
Никто не подскажет, как получить координаты игрока с оффсетом по направлению камеры, направлению движения, по смещению координат игрока, или просто относительно тела, чтобы точка полученная была перед "лицом" педа?
Скрипт заработал, но всё херня. Я по прежнему никак не могу захватить игрока машиной, уже даже основа в бан улетела -.-