Вопросы по Lua скриптингу

Общая тема для вопросов по разработке скриптов на языке программирования Lua, в частности под MoonLoader.
  • Задавая вопрос, убедитесь, что его нет в списке частых вопросов и что на него ещё не отвечали (воспользуйтесь поиском).
  • Поищите ответ в теме посвященной разработке Lua скриптов в MoonLoader
  • Отвечая, убедитесь, что ваш ответ корректен.
  • Старайтесь как можно точнее выразить мысль, а если проблема связана с кодом, то обязательно прикрепите его к сообщению, используя блок [code=lua]здесь мог бы быть ваш код[/code].
  • Если вопрос связан с MoonLoader-ом первым делом желательно поискать решение на wiki.

Частые вопросы

Как научиться писать скрипты? С чего начать?
Информация - Гайд - Всё о Lua скриптинге для MoonLoader(https://blast.hk/threads/22707/)
Как вывести текст на русском? Вместо русского текста у меня какие-то каракули.
Изменить кодировку файла скрипта на Windows-1251. В Atom: комбинация клавиш Ctrl+Shift+U, в Notepad++: меню Кодировки -> Кодировки -> Кириллица -> Windows-1251.
Как получить транспорт, в котором сидит игрок?
Lua:
local veh = storeCarCharIsInNoSave(PLAYER_PED)
Как получить свой id или id другого игрока?
Lua:
local _, id = sampGetPlayerIdByCharHandle(PLAYER_PED) -- получить свой ид
local _, id = sampGetPlayerIdByCharHandle(ped) -- получить ид другого игрока. ped - это хендл персонажа
Как проверить, что строка содержит какой-то текст?
Lua:
if string.find(str, 'текст', 1, true) then
-- строка str содержит "текст"
end
Как эмулировать нажатие игровой клавиши?
Lua:
local game_keys = require 'game.keys' -- где-нибудь в начале скрипта вне функции main

setGameKeyState(game_keys.player.FIREWEAPON, -1) -- будет сэмулировано нажатие клавиши атаки
Все иды клавиш находятся в файле moonloader/lib/game/keys.lua.
Подробнее о функции setGameKeyState здесь: lua - setgamekeystate | BlastHack — DEV_WIKI(https://www.blast.hk/wiki/lua:setgamekeystate)
Как получить id другого игрока, в которого целюсь я?
Lua:
local valid, ped = getCharPlayerIsTargeting(PLAYER_HANDLE) -- получить хендл персонажа, в которого целится игрок
if valid and doesCharExist(ped) then -- если цель есть и персонаж существует
  local result, id = sampGetPlayerIdByCharHandle(ped) -- получить samp-ид игрока по хендлу персонажа
  if result then -- проверить, прошло ли получение ида успешно
    -- здесь любые действия с полученным идом игрока
  end
end
Как зарегистрировать команду чата SAMP?
Lua:
-- До бесконечного цикла/задержки
sampRegisterChatCommand("mycommand", function (param)
     -- param будет содержать весь текст введенный после команды, чтобы разделить его на аргументы используйте string.match()
    sampAddChatMessage("MyCMD", -1)
end)
Крашит игру при вызове sampSendChat. Как это исправить?
Это происходит из-за бага в SAMPFUNCS, когда производится попытка отправки пакета определенными функциями изнутри события исходящих RPC и пакетов. Исправления для этого бага нет, но есть способ не провоцировать его. Вызов sampSendChat изнутри обработчика исходящих RPC/пакетов нужно обернуть в скриптовый поток с нулевой задержкой:
Lua:
function onSendRpc(id)
  -- крашит:
  -- sampSendChat('Send RPC: ' .. id)

  -- норм:
  lua_thread.create(function()
    wait(0)
    sampSendChat('Send RPC: ' .. id)
  end)
end
 
Последнее редактирование:

EclipsedFlow

Известный
Проверенный
1,047
476
Форматирование кода
Блин код не получаеться,мне при команде [ /ttr ] надо активировать другой скрипт по зажатию кнопки L
код:
--tankmode+ by Scar4ik--

local vk = require "vkeys"

act = 0
key = vk.VK_B

function main()
if not isSampfuncsLoaded() or not isSampLoaded() then return end
while not isSampAvailable() do wait(100) end
sampAddChatMessage("[TANKMODE+ BY SCAR4IK] LOADER", 0xFFFF64)
sampRegisterChatCommand("tank", keys)
while true do
wait(0)
if act == 1 and not sampIsChatInputActive() and not sampIsDialogActive() and not isSampfuncsConsoleActive() then
sampAddChatMessage("TANKMODE+", 0x1DC4C4, wait(30000))
setVirtualKeyDown(key, true)
setVirtualKeyDown(key, false)
end
end
end

function keys()
if act == 0 then
act = 1
else
act = 0
end
end

 

Eugene Crabs

Активный
544
30
Надо сначала Mass[n] = {} присвоить. А только потом уже Mass[n][nn] = 123
Пишет неожиданный символ рядом с "[". (unexpected symbol near '[')

Код, на всякий пожарный:
local Cell = {} -- Что без этого, что с ним - не пашет.
local Cell[1] = {}
local Cell[2] = {}
local Cell[3] = {}
local Cell[4] = {}
local Cell[5] = {}
-- Сюда тоже если поставить 1 строчку - не поможет
 
Последнее редактирование:

paulohardy

вы еще постите говно? тогда я иду к вам
Всефорумный модератор
1,919
1,291
Последнее редактирование:

Thief

Участник
108
12
какая функция есть, где обновляется второй слот для пт? пример: 47-7 - это пт, которые соответственно отображаются, и вот 7 нужно постоянно обновлять при каждом выстреле(типа автоскролл), пробовал через setCharAmmo, но обновляется при нём только 47, а 7-ка убавляется по стандарту.
 

Eugene Crabs

Активный
544
30
Ребят, столкнулся со странной проблемой. Когда я запускаю определенный скрипт, игра просто виснет и не вылетает. В нем много работаю с массивами. Как это решить и из-за чего это может быть? Лог молчит, кстать
 

koncumone

Известный
337
88
Ребят, столкнулся со странной проблемой. Когда я запускаю определенный скрипт, игра просто виснет и не вылетает. В нем много работаю с массивами. Как это решить и из-за чего это может быть? Лог молчит, кстать
может код скинешь?
 

astynk

Известный
Проверенный
741
532
какая функция есть, где обновляется второй слот для пт? пример: 47-7 - это пт, которые соответственно отображаются, и вот 7 нужно постоянно обновлять при каждом выстреле(типа автоскролл), пробовал через setCharAmmo, но обновляется при нём только 47, а 7-ка убавляется по стандарту.
Lua:
giveWeaponToChar(1, getCurrentCharWeapon(1), 0)
Обойма сама обновится.
Пишет неожиданный символ рядом с "[". (unexpected symbol near '[')

Код, на всякий пожарный:
local Cell = {} -- Что без этого, что с ним - не пашет.
local Cell[1] = {}
local Cell[2] = {}
local Cell[3] = {}
local Cell[4] = {}
local Cell[5] = {}
-- Сюда тоже если поставить 1 строчку - не поможет
Во всех строчках, кроме первой, local не нужен.
 

Pheonixxx

Потрачен
263
46
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как в setvirtualkeydown вводить не английскими символами, а при нажатие на их вводить руские?
то есть
вводит /buybiz
как на руское раскладке ввести вместо /buybiz = .игнишя
Lua:
            wait(chatopen.v)
            sampSetChatInputEnabled(true)
            wait(wait1.v)
            setVirtualKeyDown(0x6F, true)
            setVirtualKeyDown(0x6F, false)
            wait(wait2.v)
            setVirtualKeyDown(0x42, true)
            setVirtualKeyDown(0x42, false)
            wait(wait3.v)
            setVirtualKeyDown(0x55, true)
            setVirtualKeyDown(0x55, false)
            wait(wait4.v)
            setVirtualKeyDown(0x59, true)
            setVirtualKeyDown(0x59, false)
            wait(wait5.v)
            setVirtualKeyDown(0x42, true)
            setVirtualKeyDown(0x42, false)
            wait(wait6.v)
            setVirtualKeyDown(0x49, true)
            setVirtualKeyDown(0x49, false)
            wait(wait7.v)
            setVirtualKeyDown(0x5A, true)
            setVirtualKeyDown(0x5A, false)
            wait(enter.v)
            setVirtualKeyDown(key.VK_RETURN, true)
            setVirtualKeyDown(key.VK_RETURN, false)
Еще вопросс
не запускается Гта просто с скриптом.
Lua:
local key = require 'vkeys'
 function main()
     while true do
       if wasKeyPressed(key.VK_X) then
            sampSetChatInputEnabled(true)
            wait(50)
            setVirtualKeyDown(0x6F, true)
            setVirtualKeyDown(0x6F, false)
            wait(90)
            setVirtualKeyDown(0x42, true)
            setVirtualKeyDown(0x42, false)
            wait(30)
            setVirtualKeyDown(0x55, true)
            setVirtualKeyDown(0x55, false)
            wait(90)
            setVirtualKeyDown(0x59, true)
            setVirtualKeyDown(0x59, false)
            wait(150)
            setVirtualKeyDown(0x42, true)
            setVirtualKeyDown(0x42, false)
            wait(32)
            setVirtualKeyDown(0x49, true)
            setVirtualKeyDown(0x49, false)
            wait(90)
            setVirtualKeyDown(0x5A, true)
            setVirtualKeyDown(0x5A, false)
            wait(38)
            setVirtualKeyDown(key.VK_RETURN, true)
            setVirtualKeyDown(key.VK_RETURN, false)
       end
     end
 end
 
Последнее редактирование:

[SA ARZ]

Известный
392
8
крашит в любой моменты игры, сам скрипт луа

crash:
SA-MP 0.3.7
Exception At Address: 0x6F7A5E00
Base: 0x030A0000

Registers:
EAX: 0x00000000    EBX: 0x046001C0    ECX: 0x00000000    EDX: 0x00000000
ESI: 0x0022EDC8    EDI: 0x00000001    EBP: 0x0022EE10    ESP: 0x0022ED6C
EFLAGS: 0x00210206

Stack:
+0000: 0x18117EF4   0x6F7A5D40   0x6F765C02   0x0022EDC8
+0010: 0x18117EF4   0x00000033   0x00000000   0x40498000
+0020: 0x6F737A80   0x046002CC   0x04600D58   0x0000000F
+0030: 0x046001C0   0x047D0076   0x04600D58   0x00000001
+0040: 0x00000001   0x00000001   0x0000000F   0x068390C8
+0050: 0x046001F0   0x04634610   0xB661A218   0x04600D00
+0060: 0x0022EE04   0x6624564A   0xB661A164   0x00000000
+0070: 0x0000000F   0x6F7186C0   0x046001C0   0x6F737A80
+0080: 0x046002CC   0x04600D58   0x046001C0   0x046A70F0
+0090: 0x0022EE28   0x0022EDE8   0x0022EE3C   0x6F82ED20
+00A0: 0x00000000   0x046001C0   0x702E280D   0x046001C0
+00B0: 0x067E69B8   0x0022EE28   0x04600D58   0x0460E588
+00C0: 0x00000002   0x04633238   0x0022EE58   0x6F26F543
+00D0: 0x0022EEF4   0x70304360   0x00000000   0x067E6980
+00E0: 0x046001F0   0x11A790C8   0x702E73EB   0x046001C0
+00F0: 0x00000000   0x00000000   0x00000008   0x046001C0
+0100: 0x0022EF24   0x00000001   0x6F6B9472   0x046001C0
+0110: 0x00000002   0xFFFFFFFF   0x00000001   0x046001C0
+0120: 0x0022EF24   0x0022EF00   0x11A790C8   0x6F7D7C01
+0130: 0x0022EF24   0x0022EF6C   0x0022EF6C   0x00000002
+0140: 0x0022EEE8   0x0022EFC0   0x0730B794   0x11A790C8
+0150: 0x0022F0EC   0x00000000   0x00000000   0x00000000
+0160: 0x00000000   0x00000000   0x00000000   0x00000000
+0170: 0x0022EE84   0x00000000   0x0022EF7C   0x11A790D0
+0180: 0x00000001   0x00000000   0x0022EF7C   0x6F832A69
+0190: 0x00000001   0x0022EF88   0x6F7D82FE   0x0022EF24
+01A0: 0x11A790C8   0x0022EF6C   0x0022EF74   0x33D1FB60
+01B0: 0x01870DD8   0x0730B794   0x02C201C0   0x00000001
+01C0: 0x00000000   0x00000000   0x00000000   0x00000000
+01D0: 0x00000000   0x00000000   0x00000000   0x00000000
+01E0: 0x00000000   0x00000000   0x00000000   0x00000000
+01F0: 0x00000000   0x00000000   0x00000000   0x11A790D8
+0200: 0x0000005D   0x11A790C8   0x0022F28C   0x0022EFC0
+0210: 0x0022EFA8   0x6F832AC0   0xFFFFFFFF   0x0022EFB4
+0220: 0x6F6C6FAC   0x01870DD8   0x33D1FB60   0x0730B794
+0230: 0x00001F80   0x00000010   0x0022EF90   0x0022F00C
+0240: 0x6F82AEA8   0x00000001   0x0022F018   0x6F7D94EC
+0250: 0x6F84DB68   0x0730B794   0x33D1FB68   0x0022F00B
+0260: 0xFFF7FFFF   0x0022F00C   0x0022F00C   0x6F82A390
+0270: 0xFFFFFFFF   0x0022EFBC   0x18117EF4   0x712F3070

SCM Op: 0x685, lDbg: 0 LastRendObj: 3857

Game Version: US 1.0

State Information: Ped Context: 0
P0 (0,0) P1 (0,0) P2 (0,0) P3 (0,0)
P4 (0,0) P5 (0,0) P6 (0,0) P7 (0,0)
P8 (0,0) P9 (0,0) P10 (0,0) P11 (0,0)
P12 (0,0) P13 (0,0) P14 (0,0) P16 (0,0) P17 (0,0) P18 (0,0) P19 (0,0)
P20 (0,0) P21 (0,0) P22 (0,0) P23 (0,0)
P24 (0,0) P25 (0,0) P26 (0,0) P28 (0,0) P29 (0,0) P30 (0,0) P31 (0,0)
P32 (0,0) P33 (0,0) P34 (0,0) P35 (0,0)
P36 (0,0) P37 (32,0) P38 (0,0) P39 (0,0)
P40 (0,0) P41 (0,0) P42 (0,0) P43 (0,0)
P44 (0,0) P45 (0,0) P46 (0,0) P47 (0,0)
P48 (0,0) P49 (0,0) P50 (0,0) P52 (0,0) P53 (0,0) P54 (0,0) P55 (0,0)
P56 (0,0) P57 (0,0) P58 (0,0) P59 (0,0)
P60 (0,0) P61 (0,0) P62 (0,0) P63 (0,0)
P64 (0,0) P65 (0,0) P66 (32,0) P67 (0,0)
P68 (0,0) P69 (0,0) P70 (0,0) P71 (17,0)
P72 (0,0) P73 (0,0) P74 (0,0) P75 (32,0)
P76 (32,0) P77 (32,0) P78 (0,0) P79 (0,0)
P80 (0,0) P81 (0,0) P82 (0,0) P83 (0,0)
P84 (0,0) P85 (0,0) P86 (0,0) P87 (0,0)
P88 (0,0) P89 (0,0) P90 (32,0) P91 (17,0)
P92 (0,0) P93 (0,0) P94 (0,0) P95 (0,0)
P96 (0,0) P97 (0,0) P98 (0,0) P99 (0,0)
P100 (17,0) P101 (0,0) P102 (0,0) P103 (0,0)
P104 (0,0) P105 (32,0) P106 (0,0) P107 (0,0)
P108 (0,0) P109 (0,0) P110 (32,0) P111 (32,0)
P112 (0,0) P113 (0,0) P114 (0,0) P115 (0,0)
P116 (0,0) P117 (0,0) P118 (0,0) P119 (0,0)
P120 (0,0) P121 (0,0) P123 (0,0)
P124 (0,0) P125 (0,0) P126 (0,0) P127 (0,0)
P128 (0,0) P129 (0,0) P130 (0,0) P131 (0,0)
P132 (32,0) P133 (0,0) P134 (0,0) P135 (0,0)
P136 (32,0) P137 (0,0) P138 (0,0) P139 (32,0)
P140 (0,0) P141 (0,0) P142 (32,0) P143 (0,0)
P144 (0,0) P145 (0,0) P146 (0,0) P147 (0,0)
P148 (0,0) P149 (0,0) P150 (0,0) P151 (0,0)
P152 (0,0) P153 (0,0) P154 (32,0) P155 (0,0)
P156 (0,0) P157 (32,0) P158 (0,0) P159 (0,0)
P160 (0,0) P161 (0,0) P162 (0,0) P163 (0,0)
P164 (0,0) P165 (0,0) P166 (0,0) P167 (0,0)
P168 (0,0) P169 (0,0) P170 (0,0) P171 (32,0)
P172 (0,0) P173 (0,0) P174 (0,0) P175 (0,0)
P176 (0,0) P177 (32,0) P179 (0,0)
P180 (0,0) P181 (0,0) P182 (0,0) P183 (0,0)
P184 (0,0) P185 (0,0) P186 (32,0) P187 (0,0)
P188 (0,0) P189 (0,0) P190 (0,0) P191 (0,0)
P192 (0,0) P193 (0,0) P194 (0,0) P195 (0,0)
P196 (0,0) P197 (0,0) P198 (0,0) P199 (0,0)
P200 (0,0) P201 (0,0) P202 (0,0) P203 (0,0)
P204 (32,0) P205 (0,0) P206 (0,0) P207 (0,0)
P208 (0,0) P209 (0,0) P210 (0,0) P211 (0,0)
P213 (0,0) P214 (0,0) P215 (0,0)
P217 (0,0) P218 (0,0) P219 (0,0)
P220 (0,0) P221 (0,0) P222 (0,0) P223 (0,0)
P224 (32,0) P225 (0,0) P226 (0,0) P228 (0,0) P229 (0,0) P230 (0,0) P231 (0,0)
P232 (0,0) P233 (0,0) P234 (0,0) P235 (0,0)
P237 (0,0) P238 (0,0) P240 (0,0) P242 (0,0) P243 (0,0)
P244 (0,0) P245 (0,0) P246 (0,0) P247 (0,0)
P248 (0,0) P250 (0,0) P251 (0,0)
P252 (0,0) P255 (0,0)
P256 (0,0) P257 (0,0) P258 (0,0) P259 (32,0)
P260 (32,0) P261 (0,0) P262 (0,0) P263 (0,0)
P265 (0,0) P266 (0,0) P267 (0,0)
P268 (0,0) P269 (0,0) P270 (0,0) P271 (0,0)
P272 (0,0) P273 (0,0) P274 (0,0) P275 (0,0)
P276 (0,0) P277 (0,0) P278 (32,0) P280 (0,0) P281 (0,0) P282 (0,0) P283 (0,0)
P284 (17,0) P286 (0,0) P287 (0,0)
P288 (0,0) P289 (0,0) P290 (0,0) P291 (0,0)
P292 (0,0) P293 (0,0) P294 (0,0) P296 (0,0) P297 (0,0) P298 (0,0) P299 (0,0)
P300 (0,0) P301 (0,0) P302 (0,0) P303 (0,0)
P304 (32,0) P305 (0,0) P307 (0,0)
P308 (0,0) P309 (0,0) P310 (32,0) P311 (0,0)
P312 (32,0) P313 (0,0) P314 (0,0) P315 (0,0)
P316 (0,0) P317 (0,0) P318 (0,0) P319 (0,0)
P320 (0,0) P321 (0,0) P322 (0,0) P323 (0,0)
P324 (17,0) P325 (0,0) P326 (0,0) P327 (0,0)
P328 (0,0) P329 (0,0) P330 (0,0) P331 (0,0)
P332 (0,0) P333 (0,0) P334 (0,0) P335 (0,0)
P336 (32,0) P337 (0,0) P338 (0,0) P339 (0,0)
P343 (0,0)
P344 (0,0) P345 (0,0) P346 (0,0) P349 (0,0) P350 (0,0) P351 (0,0)
P352 (0,0) P353 (0,0) P354 (0,0) P356 (0,0) P358 (0,0) P364 (0,0) P365 (0,0) P367 (0,0)
P369 (0,0) P370 (0,0) P371 (0,0)
P373 (0,0) P374 (0,0) P375 (0,0)
P376 (0,0) P380 (0,0) P381 (0,0) P382 (0,0) P386 (0,0) P387 (0,0)
P389 (0,0) P391 (0,0)
P392 (0,0) P393 (0,0) P394 (0,0) P400 (0,0) P402 (0,0) P403 (0,0)
P404 (0,0) P405 (0,0) P407 (0,0)
P408 (0,0) P409 (0,0) P411 (0,0)
P413 (0,0) P417 (32,0) P418 (0,0) P425 (0,0) P426 (0,0) P428 (0,0) P433 (0,0) P435 (0,0)
P439 (0,0)
P441 (0,0) P443 (0,0)
P448 (0,0) P455 (0,0)
P460 (0,0) P466 (0,0) P479 (0,0)
 

paulohardy

вы еще постите говно? тогда я иду к вам
Всефорумный модератор
1,919
1,291
Какими функциями можно читать vector3d, compressedVector и normQuat в bitstream?
 

atomlin

Известный
587
449
При активации скрипта - пишет что скрипт активирован но ничего дальше не происходит. (варнингов нету)


Lua:
script_name('CheckPoint-BOT')
script_author('atomlin')
script_version('0.1')
script_version_number(1)

local sampev   = require 'lib.samp.events'
local inicfg   = require 'inicfg'
local imgui   = require 'imgui'
local imadd    = require 'imgui_addons'
local encoding = require 'encoding'
local effil    = require 'effil'
local memory   = require 'memory'
local rkeys    = require 'rkeys'
local vkeys    = require 'vkeys'
local coord = false
local ret_posX = 0.0
local ret_posY = 0.0
local ret_posZ = 0.0
local isFind = false

function main()
    while not isSampAvailable() do wait(100) end   
    sampAddChatMessage("[CheckPoint-BOT]: Автор скрипта - atomlin", 0xFFFFFF)
    sampAddChatMessage("[CheckPoint-BOT]: Последнее обновление: 09.01.2020", 0xFFFFFF)
    sampRegisterChatCommand("snejinka", function() coord = not coord sampAddChatMessage(coord and "[CheckPoint-BOT]: Включен. " or "[CheckPoint-BOT]: Выключен.", 0xFFFFFF)
    end)
end


function sneg()
    while true do
    wait(0)
        if coord then
            if getDistanceBetweenCoords3d(blipX, blipY, charPosZ, charPosX, charPosY, charPosZ) > 10.98 then
            charPosX, charPosY, charPosZ = getCharCoordinates(PLAYER_PED)
            vectorX = blipX - charPosX
            vectorY = blipY - charPosY
            vectorZ = blipZ - charPosZ
                    local vec = vector(vectorX, vectorY, vectorZ)
                    vec:normalize()
                    charPosX = charPosX + vec.x * 3
                    charPosY= charPosY + vec.y * 3
                    setCharCoordinates(PLAYER_PED, charPosX, charPosY, charPosZ)
                else
                    coord = false
                    setCharCoordinates(PLAYER_PED, blipX, blipY, blipZ)
                end
            end
        end
    end


function sampev.onSendVehicleSync(data)
            local speed = data.moveSpeed
        if coord then
            speed.x = 0
            speed.y = 0
            speed.z = -1
            data.position.z = -2
            setVehicleQuaternion(Vehicle_car, sasa, sasaj, sasak, sasal)
        else
            local X, Y, Z = getCharCoordinates(PLAYER_PED)
            while Z ~= data.position.z do
            data.position.z = data.position.z + 1
            X, Y, Z = getCharCoordinates(PLAYER_PED)
        end
    end
end

function SearchMarker(posX, posY, posZ)
    local ret_posX = 0.0
        local ret_posY = 0.0
            local ret_posZ = 0.0
                local isFind = false
                for id2 = 0, 31 do
                local MarkerStruct = 0
                MarkerStruct = 0xC7F168 + id2 * 56
                local MarkerPosX = representIntAsFloat(readMemory(MarkerStruct + 0, 4, false))
                local MarkerPosY = representIntAsFloat(readMemory(MarkerStruct + 4, 4, false))
                local MarkerPosZ = representIntAsFloat(readMemory(MarkerStruct + 8, 4, false))
                if MarkerPosX ~= 0.0 or MarkerPosY ~= 0.0 or MarkerPosZ ~= 0.0 then
                bool, blipX, blipY, blipZ = SearchMarker(posX, posY, posZ)
                ret_posX = MarkerPosX
                ret_posY = MarkerPosY
                ret_posZ = MarkerPosZ
                isFind = true
            end
        end
    return isFind, ret_posX, ret_posY, ret_posZ
end