Перейти к контенту

Рекомендуемые сообщения

Тема для обсуждения скриптов всего и всех в серии игр STALKER.


Задавая вопрос (!):
1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего;
2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме);
3. Изучите информацию которая может вам помочь:

  Информация (Показать)

4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос;
5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе;
6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода;
7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины.
8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ.
9. И помните: «Правильно заданный вопрос – половина ответа».

 

Какие вопросы следует задавать, а какие нет...

  Читать рекомендуется. (Показать)

И последнее: очень рекомендовано к прочтению Правила форума
 


  • Спасибо 1
  • Полезно 2
Ссылка на комментарий

Он передает в свою функцию ссылку на копию стека, привязанную к объекту. Точнее, неудачно пытается. И что он хочет с ней сделать ? А в данной конкретной нотации - даже не ее, а вообще неизвестно что.

Но в стеке зачем-то хранит ссылку на функцию.

 

 

P.S. А вообще я не понимаю этот ваш ООП от слова совсем. Когда-то давно, когда была возможность объявлять статические переменные, копирование контекста было осмысленным. Но где и когда последний раз вы видели статическую переменную ?

Изменено пользователем Dennis_Chikin
  • Спасибо 1
Ссылка на комментарий
  Dennis_Chikin писал(а):
Он передает в свою функцию ссылку на копию стека

А есть другой способ вызывать в классе собственный метод, не создавая отдельно объект?

 

@stalk9r, кстати да! Вызывать то метод нужно через двоеточие, не через точку! :)

Изменено пользователем Barmolini
Ссылка на комментарий

И опять же, покажите мне кто-нибудь хоть один объект, в котором зачем-то надо было бы хранить свои уникальные для каждого объекта функции.

И как вы их там собираетесь описывать, чтобы были уникальными ?

Изменено пользователем Dennis_Chikin
Ссылка на комментарий

@Dennis_Chikin, я же писал: 

  Barmolini писал(а):

Зачем - это другой вопрос.

Какой-то смысл автор в этом увидел. Хозяин - барин.

Изменено пользователем Barmolini
Ссылка на комментарий

Ну, так-то да. Только оно у него не работает.

Хотя, в принципе self.func() - вызов вполне рабочий. Вот только с переменными будет все странно, и зачем таким образом забивать стек и устраивать тормозилово - я все равно не понял.

В общем, если вы зачем-то хотите передать в функцию ссылку на копию стека стек объекта, лучше так и писать:
function f( obj ) ... end

myobj:myfunc()
f( self )
end

- и будет вам счастье. Если хотите передать конкретные аргументы - предавайте аргументы.

Исключение - если модифицируете чей-то курсач, и не хотите перелопачивать весь код.

Изменено пользователем Dennis_Chikin
  • Спасибо 1
Ссылка на комментарий

@Dennis_Chikin, да там банальная опечатка. Вызов нужно делать через двоеточие:

self:pokupka({"bread","vodka","kolbasa"})
И всё будет чудно.
  • Спасибо 1
Ссылка на комментарий

А теперь берем в руки profile_timer(), смотрим на результаты, и проникаемся...

Ссылка на комментарий

@Barmolini, @Dennis_Chikin,

Двоеточие помогло, спасибо! А то 2 часа как об стенку лбом :dash2:

А заморачиваюсь я только с целью уменьшения размера скрипта. Зачем повторять одни и те же строки 50 раз подряд, когда можно вызвать функцию (или метод?) и передать ей таблицу для обработки.

 

Есть хабар - пойдёт базар :az1000106:

Ссылка на комментарий

@stalk9r, пфф, что мешает это делать без ООП? Зачем его применять там, где оно абсолютно не нужно? У тебя же нет разветвленной системы классов, ты ничего не наследуешь, я не понимаю хоть убей.

Ссылка на комментарий

Вспоминается один древний разговор:

 

- А это вообще ЧТО ?

- Это - дипломный проект. Он - чтобы диплом получить.

 

Ну, может, у человека тоже курсовая, как у ПЫСов, когда они начинали это все делать... А на кафедры ТАУ в общем-то    всегда извращенцев в преподы набирали.

Ссылка на комментарий

@Struck, да у меня и нету там ООП (ну по крайней мере я так думаю), задумка была такая: делаем функцию для спавна и вызываем её из разных функций с передачей ей разных наборов аргументов, дабы не повторять каждый раз

  вот этот блок (Показать)

Есть хабар - пойдёт базар :az1000106:

Ссылка на комментарий

Я прошу прощения если нарушаю правила форума_(я не нашел темы по вылету именно с моим логом или проблема с таким же файлом)._Ув.дминистрация, прошу не удалять мое сообщение и рассмотреть как просьбу о помощи._Я столкнулся с вылетом в файле - "_g.script".

  Вылет (Показать)
Изменено пользователем Kirgudu
Добавлено Kirgudu,

Прошу соблюдать правила пунктуации.

[Eger.Overkill] // Ⓐ // Eкьюалити / Uнити // 

 "Burn the rich // eat the rich"

О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист.

Egor4ikModMaker.gif

Ссылка на комментарий

Не нарушает. Хотя вопрос в принципе ни разу не новый.

 

Либо синтаксическая ошибка в упомянутом файле, либо в тех, на которые он ссылается. Проверяем внимательно то, что меняли. Если не получается - идем на lua.org, качаем компилятор, и пытаемся откомпилить упомяутые файлы. Если менял кто-то другой - вопросы к этому другому.  Если проблема - результат попытки собрать в одном месте файлы из разных источников, то так делать не надо.

Изменено пользователем Dennis_Chikin
Ссылка на комментарий

Доброго времени суток, я адаптировал нанокостюм, всё шикарно работает, но у пульта есть глюк, при перекладке, продаже или просто если выложить он активируется, а потом опять в инвентаре, из-за этого вылетают ахтунги, при принудительной чистке инвентаря(к примеру после снотворного Доктора или разрыва рюкзака). Чтоб было понятней вот 

  видео (Показать)
Изменено пользователем Romann
  железо (Показать)
Ссылка на комментарий

Ну вот говорили же об этом уже... Какой костюм ? Куда адаптирован ? Как адаптирован ? Что вообще за пульт ?

 

С точки зрения банальной эрудиции, в bind_stalker есть коллбэк на использование предмета - function actor_binder:on_use_object( item ), и есть на потерю function actor_binder:on_item_drop( item ).

 

Вот куда и зачем прицеплен этот самый пульт, и почему он "опять в инвентаре" - это может сказать только телепат 80-го уровня. А они, как известно, всегда все в отпуске.

 

 

Запилил, кстати, начало статьи в "академию". Далее будет дописываться.

Изменено пользователем Dennis_Chikin
Ссылка на комментарий

  Dennis_Chikin Калбек я уже пробовал, не помогает, (ну я не спец, может не правильно пробовал.), скрипты, как я понял, писал Монорох, так я не объясню что нано костюм, вот скрипты ( https://yadi.sk/d/HXyb9AXDcZtNa),там ориг. версия и адаптация скриптов, адаптировал на ОП-2 , ссылки на другие сайты не льзя, но вот описание , где качал :

 

"Костюм работает в 5-ти режимах: Маскировка, броня, сила, регенерация, мобильность.

Маскировка позволит быть невидимым на некоторое время. Сила - временно сможете переносить 250 кг. Мобильность позволяет бегать не теряя выносливости даже если вы немного перегружены. Регенерация - быстрое восстановление здоровья. Броня - максимальная защита от повреждений и восстановление состояния костюма, т.к остальные режимы его тратят и очень слабо защищают. Костюм озвучен..
В разных режимах разный худ масок, отсутствие звука шагов (стелссс..)
Разное отображение иконок в инвентаре. Костюм в продаже у Сахарова, стоит ДОРОГО, заработать эти деньжища вполне реально, это все что я скажу..
И еще в конце содержимого вашего файла outfit.ltx в самом низу допишите строку
#include "monnoroch_items.ltx"
  Вот от сюда (Показать)
Изменено пользователем Romann
  железо (Показать)
Ссылка на комментарий

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

Ну и кто теперь мешает перевесить вызов с потери предмета на использование ?

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

 

То есть, вместо идиотского mod_call("mon_nano_pult",params_string) - которое когда-то было засshitой от модификаций, сразу проверить в on_use, и вызвать monnoroch.mon_nano_pult().

Изменено пользователем Dennis_Chikin
Ссылка на комментарий
Dennis_Chikin

Я просто не скриптер, особо не разбираюсь, всё делаю с помощью проб и шибок. А можно подробнее , как сделать эту проверку и вызов?

  железо (Показать)
Ссылка на комментарий

тупо в лоб function actor_binder:on_use_object( item ) - добавляем

if item:section() == "nano_pult" then monnoroch.mon_nano_pult(); return end

 

Ну или что там вместо item.

 

Если "я не скриптер", то тогда вообще не понимаю, как можно стыковать между собою кучу всякого странного винегрета, чтобы оно при этом еще и как-то работало.

 

А если не в лоб - вообще давно пора перейти на динамические вызовы и динамические апдейты.

  • Спасибо 1
Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...