Перейти к содержанию

ian98

Сталкеры
  • Публикаций

    834
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные ian98


  1. Aleksei Khohlov Не думаю, что вообще хоть как-то буду пытаться улучшить игру с визуальной точки зрения. Насчет квестов, думаю, тоже ничего не будет. Возможно, попытаюсь что-нибудь сделать с  сюжеткой, чтобы можно было проходить за разные группировки без вынужденных провалов миссий, но и это перспектива далекая и не факт, что выполнимая в принципе. Я еще не знаю на все 100% как там всё устроено, но догадываюсь, что пересобрать 5 раз сюжет под каждую группировку та еще задачка


  2. А что значит <terrain_sect></terrain_sect> в профилях нпс? Значит ли это, что бандиты с <terrain_sect>stalker_terrain<terrain_sect> будут посещать и останавливаться в местах, где останавливаются обычно вольные сталкеры? 


  3. ParaworldFan Этот подойдет?

    Спойлер
    
    local level_vertexes={
    уровень = {lvid=значение, gvid=значение},
    }
    
    local npc = { -- берутся из spawn_sections, но может и по классу пройдет. Не знаю.
    "имя"
    }
    
    function random_npc_spawn()
    local count = 1
    local section = npc[math.random(table.getn(npc))] -- выбираем секцию моба
    local lv = math.random(level_vertexes[level.name()]["lvid"]) --выбираем левел вертекс
    local gv = level_vertexes[level.name()]["gvid"] --выбираем гэйм вертекс
    for ind = 1, count do
    	alife():create(section, level.vertex_position(lv), lv, gv)--\\level.vertex_position(lv) - позиция левел вертекса
       end
    end

     

    Активировать сразу и 1 раз, думаю, как-то можно. math.randomы поубирать, думаю, тоже можно. Вроде как _init в bind_stalker срабатывает 1 раз. Но это все надо пробовать. Я не мастак, просто рискнул помочь)


  4. vader_33 Я подозревал, что упоминать не стоит возможно. Все-таки мод, во-первых, недоделан. Во-вторых, может просто так сказать позорить по чем зря, не всем ведь кажется рандомайзер отличной идеей. Но, помощь была, помощь была огромная по моему скромному мнению, поэтому решил упомянуть. Там еще и в скриптах все подписано) Так что, вляпались вы с Sergey_Belichenko по самые помидоры.

    Тень121 Это рандомайзер. Суть в том, что сюжетка остается прежней, но math.random выкручивается по максимуму, что делает каждое перепрохождение совершенно разным. По большей части вдохновлялся стримами по гта са рандомайзер и играми в жанре роглайк. Ничего подобного на сталкер я не видел, поэтому и взялся реализовывать. Знаний у меня никаких, буквально это мой второй мод, если можно так сказать. Первый вышел еще куда менее удачным, тоже рандомайзер, но на ЗП. Там вообще деревня, неделями ковырял конфиги, тут уже научился скриптами пользоваться. Скачать можно по ссылке. Она указана.

    • Лайк 1
    • Мастер! 2

  5. Спойлер

     

    Рандомайзер на S.T.A.L.K.E.R: SoC.                                                                            "Это Зона, здесь всякое бывает..." 

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

    - Все нпс в игре экипированы в разную броню и носят с собой случайную пушку, даже буквально носят ее по-разному(разным хватом ведут стрельбу). Ранг персонажей также всегда разный и вы точно не знаете за каким углом вас ждет меткий снайпер с гауссом в костюме новичка, а где расчетливый мастер в экзе с пистолетом Макарова, а что если снайпер-мастер в экзе с гауссовкой на АТП O_O? Все возможно.

    - Все персонажи в игре говорят всеми возможными фразами из оригинальных ресурсов + какая-то часть озвучки из ЗП и ЧН. Ведут задушевные шизобеседы у костра. Лично я доволен и иногда ловлю лулзы с этого, по крайней мере так было на первых порах. Насчитал 10300 всевозможных фразочек и монологов. Реальное ли это количество абсолютно разных фраз или нет, присутствуют ли в моей сборке повторяющиеся звуковые дорожки, думаю, проверить очень сложно. Я пытался. Честно. Вроде бы все разные.

    Спойлер

     

    Ну и другие случайности...

    Спойлер

    ?imw=5000&imh=5000&ima=fit&impolicy=Lett?imw=5000&imh=5000&ima=fit&impolicy=Lett?imw=5000&imh=5000&ima=fit&impolicy=Lett?imw=5000&imh=5000&ima=fit&impolicy=Lett?imw=5000&imh=5000&ima=fit&impolicy=Lett

    Спойлер

    Версия от 22.02.22

    Скачать гугл - https://drive.google.com/file/d/1McguqsZbLBMpX77PP8OZptYL_j5xCoRm/view?usp=sharing

    Расширенная версия(Ставится поверх мода. Включает рандомную озвучку в главном меню. Все. +1 гб веса xD Закинуть в папку с игрой с заменой) - https://drive.google.com/file/d/1eq0qrNS3QrDzn-u-nk_f2JQ6P_f78KIo/view?usp=sharing

    Playground - https://www.playground.ru/stalker_shadow_of_chernobyl/file/s_t_a_l_k_e_r_shadow_of_chernobyl_randomajzer_shadow_of_random_gun_game-1140871

    МИНИГАЙД.

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

    ---------------------------------------------------------------------------------

    Если вы упали под карту - нажмите клавишу esc, затем нажмите клавишу F1
    Если случилась резкая просадка фпс - нажмите клавишу esc, затем нажмите клавишу F2
    ---------------------------------------------------------------------------------
    Нажмите на + на нумпаде, если худ долгое время не появляется.
    Также это поправится само собой с загрузкой сейва/переходом на другую локацию
    ---------------------------------------------------------------------------------
    В игре нет перегруза. Это багофича. Если его включить, то игра сломается.
    ---------------------------------------------------------------------------------
    В игре реализована рандомная торговля, как она работает:
    На каждый предмет, который участвует в торговле, накладывается специальный эффект, который и рандомит деньги как в плюс, так и в минус.
    Шанс того, что деньги уйдут в минус равен 69%. Когда деньги уходят в минус, то складывается ощущение, что торговля сломана. На самом деле это не совсем так.
    Для того, чтобы выйти из минуса вам надо за один раз выкупить себя у любого торговца. Опять же, если получится)
    Важно знать, покупка предмета у нпс или торговца всегда рандомна. Вы никогда не знаете, что купите.
    Во время трейда из инвентаря может пропасть предмет или предмета в лутбоксе может не оказаться (получите пустоту)
    ---------------------------------------------------------------------------------
    Разница между GUNGAME модом и обычным модом в том, что GUNGAME мод рандомит оружие и броник после каждого убийства или при использовании расходников.
    Также с GUNGAME модом исключена возможность получать в инвентарь броник, оружие и патроны. Если у вас все же появилось дополнительное оружие или броня - проблема скрипта, он не очень хорошо прописан.

    Можно скачать и старые версии, если нужно. Вообще не нужно. Они сломаны куда больше актуальной.

    Версия от 04.11.21

    Версия от 09.11.21

    Версия от 19.11.21(БЕЗ GunGame)

    Спойлер

    ЖЕЛАТЕЛЬНО ИГРАТЬ НА 6 ПАТЧЕ

    ДЛЯ СТИМ ВЕРСИИ:

    1. Распаковать файлы из архива в папку с игрой

    2. В папке bin_x64 находим файл xrEngine.exe и создаём для него ярлык.

    Vh8HmQQih6yGKH7qXy74xA.png?1280-auto

    3. Далее заходим в свойства созданного ярлыка.

    dr4j3jji8n8_XuU___Dykg.png?1280-auto

    В строке Объект, после местоположения файла дописываем ключ -steam, нажимаем применить. Запускаемся с этого ярлыка.

    4. Играть (для удобства созданный ярлык можно перенести куда нужно. Желательно сразу запускать игру от администратора)

    ДЛЯ ЛЮБОЙ ДРУГОЙ ВЕРСИИ:

    1. Распаковать файлы из архива в папку с игрой

    2. Играть. Мод запускается из папки bin_x64 файлом XrEngine (для удобства можно организовать ярлык. Желательно сразу запускать игру от администратора)

     

     

    • Лайк 5
    • Мастер! 1
    • Аплодисменты 1
    • Смех 2
    • Хабар 5

  6. vader_33 наверное, нет. Не знаю как повесить именно на онлайновых, я пробовал на on_item_take вот такое

    Спойлер
    
    function change_rep_2()
    	for k, v in pairs (db.storage) do
    		local obj = level.object_by_id(k)
    			if sobj and is_stalker(sobj) then
    				local is_tbl_npc = npc_tbl[ sobj:name() ] or npc_tbl[ sobj:profile_name() ]
    					if is_tbl_npc then
    				sobj:set_character_reputation(-5000)
    					end
    			end
    	end
    end

     

    На диалог у сидора "как с опытным" тоже ничего не получилось. 0 эффекта. 

    Аналогично и с sobj:change_character_reputation(-5000) на диалог "как с опытным"


  7. Hunter Что это баг оригинала я знаю, а вот в ОГСР исправлено каким образом? Полностью переделали инвентарь, или он остался такой просто без этого бага? 

    А, дак там вообще инвентарь переделали. Может это от клеточек зависит? Что-то как-то краем уха про клетки в инвентаре слышал, что они влияют на что-то


  8. vader_33 значит я что-то сделал, что не знаю), но у меня если смотреть букву h или 20 лучших сталкеров во время смены визуалов скриптом вылет


    Дополнено 22 минуты спустя

    Есть такая проблема с инвентарем, когда предметов в нем много и тебе нужны самые нижние, при их перемещении из одного хранилища в другое курсор отбрасывает на самый верх. Есть ли какой-то фикс небольшой? Или может как самому поправить можно? 


  9. vader_33 таймер на срабатывания переодевания(уход в оффлайн/онлайн). Их там два. Один на +11000, второй на +8500.

     

    Я поставил на +1000, +500 - скрипт практически сразу срабатывает и избавляет игрока от случайного вылета с логом 

    stack trace:

    0023:004D8F60 XR_3DA.exe, CTheoraSurface::`vftable'()
     
    [error][     126]    : Не найден указанный модуль.

    или

    stack trace:

    0023:004D8F60 XR_3DA.exe, CTheoraSurface::`vftable'()

    при использовании пда во время срабатывания скрипта. 

    Еще попытался снова выдать репутацию. Сменил немного скрипт согласно рекомендациям. 

    Сейчас он выглядит так, но не работает. Но и не вылетает, что тоже неплохо. 

    Спойлер
    
    function change_rep_2()
    	for k, v in pairs (db.storage) do
    		local obj = level.object_by_id(k)
    			if sobj and is_stalker(sobj) then
    				local is_tbl_npc = npc_tbl[ sobj:name() ] or npc_tbl[ sobj:profile_name() ]
    					if is_tbl_npc then
    						--_dbg.log1("до set rank: npc = %s, rank = %s", sobj:name(), sobj:rank())
    				sobj:set_character_reputation(-5000)
    						--_dbg.log1(" после set rank: npc = %s, rank = %s", sobj:name(), sobj:rank())
    					end
    			end
    	end
    end

     

    dbg log может и убрать можно бы было, но я боюсь трогать скрипты. Они об меня ломаются.


  10. vader_33 Я даю 105 визуалов) Только тем у кого проблемы с xrs_armor и они выходят калеками из оффлайна. Хотя, возможно, потихоньку действительно раздам каждому нпс в игре по 105 визуалов+несюжетные будут получать по визуалу сверху+ранг динамический, еще бы репутацию динамическую ко всему прочему. Дело нехитрое, просто долгое и нудное.


    Дополнено 32 минуты спустя

    vader_33 не знаю, а что должно было произойти? Со своим xrs_armor, но с комментарием строчки

    			--if dist_to_actor>1 or dist_to_actor>150 then

    скомбинировал твой скрипт для выдачи ранга. В самой игре выдал всем экзоскелеты: персонажи с 0 рангом остались с 0 рангом и не сменили визуалы, в топе были какие-то военные и я не знаю сменили ли они визуалы, не смотрел. Мне кажется не сменили. 

    Попробовал потом свой xsr_armor выключить, полностью взяв два файла твоих. Вижу визуалы у всех экзоскелетные и ранги новички. Я могу и так обыграть, прикольно. Это я могу 200 мб расплодившихся визуалов по своиму какому-то косяку явно удалять теперь и без смены ранга менять один раз и навсегда визуал через костюм. Всего 1 строчка? Ну, кстати, по-моему там две строчки. Я еще увидел -- end. Нет, вообще большое спасибо, у меня явно были какие-то проблемы в скриптах. Теперь их точно меньше.

    А вот там таймер стоит аж на 10 секунд, так ли он нужен?

    Возвращаясь к 100+ визуалам, можно ли тогда это сделать скриптом? 

    Речь об этой строчке из профиля каждого нпс в игре 

            <icon x="20" y="10"></icon> - можно ли выдавать скриптом это? 


  11. vader_33 Да, xrs_armor дает ранг, но, уточню на всякий, скриншоты которые скидывал я сделаны с отключенным xrs_armor. А вообще, если оставить xrs_armor и скрипт на выдачу ранга, то xrs_armor кое-как выдает скины(выдает далеко не всем, а только персонажам с высоким рангом, только они переодеваются, хотя броники для переодевания у всех прописаны со 100 шансом. НО, уже переодетые нпс при перезагрузке могут своего визуала лишиться, я думаю это уже связано со вторым скриптом на выдачу ранга.)

    Спойлер
    
    function change_rank_2()
      for a = 1, 65534, 1 do
        local sobj = alife():object(a)
        if sobj and is_stalker(sobj) then
    		sobj:set_rank(math.random(1,2000))
    		end
    	end
    end
    
    function is_stalker(sobj)
      return sobj:clsid() == clsid.script_stalker
    end

     

     


    Дополнено 2 минуты спустя

    vader_33 остался таким же. Я могу вообще всю геймдату дать, заодно и оценишь свой вклад, да и проще будет. Она 400 мб весит. Мод, на мой скромный вкус, получается действительно весьма потешный в самом хорошем смысле.


    Дополнено 3 минуты спустя

    xrs_armor.script а могу просто оставить, на всякий. Все-таки там были изменения, хоть и незначительные.


  12. 1 час назад, vader_33 сказал:

    в чем именно там ошибка проверки? Сверяли ранг всех нпс до изменения и после изменения? Перебрал всех нпс и вывел в лог ранги - ни у кого 0 не было, в основном больше 100

     

    sobj:rank() == 0 then

    Если вставляю в скрипт, то персонажи с 0 рангом не получают ранг, а все остальные получают. А как можно сделать так, чтобы наоборот персонажи с нулевым получали, а все остальные нет? Неужели просто поставить 1? В общем, нет, странно все это.

    Вот, мой скрипт, уже в который раз:

    Спойлер
    
    function change_rank_2()
      for a = 1, 65534, 1 do
        local sobj = alife():object(a)
        if sobj and is_stalker(sobj) and sobj:rank() == 0 then
    		sobj:set_rank(math.random(1,2000))
    		end
    	end
    end
    
    function is_stalker(sobj)
      return sobj:clsid() == clsid.script_stalker
    end

     

    Вот профиль волка

    Спойлер
    
    		<icon>ui_npc_u_stalker_neytral_balon_1</icon>
    		<bio>esc_wolf_bio</bio>
    <name>esc_wolf_name</name>
    <rank>0</rank>
    <class>esc_wolf</class>
    <crouch_type>-1</crouch_type>
    <community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect>
    		
    		<reputation>5</reputation>
    		<money min="600" max="2000" infinitive="0"/>
    		
    		<snd_config>characters_voice\human_01\stalker\</snd_config>
     
    		<visual>actors\trader\trader</visual>

     

    А вот, что в игре

    Спойлер

    ?imw=5000&imh=5000&ima=fit&impolicy=Lett

    Спойлер

    ?imw=5000&imh=5000&ima=fit&impolicy=Lett

    Да, у волка еще есть 105 профилей, все сделаны по шаблону

    Спойлер

        <specific_character id="esc_wolf_1" team_default = "1">
    #include "gameplay\random_visual\1.xml"
    <name>esc_wolf_name</name>
    <rank>0</rank>
    <class>esc_wolf</class>
    <crouch_type>-1</crouch_type>
    <community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect>
            <supplies>
    #include "gameplay\weapons\test.xml"
    #include "gameplay\loot\loot.xml"
            </supplies>
    #include "gameplay\character_no_criticals.xml"
    #include "gameplay\dialogs\wolf.xml"
        </specific_character>

    А каждый конфиг в gamedata/random_visual выглядит вот так. Вот прям каждый. Проверено тотал коммандером(имеется ввиду <rank>0</rank> или его отсутствие вообще)

    Спойлер

            <icon>ui_npc_u_barman</icon>
            <map_icon x="1" y="4"></map_icon>
            <bio>bar_barmen_bio</bio>

            <money min="100000" max="110000" infinitive="1"></money>
            <reputation>50</reputation>
            <visual>actors\stalker_zombi\zombie_fresh_1</visual>
            <snd_config>characters_voice\human_01\stalker\</snd_config>

    или я уже отчаялся и делал так

    Спойлер

            <icon>ui_npc_u_stalker_neytral_balon_1</icon>
            <bio>esc_wolf_bio</bio>
            
            <reputation>5</reputation>
            <money min="600" max="2000" infinitive="0"/>
            <rank>0</rank>
            <snd_config>characters_voice\human_01\stalker\</snd_config>
     
            <visual>actors\neytral\stalker_neytral_balon_1</visual>

    Это я к тому, что ранг Волка, ну, полюбому нулевой, а скрипт его игнорит... И если убрать проверку, только тогда Волк вместе со всеми начинает получать свой ранк. Только скрипт на нетспавне висит и каждый раз ранк роллит по новой, что прикольно, но ломает xrs_armor, который я все же решил не отключать и раздавать им визуалы несюжетным персам. Так и сижу, голову ломаю. Что делаю не так.. Можно ли вырезать выдачу ранга в xrs_armor, но оставить выдачу визуала?  Там скрипт большой, пытался удалить строки за это отвечающие пару раз, но в итоге ломал н?*)ен весь скрипт целиком.


  13. Проспался, а теперь не могу понять как выдать репутацию. set_character_reputation(number) и change_character_reputation(number) приводят к вылетам. И еще это условие как-то через одно место проверяется sobj:rank() == 0. 

    Спойлер
    
    function change_rank_2()
      for a = 1, 65534, 1 do
        local sobj = alife():object(a)
        if sobj and is_stalker(sobj) then
          local is_tbl_npc = npc_tbl[ sobj:name() ] or npc_tbl[ sobj:profile_name() ]
          if is_tbl_npc then
    		sobj:set_rank(math.random(1,1000))
    		sobj:set_character_reputation(math.random(-5000,5000))
    			end
    		end
    	end
    end

     

    Вообще, цель создать скрипт, который бы выдавал ранг и репутацию всем у кого ранг равняется 0.

    Сейчас я вроде понял почему не работало sobj:rank() == 0. Ну, я понял, что оно не в той строчке не так вставлено, но я не знаю как вставить так.

    Пробовал так

    Спойлер
    
    -- всех комментариев нет в скрипте.
    function change_rank_2()
      for a = 1, 65534, 1 do
        local sobj = alife():object(a)
        if sobj:rank() >= 1 then return end -- что-то вроде проверки, если ранг выше или равняется 1, то аборт
        if sobj:rank() == 0 then -- если ранг 0, то 
        if sobj and is_stalker(sobj) then -- если сталкер
    		sobj:set_rank(math.random(1,1000)) -- выдаем ранг, как выдавать еще и репутацию я так и не понял
    			end
    		end
    	end
    end
    
    function is_stalker(sobj)
      return sobj:clsid() == clsid.script_stalker
    end

     

    Спойлер

    FATAL ERROR
     
    [error]Expression    : fatal error
    [error]Function      : CScriptEngine::lua_error
    [error]File          : .\script_engine.cpp
    [error]Line          : 73
    [error]Description   : <no expression>
    [error]Arguments     : LUA error: ...w of chernobyl\gamedata\scripts\change_rank_2.script:6: attempt to call method 'rank' (a nil value)
     

    stack trace:

    Я думаю ошибка какая-то простая, ранга этого нет, но как сделать чтобы он был. Я не понимаю. Это должно быть как local rank = что-то там? А уже потом все это?

    Что-то типо такого

    Спойлер
    
    function change_rank_2()
      for a = 1, 65534, 1 do
        local sobj = alife():object(a)
        local rank = ranks.get_obj_rank_name(npc) -- нашел такую строчку в одном из скриптов. Она неправильная, но как пример, что ранк нужно обозначить сперва.
        if rank() >= 1 then return end
        if rank() == 0 then
        if sobj and is_stalker(sobj) then
    		sobj:set_rank(math.random(1,1000))
    			end
    		end
    	end
    end
    
    function is_stalker(sobj)
      return sobj:clsid() == clsid.script_stalker
    end

     

     


  14. vader_33 Да тут уже:D

    Expression    : fatal error
    Function      : CScriptEngine::lua_error
    File          : .\script_engine.cpp
    Line          : 73
    Description   : <no expression>
    Arguments     : LUA error: ...w of chernobyl\gamedata\scripts\change_rank_2.script:263: attempt to perform arithmetic on global 'upgrade_exp' (a nil value)

    Неправильно выдаю експу видно. Ага upgrade_exp это из xrs_armor скрипта


  15. vader_33 так хочется доделать уже, плюс все пробегать нужно, а там внезапно ВСЕГДА какие-то вылеты на пути. Их править, пока правишь еще что-то придумал, ввел, опять пробегать и снова вылеты, и так по кругу. Уже 7 круг.


  16. vader_33 

    Спойлер
    
    function change_rank_2()
      for a = 1, 65534, 1 do
        local sobj = alife():object(a)
        if sobj and is_stalker(sobj) and sobj:alive() and sobj:rank()==0 then
          local is_tbl_npc = npc_tbl[ sobj:name() ] or npc_tbl[ sobj:profile_name() ]
          if is_tbl_npc then
    		sobj:set_rank(upgrade_exp*lvl+math.random(1,1000))
    			end
    		end
    	end
    end
    
    function is_stalker(sobj)
      return sobj:clsid() == clsid.script_stalker
    end

     

    таблица сверху есть одна npc_tbl

    Я вот думаю, может она вообще не нужна? Таблица эта. Ну-ка уберу ее.

     


  17. vader_33 снова лог со столом, он же вроде есть, или его нет? Или table в луа это вообще не стол?

    Expression    : fatal error
    Function      : CScriptEngine::lua_error
    File          : .\script_engine.cpp
    Line          : 73
    Description   : <no expression>
    Arguments     : LUA error: ...ow of chernobyl\gamedata\scripts\bind_stalker.script:30: attempt to call field 'change_rank2' (a table value)
     


  18. vader_33 там просто вызов change_rank2.change_rank2()

    9 минут назад, vader_33 сказал:

    for a=1,65535 do
              local obj = alife():object(a)

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

     

    9 минут назад, vader_33 сказал:

    ~=0 - это не равен 0. Равен будет ==

    А я думал это проверка, что ранг нулево, как с проверкой на предметы в инвентаре у гг. Там также было ~=. Ну и == я тоже много раз замечал. 


    Дополнено 2 минуты спустя
    function change_rank_2()
      for a = 1, 65534, 1 do
        local sobj = alife():object( a )
        if sobj and is_stalker( sobj ) and sobj:alive() and sobj:rank()==0 then
          local is_tbl_npc = npc_tbl[ sobj:name() ] or npc_tbl[ sobj:profile_name() ]
          if is_tbl_npc then
    		sobj:set_rank(upgrade_exp*lvl+math.random(1,1000))
    		end
    	end
    end
    
    function is_stalker( sobj )
      return sobj:clsid() == clsid.script_stalker
    end

    а так? даже тестить нет смысла)? Я просто, вроде, уже так пытался. Ничего не выходило. Да, так точно нет смысла.

    Спойлер

    Expression    : fatal error
    Function      : CScriptEngine::lua_error
    File          : .\script_engine.cpp
    Line          : 73
    Description   : <no expression>
    Arguments     : LUA error: ...ow of chernobyl\gamedata\scripts\bind_stalker.script:30: attempt to index global 'change_rank2' (a nil value)
     

     


  19. vader_33 может и сделать, но там такой скрипт, что мне никогда не разобраться. Очень большой и совершенно непонятный. Да, и скорее, в будущем, потихоньку буду отказываться от него. Слишком с ним много вылетов, причем я его не менял, просто туда много очень визуалов всунул(около 200) и раздал каждому нпс по 4 броника с разными пробами: броня 1 ранга - 100, 2 - 40, 3 - 25, 4 - 5., т.е каждый нпс в игре 100% менял визуал, а то и по несколько раз + там реализована '''раскачка'' нпс, что-то вроде Нпс с броней первого ранга имеет ранг новичок-опытный, ну и т.д до мастера. Думал на легке визуалы замиксовать, причем все визуалы тоже из оригинала и вообще были запакованы, пришлось распаковать, чтобы продублировать их по 4 раза каждый. После чего всплыли другие проблемы, уже совершенно непонятные, игра просто крашилась с логом error with visual и я ничего не мог поделать, ничего понять не мог. Лишь со временем обнаружилось, что сюжетные нпс, когда меняют визуал через этот скрипт, либо вообще не выходят из оффлайна, либо выходят частично(как пример бандиты на свалке, которые находились в онлайне только пока был жив бес и при его смерти просто исчезали или сталкеры и вояки на агропроме, или может еще где-то), либо выходят полностью калеками и ломают игру ужасными вылетами стоит им только дать хит или убить. в общем, сплошное расстройство, блин, и большая трагедия.