assert

Lance_Sterling

Известный
Автор темы
802
284
Версия MoonLoader
.026-beta
где то видел что опытные скриптеры болтали, и говорили что для подргрузки библиотек надо юзать на pcall а assert, и что pcall говно ебаное, так обясните чо за assert и как его юзать
 
Решение
pcall я и так знал, дайте пример assert пж
ассерт крашит скрипт если первый аргумент будет равен false или nilю В качестве ошибки будет указан второй аргумент.
пример:
1680180883706.png

1680180910382.png

Lua:
local SkinColor = {
    White = 0,
    Black = 1
}
local userSkinColor = SkinColor.White
assert(userSkinColor == SkinColor.White, 'WASSUP N1993R')
print('ok!')

Можно уведомлять пользователя об отсутствии библиотеки с помощью pcall, assert и ShowMessageBoxA.
1680181364661.png

Lua:
local ffi = require('ffi')
ffi.cdef([[
    typedef struct { float x, y, z; } CVector;
    int MessageBoxA(
        void* hWnd,
        const char* lpText,
        const char* lpCaption,
        unsigned int uType
    );
]])

req, require = require, function(str...
D

deleted-user-422095

Гость
Если просто,
pcall позволяет использовать скрипт если произошла ошибка в функции(за исключением некоторых по типу processLineOfSight в которых косяк самого муна)
assert крашит скрипт и пишет текст который установлен скриптом, а не обработчиком ошибок
 

Lance_Sterling

Известный
Автор темы
802
284
Если просто,
pcall позволяет использовать скрипт если произошла ошибка в функции(за исключением некоторых по типу processLineOfSight в которых косяк самого муна)
assert крашит скрипт и пишет текст который установлен скриптом, а не обработчиком ошибок
pcall я и так знал, дайте пример assert пж
 

Lance_Sterling

Известный
Автор темы
802
284

Upd
Хотя возможно я обосрался. https://www.blast.hk/threads/25362/


Проверьте кто-нибудь по схеме выше
А куда ошибка идёт?
 

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,776
11,226
pcall я и так знал, дайте пример assert пж
ассерт крашит скрипт если первый аргумент будет равен false или nilю В качестве ошибки будет указан второй аргумент.
пример:
1680180883706.png

1680180910382.png

Lua:
local SkinColor = {
    White = 0,
    Black = 1
}
local userSkinColor = SkinColor.White
assert(userSkinColor == SkinColor.White, 'WASSUP N1993R')
print('ok!')

Можно уведомлять пользователя об отсутствии библиотеки с помощью pcall, assert и ShowMessageBoxA.
1680181364661.png

Lua:
local ffi = require('ffi')
ffi.cdef([[
    typedef struct { float x, y, z; } CVector;
    int MessageBoxA(
        void* hWnd,
        const char* lpText,
        const char* lpCaption,
        unsigned int uType
    );
]])

req, require = require, function(str, downloadUrl, openurl)
    local result, data = pcall(req, str)
    if not result then
        ffi.C.MessageBoxA(ffi.cast('void*', 0--[[readMemory(0x00C8CF88, 4, false)]]), ('Error, lib "%s" not found. Download: %s\n\nvk.com/chaposcripts'):format(str, downloadUrl or 'ссылка не найдена', str, downloadUrl or 'ссылка не найдена'), 'Ошибка', 0x50000)
        if downloadUrl then
            os.execute('explorer "'..downloadUrl..'"')
        end
        error('Lib '..str..' not found!')
    end
    return data
end

local a = require('myLib')
 
Последнее редактирование:

Lance_Sterling

Известный
Автор темы
802
284
ассерт крашит скрипт если первый аргумент будет равен false или nilю В качестве ошибки будет указан второй аргумент.
пример:
Посмотреть вложение 195525
Посмотреть вложение 195526
Lua:
local SkinColor = {
    White = 0,
    Black = 1
}
local userSkinColor = SkinColor.White
assert(userSkinColor == SkinColor.White, 'WASSUP N1993R')
print('ok!')

Можно уведомлять пользователя об отсутствии библиотеки с помощью pcall, assert и ShowMessageBoxA.
Посмотреть вложение 195532
Lua:
local ffi = require('ffi')
ffi.cdef([[
    typedef struct { float x, y, z; } CVector;
    int MessageBoxA(
        void* hWnd,
        const char* lpText,
        const char* lpCaption,
        unsigned int uType
    );
]])

req, require = require, function(str, downloadUrl, openurl)
    local result, data = pcall(req, str)
    if not result then
        ffi.C.MessageBoxA(ffi.cast('void*', 0--[[readMemory(0x00C8CF88, 4, false)]]), ('Error, lib "%s" not found. Download: %s\n\nvk.com/chaposcripts'):format(str, downloadUrl or 'ссылка не найдена', str, downloadUrl or 'ссылка не найдена'), 'Ошибка', 0x50000)
        if downloadUrl then
            os.execute('explorer "'..downloadUrl..'"')
        end
        error('Lib '..str..' not found!')
    end
    return data
end

local a = require('myLib')
Я конечно не эксперт ко по моему тут нет assert