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

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

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

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

 

 

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

myobj:myfunc()
f( self )
end

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

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

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

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

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

@Barmolini, @Dennis_Chikin,

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

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

 

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

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

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

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

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

 

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

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

 

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

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

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

local a = vector()


local vid, gvid, i, aid, se_name
a = db.actor:position()
vid = db.actor:level_vertex_id()
gvid = db.actor:game_vertex_id()
aid = db.actor:id()
for i, se_name in ipairs(object_names) do
alife():create(se_name, a, vid, gvid, aid)
end
aem_manager.manage_money(1, "out")

 

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

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

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

Expression : ai().script_engine().functor(start_game_callback,functor)


Function : CALifeSimulator::CALifeSimulator
File : E:\stalker\patch_1_0004\xr_3da\xrGame\alife_simulator.cpp
Line : 64
Description : failed to get start game callback

 

Я понимаю что вылет связан с строчками вызова новой игры,_но что именно - не понимаю.
Слезно прошу помочь потому что как я ни удалял файл, ошибка есть,_я даже пытался его изменить, но ошибка снова наведалась...
(Заранее извиняюсь и каюсь в том что написал тут,_простите народ,_я здесь новичок._Ваш форум мне хорошо помог,_надеюсь поможете еще._Заранее спасибо и еще раз извиняюсь за свою невнимательность,_если есть тема по моему логу направьте меня туда._Заранее спасибо.)
Изменено пользователем Kirgudu
Добавлено Kirgudu,

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

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

 "Burn the rich // eat the rich"

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

Egor4ikModMaker.gif

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

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

 

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

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

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

здесь видно ахтунги при разрыве рюкзака

 

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

Изменено пользователем Romann
 

Мать: ASRock X470 Master SLI. Процессор: AMD Ryzen 9 3900X 12-Core(4200 MHz).
Память: Patriot Memory 3200 C16 Series. DDR4-3200(1600МГц), 16Гбх2(32Гб).
Видео: GeForce GTX 1060 6GB. Блок питания: CoolerMaster 750 Вт. Корпус: Zalman i3 Edge.

Химера конечно сильный хищник, а все держится дома. Чего же ты пришел к ней домой и пытаешься её убить? © Болотный Доктор

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

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

 

С точки зрения банальной эрудиции, в 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"
http://post-stalkera.ru/load/katalog_fajlov_dlja_ns_dmx_mod/adapted_nano_suit_crysis/1-1-0-60

 
Сейчас закоментировал в amk.script эти строчки : 
-- func_by_string["sleep_mon_nano_pult"] = function (params_string)
-- mod_call("mon_nano_pult",params_string)
-- end

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

Мать: ASRock X470 Master SLI. Процессор: AMD Ryzen 9 3900X 12-Core(4200 MHz).
Память: Patriot Memory 3200 C16 Series. DDR4-3200(1600МГц), 16Гбх2(32Гб).
Видео: GeForce GTX 1060 6GB. Блок питания: CoolerMaster 750 Вт. Корпус: Zalman i3 Edge.

Химера конечно сильный хищник, а все держится дома. Чего же ты пришел к ней домой и пытаешься её убить? © Болотный Доктор

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

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

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

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

 

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

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

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

 

Мать: ASRock X470 Master SLI. Процессор: AMD Ryzen 9 3900X 12-Core(4200 MHz).
Память: Patriot Memory 3200 C16 Series. DDR4-3200(1600МГц), 16Гбх2(32Гб).
Видео: GeForce GTX 1060 6GB. Блок питания: CoolerMaster 750 Вт. Корпус: Zalman i3 Edge.

Химера конечно сильный хищник, а все держится дома. Чего же ты пришел к ней домой и пытаешься её убить? © Болотный Доктор

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

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

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

 

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

 

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

 

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

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

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

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

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

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

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

Войти

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

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

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