erlik, это конечно всё понятно. Но тут, насколько я понял Futura, стоит вопрос - "Что будет работать быстрее, вызов (как в твоём варианте) system_ini() и т.д., или создание собственного кода и обращение к нему?"
#Gun12 :
5. Открыть файл acdc.pl, н**5001001a66cf24ce67c0**> 'se_stalker',[/code]
и после неё добавить строку :
[code]stalker_wolf => 'se_stalker',[/code]
6. Всё сохранить, собрать all.spawn, запустить игру и наслаждаться.
У меня так. Все файлы ACDC :
две папки "spawns" "stkutils" и файлы "acdc.pl", "ggtool.pl", "Компиляция.bat", "Декомпиляция.bat" лежат в папке gamedata\spawns вместе с all.spawn
Распакуй all.spawn
Измени секцию Волка
В acdc.pl добавь новую строчку и сохрани всё.
Запакуй all.spawn.
Gun12
ответ даст только проверка
local t = profile_timer()
t:start()
-- измеряемый код
local tt= t:stop()
news_manager.send_tip(db.actor, "Время выполнения кода :"..tostring(tt), 0, "default", 10000)
добавлено спустя 4 минут
Оффтоп - в Си шарпе столько вариантов измерения времени выполнения кода - вплоть до наносекунд.:muzon:
ты кстати когда подключишься к нашей теме "Программирование на Си шарп" в разделе Хард энд Софт? :-)
отредактировал(а) erlik: 04-04-2010 23:39 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
#Gun12 :
У меня так. Все файлы ACDC :
две папки "spawns" "stkutils" и файлы "acdc.pl", "ggtool.pl", "Компиляция.bat", "Декомпиляция.bat" лежат в папке gamedata\spawns вместе с all.spawn
Распакуй all.spawn
Измени секцию Волка
В acdc.pl добавь новую строчку и сохрани всё.
Запакуй all.spawn.
У меня не так, я по ридми делал:
"Прога acdc_10004_amk" - это компилятор/декомпилятор файла "all.spawn". Нужен для того, чтобы декомпилировать (преобразовать) сей файл в сырцы (файлы с исходным кодом).
Далее на пальцах:
1. Создаем где-нибудь пустую папку, например C: \temp
2. Копируем туда файлы: acdc_10004_amk.exe и all.spawn
3. Выполняем команду "cmd" (без ковычек), откроется консоль.
4. Выполняем команду "cd\", т.е выходим в корень системного диска.
5. Выполняем команду "cd C: \temp", т.е меняем рабочую папку на ту, где лежит "прога" и файл для декомпиляции
6. Выполняем команду "acdc_10004_amk -d all.spawn -o c: \temp" (просто пишем как здесь если папку такую же, temp, создали).
7. Смотрим на бегущие циферки и ждем. В папке temp должно появиться много *.ltx файлов. all.spawn из папки можно удалить.
Это и есть исходники. Их можно редактировать. После внесения нужных изменений необходимо скомпилировать all.spawn
Для этого надо выполнить команду "acdc_10004_amk -с all.ltx -o all.spawn"
Замечание.
Только вот тут нет пробела c: \ - я поставил, потому что движок форума иначе в смайлы преобразует.
Gun12
Хватит. Месяц чтения какого нибудь пособия (а их море в отличие от пособий по lua) и тренировки в Визуал Студио Экспресс и сможешь писать приложения для домашнего компа.
Среда разработки - это просто конфетка - написать ошибочный код (в плане синтаксиса) практически нереально - во первых всплывающие подсказки по каждому методу с полным набором чего возвращают и каких аргументов требуют, во вторых - тотальный контроль правил синтаксиса с подчеркиванием любого неверного кода, в третьих - в логе ошибки которая выдается на экран при возникновении исключения во время исполнения пишется код ошибки, указание строчки вызвавшей исключение и возможная причина, в четвертых куча примеров в библиотеке MSDN на русском языке, в пятых можно ловить исключения программно (как все скопом так и по индивидуально с указанием имени исключения).
В общем для новичка подобная среда разработки - просто рай. К тому ж она бесплатная - и урезана в отличие от профессиональной версии совсем незначительно.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Gun12, а дай пожалуйста мне свою прогу, а то моя не запаковывает.
Расскажи, как пользоваться прогами отсюда, там есть как и у тебя, с такими же файлами как ты описал.
Но там нет ридми! А варианты, какие испробывал я, даже не распаковали.
А ты сможешь запаковать мой all.spawn? Я даю ссылку на распакованный: all.spawnПОЖАЛУЙСТА.
#TYOPA :
Как сделать так, что с подстреленным врагом говорить можно?
Я сам над этим думаю сейчас. Но мне подсказали хорошие люди, что есть волшебная строчка в xr_motivator.script из папки script:
if self.object:relation(db.actor) == game_object.enemy then self.object:disable_talk()
else
self.object:enable_talk()
end
Если ее поменять на self.object:enable_talk(),
то все, по идее, должно работать - раненый будет говорить с тобой.
И еще: наверное не у всех NPC есть такой разговор, и при старте диалога будет вылет. Тогда, по совету тех же добрых людей и моим наблюдениям, надо вписать в character_desc_название_локации.xml (из папки gamedata\config\gameplay) строчку о диалоге помощи каждому типу неписей.
Хотя, возможно это не все, что надо сделать ради разговора с врагом.
PS: Люди, ну пишите грамотней, пожалуйста.
отредактировал(а) vhodnoylogin: 05-04-2010 11:12 GMT3 час. Зачем доказывать кому-то, что ты настоящий мужик? Лучше потратьте это время на добрые дела!
Я сам над этим думаю сейчас. Но мне подсказали хорошие люди, что есть волшебная строчка в xr_motivator.script из папки script:
if self.object:relation(db.actor) == game_object.enemy then
self.object:disable_talk()
else
self.object:enable_talk()
end
Если ее поменять на
self.object:enable_talk(),
то все, по идее, должно работать - раненый будет говорить с тобой.
И еще: наверное не у всех NPC есть такой разговор, и при старте диалога будет вылет. Тогда, по совету тех же добрых людей и моим наблюдениям, надо вписать в character_desc_название_локации.xml (из папки gamedata\config\gameplay) строчку о диалоге помощи каждому типу неписей.
надо попробовать. А ты сам пробовал это сделать?
Не знаешь как сделать чтоб когда с раненным разговариваешь и если ты дашь ему аптечку то он становится нейтралом?
"Все сложное - не нужно, все нужное - просто" (М. Калашников)
Я сам над этим думаю сейчас. Но мне подсказали хорошие люди, что есть волшебная строчка в xr_motivator.script из папки script:
if self.object:relation(db.actor) == game_object.enemy then
self.object:disable_talk()
else
self.object:enable_talk()
end
Если ее поменять на
self.object:enable_talk(),
то все, по идее, должно работать - раненый будет говорить с тобой.
И еще: наверное не у всех NPC есть такой разговор, и при старте диалога будет вылет. Тогда, по совету тех же добрых людей и моим наблюдениям, надо вписать в character_desc_название_локации.xml (из папки gamedata\config\gameplay) строчку о диалоге помощи каждому типу неписей.
надо попробовать. А ты сам пробовал это сделать?
Не знаешь как сделать чтоб когда с раненным разговариваешь и если ты дашь ему аптечку то он становится нейтралом?
Знаю, function actor_neutral(actor, npc)
npc:set_relation(game_object.neutral, actor)
end
Ставь это на фразу ГГ и несись меняет к тебе отношение. Кстати, функцию я знаю, а вот как ее применить - нет. Делись знанием, как поставить функцию на фразу (не обязательно ГГ)?
Зачем доказывать кому-то, что ты настоящий мужик? Лучше потратьте это время на добрые дела!
BeeRsek
Чтоб изменить отношение поставь на фразу ГГ вызов этой функции: xr_effects.actor_friend - это для друга.
для врага: xr_effects.actor_enemy
Для нейтрала: xr_effects.actor_neutral
Это функции из файла xr_effects.script, ставь их на экшен в диалоге, на фразу НПС. vhodnoylogin
Здесь примерно посередине есть значения тегов. Там почитай, я по этой статье и научился полноценные диалоги писать
Gun12 , программа при запаковке all.spawn ругается на вносимые изменения:
unknown section 'stalker_wolf' at c:\Temp\acdc_10004_amk.exe line 2714, l
ine 28478.
Но, если изменения не вносить, то всё пакуется на раз. Где косяк?
А есть еще способы обессмертить Волка?
#Futura : Atrox
-- определяем нпс по сиду. Сид берётся\пишется в файле game_story_ids.ltx (\config\) У Волка например сид будет 006. local npc = level_object_by_sid( номер сида )
-- ставим бессмертие (условно, от действия kill() он конечно сдохнет). Тоже можно провернуть и для ГГ. npc.health = 1
Всё это дописываешь в апдейт актора (в bind_stalker, в конец функции actor_binder:update(delta))
Хотя можно и фастколом (fastcall()), дабы биндер не захламлять :-)
Прочитал. Теперь буду пытаться осмыслить. :prankster: А где это вообще копать?
волшебная строчка в xr_motivator.script из папки script:
if self.object:relation(db.actor) == game_object.enemy then
self.object:disable_talk()
не в xr_motivator.script, а в xr_wounded.script
там же нужно прописать диалог о помощи тем категориям сталкерам у которых его нет.Cмотрите функцию function init_wounded() -
у зомби и монолита в строчке def.help_dialog стоит nil
а у прочих def.help_dialog= "dm_help_wounded_medkit_dialog" --это и есть диалог о помощи
То есть если захотите давать аптечку монолитовцам нужно им прописать этот диалог.
Еще стоит поставить true в строчке def.use_medkit = false
которая разрешает\запрещает NPC использовать аптечку, когда ему ее дают.
Также указать этот диалог о помощи в профилях NPC в gamedata\config\gameplay (хотя здесь надо\не надо точно не знаю)
Для смены отношения с вражеского на дружеское нужно изменить дефолтовую функцию transfer_medkit(first_speaker, second_speaker) в файле dialogs.script
там прописана смена отношения только если чувак не враг
меняем строчку if second_speaker:relation(first_speaker) ~= game_object.enemy then
second_speaker:set_relation(game_object.friend, first_speaker)
на if (second_speaker:relation(first_speaker) == game_object.enemy or second_speaker:relation(first_speaker) == game_object.neutral) then
second_speaker:set_relation(game_object.friend, first_speaker)
и получаем смену отношения даже если ГГ враг.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Так вот где ошибка, что-то я не очень понял твое письмо тогда. Elrik можешь еще раз тогда написать то, что ты писал мне в личку: там как раз ты писал о смене отношения к ГГ. Там еще была твоя функция на смену отношения через диалог, универсальная.
Хотя... можешь не писать, если не хочешь утруждаться. Но было бы приятней еще раз получить утерянное.
Зачем доказывать кому-то, что ты настоящий мужик? Лучше потратьте это время на добрые дела!
#borG1 :
други мои растолкуйте чайнику как обратно запаковать после распаковки и редактирования файла gamedata.db0 и чем и надо ли. система win 7
ссори если не в тему 3 дня по форуму шныряю нечего не надыбал:lok5)&P
Гугл в помощь!...
А вот и ссылки:
_http://stalkerin.gameru.net/modules.php?name=Downloads&d_op=viewdownload&cid=22&orderby=dateA Может там найдешь (2е сообщение).
_http://forum.stk-world.ru/viewtopic.php?f=25&t=217
Кстати, люди, посмотрите эту ссыль: _http://forum.stk-world.ru/viewtopic.php?f=25&t=217
Там внизу чемодан модостроителя для всех Сталкеров. Кто-нибудь может сказать, хороши ли они?
Зачем доказывать кому-то, что ты настоящий мужик? Лучше потратьте это время на добрые дела!
Господа, ну обьясните пожалуйста, по понятнее, как же всё таки обессмертить Волка?
Мне уже писали что этот вопрос уже обсосан сотню раз, но ведь тем и лучше, можно ограничиться ссылкой на толковое разъяснение.
Сколько раз тут надо задать вопрос, что бы получить ответ?
#Atrox :
Господа, ну обьясните пожалуйста, по понятнее, как же всё таки обессмертить Волка?
Мне уже писали что этот вопрос уже обсосан сотню раз, но ведь тем и лучше, можно ограничиться ссылкой на толковое разъяснение.
Сколько раз тут надо задать вопрос, что бы получить ответ?
По этой же теме.
npc = level.object_by_id(obj:id()) Вот это, насколько я понимаю (поправьте, если не так), определяет, кто или что будет фигурировать в функции, в данном случае - NPC. Там есть id(), возможно (говорю ВОЗМОЖНО, ибо сам не знаю) это отвечает за то, какой непись будет фигурировать в функции. Если написать id(006) (это сид Волка), то будет ли переменная npc - Волком?
Если это так, то я знаю, как сделать бессмертие.
Ну и соответствующие вопросы:
1) так ли это, как я написал? Если нет, то поправьте.
2) как узнать сид непися?
Зачем доказывать кому-то, что ты настоящий мужик? Лучше потратьте это время на добрые дела!
vhodnoylogin
1) Нет, не правильно. id непися получается либо получением этого самого id по имени НПС вот так: local npc = level.object_by_id("esc_wolf")
Либо перебором вообще всех существующих id вот так: local npc
for i = 1, 65535 do
-- естественно тут надо писать всякие проверки на то, точно ли это НПС
npc = level.object_by_id(i)
end
2) В файле gamedata\config\game_story_ids.ltx. Там же можно зарегать свой.
отредактировал(а) Futura: 05-04-2010 20:34 GMT3 час.
Ну, короче, судя по написанному добрым человеком (Futura), то вот эту строчку local npc = level.object_by_id("esc_wolf")
надо**5001001a66cf24ce67c0**nded.is_wounded(npc)) then
return
end
if (npc.health>0) then
npc.health=1
end
end[/code]
Вот эта функция должна (не знаю, не пробовал) восстанавливать здоровье Волку, однако возможен такой исход: если убить с первого раза - умрет. Тогда можно еще и вот что дописать:
if (npc.health<0) then
npc.health=1
end
Не знаю, не пробовал. Возможен вылет, возможно воскрешение....
И вообще, можно тут посмотреть, или тут А может просто:
function get_wound(obj)
local npc = level.object_by_id("esc_wolf")
if (xr_wounded.is_wounded(npc)) then
return
end
npc.health=1
Самому интересно. Знаешь, как "подключать" свои скрипты? Данное творение г-на Elrika надо засовывать в функцию function motivator_binder:hit_callback в файле xr_motivator.
Зачем доказывать кому-то, что ты настоящий мужик? Лучше потратьте это время на добрые дела!
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.