Thief: the Dark Fate Forum

Гильдия Редакторов => Dark Radiant => Тема начата: Zmey от 29 июня 2011 21:05:55

Название: Связи (скрипты)
Отправлено: Zmey от 29 июня 2011 21:05:55
Люди, кто знает какие скрипты или связи пишите сюда. Может туториал на русском где есть?
Сделал в игре запертый сундук на отмычки, и ужаснулся на тот обьём действий который я делал, незнаю может и проще есть способ зделать запертый сундук. Вот пример:

Как зделать запертый на отмычки сундук.

Запертый сундук -(Ставим модель сундука)

Свойства (Entity inspector) Должны соответствовать этим

Classname atdm:froblock
name FootLockerBody_1
immune_to_target_setfrobable 1 ставим галку
lock_picktype s
lock_pins 2
locked 1 ставим галку
target FootlockerLid
used_by FootLockerKey_1
model models/darkmod/containers/openable/footlocker_wood.ase  Модель сундука

Свойcтва крышки от сундука-( Ставим модель двери )

Свойства (Entity inspector) Должны соответствовать этим

Classname atdm:mover_door
name FootlockerLid
frob_master FootLockerBody_1   Эту строку вбить в ручную правда не знаю зачем
immune_to_target_setfrobable 1 ставим галку
lock_picktype -
lock_pins 0
locked 0 галки нет
move_time 1
rotate 0 0 -80         (Подразумевается открывание по оси X Y Z)
target ChestFrobControl_1
trigger_on_close 1 ставим галку
used_by -
model models/darkmod/containers/openable/footlocker_wood_lid.ase   Модель крышки

Добавляем третий объект к сундуку. Для начала ставим кисть обычный куб, затем не снимая выделения жмём правую клавишу мыши, далее по адресу: Create Entity/Darkmod/Targets/ atdm:target_set_frobable
Затем натяните на неё текстуру: по адресу textures/common/clip

Свойства (Entity inspector) Должны соответствовать этим

Classname atdm:target_set_frobable
Name ChestFrobControl_1
Model ChestFrobControl_1
Название: Связи (скрипты)
Отправлено: Shadowhide от 29 июня 2011 23:09:30
заставляем мувер летать по кривым траекториям

Цитироватьvoid ghostlight()
{
$НазваниеМувера.startSpline($ИмяКривой);
sys.wait(49);
}

void main()
{
$НазваниеМувера.time(49); \\\\время за которое мувер будет облетать траекторию
$НазваниеМувера.decelTime(1);
$НазваниеМувера.accelTime(1);

while(1)
{
ghostlight();
}
}
Название: Связи (скрипты)
Отправлено: Shadowhide от 29 июня 2011 23:11:52
Цитировать$ИмяДвери.Open(); открывает дверь
$ИмяДвери.Close(); закрывает дверь

Название: Связи (скрипты)
Отправлено: Zmey от 29 июня 2011 23:30:05
Патрулирующий стражник.

Нам понадобиться три вида обьектов, 1. Стражник. 2. Одна точка path_wait.  И нужное нам количество точек path_corner.
Точки можно найти щёлкнув на правую клавишу мыши, далее Create Entity... далее Darkmod/Path  в этой папке находятся эти точки.
Ставим стражника и рядом с ним точку path_wait. Заходим в свойства стражника и добавляем функцию Target в этой функции пишем имя (Name) точки path_wait. Далее подтвердить. У нас образовалась первая связь между стражником и точкой, таким же методом точку path_wait привязываем к точке path_corner, затем точку path_corner привязываем к последующей точке path_corner и тогдалее.... Смотря на сколько длинный путь патруля вы собрались делать. И наконец чтобы патруль работал нужно эту цепь точек замкнуть! Привязать последний path_corner к первому path_corner. Смотрите не перепутайте не к первой точке path_wait а именно первой точке path_corner. Желательно чтобы последняя точка была близка от первой, можно сделать кольцом патруль!
(http://i048.radikal.ru/1106/51/97df56b4c636.jpg) (http://www.radikal.ru)
Название: Связи (скрипты)
Отправлено: Shadowhide от 30 июня 2011 01:36:50
кстати есть ещё path_anim,path_use,path_sleep
так что можно сделать так чтоб стражник во время патруля присаживался,ложился спать,использовал что-нибудь и тд
Название: Связи (скрипты)
Отправлено: Zmey от 30 июня 2011 10:07:40
А есть список с анимациями для точки path_cycleanim. Я так понял эта точка анимацию должна проигрывать?
Название: Связи (скрипты)
Отправлено: Shadowhide от 02 июля 2011 01:17:18
скрипт,добавляющий предмет в инвентарь
Цитировать$player1.addInvItem($НазваниеПредмета); add item to players inventory
Название: Связи (скрипты)
Отправлено: Zmey от 03 июля 2011 23:41:29
Цитата: Shadowhide от 02 июля 2011 01:17:18
скрипт,добавляющий предмет в инвентарь
Цитировать$player1.addInvItem($НазваниеПредмета); add item to players inventory

А в каком окне прописывать этот скрипт нужно?
Название: Связи (скрипты)
Отправлено: Shadowhide от 03 июля 2011 23:51:18
в скриптовом файле миссии
Название: Связи (скрипты)
Отправлено: Zmey от 03 июля 2011 23:56:17
В этом самом окне? (http://s016.radikal.ru/i336/1107/db/a4986d7269c5.jpg) (http://www.radikal.ru)
Название: Связи (скрипты)
Отправлено: Shadowhide от 03 июля 2011 23:57:53
http://modetwo.net/darkmod/wiki/index.php?title=My_first_map_script
Название: Связи (скрипты)
Отправлено: Zmey от 04 июля 2011 16:52:20
Попробовал прописать в файле mine.script   строчку с привязкой предмета выдало ошибку! Потом в редакторе скриптов попробовал вбить тоже самое, нажал Run Script  и тоже выдало ошибку   File "<string>", line 1
    $player1.addInvItem($atdm_playertools_lockpick_snake_1);
    ^
SyntaxError: invalid syntax

Вбивал строку: $player1.addInvItem($atdm_playertools_lockpick_snake_1);
Название: Связи (скрипты)
Отправлено: Shadowhide от 04 июля 2011 16:54:35
объясни пожалуйста,что ты пытаешся сделать ?
может опять повторить процедуру с обменом карты :)
Название: Связи (скрипты)
Отправлено: Zmey от 04 июля 2011 17:00:18
Я пытаюсь присвоить две отмычки в инвентарь )) неполучается. Если у тебя есть время то можно повторить процедуру с картой  :biggrin:
Название: Связи (скрипты)
Отправлено: Shadowhide от 04 июля 2011 17:02:39
для этого не надо писать скрипт
достаточно добавить им свойство :
iv_map_start
1

вот если бы нужно было что АИ давал отмычку  или что-то перемещалось в инвентарь волшебным образом,вот тогда,да,нужен скрипт
Название: Связи (скрипты)
Отправлено: Zmey от 04 июля 2011 17:14:12
Спасибо за совет!  :agree: Всё получилось  :up:
Название: Связи (скрипты)
Отправлено: Zmey от 04 июля 2011 18:36:10
Интересно а можно зделать стражников по разговорчевее? А то они стоят и молчат по сравнению с Thief 1  и Thief 2
Название: Связи (скрипты)
Отправлено: Shadowhide от 04 июля 2011 18:43:04
не знаю




2 рычажка нажато,1 энтитя сработала
метод Fidcal'а : 

Цитировать
I'm assuming button switches here and not two levers that must both be aligned. I think this should work:

buttonA > trigger_onceA > trigger_countC > entityD
buttonB > trigger_onceB > trigger_countC > entityD

Set count 2 on trigger_countC
Set noTouch 1 on both trigger_onces
Название: Связи (скрипты)
Отправлено: Shadowhide от 16 июня 2012 22:43:07
не попадалась на глаза функция,которая может зажечь потушенный огонь ?
Название: Связи (скрипты)
Отправлено: Chuzhoi от 17 июня 2012 03:41:44
Держи:
http://hedonism.nm.ru/files/tdm/test_light.map

Одна из кнопок гасит огонь, вторая - зажигает. Кубик позади огня воздействует на огонь сначала водой (через 3 сек), затем огнем (через 6 секунд). Все сделано через Stim/Response.
Название: Связи (скрипты)
Отправлено: Shadowhide от 17 июня 2012 13:35:08
о,спасибо :)

биндим к игроку :

$имяпредмета.bind( $player1 );

скриптовая телепортация :

$имяпредмета.setWorldOrigin('координаты');
Название: Связи (скрипты)
Отправлено: Shadowhide от 23 августа 2012 03:37:37
оставлю это здесь,вдруг кому пригодится

чтобы управляемая лошадь появилась в Entity инспекторе,нужно добавить следующие строки в кастомный .def файл проекта :

entityDef RidableHorse
{
"inherit"   "atdm:ai_animal_horse_tame3"
"spawnclass" "CAIVehicle"
"scriptobject" "ai_controllable_base"

// friendly to the player
"team" "0"

"frobable"     "1"
"frob_action_script" "frob_ridableAI"

// let the player mantle and stand on the horse
"is_mantleable"     "1"
"push_off_player"     "0"

"steerSpeed"       "1.5" // steering rate
"time_to_max_speed"   "2.0" // time it takes to get from 0 to max speed
"max_reverse_speed"   "0.0" // max reverse speed as fraction of max forward speed (NYI)

// rider positioning. Try to pick a fairly steady joint
// also, the player shouldn't clip into the AI when attached (for now)
"ride_joint"     "rider"
"ride_offset"     "0 -10 0"

"speed_0_anim"   "walk"
"speed_0_min_rate" "1.0"
"speed_0_max_rate" "2.0"
"speed_0_next_speed_control_frac" "0.25"

"speed_1_anim"   "trot"
"speed_1_min_rate" "1.0"
"speed_1_max_rate" "1.5"
"speed_1_next_speed_control_frac" "0.65"

"speed_2_anim"   "run"
"speed_2_min_rate" "0.75"
"speed_2_max_rate" "1.0"
}*/

///////////////////////////////////////////////
/////horse with saddle (no rug or bridle)/////////
///////////////////////////////////////////////

model horse_tame4 {
    mesh            models/md5/chars/animals/horse2/tdm_horse_saddle_only.md5mesh

    channel torso ( *neck4 )
    channel legs ( *origin -*neck4 )

    anim af_pose         models/md5/chars/animals/horse2/af_pose.md5anim
    anim ik_pose         models/md5/chars/animals/horse2/af_pose.md5anim
   
    anim idle            models/md5/chars/animals/horse2/idle.md5anim
    anim idle_01         models/md5/chars/animals/horse2/idle_01.md5anim
    anim idle_02         models/md5/chars/animals/horse2/idle_02.md5anim
  {
   frame 35 footstep
   frame 56 footstep
   frame 89 footstep
   frame 237 footstep
     frame 254 footstep
     frame 270 footstep
}   
    anim idle_03         models/md5/chars/animals/horse2/idle_03.md5anim
    anim walk   



там еще кажется были лошадки с другой моделью и без седла,но я выдирал от фонаря :)
Название: Связи (скрипты)
Отправлено: Shadowhide от 13 февраля 2013 20:55:28
короче мне там расказали интересное
общее число лута нельзя вычитать потому-что оно складывается из трех индивидуальных элементов,а игра не знает из чего что вычитать

покупать за общее число лута можно используя этот скрипт :
void getbroadhead() {
  if (player1.getLootAmount(LOOT_TOTAL)>=50) {
        float cost=50; float paid;
        for (int i=1;i<4;i++) {
          paid=min($player1.getLootAmount(i),cost);
          cost-=paid;
          $player1.changeLootAmount(i,-paid);
        }
        $player1.getNextInvItem();
        $player1.getPrevInvItem();
        sys.cacheSoundShader ("frob_loot");
        entity broadhead1 = sys.spawn("atdm:ammo_broadhead");
        $player1.addInvItem(broadhead1);
  }
}


теперь в первых шести строчках мне почти ничего не понятно
ну ладно,я думаю,что с этими покупками моя работа завершена,возможно кто-нибудь и заюзает у себя
Название: Связи (скрипты)
Отправлено: Chuzhoi от 14 февраля 2013 00:24:53
Вычитается последовательно из всех типов лута, пока не выберется нужное количество. Если данного типа не хватает - вычитается из следующего.
Название: Связи (скрипты)
Отправлено: Shadowhide от 17 марта 2014 01:18:20
режем патчи : http://forums.thedarkmod.com/topic/16090-patch-splitting-in-dark-radiant-ready-for-testing/

/////

void setSpawnArg(string key, string value);

/////

target_setkeyval
-
target
-
keyval