<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>SIZZZ</title><generator>teletype.in</generator><description><![CDATA[SIZZZ]]></description><image><url>https://teletype.in/files/3a/42/3a428eb5-d656-4d16-8115-81f9370cb615.jpeg</url><title>SIZZZ</title><link>https://teletype.in/@gtasa_stuff</link></image><link>https://teletype.in/@gtasa_stuff?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gtasa_stuff</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/gtasa_stuff?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/gtasa_stuff?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Wed, 29 Apr 2026 04:08:55 GMT</pubDate><lastBuildDate>Wed, 29 Apr 2026 04:08:55 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@gtasa_stuff/cleotext</guid><link>https://teletype.in/@gtasa_stuff/cleotext?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gtasa_stuff</link><comments>https://teletype.in/@gtasa_stuff/cleotext?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gtasa_stuff#comments</comments><dc:creator>gtasa_stuff</dc:creator><title>CLEO: Урок 4 - Работа с текстом</title><pubDate>Tue, 01 Sep 2020 14:49:19 GMT</pubDate><category>CLEO</category><description><![CDATA[<img src="https://teletype.in/files/58/d6/58d62a8f-bf7a-4a7a-b8c4-b622c22c8777.jpeg"></img>Сегодня затронем тему текстов в CLEO скриптинге. 
Тексты в CLEO бывают разных видов: субтитры, текст бокс, стилизованный текст (его можно увидеть при выполнении миссии, смерти игрока, или на гонках).]]></description><content:encoded><![CDATA[
  <figure class="m_original">
    <img src="https://teletype.in/files/58/d6/58d62a8f-bf7a-4a7a-b8c4-b622c22c8777.jpeg" width="4066" />
  </figure>
  <p>Сегодня затронем тему текстов в CLEO скриптинге. <br />Тексты в CLEO бывают разных видов: субтитры, текст бокс, стилизованный текст (его можно увидеть при выполнении миссии, смерти игрока, или на гонках).</p>
  <p>Рассмотрим опкоды, выводящие различные типы текста на экран:</p>
  <pre>0ACD: show_text_highpriority &quot;text&quot; time 100</pre>
  <p>Данный опкод выводит текст-субтитры внизу экрана. Вместо &quot;text&quot; нужно писать свой текст, переведенный через rus2gxtcoder. Time - время отображения текста на экране. Данный опкод имеет высокий приоритет, то есть если на экране будут другие субтитры (например в миссии), то они будут убраны, а текст со скрипта будет выведен на экран.</p>
  <pre>0ACC: show_text_lowpriority &quot;text&quot; time 100</pre>
  <p>Точно такой же опкод как и предыдущий, но имеет низкий приоритет. Если на экране будут показаны другие субтитры, то скрипт будет ждать пока они закончатся, и только потом выведет нужный текст.</p>
  <p></p>
  <p>Для вывода некоторых текстов нужно сначала создать динамическую gxt запись</p>
  <pre>0ADF: add_dynamic_GXT_entry &quot;NAME&quot; text &quot;Text&quot;</pre>
  <p>NAME - это имя записи. Оно должно быть не более 5 символов<br />Text - соответственно текст, который будет храниться в записи</p>
  <p>Если текстовая запись вам больше не нужна, чтобы не засорять память игры удалить её можно опкодом <code>0AE0: remove_dynamic_GXT_entry &quot;NAME&quot;</code><br /><br /><br /><br /><br />Данный опкод выводит постоянный текст-бокс с текстом из gxt записи NAME, которую мы создали ранее. </p>
  <pre>0512: show_permanent_text_box &#x27;NAME&#x27;</pre>
  <p>Чтобы убрать текст бокс, нужно воспользоваться опкодом <code>03E6: remove_text_box</code></p>
  <p></p>
  <p>Этот опкод выведет на экран форматированный текст бокс. Он будет выведен на экран всего на пару секунд, а потом сам исчезнет.</p>
  <pre>0ACE: show_formatted_text_box &quot;Text %d&quot; 1@</pre>
  <p>Как вы заметили, в опкоде стоит символ %d и переменная 1@. Так вот, у  форматированных текстов есть одна особенность - в них можно выводить данные из переменной<strong>.</strong>  %d - это тип переменной, а 1@ - переменная, число из которой нужно вывести на экран.</p>
  <p>Типы переменных для добавления в текст:<br />%d - целое число<br />%f - дробное<br />%s - строка</p>
  <p>Если мы напишем такой код:</p>
  <pre>1@ = 333
0ACE: show_formatted_text_box &quot;Text %d&quot; 1@</pre>
  <p>В игре на экран будет выведена запись &quot;Text 333&quot;</p>
  <p>Если напишем такой:</p>
  <pre>
1@ = 333.333
0ACE: show_formatted_text_box &quot;Text %f&quot; 1@</pre>
  <p>То будет выведен текст &quot;Text 333.333&quot;</p>
  <p>По такому же принципу работают следующие опкоды:</p>
  <pre>0ACF: show_formatted_styled_text &quot;This is %.4X opcode&quot; time 2000 style 1 0x0ACF
0AD0: show_formatted_text_lowpriority &quot;This is %.4X opcode&quot; time 2000 0x0AD0
0AD1: show_formatted_text_highpriority &quot;This is %.4X opcode&quot; time 2000 0x0AD1</pre>
  <p>Просто подставляете в конце вместо 0x0AD0 переменную и в тексте указываете тип. Можно добавлять несколько переменных, одну за другой.</p>
  <p>Например так:</p>
  <pre>1@ = 1
2@ = 10
0ACE: show_formatted_text_box &quot;%d Text %d&quot; 1@ 2@</pre>
  <p>Результат: &quot;1 Text 10&quot;</p>
  <p><br />В данных опкодах не обязательно выводить переменные. Если вам это не нужно, просто удалите символы 0x0ACF в конце.</p>
  <p>Аналоги этих же опкодов, но они берут текст из gxt записи.</p>
  <pre>00BB: show_text_lowpriority GXT &#x27;IE23&#x27; time 3000 flag 1 
00BC: show_text_highpriority GXT &#x27;MTIME3&#x27; time 1000 flag 1</pre>
  <p></p>
  <p>Стилизованный форматированный текст:</p>
  <pre>0ACF: show_formatted_styled_text &quot;Text&quot; time 2000 style 1 0x0ACF</pre>
  <p>Значения style:<br />1 - текст по середине, как при провале миссии<br />2 - текст выводится, где название миссии<br />3 - текст как при аресте или смерти игрока<br />4 - сверху, как в гоночных миссиях<br />6 - по центру, как в гоночных миссиях<br />7 - как при провале миссии, но уже вверху</p>
  <p></p>
  <p>Стилизовнный текст из gxt записи:</p>
  <pre>00BA: show_text_styled GXT &quot;BEEFY&quot; time 1000 style 2  </pre>
  <p></p>
  <p>Если урок был вам непонятен, рекомендую ознакомиться с уроком по текстам от wmysterio. А на этом все!</p>
  <p><a href="http://ru-script.3dn.ru/publ/gta_sa/obucheniye_skriptinga/rabota_s_tekstom/34-1-0-35" target="_blank">Урок &quot;Работа с текстом&quot; от wmysterio</a></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@gtasa_stuff/templates</guid><link>https://teletype.in/@gtasa_stuff/templates?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gtasa_stuff</link><comments>https://teletype.in/@gtasa_stuff/templates?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gtasa_stuff#comments</comments><dc:creator>gtasa_stuff</dc:creator><title>CLEO &amp; DYOM: Шаблоны скриптов</title><pubDate>Sun, 30 Aug 2020 08:55:07 GMT</pubDate><category>CLEO_&amp;amp;_DYOM</category><description><![CDATA[<img src="https://teletype.in/files/c8/8c/c88cd436-4157-4140-b345-74cb14140d91.jpeg"></img>Тут вы можете найти шаблоны для CLEO скриптов, которые можно отредактировать и использовать в своих миссиях.]]></description><content:encoded><![CDATA[
  <figure class="m_original">
    <img src="https://teletype.in/files/c8/8c/c88cd436-4157-4140-b345-74cb14140d91.jpeg" width="4066" />
  </figure>
  <p>Тут вы можете найти шаблоны для CLEO скриптов, которые можно отредактировать и использовать в своих миссиях.</p>
  <p><a href="https://drive.google.com/file/d/1sgihdvwTARdVXjRSS9jHvwp0cMOIJQ9q/view?usp=sharing" target="_blank">Шаблон для добавление любого действия во время цели</a> </p>
  <p><a href="https://drive.google.com/file/d/1qiAM8ijzqZYIjrmoncc55P3E0KsMOlZZ/view?usp=sharing" target="_blank">Нервометр для актера</a></p>
  <p><a href="https://drive.google.com/file/d/1fBJKiTlFNYoyEy2d7KVv_XVGwBt3x31i/view?usp=sharing" target="_blank">Добавляем метку на карту во время цели </a></p>
  <p><a href="https://drive.google.com/file/d/121_L8K8C3FiCRVdhAv42a9L13GYtcvpq/view?usp=sharing" target="_blank">Одноразовое нитро для машины</a></p>
  <p></p>
  <hr />
  <p>Полезные ссылки:</p>
  <p><a href="https://teletype.in/@gtasa_stuff/cleo1" target="_blank">CLEO: Урок 1 - Основы</a></p>
  <p><a href="http://gtascript.ru/opcodes/#115" target="_blank">База данных опкодов</a></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@gtasa_stuff/nervometr</guid><link>https://teletype.in/@gtasa_stuff/nervometr?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gtasa_stuff</link><comments>https://teletype.in/@gtasa_stuff/nervometr?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gtasa_stuff#comments</comments><dc:creator>gtasa_stuff</dc:creator><title>CLEO &amp; DYOM: Делаем нервометр</title><pubDate>Sun, 30 Aug 2020 08:51:48 GMT</pubDate><category>CLEO_&amp;amp;_DYOM</category><description><![CDATA[<img src="https://teletype.in/files/c8/8c/c88cd436-4157-4140-b345-74cb14140d91.jpeg"></img>Если вы проходили оригинальные миссии GTA SA, вы наверняка знаете, что такое нервометр. Но если кто не в курсе, нервометр - это такой датчик приближения в игре. ]]></description><content:encoded><![CDATA[
  <figure class="m_original">
    <img src="https://teletype.in/files/c8/8c/c88cd436-4157-4140-b345-74cb14140d91.jpeg" width="4066" />
  </figure>
  <p>Если вы проходили оригинальные миссии GTA SA, вы наверняка знаете, что такое нервометр. Но если кто не в курсе, нервометр - это такой датчик приближения в игре. </p>
  <p></p>
  <figure class="m_original">
    <img src="https://teletype.in/files/8e/d3/8ed310a3-13a7-43e3-93c0-01c1cfb41fab.png" width="500" />
  </figure>
  <p><br />Действует он так: если мы подойдем очень близко к цели (актеру/объекту/машине), то шкала нервометра начнет повышаться и миссия провалится. Так же миссия будет провалена, если мы ушли слишком далеко от цели.</p>
  <p>Сегодня попробуем сделать упрощенную версию нервометра для своей миссии. Мы не будем создавать шкалу приближения, а просто будем выводить предупреждение в виде текста, что игрок подошел слишком близко к цели, и если игрок не уйдет из зоны поражения - миссия провалится. А если игрок окажется слишком далеко от цели, то миссия сразу же будет провалена без предупреждения.</p>
  <p>Если вы не читали <a href="https://teletype.in/@gtasa_stuff/drunkcam" target="_blank">предыдущий урок</a>, обязательно прочитайте его, чтобы понимать принцип взаимодействия DYOM и CLEO.</p>
  <p>И так, приступим. Создаем скрипт, и добавляем 3 условия при которых будет работать наш нервометр</p>
  <pre>{$CLEO}
0000:

:NERVOMETR
wait 0
if and
$ONMISSION == 1 //миссия запущена
$10914 == 1 //слот миссии равен 1
$9903 == 0 //текущая цель равна 0
jf @NERVOMETR</pre>
  <p></p>
  <p>Далее добавляем такое условие:</p>
  <pre>if
0AE1: 0@ = random_actor_near_point 2469.8926 -1657.8087 13.3443 in_radius 1.0 find_next 0 pass_deads 1
jf @NERVOMETR
wait 500</pre>
  <p>Данный опкод записывает рандомного актера в точке 2469.8926 -1657.8087 13.3443 с радиусом 1 в переменную 0@. Так же этот опкод работает и как проверка существует ли актер. Если актер существует, то ждем 500 мс и идем дальше по скрипту, если нет - возвращаемся в начало.</p>
  <p>Вместо координат 2469.8926 -1657.8087 13.3443 вам нужно вставить координаты актера для которого будет действовать нервометр. Для этого зайдите в игру, встаньте на то место, где стоит нужный актер, сверните игру и зайдите в Sanny Builder. Теперь поставьте курсор туда, куда нужно вставить координаты и нажмите CTRL+SHIFT+C.</p>
  <p></p>
  <p>Дальше создаем цикл <code>while</code>, который будет повторяться пока текущей целью является цель №1.  <br />Добавляем условие, если актер 0@ не находится около игрока в радиусе 50 единиц, то завершаем миссию, выводим текст &quot;Цель ушла&quot; большими буквами, как при провале миссии, и выходим из цикла с помощью <code>break</code>. <br />Текст для CLEO скриптов нужно переводить через rus2gxtcoder, либо писать на языке мефисто, иначе у вас в игре вместо нормального текста будет не пойми что.</p>
  <pre>while $9903 == 0
wait 0
    if
    80F2:   not actor 0@ near_actor $PLAYER_ACTOR radius 50.0 50.0 sphere 0
    then
    045C: abort_mission
    0ACF: show_formatted_styled_text &quot;~r~‰eћ© yҐћa&quot; time 2000 style 1 //&quot;~r~‰eћ© yҐћa&quot; - текст, time - время появления текста, style - стиль текста
    break
    end</pre>
  <p></p>
  <p>Отлично, пол дела сделано. Теперь если цель отдалится от игрока более чем на 50 единиц, то миссия будет завершена с надписью &quot;Цель ушла&quot;</p>
  <p>Дальше нам потребуется написать код, который будет завершать миссию и в том случае, если игрок находится слишком близко к цели.</p>
  <p>Для этого добавляем следующее условие (все так же в цикле): если актер около игрока в радиусе 10 единиц, то выводим текст &quot;Вы слишком близко&quot; на 2 секунды.</p>
  <pre>    if
    00F2:   actor 0@ near_actor $PLAYER_ACTOR radius 10.0 10.0 sphere 0
    then
    0ACD: show_text_highpriority &quot;‹¨ cžœ¥ko¯ —žœŸko&quot; time 2000 </pre>
  <p></p>
  <p>Ждем 4 секунды и еще раз проверяем находится ли актер 0@ около игрока в радиусе 10 единиц. Это нужно для того, чтобы после появления предупреждения у игрока было немного времени и он мог бы отойти от цели на определенное расстояние, чтобы избежать провала миссии. Если игрок все еще остался в этом радиусе, то завершаем миссию, выводим текст &quot;Вас заметили&quot; и прерываем цикл с помощью <code>break</code>. Не забываем закрыть все открытые условия с помощью <code>end</code></p>
  <pre>    wait 4000
        if
        00F2:   actor 0@ near_actor $PLAYER_ACTOR radius 10.0 10.0 sphere 0
        then
        045C: abort_mission
        0ACF: show_formatted_styled_text &quot;~r~‹Ё џaЇe¤e®Ё&quot; time 2000 style 1
        break
        end
    end  </pre>
  <p></p>
  <p>Пишем последние две строчки кода. Закрываем открытый ранее цикл while и переходим в начало скрипта.</p>
  <pre>end 
jump @NERVOMETR</pre>
  <p></p>
  <p>Вот, что у нас получилось в итоге:</p>
  <pre>{$CLEO}
0000:

:NERVOMETR
wait 0
if and
$ONMISSION == 1
$10914 == 1
$9903 == 0
jf @NERVOMETR
wait 500
if
0AE1: 0@ = random_actor_near_point 2469.8926 -1657.8087 13.3443 in_radius 1.0 find_next 0 pass_deads 1
jf @NERVOMETR
wait 500
while $9903 == 0
wait 0
    if
    80F2:   not actor 0@ near_actor $PLAYER_ACTOR radius 50.0 50.0 sphere 0
    then
    045C: abort_mission
    0ACF: show_formatted_styled_text &quot;~r~‰eћ© yҐћa&quot; time 2000 style 1
    break
    end
    if
    00F2:   actor 0@ near_actor $PLAYER_ACTOR radius 10.0 10.0 sphere 0
    then
    0ACD: show_text_highpriority &quot;‹Ё cћњҐkoЇ —ћњџko&quot; time 2000
    wait 4000
        if
        00F2:   actor 0@ near_actor $PLAYER_ACTOR radius 10.0 10.0 sphere 0
        then
        045C: abort_mission
        0ACF: show_formatted_styled_text &quot;~r~‹Ё џaЇe¤e®Ё&quot; time 2000 style 1
        break
        end
    end
end 
jump @NERVOMETR</pre>
  <p><br />Заходим в игру и смотрим результат. Наш скрипт прекрасно работает.</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/8d/29/8d29ca76-eb70-45a0-a411-ecef244ddbb7.png" width="1366" />
  </figure>
  <figure class="m_column">
    <img src="https://teletype.in/files/d0/59/d0591d97-70a1-4581-bd35-2e03a4bcf25d.png" width="1366" />
  </figure>
  <figure class="m_column">
    <img src="https://teletype.in/files/4c/59/4c593e82-261a-46aa-bb97-686a476d96e2.png" width="1366" />
  </figure>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@gtasa_stuff/drunkcam</guid><link>https://teletype.in/@gtasa_stuff/drunkcam?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gtasa_stuff</link><comments>https://teletype.in/@gtasa_stuff/drunkcam?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gtasa_stuff#comments</comments><dc:creator>gtasa_stuff</dc:creator><title>CLEO &amp; DYOM: Эффект пьяной камеры во время цели</title><pubDate>Sat, 29 Aug 2020 13:54:24 GMT</pubDate><category>CLEO_&amp;amp;_DYOM</category><description><![CDATA[<img src="https://teletype.in/files/c8/8c/c88cd436-4157-4140-b345-74cb14140d91.jpeg"></img>Приветствую! Сегодня поговорим о взаимодействии CLEO скриптов и DYOM. ]]></description><content:encoded><![CDATA[
  <figure class="m_original">
    <img src="https://teletype.in/files/c8/8c/c88cd436-4157-4140-b345-74cb14140d91.jpeg" width="4066" />
  </figure>
  <p>Приветствую! Сегодня поговорим о взаимодействии CLEO скриптов и <a href="https://dyom.fandom.com/ru/wiki/DYOM#DYOM" target="_blank">DYOM</a>. </p>
  <p>Если вы хоть раз делали миссии в DYOM, то вы наверняка знаете, что функционал в нем ограничен. Например, в миссиях нельзя добавить актерам анимацию разговора по телефону, добавить стрельбу из машины от первого лица, добавить диалог во время поездки к чекпоинту и многое многое другое.</p>
  <p>В этом случае нам поможет знание CLEO скриптинга, ведь именно благодаря скриптам мы можем добавить в свою миссию те функции, которых так не хватает в DYOM.</p>
  <p>Прежде чем мы приступим к написанию и разбору скрипта, вспомним о <a href="https://teletype.in/@gtasa_stuff/cleo1" target="_blank">глобальных переменных</a>. Глобальная переменная - это контейнер, в котором хранятся какие-либо данные. Считывать и изменять их мы можно любым CLEO скриптом. Так вот, взаимодействие DYOM и CLEO возможно именно благодаря глобальным переменным. </p>
  <p>Пример: <br />Нам нужно чтобы во время миссии игрок умер на цели №30. Каким образом наш скрипт узнает, когда именно текущей целью станет цель №30, чтобы именно в этот момент убить игрока? Можно, конечно, просто проверить находится ли игрок в определенной точке, но мы пойдем более надежным и простым путем.<br />Вот тут нам и понадобятся глобальные переменные из кода DYOM (посмотреть их можно <a href="https://teletype.in/@gtasa_stuff/dyomvars" target="_blank">тут</a>).</p>
  <p><strong>$9903</strong> - данная переменная хранит номер текущей цели на миссии. И если мы хотим узнать, является ли цель №30 текущей, то нам нужно создать проверку <em><code>$9903 == 29</code>.</em> Почему 29, а не 30? Потому что цели в DYOM отсчитываются не с первой, а с нулевой. Поэтому при проверке цели надо указывать число на 1 единицу меньше.</p>
  <p>Выглядит это все следующим образом:</p>
  <pre>if
$9903 == 29
then
...наш код...
end</pre>
  <p></p>
  <p>И так, теперь давайте напишем скрипт, который будет добавлять в нашу миссию эффект пьяной камеры как в GTA 4 во время цели №4.</p>
  <p>Какие переменные нам для этого понадобятся:<br /><strong>$10914</strong> - номер слота текущей миссии (от 1 до 8)<br /><strong>$9903</strong> - номер текущей цели на миссии</p>
  <p></p>
  <p>Как всегда создаем скрипт, добавляем метку и задержку 0 мс</p>
  <pre>{$CLEO}
0000:

:DRUNK
wait 0</pre>
  <p></p>
  <p>Далее нам необходимо будет добавить 3 условия:<br />1) миссия запущена (переменная $ONMISSION)<br />2) слот миссии равен 1 (переменная $10914<strong>)</strong><br />3) цель миссии равна 3 (переменная $9903<strong>)</strong></p>
  <pre>if and
$ONMISSION == 1
$10914 == 1
$9903 == 3</pre>
  <p></p>
  <p>Теперь создаем цикл, который будет выполняться пока текущая цель будет равна 3. Далее добавляем wait 0, в циклах while это обязательно. </p>
  <p>После этого добавим опкод <em><code>052C: set_player $PLAYER_CHAR drunk_visuals 100</code></em>, который создает эффект пьяной камеры с интенсивностью тряски 100 (число можно установить свое). Закрываем цикл опкодом <code>end</code>. <br />После завершения цикла (текущая цель не равна 3), убираем эффект пьяной камеры. Добавляем еще один <code>end</code> для закрытия условия, которое мы открыли в предыдущем куске кода.</p>
  <pre>then
    while $9903 == 3
    wait 0
    052C: set_player $PLAYER_CHAR drunk_visuals 100
    end
    052C: set_player $PLAYER_CHAR drunk_visuals 0   
end</pre>
  <p>В конце добавляем <code>jump @DRUNK</code> для того, чтобы скрипт повторялся.</p>
  <p>И так, для чего мы добавили цикл? Можно же было просто написать так:</p>
  <pre>:DRUNK
wait 0
if and
$ONMISSION == 1
$10914 == 1
$9903 == 3
then
052C: set_player $PLAYER_CHAR drunk_visuals 100
else 
052C: set_player $PLAYER_CHAR drunk_visuals 0  
end
jump @DRUNK</pre>
  <p>Но так писать скрипт неправильно. Почему? Потому что если хотя бы одно условие не будет верным, то начнет выполняться опкод <code>052C: set_player $PLAYER_CHAR drunk_visuals 0</code> . То есть он будет постоянно работать, если цель не равна 3 (на цели 1, 2, 4, 5 и так далее). А зачем нам убирать пьяную камеру, когда она еще даже не включилась? Так же этот опкод будет постоянно работать если миссия выключена или если слот миссии не равен 1. Нам такое не нужно. Это лишняя работа для скрипта, от которой можно легко избавиться. </p>
  <p>Если мы добавим цикл, все сразу станет работать так, так нужно. Ведь в цикл мы попадаем лишь один раз: если миссия запущена, слот миссии равен 1 и цель равна 3. Соответственно и выходим мы из него только 1 раз. Значит опкод отключения пьяной камеры выполнится тоже лишь однажды за миссию.</p>
  <p></p>
  <p>В итоге у нас получился вот такой скрипт:</p>
  <pre>{$CLEO}
0000:

:DRUNK
wait 0
if and
$ONMISSION == 1
$10914 == 1
$9903 == 3
then
    while $9903 == 3
    wait 0
    052C: set_player $PLAYER_CHAR drunk_visuals 100
    end
    052C: set_player $PLAYER_CHAR drunk_visuals 0   
end
jump @DRUNK</pre>
  <p></p>
  <p>Попробуйте создать миссию из 5 целей, сохраните её на 1 слот и проверьте работает ли получившийся скрипт. Пьяная камера должна включиться на цели 4 и отключиться во время цели 5.</p>
  <p>Надеюсь, урок был для вас полезен. А на этом все!</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@gtasa_stuff/scripting-progs</guid><link>https://teletype.in/@gtasa_stuff/scripting-progs?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gtasa_stuff</link><comments>https://teletype.in/@gtasa_stuff/scripting-progs?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gtasa_stuff#comments</comments><dc:creator>gtasa_stuff</dc:creator><title>CLEO INFO: Программы для скриптинга</title><pubDate>Sat, 29 Aug 2020 08:35:39 GMT</pubDate><category>CLEO_INFO</category><description><![CDATA[<img src="https://teletype.in/files/63/1e/631e8c3a-2aed-4a79-a29d-8fca10428af5.jpeg"></img>Среда разработки новых миссий и скриптов для серии игр GTA 3D.]]></description><content:encoded><![CDATA[
  <figure class="m_original">
    <img src="https://teletype.in/files/63/1e/631e8c3a-2aed-4a79-a29d-8fca10428af5.jpeg" width="4066" />
  </figure>
  <h3><a href="https://sannybuilder.com/ru/index.html" target="_blank">Sanny Builder</a></h3>
  <p>Среда разработки новых миссий и скриптов для серии игр GTA 3D.</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/e8/f2/e8f2758e-1235-48c7-ae00-360dba1d0270.png" width="1316" />
  </figure>
  <hr />
  <h3><a href="https://libertycity.ru/files/gta-san-andreas/5764-rus2gxtcoder.html" target="_blank">Rus2gxtCoder</a></h3>
  <p>Программа для написания текстов к скриптам.</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/47/1a/471ac3c3-a5be-4bed-8c30-df34de7326e5.png" width="710" />
  </figure>
  <hr />
  <h3><a href="https://www.blast.hk/threads/10145/" target="_blank">Антизависон</a></h3>
  <p>Данная программа закрывает игру нажатием клавиши F5. Очень полезная вещь, спасает даже если игра намертво зависла.</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/c9/5d/c95d638f-e086-4b2e-9fd2-e9689b34b791.png" width="303" />
  </figure>
  <hr />
  <h3><a href="http://gtamodding.ru/wiki/Anim_Manager" target="_blank">GTA Animation Manager</a></h3>
  <p>Программа для просмотра всех анимаций в GTA.</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/90/ef/90ef4c57-3dc5-473f-a64b-1686a86286f2.gif" width="960" />
  </figure>
  <hr />
  <h3><a href="https://libertycity.ru/files/gta-san-andreas/54547-power-script-helper-v-1.0-not-full.html" target="_blank">Power Script Helper v 1.0</a></h3>
  <p>Программа содержит в себе множество уроков по скриптингу, а так же другую полезную информацию для разработки: коды клавиш, id оружия, id цветов транспорта, иконки, интерьеры и многое другое.</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/7a/95/7a958268-8ad5-4d66-a457-2e081c02074a.png" width="899" />
  </figure>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@gtasa_stuff/keynumbers</guid><link>https://teletype.in/@gtasa_stuff/keynumbers?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gtasa_stuff</link><comments>https://teletype.in/@gtasa_stuff/keynumbers?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gtasa_stuff#comments</comments><dc:creator>gtasa_stuff</dc:creator><title>CLEO INFO: Номера клавиш</title><pubDate>Fri, 28 Aug 2020 11:25:11 GMT</pubDate><category>CLEO_INFO</category><description><![CDATA[<img src="https://teletype.in/files/63/1e/631e8c3a-2aed-4a79-a29d-8fca10428af5.jpeg"></img>]]></description><content:encoded><![CDATA[
  <figure class="m_original">
    <img src="https://teletype.in/files/63/1e/631e8c3a-2aed-4a79-a29d-8fca10428af5.jpeg" width="4066" />
  </figure>
  <pre>ЛКМ - 1
ПКМ - 2
Колесико(не скролл) - 4
XButton1 - 5
XButton2 - 6</pre>
  <pre>A - 65
B - 66
C - 67
D - 68
E - 69
F - 70
G - 71
H - 72
I - 73
J - 74
K - 75
L - 76
M - 77
N - 78
O - 79
P - 80
Q - 81
R - 82
S - 83
T - 84
U - 85
V - 86
W - 87
X - 88
Y - 89
Z - 90</pre>
  <pre>1 - 49
2 - 50
3 - 51
4 - 52
5 - 53
6 - 54
7 - 55
8 - 56
9 - 57
0 - 48</pre>
  <pre>NUM Key
1 - 97
2 - 98
3 - 99
4 - 100
5 - 101
6 - 102
7 - 103
8 - 104
9 - 105
0 - 96
* - 106
+ - 107
- (Минус) - 109
/ - 111
. - 110</pre>
  <pre>F1 - 112
F2 - 113
F3 - 114
F4 - 115
F5 - 116
F6 - 117
F7 - 146
F8 - 119
F9 - 120
F10 - 121
F11 - 122
F12 - 123</pre>
  <pre>Backspace - 8
Tab - 9
Enter - 13
Shift - 16
Ctrl - 17
Pause - 19
CapsLock - 20
Esc - 27
Space - 32
Page Up - 33
Page Down - 34
End - 35
Home - 36
Insert - 45
Delete - 46
Scroll Lock - 145
Num Lock - 144</pre>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@gtasa_stuff/dyomvars</guid><link>https://teletype.in/@gtasa_stuff/dyomvars?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gtasa_stuff</link><comments>https://teletype.in/@gtasa_stuff/dyomvars?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gtasa_stuff#comments</comments><dc:creator>gtasa_stuff</dc:creator><title>CLEO &amp; DYOM: Глобальные переменные в DYOM</title><pubDate>Fri, 28 Aug 2020 11:18:25 GMT</pubDate><category>CLEO_&amp;amp;_DYOM</category><description><![CDATA[<img src="https://teletype.in/files/c8/8c/c88cd436-4157-4140-b345-74cb14140d91.jpeg"></img>$8271 - запущен ли DYOM (1 - да, 0 - нет)]]></description><content:encoded><![CDATA[
  <figure class="m_original">
    <img src="https://teletype.in/files/c8/8c/c88cd436-4157-4140-b345-74cb14140d91.jpeg" width="4066" />
  </figure>
  <p><strong>$8271</strong> - запущен ли DYOM (1 - да, 0 - нет)</p>
  <p><strong>$8274</strong> - включен ли режим сторилайна (1 - да, 0 - нет)</p>
  <p><strong>$9903</strong> - номер текущей цели на миссии. Значение должно быть меньше на 1. То есть, вместо 2 указывайте 1, вместо 3 - 2 и так далее</p>
  <p><strong>$10294($9903,101i)</strong> - тип текущей цели на миссии (типы целей смотрите ниже)</p>
  <p><strong>$10916</strong> - количество целей в миссии</p>
  <p><strong>$10914</strong> - номер слота загруженной миссии</p>
  <p><strong>$9878</strong> - название загруженной миссии</p>
  <p><strong>$9879</strong> - автор миссии</p>
  <p><strong>v$9905</strong> - аудиокод миссии (в формате SD/ABCDE/xx.mp3)</p>
  <p><strong>$9889</strong> - тексты всех целей</p>
  <p><strong>$11447 $11448 $11449</strong> - координаты цели 0 (игрок)</p>
  <p></p>
  <p>Типы целей:</p>
  <ul>
    <li>2 - чекпоинт</li>
    <li>5 - актер</li>
    <li>6 - катсцена</li>
    <li>7 - телепорт</li>
    <li>10 - таймаут</li>
    <li>11 - погода</li>
    <li>12 - время</li>
    <li>13 - появление пешеходов/машин</li>
    <li>14 - уровень розыска</li>
    <li>17 - убрать оружие у игрока</li>
    <li>18 - разговор по телефону</li>
    <li>20 - дать денег игроку</li>
    <li>22 - анимация игрока</li>
  </ul>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@gtasa_stuff/cleo3</guid><link>https://teletype.in/@gtasa_stuff/cleo3?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gtasa_stuff</link><comments>https://teletype.in/@gtasa_stuff/cleo3?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gtasa_stuff#comments</comments><dc:creator>gtasa_stuff</dc:creator><title>CLEO: Урок 3 - Циклы и отрицательные опкоды</title><pubDate>Fri, 28 Aug 2020 08:29:16 GMT</pubDate><category>CLEO</category><description><![CDATA[<img src="https://teletype.in/files/58/d6/58d62a8f-bf7a-4a7a-b8c4-b622c22c8777.jpeg"></img>Что такое цикл в скриптинге? Цикл - это часть кода которая повторяется указанное количество раз, либо повторяется пока верно указанное условие. Циклы являются очень важной частью в скриптинге, поэтому вам стоит о них знать.]]></description><content:encoded><![CDATA[
  <figure class="m_original">
    <img src="https://teletype.in/files/58/d6/58d62a8f-bf7a-4a7a-b8c4-b622c22c8777.jpeg" width="4066" />
  </figure>
  <p>Что такое цикл в скриптинге? Цикл - это часть кода которая повторяется указанное количество раз, либо повторяется пока верно указанное условие. Циклы являются очень важной частью в скриптинге, поэтому вам стоит о них знать.</p>
  <p></p>
  <h3><strong>Виды циклов</strong></h3>
  <p><strong>Цикл while</strong></p>
  <pre>while 0256:   player $PLAYER_CHAR defined
wait 0
0826: enable_hud 0
end</pre>
  <p>Данный цикл будет повторять код до тех пор, пока игрок существует (<em>0256:   player $PLAYER_CHAR defined</em>). В данном случае он убирает HUD. Когда игрок перестанет существовать, то скрипт продолжит движение вниз по коду.</p>
  <p>В цикле while обязательно нужно ставить задержку wait 0 так как он будет повторяться неопределенное количество раз.</p>
  <p>Но что делать если мы хотим, чтобы HUD убирался когда игрок НЕ существует? Для этого нужно использовать <u>отрицательные опкоды.</u> Чтобы написать отрицательный опкод, нужно взять обычный опкод, заменить 0 в начале на 8 и добавить <u>not</u> перед его описанием </p>
  <p>Из такого опкода:</p>
  <pre>0256:   player $PLAYER_CHAR defined</pre>
  <p>У нас получится такой:</p>
  <pre>8256:   not player $PLAYER_CHAR defined</pre>
  <p></p>
  <p><strong>Цикл while true</strong></p>
  <pre>while true
wait 0
0826: enable_hud 0
end</pre>
  <p>Данный цикл будет повторяться бесконечно, пока мы вручную его не остановим с помощью опкода break. О нем поговорим чуть позже.</p>
  <p></p>
  <p><strong>Цикл for</strong></p>
  <pre>for 0@ = 0 to 100
0826: enable_hud 0
end</pre>
  <p>Этот цикл повторяет код указанное количество раз, в нашем случае 101 раз (от 0 до 100). Переменная 0@ (можно поставить любую другую) в данном цикле нужна, чтобы хранить количество повторений, без нее ничего не будет работать и при компиляции скрипта вы получите ошибку.</p>
  <p>Как вы могли заметить, тут я не написал wait 0. Почему? Потому что данный цикл будет повторяться известное нам количество раз - 101, и отсутствие задержки не приведет к зависанию игры. Конечно, без wait 0 код будет выполняться очень быстро и hud пропадет всего на какие-то доли секунды, поэтому в данном случае лучше добавить задержку.</p>
  <p></p>
  <p><strong>Прерывание цикла</strong></p>
  <p>Прервать цикл можно опкодом break</p>
  <pre>while 0256:   player $PLAYER_CHAR defined
wait 0
0826: enable_hud 0
   if
   08FE:   text_box_displayed
   then
   break
   end
end</pre>
  <p>Как вы заметили, внутри цикла я добавил условие появился ли на экране текст бокс. Теперь цикл прервется в двух случаях: 1) если игрок не существует 2) если показан текст-бокс на экране. Опкод break можно использовать как в циклах while, так и в циклах for.</p>
  <p>P.S. Отступы как у меня в коде делать не обязательно, Sanny Builder не чувствителен к ним. Отступы делаются для удобства и улучшения читабельности кода.</p>
  <p></p>
  <p>И так, теперь немного практики. Давайте напишем небольшой скрипт, который будет отнимать жизни у игрока в том случае, если он не удерживает клавишу W. </p>
  <pre>{$CLEO .cs}
0000:

:HEALTH
wait 0
while 8AB0:   not key_pressed 87
wait 0
    if 
    0256:   player $PLAYER_CHAR defined
    then
        wait 300
        0226: 0@ = actor $PLAYER_ACTOR health
        0@ -= 1
        0223: set_actor $PLAYER_ACTOR health_to 0@
    end
end
jump @HEALTH</pre>
  <p>Разберем код:</p>
  <p>1) По классике создаем метку и пишем wait 0 <br />2) Создаем цикл while с условием &quot;если не нажата клавиша 87&quot;<br />Каждая клавиша на клавиатуре имеет свой номер, в данном случае 87 - это клавиша W. Номера всех клавиш можно посмотреть <a href="https://www.blast.hk/threads/8760/" target="_blank">тут</a>.</p>
  <p>3) Пишем wait 0 в начале цикла, чтобы игра не зависла<br />4) Создаем внутри цикла условие &quot;существует ли игрок&quot;. Это нужно для того, чтобы здоровье не отнималось когда игрок умер или арестован.<br />5) Если игрок существует, добавляем задержку 300 миллисекунд, иначе здоровье будет отниматься слишком быстро<br />6) Записываем здоровье игрока в переменную 0@<br />7) Отнимаем от переменной 0@ 1 единицу<br />8) Устанавливаем игроку количество здоровья в виде переменной 0@<br />9) Возвращаемся на метку HEALTH, если цикл прерван</p>
  <p>Таким образом мы создали скрипт, который будет отнимать 1 единицу здоровья игрока каждые 300 миллисекунд, если не нажата клавиша W. <br />Получается, с помощью скрипта мы заставим игрока постоянно двигаться. Если он остановиться, то начнет умирать. Чем-то напоминает фильм &quot;Адреналин&quot;, да?</p>
  <p>Конечно, в скрипте есть недочет. Если вы будете использовать его для своих миссий, то здоровье игрока будет отниматься во время катсцен и во время создания самой миссии (если вы создаете миссию в DYOM). Вам нужно уметь просчитывать такие моменты, это очень важно.</p>
  <p>Чтобы это предотвратить, нужно добавить еще 2 условия:</p>
  <pre>{$CLEO .cs}
0000:

:HEALTH
wait 0
while 8AB0:   not key_pressed 87
wait 0
    if and
    $ONMISSION == 1 //если запущена миссия
    09E7:   player $PLAYER_CHAR not_frozen //если игрок не заморожен игрой 
    0256:   player $PLAYER_CHAR defined 
    then
        wait 300
        0226: 0@ = actor $PLAYER_ACTOR health
        0@ -= 1
        0223: set_actor $PLAYER_ACTOR health_to 0@
    end
end
jump @HEALTH</pre>
  <p>Что мы добавили в код:<br />1)<em>$ONMISSION == 1</em>   проверка запущена ли миссия<br />2) <em>09E7:   player $PLAYER_CHAR not_frozen</em>   проверка не обездвижен ли игрок.<br />Как мы знаем, во время катсцен игрок обездвиживается, поэтому здоровье не будет отниматься в этом случае.</p>
  <p>Теперь скрипт будет работать как надо, и здоровье будет отниматься только тогда, когда мы можем управлять игроком во время миcсии.<br /><br />Вот и всё, теперь вы научились использовать циклы в CLEO скриптах, поздравляю!</p>
  <p></p>
  <p data-align="center"><a href="https://teletype.in/@gtasa_stuff/cleotext" target="_blank">К следующему уроку -&gt;</a></p>
  <hr />
  <p><strong>Полезные ссылки</strong></p>
  <p><a href="https://www.blast.hk/threads/8760/" target="_blank">Номера клавиш в CLEO<br /></a><a href="http://ru-script.3dn.ru/publ/gta_sa/obucheniye_skriptinga/cikly_chast_1_while/34-1-0-55" target="_blank">Урок &quot;Циклы - Часть 1&quot; от wmysterio<br /></a><a href="http://ru-script.3dn.ru/publ/gta_sa/obucheniye_skriptinga/cikly_chast_2_for/34-1-0-57" target="_blank">Урок &quot;Циклы - Часть 2&quot; от wmysterio</a></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@gtasa_stuff/cleo2</guid><link>https://teletype.in/@gtasa_stuff/cleo2?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gtasa_stuff</link><comments>https://teletype.in/@gtasa_stuff/cleo2?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gtasa_stuff#comments</comments><dc:creator>gtasa_stuff</dc:creator><title>CLEO: Урок 2 - Пишем свой скрипт</title><pubDate>Thu, 27 Aug 2020 13:30:12 GMT</pubDate><category>CLEO</category><description><![CDATA[<img src="https://teletype.in/files/58/d6/58d62a8f-bf7a-4a7a-b8c4-b622c22c8777.jpeg"></img>Сегодня мы попробуем написать первый полноценный CLEO-скрипт, используя знания, полученные на прошлом уроке. Наш скрипт должен будет завершать запущенную миссию, если здоровье игрока станет меньше 50. ]]></description><content:encoded><![CDATA[
  <figure class="m_original">
    <img src="https://teletype.in/files/58/d6/58d62a8f-bf7a-4a7a-b8c4-b622c22c8777.jpeg" width="4066" />
  </figure>
  <p>Сегодня мы попробуем написать первый полноценный CLEO-скрипт, используя знания, полученные на прошлом уроке. Наш скрипт должен будет завершать запущенную миссию, если здоровье игрока станет меньше 50. </p>
  <p>И так, пишем две строки с которых начинается любой CLEO-скрипт</p>
  <pre>{$CLEO}
0000:</pre>
  <p>Наш скрипт будет повторяться бесконечно, поэтому <u>0A93: end custom thread</u> в конце писать не нужно.</p>
  <p>Теперь добавляем метку START и добавляем задержку wait 0, чтобы игра не зависла</p>
  <pre>{$CLEO}
0000:

:START
wait 0</pre>
  <p>Далее нужно написать условие, при которых скрипт будет завершать миссию. Напишем условие: если миссия запущена и игрок существует, то идем дальше по скрипту, если нет - возвращаемся на метку START.</p>
  <pre>if and
$ONMISSION == 1 
0256:   player $PLAYER_CHAR defined
jf @START</pre>
  <p></p>
  <p>Отлично, условие написано, теперь нужно добавить действия, которые будут выполнены, если условие верно.</p>
  <pre>0226: 1@ = actor $PLAYER_ACTOR health
if
1@ &lt; 50
jf @START
045C: abort_mission
wait 5000</pre>
  <p>И так, что мы делаем в данном куске кода:<br />1) Записываем текущее здоровье игрока в переменную 1@<br />К сожалению в CLEO нельзя сразу проверить здоровье актера одним опкодом, например так: <br /><em>actor $PLAYER_ACTOR health &lt; 50</em><br />Поэтому придется сначала записать здоровье в переменную, а уже потом проверять переменная меньше 50 или нет.<br />2) Добавляем проверку на то, что переменная 1@ (здоровье) меньше 50<br />3) Если условие не верно и переменная больше 50, то возвращаемся на метку START<br />4) Если верно - завершаем миссию<br />5) Добавляем задержку 5 секунд, чтобы скрипт подождал пока миссия завершится</p>
  <p></p>
  <p>Теперь нам нужно сделать так, чтобы скрипт постоянно повторялся. Чтобы миссия завершалась каждый раз, когда здоровье игрока будет меньше 50. <br /><br />Для этого в конце добавим опкод возвращения на метку START.</p>
  <pre>jump @START</pre>
  <p>Если мы добавим <em>0A93: end_custom_thread</em> вместо<em> jump @START</em>, то скрипт отключится сразу после того, как будет завершена миссия. Заново он начнет работать только после перезагрузки игры.<br /></p>
  <p>Вот что у нас получилось в итоге:</p>
  <pre>{$CLEO}
0000:

:START
wait 0
if and
$ONMISSION == 1 
0256:   player $PLAYER_CHAR defined
jf @START
0226: 1@ = actor $PLAYER_ACTOR health
if
1@ &lt;= 50
jf @START
045C: abort_mission
jump @START
</pre>
  <p>Теперь нажимаем вкладку Запуск/Компилировать или жмем клавишу F6. Далее выбираем путь до папки CLEO в GTA SA. <br />Вот и всё, скрипт создан и установлен в игру. Найти его можно в папке CLEO. </p>
  <p>Последний шаг. Запустите игру и проверьте работает ли скрипт. Если он не работает - внимательно сверьте код в статье и тот, что вы написали, наверняка найдете ошибку.<br />Если скрипт работает - поздравляю! Вы уже на шаг ближе к пониманию устройства CLEO скриптов (Вы же не просто скопировали и вставили весь код, да? МММмм?)</p>
  <p>Надеюсь, вам все было понятно. До следующего урока!</p>
  <p></p>
  <p data-align="center"><a href="https://teletype.in/@gtasa_stuff/cleo3" target="_blank">К следующему уроку -&gt;</a></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@gtasa_stuff/climbactor</guid><link>https://teletype.in/@gtasa_stuff/climbactor?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gtasa_stuff</link><comments>https://teletype.in/@gtasa_stuff/climbactor?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gtasa_stuff#comments</comments><dc:creator>gtasa_stuff</dc:creator><title>Актер, перелезающий через забор</title><pubDate>Wed, 26 Aug 2020 17:09:33 GMT</pubDate><media:content medium="image" url="https://teletype.in/files/d3/ea/d3ea4a49-04f6-4986-af25-cf49531b5037.png"></media:content><category>DYOM</category><description><![CDATA[<img src="https://teletype.in/files/f1/42/f142698e-6df4-4195-85db-2065d4eda505.png"></img>Небольшой совет о том, как сделать так, чтобы актер перелезал через забор в катсцене.]]></description><content:encoded><![CDATA[
  <figure class="m_column">
    <img src="https://teletype.in/files/f1/42/f142698e-6df4-4195-85db-2065d4eda505.png" width="1280" />
  </figure>
  <p>Небольшой совет о том, как сделать так, чтобы актер перелезал через забор в катсцене.</p>
  <p>На самом деле, сделать это очень просто. Для этого нужно поместить с одной стороны препятствия игрока, а с другой поставить актера с дружественным отношением и поведением &quot;следует за игроком&quot;. Таким образом, во время катсцены актер побежит к игроку и перелезет через забор. Таким же образом можно заставить актера плыть по воде или вскарабкаться на крышу (правда с этим могут возникнуть проблемы).</p>

]]></content:encoded></item></channel></rss>