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