Akcok 164 Опубликовано 8 Июля 2013 (изменено) Помогите пожалуйста полному барану в скриптах сталкера (то есть мне). Есть один хороший скрипт за авторством Shredder'a для ЗП где выводится пояс артефактов как в ТЧ (немного предыстории, сам скрипт еще был сделан командой OGSM для мода на ЧН, но сам код просто ужасен, в итоге Shredder его изменил). Он работает только на ЗП, при попытке адаптировать на ЧН словил вылет. А именно в ЧН нету метода SetTextureRect. Есть ли ему замена? И как примерно должно работать (если допустим нужно переделывать и так далее). Сам кусок кода -- Вывод артефактов function show_arts() if not icons_created then create_icons() end for i = 1,5 do art = belt[i] if art and (arts[i] ~= art) then icons[i]:SetTextureRect(pcfm.get_icon_rect(art)) arts[i] = art elseif not art then arts[i] = "" icons[i]:SetTextureRect(Frect():set(0, 0, 1, 1)) end end end Изменено 8 Июля 2013 пользователем power-cat Поделиться этим сообщением Ссылка на сообщение
Akcok 164 Опубликовано 8 Июля 2013 Shadows, спс заработало. Помню еще когда ковырялся в скриптах ЧН\ЗП приходилось иногда переименовывать одну и ту-же функцию. Правда не помню какую... мож даже и эту. P.S. Кстати где можно глянуть переименованные функции? Сравнение ТЧ\ЧН с ЗП. И еще есть такой вопрос, правда кода для примера нету. Как сделать скриптовое меню аля ТСС для ЧН\ЗП? Тама используется насколько помню метод Init. Есть аналог какой? Поделиться этим сообщением Ссылка на сообщение
Akcok 164 Опубликовано 11 Июля 2013 Именно вот эти методы я и имел ввиду когда говорил о билдовском меню. CUIStatic void Init(float x, float y, float w, float h); void Init(string texture, float x, float y, float w, float h); Ни в ЧН, ни в ЗП этих методов вроде как и нету. А они как раз и юзаются в билдовском меню (хотя точнее сказать один из этих методов). Опять таки альтернатива есть? Поделиться этим сообщением Ссылка на сообщение
Akcok 164 Опубликовано 22 Июля 2017 (изменено) Братишки, помогите разобраться, что за (цензура). Скрипты ли это не оптимизированные или движог УГ, не особо предназначен для такого. В чём суть. Есть мод, в котором спавнятся мутанты (волны), последовательно. При этом каждая следующая волна садит FPS. В начале игры допустим 200, волна 8-9 уже 30. Реализация: 1. При убийстве мутанта спавнится в инвертарь ГГ предмет (сделано через скрипт ogsm_mutants, думаю многие знают суть. Моб мёртв - даём предмет). 2. Считаем количество предметов, при определённом количестве даём инфо. function item_2_volna() local cnt = db.actor:object_count() local ch=0 for i=0, cnt-1 do local item = db.actor:object(i) if item:section() == "trofey_volna" then local sobj = alife():object(item:id()) if sobj then ch = ch+1 if ch == 20 then db.actor:give_info_portion("volna_2") if has_alife_info("volna_2") and not has_alife_info("music_volna_2") then local snd = sound_object([[gameplay\next_volna]]) snd:play_no_feedback(db.actor,sound_object.s2d, 0, vector():set(0, 0, 0), 1.0) db.actor:give_info_portion("music_volna_2") zombie_timer.next_volna_timer() if db.actor:object("double_points1") ~= nil then del_x2() end end end end end end end 3. Определили? Спавн следующей волны. function sidor_volna_2() if level.name() == "predbannik" and not has_alife_info("mob_l2") and has_alife_info("volna_2") then alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) alife():create("zombie_game2",vector():set(-475,-0.73,-170),288029,967) db.actor:give_info_portion("mob_l2") up_remove_corpses() save_volna_2() end end 4. Ну и так далее, далее по аналогии. Что только не пробовал... И переносил спавн волны с помощью кол-ва убитых мобов в xr_statistic (то бишь спавн предмета не причём), часть функций переносил в load, а не update (bind_stalker), и есть перерывы между спавном (10 сек... минута... разницы ноль). И спавн мобов с помощью ogsm_packet, и так далее. Ничего не помогает. FPS падает и падает... Вопрос: в чём проблема, как решить? Изменено 22 Июля 2017 пользователем power-cat Поделиться этим сообщением Ссылка на сообщение
Akcok 164 Опубликовано 22 Июля 2017 Количество влияет, но не оч сильно. Когда мобов 60, FPS садится чуть быстрее. Трупы удаляются, даже делал удаление при убийстве половины мобов. Ничего не помогает. Мне кажется даже если 1 будет, всё тоже самое. Поделиться этим сообщением Ссылка на сообщение
Akcok 164 Опубликовано 22 Июля 2017 Насчёт перезагрузки не знаю, но save\load не помогает. И опять таки, эти костыли даже если и работали б, всё равно не подойдут для геймплея, отрывают же. + в сталкере не мало мест, где много мобов (чаэс) и т.д., но всё нормально. Мне кажется дело не в количестве. Поделиться этим сообщением Ссылка на сообщение
Akcok 164 Опубликовано 22 Сентября 2017 Заранее предупреждаю, я ноль в скриптах и могу не знать обычных нюансов. В чём проблема. В скрипте есть тонна local. Например: local wave_bloodsucker1_l4 = { mob = {"bloodsucker_game1", "bloodsucker_game2", "bloodsucker_game3"}, pos = {39,-2.13,7.9,20578,3232} } Всё это нужно думаю понятно зачем. Однако при большом количестве таких штуковин появляется вот такая ошибка: main function has more 200 local variables И как бороться с этой дичью? 1 Поделиться этим сообщением Ссылка на сообщение
Akcok 164 Опубликовано 23 Сентября 2017 Так это... Они могут и не использоваться. Допустим с окончанием до l3 юзаются, а если скопировать, заменить на l4,l5..., и просто вставить в скрипт (опять таки никакая функция их не подхватывает) всё равно вылет. P.S. Если что можно в ЛС. Поделиться этим сообщением Ссылка на сообщение
Akcok 164 Опубликовано 24 Сентября 2017 (изменено) И выходит function at line N has more up 60 значений. p.s. в другое место сунул, всё стало ок, канеш помогло, но тем не менее этот чёртов лимит не устраивает. Изменено 24 Сентября 2017 пользователем power-cat Поделиться этим сообщением Ссылка на сообщение
Akcok 164 Опубликовано 7 Апреля 2018 Такой вот вопросик, прошу помочь. Мод: USF BETA 2 (ЗП 1.6.02) Решил почистить ресурсы, удалить многие неюзаемые конфиги и остаточные файлы из ЗП (скрипты не трогал). Удалил многое, теперь по факту USF это как проект использующее двигло ЗП. Но... Невозможно заспавнить любого НПС, вылетает. До чистки такого не было. Лог: FATAL ERROR [error]Expression : !m_error_code [error]Function : raii_guard::~raii_guard [error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp [error]Line : 748 [error]Description : ...ta 2\usf beta 2\bin\gamedata\scripts\xr_logic.script:943: bad argument #1 to 'gfind' (string expected, got nil) stack trace: На всякий случай xr_logic.script - https://yadi.sk/d/9-MJeCvT3UCJRh В чём может быть причина? Что-то удалил не то... Но что? С монстрами (да и в остальном) всё ОК. Поделиться этим сообщением Ссылка на сообщение
Akcok 164 Опубликовано 8 Апреля 2018 @WinCap , не помогает, тот-же самый вылет, просто номер строки сдвинуло. Поделиться этим сообщением Ссылка на сообщение
Akcok 164 Опубликовано 8 Апреля 2018 @_Val_ , точно не они, так как уже до глобальной чистки там было почищено и всё работало с НПС. Поделиться этим сообщением Ссылка на сообщение
Akcok 164 Опубликовано 8 Апреля 2018 (изменено) @abramcumner , полный лог https://yadi.sk/i/rWIUwN8o3UDa3b P.S. любой НПС при спавне вылетает (с помощью например Повелителя Зоны). Вот ес чо как выглядит папка configs https://yadi.sk/d/wAMInwBC3UDaQT Пробовал возвращать разные дефолт файлы (squads, script_sound, dialogs, infoportions), но не помогало. Изменено 8 Апреля 2018 пользователем power-cat Поделиться этим сообщением Ссылка на сообщение
Akcok 164 Опубликовано 8 Апреля 2018 (изменено) @WinCap, (UPD) помогло (правда не с первой попытки в лог чо надо написалось, ещё там в _g.script покопал). Оказалось виновата папка trade, которую удалил из папки misc. Игра жаловалась на отсутствие секций покупки. Папку вернул, всё стало окей. Большое спасибо! Кусок кода пригодится Изменено 8 Апреля 2018 пользователем power-cat Поделиться этим сообщением Ссылка на сообщение