You are not logged in.
Добрый день всем!
В последнее время часто играю в SA:MP на сервере, где подбор оружия реализован в следующем виде: на земле лежит моделька оружия, ты подходишь к ней, нажимаешь кнопку, появляется диалог с пунктом "взять", нажимаешь и берешь. Проблема заключается в том, что оружие может лежать и в кустах, и в воде, и везде, где угодно, и куда просто так не заглянешь. Поэтому появилась идея написать CLEO-скрипт, который бы обнаруживал оружие и подсвечивал бы его.
Алгоритм вроде простой - найти оружие на карте, вытащить его координаты и по этим координатам создать какой-нибудь опознавательный знак, например, 3д текст.
С подсвечиванием всё должно быть ок, а вот с поиском объекта на карте возникли проблемы - опкода для поиска объектов я не нашел. Даже не уверен, что моделька, например, шотгана, это объект - в справке к Sanny Builder в списке объектов его нет, там всякие заборы и автоматы с едой
Поэтому мне кажется, что например
0AE3: $object = random_object_near_point 0@ 1@ 2@ in_radius 10.0 find_next 1 //IF and SET
не сработает.
Боюсь, что придется лезть в память и там как-то искать модельку, но я этого никогда не делал и очень боюсь
Что посоветуете?
Offline
лезть в память и там как-то искать модельку
Offline
Или поставить iv lights mod или что-то подобное, дабы пикапы подсвечивались.
Offline
Почему ты думаешь что 0AE3 не сработает? он в сампе работает прекрасно. Через него ты получаешь хендл обьекта, потом получаешь ид модели по хендлу, проверяешь ид, если он подходит то создаешь над ним 3д текст. Только для этого тебе нужен сампфанкс. Напиши в личку, скину сайт где больше помогут по сампу,
Пример кода начеркал. Скрипт ищет калашникова и выводит его место положение на экране. Нужен сампфанкс.
{$CLEO} {$NOSOURCE} const VK_F3 = 0x72 end if not 29@ = samp.Base() then end_thread else while not samp.Available() wait 100 end end 0B67: render a 255 r 255 g 255 b 255 to_argb 12@ 0B6D: render 11@ = create_font "Arial" height 10 flags 0x0C while true wait 0 if 0ab0: VK_F3 then 0af8: "Поиск оружия {00FF00}активирован" -1 while 0ab0: VK_F3 wait 0 end repeat wait 0 actor.StorePos($player_actor, 0@, 1@, 2@) 0AE3: 4@ = random_object_near_point 0@ 1@ 2@ in_radius 40.0 find_next 1 //IF and SET 0984: 5@ = object 4@ model if 5@ == #AK47 then 0400: store_coords_to 6@ 7@ 8@ from_object 4@ with_offset 0.0 0.0 0.0 0B55: convert_3D_coords 6@ 7@ 8@ to_screen 9@ 10@ 0B6F: render font 11@ draw_text "AK-47" pos 9@ 10@ color 12@ end until 0ab0: VK_F3 0af8: "Поиск оружия {FF0000}деактивирован" -1 end end
Offline