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

Скриптование


Svoboда

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

Помогите пожалуйста полному барану в скриптах сталкера (то есть мне).

Есть один хороший скрипт за авторством 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
 
Изменено пользователем power-cat

Поделиться этим сообщением


Ссылка на сообщение

Shadows, спс заработало. :) Помню еще когда ковырялся в скриптах ЧН\ЗП приходилось иногда переименовывать одну и ту-же функцию. Правда не помню какую... мож даже и эту.

P.S. Кстати где можно глянуть переименованные функции? Сравнение ТЧ\ЧН с ЗП.

И еще есть такой вопрос, правда кода для примера нету. Как сделать скриптовое меню аля ТСС для ЧН\ЗП? Тама используется насколько помню метод Init. Есть аналог какой? 

Поделиться этим сообщением


Ссылка на сообщение

Именно вот эти методы я и имел ввиду когда говорил о билдовском меню. 

 

CUIStatic
void Init(float x, float y, float w, float h);
void Init(string texture, float x, float y, float w, float h);

Ни в ЧН, ни в ЗП этих методов вроде как и нету. А они как раз и юзаются в билдовском меню (хотя точнее сказать один из этих методов). Опять таки альтернатива есть?

Поделиться этим сообщением


Ссылка на сообщение

Братишки, помогите разобраться, что за (цензура).

Скрипты ли это не оптимизированные или движог УГ, не особо предназначен для такого.

В чём суть. Есть мод, в котором спавнятся мутанты (волны), последовательно. 

При этом каждая следующая волна садит 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 падает и падает...

Вопрос: в чём проблема, как решить?

Изменено пользователем power-cat

Поделиться этим сообщением


Ссылка на сообщение

Количество влияет, но не оч сильно. Когда мобов 60, FPS садится чуть быстрее.

Трупы удаляются, даже делал удаление при убийстве половины мобов.

Ничего не помогает. Мне кажется даже если 1 будет, всё тоже самое.

Поделиться этим сообщением


Ссылка на сообщение

Насчёт перезагрузки не знаю, но save\load не помогает.

И опять таки, эти костыли даже если и работали б, всё равно не подойдут для геймплея, отрывают же.

+ в сталкере не мало мест, где много мобов (чаэс) и т.д., но всё нормально. Мне кажется дело не в количестве.

Поделиться этим сообщением


Ссылка на сообщение

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

В чём проблема.

В скрипте есть тонна 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

Поделиться этим сообщением


Ссылка на сообщение

Так это... Они могут и не использоваться. Допустим с окончанием до l3 юзаются, а если скопировать, заменить на l4,l5..., и просто вставить в скрипт (опять таки никакая функция их не подхватывает) всё равно вылет. P.S. Если что можно в ЛС.

Поделиться этим сообщением


Ссылка на сообщение

И выходит function at line N has more up 60 значений.

p.s. в другое место сунул, всё стало ок, канеш помогло, но тем не менее этот чёртов лимит не устраивает.

Изменено пользователем power-cat

Поделиться этим сообщением


Ссылка на сообщение

Такой вот вопросик, прошу помочь.

Мод: 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

В чём может быть причина? Что-то удалил не то... Но что? С монстрами (да и в остальном) всё ОК.

Поделиться этим сообщением


Ссылка на сообщение

@WinCap , не помогает, тот-же самый вылет, просто номер строки сдвинуло.

Поделиться этим сообщением


Ссылка на сообщение

@_Val_ , точно не они, так как уже до глобальной чистки там было почищено и всё работало с НПС.

Поделиться этим сообщением


Ссылка на сообщение

@abramcumner , полный лог https://yadi.sk/i/rWIUwN8o3UDa3b

P.S. любой НПС при спавне вылетает (с помощью например Повелителя Зоны). 

Вот ес чо как выглядит папка configs https://yadi.sk/d/wAMInwBC3UDaQT

Пробовал возвращать разные дефолт файлы (squads, script_sound, dialogs, infoportions), но не помогало. 

Изменено пользователем power-cat

Поделиться этим сообщением


Ссылка на сообщение

@WinCap, (UPD) помогло (правда не с первой попытки в лог чо надо написалось, ещё там в _g.script покопал). Оказалось виновата папка trade, которую удалил из папки misc. Игра жаловалась на отсутствие секций покупки. Папку вернул, всё стало окей. Большое спасибо! Кусок кода пригодится :) 

Изменено пользователем power-cat

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   1 пользователь

×
×
  • Создать...