Помощь/подсказки в создании модов
# 1
Суббота, 19.06.2010, 11:40:12

Ранг: Прибывший
Сообщений: 2
Награды: 5
Репутация: 5 Регистрация: 19.06.2010 Город: Армавир    

Помощь/подсказки в создании модов

Тема создана для помощи модмейкерам. Если у кого то есть вопросы, пишите, будем искать решения.


Рекомендую перед вопросом посмотреть:

+Крупнейший форум модостроителей

+Википедия по модифицированию Сталкера

+Программы по модифицированию



SibireaStalker
Сообщения не по теме и про ТЧ будут удалятся без объяснений! >(

В теме запрещены "спасибы", авторы которых будут наказаны. Для этого есть система ЛС.


Внимание! СДК обсуждается в этой теме!

Принимаются вопросы для FAQ! Подробней в теме...


Никто не забыт, ничто не забыто...
# 2001
Понедельник, 21.01.2013, 23:07:32

Ранг: Мастер
Сообщений: 330
Награды: 9
Репутация: 269 Регистрация: 10.03.2012 Город: Таганрог, Архангельск    

Цитата (_Мороз)
Меня интересует скриптовая часть, и как указать эту самую точку
На мой взгляд проще всего это реализовать через space_restrictor.




# 2002
Вторник, 22.01.2013, 17:33:52

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

Kirk767, ну рестрикторы я создавал в алл. спавне, а вот как реализовать завершение квеста при подходе к это точке
# 2003
Вторник, 22.01.2013, 18:12:51

Ранг: Мастер
Сообщений: 330
Награды: 9
Репутация: 269 Регистрация: 10.03.2012 Город: Таганрог, Архангельск    

Цитата (_Мороз)
а вот как реализовать завершение квеста при подходе к это точке

Примерная логика рестриктора:
Код

[logic]  
active = sr_idle@start  

[sr_idle@start]  
on_actor_inside = {+твой_инфо_на_завершение_квеста} sr_idle@end ; ждём пока ГГ будет внутри рестриктора.

[sr_idle@end] ;рестриктор больше не активен




# 2004
Вторник, 22.01.2013, 20:54:51

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

А какой должен быть тип рестриктора? 2 точно не работает
# 2005
Вторник, 22.01.2013, 22:50:14

Ранг: Мастер
Сообщений: 1485
Награды: 139
Репутация: 2940 Регистрация: 13.07.2011 Город: Ново-Николаевскъ    

_Мороз, Ставь 3, не ошибешься :)

Добавлено (22.01.2013, 22:50:14)
---------------------------------------------
Kirk767, Вот просто интересно, и чем тобою приведенный пример поможет?
В рестрикторе будет только проверяться наличее info_portion при входе в рестриктор.

_Мороз, Читай
Настройка логики. Часть 3
Resrtictor type



# 2006
Вторник, 22.01.2013, 23:55:13

Ранг: Мастер
Сообщений: 330
Награды: 9
Репутация: 269 Регистрация: 10.03.2012 Город: Таганрог, Архангельск    

Цитата (Callisto)
В рестрикторе будет только проверяться наличее info_portion при входе в рестриктор.
Точно, я попутал pity  надо 

Код
on_actor_inside = %+твой_инфо_на_завершение_квеста% sr_idle@end ; ждём пока ГГ будет внутри рестриктора.

Добавлено (22.01.2013, 23:46:23)
---------------------------------------------

Цитата (Callisto)
Ставь 3, не ошибешься
Я вот нигде подробного описания типов рестриктора не видел. Все пишут "ставьте 3"

Добавлено (22.01.2013, 23:55:13)
---------------------------------------------

Цитата (Callisto)
Resrtictor type
вот и тут общие слова и никакой конкретики :(




# 2007
Среда, 23.01.2013, 00:13:21

Ранг: Мастер
Сообщений: 1485
Награды: 139
Репутация: 2940 Регистрация: 13.07.2011 Город: Ново-Николаевскъ    

Kirk767, Главное что с тройкой работает :)

Лучше все-таки в логике сначала проверять "а выдано ли задание?", а потом уже выдавать поршень об оканчании задания. А то ведь игрок может и раньше времени оказаться в этом рестрикторе.


# 2008
Среда, 23.01.2013, 00:25:53

Ранг: Мастер
Сообщений: 330
Награды: 9
Репутация: 269 Регистрация: 10.03.2012 Город: Таганрог, Архангельск    

Callisto, согласен полностью, просто задачи такой поставлено не было :) да и проверку наличия нужного поршня сделать не проблема.

Добавлено (23.01.2013, 00:25:53)
---------------------------------------------

Цитата (Callisto)
Главное что с тройкой работает
Это да, но всё-же интересны способы использования и других типов.




# 2009
Среда, 23.01.2013, 00:35:50

Ранг: Мастер
Сообщений: 1485
Награды: 139
Репутация: 2940 Регистрация: 13.07.2011 Город: Ново-Николаевскъ    

Kirk767, при написании программ (впрочем как и модов) всегда следует предусмотреть все глупые и возможные действия пользователя :)

А насчет типов рестрикторов, то лучше на АМК-форуме поискать/поспрашивать.


# 2010
Среда, 23.01.2013, 01:04:49

Ранг: Мастер
Сообщений: 330
Награды: 9
Репутация: 269 Регистрация: 10.03.2012 Город: Таганрог, Архангельск    

Цитата (Callisto)
лучше на АМК-форуме поискать/поспрашивать
Меня там только в гугл посылали или вопросы молча удаляли. Сам не нашел, возможно плохо искал.
Цитата (Callisto)
при написании программ (впрочем как и модов) всегда следует предусмотреть все глупые и возможные действия пользователя
к сожалению всё учесть невозможно, но в данном случае я просто не подумал до конца, а ответил на конкретный вопрос. 
Кстати, есть вопрос:
можно ли заспавнить ГГ 2 одинаковых квестовых предмета?
Объясню в чём суть, если поставить вывод расширенного лога при вылете, то при стандартном alife():create вылет при попытке спавна в рюкзак ГГ этих самых предметов. Ругается на попутку создать дубликат уже существующего предмета.




# 2011
Среда, 23.01.2013, 01:14:09

Ранг: Мастер
Сообщений: 1485
Награды: 139
Репутация: 2940 Регистрация: 13.07.2011 Город: Ново-Николаевскъ    

Kirk767, Вообще, можно. Сама так делала.
Но все же интересно: предмет, функция спавна, условия?


# 2012
Среда, 23.01.2013, 15:38:29

Ранг: Мастер
Сообщений: 330
Награды: 9
Репутация: 269 Регистрация: 10.03.2012 Город: Таганрог, Архангельск    

Цитата (Callisto)
предмет, функция спавна, условия?
Предмет:

Код
[blood_zombie_empty]:device_pda
$spawn             = "quest_items\blood_zombie_empty"
inv_weight         = 0.05
inv_grid_width      = 1
inv_grid_height      = 1
inv_grid_x         = 1
inv_grid_y         = 31
$prefetch          = 16
description         = st_blood_zombie_empty_descr
inv_name         = st_blood_zombie_empty
inv_name_short      = st_blood_zombie_empty
can_trade         = false
quest_item           = true
story_id          = blood_zombie_empty
cost            = 0

Функция:
 
Код
function blood_zombie_empty_to_actor(first_speaker, second_speaker)
     local actor = dialogs.who_is_actor(first_speaker, second_speaker)
     dialogs.relocate_item_section(actor, "blood_zombie_empty", "in", 20)   
     task_manager.get_task_manager():give_task("blood_zombie")
end

Условия: взятие квеста из диалога

Код
<action>at_zaton.blood_zombie_empty_to_actor</action>

Вылет, только при условии вывода расширенного лога при краше игры:

Код
-- Крешнуть игру (после вывода сообщения об ошибке в лог)
function abort(fmt, ...)
     local reason = string.format(fmt, ...)
error_log(reason) -- из этой строки убран знак комментария "--"
end






Сообщение отредактировал Kirk767 - Среда, 23.01.2013, 17:32:58
# 2013
Среда, 23.01.2013, 19:06:44

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

Callisto, почему-то 3 тип ACDC не желает запаковывать
как доходит до alife_jupiter.ltx сразу останавливается и пишет:
Died at stkutils/ini_file.pm line 80, <GEN11> line 81598

Рестриктор создавал так:
# 2014
Среда, 23.01.2013, 20:21:11

Ранг: Мастер
Сообщений: 330
Награды: 9
Репутация: 269 Регистрация: 10.03.2012 Город: Таганрог, Архангельск    

_Мороз, Если вопрос не только к Callisto, то меня смущает название секции
[jupiter_1a]. Разве разрешены в названия секций символы отличные от цифр?
з.ы. точно в этом не уверен.




# 2015
Среда, 23.01.2013, 20:41:26

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

Конечно разрешены, я так аномалии спавнил и ничего, при запаковке, секции автоматически присвоится порядковый номер
Дело не в этом
# 2016
Четверг, 24.01.2013, 05:16:10

Ранг: Мастер
Сообщений: 1485
Награды: 139
Репутация: 2940 Регистрация: 13.07.2011 Город: Ново-Николаевскъ    

_Мороз, А у меня спавн собирается нормально.
Какую версию ACDC используешь?
Проверь чтобы не было пробелов в начале и конце строк, одно время долго не могла собрать из-за этого спавн. Например, в Notepad++ есть такая штука "Правка --> Операции с Пробелами --> Убрать Начальные и Замыкающие Пробелы"

Добавлено (24.01.2013, 05:16:10)
---------------------------------------------
Kirk767, Говоришь про alife():create, а показываешь трансфер.
И почему dialogs.relocate_item_section? Есть же dialogs.relocate_item_section_to_actor
Насколько поняла, тебе надо передать актору определенное количество одинаковых квестовых предметов?
В игре есть пример, когда ГГ выдается три сканера для аномалий ;)


# 2017
Четверг, 24.01.2013, 20:34:41

Ранг: Мастер
Сообщений: 330
Награды: 9
Репутация: 269 Регистрация: 10.03.2012 Город: Таганрог, Архангельск    

Цитата (Callisto)
Говоришь про alife():create, а показываешь трансфер.
пробовал и так и так, результат один.
Цитата (Callisto)
Есть же dialogs.relocate_item_section_to_actor
благодарю, этот вариант не пробовал.
Цитата (Callisto)
тебе надо передать актору определенное количество одинаковых квестовых предметов? В игре есть пример, когда ГГ выдается три сканера для аномалий
именно так. в игре и сделано:

Код
function jup_b32_transfer_scanners(first_speaker, second_speaker)
    dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "jup_b32_scanner_device", 3)
end
Совсем я забыл про эти сканеры :( Вечером попробую.

Добавлено (24.01.2013, 20:34:41)
---------------------------------------------
Всё-равно вылет :(






# 2018
Четверг, 24.01.2013, 21:27:17

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

Callisto, спасибо, дело действительно было в пробелах


А что будет, если я не пропишу в логике рестриктора проверку на наличие взятого квеста?
Если что-то серьезное, то прошу помочь, как написать эту проверку?
# 2019
Четверг, 24.01.2013, 22:06:45

Ранг: Мастер
Сообщений: 1485
Награды: 139
Репутация: 2940 Регистрация: 13.07.2011 Город: Ново-Николаевскъ    

Kirk767, Попробуй задать story_id отличный от имени секции.

_Мороз, Если до взятия задания игрок попадет в этот рестриктор, то ему будет выдан ИП, о завершении задания и будет висеть всю игру. А если после этого игрок попытается взять это задание, то скорее всего оно тут же засчитается. Но надо уже смотреть подробности задания.
А проверку делать надо, опять же, исходя из самого задания.
Но, если у тебя при старте задания выдается ИП, то по нему и проверяй
Код
[logic]   
  active = sr_idle@start   

  [sr_idle@start]   
  on_actor_inside = {+ИП_о_начале_задания} sr_idle@end %+ИП_на_завершение_квеста%

  [sr_idle@end]


{+ИП_о_начале_задания} - проверка наличия ИП
%+ИП_на_завершение_квеста% - выдача ИП о завершеннии.
Можно, кстати, и ИП о выдаче задания сразу удалить
Код
on_actor_inside = {+ИП о начале заданич} sr_idle@end %-ИП_о_начале_задания +ИП_на_завершение_квеста%


# 2020
Пятница, 25.01.2013, 19:33:01

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

Callisto, действительно, при попадании в рестриктор, выдавался инфо, и потом даже диалога о задании не было, сделал проверку, и все стало хорошо. Спасибо!


Цитата (шапка. SibireaStalker)
В теме запрещены "спасибы", авторы которых будут наказаны. Для этого есть система ЛС. Не забываем, ага. Поймите - это усложняет навигацию!
Поиск:
Вверх
Правила чата
Мини-чат
+Мини-чат
0