@ProLua

Страница 69 из 307
Philipp
03.04.2017
15:53:35
Просто с ней нужно осторожно общаться

Snusmumriken
03.04.2017
15:54:26
Приеду домой - скинешь мне свою сборку, сбацаю как нужно.

Свои мирки не всегда хорошая вещь :C
Фигня в том, что все без исключения живут в своих мирках. Только некоторые это осознают. А некоторые - расширяют его по мере возможности.

Google
Philipp
03.04.2017
15:56:24
Ну, с этим сложно поспорить, да

Однако само слово мирок несет негативный оттенок

Snusmumriken
03.04.2017
15:57:20
Хех, не совсем. В сравнении с общечеловеческим миром (или хотя бы мирами ценностей отдельных общин), любая индивидуальная картина мира будет мизерной и незначительной.

Vadim
03.04.2017
15:58:05
> LUA https://www.lua.org/about.html#name

Philipp
03.04.2017
15:58:09
Я просто не переношу уменьшительно-ласкательные суффиксы

И мирок – по дефолту нечто негативное

Snusmumriken
03.04.2017
15:59:06
Хех, ты можешь попробовать вообще перестать делить что-то на позитивное и негативное. Ну, это просто стереотипы, замутняющие твое восприятие. Если увидишь полноту - станет проще и одновременно сложнее. Но не хуже и не лучше. Просто более полно.

Philipp
03.04.2017
16:00:25
То чувство, когда вроде бы философия, но вроде бы и весьма бессмысленная :D

Snusmumriken
03.04.2017
16:00:42
Знаешь, как шаблоны в голове, которые резко ускоряют решение типичной задачи, но замедляют и ломаются при появлении чего-то нестандартного.

Эх, для меня, как для человека который решает очень разные задачи - это полезно.

Если твоя жизнь - однообразная рутина - тебе это вредно. Только будешь медленнее работать.

Philipp
03.04.2017
16:01:54
Ладно, у меня просто не то настроение

Чтобы философствовать о чем-либо

Google
Snusmumriken
03.04.2017
16:02:07
Оки :3

Вот я дал пример с шаблонами и мышлением не в позитивном и не в негативном оттенке. Полно но довольно серо :3

Philipp
03.04.2017
16:05:01
Ghbvths xtuj?

Примеры чего?

Snusmumriken
03.04.2017
16:05:36
С шаблонами и мышлением. Ну, их описания и свойства.

Philipp
03.04.2017
16:05:49
Где ты дал пример? :3

Philipp
03.04.2017
16:08:03
Я просто это и так понимаю, а оффтопить в этот чатик не хочу

И плюс я 11 часов не был дома

И вот только добрался

:3

Snusmumriken
03.04.2017
16:12:04
А я не спал сутки :3 Все, скоро будет всем приятных снов, как я сделаю чуваку относительные пути.

Philipp
03.04.2017
16:12:32
Доброй ночи ;3

Чай
03.04.2017
16:12:50
Доброй ночи.

Vlad
03.04.2017
16:13:08
удачки?

Philipp
03.04.2017
19:16:58
А в тг есть возможность запинить чатик?

yegorf1
03.04.2017
19:30:30
Да

Philipp
03.04.2017
19:30:38
Как?

yegorf1
03.04.2017
19:33:48
Ну эм

А ты пробовал?

Google
Philipp
03.04.2017
19:34:37
Что?

Snusmumriken
03.04.2017
20:51:17
Прости пожалуйста, а что ты хотел?

Запускать lua-код так же просто как .exe-шники? Или всё таки пути мутить?



yegorf1
03.04.2017
20:54:10
скомпилил или пришил луа к код к интерпритатору?

Snusmumriken
03.04.2017
20:54:16
Тут сложнее :3

Глянь srlua.

yegorf1
03.04.2017
20:54:37
Мне лениво, я спать ложусь

Там что-то стоящее?

Snusmumriken
03.04.2017
20:55:07
Там превращение lua в standalone-exe. Всё в порядке.

yegorf1
03.04.2017
20:56:11
Ничто не мешает пришить луа к интерпретатору, как делает лав

Это тоже стэндалон экзе

Philipp
03.04.2017
20:56:45
Ты уже поспал что ли?

Vlad
03.04.2017
22:42:12
хотя даже при таком дешманском подходе через простреленые ноги и ломаные костыли имея полные пути оно к примеру ругается на невозможность нахождения чего либо, при наличии полного пути, вот потому мне и нужно как то понять как бы сделать это в самом луа что б все нормально искало, что б была возможность не выходить за рамки разума и тд тп

причем при открытии либо переоткрытии файлов таким шаманством все еще более менее нормально, а вот с подключением чего либо из подпапок в разных местах проекта с таким подходом не работает, пишет что имеются трудности с обнаружением файлов

Vadim
04.04.2017
06:46:27
а вот не использовали б вы в мышлении вендовые особенности всё было бы проще

ну и в любом случае, рекомендую ознакомиться с двумя вещами: 1) http://code.matthewwild.co.uk/squish/ (склеивает весь проект (по желанию и инклуды) в один lua-файл). Правда, я немного подзабыл как быть с C-либами. Но Pure-Lua склеивает вполне прекрасно. Опционально минифицирует, сжимает и перегоняет в байткод 2) уже озвученный srlua. От одного из авторов PUC-Rio Lua. Собирает бинарники не только под Win, но и под любую ОС, под которую собрано само. Так же, LuaJIT умеет делать байткодо-объекты (*.o) которые можно слинковать с любой самописной C-софтиной (вместе с libluajit). При особом желании - даже статически.

Group Butler [beta]
04.04.2017
15:21:06
Добро пожаловать в чат pro.lua, Mirsait! Ознакомься с правилами чата (в описании и прикрепленном сообщении), и присоединяйся к обсуждению.

Добро пожаловать в чат pro.lua, Антон! Ознакомься с правилами чата (в описании и прикрепленном сообщении), и присоединяйся к обсуждению.

Google
Антон
04.04.2017
22:53:53
привет

ай нид халп

я делаю систему для квестов на луа

и у меня проблема с корутинами, классами да и вообщем со всем - я луа не особо знаю, я больше по с++

вообщем я худо-бедно разобрался как классы делать - по этой методичке http://lua-users.org/wiki/SimpleLuaClasses - вариант для луа 5 3

Admin
ERROR: S client not available

Антон
04.04.2017
22:56:52
как вы кстате вообще классы используете? какие практики? луа как я понял не особо оопэшный, или все-таки используется наследование? или както иначе все пишется у вас?

написал вот такой классик: Quest = class(function() function __init(body) print('quest init 1') this.body = body print('quest init 2') this.cor = coroutine.create(body) print('quest init 3') end function run() print('quest run') coroutine.resume(this.cor, this) end function interrupt(condition) local listener = EventListener(this.cor, condition) gloabalDispatcher.addListener(listener) coroutine.yield() end end)

вот так пытаюсь запустить: function attempt0() print('test 1') local quest = Quest(function(quest) print('coroutine print 1') local condition = function () print('coroutine condition print') return 'success' end print('coroutine print 2') quest.interrupt(condition) print('coroutine print 3') end) quest.run() print('test 2') end

выводит в итоге только lua: test 1 lua: quest init 1 lua: quest init 2 lua: quest run lua: test 2

Alexander
04.04.2017
23:04:32
потоки умеешь писать? так вот, корутины не потоки.

Антон
04.04.2017
23:05:03
дак мне корутины надо а не потоки)

а зачем мне потоки по-твоему?

мне надо чтобы чек выполнялся в определенном потоке - я буду из плюсов его дергать в будущем

ну тоесть без потери общности сейчас можно считать что это все должно работать в гл потоке

Alexander
04.04.2017
23:08:51
разница в том, что все корутины выполняются в единственном потоке. I/O блокировка в любой корутине заблокирует всю программу.

Антон
04.04.2017
23:09:12
ну пусть блокируют, там проверки - типа юинт жив или юнит в зоне там такойта

у меня вопрос поччему quest init 3 не выводится и почему корутина не запускается

а так если тебе общая архитектура интересна - то можно сделать отдельный поток на эти проверки, просто из с++ надо будет вызывать методы из этого потока и все. ну и проследить чтобы синхронизация была на все что ты биндишь в луа. но вопрос то у меня не в этом

Snusmumriken
05.04.2017
00:58:56
В целом, обычно в луа вывешивают апишку, и дёргают её там. Ну, то есть плюсы работают автомобилем, а луа -водителем. То что ты хочешь в с++ дёргать луа-методы - это немного странно :3

Google
Alex Фэils?︙
05.04.2017
01:00:51
типа двусторонний бридж

Snusmumriken
05.04.2017
01:02:50
Не уверен что в данном случае - двустороннесть - хорошо. Можно в луа вывести хендлер квеста для перехода между этапами и развилками, хендлер игрока и событий для перехвата условий выполения квестов, и просто дёргать луа-скрипт с квестом. Или луа-скрипт вообще со всеми квестами. Суть: 1. Ядро С++ хранит список активных квестов 2. Новые добавляются и обновляются луа-скриптами (текст и всякие счётчики/ништяки) через хендлер в мастер-скрипте. 3. Мастер-скрипт на луа с хендлером, который подгружает остальные квестовые скрипты, отслеживает события: на некоторые (разговор с персонажем по некоторой ветке диалога с конкретными ID) - отправляет С-ядру запрос на создание нового квеста, а на другие (убийство десяти волков) - дёргает хендлер ядра на тему "квест выполнен". Ядру нужно только дёргать на каждое событие мастер-скрипт, тот всё остальное сделает сам. Событийные системы эффективны. И даже очень. За счёт того что не вызываются каждый кадр, нужен только пул событий и управляющий хендлер, дёргаемый, например, при убийстве того же волка, в пул событий передаётся, например, такая структура: Тип: убийство, субъект: игрок оружие: меч тысячи истин, тип урона: удар по самомнению тип ударов: режущие корень истины броня: штаны из берёзовой коры, объект: волк тип: животное, ареал: лес, образ жизни: хищник локация: тёмная лесная опушка фракция: лесной управдом владелец: баба яга Подобные события - крайне удобны для обработки луа-скриптами.

На подобные события уже можно давать квесты а ля: "Убей десять хищников на тёмной лесной опушке, держа в руках меч тысячи истин а на жопе - штаны из берёзовой коры, только погоди, ща сниму тебе твою новую броню". И в принципе, с такой системой, легко менять игроку репутацию во всём королевстве, на тот случай, если он убивает врагов или жителей на его территории. Или вынуждать кого-то нападать игрока за то, что игрок жестоко зарубил хомячка. А за счёт графы субъекта - можно мутить квесты а ля "Помоги моей маме зарубить десять хомяков". Хе-хе, на самом деле это весело.

Антон
05.04.2017
08:18:42
В целом, обычно в луа вывешивают апишку, и дёргают её там. Ну, то есть плюсы работают автомобилем, а луа -водителем. То что ты хочешь в с++ дёргать луа-методы - это немного странно :3
Странно ты себе представляешь) чтобы чтото откудато дергать из луа с++ программист сначала должен чтото дернуть в луа, чтобы оттуда вы уже дернули назад с++. Просто это не ваша работа вы этого не замечаете скорее всего.

Tverd
05.04.2017
08:22:53
Обычно из движка С/С++ приходит update в луа, а вот луа уже начинает дегать все подряд и желательно уложиться в время одного апдейта. Обычно так делается, насколько я знаю.

fgntfg
05.04.2017
08:25:07
Из Си дёрнуть Луа, которая дёргает Си.

Антон
05.04.2017
08:26:21
Не уверен что в данном случае - двустороннесть - хорошо. Можно в луа вывести хендлер квеста для перехода между этапами и развилками, хендлер игрока и событий для перехвата условий выполения квестов, и просто дёргать луа-скрипт с квестом. Или луа-скрипт вообще со всеми квестами. Суть: 1. Ядро С++ хранит список активных квестов 2. Новые добавляются и обновляются луа-скриптами (текст и всякие счётчики/ништяки) через хендлер в мастер-скрипте. 3. Мастер-скрипт на луа с хендлером, который подгружает остальные квестовые скрипты, отслеживает события: на некоторые (разговор с персонажем по некоторой ветке диалога с конкретными ID) - отправляет С-ядру запрос на создание нового квеста, а на другие (убийство десяти волков) - дёргает хендлер ядра на тему "квест выполнен". Ядру нужно только дёргать на каждое событие мастер-скрипт, тот всё остальное сделает сам. Событийные системы эффективны. И даже очень. За счёт того что не вызываются каждый кадр, нужен только пул событий и управляющий хендлер, дёргаемый, например, при убийстве того же волка, в пул событий передаётся, например, такая структура: Тип: убийство, субъект: игрок оружие: меч тысячи истин, тип урона: удар по самомнению тип ударов: режущие корень истины броня: штаны из берёзовой коры, объект: волк тип: животное, ареал: лес, образ жизни: хищник локация: тёмная лесная опушка фракция: лесной управдом владелец: баба яга Подобные события - крайне удобны для обработки луа-скриптами.
Список квестов будет в луа, я не хочу в с++ ничего связанного с квестами тащить. Если интересно почему - это бесполезно с точки зрения переиспользования этого кода в других местах, ограничит возможности самих квестов возможностями апи, мне придется писать само это апи, и мне придется дополнительно писать логику сохранения/загрузки стейтов квестов - сейчас я поанирую дампить весь стейт в сейв (через Eris - это аналог Pluto для луа 5.3 это не я придумал, я изучал кто как делает, нашел несколько примеров использования такого подхода) В остальном примерно похоже - с++ будет на апдейты дергать скрипт и передавать туда что произошло

Tverd
05.04.2017
08:26:46
да, есть такая проблема - из С дернуть метод луаджита намного затратнее чем наоборот. Насчет обычного луа не знаю, насколько это затратно.

fgntfg
05.04.2017
08:28:45
А зачем вообще Си в этом проекте?

Антон
05.04.2017
08:29:29
да, есть такая проблема - из С дернуть метод луаджита намного затратнее чем наоборот. Насчет обычного луа не знаю, насколько это затратно.
Буду иметь ввиду, ну пока это норм для меня - я вызываю луа только по событиям, а оттуда уже вызываются сишные методы

А зачем вообще Си в этом проекте?
Кроссплатформенная игра под 5 поатформ

Tverd
05.04.2017
08:30:14
На форуме по Urho3D этот вопрос поднимался как-то, почему медленно движок работает с Луа биндингами. Оказывается 60 раз в секунду вместо одного апдейта, идет их штук 20

Антон
05.04.2017
08:33:35
Нет сишный движок

а по моей проблеме то чтото можете сказать?

вообщем я худо-бедно разобрался как классы делать - по этой методичке http://lua-users.org/wiki/SimpleLuaClasses - вариант для луа 5 3

как вы кстате вообще классы используете? какие практики? луа как я понял не особо оопэшный, или все-таки используется наследование? или както иначе все пишется у вас?

Страница 69 из 307