Модератор форума: КсюXa, ApeX  
Форум » Fallout: New Vegas » Мастерская » Скрипты (Вопросы и ответы)

Скрипты
a3apbi4  Offline  Сообщение №1 написано: 7 декабря 2010, 18:01



11
Скрипты - неотъемлемая часть GECK. При написании возникает очень много казусов. Данная тема должна помочь не наступать на "грабли" новичкам и делиться опытом с другими более продвинутых мододелов.




[HazarDous]  Offline  Сообщение №211 написано: 8 мая 2011, 17:33



476
Я менял местами MoveTo и set bTargeded to PlaceAtReticle obect 1 0 EuclidPointerRange. Когда MoveTo впереди игрок телепортируется к указанному маркеру, а когда позади - нет.

Oh no, not me,
I never lost control.
You're face to face
With the man who sold the world.
Kraas  Offline  Сообщение №212 написано: 6 июня 2011, 07:01 | Отредактировано: Kraas - 6 июня 2011, 07:19



114
помогите, плиз. пытаюсь написать скрипт, что бы добавление предмета в инвентарь ГГ запускало следующую стадию квеста.


Понятно, что где-то ошибка, но где не могу понять. Или скрипт совсем кривой?

"Ковальски, если ты не выживешь…, я могу забрать твой музыкальный центр?" Полковник Джек О'Нилл "Звездные врата"
KAIN48  Offline  Сообщение №213 написано: 6 июня 2011, 10:36 | Отредактировано: KAIN48 - 6 июня 2011, 10:38


Шаманистый шаман


Kraas, Привет!
Сделай вот так - здесь проверка на наличие в инвентаре - разницы никакой. Всё равно стадия устанавливается только один раз.
Code
scn AAAKraasCounterSCRIPT
short DoOnce
Begin GameMode
if (DoOnce == 0)
if (Player.GetItemCount ИмяПредмета >= 1) ; ID нужного для смены стадии квеста предмета  
SetStage ИмяКвеста  20          ; ID квеста - стадии должны быть созданы.
set DoOnce to 1
endif
endif
End

Пока.

Мы вышли из дома, когда во всех... Поздно вышли!
Scail  Offline  Сообщение №214 написано: 6 июня 2011, 10:38


Viper Armory Inc.


94
Kraas,
Можно так:
Code
scn myquestscript

short myitem

begin onAdd Player
if myitem == 0
setobjectivecompleted Myquest 10 1  
setobjectivedisplayed myquest 20 1
set myitem to 1
endif  

end


Kraas  Offline  Сообщение №215 написано: 6 июня 2011, 15:02



114
Спасибо, Kain48, Scail за ответ. Тяжко с гуманитарным с этой логикой. Вроде все понятно, пока не возьмешься. Но ничего, я их (скрипты) сделаю.

"Ковальски, если ты не выживешь…, я могу забрать твой музыкальный центр?" Полковник Джек О'Нилл "Звездные врата"
KAIN48  Offline  Сообщение №216 написано: 6 июня 2011, 18:08 | Отредактировано: KAIN48 - 6 июня 2011, 18:09


Шаманистый шаман


Kraas,
Да я и сам толком не понимаю! Больше смотрю чужие, затем пробую менять под свои задачи. Когда не могу добиться нужного результата - то же иду и спрашиваю. Опыт нужен,понимание, и особоя логика. Я бывает напишу на страницу скрипт, покажу одному SpalnyVagon, он поправит и скрипт в итоге в 4 строчки. Нигде человек специально не учился (програмированию) просто опыт и работа, правильно использует всю имеющуюся литературу и информацию. У него справочник по скриптам OSFM v1.2.0 - настольная книга.
У меня то же! Но понимания работы нет и ещё долго не будет. Только наработкой и проверками на работоспособность это можно сделать.
Но занятие интересное. Они тут недавно с Wulf (человек пишет туторы на разные темы, самый известный - компаньон 1 2 3)
Так вот они в переписке на форуме решали вопрос о том как сделать, что бы перед боем ГГ одевал шлем, а после снимал.
Так там и посмотреть и почитать есть чего, или такое, что бы непись раз в два дня менял одежду на другую.
Есть спецы!
Пока.
Ну и что бы не флудить зря выложу скрипт на то как заставить непися подойти к ГГ и начать разговор. Давно мне его написал SergeyRos.
Code
scn AAAMGGipnosGreeterActivatorSCRIPT
short sDoOnce
Begin OnTriggerEnter player
if (sDoOnce == 0)
      AAAMGGipnosARef.startconversation player greeting
      Set sDoOnce to 1
endif
End

AAAMGGipnosARef - этот непись
Скрипт для триггера
Пока

Мы вышли из дома, когда во всех... Поздно вышли!
Kraas  Offline  Сообщение №217 написано: 7 июня 2011, 09:47



114
KAIN48, Спасибо вот это удружил! good Кстати. может сделать такой архивчик скриптовый. У всех чего то полезное может быть. А так глянул туда, может и спрашивать не придется. Но это к модераторам, наверно. <_<

"Ковальски, если ты не выживешь…, я могу забрать твой музыкальный центр?" Полковник Джек О'Нилл "Звездные врата"
Vi[RUS]  Offline  Сообщение №218 написано: 11 июня 2011, 11:28



275
Помогите!
Создал интерьер (салун), расставил там лучи от солнца "IndFXLightRays01"
Вот как выглядит сам интерьер:


Я хочу чтобы лучи солнца (на правой стороне) включались в 8.00 и выключались в 12.00
а лучи на левой стороне включались в 14.00 и выключались в 19.00

как такое сотворить?

ITU  Offline  Сообщение №219 написано: 11 июня 2011, 14:43



995
Vi[RUS], ищи скрипт "FreesideLightsScript"
тама пример как сделать выключение и выключение какого-то объекта в зависимости от времени
соответственно тебе нужно будет создать два объекта, копии IndFXLightRays01 для разных сторон

Vi[RUS]  Offline  Сообщение №220 написано: 11 июня 2011, 15:53



275
Вот переделал скрипт


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

Добавлено (11.06.2011, 19:53)
---------------------------------------------
Все, сделал, проблема была вовсе не в скрипте ^_^


Kraas  Offline  Сообщение №221 написано: 14 июня 2011, 05:01



114
А в чем. Напиши, пожалуйста. Может кому-нибудь (мне например :D) понадобится что-то подобное.

"Ковальски, если ты не выживешь…, я могу забрать твой музыкальный центр?" Полковник Джек О'Нилл "Звездные врата"
Exotic  Offline  Сообщение №222 написано: 20 июня 2011, 17:18



:) Господа, такая ситуация. Я для ф3 делал модик по крафтингу. Так вот, в некотором смысле там на скриптах было удобнее сделать некоторые вещи, хотя я могу и ошибаться.

Нужно: При создании предмета по рецепту игрок получает опыт. Это позволит отыграть крафтера без всякой бойни да и вообще очень нужная штука.
Как сделать? Если делать "получает предмет", то опыт будет начисляться каждый раз, как только игрок поднимает созданный предмет, если поставить одинарно, то только раз, а при следующем создании - нет)
Кто-нибудь может написать такой скрипт? С меня в ближайшем будущем крафтовый мод)

Artem13  Offline  Сообщение №223 написано: 20 июня 2011, 17:29


Mercenaries. Со смертью на ты.


Exotic, там единственный вариант - опыта выдавать в той же ветке, где идёт собственно сборка, т.е. в скрипте обработки верстака или на чём ты там собираешь

<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a>
Да, мы бандиты и бродяги, как злословит молва,
Мы попадаем в передряги, помня эти слова.
Смотри вперед и не сдавайся ты на милость судьбе!
Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
ITU  Offline  Сообщение №224 написано: 20 июня 2011, 17:31 | Отредактировано: ITU - 20 июня 2011, 17:31



995
Exotic, ну или вариант сделать чтоб в рецепте в "выходе" добавлялась вещь, дающая опыт и убирающая себя сама

Artem13  Offline  Сообщение №225 написано: 20 июня 2011, 17:48


Mercenaries. Со смертью на ты.


Exotic, примерно так:

Code


if(button <1 )
    return
elseif(button == 1)
    ; удаляем компоненты и добавляем собранный предмет
    ModPCAttribute XP 500
elseif( button == 2 )
    ...
endif


<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a>
Да, мы бандиты и бродяги, как злословит молва,
Мы попадаем в передряги, помня эти слова.
Смотри вперед и не сдавайся ты на милость судьбе!
Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Exotic  Offline  Сообщение №226 написано: 20 июня 2011, 17:48



ITU, именно это я и делаю уже :)
Вот только как сделать, чтобы опыта добавилось правильно? Я в скриптах не шарю совершенно)

scn XPbonusadd

Begin GameMode

if Player.GetItemCount xDN10XP >= 1
RewardXP 10
player.RemoveItem xDN10XP 1 1
endif

End

Как его исправить до правильной версии, если игрок может получить сразу 10 предметов xDN10XP?

Artem13  Offline  Сообщение №227 написано: 20 июня 2011, 17:57 | Отредактировано: Artem13 - 20 июня 2011, 17:58


Mercenaries. Со смертью на ты.


Цитата Exotic

Как его исправить до правильной версии, если игрок может получить сразу 10 предметов xDN10XP?


в два приёма:
сначала set ccount to Player.GetItemCount xDN10XP

а потом уже

if ccount >= 1
RewardXP ccount*10
player.RemoveItem xDN10XP ccount 1
endif

<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a>
Да, мы бандиты и бродяги, как злословит молва,
Мы попадаем в передряги, помня эти слова.
Смотри вперед и не сдавайся ты на милость судьбе!
Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Exotic  Offline  Сообщение №228 написано: 20 июня 2011, 17:58



Artem13, на самом деле, с добавлением дамми-опыта получится интереснее, потому что игрок сразу видит, сколько опыта он получит за создание той или иной фигни)
:D
Вот только скрипт бы правильно переделать.

Artem13  Offline  Сообщение №229 написано: 20 июня 2011, 17:59


Mercenaries. Со смертью на ты.


Exotic, я просто функцию Ревард запамятовал

<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a>
Да, мы бандиты и бродяги, как злословит молва,
Мы попадаем в передряги, помня эти слова.
Смотри вперед и не сдавайся ты на милость судьбе!
Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Exotic  Offline  Сообщение №230 написано: 20 июня 2011, 18:08



Artem13, спасибо, сейчас буду пробовать)

Artem13  Offline  Сообщение №231 написано: 20 июня 2011, 18:11


Mercenaries. Со смертью на ты.


да на здоровье, ccount не забудь обьявить только

<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a>
Да, мы бандиты и бродяги, как злословит молва,
Мы попадаем в передряги, помня эти слова.
Смотри вперед и не сдавайся ты на милость судьбе!
Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Exotic  Offline  Сообщение №232 написано: 20 июня 2011, 18:14



Artem13, хмм. Так это в 2 скрипта должно быть, или как?

Code
scn XPbonus10

Begin GameMode

set ccount to Player.GetItemCount xDN10XP  

if ccount >= 1
RewardXP ccount*10
player.RemoveItem xDN10XP ccount 1
endif  

End


Что не так?) Скрипт усердно не хочет сохраняться :)

Artem13  Offline  Сообщение №233 написано: 20 июня 2011, 18:21


Mercenaries. Со смертью на ты.


перед бегином обьяви переменную:
short ccount

<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a>
Да, мы бандиты и бродяги, как злословит молва,
Мы попадаем в передряги, помня эти слова.
Смотри вперед и не сдавайся ты на милость судьбе!
Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Exotic  Offline  Сообщение №234 написано: 20 июня 2011, 18:25



Artem13,

Code
scn XPbonus10
short ccount  

Begin GameMode

set ccount to Player.GetItemCount xDN10XP  

if ccount >= 1
RewardXP ccount*10
player.RemoveItem xDN10XP ccount 1
endif  

End


Один фиг сохраняться не хочет :/

Artem13  Offline  Сообщение №235 написано: 20 июня 2011, 18:34


Mercenaries. Со смертью на ты.


Exotic,
1. а сам предмет xDN10XP создан?
2. попробуй еще разбить операции на элементарные:

short cXP
...

set cXP to ccount*10
RewardXP cXP
...

<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a>
Да, мы бандиты и бродяги, как злословит молва,
Мы попадаем в передряги, помня эти слова.
Смотри вперед и не сдавайся ты на милость судьбе!
Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Exotic  Offline  Сообщение №236 написано: 20 июня 2011, 18:44



Artem13, скрипт сохранился, но при этом не работает ни добавление опыта, ни убирание вещи из инвентаря.

Code
scn XPbonusadd
short xpcount
short cXP
Begin GameMode
set xpcount to Player.GetItemCount xDN10XP
set cXP to xpcount*10  

if xpcount >= 1  
RewardXP cXP
player.RemoveItem xDN10XP xpcount 1
endif

End

ITU  Offline  Сообщение №237 написано: 20 июня 2011, 19:56



995
лучше в условие записать все вместе
так как это GameMode и выполняется постоянно и постоянное идет присвоение значений переменных xpcount и cXP

Code
scn XPbonusadd  

  short xpcount  
  short cXP  

  Begin GameMode

If (Player.GetItemCount xDN10XP  >=1)
  Set xpcount  to Player.GetItemCount xDN10XP  
  set cXP to xpcount*10   
  RewardXP cXP  
  player.RemoveItem xDN10XP xpcount 1
EndIf

End


а если таким способом попробовать можно

Code
scn XPbonus10  

Begin onAdd
RewardXP 10  
RemoveMe
End

Exotic  Offline  Сообщение №238 написано: 21 июня 2011, 01:37



ITU, это тоже не работает) Что со второй частью, которая onAdd?

Artem13  Offline  Сообщение №239 написано: 21 июня 2011, 02:26


Mercenaries. Со смертью на ты.


Exotic, а к чему скрипт прикреплён то?

<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a>
Да, мы бандиты и бродяги, как злословит молва,
Мы попадаем в передряги, помня эти слова.
Смотри вперед и не сдавайся ты на милость судьбе!
Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Exotic  Offline  Сообщение №240 написано: 21 июня 2011, 05:17



Artem13, misc item на основе жестяной банки.
По идее, когда она добавляется в инвентарь, должен начисляться опыт и после этого банка должна ликвидироваться, но даже если я ее с пола подбираю, скрипт не пашет :(

Добавлено (21.06.2011, 07:09)
---------------------------------------------
Artem13, а вообще банка эта создается верстаком обычным.

Добавлено (21.06.2011, 09:17)
---------------------------------------------
:) Кстати, при прицеплении скрипта к банке вида

Code
scn XPbonusadd   

begin onadd player
  rewardxp 10
  removeme
end


При подборе с земли банка удаляется и начисляется опыт, но при добавлении в инвентарь верстаком эта зараза добавлять опыт не хочет и остается там :/

Я знаю, что можно сделать отдельный верстак для мода с messagebox, но это настолько долго и трудоемко по сравнению с уже готовым верстаком Вегаса, что капец)
Есть еще идеи?

Форум » Fallout: New Vegas » Мастерская » Скрипты (Вопросы и ответы)
Поиск:





Ответ на жалобу смотрите в разделе жалоб