Serge! 127 Опубликовано 12 Ноября 2016 (изменено) Именно это я и имел в виду, когда говорил о том, что хотел рассказать о "сопутствующем". Так что если есть такая необходимость, то могу попробовать рассказать об этом более развернуто. Мне кажется у многих есть такая необходимость. Знания - это всегда полезно. А этот ресурс полезен, в основном, практической теорией в программировании сталкера, а не правками движка, прохождениями и особенностями модов и прочей шелухой. Такого и в других метах полно. Может, если удастся ограничить снобизм некоторых модераторов, к этому более активно подключатся и весьма знающие люди из других мест. Такие есть, но они здесь увы редко бывают (и их можно понять). Только, возможно, надо согласовать с Администрацией где и как это можно проделать. А здесь - это очень похоже на флуд. Изменено 12 Ноября 2016 пользователем Serge! 1 Поделиться этим сообщением Ссылка на сообщение
Serge! 127 Опубликовано 12 Ноября 2016 @SoP, Пофлудим, пока Администрация позволяет, хотя для таких постов есть и вполне официальное мечто. Перенесут, если что. Я за. И готов в таком поучаствовать. Предполагаю, что знаю, ешё нескольких пользователей этого ресурса, которые могли активно, и главное полезно, в этом поучаствовать. Это не самые активные здесь (ИМХО). Захотят - проявятся. Решение за Администрацией. 1 Поделиться этим сообщением Ссылка на сообщение
Serge! 127 Опубликовано 13 Ноября 2016 (изменено) @SoP, "Где-ж ты раньше был, когда я с другим..." Я здесь об этом уже 2 года бьюсь. Слава Всевышнему, администрация здесь вменяемая. Как я себе это всё безобразие представляю. Когда-то собралась компания проекта "Сталкер" - участников?, последователей?, "двигателей"?, ... и ещё всего разного. Скучковались. Все со своими прожектами, решениями и амбициями. По первости всё (после огранизации) было "тип-топ". Это именно то, про что Вы и говорили: описание классов, общие понятия о модинге и т.д. и т.п. Потом ... как обычно. Сначала - примкнувший близкий круг (большенство нынешних модедаторов). Дальше больше - ресурс оброс шелухой: зачем здесь "Другие игры"? или "солянка"? - надо... надо для привлечения пользователей, однако. (Просто шалые мысли вдруг: "Солянка" - это отдельная веточка Сталкера. "Народное" творчество. Дури там, как мути. Зачем этому, классическому по сути ресурсу, ассоциироваться с ним? Не этот ли ближний круг всё это ворожит? Подумаем позже.) Продолжим: "Отцы основатели" стали почти богами и другие мнения уже воспринимали с большим трудом (пример? artos). И так это докатилось до того, что мы сейчас и видим. Повторюсь: живёт это, по моему, тольку благодаря адекватной Администрации, которой по мозгам тоже не мешало бы пройтись в плане огранечения вседозволенности подчинённых ей структур. И ещё молодёжи, которой пока это интересно и плевать на предисторию. Прочие вполне бы могли тусоваться сами по своим каналам (личке, скайпу и т.п.) для осуждения только им интересным проблем. Они не глобальны. Пример? Прочитайте веточку о торговле. Резвятся там два (вполне достойный и знающих) пользователя ресурса в полную силу. Даёт это что либо другим пользователям? Соответствует это задачам и декларированным целям рерурса? То-то и оно. К теме "Скрипрование" это всё разумеется никакого отношения не имеет, но ведь здесь даже и Модератора темы нет! "Монолит", который её создал - где он? Отккликнесь. Если и забежит то только глобальный ДС - "всем прятаться, а кто не спрятался, я не виноват." Так и живём. Как взаимодействуют отдельные модули, скрипты между собой, что откуда вызывается, от теории до практики, и.т.п.... А Вы не можете над этим подумать и сформировать как-то в виде схемы или простенького графа? В начале так, как Вы это себе представляете. Это очень интересно и, возможно, если получится, позволилит более логично строить стратегию будущих модов (если в них разумеется новая идея будет, а не только новая погода и стволы). долго писать доходчивый тутор А что слабо попробовать? Если что и я помогу, чем смогу. Главное начать, а там и другие подтянутся. Такие здесь есть. Это точно. Вы главное начните, сделайте первый шажок. Обязательно другие подхватят это полезное ваше начинание. Обязательно! Для начала отпишитель в личку к Администратору. Посоветуйтесь, обсудите ньюансы, разучитьсесь поддержкой?... Ну и в вперёд с флагом и воплем ура (что в переводе означает убъём всех врагов) Когда-же нас шуганут отсюда? Изменено 13 Ноября 2016 пользователем Serge! Поделиться этим сообщением Ссылка на сообщение
Serge! 127 Опубликовано 15 Ноября 2016 (изменено) Ну если прям вообще новый класс, то это через движок. И никак иначе. А если на основе существующих, то не такой уж он новый. Так ведь будет все по разному, для разных классов. Обять двадцать пять. Сколько можно повторять: в Lua нет никаких классов (в классицеском понимании) он оперирует понятиями объектов. Не верите мне - вот вам слова разработчиков Lua " В Lua нет понятия класса; каждый обьект определяет свое поведение и свои данные. Однако это совсем не сложно -эмулировать классы в Lua, идя по пути прототипных языков вроде Self или NewtonScript. В этих языках у обьектов нет классов. Вместо этого каждый обьект может иметь прототип, который является обьектом, в котором первый обьект ищет операции, которые он не знает. Для представления классов в таких языках мы просто создаем обьект, который будет использован только в качестве прототипа для других обьектов (его экземпляров). И классы, и прототипы выступают в качестве места, в которое помещается поведение, общее для различных обьектов."Ядро Lua, как и сталкера, построены на С++ и разумеется содержат классы, но Вам, посредствам Lua, даётся доступ не к классам ядра, а к объектам, созданным там, естественно с помощью и посредством классов. Путаницу внесли разработчики Сталкера, введя в интервейс ключевое слово class для создания или подключения к таким объектам. (Кстати, в 1С, которая очень похожа по принципам реализации на Сталкера, разработчики не стали корчить из себя очень умных и не лукавя обозвали аналогичный механизм прямо "СоздатьОбъект(...)"). Да, мы может создавать новые объеты или прототипы уже созданных, но не классы. Мы можем писать скрипты, используя подходы и принципы ООП, но это не ООП в его изначальном понимании. По большому счёту всё это муть. Главное, поменьше делать ошибок и не зашхериваться в догмах. Отцы основатели Сталкера столько лишнего намутили (руководствуюсь порой модой, а не здравым смыслом... да да таковая в программистском мире тоже есть), что по мере увеличения сложности сюжетов и "наваротов" в разных новых модах, эта конструкция уже шевелится с большой перегрузкой. Изменено 15 Ноября 2016 пользователем Serge! 1 1 Поделиться этим сообщением Ссылка на сообщение
Serge! 127 Опубликовано 15 Ноября 2016 (изменено) Мы даём этой связке идентификатор - и это не что иное, как имя класса. По имени класса мы создаём конкретный экземпляр класса функцией create. Да нет. Вы создаете новый экземпляр объекта (а по сути просто получаете ссылку на таблицу), структура и некоторый набор свойств которого уже определены в ядре. Вы можете добавить ему некоторые свои методы. Это верно. Но это не новый класс. Попробуйте создать по своему алгоритму класс, например, облака и погонять его по небу. Изменено 15 Ноября 2016 пользователем Serge! Поделиться этим сообщением Ссылка на сообщение
Serge! 127 Опубликовано 15 Ноября 2016 А в чем проблема?В том, что это лишь декларация и не более того. Поделиться этим сообщением Ссылка на сообщение
Serge! 127 Опубликовано 15 Ноября 2016 Ну вот не декларация, вот ветер гоняет облака по небуНет комментариев, т.к. это уже пустой трёп начинается. Поделиться этим сообщением Ссылка на сообщение
Serge! 127 Опубликовано 15 Ноября 2016 (изменено) Экземпляр класса - это и есть объект. А я что сказал. Именно это, только с дополнением. Вы не можете создать свой класс, можете создать только объект - новый экземпляр класса, который был предопределён ядром. Lua, а именно он является единственным связующим между пользователем и ядром, может оперировать только с таблицами. Поэтому все созданные внутренние классы ядра (С++) Вы после экспорта получаете как ссылки на эти таблицы (точнее метатаблицы). Когда же Вы в скрипте якобы создаете новый класс (через описание class), то просто создаете новую метатаблицу или пустую, или на основании уже существующей в ядре - т.н. "наследование". Где здесь классы? Создайте всё-же полноценный класс облака. Изменено 15 Ноября 2016 пользователем Serge! Поделиться этим сообщением Ссылка на сообщение
Serge! 127 Опубликовано 16 Ноября 2016 (изменено) @Malandrinus, Мне всё больше и больше кажется, что мы говорим на разных языках, или не понимаем (не хотим понять) друг друга. Поэтому продолжение данной дискуссии считаю лишённой смысла. На последок просто задам несколько вопросов, на которые сам и отвечу (как я считаю верным). 1. В простом/классическом Си есть классы или их понятие? Мой ответ: Нет ни по определению, ни по сути, ни по стандарту. 2. Можно ли средствами Си эмулировать классы, как они определены в Си++? Мой ответ: Да и легко, учитывая, что в нём определены структуры, объединения, массивы и указатели. 3. Так есть, с учетом этого классы в Си? Мой ответ: Нет. Я уже сказал и не стоит "воду в ступе толочь", но вполне возможна эмуция этого понятия. 4. Есть классы в Lua? Мой ответ: Нет (см. описание стандарта и комментарии Разработчиков языка). 5. Можно ли средствами Lua эмулировать классы? Мой ответ: Да, а, учитывая прекрасно реализованные механизмы таблиц и, особенно, метатаблиц, ещё проще и "элегантнее" чем в простом Си. 6. Есть классы в Сталкере? Мой ответ: Нет., т.к. скриптовый интерфейс ядра с пользователем основан на Lua. 7. Можно ли эмулировать классы в Сталкере? Мой ответ: Да. См. п. 5 8. Так можно ли называть в Сталкере эти "эмулянты" классами? Мой ответ: Всё можно называть как угодно и чем угодно, главное, чтобы читающий понимал: "А что же всё таки за этими словами и названиями есть на самом деле?". При условии, что ему такое вообще надо, разумеется. Захотите? напишите свои ответы, не захотите - тоже приемлемо. Удачи. Изменено 16 Ноября 2016 пользователем Serge! Поделиться этим сообщением Ссылка на сообщение
Serge! 127 Опубликовано 16 Ноября 2016 @Nazgool, Всё правильно. Я уже давно написал, что активно пользуюсь такой возможностью и мне, простите, плевать кто и как её называет. Но... меня обвинили в незнании "терминологии". Мне это не очень понравилось, хотя "ходячую энциклопедию" или "истину в последней инстанции" я из себя никогда и не строил. Как то так. Поделиться этим сообщением Ссылка на сообщение
Serge! 127 Опубликовано 16 Ноября 2016 (изменено) терминология это не то что моё слабое место, а вообще - ей нет места Понял, эта Ваша позиция.Я уважаю её, хотя и не поддерживаю. Но всё же немного терминов, хотя бы и из Википедии: "Спор — столкновение мнений, позиций, в ходе которого рождается истинное мнение и где каждая из сторон аргументированно отстаивает своё понимание обсуждаемых проблем, и стремится опровергнуть доводы другой стороны.". Здесь, на мой взгляд ключевым является слово "аргументировано". Я всё время (по крайней мере я так считаю) старался аргументировать свои постулаты цитатами и ссылками на какие-то первоисточники. К тому я не однократно говорил - да, это не классс, а эмуляция класса; это не ООП, а применение методов и подходов ООП; это эффективно и вполне приемлемо в сталкеровских скриптах. "Читайте, читайте, сличайте" (правда часть была и перенесена и удалена). Основным же аргументом другой стороны (я могу и ошибаться) был тезиси: "это не по понятиям" и "здесь так не принято" (немного утрирую). Потому и написал: " продолжение данной дискуссии считаю лишённой смысла.". И продолжать ее не буду. Изменено 16 Ноября 2016 пользователем Serge! Поделиться этим сообщением Ссылка на сообщение
Serge! 127 Опубликовано 16 Ноября 2016 (изменено) А то я в lua леплю свой класс, и хочу чтобы он был похож на настоящий Лепите и не задумывайтесь о всякой словесной шелухе (тем более, цитат приводить не буду, что Вам это чуждо). К тому же разработчики (а плакали "мол у нас нет программистов сишников") даже предоставили возможность использовать в скриптах оператор class, которого в чистом Lua просто нет. Да, имеются некоторые ограничения при приминении конструкторов из-за полного отсутствия докуметации (если разумеется не лезть в само ядро), что иногда приводит к непредсказуемым результатам. Но это не критично, т.к. обходится тем или иным способом. А так, не забивайте себе голову, хороший результат всегда отнивелирует, как здесь говорят, "костыли" (так и не узнал истинное значение этого термина) реализации. споре рождаются либо враги, либо "підлабузники" (укр. - не могу подобрать слова лучше этого, уж извините) Я не знаю украинского, а по русски бы сказал: "либо враги, либо сторонники/сподвижники". Хотя возможна и ещё одна сторона: "пофигисты". В жизни не всё так одназначно. Изменено 16 Ноября 2016 пользователем Serge! Поделиться этим сообщением Ссылка на сообщение
Serge! 127 Опубликовано 16 Ноября 2016 (изменено) То бишь я могу тупо от себя залепить класс мутантов, не задумываясь о наследовании? Если вопрос стоит так прямо: могу или не могу? То прямой ответ: Да, можете, но... после этого вам скриптами придется переписать часть ядра, чтобы этот ваш новый класс полноценно работал. Если же Вы к такому подвигу не очень готовы, то извольте ограничить себя наследованием от класса предопределённого ядром дополнив его чем-то своим заветным. Можете многое (почти всё), а вот стоит ли это делать? Изменено 16 Ноября 2016 пользователем Serge! Поделиться этим сообщением Ссылка на сообщение