You are not logged in.
(Осторожно: плохо переведен на Английский Русский ниже):
Я рассчитываю 48 опкодами ...
Я закончил добавление всех CLEO 4 опкодами Opcode к базе данных, доступна здесь: http://gtag.gtagaming.com/opcode-database
Там вы можете просматривать Opcode описания (Я перевел их на английский, но некоторые вещи могут немного путается в процессе) и скачать последнюю sascm.ini и opcodes.txt. Одна включен в качестве части CLEO 4 пропускает некоторые из самых последних открытий. Некоторые из которых я нашел полезным.
Большая работа по опкодами! Некоторые из этих невероятно полезна тем, что я сейчас работаю...
Offline
@Alien
Речь идет о том что под windows 7 есть спец. фича, которая наз. вызов из под администратора, короче без помощи Viger'а я отключил эту хуню, но теперь все работает абсолютно доступно, однако сохранения все равно не подгружаются, вот так.
Это скорее какая особенность работы винды 7.
Но это рабочий режим (режим полного доступа без подключения опции вызова из под администратора) считается в ней, так что эту ошибку надо исправить!
I know everything and nothing...
Offline
Я не думаю, что мое сообщение было отправлено ... Сайт Sanny Builder казалось спуститься, прежде чем я сумела пост.
В любом случае. Я задавался вопросом, Opcode 0ACE может иметь дополнительные параметры (которые обычно доступны в функции) для отображения текста без звука или даже лучше ... Показаны постоянных поле?
Offline
0@ это адрес, по которому вводится текст из ключа, естественно, что ключ - это 0@v.
А потом переменная 0@ заменяется на адрес в этом опкоде.
А как ты хотел, чтоб текст длинной, например, 20 символов, влез в переменную @v, если там всего 16.
Я делаю так. Правильно? Хочу получить нормальное имя транспорта.
03C0: 1@ = actor $PLAYER_ACTOR car
0@v = car_model 1@ name
0ADE: 0@ = text_by_GXT_entry 0@v
... ???
Offline
@mfisto, не ну чё надо было ещё объяснять! Нее, люди умные сидят, я кстати тоже не тупой, доработал квик опкод, не знаю, буду ли поддержку для линейки 3-ей гта делать, но для СА 1.0 работает нормалём, пришлось тоже скриптинговую систему изучать... Короче хорош оффтопить и понты гнуть, я лишь упомянул что это отключается, да я сам эту хрень долго найти не мог(= И писал я из под XP, так что я и физически не мог посмотреть где отключается - убрал и забыл...
@Alien а что по поводу добавления опкодов? Типа
00B0: allocate_string "HZHZH" at_address 0@
и
00B1: fill_memory_by 0 at_address 0@ size 255
вот типа того? Удобно - обнулить память одним опкодом! Тут в качестве первого параметра - байт к которому будут приравниваться все аддреса побайтово, начиная от заданного адресса ну и заканчивая, там зависимо от размера... Хотя этого можно не делать, я для себя сам напишу! Для других есть write_memory А вот первый опкод я считаю просто необходим!
@GTASA нет, не совсем, ещё модель не получил)) Вот так!(не тестировал)
03C0: 1@ = actor $PLAYER_ACTOR car
0441: 1@ = car 1@ model
0ADB: 0@v = car_model 1@ name
0ADE: 0@ = text_by_GXT_entry 0@v
...
Offline
@Viger -
00B0: allocate_string "HZHZH" at_address 0@
Не совсем понял что делает этот опкод. Выделяет память, записывает в нее строку, возвращает указатель на всю эту радость? Можно же сделать все это руками.
0AC8: 0@ = allocate_memory_size 6 0AD3: string 0@ format "%.*s" 6 "HZHZH"
00B1: fill_memory_by 0 at_address 0@ size 255
Добавил такую недокументированную возможность в 0A8C. Когда передается размер отличный от 1, 2 или 4, этот опкод выполняет memset (заполняет блок памяти младшим байтом переданной величины).
@GTASA - поменял формат опкода. Теперь можно делать так, как ты хочешь. Перекачай библиотеку из первого поста. Пример скрипта - простейший carspawner.
{$CLEO} wait 0 while true wait 100 for 0@ = 400 to 611 0ADB: 1@v = car_model 0@ name if 0ADC: test_cheat 1@v then 0ADD: spawn_car_with_model 0@ at_player_location 0ADE: 5@ = text_by_GXT_entry 1@v 0ACE: show_formatted_text_box "%s spawned..." 5@ end end end
@Deji -
Yes, 0ACE can take up to 35 extra params. This limit in all txt-formating opcodes. And agrrement on lines? I think it's better to translate as "string convention". In 2 words, this convention allows to use C-style strings (memory addresses) as scm-strings and SCM-strings as C-style strings.
Offline
(I'll just speak English... Probably more sense there)
I think some sort of sub-string command could be useful.
0000: 0@v substr 1@v from 0 to 7
Useful for getting part of a string. Especially if it's too long. Is there some way to do this already?
Reason is... I have this part of the car spawner code:
if 002B: 511 >= 11@ then 000A: 10@ += 1 000A: 11@ += 1 end 0006: 12@ = 0 for 1@ = 10@ to 11@ 0ADB: 2@v = car_model 1@ name 0ADE: 2@v = text_by_GXT_entry 2@v if 8847: not string 2@v empty // @v - doesn't seem to help block out empty strings.. then 0AD3: 2@v = format "%s" 2@v 0AD3: 6@v = format "_UCT%d" 12@ 0ADF: add_dynamic_GXT_entry 6@v text 2@v 000A: 12@ += 1 else 000A: 11@ += 1 end end 08DB: set_panel 0@ column 0 header 'DUMMY' data '_UCTSC2' '_UCT0' '_UCT1' '_UCT2' '_UCT3' '_UCT4' '_UCT5' '_UCT6' '_UCT7' '_UCT8' '_UCT9' '_UCTSC1'
However some entries are blank due to the model name being too long to be used as a GXT Entry.
It seems that not all of the car model names refer to a GXT Entry name?:
GXT:
HOTKNIF // HotknifeModel:
#HOTKNIFE = 434
EDIT: My problem is fixed... Kinda.
Can the format opcode be used to get part of a string somehow?
Last edited by Deji (27-02-2010 04:14)
Offline
Alien, у меня все нормально, но вот люди говорят, что игра не запускается со скриптами из CLEO 3. Можно как-то решить эту беду?
Offline
@GTASA
Не верно.
CLEO 3 полностью поддерживает.
Translation / Переводы (English to Russian)
Last edited by Deji (27-02-2010 04:13)
Offline
@GTASA - да видел я эти скрипты, которые не работают в CLEO 4. Для меня, честно говоря, секрет, как они и на CLEO 3 работали. Писать надо нормально, вот что...
@Deji - partial string copy:
0@v = "string1 string2" 0AC7: 4@ = var 0@ offset 4@ += 7 0AD3: 5@v = format "%.*s" 6 4@ 0ACA: show_text_box 5@v
"string1 [string]2". Part of string from [ to ] is copied in a resultant string (5@v).
See format specification.
Offline
Ну приветы сново..
ув Alien можно вопрос :
что это за пароль то такой? как его вводить? пишет неверный пароль..
Напиши поалуйста нормальный пароль на скачку этот пишет что неверный ..
Offline
Пароль правильный. Копируй без лидирующего пробела.
Offline
@Alien
Thanks.
EDIT: Never mind. I see you already found and fixed the gosub bug.
Last edited by Deji (28-02-2010 01:15)
Offline
0AE1: работает некорректно. Не знаю почему. Два других для нахождения объектов и транспорта прекрасно, а этот какой-то не такой. Что-то в нем не так.
А еще эти же два для нахождения объектов и транспорта не работают, если по близости нет объектов. Игра вылетает. Не знаю почему, я ставлю проверку 0@ <> -1, но она не помогает, когда лечу куда-то в лес, меня выкидывает.
===
Слухай, Alien, это капец. С твоим клео 4 и с моим простейшим скриптом вылетает из игры при посадке в машину. Так что в посте #35 ты не прав. А вот мой скрипт:
:START wait 0 if 0256: player $PLAYER_CHAR defined jf @START if 0818: actor $PLAYER_ACTOR in_air jf @START if 80DF: not actor $PLAYER_ACTOR driving jf @START if 8491: not actor $PLAYER_ACTOR has_weapon 46 jf @START 0819: 0@ = actor $PLAYER_ACTOR distance_from_ground if 0@ >= 18.0 jf @START 1@ += 2.4 083E: set_actor $PLAYER_ACTOR rotation 1@ 1@ 0.0 while_in_air 0819: 0@ = actor $PLAYER_ACTOR distance_from_ground if 0@ = 0.0 then 0A8D: 2@ = read_memory 0xB6F5F0 size 4 virtual_protect 0 2@ += 66 0A8D: 3@ = read_memory 2@ size 4 virtual_protect 0 if 3@ >= 4 then 0223: set_actor $PLAYER_ACTOR health_to 0 end end jump @START
С ним вылетает при посадке в тачку в CLEO 4, а в CLEO 3 - нет.
Кстати, зря ты удалил из поиска опкодов отрицательные опкоды. Там были те, которых не было в положительных, вот пример: 89DE: not actor $PLAYER_ACTOR entering_car
Last edited by GTASA (28-02-2010 06:03)
Offline
Там были те, которых не было в положительных
Насколько знаю, из любой проверки можно сделать антипроверку, заменив первую цифру 0 в номере опкода на 8 и наоборот (даже если эта антипроверка отсутствует в поиске опкодов).
Offline
Я говорил о таких вот опкодах! Скачиваем квик опкод новый и смотрим! В архиве описаны все опкоды, там для работы со строками, полностью совместимо с клео4 и не мешает работе игры...
http://www.needforrace.ucoz.ru/load/6-1-0-22
0B10: allocate_string "blabla" at_address 0@
0B11: 1@ = string 0@ length
0B12: allocate_int_to_str 1@ at_address 0@
0B13: allocate_string_sum 0@ + 1@v at_address 0@
0B14: 0@ == 1@v // any strings
Offline
Den_spb, еще раз повторю, вот ты найди теперь опкод 09DE: actor $PLAYER_ACTOR entering_car.
А он был записан только как отрицательный.
Offline
@GTASA - ну и при чем же здесь CLEO? Во-первых, у меня все работает, во-вторых, здесь написана полная белиберда.
0A8D: 2@ = read_memory 0xB6F5F0 size 4 virtual_protect 0 2@ += 0x42 0A8D: 3@ = read_memory 2@ size 4 virtual_protect 0 if 3@ >= 4 then 0223: set_actor $PLAYER_ACTOR health_to 0 end
Спасает только то, что это условие может выполниться только в очень редком случае
0819: 0@ = actor $PLAYER_ACTOR distance_from_ground if 0@ = 0.0 then ...
С float'ами надо выполнять приближенную проверку равенства.
const epsilon = 0.01//радиус окрестности end 0819: 0@ = actor $PLAYER_ACTOR distance_from_ground if 0@ < epsilon then ...
@Viger - все равно не понимаю, что делают твои опкоды и почему нельзя сделать то же самое, используя опкоды форматирования CLEO 4.
Кстати, из opcodes.txt я отрицательные опкоды не вытаскивал. Просто взял не глядя тот файл, который mfisto в этом посте выложил.
А еще эти же два для нахождения объектов и транспорта не работают, если по близости нет объектов. Игра вылетает. Не знаю почему, я ставлю проверку 0@ <> -1, но она не помогает, когда лечу куда-то в лес, меня выкидывает.
Не 0@ <> -1, а 0@ <> 0. А лучше использовать для проверки встроенное условие.
0AE1: работает некорректно. Не знаю почему. Два других для нахождения объектов и транспорта прекрасно, а этот какой-то не такой. Что-то в нем не так.
Что-то не так с чем-то другим.
Пример: все в ужасе убегают от главного героя.
{$CLEO} //Nobody likes me 0000: while true wait 0 if player.Defined(0) then actor.StorePos($PLAYER_ACTOR, 0@, 1@, 2@) if 0AE1: 3@ = random_actor_near_point 0@ 1@ 2@ in_radius 10.0 find_next 1 pass_deads 1 //IF and SET then 05DB: AS_actor 3@ flee_from_actor $PLAYER_ACTOR from_origin_radius 50.0 timelimit -1 end end end
Offline
Offline
У меня не устанавливается. Я жму close, когда поверх полоски установки написано completed, но папки cleo нету в папке с игрой. Что делать?
Offline
У меня не устанавливается. Я жму close, когда поверх полоски установки написано completed, но папки cleo нету в папке с игрой. Что делать?
Самому создать не вариант?
Offline
Кстати, на счет windows 7. Возможно ли создать какой-то патч для SA, чтобы игра нормально работала в этой ОС? А то у меня, если зайдешь в меню, а затем обратно в игру, все зависает. Не всегда, но часто.
Offline
Привет?
I was wondering if there was a way to use the last_keypress pool with the show_text_box addresses... On my attempt it writes everything backwards... I've tried quite a few things but I've not been able to find a way to get it to write forwards.
I tried read_memory, but using that made it write only 1 character and a whole load of gibberish if I don't put the size at "4", for some reason.
I've also tried a for loop, checking each possible keypress... But that also had a similar result to above.
Offline
Sorry Deji! I have a question too.
I was wondering: is there a way to get the screen xy from 3D coords using CLEO or by making a new opcode? It would be really useful for several purpose.
Offline
Кстати, на счет windows 7. Возможно ли создать какой-то патч для SA, чтобы игра нормально работала в этой ОС? А то у меня, если зайдешь в меню, а затем обратно в игру, все зависает. Не всегда, но часто.
не замечено.
GIMS developer
Offline