You are not logged in.
Хм, а как узнать имя текущего выполняемого скрипта? И можно ли, опираясь на него, открыть файл для чтения с тем же именем, но другим расширением (например, .ini)?
Что значит "текущего выполняемого скрипта"? В один момент выполняется только один скрипт)
Offline
>Что значит "текущего выполняемого скрипта"? В один момент выполняется только один скрипт)
Я имел ввиду поток, клео скрипт. Можно ли открыть файл %script_name%.ini если имя скрипта %script_name%.cs
Offline
Я имел ввиду поток, клео скрипт. Можно ли открыть файл %script_name%.ini если имя скрипта %script_name%.cs
Имеется ввиду клео-скрипт, который выполняется в данный момент? Т.е. в своём скрипте ты хочешь открыть файл ini, с таким же именем как и твой скрипт? Или как? Объясни задачу подробнее.
Offline
>Т.е. в своём скрипте ты хочешь открыть файл ini, с таким же именем как и твой скрипт?
Да, именно так :3
Offline
Хай! Вопрос такой: модельки тачек SA подгружает динамически по мере надобности или один раз загрузила и пользуется, пока её не закроют?
Offline
Offline
>Тогда я не пойму одного - ты не знаешь, как называется твой .cs-файл?)
Предполагается, что пользователь может копировать эти .cs скрипты, тем самым увеличивая количество создаваемых этим скриптом объектов. А так как каждый .cs скрипт должен читать только свои настройки, то и открывать он должен файл с таким же именем. (естественно, если он существует.)
Offline
Я канеш могу ошибаться, но:
0xA47B60 - Start of the external scripts info pool. There are 82 elements with 32 bytes of size each
+0 = [dword] Script IP
+4 = [word] Status (can be obtained by 0926)
+6 = [word] Index in SCM (a number as defined in the scm header)
+8 = [char] Name, char 20
+28 = [dword] Size
Offline
sh2ezo wrote:Хай! Вопрос такой: модельки тачек SA подгружает динамически по мере надобности или один раз загрузила и пользуется, пока её не закроют?
Если модель не используется - она выгружается. Да, динамически.
т.е. для двух тачек одинаковой модели будут существовать в памяти две разные модели(сорри за тавтологию)?
Offline
т.е. для двух тачек одинаковой модели будут существовать в памяти две разные модели(сорри за тавтологию)?
Зачем две разные? Одна и та же. Модель загружается только один раз и пока она используется (неважно, 1 машина с такой моделью или 100), она есть в памяти, только одна. Как только ни одной машины с такой моделью не будет использоваться в игре - модель будет выгружена из памяти.
Я канеш могу ошибаться, но:
0xA47B60 - Start of the external scripts info pool. There are 82 elements with 32 bytes of size each
+0 = [dword] Script IP
+4 = [word] Status (can be obtained by 0926)
+6 = [word] Index in SCM (a number as defined in the scm header)
+8 = [char] Name, char 20
+28 = [dword] Size
Предполагается не имя потока, а имя файла .cs, а это совершенно разные вещи.
Можно попробовать разобраться в том, как CLEO загружает скрипты, хотя я сильно сомневаюсь, что там есть то, что тебе нужно.
Offline
sh2ezo wrote:т.е. для двух тачек одинаковой модели будут существовать в памяти две разные модели(сорри за тавтологию)?
Зачем две разные? Одна и та же. Модель загружается только один раз и пока она используется (неважно, 1 машина с такой моделью или 100), она есть в памяти, только одна. Как только ни одной машины с такой моделью не будет использоваться в игре - модель будет выгружена из памяти.
А как с повреждениями быть типа погнутой крышки багажника или двери? Они ж разными могут быть
Offline
имя файла используется при инициализации CLEO-потока, чтобы дать ему имя (name_thread) по названию файла (первые 7 символов). Например, CLEO-поток в файле showsavescreen будет иметь имя SHOWSAV.
Может все-таки можно как-то. Ну или есть тогда уж какой-нибудь другой способ заставить клео-скрипт читать только свой файл настроек?
sh2ezo
Все повреждения хранятся в файле модели же.
Last edited by Ruzel (08-10-2012 05:42)
Offline
wmysterio
File.Open(1@, "CLEO\settings.ini", "at") // IF and SET
at - для дозаписи текстовых
ab - для дозаписи бинарных
Offline
wmysterio
File.Open(1@, "CLEO\settings.ini", "at") // IF and SET
at - для дозаписи текстовых
ab - для дозаписи бинарных
Увы такой режим открытия вызывает ошибку, так как третий параметр должен быть целым числом, например 0x72 – открыть текстовый файл для чтения. Вопрос в том - какие числа соответствуют для открытия файла для дозаписи? Я уже много вариантов перепробовал, но никаких результатов это не дало.
Offline
wmysterio
Только что запустил cs скрипт:
file.Open(1@, "CLEO\coords.ini", "at")
file.WriteString(1@, "writed")
file.Close(1@)
Никакой ошибки не вылезло, а в конце файла coords.ini появилась записиь "writed"
Offline
Такой вопрос - можно ли (прямо в игре) поменять тип автомобиля?
Т. е. в vehicle.ide автомобиль модели 434 имеет тип car. Возможно ли менять значение (прямо в игре) на heli и обратно?
Last edited by Dr_Emmett_Brown_2011 (17-10-2012 12:12)
Offline
Ну да, ищи куда загружается vehicle.ide в памяти и меняй.
Offline
Хотел задать вопрос, над которым я в течение двух дней бьюсь и никак не могу найти решение проблемы. Сделал скрипт для Vice City, но один кусочек кода (с помощью задержек и звуков я выяснил точный участок кода, где происходит вылет) вызывает вылет. Я не пойму, где же кроется проблема, вот код:
var $ACT : Array 5 of Integer $MARK : Array 5 of Integer end for 1@ = 0 to 4 wait 0 0208: $XE = random_float -1200.0 1200.0 0208: $YE = random_float -1200.0 1200.0 02C1: set $XE $YE $ZE to_car_path_coords_closest_to $XE $YE 0.0 actor.Create($ACT[1@],19,#MALE01,$XE,$YE,$ZE) marker.CreateAboveActor($MARK[1@],$ACT[1@]) end
Что пробовал делать:
Комментировал создание маркера - вылет
Комментировал создание маркера и актёра - вылета на данном участке нету, звук (для проверки) слышен
Брал координаты от игрока, а не случайные - вылет
Загружал модель #MALE01 - вылет
Писал массив в полной форме ($ACT(1@,5i)) - вылет
Заменял 1@ глобальной переменной - вылет...
Что делать, ума не приложу. Как ни делай, везде получается одно - вылет из игры.
Буду очень благодарен, если кто-нибудь поймёт, в чём кроется ошибка и подскажет, что делать.
Den_Spb уже предлагал несколько вариантов, но, к сожалению, эта загадочная ошибка не убралась.
Last edited by Vital (30-10-2012 19:51)
Offline
02C1: set $XE $YE $ZE to_car_path_coords_closest_to $XE $YE 0.0
ну вот здесь ошибка явная, три последние параметра получатели и они должны быть переменными а не нулем как последний параметр, а первые три отправители.
I know everything and nothing...
Offline
@mfisto - я пробовал оставлять лишь этот опкод (делал создание маркера и актёра комментариями), вылета не было.
Пробовал поменять местами $XE $YE 0.0 и $XE $YE $ZE (чтобы отправители и получатели были в противоположных позициях), но безрезультатно - вылет из игры опять.
Last edited by Vital (31-10-2012 18:17)
Offline
Так а разве вайс сити поддерживает массивы?
Массивы поддерживаются играми SA и LCS, VCS.
Синтаксис:
San Andreas:
<имя массива>(<имя индексной переменной>,<размер><тип>)Liberty City Stories, Vice City Stories:
<имя массива>(<имя индексной переменной>,<размер>)
Offline
@Sergey81 - да, как быстро разбиваются самые смелые суждения, когда кто-нибудь задаёт простой, но правильный вопрос... Так и оказалось, массивов в VC нету... А жаль. Теперь придётся обдумать новое построение кода, но это уже дело лёгкое. Спасибо!
Offline