Модератор форума: comador  
Форум настоящего сталкера » S.T.A.L.K.E.R. Тень Чернобыля » Теория модостроения » Школа модинга (Помощь в модифицировании игры S.T.A.L.K.E.R.: Тень Чернобыля)
Школа модинга
# 1
Пятница, 23.11.2012, 11:42:44

Ранг: Прибывший
Сообщений: 1665
Награды: 95
Репутация: 4016 Регистрация: 03.03.2011  

______________________________________________________________________

Тема создана для помощи в модифицировании игры S.T.A.L.K.E.R.: Тень Чернобыля.

______________________________________________________________________
Правила топика


"Правильно заданный вопрос – половина ответа".
______________________________________________________________________
Полезные ссылки

______________________________________________________________________


Правленный файл _g.script (спасибо Artos) для вывода в лог "обширной" информации.

Все "спасибо" в личку пользователю.
За не чтение шапки темы, а так же не соблюдение ПФ, авторы постов будут наказаны.


Не столь важно что ты делаешь, важно как ты это делаешь! (Джимми Лансфорд)
# 641
Суббота, 24.08.2013, 13:30:01

Ранг: Вечный сталкер
Сообщений: 758
Награды: 9
Репутация: 1472 Регистрация: 02.10.2012 Город: Нижний новгород    

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


Акция! Добавь мне награду и получи минус в репу.
# 642
Воскресенье, 25.08.2013, 14:14:52

Ранг: Новичок
Сообщений: 26
Награды: 0
Репутация: 55 Регистрация: 05.05.2012  

DmitriyT, вы даже скобки к некоторым функциям не добавили:

Цитата (DmitriyT)
function actor_havent_knife
if db.actor:object("wpn_knife") ~= true then
return true
end
return false
end

function actor_havent_knife_m1
if db.actor:object("wpn_knife_m1") ~= true then
return true
end
return false
end

function actor_havent_knif1
if db.actor:object("wpn_knif1") ~= true then
return true
end
return false
end

function actor_havent_knif2
if db.actor:object("wpn_knif2") ~= true then
return true
end
return false
end


У каждой функции должны бить скобки!

В общем вот эту часть кода:

Цитата (DmitriyT)
function actor_have_knife()
if db.actor:object("wpn_knife") then
return true
end
return false
end

function actor_have_knife_m1()
if db.actor:object("wpn_knife_m1") then
return true
end
return false
end

function actor_have_knif1()
if db.actor:object("wpn_knif1") then
return true
end
return false
end

function actor_have_knif2()
if db.actor:object("wpn_knif2") then
return true
end
return false
end

function actor_havent_knife
if db.actor:object("wpn_knife") ~= true then
return true
end
return false
end

function actor_havent_knife_m1
if db.actor:object("wpn_knife_m1") ~= true then
return true
end
return false
end

function actor_havent_knif1
if db.actor:object("wpn_knif1") ~= true then
return true
end
return false
end

function actor_havent_knif2
if db.actor:object("wpn_knif2") ~= true then
return true
end
return false
end


Если надо что бы была проверка на то что есть эти предметы есть:

Код
function actor_have_knife(first_speaker, second_speaker)
return first_speaker:object("wpn_knife") ~= nil
end      

function actor_have_knife_m1(first_speaker, second_speaker)
return first_speaker:object("wpn_knife_m1") ~= nil
end      

function actor_have_knif1(first_speaker, second_speaker)
return first_speaker:object("wpn_knif1") ~= nil
end      

function actor_have_knif2(first_speaker, second_speaker)
return first_speaker:object("wpn_knif2") ~= nil
end      

function actor_havent_knife(first_speaker, second_speaker)
return first_speaker:object("wpn_knife") ~= nil
end

function actor_havent_knife_m1(first_speaker, second_speaker)
return first_speaker:object("wpn_knife_m1") ~= nil
end

function actor_havent_knif1(first_speaker, second_speaker)
return first_speaker:object("wpn_knif1") ~= nil
end

function actor_havent_knif2(first_speaker, second_speaker)
return first_speaker:object("wpn_knif2") ~= nil
end


Если на оборот что нету этих предметов то эту:

Код
function actor_have_knife(first_speaker, second_speaker)
return first_speaker:object("wpn_knife") == nil
end     

function actor_have_knife_m1(first_speaker, second_speaker)
return first_speaker:object("wpn_knife_m1") == nil
end     

function actor_have_knif1(first_speaker, second_speaker)
return first_speaker:object("wpn_knif1") == nil
end     

function actor_have_knif2(first_speaker, second_speaker)
return first_speaker:object("wpn_knif2") == nil
end     

function actor_havent_knife(first_speaker, second_speaker)
return first_speaker:object("wpn_knife") == nil
end

function actor_havent_knife_m1(first_speaker, second_speaker)
return first_speaker:object("wpn_knife_m1") == nil
end

function actor_havent_knif1(first_speaker, second_speaker)
return first_speaker:object("wpn_knif1") == nil
end

function actor_havent_knif2(first_speaker, second_speaker)
return first_speaker:object("wpn_knif2") == nil
end


Сообщение отредактировал modos - Воскресенье, 25.08.2013, 14:18:57
# 643
Воскресенье, 25.08.2013, 23:30:06

Ранг: Прибывший
Сообщений: 1665
Награды: 95
Репутация: 4016 Регистрация: 03.03.2011  

black_stalker1997, в первом диалоге добавляешь проверку
Код
<dont_has_info>...</dont_has_info>
При убийстве мутантов выдаешь поршень.
Во втором диалоге делаешь также проверку как и в первом
Код
<dont_has_info>...</dont_has_info>
А так же проверку на получения поршня при убийстве.
Код
<has_info>...</has_info>


Не столь важно что ты делаешь, важно как ты это делаешь! (Джимми Лансфорд)
# 644
Понедельник, 26.08.2013, 10:24:02

Ранг: Знаток Зоны
Сообщений: 527
Награды: 6
Репутация: 140 Регистрация: 03.10.2011 Город: Челябинск    

comador, а как выдать инфопоршень при убийстве мутантов, если они через скрипт заспавнены?
# 645
Понедельник, 26.08.2013, 18:26:07

Ранг: Прибывший
Сообщений: 1665
Награды: 95
Репутация: 4016 Регистрация: 03.03.2011  

black_stalker1997, создаешь файл логики и в секции
[logic] добавляешь вот эту строку
Код
on_death = mob_death
Затем в этом же файле создаешь секцию [mob_death]
с таким содержанием
Код
on_info = %+твой_инфопоршень%


Не столь важно что ты делаешь, важно как ты это делаешь! (Джимми Лансфорд)
# 646
Понедельник, 26.08.2013, 20:35:26

Ранг: Знаток Зоны
Сообщений: 527
Награды: 6
Репутация: 140 Регистрация: 03.10.2011 Город: Челябинск    

comador, а как мне заставить животных, заспавненых через скрипт использовать именно эту логику?
# 647
Понедельник, 26.08.2013, 23:14:16

Ранг: Прибывший
Сообщений: 1665
Награды: 95
Репутация: 4016 Регистрация: 03.03.2011  

black_stalker1997, прописываешь спавн-секцию монстра в файле spawn_sections.ltx. Вот пример
Код
[spider_agro]:spider_weak
$spawn =  "respawn\spider_agro"
custom_data = scripts\new\spider_agro.ltx

Спавнишь своего монстра через скрипт и он будет использовать логику, которая ему прописана.


Не столь важно что ты делаешь, важно как ты это делаешь! (Джимми Лансфорд)
# 648
Вторник, 27.08.2013, 00:50:11

Ранг: Знаток Зоны
Сообщений: 527
Награды: 6
Репутация: 140 Регистрация: 03.10.2011 Город: Челябинск    

comador, я получил вылет при убийстве животного. Может быть как-то по-другому надо? Насколько я понял, death_manager объект найти не может, при убийстве которого нужно инфопоршень выдавать

Лог:


spawn_sections.ltx:
Код

[dog_marsh]:dog_weak  
$spawn =  "respawn\dog_marsh"  
custom_data = scripts\rzl\dog_marsh.ltx


файл логики dog_marsh.ltx:
Код

[logic]
on_death = mob_death

[mob_death]
on_info = %+rzl_snrs_mutants_killed%


Код спавна через скрипт:

Код

function mar_rassv_mutants_spawn()  
local sim = alife()  
sim:create("dog_weak",vector():set(534.10101318359,2.0023074150085,-156.42869567871),501754,3567)  
sim:create("dog_weak",vector():set(532.60455322266,1.9670802354813,-158.00607299805),500984,3563)  
sim:create("dog_strong",vector():set(528.99462890625,2.2261307239532,-159.54801940918),499249,3563)
sim:create("dog_strong",vector():set(528.67144775391,2.3465118408208,-175.80047607422),498882,3563)
sim:create("dog_strong",vector():set(525.20391845703,2.5607962608337,-179.5598449707),496830,3563)
sim:create("dog_strong",vector():set(524.10321044922,2.7909164428711,-187.45906066895),496335,3563)
sim:create("boar_normal",vector():set(539.12097167969,1.6563314199448,-154.75680541992),504400,3567)
sim:create("boar_normal",vector():set(535.78729248047,2.1085753440857,-170.37591552734),502491,3567)
sim:create("boar_normal",vector():set(533.11926269531,2.3264474868774,-187.66583251953),501327,3567)
end
# 649
Среда, 28.08.2013, 22:55:33

Ранг: Разведчик
Сообщений: 252
Награды: 16
Репутация: 167 Регистрация: 01.04.2013 Город: Москва    

black_stalker1997, секция спавна у тебя в порядке. А вот логика пёсика имхо, должна выглядеть так.
Код
[smart_terrains]
none = true
     
     

[logic]active = mob_home
on_death = mob_death
     
[mob_home]
path_home = pseudodog_3
home_min_radius = 15
home_max_radius = 30
aggressive_home
on_signal = sig_attacked | mob_combat
     
[mob_combat]
on_timer = 30000 | mob_home
[mob_death]   
   on_info = %+rzl_snrs_mutants_killed%


Сообщение отредактировал Змея - Среда, 28.08.2013, 23:22:00
# 650
Понедельник, 02.09.2013, 16:15:15

Ранг: Прибывший
Сообщений: 7
Награды: 0
Репутация: 0 Регистрация: 13.05.2013  

Всем привет. Добавил новую локацию,при запуске вылет

Подскажите,пожалуйста,что мне делать?
# 651
Понедельник, 02.09.2013, 18:06:18

Ранг: Познающий
Сообщений: 124
Награды: 1
Репутация: 259 Регистрация: 25.06.2012  

Mel_546, не найден параметр game_type_clsid_factory в секции
[common]
Где-то в конфигурациях ты намудрил, скорее всего в system.ltx



# 652
Вторник, 03.09.2013, 10:32:28

Ранг: Прибывший
Сообщений: 7
Награды: 0
Репутация: 0 Регистрация: 13.05.2013  

Добрый день,уважаемые модмейкеры. И снова я со своими проблемами с подключением локаций. Игра вылетает с логом
Прочитал,что надо обновить level.gct и game.graph. Пользовался программой ggrc-v0.6. Моя локация добавляется. Проблема в том,что прога не хочет добавлять в game.graph локацию l12_stancia_2 (ЧАЭС2) из чистой версии. Как мне это исправить?


Сообщение отредактировал Mel_546 - Вторник, 03.09.2013, 10:35:04
# 653
Четверг, 12.09.2013, 17:20:47

Ранг: Прибывший
Сообщений: 19
Награды: 1
Репутация: 6 Регистрация: 07.01.2013  

У меня такая ошибка когда беру задание у волка на уничтожение кабанов
FATAL ERROR
[error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: ...g\s.t.a.l.k.e.r\gamedata\scripts\task_manager.script:256: bad argument #1 to 'pairs' (table expected, got nil)
У меня в скриптах нету такого файла
П.с установлен мод smart manager mod, sanex alife mod, money и всё


Интересно, что бы было если бы главные герои сталкера и метро 2033 встретились?
# 654
Четверг, 12.09.2013, 19:43:21

Ранг: Вечный сталкер
Сообщений: 1708
Награды: 18
Репутация: 2844 Регистрация: 08.11.2011 Город: Воронежская обл.    

Цитата (half5life)
У меня в скриптах нету такого файла


Его может и не быть, ошибка в нем может возникать вследствие неправильного объединения других скриптов.
# 655
Четверг, 12.09.2013, 20:03:56

Ранг: Разведчик
Сообщений: 252
Награды: 16
Репутация: 167 Регистрация: 01.04.2013 Город: Москва    

half5life,
Цитата
и всё
Ну да, всего три неадаптированных мода. Какая мелочь)))
# 656
Суббота, 14.09.2013, 04:21:15

Ранг: Разведчик
Сообщений: 162
Награды: 5
Репутация: 0 Регистрация: 11.03.2013  

Такой вопрос: есть моды, в которых определенное оружие (Миниган) можно взять в руки только с определенным костюмом (экзоскелет). А возможно ли сделать так, чтобы определнный артефакт можно было повесить на пояс только в определенном костюме?
# 657
Суббота, 14.09.2013, 22:37:29

Ранг: Разведчик
Сообщений: 252
Награды: 16
Репутация: 167 Регистрация: 01.04.2013 Город: Москва    

Georgiy_Fedorov, конечно можно.
# 658
Среда, 18.09.2013, 01:01:46

Ранг: Разведчик
Сообщений: 162
Награды: 5
Репутация: 0 Регистрация: 11.03.2013  

Спасибо)

Добавлено (18.09.2013, 01:01:46)
---------------------------------------------
А вы не могли бы намекнуть, где можно посмотреть, как это делается?

# 659
Четверг, 26.09.2013, 12:57:05

Ранг: Прибывший
Сообщений: 19
Награды: 1
Репутация: 6 Регистрация: 07.01.2013  

Цитата (Змея)
Ну да, всего три неадаптированных мода. Какая мелочь)))
Вообщето мани и смарт манадёр не конфликтуют


Сообщение отредактировал half5life - Четверг, 26.09.2013, 12:58:04
# 660
Четверг, 26.09.2013, 23:03:35

Ранг: Разведчик
Сообщений: 252
Награды: 16
Репутация: 167 Регистрация: 01.04.2013 Город: Москва    

Ты забыл про sanex alife mod. Вот он то вполне может быть несовместим с smart manager mod. Ты сам то проверял, или просто накатывал одно на другое?
Форум настоящего сталкера » S.T.A.L.K.E.R. Тень Чернобыля » Теория модостроения » Школа модинга (Помощь в модифицировании игры S.T.A.L.K.E.R.: Тень Чернобыля)
Поиск:
Вверх
Правила чата
Мини-чат
+Мини-чат
0