@ProLua

Страница 184 из 307
Snusmumriken
13.10.2017
13:44:14
Точнее, уже написал )))

Sunatullaev
13.10.2017
13:44:34
А разве есть боты для этого.?

Snusmumriken
13.10.2017
13:45:19
Боты есть для всего подряд. Например для этого: https://habrahabr.ru/company/croc/blog/335650/

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

Google
Saphire
13.10.2017
13:46:35
>spacewar Вижу пирата!

Snusmumriken
13.10.2017
13:46:58
Пирата? Это специальная игра для разработчиков в стиме, appid 480. Рядом болтаются сурцы с описанием "Как пользоваться стимом для чайников"

На самом деле, можно и любую другую игру заюзать для этих целей, только твоя прога будет падать на колбеке приглашения в катку от сотни тысяч друганов, с другим форматом запроса. Ну прикинь, заюзал ты appid от другой игры, прописал колбеки: "Если приглашают - подключаться". А к чему подключаться, если 100500 друзей ломятся срочно с тобой загамать, когда ты только тестишь либу, и она несовместима с форматами игр в которые тебя приглашают? Карочи, меня начинает заносить, приятных снов. #ботживи (на самом деле нет :( )

Карочи, придётся писать dll-лину для lua. Зато она будет совместима с любыми играми, в которых есть луа ))) К счастью, стим существует под не очень большое количество платформ, а такая обёртка - не задействует ничего платформенного, это прям круто-круто. Но всё таки не очень, потому что через luajit я могу вообще не париться на тему архитектур библиотек и всего такого.

Alexey
13.10.2017
14:43:21
Я работаю над реализацией mimi API в Lua-cURL. libcurl предоставляет API curl_mimpart_data() - установить данные curl_mimpart_type() - установить Content-Type curl_mimpart_name() - установить параметр name в заголовке Content-Disposition При этом если передать NULL в качестве параметра то значение будет сброшено. Я реалзовал метод в Lua как part:data(str[,type[,name]]). Т.е. можно вызывать как part:data('string') - только данные part:data('string', 'text/plain') - данные и тип part:data('string', 'text/plain', 'myname') - данные, тип и имя. А так же part:name() и part:type() Теперь вопрос как организовать сброс параметров --- Случай 1 part:data('string1', 'text/plain', 'myname') part:data('string1') part:data('string1', nil, nil) part:data('string1',nil, 'another') --- Случай 1 part:name( 'myname') part:type( 'text/plain') part:data('string1') Я думаю использовать false для того чтобы сбросить значение

Vadim
13.10.2017
20:21:22
ну, да, false как-то более явно (да и иначе не получатся фокусы (с использованием вариаций вызова) озвученные выше)

Snusmumriken
14.10.2017
07:41:02
Используй пустое значение. function part:type(v) -- nil в конце чтобы не было false -- от результата логического выражения self._mime = type(v) == 'string' and v or nil end И вот такой вызов: part:data('string1',nil, 'another') не должен ломать mime-type, то есть: function part:data(data, mime, name) return self:_request( data or self._data, mime or self._mime, name or self._name ) end Ну, если не указано - выставлять то что было указано ранее, как дефолт, или ещё что-то такое. Объекты вам дадены чтобы вы как раз могли хранить в них состояния, и стоит это использовать.

Alexey
14.10.2017
10:08:41
Там есть еще случаи Я думаю что для сброса значения буду использовать false. Но это не очень Lua-way мне кажется. Сброс по nil более естественный. param:type() -- вполне естественно сбросить type param:type(nil) -- тоже очевидно что пользователь хочет присаоить nil Но если есть код param:type(mimetypes.guesstype('test.xml')) Тут уже не очевидно. Если тип определен - то установить его. Но если нет то можно оставть текущий (не менять) или сбросить значение в default. В этом случае мне нравится по nil не менять значение, а оставить прежнее. А если надо сбросить, то можно написать param:type(mimetypes.guesstype('test.xml') or false) Так же если param:type(nil) сбрасывает тип, то вполне очевидно что param:data(nil) долже сбросить данные, так же как и param:data(nil, nil, nil). Но последний вариант получается не сбрасывает тип и имя. Что тоже не очень очевидно, но вполне можно сказать, что для сброса конкретного элемента нужно использовать специальную функцию. Еще можно добавить специальные методы для сброса. Но их нет в оригинальном API и я не очень хочу их добавлять. Поэтому я думаю false для сброса вполне подходящая альтернатива -- установить данные не менять тип и сбросить имя part:data('hello', nil, false) Т.е. установка nil не меняет текущего значения. Единственное part:type() так же не будет сбрасывть значение, т.к. я не люблю разную семантику для type() и type(nil) PS. А в реальности не думаю что эта часть API будет часто использоваться Более вероятно что MIMI объекты будут просто создаватся заново когда это будет нужно, а не использоваться повторно PPS. Еще я размышляю над API для curl_mimepart_data_cb и над форматом тадлицы для постороения MIME объекта

Snusmumriken
14.10.2017
11:25:53
> param:data(nil, nil, nil). Но последний вариант получается не сбрасывает тип и имя. Что тоже не очень очевидно, но вполне можно сказать, что для сброса конкретного элемента нужно использовать специальную функцию. Различай nil и false. function part:data(data, mime, name) local tdata, tmime, tname = type(data), type(mime), type(name) self._data = data == false and nil or tdata == 'string' and data or self._data self._mime = mime == false and nil or tmime == 'string' and mime or self._mime self._name = name == false and nil or tname == 'string' and name or self._name return self:_request( self._data, self._mime, self._name ) end param:data(nil, nil, nil) - ничего не сбросит param:data() - тоже ничего не сбросит param:data(nil, 'xml', nil) - заменит mime на xml param:data(false, 'xml') - заменит mime на xml, удалит data

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

Philipp
14.10.2017
12:24:39
Комрады

Есть кто готов потратить 10 минут своего времени на помощь в моих поисках ошибки? От вас нужен луарокс и луасокет

annelin
14.10.2017
12:32:40
давай попробую

Google
annelin
14.10.2017
12:33:52
http://i.imgur.com/MdTs8vI.png

Vadim
14.10.2017
12:34:42
GDE OLEG

Philipp
14.10.2017
12:36:01
БЕЗНОГNМ

Snusmumriken
14.10.2017
19:48:18
Ничоси. С++-либы компилятся и цепляются!



Скоро ко мне можно будет обращаться за плюсовыми либами (не очень сложными) Оно даже экспортится в табличку! power = require'power'

Elias
14.10.2017
19:54:59
Это компилится в .dll, да? И потом можно использовать независимо как обычный модуль?

Snusmumriken
14.10.2017
20:01:01
Ага.

Я просто хочу запилить взаимодействие с колбеками steamapi в dll-ку. Просто так не получится, ибо колбеки там как c++-шаблоно-классо-макросы.

Elias
14.10.2017
20:06:01
Круто Просто я всегда Lua из C++ напрямую запускал, и даже не думал, что Lua может запускать другой C++ код, не основной программы. :D

И возможно стоит самому делать такие модули, будет чуть лучше, наверное, чем просто регистрировать всё глобально в lua_State* luacheck ругается на глобальные переменные, и наверное не зря. :)

Snusmumriken
14.10.2017
20:13:07
Ну, эта фигня не делает глобальных, а пушит табличку типа.

Elias
14.10.2017
20:22:13
Ага, вот это и хорошо А то я хотел избавиться от всех глобальных переменных, и только C++ функции оставались таковыми

Snusmumriken
14.10.2017
20:24:01
Тут даже этого нет, так что..

Elias
14.10.2017
20:26:54
Ага Просто я что-то только недавно задумался о том, что вообще нехорошо создавать столько глобальных вещей (переменных не делал, только классы и функции) Но теперь перешёл полностью на модули и всё гораздо лучше стало в базе. Явно прослеживаются зависимости, красота Мало того, Sublime может находить определения локальных функциях внутри загружаемых модулей, ещё один плюс.

Philipp
14.10.2017
20:28:28
Ну, в Луа желательно вообще не использовать глобальные переменные

(а классы и функции – переменные)

Elias
14.10.2017
20:29:46
Да, просто это от C++ пошло, мол классы - глобальные (почти) Да и видел в разных играх, что так делали, например в Don't Starve. Но всё же успел прочувствовать минусы этого подхода

Philipp
14.10.2017
20:30:07
>Да, просто это от C++ пошло, мол классы - глобальные (почти)

Что?

Google
Elias
14.10.2017
20:30:57
Ну, в смысле если хедер включить куда-то, то сам класс будет в глобальной области видимости (если он не в namespace) Я об этом

Philipp
14.10.2017
20:33:30
Он будет только в области видимости файла, в котором подключен

Elias
14.10.2017
20:35:18
Но пока что не решаюсь делать local SomeClass = require 'SomeClass' внутри функций или даже if/else Как-то нагляднее всё require'ить в самом начале модуля Да, только хэдер может включать другие хэдеры, и в итоге можно получить от него сразу много классов и свободных функций. Скорее Lua тут выигрывает в плане модулей, что можно классы и функции делать локальными в модуле и не получать "бонусов" при включении этого модуля в другие.

И ещё открыл для себя плагин Sublime, который постоянно проверяет редактируемый файл в luacheck и качество моей жизни возросло в разы. (Что-то там вроде Sublime Lua Linter)

Snusmumriken
14.10.2017
21:03:28
Да, просто это от C++ пошло, мол классы - глобальные (почти) Да и видел в разных играх, что так делали, например в Don't Starve. Но всё же успел прочувствовать минусы этого подхода
https://vk.com/doc75175715_449700199?hash=bd4d936e0b7b9ef399&dl=1cbe9956d67eb88f82 Вот тут вот - ровно одна глобальная переменная, gamestate. В состоянии игры - игровой мир, и там же все игровые объекты. Подключение модулей.

Можешь в гите глянуть примерную структуру. Абсолютно все зависимости легко заметны. https://bitbucket.org/MainTomato/tank-o-box/src/320e9861fa93?at=develop

Elias
14.10.2017
21:54:25
Да, хорошо и читаемо написано, мне нравится Можно свою игру попиарить? Без кода, правда. :"D

Snusmumriken
14.10.2017
22:02:24
Да коэш

Намана : )

На чём пилишь?

Elias
14.10.2017
22:07:06
Движок на C++, юзаю SFML, но вся игровая логика на Lua

Saphire
14.10.2017
22:07:20
inb4 одна из этих к.. о..о неожиданно.

Почему например не SDL?

Elias
14.10.2017
22:09:29
Не очень понимаю, как должна продолжаться фраза после "к.." o_O SFML мне нравится тем, что лучше сливается с C++ кодом, в то время как на SDL мне пришлось бы написать врапперов + я начал юзать SFML 5 лет назад, и он мне показался как-то проще для использования, хотя я знаю, что SDL более продвинутый и портабельный Может когда-нибудь переберусь :)

https://i.imgur.com/pA2xl1R.gif Ещё вот такую вещь пилил несколько лет, но потом осознал, что пока что не потяну игру такого масштаба, так что решил графику сделать меньше разрешения (в разы быстрее рисовать) + меньше объём игры.

Elias
14.10.2017
22:18:16
Ааа Которые Piku-434230942 К счастью, нет :D

Google
Saphire
14.10.2017
22:18:47
С одной стороны они конечно интересные... Но блин, абсолютно мало места для чего-то реального.

Elias
14.10.2017
22:19:16
Ага И в итоге код - это просто спагетти с нечитаемыми переменными в одну букву :D

Saphire
14.10.2017
22:19:45
Движок на C++, юзаю SFML, но вся игровая логика на Lua
"Вся", это "создание комнат, симуляция объектов и т.д." или "установка парочки флагов по событиям от объектов"? о..о

Elias
14.10.2017
22:22:08
C++ загружает и обрабатывает тайл мапы + спавнит объекты, но всё остальное - Lua В C++ находятся коллизии, например, а в Lua - реакция объектов на них Мало того, паззлы, AI, катсцены, меню, etc. пишутся на Lua, а данные хранятся в JSON В C++ по большей части low level вещи, либо те, которые лень в Lua перепиывать (особенно рендеринг)

Saphire
14.10.2017
22:22:52
Рендеринг даже в C/C++ - страшная вещь.

Кстати о двихках... надо бы пойти дальше попробовать "портировать" одну фигулинку с flash на canvas...

К сожалению у меня не хватает идей на нормальные вещи :с

Elias
14.10.2017
22:26:54
Ага И вообще чем дальше, тем больше меня раздражает C++ и растёт моя любовь к Lua Если бы мог, портировал бы всё на Love2D, чтобы больше не заморачиваться. Но я уже столько в своём движке полезных штук наделал, что не хочу это на Lua переписывать снова. :D Даже не знаю, я вот всегда хотел сделать Зельду, что видно по играм, потом просто менял немного сеттинг, добавлял механику, и всё. Так многие делают. X, but with Y

Saphire
14.10.2017
22:31:02
Гм... везёт. А мне всё хочется симулятор космического строителя с симуляцией атмосферы...

Philipp
15.10.2017
18:36:21
Комрады. Знакомый обратился с просьбой посоветовать ему что-нибудь по веб-программированию для начинающих. То есть, человек вообще без какой-либо базы. Я самостоятельно советовать что-то боюсь, ибо вообще никогда не связывался с миром сайтов, но может из вас кто-нибудь что-нибудь подскажет? Буду премного благодарен

Tverd
15.10.2017
18:41:59
Если только сайты - пхп

Что нить для начинающих

LaCamarade
15.10.2017
18:56:33
* htmlbook.ru

К сожалению у меня не хватает идей на нормальные вещи :с
Я гейм-дизайном занимаюсь, если что, и, если хочешь -можешь присоединится в команду ко мне и моему другу (он тоже программист). Как бы идей у меня хватает, но как тех.специалист я слабый. Работаю над очень потенциально годной задумкой в данный момент...Вдруг интересно тебе будет...

Mikhail
15.10.2017
19:15:39
годные задумки ))))

LaCamarade
15.10.2017
19:17:59
Я чувствую, что сложновато для него будет. Всё-таки там база нужна
Ну, я могу лишь себя наверно посоветовать, чтобы объяснить прям со всем на пальцах основные базовые и теоретические вещи - ему должно потом полегче быть. Но учить по настоящему программировать не ко мне - мой уровень в данном деле весьма низок.

Google
Philipp
15.10.2017
19:18:32
Я бы без проблем помог ему с чем-то софтверным, но с вебом – беда

LaCamarade
15.10.2017
19:18:51
годные задумки ))))
Так и думал, что кто-то будет смеяться над этой фразой.

Mikhail
15.10.2017
19:19:21
я не смеюсь. просто у меня годных задумок десяток. надо ВОПЛОЩАТЬ!

LaCamarade
15.10.2017
19:19:28
LaCamarade
15.10.2017
19:21:12
я не смеюсь. просто у меня годных задумок десяток. надо ВОПЛОЩАТЬ!
Я пишу концепты и время от времени пробую делать прототипы со своим напарником, но так-то мы новички...

Mikhail
15.10.2017
19:22:26
ну так потихоньку перестаёте быть новичками ))) многие получают бОльшее удовольствие от прототипа, чем от доведения до конца.

Philipp
15.10.2017
19:23:10
LaCamarade
15.10.2017
19:23:28
На каком языке задумка? :)
Мы предполагаем Крайэнжн побаловаться - там встроенный визуальный скриптинг есть, но есть возможность подключить тот же луа. Если интересно попробовать побаловаться и попытаться сделать вместе с нами прототип игры, то приглашаю.

Mikhail
15.10.2017
19:23:30
хех. не связываться с техлидами )

LaCamarade
15.10.2017
19:25:04
Так и думал, что это отпугнет, хех, но душа просит :)

Philipp
15.10.2017
19:26:11
Да ну, маленькие-свои-ламповые проекты лучше

LaCamarade
15.10.2017
19:27:59
Я тоже о таких думал (исходя даже из логических соображений), но меня уводит постоянно в сторону чего-то большего...

ну так потихоньку перестаёте быть новичками ))) многие получают бОльшее удовольствие от прототипа, чем от доведения до конца.
Оч надеюсь. Меня ведь еще игры в первую очередь с художественной стороны интересуют, то бишь мне хотелось бы делать больший упор на повествовательную составляющую и только уже после нее на геймплейную.

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