Вопросы по созданию КЛЕО-скриптов 2
|
|
DK22Pac | Дата: Четверг, 05.07.2012, 16:24 | Сообщение # 136 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| Ты думаешь что сможешь перевести int в string?
|
|
| |
ILYALION | Дата: Четверг, 05.07.2012, 17:10 | Сообщение # 137 |
Группа: Проверенные
Сообщений: 325
Статус: Offline
| DK22Pac, я так делал. Работало. Добавлено (05.07.2012, 17:10) --------------------------------------------- izerli, 29@v не надо ставить в кавычки, т.е. опкод 0AF2 должен выглядеть так: Code 0AF2: 29@ = get_float_from_ini_file "cleo\carset.ini" section 29@v key "speed"
|
|
| |
izerli | Дата: Четверг, 05.07.2012, 18:00 | Сообщение # 138 |
Группа: Проверенные
Сообщений: 90
Статус: Offline
| ILYALION, правильно, у тебя и подсмотрел такое. к вылетанию приводит даже тупо вот такая строка Code 0AF2: 29@ = get_float_from_ini_file "CLEO\carset.ini" section "0" key "speed"
|
|
| |
ILYALION | Дата: Пятница, 06.07.2012, 05:58 | Сообщение # 139 |
Группа: Проверенные
Сообщений: 325
Статус: Offline
| izerli, ini файл оформлен правильно? Код моего скрипта:Code {$CLEO} wait 0 while true wait 0 if player.Defined($PLAYER_CHAR) then if 0AB0: key_pressed 85//U then 0AF2: 29@ = get_float_from_ini_file "CLEO\carset.ini" section "0" key "speed" 29@ -= 5.5 0AF3: write_float 29@ to_ini_file "cleo\carset.ini" section "1" key "var" end end end Содержимое ini файла до запуска:Code [0] speed = 20.0 [1] var = 0.0 После запуска скрипта значение var стало равным 14.5. Всё работает.
|
|
| |
izerli | Дата: Пятница, 06.07.2012, 09:35 | Сообщение # 140 |
Группа: Проверенные
Сообщений: 90
Статус: Offline
| ILYALION, да, оформлен правильно. к слову, твой мод у меня тоже не заработал. стоит последняя клео, плагин для ini файлов есть
|
|
| |
ILYALION | Дата: Пятница, 06.07.2012, 09:57 | Сообщение # 141 |
Группа: Проверенные
Сообщений: 325
Статус: Offline
| izerli, попробуй переустановить CLEO. Версия gta_sa.exe 1.0 us?
|
|
| |
izerli | Дата: Пятница, 06.07.2012, 11:00 | Сообщение # 142 |
Группа: Проверенные
Сообщений: 90
Статус: Offline
| ILYALION, ага. переставлять клео тоже еще вчера пробовал, не помогло
|
|
| |
Den_spb | Дата: Суббота, 07.07.2012, 18:16 | Сообщение # 143 |
Создатель сайта
Группа: Администраторы
Сообщений: 1600
Статус: Offline
| Кто-то вроде говорил, что на последней версии КЛЕО (4.1.1.30) опкоды чтения строк из файлов работают не у всех пользователей. Можно попробовать более ранние версии КЛЕО.
|
|
| |
Vital | Дата: Понедельник, 09.07.2012, 18:39 | Сообщение # 144 |
Группа: Проверенные
Сообщений: 206
Статус: Offline
| Вот такая проблема: при попытке вывести текст игра вылетает...пробовал выводить в виде панели и в виде бесконечного текст бокса, но вылет остаётся... Есть ли ограничения по размеру текста? У меня текст как раз большой, могу привести одну из строк, если понадобится. Вот часть кода, где происходит вылет: Code :Spravka wait 0 if player.Defined($PLAYER_CHAR) jf @Spravka if and not actor.Dead($PLAYER_ACTOR) 0AB0: key_pressed 0x49 0AB0: key_pressed 0x31 then 0512: show_permanent_text_box 'PAG1' gosub @Show end if and not actor.Dead($PLAYER_ACTOR) 0AB0: key_pressed 0x49 0AB0: key_pressed 0x32 then 0512: show_permanent_text_box 'PAG2' gosub @Show end if and not actor.Dead($PLAYER_ACTOR) 0AB0: key_pressed 0x49 0AB0: key_pressed 0x33 then 0512: show_permanent_text_box 'PAG3' gosub @Show end if and not actor.Dead($PLAYER_ACTOR) 0AB0: key_pressed 0x49 0AB0: key_pressed 0x34 then 0512: show_permanent_text_box 'PAG4' gosub @Show end if and not actor.Dead($PLAYER_ACTOR) 0AB0: key_pressed 0x49 0AB0: key_pressed 0x35 then 0512: show_permanent_text_box 'PAG5' gosub @Show end jump @Spravka
В gosub @Show идёт удаление текста при нажатии клавиши. Если даже не использовать gosub, игра всё равно вылетает... --- Я попробовал с другим текстом, более коротким, теперь всё пошло отлично, но с текстом нужной длины всё же беда... Длина строки (самой короткой из нужных мне) такова: Code ~y~Opy›њe:~s~~n~'GRENADE' - ™pa®a¦a~n~'MOLOTOV' - kok¦eќћ© –oћo¦oўa~n~'SMOKE' - cћeџo¦o¤њўЁќ ™aџ~n~'PISTOL' - Јњc¦oћe¦~n~'SILENCED' - Јњc¦oћe¦ c ™ћyҐњ¦eћeЇ~n~'DEAGLE' - Њyc¦Ё®®Ёќ Opёћ~n~'CHROME' - љpo—oўњk~n~'SAWNOFF' - o—peџ py›©¬ ~n~'SPAS' - SPAS 12~n~'UZI' - UZI~n~'MPFIVE' - MP5~n~'TEC' - Tec 9~n~'AKM' - AK-47~n~'COLTM' - M4~n~'COUNTRY' - ўњ®¦oўka~n~'SNIPER' - c®aќЈepcka¬ ўњ®¦oўka~n~'RPG' - PЊ‚~n~'HEAT' - ™pa®a¦oЇё¦ c ¦eЈћoўЁЇ ®aўeљe®њeЇ~n~'FLAME' - o™®eЇё¦~n~'MINIGUN' - ЈyћeЇё¦ Подскажите, пожалуйста, можно ли выводить тексты такой длины? Просто не хотелось бы разбивать текст на множество кусочков, по которым неудобно будет что-либо понять.
SCRIPTER
Сообщение отредактировал Vital - Понедельник, 09.07.2012, 19:00 |
|
| |
Артём | Дата: Понедельник, 09.07.2012, 19:38 | Сообщение # 145 |
Группа: Пользователи
Сообщений: 90
Статус: Offline
| Vital, а может вывести более короткие тексты несколько раз (поделить на части текст) или в твоём скрипте нужно именно так? Добавлено (09.07.2012, 19:38) --------------------------------------------- Den_spb, помоги, пожалуйста с созданием путей поездов. Так как создаю метро для следующей версии своей карты, столкнулся с тем, что одного tracks.dat мне не хватает Тем более tracks.dat для метро как-то не подходит: поезда по одним путям в обе стороны, не знаешь через сколько появится следующий. Можно ли каким-нибудь CLEO-скриптом создать один поезд, направлять его по точкам (направлять по точкам-то я читал в справке sanny builder знаю). Но как сделать остановки я так и не понял. Если такой скрипт несложный и возможен можешь если не сложно написать фрагмент кода? А то я в скриптах пока немного понимаю, но учусь. Заранее спасибо. P.S. Думал попробовать использовать твой алгоритм поездов, но там я как-то я не разобрался.
Делаю новый мод Greatland
|
|
| |
Vital | Дата: Понедельник, 09.07.2012, 19:40 | Сообщение # 146 |
Группа: Проверенные
Сообщений: 206
Статус: Offline
| Артём, текст самого описания и так уже поделён на несколько частей, если нарушить уже созданные разделы текста, то нарушится и понимание. 0512 принёс желаемые результаты и вывел тексты после того, как я удалил из них форматирование (переносы строк, цвета), но ширина текст бокса слишком мала, чтобы нормально всё вместить... 033Е не помогает, игра вылетает при этом. Попробовал изменить ширину текст бокса с помощью 0989: set_text_boxes_width 400 Теперь текст помещается на экран, НО не весь...кусок текста бесследно исчезает...обрубок мне, как и тем людям, которым скрипт пригодится, не нужен...Теперь пытаюсь сделать что-нибудь с помощью 0397
SCRIPTER
|
|
| |
DK22Pac | Дата: Понедельник, 09.07.2012, 21:58 | Сообщение # 147 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| Выведи текст в виде текстуры.
|
|
| |
Vital | Дата: Среда, 11.07.2012, 17:14 | Сообщение # 148 |
Группа: Проверенные
Сообщений: 206
Статус: Offline
| DK22Pac, ох...спасибо огромное! Я вообще на одном тексте зациклился, забыл о такой возможности, как вывод текстур Добавлено (11.07.2012, 17:14) --------------------------------------------- Вылетает из-за неизвестной причины...раньше всё работало, проверял уже достаточное кол-во раз... Code wait 0 if and not actor.Dead($PLAYER_ACTOR) not actor.Driving($PLAYER_ACTOR) 0AB0: key_pressed 0x76 jf @Mis1 0652: $BUSY = integer_stat 340 if $BUSY == 0 jf @Mis1 0629: change_integer_stat 340 to 1 03E5: show_text_box 'PARMIS1' wait 250 jump to @Mis1_2
:Mis1_End wait 0 if or actor.Dead($PLAYER_ACTOR) 0741: actor $PLAYER_ACTOR busted 00E1: player 0 pressed_key 10 then 0629: change_integer_stat 340 to 0 059A: return_false return else 0485: return_true return end jump @Mis1_End
:Mis1_2 wait 0 if gosub @Mis1_End jf @Mis1 if 00E1: player 0 pressed_key 11 jf @Mis1_2 Вот этот кусок почему-то вызывает вылет... пробовал запускать в разных местах, смотрел, влияют ли другие скрипты, но всё тщетно...
SCRIPTER
Сообщение отредактировал Vital - Среда, 11.07.2012, 17:04 |
|
| |
laggth | Дата: Вторник, 17.07.2012, 11:53 | Сообщение # 149 |
Группа: Пользователи
Сообщений: 81
Статус: Offline
| Quote (Артём) Но как сделать остановки я так и не понял Пометить в блокноте тракс файла координаты точек начала платформ(-2641.62 -2603.5 39.0765 1 // Country st.golova).Сreate train 1@,задать ему ускорение и скорость , и если поезд подьехал к точке у начала платформы в радиусе 6-9 метров(иначе проедет остановку),то задаём ему ускорение 0.0 и скорость 0.0 .И ставим jump на проезд к следующей остановке по ходу движения ,там проверяем- если доехал до радиуса сферы то останавливаем.Проверяем где возможно не началась ли миссия , if $ONMISSION == 1 то нужно сделать jump на remove references to train 1@ (чтоб не вылетела по окончании миссии).При начале миссии скриптовые поезда должны уничтожаться.
Code
:LIN4A_1249 wait 0 if and 056E: car 1@ defined $ONMISSION == 0 jf@LIN4A_7125 //remove_references_to_train 1@ затем//jump to @start_train1 if and 056E: car 1@ defined 01AF: car 1@ sphere 0 in_sphere 1425.375 -965.0531 -80.3066 radius 6.0 6.0 6.0 //начало платформы станции(у головы состава) jf@LIN4A_1249 jump @LIN4A_1348
:LIN4A_1348 wait 0 if and 056E: car 1@ defined $ONMISSION == 0 jf @LIN4A_7125 06DC: set_train 1@ acc 0.0 06DD: set_train 1@ speed 0.0 wait 10000 jump @LIN4A_1536
:LIN4A_1536 wait 0 if and 056E: car 1@ defined $ONMISSION == 0 jf @LIN4A_7125 06DC: set_train 1@ acc 15.0 06DD: set_train 1@ speed 60.0 jump @LIN4A_1669
:LIN4A_1669 wait 0 if and 056E: car 1@ defined $ONMISSION == 0 jf @LIN4A_7125 if and 056E: car 1@ defined 01AF: car 1@ sphere 0 in_sphere 2298.621 -35.7901 -81.2052 radius 6.0 6.0 6.0 jf @LIN4A_1669 jump @LIN4A_1768
:LIN4A_1768 wait 0 if and 056E: car 1@ defined $ONMISSION == 0 jf @LIN4A_7125 06DC: set_train 1@ acc 0.0 06DD: set_train 1@ speed 0.0 wait 10000 jump @LIN4A_1956
:LIN4A_1956 wait 0 if and 056E: car 1@ defined $ONMISSION == 0 jf @LIN4A_7125 06DC: set_train 1@ acc 15.0 06DD: set_train 1@ speed 60.0 jump @LIN4A_2089
и тд Но таких поездов игра только 5-8 выдержит,а потом начнут мигать текстуры и вылетит.В СА они работают только с очищенным мэйном от zazmahall.de почему то.
Сообщение отредактировал laggth - Вторник, 17.07.2012, 12:15 |
|
| |
Den_spb | Дата: Понедельник, 23.07.2012, 02:27 | Сообщение # 150 |
Создатель сайта
Группа: Администраторы
Сообщений: 1600
Статус: Offline
| Vital, что в скм-логе?
Артём, проще отключить стандартный траффик по tracks.dat. Этот вопрос мне тоже интересен, как найду нужный адрес - сообщу.
laggth, два уточнения: 1) 06DC устанавливает поезду мгновенную скорость, а 06DD - скорость, до которой поезд должен разогнаться плавно (или затормозить, если значение меньше текущего). Ускорение эти команды не задают. 2) Проверку на существование нельзя объединять с другими проверками, относящимися к этому объекту. Сначала выполняем проверку на существование, а потом, если объект существует - применяем к нему другие проверки и команды. Речь шла об этом месте:Code if and 056E: car 1@ defined 01AF: car 1@ sphere 0 in_sphere 1425.375 -965.0531 -80.3066 radius 6.0 6.0 6.0 //начало платформы станции(у головы состава) jf@LIN4A_1249 Отсюда проверку на существование можно вообще убрать, так как она только что была выполнена (тремя строчками выше).
|
|
| |