You are not logged in.
mfisto, на тебе всё, что есть в базе
Класс (Расположение - 0xBA18F4)
class CPlaceName { public: CZone *m_pZone; // 0xBA18F4 short m_AdditionalTimer; // 0xBA18F8 // Из методов в игре используюся только GetZoneNameForXY() и Process() void Remove(); // 0x571D80 char * GetZoneNameForXY(float x, float y); // 0x571D90 , это для карты в меню void Init(); // 0x571E40 void Update(); // 0x571E60 void Process(); // 0x571F20 };
Методы CHud
void SetZoneName(char *name, char bDisplay); // 0x588BB0, bDisplay: 0 - показать только если текст не показан, 1 - показать, даже если текст уже показан void DrawZoneName(); // 0x58AA50
Переменные CHud
char *m_ZoneToPrint; // 0xBAB1D0 char *m_pLastZoneName; // 0xBAB1D4 char *m_pZoneName; // 0xBAB1D8 int m_ZoneState // 0xBAA930 int m_ZoneFadeTimer; // 0xBAA934 int m_ZoneNameTimer; // 0xBAA938
Перечисления
enum eNameState { NAME_DONT_SHOW = 0, NAME_SHOW = 1, NAME_FADE_IN = 2, NAME_FADE_OUT = 3, NAME_SWITCH = 4 };
Last edited by DK22Pac (23-12-2012 21:04)
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
Я к чему спросил про зоны, так как хотел отключить показ зон и авто на экране, а то больно жирно много места занимают, а сделать тупо вывод зон у радара; такой скрипт есть конечно уже, я просто еще хотел и отключить вывод стандартных надписей.
I know everything and nothing...
Offline
mfisto, так как это __stdcall, можно просто вставить return в начало функции.
void DrawZoneName() { return; // код функции }
0A8C: write_memory 0x58AA50 size 1 value 0xC3 protect 1 // 0x58AA50 - начало процедуры, 0xC3 - команда "retn" (return)
Last edited by DK22Pac (27-12-2012 19:13)
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
Здарова, ребят. Как сделать, что бы актер в scm пути ходил бесконечно? Две координаты: Начало и конец пути, и он по ним ходит и ходит.. Патрулирование что-ли.
Your Banny Wrote
Offline
Здарова, ребят. Как сделать, что бы актер в scm пути ходил бесконечно? Две координаты: Начало и конец пути, и он по ним ходит и ходит.. Патрулирование что-ли.
Первое, что приходит на ум - проверять, находится ли актёр в конечной точке, если да, то по новой ставить его на путь.
Offline
И все это в беск. цикле.
Offline
Дорогие скриптеры и знатоки! Возникла необходимость синхронизировать cleo скрипт через интернет -протоколы (http или ftp), но опкоды для работы с файлами работают только с каталогом игры (на пример "CLEO\settings.txt". Есть ли возможность осуществить это при помощи дополнительных библиотек или редактированием памяти, или прочими способами?
Проще говоря, есть ли возможность открыть скриптом текстовый файл из интернета для чтения?
Last edited by _Luft_ (28-02-2013 14:28)
Offline
Столкнулся с проблемой, что опкоды
02C1: store_to 7@ 8@ 9@ car_path_coords_closest_to 5@ 6@ 7@
04D3: get_nearest_car_path_coords_from 5@ 6@ 7@ type 0 store_to 7@ 8@ 9@
работают некорректно. Кто-нибудь знает принцип их работы?
Скрин: жёлтая метка - 5@ 6@ 7@
голубая - 7@ 8@ 9@.
Last edited by IlyaLion (07-06-2013 12:43)
Offline
Я в скрипте такси использовал так:
04D3: get_nearest_car_path_coords_from 7@ 8@ 10.0 type 2 store_to 11@ 12@ 13@
и все работало.
У тебя же желтая метка - нулевые координаты. Почему так, не знаю.
Last edited by Sergey81 (07-06-2013 19:18)
Offline
Это просто так совпало.
Другой пример:
Offline
А, я вспомнил, у меня ж тоже так было, пришлось сначала машину телепортировать в нужные координаты, ждать загрузки карты немного, потом уже находить координаты на путях и туда перемещать машину. При этом не всегда срабатывало, и я находил рандомную машину в этих координатах и помещал свою вместо неё:
if 00E1: key_pressed 0 17 then 33@ = 0 04E4: refresh_game_renderer_at 7@ 8@ while 33@ < 3000 00AB: put_car 0@ at 7@ 8@ 100.0 03F0: enable_text_draw 1 03E3: set_texture_to_be_drawn_antialiased 1 038D: draw_texture 127 position 320.0 225.0 size 640.0 450.0 RGBA 255 255 255 255 wait 0 04D3: get_nearest_car_path_coords_from 7@ 8@ 10.0 type 2 store_to 11@ 12@ 13@ 073E: get_car_in_sphere 11@ 12@ 13@ radius 10.0 model -1 handle_as 19@ if 056E: car 19@ defined then Car.StorePos(19@, 11@, 12@, 13@) 23@ = Car.Angle(19@) Car.Destroy(19@) break end end //04D3: get_nearest_car_path_coords_from 7@ 8@ 100.0 type 2 store_to 11@ 12@ 13@ 00AB: put_car 0@ at 11@ 12@ 13@ Car.Angle(0@) = 23@ 04BA: set_car 0@ speed_instantly 30.0 0509: 3@ = distance between point 7@ 8@ and point 11@ 12@ 008C: 3@ = float_to_integer 3@ 3@ *= -10 0109: player $PLAYER_CHAR money += 3@ while 00DB: actor $PLAYER_ACTOR in_car 0@ wait 200 end 00AD: set_car 0@ max_speed_to 10.0 00A7: car 0@ drive_to 0.0 0.0 0.0 00A9: set_car 0@ to_normal_driver 00AF: set_car 0@ driver_behaviour_to 13 01C3: remove_references_to_car 0@ // Like turning a car into any random car 0391: release_textures break end
А вот в вайсе и гта 3 таких заморочек вроде не было.
Offline
Хотелось бы кое-что уточнить по поводу флага уникальности. Есть, как я понимаю, два вида опкодов поиска случайных объектов/машин/людей: те, что не меняют флаг уникальности и те, что включают его. Я пробовал использовать поиск с последующим .removereferences для актёров. Я заметил, что актёры, созданные скриптом, становятся наполовину обычными людьми: начали ходить по дорогам, снова (я отключал это) начали реагировать на прицеливание, бояться игрока, но особые функции у них также сохранились, я мог выполнять с ними те же действия, что и всегда. Хотел как раз уточнить, если я буду использовать, например, опкод 0AB5, не выгружая из памяти актёров и машины, то, понятное дело, они удалятся по мере необходимости, но меня волнует следующее: с ними ничего не случится, то есть, не изменится ли их поведение, если оно было изменено другим скриптом? Не удалятся ли они после того, как уйдут из поля зрения, или будут ждать .removereferences из другого скрипта?
Это меня волнует по той причине, что некоторые скрипты, которые я делаю, используют поиск случайных людей, среди которых могут оказаться и те, что созданы в .scm файлах или других скриптах, и мне хочется, чтобы их уникальные свойства точно не пропали.
Буду благодарен за объяснение!
Offline
Если не ошибаюсь, флаг уникальности не позволяет удалить педа?
Ты можешь делать любые действия со всеми педами, не обязательно, чтобы у них был флаг уникальности.
Хотя, опкоды с припиской AS я не советую использовать для педов без флага уникальности. Это может привести к вылету игры.
Last edited by DK22Pac (22-06-2013 15:34)
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
@DK22Pac - да, многие стандартные опкоды поиска актёров (02DD, например) не удаляют актёра никогда, он так и будет оставаться в памяти, если взять много актёров, то они могут вообще перестать появляться. Но cleo опкоды не ставят этот флаг, что позволяет игре убирать актёров, которые были "пойманы". У меня лишь опасения по поводу того, что поиск может как-либо влиять на актёра. Так ли это, или всё же актёры никаким образом не смогут изменить своих свойств при действии на них опкодов поиска (который НЕ ставит флаг уникальности)?
Параллельно хотел бы задать вопрос относительно памяти. У каждого элемента игры есть свой адрес (структура + какие-либо смещения), которые, как я понимаю, хранятся независимо от флага уникальности, то есть имеются у всех. Если я найду актёра и установлю ему какое-либо значение в памяти, то он сохранит эти изменения после .removereferences? И есть ли пустые адреса памяти, которые не влияют на элементы игры? (я знаю лишь, что у машины можно поставить в адрес бомб поставить значение 3, которое не даст бомбы, то есть, оно пустое) Так как я с памятью пока что на низком уровне работаю, то мне здесь пока всё интересно.
Offline
Так ли это, или всё же актёры никаким образом не смогут изменить своих свойств при действии на них опкодов поиска (который НЕ ставит флаг уникальности)?
Опкоды поиска КЛЕО не меняют никаких свойств объектов и актёров, они занимаются только поиском этих объектов и актёров.
У каждого элемента игры есть свой адрес (структура + какие-либо смещения), которые, как я понимаю, хранятся независимо от флага уникальности, то есть имеются у всех. Если я найду актёра и установлю ему какое-либо значение в памяти, то он сохранит эти изменения после .removereferences?
Размер структуры и её адрес после removereferences не меняются. Изменяются только значения, записанные по некоторым смещениям.
Хотя, опкоды с припиской AS я не советую использовать для педов без флага уникальности. Это может привести к вылету игры.
Возможно причина ошибки была в чём-то другом? У меня AS опкоды с обычными педами работали нормально.
Last edited by Den_spb (23-06-2013 01:52)
Offline
Den_spb, попробуй ко всем педам применить 05E2, а потом намеренно удали кого-то из них.
Vital, я посмотрел к этому опкоду. В случае с педами, там вызываются CTheScripts::CleanUpThisPed и CMissionCleanup::RemoveEntityFromList.
Вот первая из этих функций, можно сказать, "ресетит" педа.
Сложно судить по базе СА, там много функций не разобрано. В Вайс Сити, из этой функции вызываются:
CPed::ClearObjective
CPed::ClearLeader
CPed::SetWanderPath
CPed::SetMoveState
CPed::SetObjective
CPed::ClearFollowPath
CCarCtrl::JoinCarWithRoadSystem
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
Den_spb, попробуй ко всем педам применить 05E2, а потом намеренно удали кого-то из них.
Да, вылетает через несколько минут игры. Только не из-за удалений, а из-за 05E2 - он в логе всегда последний. Причину пока не понял.
Offline
Подскажите пожалуйста. Что-то не разберусь. Надо передать три параметра в функцию:
первый параметр - хендл авто (как я понимаю, в функции этот первый переданный параметр будет в переменной 0@)
второй параметр - название компонента (например, "detal")
третий параметр - число
В функции надо проверить есть ли компонент с таким названием и если есть, то произвести над ним действия (например, переместить).
В функции при нахождении компонента по названию
0AA7: call_function 0x4C5400 num_params 2 pop 2 _nodename "name" _rwObject 31@ _store_to 30@
вместо "name" какую переменную писать (куда копируется значение "detal", переданное в функцию и как правильно этот параметр передать?)
и далее третий передаваемый параметр в какую переменную будет скопирован?
.... 0AB1: call_scm_func @metka 3 1@ "detal" 300.0 //0AB1: call_scm_func @metka 3 2@ "detal_new" 0.0 .... :metka 0A97: 31@ = car 0@ struct 31@ += 0x18 0A8D: 31@ = read_memory 31@ size 4 virtual_protect 0 0AA7: call_function 0x4C5400 num_params 2 pop 2 _nodename ВТОРОЙ ПЕРЕДАННЫЙ ПАРАМЕТР _rwObject 31@ _store_to 30@ if 30@ > 0 then // действия над компонентом 30@ + = 72 0A8C: write_memory 30@ size 4 value ТРЕТИЙ ПЕРЕДАННЫЙ ПАРАМЕТР virtual_protect 0 end 0AB2: ret 0 ....
Last edited by kenking (25-06-2013 09:08)
Offline
Передавать напрямую строки в scm функцию нельзя, нужно либо передать переменную строки, разбив ее соответственно, либо указатель на строку, например:
2@s = 'detal' //в данном случае строка будет в 2 переменных 2@ и 3@ 0AB1: call_scm_func @metka 4 1@ 2@ 3@ 300.0 '
или
2@v = "detal" //в данном случае строка будет в 4 переменных 2@ 3@ 4@ 5@ 0AB1: call_scm_func @metka 4 1@ 2@ 3@ 4@ 5@ 300.0 '
или
05F7: 2@ = label @label offset 0AB1: call_scm_func @metka 3 1@ 2@ 300.0 ... :label hex "detal" 00 end
I know everything and nothing...
Offline
Очищаю экран опкодом 0826: enable_hud 0, а карта остаётся. Как её убрать?
Offline