маркер над игроком

Статус
В этой теме нельзя размещать новые ответы.

l1ght777

Активный
Автор темы
345
53
Версия MoonLoader
Другое
Как сделать проверку на то, есть ли маркер над головой выбранного игрока или нет? Пытаюсь сделать так, если я ставлю один маркер над игроком, и позже хочу поставить второй, то маркер с первого убирается, то есть сделать выбор игроков.

up
 
Последнее редактирование:
  • Клоун
Реакции: Corenale

l1ght777

Активный
Автор темы
345
53
Ну что мешает сохранять хендл маркера и удалять старый по нему? Сохранять в файл, чтобы даже перезагрузка скрипта не мешала или удалять при его выгрузке.
А зачем его сохранять вообще? Эта функция просто работает как временный селектор в игре, ничего сохранять не нужно вообще

up
 
Последнее редактирование:
  • Bug
Реакции: Tema05 и wojciech?

wojciech?

Известный
Проверенный
457
419
А зачем его сохранять вообще? Эта функция просто работает как временный селектор в игре, ничего сохранять не нужно вообще
Тебе нужно сохранить хендл маркера в переменную при создании. Если она уже проинициализирована, то выгружаешь сначала старый и потом создаешь новый. При выгрузке скрипта (onScriptTerminate) в любом случае ты должен выгрузить созданный маркер, чтобы он не остался до перезахода в игру
 

l1ght777

Активный
Автор темы
345
53
Тебе нужно сохранить хендл маркера в переменную при создании. Если она уже проинициализирована, то выгружаешь сначала старый и потом создаешь новый. При выгрузке скрипта (onScriptTerminate) в любом случае ты должен выгрузить созданный маркер, чтобы он не остался до перезахода в игру
Я создал хендел и записал в переменную маркера, теперь как сделать так, чтобы маркер удалялся с предыдущего игрока и ставился на следующего? у меня не получилось и я не понял
 

kyrtion

Известный
1,340
508
Нужно запомнить маркер хендл. Если хочешь чтобы поменять местами маркер другого игрока - нужно удалить хендл маркера и создать новый маркер, и опять запомнить хендл маркера и постоянно устанавливать позиция игрока (цикл с потоком). При завершении работы скрипта тоже необходимо удалить хендл маркера ибо там останется нерабочий летучий маркер

взято примеры из кликвара:
Lua:
local pointMarker = nil

local function createPointMarker(x, y, z)
  pointMarker = createUser3dMarker(x, y, z + 0.3, 4)
end

local function removePointMarker()
  if pointMarker then
    removeUser3dMarker(pointMarker)
    pointMarker = nil
  end
end

function onScriptTerminate(script, quitGame)
  if script == thisScript() and pointMarker then
    removeUser3dMarker(pointMarker)
  end
end

-- пример, используется только 1 маркер и не более
-- создать: createPointMarker(x, y, z)
-- удалить: removePointMarker()
--[[
  funcs moonloader markers:
  v.015 setAlwaysDraw3dMarkers(bool set)
  v.015 Marker marker = createUser3dMarker(float atX, float atY, float atZ, int color)
  v.015 removeUser3dMarker(Marker marker)
]]
 
Последнее редактирование:

l1ght777

Активный
Автор темы
345
53
Нужно запомнить маркер хендл. Если хочешь чтобы поменять местами маркер другого игрока - нужно удалить хендл маркера и создать новый маркер, и опять запомнить хендл маркера и постоянно устанавливать позиция игрока (цикл с потоком). При завершении работы скрипта тоже необходимо удалить хендл маркера ибо там останется нерабочий летучий маркер

взято примеры из кликвара:
Lua:
local pointMarker = nil

local function createPointMarker(x, y, z)
  pointMarker = createUser3dMarker(x, y, z + 0.3, 4)
end

local function removePointMarker()
  if pointMarker then
    removeUser3dMarker(pointMarker)
    pointMarker = nil
  end
end

function onScriptTerminate(script, quitGame)
  if script == thisScript() and pointMarker then
    removeUser3dMarker(pointMarker)
  end
end

-- пример, используется только 1 маркер и не более
-- создать: createPointMarker(x, y, z)
-- удалить: removePointMarker()
--[[
  funcs moonloader markers:
  v.015 setAlwaysDraw3dMarkers(bool set)
  v.015 Marker marker = createUser3dMarker(float atX, float atY, float atZ, int color)
  v.015 removeUser3dMarker(Marker marker)
]]
попытался сделать, и ничего не вышло, маркер не ставится вообще, а я понятия не имею в чем проблема

Lua:
local marker = nil

function main()
    while not isSampAvailable() do wait (100) end

    sampRegisterChatCommand("setmarker", market)

    wait(-1)
end


  function onScriptTerminate(script, quitGame)
  if script == thisScript() and marker then
    removeBlip(marker)
  end
end


function market(ped)
   local res, id = sampGetPlayerIdByCharHandle(ped)
   if res then
      if marker then
         removeBlip(marker)
      end
         marker = addBlipForChar(ped)
   end
end
 

l1ght777

Активный
Автор темы
345
53
addBlipForChar и createUser3dMarker кажись отличаются.
еще не посмотрел, либо таргет маркер либо стрелочка которая перемещается сверху и снизу.
позже разузнаю
стрелка эта, перемещается сверху и снизу

@kyrtion
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.