#1 28-05-2014 10:07

Zynd
Registered: 04-07-2013
Posts: 6

Нахождение координат объекта на карте

Добрый день всем!

В последнее время часто играю в SA:MP на сервере, где подбор оружия реализован в следующем виде: на земле лежит моделька оружия, ты подходишь к ней, нажимаешь кнопку, появляется диалог с пунктом "взять", нажимаешь и берешь.  Проблема заключается в том, что оружие может лежать и в кустах, и в воде, и везде, где угодно, и куда просто так не заглянешь. Поэтому появилась идея написать CLEO-скрипт, который бы обнаруживал оружие и подсвечивал бы его.

Алгоритм вроде простой - найти оружие на карте, вытащить его координаты и по этим координатам создать какой-нибудь опознавательный знак, например, 3д текст.

С подсвечиванием всё должно быть ок, а вот с поиском объекта на карте возникли проблемы - опкода для поиска объектов я не нашел. Даже не уверен, что моделька, например, шотгана, это объект - в справке к Sanny Builder в списке объектов его нет, там всякие заборы и автоматы с едой sad
Поэтому мне кажется, что например

 0AE3: $object = random_object_near_point 0@ 1@ 2@ in_radius 10.0 find_next 1 //IF and SET

не сработает.
Боюсь, что придется лезть в память и там как-то искать модельку, но я этого никогда не делал и очень боюсь smile

Что посоветуете?

Offline

#2 28-05-2014 21:01

Seemann
Registered: 07-08-2006
Posts: 2,156

Re: Нахождение координат объекта на карте

лезть в память и там как-то искать модельку

Offline

#3 29-05-2014 12:43

НикИТОС
Registered: 05-06-2013
Posts: 133
Website

Re: Нахождение координат объекта на карте

Или поставить iv lights mod или что-то подобное, дабы пикапы подсвечивались.

Offline

#4 30-05-2014 11:12

Dark_Knight
From: г. Полтава
Registered: 09-07-2013
Posts: 33

Re: Нахождение координат объекта на карте

Почему ты думаешь что 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

Board footer

Powered by FluxBB