You are not logged in.
@JuSskeee* - 09B5: set_actor $ACTOR_RYDER signal_after_kill 0
Interesting Opcodes рулят.
Хе-хе. Тоже всегда бесило, когда начинаются хвалебные речи в свой адрес прямо во времи перестрелки.
Я вон, может, с минигана целыми армиями кладу и ничего, реквием не начинаю исполнять.
По идее, где-то в пед* файлах можно убрать такое действие на евент. Искоренить вовсе. Но это уже "где-то", надо искать.
Что моим вопросом про вычисление точки попадания пули? У кого минутка есть — может быть, пошаманите с ассемблером? Хотя... минутки недостаточно будет, боюсь. Блин. Что ж так всё нехожено.
Необходимость вторжения в память предполагал. Но для этого нужно знать адреса, связанные с изменением хп.
Про части тела что? 100% имеется такая система в СА; вспомните анимации: когда в одну ногу с шотгана — актёр ей трясёт, в другую — другой, так же с руками и корпусом. Кто может приблизить к разгадке вычисления точки попадания пули?
А вот меня всегда интересовало: чё значит Sanny?
Sanny — уменьшительно-ласкательное от "San", (в полном виде — "San Andreas"); т.к. Санни Билдер был направлен изначально на скриптинг для GTA SA. Впоследствии добавились возможности скриптинга и для других игр серии, а название осталось.
Мне нравится, Sanny хорошо звучит, и не как-нибудь пресловуто вроде "GTA San Andreas Scripts Editor" или "GTASASE".
Ну и мои вопросы.
1. Как определить часть тела актёра, куда попала пуля.
2. Как можно сделать так, чтобы при 0 хп актёр (мне нужен будет игрок) не погибал?; ну или сделать так, чтобы меньше 1 хп нельзя было оставить.
А по-хорошему, надо бы какую-нибудь ссылочку на адреса памяти, связанные с уроном и оружием. Есть у кого на примете где-нибудь в гтамоддинге?
В weapons.dat есть параметр, отвечающий за это, точно не помню, какой. Но есть. Смотри в вики.
Как такое можно сделать?
Оттачивать своё мастерство в самп и не читерить.
А если серьёзно — попробуй создавать актёра перед лицом актёра в хендле.
Предварительно устрой, чтобы хендл актёра записывался как можно точнее в соответствии с аим-ботом. (например, используй rectrangle или узнавай точку, куда целится актёр и ближайшего актёра не игрока находи)
Ещё вариант — думаю, нужно опробовать его первым: после включения аим-бота создавай создавай актёра относительно того актёра, в которого целится игрок (т.е., куда навёлся прицел аим-ботом), а затем иммитируй прокрутку колёсиком мыши до тех пор, пока не выберется созданный тобой актёр (скорее всего, это будет с первого раза, т.к. он ближе всего).
Сделать, чтобы мышка работала? Хм... По крайней мере, в СА этого не предусмотрено. Можно попробовать сделать так, чтобы при нажании правой кнопки мыши не сразу включался встроенный в игру механизм, а над актёром, на которого будет наведён прицел при включении аим-бота, появлялся маркер (опять же, нужно вычислить принцип работы вшитого в игру механизма наведения прицела), а затем сделать, чтобы при нажатии левой кнопки мыши (огонь) ГГ резко поворачивался к цели и стрелял — получается, что камера закреплена только при нажатии ЛКМ. Хотя сомневаюсь, что получится в действии всё так стройно. Возможно, чтобы настроить нормальное управление камерой наряду с аим-ботом, придётся поизвращаться с 0881 чтобы ГГ не стрелял до того, как прицел будет наведён в нужную точку.
В общем, как-то так. Пробуй, решат только тесты. Удачи.
Меня тоже как-то очень интересовал дельный аим-бот для СА. Так что, мне тоже любопытно будет узнать результат
надо бы взяться за какой-нибудь язык... Си например...
Угу. Научиться писать не делфи, потом выучить ещё html с java, стать полноценным хакером и регулярно создавать всё новые творения, чтобы и Касперский не остался без работы.
@Alien - Да, так действительно работает. Вобще интересно, можно реализовать к примеру бензин, но вместо того, чтоб выводить что-либо на экран, приаттачить корону к машине и регулировать её цвет/размер, что будет означать сколько бензина осталось, или, например, здоровье машины.
"приаттачить корону к машине ... что будет означать ... например, здоровье машины."
И в конечном итоге ты придёшь к выводу, что повреждения машины должны быть видимы на самой машине: побитость, помятость бампера, царапины и треснутые стёкла.
080E: get_actor $Player_Actor ped_event_to 0@ if 0@==9 {EVENT_DAMAGE} then {...} end
Пля... чёт даже не догадался использовать PEvents)
Наводящий вопрос: а будет ли работать с ГГ? Должно. Проверим.
@3Doomer, да, точно. Чёт я затестился, щас посмотрел скрипт проверки, оказывается я не написал перевод в интегер. А я думал, что написал. :wow:
игрок - CJ заходит на маркер в координатах допустим (0.0, 0.0, 0.0) и его просит подросток (модель есть) купить пиво в ларьке (модель ларька уже есть), так как ему не продают - ему нет 18. Карл покупет пиво и отдаёт его подростку и CJ в замен получает 1 бакс.
Какие у тебя реалистичные и одновременно неординарные запросы. Мини-миссия помощи социуму в решении трудновыполнимых задач. Читай мануал (F12), рассматривай миссии в актёрами в мейне, и тебе воздастся.
Я, собственно, почему заглянул в сей топик. По той простой причине что у меня объявились вопросы, я здесь за советом.
Первый вопрос. Как узнать максимальный запас хп игрока? Через статы пробовал - так результата и не добился. Мне нужно чтобы можно было оперировать с полученным значением (макс. хп игрока) и с опкодами с health, например с 0226.
Второй тоже немаловажный вопрос. Каким образом можно проверить: есть ли вода в какой-либо точке. Мне на ум приходит только создавать актёра в той точке и проверять: в воде ли он. Более подходящих решений не нашёл. Но наверняка что-то подобное "0339: anything_in_cube_cornerA - cornerB" и "06BD: no_obstacles_between - and 2 -". Единственный "безличный" опкод, связанный с водой - 092E: get_water_height_at 195@ 196@ flag 0 store_to 200@. Замечу, что 092E 4ым параметром возвращает не высоту, как гласит опкод, а близость к воде. Поэтому, думаю, что стоит переименовать опкод в 092E: get_water_nearness_at 195@ 196@ flag 0 store_to 200@ - при flag 0 если точка в радиусе примерно 10.0 относительно воды, возвращет 0, иначе - какое-то отрицательное число. Если параметр flag равен 1, тогда при близосте к воде возвращает какое-то число в интервале от -113тыс до 103тыс. Подскажите пожалуйста.
Третий вопрос. Есть проверки на повреждённость (damaged) машин и объектов (0366, 03C9), есть также проверки на повреждённость какой-либо конкретной машины другой конкретной машиной или каким-то конкретным актёром и одним актёром другого актёра. Но нет проверки: получил (получает) ли актёр повреждения. Есть проверка с hit_by_weapon, но здесь требуются опять же какие-то конкретные цифры (номер оружия). Можно ли как-то через память проверить это: получил ли актёр любое повреждение. Я знаю, это можно осуществить путём сравнения хп: меньше - значит получил урон. В большинстве случаев этот способ применим, но не всегда.
Надеюсь на помощь. Заранее спасибо.
if and 0AB0: key_pressed ACTIVATION_KEY $PLAYER_ACTOR.Driving 00DD: actor $PLAYER_ACTOR driving_car_with_model #PATRIOT $PLAYER_CHAR.Money > 499999 $ONMISSION == 0 then 03C0: 17@ = actor $PLAYER_ACTOR car $PLAYER_CHAR.Money += -500000
А это для некоего баланса сил?
Опкоды
0364: actor 102@(42@,9i) spotted_actor $PLAYER_ACTOR
замечен ли актёр другим актёром и
09ED: actor 71@ is_within_field_of_view_actor $PLAYER_ACTOR
находится ли один актёр в поле зрения другого
в общем схожи, и в общем могут быть взаимозаменяемыми.
Разница состоит лишь в том что первый (0364) при проверке вернёт true даже в том случае, если во время произведения проверки один актёр не видит другого, но заметил когда-либо, это как бы одноразовое применение. В отличие от второго опкода, в случае использования которого проверка становится истинной только если во время произведения проверки происходит действие то есть, видит ли один актёр другого в нынешний момент.
Насколько я понмаю (в силу знания английского и перевода иноязычного выражения=)), всё именно так. Поправьте, если не прав.
@Viger, а насчёт проверки столкновения это, действительно, как говорил mfisto, есть опкод
0A1B: actor 62@ colliding_with_actor $PLAYER_ACTOR
Звучит как столкнулся ли один актёр с другим, опять же возникает вопрос о действии во времени.
Настоящее время V-ing'овое окончание.
2. Я не раз слышал, как предлагали сделать так, чтоб сделать перемещение эффекта, нужно создать объект, сделать его невидимым, прицепить к нему эффект и перемещать. Вот только проблема – если сделать объект невидимым сразу после создания, то и эффект будет невидимым. Как это исправить?
А чередовать команды местами ни разу не пробовал?
Что если сначала сделать объект невидимым, а уж потом приделать к нему эффект?
Или раз уж particle неумышленно становится невидимым возвращать его из астрального существования), делать видимым?
3. Я просмотерл список эффектов, но не нашёл такого чёрного дыма, который был бы постоянным (незаканчивающимся). Но в игре же был такой дым на домах во время хаоса. Может в мануале не все эффекты указаны или их можно сделать некончающимися?
Может попытаться поколдовать с типом particle'а. Например, как последний параметр в опкоде 064B. Хотя, доподлинно сказать не могу - с этим никогда не сталкивался.
А насчёт дыма в игре во время бунта - может быть он создаётся, исходя из модели, или файла модели и дым циклично создаётся.
4. Применил к игроку код 0713: actor $PLAYER_ACTOR driveby_actor -1 car -1 point 0.0 0.0 0.0 radius 300.0 8 1 firing_rate 100
Как теперь его отменить, чтоб игрок опять сел по нормальному.
Используй
0465: remove_actor $PLAYER_ACTOR from_turret_mode
[---]
@3Doomer, помнишь как-то разговор заходил о простых объектах и о тех, которым был установлен флаг Object.Init.
Так вот помимо малоиспользуемого качества как solid я нашёл ещё одно различие, более существенное.
Если объект обыкновенный, то проявляется весьма забавное свойство.
Игрок как бы скользит по нему при передвижении и на резких поворотах его заносит и он по инерции немного пробегает дальше, не выполняя команду, и прошагивая на одном месте и только после этого начинает идти в заданном направлении.
На объектах же типа solid такой "заносчивости" не проявляется.
Всё равно, результат не тот. В "исправленном варианте получилось"
"WHATARE YOU DOI"
Кучи пробелов в конце нет, текст получился обрезанным.
Ещё вопрос. Почему между первым и вторым словом нет пробела, а между другими имеются?
А я-то думал, что оставшееся место пропускается и не учитывается... а!
То есть, в исправленном виде скрипт должен выглядеть так.
:0 wait 0 if 0AAB: file_exists "CLEO\TEST.txt" jf @0 1@v = "WHAT" 2@v = "ARE" 3@v = "YOU" 4@v = "DOING?" 0A9A: 0@ = openfile "CLEO\TEST.txt" mode 0x77 // IF and SET 0A9E: writefile 0@ size 15 from 1@ // по одному байту на каждый символ, итого 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1...=16) 0A9B: closefile 0@ 0A93: end_custom_thread
Решил поэкспериментировать с работой с файлами.
Написал пробный скрипт.
Цель довольно простая: при входе в игру в файл записывается текст.
:0
wait 0
if
0AAB: file_exists "CLEO\TEST.txt"
jf @0
1@v = "WHAT"
2@v = "ARE"
3@v = "YOU"
4@v = "DOING?"
0A9A: 0@ = openfile "CLEO\TEST.txt" mode 0x77 // IF and SET
0A9E: writefile 0@ size 64 from 1@ // 4 ячейки variable-length string по 16байт каждая, итого 16х4=64б
0A9B: closefile 0@
0A93: end_custom_thread
Всё бы ничего, но текст получается не такой, какой хотелось бы ожидать.
Финальный вид текста таков (при просмотре через блокнот):
"WHATARE YOU DOING? " в конце куча пробелов
А в СБ вовсе литературно не читабелен.
Там проявляются квадратики, замещающие пробелы при просмотре через блокнот, они также невосприимчивы для буфера обмена.
А уж с числами вообще какая-то чушь получается...
То есть этот параметр (четвёртый) в опкоде 06E1 отвечает за положение, на котором водитель будет вести машину относительно другой тачки?
Также остался открытым всё ещё интересующий меня вопрос.
Как вручную вывести на экран состояние того или иного стата. В игре это используется при отображении прироста (+) или запущения (-) какого-либо скилла.
И, раз уже затронул тему, спрошу ещё одно. Как можно остановить изменение какого-нибудь скилла. Заморзить стат, запретить повышение, или же понижение.
Как изменить цвет полоски брони и здоровья? Это лучше сделать через SCM, или патчить EXE?
Если всё ещё интересует ответ на этот вопрос.
Гораздо проще настроить цвет через память, а не разными текстурными методами.
0A8C: write_memory 0xBAB22C size 4 value 0@ virtual_protect 0 - для жизней, для бара брони и полоски дыхания не помню, по-моему пылится где-то на моддинге.
Со значением ("value") раздолье для экспериментов.
Вот несколько довольно сносных вариантов, хотя всё зависит от тематики игры (если уж свершилась глобальная модернизация, иначе говоря глобал-мод), а также определяется вкусами тестера.
// -14870092
// -149000
// -210000
// -254000
// -277000
// -1279000
Насколько я помню, параметр цвета равен записи RGB. То есть для каждого цвета из трёх (красный, зелёный, голубой) выделяется трёхзначное число, за исключением нулевого значения. В этом случае число для цвета будет однозначным и равным единственному нулю (0).
Хотя, всё слишком запутано, с этим можно согласиться, посмотрев предложенные мною значения. Цвет здесь может выражаться отрицательным параметром.
Как сделать, чтоб у грузовика BARRACKS изменить тип кузова - всмысле он либо накрыт брезентом либо ничем не накрыт?
Здесь тебе нужен опкод 0506
Для этой модели (#BARRACKS) существуют три вариации.
да, хотя изначально динамика выключена для обоих...и включать приходится опкодом
object.init получается бесполезен
Не совсем уж бесполезен. Такая solid'ность задействована в некоторых опкодах.
Например,
0339: anything_in_cube_cornerA 227@ 228@ 229@ cornerB 230@ 231@ 232@ solid 0 car 0 actor 1 object 0 particle 0
или
06BD: no_obstacles_between 67@ 68@ 69@ and 287@ 288@ 289@ solid 1 car 0 actor 0 object 0 particle 0
То есть, тут проявлятся вся разница между объектом типа solid и динамическим.
Хотя, отчасти с тобой согласен, мала эта разница. Слишком невелика.
Вопрос: какими опкодами реализованы стационарные пулемётные установки (были на крыше здания в одной из миссий)
Самым что ни на есть прямым ии детальным путём. Меня тоже уже заинтересовывал этот факт. Разбирался.
В мэйне на миссии создаютси объекты, а когда игрок в маркере возле них нажимает кнопку, то игрока помещают в туррет объекта и даруют миниган.
Осуществить, собственно, несложно, но вот выглядит привлекательно.
Находится это в теле миссии 100 ("Up, Up and Away!") Если быть точным - метка HEIST5_6682, строка 349515 , во всяком случае, у меня.
И ещё вопросик возник, как заставить вертолёт двигаться быстро?
Может банально увеличить максимально развиваемую вертолётом скорость? (00AD)
Отвечая на вопросы, сам задался вопросом.
Чему могут быть равны значения четвёртого параметра (в данном случае, равного 29) в опкоде
06E1: AS_actor 50@ using_car 51@ target_car 69@ with_order 29 max_speed 30.0 traffic_flag 2
А также напомните, если не затруднит, траффик-флаги. Что-то уже не помню, какие там есть.
Кто-нибудь знает, или опять всё придётся вручную тестить?
аа, наверно в клео 4 было добавлено, а ты мчто в моём скрипте изменил? да и там по идее теперь вообще переменные 1 и 2 не участвуют ))
А что, уже CLEO 4 вышла?
Сейчас искал опкод для занесения текущей активной зоны игрока в переменную.
И не нашёл! Сам диву даюсь. Был же какой-то, а сейчас пропал... Напомните, пожалуйста!
Ещё один вопрос. На этот раз более существенный (хотя, всё относительно). Как вручную вывести на экран состояние того или иного стата. В игре это используется при отображении прироста (+) или запущения (-) какого-либо скилла.
И, раз уже затронул тему, спрошу ещё одно. Как можно остановить изменение какого-нибудь скилла. Заморзить стат, запретить повышение, или же понижение.
Как можно проверить: удалён ли актёр на какое-либо расстояние от друго актёра по заданной оси?
Например, что некий актёр удалён влево (-X) или вперёд(+Y) от какого-то актёра на конкретное расстояние.
Я уже подумывал о всяческих математически-арифметических конструкциях вроде работы с rectangle'ами, но как-то это слишком муторно. Нет ли чего-нибудь попроще? Ведь гениальное должно быть просто!
Хаха! Совершенно случайно нашёл одну интересную вещь jump'ами (у меня это проделалось с jf), наверное теоретически все знают, но навряд ли кто-то пробовал).
Если в каком-нибудь из jump'ов за единственный параметр выдать 0, то игра, независимо ни от чего окружающего, начнётся заново! Вам снова дают стандартный набор жителей Восточного Побережья - джинсы и майку, а так же телепортируют вас в точку старта игры. Приэтом, все статы останутся теми же, как были в сохранённой игре до проделование такой фишки, а вот вся сюжетная линия начнётся заново!
(помнится, когда-то listener меня по этой ссылке отправлял:crazy:)
Из уст в уста, их браузера в браузер, из рук в руки, не а вот это уже газета
Ща почитаю статейку, только она на английском. Но ничего, не помеха, наоборот, иногда даже лучше, особенно в данной сфере.
The current version is IEEE 754-2008, which was published in August 2008
Интересно, а какого года версия в Сане использовалась?
Ссылочка, во куда аж из статьи попасть можно )
(−1)s × c × bq
(где s= a sign (zero or one), c= a significand (or 'coefficient'), q= an exponent.)
@Alien, объясни неучу (пока что неучу, пойму, - буду учем)) как расчитывать по использованной тобой формуле в твоём предыдущем посте и что за формулу ты применил?
__
Дальше не оффтоп)
= 1000.0
Так это что получается, всегда в макс хэлф тысяча будет? А как же зависимость от стата?
Я тут подумал, может стат стамины использовать и с ним сравнивать вместо "обычных" жизней актёра. Или стамина это выносливость? О_о
Возникла такая проблема, а вместе с ней и вопрос.
Когда мы узнаём макс. кол-во жизней игрока через стат (в данном случае float_stat 24), то получаем занебесное значение, что-то вроде 1148846080 (и это ещё maked abs.int.)!
Можно ли как-то узнать макс. запас жизней с нормальными цифрами? Чтобы, например, можно было сравнить с кол-вом жизней $player_actor'а.
Появился вопрос.
Можно ли изменить окрас какой-либо конкретной территории под контролем банды? Можно, или возможно только цвет всех территорий заданной банды разом?
Блин, с перезарядкой меня опередили... Но идея у меня возникла раньше, чем у них
Хотя наверняка она давно эта мысль будоражила умы, особенно просвещённых.
@Den_spb, что-то ты намудрил с вычислением машины в радиусе...
Всё гораздо проще. Специально для таких целей Рокстаровцы любезно создали опкод 073E.
Там надо прописать нужную модель и желаемый радиус. А если в переменной так и останется -1 после выполнения опкода, следовательно, в указанном радиусе машины с такой моделью нет.
@Wire, для достижения своей цели используй:
073E: get_car_in_sphere 1@ 2@ 3@ radius 50.0 model #RHINO handle_as 0@