D
В любом случае, нсак движется в правильном направлении. Как минимум, каждый компонент чита лежит в своём файле, это уже прогресс. При такой структуре легко редактировать, просматривать, добавлять, удалять, как для дева, так и для юзера. Реализация модулей конечно слегка странноватая для меня, условный отход в ООP (классы - можно юзануть либу class.lua; интерфейсы - накодить свои) с элементами EOP (Event-oriented programming), который тут используется (init.addEvent), был бы презентабельнее.Насчёт положения текста и слайдера, я так и хотел сделать, но места замного как по мне (я уже переделывал менюшку неверлуза на сампич), возможно если элементы увеличить или менюху уменьшить, то норм будет, блоки тож хотел сделать, но у мя в этой версии слишком говнокодная менюшка, и блоки хуевато с ней делать, лучше переписать принцип отрисовочки и позиционирования элементов весь, делал на спешку
local MODULE = {
_NAME = "class.lua",
_VERSION = "1.0.0",
_AUTHOR = "Musaigen"
}
-- Input/Output
local io = {
Context = {},
ContextName,
ContextFrontend,
}
local function search(list, value, keycheck)
-- When null, return.
if not (list) then
return false, -1
end
--
assert(type(list) == "table")
--
for k, v in pairs(list) do
if (keycheck) then
v = k
end
if (value == v) then
return true, k
end
end
return false, -1
end
--
local function proxify_function(ctx, fun)
return function(...)
-- Pop out `self` arg.
local args = {...}
if (args[1] == ctx.CurrentObject) then
table.remove(args, 1)
end
-- Push new this into the chain.
table.insert(ctx.Chain, this)
-- Set new this.
this = ctx.CurrentObject
-- Call proxified function.
local out = { fun(table.unpack(args)) }
-- Restore old this from chain.
this = ctx.Chain[#ctx.Chain]
-- Remove this entry.
table.remove(ctx.Chain, #ctx.Chain)
-- Unpack returned parameters.
return table.unpack(out)
end
end
--
local function create_context(name)
local context = {
Fields = {},
Methods = {},
Metamethods = {},
Chain = {},
CurrentObject = {},
}
--
return setmetatable(context, {
__newindex = function(self, key, value)
if (type(value) == "function") then
local list = (type(key) == "string") and
((key:sub(1, 2) == "__") and (self.Metamethods)) or (self.Methods)
rawset(list, key, proxify_function(context, value))
else
rawset(self.Fields, key, value)
end
end
})
end
--
local function create_frontend(name)
local frontend = {}
--
local function index_methods(self, key)
io.Context[name].CurrentObject = self
--
return (io.Context[name].Methods[key] or rawget(frontend, key))
end
--
local function tostring_class()
return name
end
--
local function construct_instance(self, ...)
local metatable = {
__index = index_methods,
__tostring = tostring_class,
}
for key, value in pairs(io.Context[name].Metamethods) do
if (key == "__index") then
metatable[key] = function(self, key)
local orig = index_methods(self, key)
-- All meta is proxified, so don't throw `self`
return value(key, orig)
end
else
metatable[key] = value
end
end
--
local instance = setmetatable({}, metatable)
--
for key, value in pairs(io.Context[name].Fields) do
instance[key] = value
end
if (instance[name]) then
instance[name](instance, ...)
end
--
return instance
end
--
return setmetatable(frontend, {
__call = construct_instance,
__tostring = tostring_class,
})
end
--
local function field(name)
assert(name)
assert(type(name) == "string")
assert(#name > 0)
assert(not search(io.ContextBackend.Fields, name, true))
--
io.ContextBackend[name] = nil
--
return function(entry)
assert(entry)
assert(type(entry) == "table")
--
io.ContextBackend[name] = entry[1]
end
end
--
local function method(name)
assert(name)
assert(type(name) == "string")
assert(#name > 0)
assert(not search(io.ContextBackend.Methods, name, true))
--
io.ContextBackend[name] = nil
--
return function(entry)
assert(entry)
assert(type(entry) == "table")
assert(type(entry[1]) == "function")
--
io.ContextBackend[name] = entry[1]
end
end
--
local function constructor(entry)
assert(entry)
assert(type(entry) == "table")
assert(type(entry[1] == "function"))
--
io.ContextBackend[io.ContextName] = entry[1]
end
--
local function class(name)
assert(name)
assert(type(name) == "string")
assert(#name > 0)
assert(not search(io.Context, name, true))
local localized = (name:sub(1, 1) == "@")
if (localized) then
name = name:sub(2, #name)
end
--
io.ContextName = name
--
io.Context[name] = create_context(io.ContextName)
io.ContextFrontend = create_frontend(io.ContextName)
--
io.ContextBackend = io.Context[name]
-- Globalize this *****.
if not (localized) then
_G[name] = io.ContextFrontend
end
--
return function()
-- Returning dummy function to make syntax sugar available.
if (localized) then
return io.ContextFrontend
end
end
end
--
local function extends(entry)
assert(entry)
assert(type(entry) == "table")
assert(#entry > 0)
local function clone(from, method)
for key, value in pairs(from) do
method(key) { value }
end
end
--
for key, parent in pairs(entry) do
local name = tostring(parent)
local ctx = io.Context[name]
if (ctx) then
clone(ctx.Fields, field)
clone(ctx.Methods, method)
end
end
end
class "B" {
method "test" {
function()
print(this)
end
}
}
class "A" {
extends { B },
field "pepe" { 0 },
constructor {
function()
print("ctor")
end
},
method "bebra" {
function()
this.test()
end
}
}
local a = A() -- ctor
a.bebra() -- table: ...
class "ModuleManager" {
method "Add" {
function(mod)
table.insert(this.Mods, mod(this))
end
}
}
class "Mod" {}
class "Aim" {
extends { Mod },
constructor {
function(mm)
mm.Events.Subscribe("onGameUpdate", this._SearchEnemies)
-- и т.д
end
}
}
-- init.lua / main.lua, etc..
core.moduleManager = ModuleManager()
core.moduleManager.Add(Aim)
Самп! = Аризона. По этому зацикливаться на ней было бы убийством для идеи в её зарождении. Другой момент что это можно было бы реализовать доп модулями, причём могли бы кодеры реализовать под нужный проект. Ну и ботмейкер уже был от SR_team'a.BotMaker откровенно сыроват на фоне своих старших братьев. Скрипт, который был написан с денежной мотивацией должен обладать намного, намного более обширным функционалом для ботостроения, вплоть до работы с аризоновскими CEF событиями. Нужно больше золота.
Именно поэтому в проектах, где потенциально может быть большой масштаб, подход, применённый в neversuck - вытягивает на иной уровень, вплоть до собственных модификаций, где просто добавляются новые функции для бот-мейкерства, либо полная адаптация под конкретный сервер с обработкой всех кастомных серверных пакетов.Самп! = Аризона. По этому зацикливаться на ней было бы убийством для идеи в её зарождении. Другой момент что это можно было бы реализовать доп модулями, причём могли бы кодеры реализовать под нужный проект. Ну и ботмейкер уже был от SR_team'a.
я просто в ахуе от отзывов людей, которые сами вроде делали какие-то плагины, а значит должны понимать примерную сложность той или иной задачи. как можно не увидеть уникальности в моем проекте, который основан на том, что никто раньше никогда не трогал, это просто пиздец. это уже похоже на организованный троллинг.Идея не нова, вроде как, но и скрипт на уникальность не претендует.
Сложность != уникальность. По методу А* хоть и куча гайдов в интернете, но написать и адаптировать под SAMP тоже требует времени, как и решить проблему со соотношением сторон.я просто в ахуе от отзывов людей, которые сами вроде делали какие-то плагины, а значит должны понимать примерную сложность той или иной задачи. как можно не увидеть уникальности в моем проекте, который основан на том, что никто раньше никогда не трогал, это просто пиздец. это уже похоже на организованный троллинг.
мне вот рей тоже говорил про низкую сложность задачи определения линии прицела. а потом я зашел в его терминатор и там банально не работает наводка на координаты, потому что она не учитывает существование проблемы соотношения сторон, на поиск решения которой я убил 20 часов времени. это просто смешно. и что мне в растянутом 4:3 убивать людей аимботом?
я уже въебал 80 часов на этот проект и не буду сильно бомбить, но могу сказать, что терминатор мне кажется куда более тривиальной задачей по сложности разработки, чем рэйф. ботмейкера я бы написал быстрее, чем у меня занял экспорт и подбор ассетов из апекса. потому что там даже ветвления нет, это круд простых ботов с интерфейсом на imgui+fontawesome.
потому что всё это хорошо изученные тривиальные штуки, которые нужно просто связать между собой, в то время как с соотношением сторон никто никогда ничего не делал и не задокументировал, и мне пришлось сидеть и тупить огромное количество времени.
Когда увидел что началось после оглашения результатов:Когда увидел результаты...
Посмотреть вложение 225953
https://www.blast.hk/threads/198256/ = уникальностьСложность != уникальность. По методу А* хоть и куча гайдов в интернете, но написать и адаптировать под SAMP тоже требует времени, как и решить проблему со соотношением сторон.
Победители:
- Лучшая модификация с эксклюзивной идеей — 1702,4 $ (155.400 ₽) - SAMP VR - Виртуальная реальность для сампика
- Лучший чит с эксклюзивной идеей — 584,69 $ (52.523₽)- Terminator
- Проект с уникальной идеей — 1592 $ (145.300 ₽) - SAMP-Seabattle | Морской бой теперь в SAMP!
- Лучший вредительский чит — 498 $ (45.618 ₽) - NeverSuck (Alpha 0.2) - уникальный софт для развлечений и повседневной игры
- Лучшая полезная модификация — 1591,08 $ (145.200 ₽) - Custom Radar / Создай свой радар
- Лучший вспомогательный чит — 312,5 $ (28.603 ₽) - BotMaker - создай бота под свой Нубо РП
6.1.Второе место - WRAITH.LUA - предупреждение что в вас кто-то целитсяПосмотреть вложение 225804
Посмотреть вложение 225805
Поскольку SAMP VR победил в другой номинации с огромным отрывом, то тут побеждают кораблики с отрывом в 2 голоса от GlobeVision
Посмотреть вложение 225806
Посмотреть вложение 225807
Посмотреть вложение 225808
Посмотреть вложение 225809
норм, только проект с уникальной не угадал1.Лучшая модификация с эксклюзивной идеей — 1702,4 $ (155.400 ₽)
1) https://www.blast.hk/threads/197778/ (SAMP-VR)
2) https://www.blast.hk/threads/197830/ (SAMP-SeaBattle) / https://www.blast.hk/threads/198054 (SAMP-Z)
2. Лучший чит с эксклюзивной идеей — 584,69 $ (52.523₽)
1) https://www.blast.hk/threads/198094/ (Терминатор)
2) https://www.blast.hk/threads/197246/ (Cфера) / 2) https://www.blast.hk/threads/198076/ (Анти-коп)
3. Проект с уникальной идеей — 1592 $ (145.300 ₽)
1) https://www.blast.hk/threads/196970/ (GlobeVision) / https://www.blast.hk/threads/198108 (LuaRak)
2) https://www.blast.hk/threads/197197 (Консоль)
4. Лучший вредительский чит — 498 $ (45.618 ₽)
1) https://www.blast.hk/threads/198091/ (НС)
2) https://www.blast.hk/threads/197923/ (Anim-troller) / ? ? ?
5. Лучшая полезная модификация — 1591,08 $ (145.200 ₽)
1) https://www.blast.hk/threads/194305/ (LuaMap) / https://www.blast.hk/threads/197569/ (Радар)
1) https://www.blast.hk/threads/197029/ (RP za tebya)
2) https://www.blast.hk/threads/197862/ (FreeGPT)
6. Лучший вспомогательный чит — 312,5 $ (28.603 ₽)
1) https://www.blast.hk/threads/195760/ (Bot)
2) https://www.blast.hk/threads/198002 (Автоответчик)
слушай, не в обиду авторам, но на некоторые номинации спорное выбрали, так что при банке 570к 2 места имели смысл, не смотря на процент отрыва
самп вр - не у всех есть вр очки, а у тех, кто ими владеет банально не будет пользоваться этим скриптом на долгой основе, так что сюда имело смысл вставить ещё и либу @etereon которая на практике является пиздос какой полезной штукой
к терминатору вопросов нет, имба, тк банк у читов маленький, то 1го места вполне достаточно
проект с уникальной идеей - морской бой, блять ну игра в игре спорно, тем более зависимо от того, есть ли скрипт у других игроков, яб сюда ещё и игру в свина от @Fott хуйнул, раз на то пошло дело
к неверсак вопросов нет
полезная модификация, к кастом радару вопросов нет, штука полезная, если он добавит все свои описанные идеи и поддержку шедевроаризоны, но яб сюда ещё и свой кастом консоль хуйнул, который на практике, например мне, уже несколько раз приносил пользу
лучший вспомогательный чит, к бот мейкеру вопросов нет, но предупреждение о том, что кто-то прицеливается это хуетень, можно было луарак от @why ega поставить
подписываюсь под некоторыми словами, ну неверсак еще допилят, лучше, чем если бы выложили с 1-го декабря и сча бы вообще не одна функа не воркалаНу да NeverSuck (Alpha 0.2) забирает номинацию только по тому что боролся только с собой, так как нет конкурентов можно дать награду и тому скрипту где часть функций не работает. Морской бой не оригинальная идея , был уже 1 морской бой в сампе и вообще заходить в самп чтоб поиграть в другую игру в морской бой или зомби пострелять? смешно и конкурс называется samp coder а не кодер морского боя и тд. Про виртуальную реальность говорил уже, идея да уникальная , но без смысленная в ближайшей перспективе и как по мне не честно самому по сути вложится в призовой фонд и участвовать в этом конкурсе мы и так знаем что автор незаурядный, талантливый скриптер. С уважением но сказал как есть, лучше уж учредить типо грандов, есть талантливые начинающие скриптеры им не помешал бы стимул.
тут с тобой не согласен, какой-то необоснованный доеб до вигеля и за пиписьки никто не кинул голос, хотя это уже тебе, наверное ответили...та да смешно, кто то старался, а кто то говно кинул ради смеха на конкурс, wigel у которого только вопросы и не одного скрипта и такие же оценивали, там половину , те же пипиську, антипипиську или морской бой которых 2 уже существовали можно было выбросить на начальной стадии конкурса. Как говорится ждали ждали и дождались, только настроение испортили всем, главное пацаны которые обещали поддерживать свои скрипты не опускайте руки и не бросайте скрипты, доведите их до ума. А администрации форума пусть будет стыдно.
Хомка, думается мне, что была игра получше среди представленных конкурсантовЯ бы отнес морской бой к эксклюзивным ввиду реализации игры на мобилки в сампе.
мда, нормальный рофл, я думал, что мне одному сначала непонятно, как у тя всё работает, типо кидаешь файлик ГлобВижн и оно отправляет позиции всех игроков в стриме и так за счёт установок делается база на сайте, я бы не согласился с хомкой, что это не чит и не модификация, а инструмент, типо может быть полезно прочекивать, особо для глав. каких-то что-то, да и преимущество дает.Это говорит о том, что он даже не ознакомился с функционалом моей работы и проголосовал против из-за хуй знает чего. Уже ничего не изменить, да, но пусть хотя бы в будущем чуть напрягаться будет при просмотре проектов на номинацию, потому что иначе это ебучая клоунада, которая смысла не имеет. Формально, для того, чтобы использовать мою либу даже не надо самп открывать, потому что на её апишке работает сайт, который можно открыть одним нажатием, а он говорит, что её не может использовать юзер обычный 👍👍👍
тут ты немного не прав, до победы как раз таки не хватило двух голосов) а не 3 из 26, по-моему тут заслужено второе место можно было дать, как я понял, что то про отрыв в 20% шла речь? почему не применили правило ?...Тильтовать из-за того что тебе не дали приз там где ты набрал 3/26 голосов это смешно.
мне тоже зашло, но лишь, изучив этот вопрос и тему, выяснилось, что кто-то из модеров подозревал в копипасте кода и идеи, типо в каком-то админ тулс точь в точь упомяналка была, то есть такое было и потом шла речь, что этот проект планируется интегрировать в другой проект и получить супер инструмент на выходе, потому и не голосовали, мб...Лишь исходя из этих двух примеров можно понять то, что задумка действительно не новая. Или если к следующему конкурсу создадут порт ДУМа в САМПе, то это будет считаться уникальной идеей и "#ВЫНЕПОНИМАЕТЕЭТОДРУГОЕ"? Мне, как простому потребителю, было бы интересно видеть среди победителей упоминания в чате от Cosmo. Если сравнивать его штуку с упомянутым выше "Морским боем", то это реально крутая тема. Просто представьте заколебавшегося принимать бичей с ЖДЛС лидера в какой-то гетто фракции, который решил уйти в АФК и посмотреть Ютубчик, а тут его упомянули и он сразу вышел из АФК, инвайтнул бича и не получил выговоры за АФК на каком-нибудь Нубо РП, где от РП лишь одно название.
пыне слова не давалихотел спонсировать, но хорошо, что передумал, такая хуйня победила
если доебаться до сути смысла формулировки этих номинаций, то эксклюзивность от уникальности дохуя чем принципиально отличается ??)))))) не думаю.Проблема твоего проекта не в том, что ты его представивил не в том виде, а в том, что он тупа не подходит ни под одну номинацию.
ебать... хоть кто-то помнит... потому что мне уже казалось, что это какой-то глюк в моей голове или дежавю с эфектом манделыТоже самое и радар. Редактор радаров давно сделал SR_Team (если поискать на форуме)
всегда есть к чему доебаться, я вот лично считаю, что твой проект занял второе место, только потому что еще предварительно до конца конкурса начал нахваливаться и дискутироваться в теме с Рейем, что это нифига себе робота, хоть ты и так доволен, но думаю, что с твоими знаниями, мог бы сделать что-то намного сильнее и тогда бы не возникало вопросов по-поводу второго места, хотя тут тоже, как и этереона есть обида, что побеждает проект, который уже был, тот же botmaker&nbot (sr-team), типа у вас обоих "заслужено" второе место просто кому-то дали, а с кем-то, даже бабки было западло делить.к твоему проекту (crud ботов) у меня вопросов нет, он был месяц на виду и у него красивый интерфейс, хоть лично я считаю его крайне бесполезным из-за отсутствия ветвления. я хочу знать какие проекты по мнению жюри оказались лучше других, это то ради чего я учавствовал. деньги это вторичная штука, они лишь стимул чтобы привлечь конкурентов.
хз... вообще не удивлен 4(5 если учесть радар, который неуверенно вписал) номинации из 6 - угадал, а если взять еще ГлобВиж второе место, то ваще нострадамус ёпта, конечно среди читов без особого разнообразация, но все равноКогда увидел результаты...
Посмотреть вложение 225953
аахха) надо было тебе ботом заниматься))) а то читабельность пакетов ждём весь декабрья уже въебал 80 часов на этот проект и не буду сильно бомбить, но могу сказать, что терминатор мне кажется куда более тривиальной задачей по сложности разработки, чем рэйф. ботмейкера я бы написал быстрее, чем у меня занял экспорт и подбор ассетов из апекса. потому что там даже ветвления нет, это круд простых ботов с интерфейсом на imgui+fontawesome.
бля))))) легенда байкеров))0 не гони, остановись, куда уж там дальше, лучше б сделал, чтоб они сами на байк садились приезжали разносилиесли бы мне сказали, что можно дропнуть интересную концепцию в любой реализации, я бы сделал какую-нибудь хуету вроде [на вас целятся, но точность пять метров] => резкая наводка на того кто целится. а не тратил бы время на всякую ненужную хуету вроде исследования непонятных значений синхры, инструменты отладки, опрос конечных пользователей, добавление интернационализации, понятной и простой обертки, ассетов, оптимизации производительности и точности алгоритмов и тп. Я почему-то думал, что цель сделать продукт для конечного юзера.
всегда есть к чему доебаться, я вот лично считаю, что твой проект занял второе место, только потому что еще предварительно до конца конкурса начал нахваливаться и дискутироваться в теме с Рейем, что это нифига себе робота, хоть ты и так доволен, но думаю, что с твоими знаниями, мог бы сделать что-то намного сильнее и тогда бы не возникало вопросов по-поводу второго места, хотя тут тоже, как и этереона есть обида, что побеждает проект, который уже был, тот же botmaker&nbot (sr-team), типа у вас обоих "заслужено" второе место просто кому-то дали, а с кем-то, даже бабки было западло делить.
почему в кавычках заслужено, ибо твой проект разьебал автоответчик, чисто пафосностью и великим кодом.
ебать... хоть кто-то помнит... потому что мне уже казалось, что это какой-то глюк в моей голове или дежавю с эфектом манделы
искал-искал кастомный радар от ср-тима и на нашел нихуя, это странно, что еще команд хелпер не победил)))
Реверс инжиниринг в 2022:мой реверс диаграмм итогов с допиленными неизвестными