You are not logged in.
они не ставят jf на начало, а в той метке куда стоит jf (@TRAINSL_115 в нашем случае) стоит jump на первую метку и так все jf-ы которые должны попасть на начало например...почему они делали именно так?)))
издержки компиляции высокоуровневых конструкций, исходник вообще без меток, if, jump и jf был
от задержки в циклах избавиться НЕЛЬЗЯ
Last edited by 3Doomer (26-10-2010 18:35)
GIMS developer
Offline
А почему кстати
{$CLEO} 0000: while true wait 0 wait 1 end
декомпилируется как
0000: NOP :Noname_2 wait 0 wait 1 jump @Noname_2
а не в первоначальном виде? Так сделано по каким то техническим причинам или что?
Last edited by Sergey81 (26-10-2010 19:07)
Offline
а не в первоначальном виде? Так сделано по каким то техническим причинам или что?
СБ не может знать, как выглядел код в первоначальном виде. Конструкции существуют для удобства пользователя, при компиляции они заменяются метками (т.е. в cs-файле конструкций нет, есть только метки и jump-ы, в чём легко убедиться, открыв любой cs-файл hex-редактором).
Last edited by Den_spb (27-10-2010 12:35)
Offline
Вспомнил, давно хотел узнать, в папке cleo_examples, возьмём например showsavescreen.txt, рядом с ним лежит скомпилированный .cs, который весит 31 байт. Если же я его скомпилирую сам сейчас, выходной файл будет весить 17,1 КБ. Почему такое различие?
Offline
Издержки от компиляции под старой версией? Быть может в начале создаётся некий "мусор" санника
Offline
Здравствуйте.
Можно ли узнать координаты размещения на экране треугольника прицеливания (который в режиме джойпада)?
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
@Sergey81 - отключи опцию "писать доп инфу". санник записывает в файл имена переменных и другую инфу, для использования при декомпиляции.
Offline
Мммм...у меня всё тот же вопрос, как избавиться от wait 0???? просто очень очень очень очень надо!!)))
И ещё, я уже давно заметил, скриптовый и графический движки не синхронны...короче говоря, если мне например нужно воспроизвести анимацию через какое-то время, я ставлю wait с нужным временем...а если у меня FPS около 10 например...анимация воспроизведётся через то время которое я задал, но в игре она воспроизведётся раньше чем надо...как можно синхронизировать их? короче говоря, что использовать вместо wait в таких случаях?...пробовал опкод 01BD: 10@ = current_time_in_ms, но он тоже не зависит от графического движка (я заметил что игровое время тоже идёт независимо от графического движка)...что делать?)) Ещё заметил что когда ставишь таймер, он идёт в ногу с графическим движком...мне бы как нибудь его использовать, только чтобы сам таймер не отображался)))
Last edited by BoPoH (30-10-2010 21:48)
Offline
Offline
Offline
я ставлю wait с нужным временем...а если у меня FPS около 10 например...анимация воспроизведётся через то время которое я задал, но в игре она воспроизведётся раньше чем надо
Не знаю, как ты там отсчитываешь время, но могу точно сказать, что реальная задержка будет всегда превышать значение, указанное в опкоде wait, на десятки миллисекунд (время, необходимое для отработки остальных скриптов и нескриптовых процессов игры).
Last edited by Den_spb (31-10-2010 12:40)
Offline
я в курсе что она превышает указанное значение, дело не в этом...как же объяснить понятнее...тут только показывать надо)) короче говоря, мне это нужно для моего мода...паркур мода...чтобы можно было перепрыгивать сальтами через заборы и не только, я придаю движение игроку опкодом 083С, а анимацию обездвиживаю...но проблема в том, что у меня анимация начинается с замаха, движение которого я оставляю, и убираю когда он должен подлетать...подлетание обеспечиваю тем самым опкодом (083С), через время замаха...время замаха подсчитать несложно, но если поставить wait с тем временем, то очень часто не попадает вовремя, а если фпс опустится скажем до 15, то он половину замаха сделает и подлетит, короче говоря опкод 083C сработает раньше чем надо...ну вобщем если непонятно, я могу скинуть примерчик))
Offline
я в курсе что она превышает указанное значение, дело не в этом...как же объяснить понятнее...тут только показывать надо)) короче говоря, мне это нужно для моего мода...паркур мода...чтобы можно было перепрыгивать сальтами через заборы и не только, я придаю движение игроку опкодом 083С, а анимацию обездвиживаю...но проблема в том, что у меня анимация начинается с замаха, движение которого я оставляю, и убираю когда он должен подлетать...подлетание обеспечиваю тем самым опкодом (083С), через время замаха...время замаха подсчитать несложно, но если поставить wait с тем временем, то очень часто не попадает вовремя, а если фпс опустится скажем до 15, то он половину замаха сделает и подлетит, короче говоря опкод 083C сработает раньше чем надо...ну вобщем если непонятно, я могу скинуть примерчик))
А зачем тут время подсчитывать = жди до конца анимации замаха.
// тут начинаешь аниму замаха
while player.Defined($PLAYER_CHAR)
wait 0
if
actor.Animation($PLAYER_ACTOR) == "ANIMA"
jf break
0613: 26@ = actor $PLAYER_ACTOR animation "ANIMA" time // от 0.0 до 1.0
if
not 26@ == 1.0 // или можно например not 26@ > 0.98
jf break
end
Offline
можно и так...тогда придётся делить анимации на замах и саму аниму...ну щас попробую...)
да кстати, анимации перелазинья через забор и анимации залезания воспроизводятся, примерно так:
0812: AS_actor $PLAYER_ACTOR perform_animation "CLIMB_PULL" IFP_file "PED" 4.0 loopA 0 lockX 0 lockY 0 lockF 0 time -1 // versionB
особое внимание стоит уделить параметрам LockX и LockY, они отвечают за перемещение центра игрока (ну или камеры) вместе с анимацией...если они равны 0, то анимация будет играть, а камера оставаться на месте, однако в игре камера как-то передвигается вместе с перелезанием (заметно что она передвигается искусственно, не вместе с анимацией, особенно если эту анимацию заменить какой-то другой)...вопрос: как сделать тоже самое с камерой))??
Last edited by BoPoH (01-11-2010 07:40)
Offline
Offline
Offline
Опкод 08A2: set_hydra 146@(48@,3i) attack_with_rockets_car_of_player $PLAYER_CHAR radius 30.0 вобще работает? Потому что у меня не получилось заставить все созданные гидры хоть раз выстрелить ракетами в игрока(тоже в гидре). Можно ли хотя бы вручную создавать ракеты и направлять их на транспортное средство игрока?
Offline
Посмотри скрипт "воздушная война" (находится тут: http://www.cleogta.com.ua/load/7-2-0-124 )
Можно ли хотя бы вручную создавать ракеты и направлять их на транспортное средство игрока?
Можно, почему нет. Но в случае с худрой легче воспользоваться спец. командами.
Offline
Посмотри скрипт "воздушная война" (находится тут: http://www.cleogta.com.ua/load/7-2-0-124 )
Можно ли хотя бы вручную создавать ракеты и направлять их на транспортное средство игрока?
Можно, почему нет. Но в случае с худрой легче воспользоваться спец. командами.
А как? Гидры мне не принципиальны, ракеты главное. Я ещё глянул в базу листенера и попробовал так:
0811: $TEMPVAR_ACTOR_CAR = actor $PLAYER_ACTOR car // versionC 08A2: set_hydra 1@ attack_with_rockets_car_of_player $TEMPVAR_ACTOR_CAR radius 300.0
Вот тут действительно они стреляют ракетами, правда с небольшой дистанции. Радиус 300000.0 вроде не даёт им стрелять с большей дистанции.
ЗЫ. У меня ещё есть такой нехороший баг, когда при стрельбе гидрой ракета практически сразу исчезает после появления. Баг проявляется периодически, т.е. какое то время может быть всё нормально, какое то время нет. Тоже самое происходит с метательным оружием, гранатами, коктейлями... Так и не разобрался что вызывает этот баг. Для гидры он фиксится missile.cs от Ryosuke, но только для игрока, но как я заметил другие гидры подвержены такому эффекту, хотя один раз меня подбили с близкого расстояния.
Last edited by Sergey81 (06-11-2010 01:37)
Offline
А как? Гидры мне не принципиальны, ракеты главное. Я ещё глянул в базу листенера и попробовал так:
Создаёшь объект-ракету, цепляешь к транспорту. При выстреле отсоединяешь ракету и придаёшь ей ускорение в нужном направлении. Далее надо проверять - если объект столкнулся с чем-то, то в этой точке надо создать взрыв. Наглядный пример - скрипт "Катюша" (можно найти на http://scriptsforgta.net.ru/)
0811: $TEMPVAR_ACTOR_CAR = actor $PLAYER_ACTOR car // versionC
Лучше использовать 03C0.
Last edited by Den_spb (06-11-2010 01:35)
Offline
А может можно как то задействовать существующие зоны, где создаются ракеты? Например увеличить дистанцию, чтоб ракета создавалась даже если игрок не рядом с этой зоной или что-то подобное сделать?(или хотя бы куда глядеть, чтоб посмотреть принцип работы таких зон)
Offline
Offline
реально ли как-то отключить клавишу спринта, наподобе опкодов:
0901: enable_player $PLAYER_CHAR jump_key 0 07CC: player $PLAYER_CHAR disable_key_15 0
По идее можно через память менять назначение клавиши спринта, сначала ставим её на другую, потом возвращаем исходную.
--
С ракетами разобрался, там не зоны оказывается, а объект создаёт их. Просто помещая его в нужное место он будет стрелять.
00A0: store_actor $PLAYER_ACTOR position_to $TEMPVAR_FLOAT_1 $TEMPVAR_FLOAT_2 $TEMPVAR_FLOAT_3 0107: $2706 = create_object #mil_samsite at $TEMPVAR_FLOAT_1 $TEMPVAR_FLOAT_2 $TEMPVAR_FLOAT_3 0750: set_object $2706 visibility 0 0382: set_object $2706 collision_detection 0
Last edited by Sergey81 (06-11-2010 20:38)
Offline