Lua [RakBot] OnFoot/InCar Route Recording System

VasilyRivas

Участник
41
6
Врешь и не краснеешь!
Я бы рад врать, но у меня именно так. Ставлю на задержку после активации 10-15 сек и вылет
\
upd
Ошибка была во мне, а точнее в неправильной кодирке при написании скриптов.
Всё работает, но до сих пор бывают вылеты если один маршрут начинается не пока не завершился другой
 
Последнее редактирование:

#kweeZ

Известный
577
122
Была проблема тем, что когда чекал координаты при нахождении на чекпоинте, если бот не отправил все пакеты, и юзалась sendPickup, то при перемещении в интерьер бота кикало, добавил после counter = 1 вывод в лог обозначающий, что закончили отправляться пакеты, и чекал в своем скрипте через onPrintLog, может кому-то пригодиться
 

_raz0r

t.me/sssecretway | ТГК: t.me/razor_code
Модератор
1,888
3,048
Была проблема тем, что когда чекал координаты при нахождении на чекпоинте, если бот не отправил все пакеты, и юзалась sendPickup, то при перемещении в интерьер бота кикало, добавил после counter = 1 вывод в лог обозначающий, что закончили отправляться пакеты, и чекал в своем скрипте через onPrintLog, может кому-то пригодиться
можно было event создать отдельный, к примеру onRouteFinished и там чекать
 

Fluffy1560

Активный
268
33
Крашит при попытке лупа

Lua:
package.path = getRakBotPath().."/scripts/libs/?.lua;"..getRakBotPath().."/scripts/libs/?/init.lua;";
package.cpath = getRakBotPath().."/scripts/libs/?.dll";
require("getrpc")
grx = -1891,67
gry = -1677,37
grz = 23
gr = 0
payment = 1
i = 2
function onRunCommand(cmd)
  defCallAdd(1000, false, function ()
    if cmd:find("!mn%s+(.+)") then
    number = cmd:match('!mn%s+(.+)')
    number = tonumber(number)
    coordMasterStart(grx, gry, grz)
    gr = 1
end
end)
if cmd == "!dfs" then
gr = 0
end end
function onTextDrawSetString(textid, text)
        if textid == 2191 and (gr >= 1) then
         local payment = text:find("PAYMENT:_~Y~$(.+)")
         printLog('text'..text)
         payment = text:match('$(.+)')
         payment = tonumber(payment)
         printLog("Заработано: $"..payment)
        if (payment > number) and (gr == 3) then
         printLog('Закончил, иду сдавать')
         runCommand('!stop')
         sendPickup(pick1318, false)
         defCallAdd(2000, false, function()
         sendPickup(pic1275, false)
         gr = 0
        end)
        else
        printLog('Работаю дальше')
      end
      end
      end
function onCoordMasterComplete()
   local botskin = getSkin()
   local pic1275 = getPick1275()
   local x, y, z = getPosition()
   local drx = -1891
   local dry = -1681
   local drz = -5,6
   local mx = -1968
   local my = -1555
   local mz = 7
   px = -1893,90
   py = -1675,20
   pz = 23
   local pick1318 = getPick1318()
  if (botskin ~= 16) and (gr == 1) then
    sendPickup(pic1275, false)
    botskin = 16
    teleport(px, py, pz)
    end
    if gr == 3 then
     runCommand('!play min')
     runCommand('!loop')
    end
end
function onSetSkin(playerid, skinid)
local botid = getBotId()
local pick1318 = getPick1318()
if (playerid == botid) and (skinid == 16) and (gr == 1) then
  defCallAdd(1000, false, function()
  sendPickup(pick1318, false)
  gr = 2
  end)
end
end
function onPrintLog(str)
if str:find('Администратор (.+) ответил') and (gr >= 1) then
defCallAdd(5000, false, function()
runCommand("!quit")
end)
end
function onSetInterior(InteriorId)
 inter = getInteriorId()
   local drx = -1891
   local dry = -1681
   local drz = -5
 if (gr == 2) and (inter == 1) then
 coordMasterStart(drx, dry, drz)
 gr = 3
 end
end
end
 
D

deleted-user-453401

Гость
1637262187609.png
из-за чего может быть?
 
D

deleted-user-453401

Гость
Дело в том, что в самом ракботе нет такой команды, а скрипт её распознал, как свою. Не пугайся, воспроизведение идёт.
братец, я понимаю, что такое может быть, но первая строка (команда не обнаружена) - вызвал сам скрипт,т.е runCommand
второе - я сам уже прописал !play ls1.1 , оно нашло эту команду
 
D

deleted-user-453401

Гость
return true в конце поставь и ок все будет
я код уже просрал, сейчас попробую восстановить и проверить :)

return true в конце поставь и ок все будет
Я не понимаю что я не так делаю. просто не реагирует на то, что бот на нужных координатах


аввы:
 function onSendPacket(id, data, size)
       if id == 207 then
      local bs = bitStreamInit(data, size)
      local pid = bitStreamReadByte(bs)
      local lrKey = bitStreamReadWord(bs)
      local udKey = bitStreamReadWord(bs)
      local keys = bitStreamReadWord(bs)
      local x = bitStreamReadFloat(bs)
      local y = bitStreamReadFloat(bs)
      local z = bitStreamReadFloat(bs)
      bitStreamDelete(bs)
    
     if x >= 2145 and x <= 2150 then
    defCallAdd(5000, false, function() runCommand ('!play ls1.1') end)
end
end

return true в конце поставь и ок все будет

return true в конце поставь и ок все будет
не помогло
 
Последнее редактирование модератором:

vegas

Известный
637
444
я код уже просрал, сейчас попробую восстановить и проверить :)


Я не понимаю что я не так делаю. просто не реагирует на то, что бот на нужных координатах


аввы:
 function onSendPacket(id, data, size)
       if id == 207 then
      local bs = bitStreamInit(data, size)
      local pid = bitStreamReadByte(bs)
      local lrKey = bitStreamReadWord(bs)
      local udKey = bitStreamReadWord(bs)
      local keys = bitStreamReadWord(bs)
      local x = bitStreamReadFloat(bs)
      local y = bitStreamReadFloat(bs)
      local z = bitStreamReadFloat(bs)
      bitStreamDelete(bs)
   
     if x >= 2145 and x <= 2150 then
    defCallAdd(5000, false, function() runCommand ('!play ls1.1') end)
end
end




не помогло
Код покажи