Size: a a a

2019 December 28

VM

Vadim Misbakh-Soloviov in pro.lua
как же я люблю Lua за возможность хаков с метатаблицами! :)
источник

I

Igor725 in pro.lua
Хех
источник

I

Igor725 in pro.lua
Я раньше любил что-то такое делать getmetatable("").__add = function(a, b) return a..b end
источник

I

Igor725 in pro.lua
Мне было удобнее через плюс строки конкатить, нежели через две точки
источник

I

Igor725 in pro.lua
Но потом я посмотрел, сколько же времени луи тратят на выполнение этого метаметода и отказался от этой штуки
источник

I

Igor725 in pro.lua
Да и вообще такая фигня почему-то к крашу LuaJIT при определённых условиях приводила
источник

I

Igor725 in pro.lua
Конкатил я, например, через .. в определённом месте и краша не было, повторял те же действия но с конкатом через + и всё падало
источник

S

Snusmumriken in pro.lua
Vadim Misbakh-Soloviov
как же я люблю Lua за возможность хаков с метатаблицами! :)
Это жуткий чит, не делай так на проде ))
А то если каждый решит что надо что-нибудь запихнуть в string.parse, всё может сломаться нафиг, причём у всех кроме одного.
источник

ИК

Илья Курьянов in pro.lua
[4vthy7j' xY
источник

VM

Vadim Misbakh-Soloviov in pro.lua
Илья Курьянов
[4vthy7j' xY
это твой пароль? :)
источник

S

Snusmumriken in pro.lua
Илья Курьянов
[4vthy7j' xY
В вашем пароле присутствуют запрещённые символы, попробуйте снова.
источник

МК

Марк ☢️ Коренберг in pro.lua
Илья Курьянов
[4vthy7j' xY
Это кот ходит ?
источник

S

Snusmumriken in pro.lua
Igor725
Но потом я посмотрел, сколько же времени луи тратят на выполнение этого метаметода и отказался от этой штуки
В своё время писал либу векторов, где каждый вектор — отдельная табличка (или ffi-userdata, если возможно). Потом попробовал написать что-то более-менее сложное, типа
bla = foo:norm() * bar:rotate(3.14):alerp(foobar)
И офигел от безумного оверхеда по разметкам памяти, учитывая что каждая операция возвращает новый вектор. Потом ударился в противоположный грех. Оно всё ещё так может, но добавился миллиард методов, типа:
bla = foo:norm():svmul(bar:rotate(3.14):salerp(foobar))

Тут уже norm и rotate — создают новые векторы, методы с s — изменяют объект вместо создания нового, а vmul — умножение на вектор, пропускаются проверки аргументов, типа чаво там прислали: вектор или пару чисел или что.

В результате оно разрослось на 1000 строк ))
https://pastebin.com/xjeU0XAx
источник

I

Igor725 in pro.lua
Snusmumriken
В своё время писал либу векторов, где каждый вектор — отдельная табличка (или ffi-userdata, если возможно). Потом попробовал написать что-то более-менее сложное, типа
bla = foo:norm() * bar:rotate(3.14):alerp(foobar)
И офигел от безумного оверхеда по разметкам памяти, учитывая что каждая операция возвращает новый вектор. Потом ударился в противоположный грех. Оно всё ещё так может, но добавился миллиард методов, типа:
bla = foo:norm():svmul(bar:rotate(3.14):salerp(foobar))

Тут уже norm и rotate — создают новые векторы, методы с s — изменяют объект вместо создания нового, а vmul — умножение на вектор, пропускаются проверки аргументов, типа чаво там прислали: вектор или пару чисел или что.

В результате оно разрослось на 1000 строк ))
https://pastebin.com/xjeU0XAx
Ну мне с векторами в своей реализации сервера пришлось как обычно велосипедить и костылить. Так уж получилось, что у игры протокол замудрённый стал, помле того как в него запустили руки игроки (частенько не блещащие особым умом, нужно заметить), он ощутимо так усложнился, в итоге для меня самым простым путём было навелосипедить свою библиотеку векторов. У меня их присутствует две штуки, один с short значениями, а другой float. В float хранится позиция игроков, а в short размеры мира, например. Но то, что структур векторов два, принесло мне трудности. Для луёвой апишки пришлось сделать ещё одну структуру LuaVec и хранить в ней тип вектора и юнион с двумя типами: float вектор и short вектор. В итоге накостылял простенькую библу векторов с двух сторон, с сишной и луёвой. И всё работает почти как я хотел.
источник

I

Igor725 in pro.lua
В стандартном протоколе игры просто все вектора представлялись как short число
источник

I

Igor725 in pro.lua
А если нужны были нецелые значения, то значение просто умножалось/делилось на 32
источник

I

Igor725 in pro.lua
Можно было б конечно сделать на всё про всё один только int32 вектор и когда нужно читать его как float или же как short, но мне такой вариант не очень по душе оказался
источник
2019 December 30

DF

Dollar Føølish in pro.lua
@bratus привет. Хотел бы спросить. Ты когда детишкам (lua) преподавал, какой у них был примерный средний возраст?
источник

M

Mikhail in pro.lua
средний 10.
а так с 8
источник

DF

Dollar Føølish in pro.lua
Норм, спасибо
источник