Исходник Аналог lua_thread для RakBot, wait() и DefCall без крашей

kizn

\ 0 _ 0 /
Всефорумный модератор
2,407
2,108
Посмотреть вложение 94917

Lua:
function func()
    while true do Tasking.wait(0)
        for i=1, #massiv do
            repeat Tasking.wait(0) until chekd -- появляется как доходит до этой строки (поменял на repeat но всё равно не помогло)
            repeat Tasking.wait(0) until chekd2
        end
        Tasking.wait(300000)
    end
end
Напиши письменно чего ты пытаешься добиться этой функцией
 

Dark_Knight

Me, me and me.
Друг
4,085
2,114
Написать как оно должно работать с кодом внутри?
Да. Потому что по коду оно работает как надо все. Опиши словами как ты хочешь чтобы оно работало и хочешь ли ты чтобы работало в основном потоке или в отдельном?
 

Dozor

Потрачен
359
143
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Пытаюсь использовать Tasking.wait, ракбот выдает такую ошибку
[12:33:38] [ERROR] Ошибка скрипта "test.lua": ...\Desktop\RAKBOT~1.1\RAKBOT~1.1\/scripts/libs/Tasking.lua:3: attempt to yield across C-call boundary
[12:33:38] [ERROR] stack traceback:
[12:33:38] [ERROR] [C]: in function 'yield'
[12:33:38] [ERROR] ...\Desktop\RAKBOT~1.1\RAKBOT~1.1\/scripts/libs/Tasking.lua:3: in function 'wait'
[12:33:38] [ERROR] ...sers\Vlad\Desktop\RAKBOT~1.1\RAKBOT~1.1\scripts\test.lua:10: in function <...sers\Vlad\Desktop\RAKBOT~1.1\RAKBOT~1.1\scripts\test.lua:7>
В чём может быть проблема?
Прикрепил тестовый скрипт.. Я новичок в луа, мб что-то не то делаю!
 

Вложения

  • test.lua
    463 байт · Просмотры: 32

kizn

\ 0 _ 0 /
Всефорумный модератор
2,407
2,108
Пытаюсь использовать Tasking.wait, ракбот выдает такую ошибку
[12:33:38] [ERROR] Ошибка скрипта "test.lua": ...\Desktop\RAKBOT~1.1\RAKBOT~1.1\/scripts/libs/Tasking.lua:3: attempt to yield across C-call boundary
[12:33:38] [ERROR] stack traceback:
[12:33:38] [ERROR] [C]: in function 'yield'
[12:33:38] [ERROR] ...\Desktop\RAKBOT~1.1\RAKBOT~1.1\/scripts/libs/Tasking.lua:3: in function 'wait'
[12:33:38] [ERROR] ...sers\Vlad\Desktop\RAKBOT~1.1\RAKBOT~1.1\scripts\test.lua:10: in function <...sers\Vlad\Desktop\RAKBOT~1.1\RAKBOT~1.1\scripts\test.lua:7>
В чём может быть проблема?
Прикрепил тестовый скрипт.. Я новичок в луа, мб что-то не то делаю!
нужно юзать внутри Tasking.new
 

Dozor

Потрачен
359
143
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Последнее редактирование:

VasilyRivas

Участник
41
6
юзай tasking.new внутри onspawned лол
А сможешь показать пример Tasking.remove(Task task) ? После onSpawned 1 задача наслаивается на 2 если во время выполнения первой бот умер. Я конечно как настоящий орк пофиксил это перезагрузкой скриптов, но хочется понять как эта штука работает у людей
 

kizn

\ 0 _ 0 /
Всефорумный модератор
2,407
2,108
А сможешь показать пример Tasking.remove(Task task) ? После onSpawned 1 задача наслаивается на 2 если во время выполнения первой бот умер. Я конечно как настоящий орк пофиксил это перезагрузкой скриптов, но хочется понять как эта штука работает у людей
Lua:
variable = Tasking.new(....)

Tasking.remove(variable) -- хоть где
 
  • Нравится
Реакции: VasilyRivas

VasilyRivas

Участник
41
6
Lua:
variable = Tasking.new(....)

Tasking.remove(variable) -- хоть где
Да, но как нам сделать remove такого таска если он не имеет названия и используется например вот так после OnSpawned. Т.е как дать понять remov`y кого конкретно нужно вырубить?
Tasking (RakBot):
Tasking.new(function()
    printLog("hello")
    Tasking.wait(1000)
    printLog("hello after 1 second")
    Tasking.wait(2000)
    printLog("goodbye after 2 seconds")
end, false)

onScriptUpdate = Tasking.tick
 

kizn

\ 0 _ 0 /
Всефорумный модератор
2,407
2,108
Да, но как нам сделать remove такого таска если он не имеет названия и используется например вот так после OnSpawned. Т.е как дать понять remov`y кого конкретно нужно вырубить?
ну дай название епт
 
  • Ха-ха
Реакции: user390868

VasilyRivas

Участник
41
6
ну дай название епт
Так я и интересуюсь. Как правильно дать название области после onSpawned, чтобы можно было её ремувнуть при возникновении другого события?
Lua:
function onSpawned(x, y, z)
    Tasking.new(function()
    printLog('1')
    Tasking.wait(2000)
    printLog('2')
    end, false)
end
 

Dozor

Потрачен
359
143
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Lua:
function onSpawned(x, y, z)
    variable = Tasking.new(function()
    printLog('1')
    Tasking.wait(2000)
    printLog('2')
    end, false)
end
 
  • Нравится
Реакции: VasilyRivas