Люди, кто знает какие скрипты или связи пишите сюда. Может туториал на русском где есть?
Сделал в игре запертый сундук на отмычки, и ужаснулся на тот обьём действий который я делал, незнаю может и проще есть способ зделать запертый сундук. Вот пример:
Как зделать запертый на отмычки сундук.
Запертый сундук -(Ставим модель сундука)
Свойства (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
заставляем мувер летать по кривым траекториям
Цитироватьvoid ghostlight()
{
$НазваниеМувера.startSpline($ИмяКривой);
sys.wait(49);
}
void main()
{
$НазваниеМувера.time(49); \\\\время за которое мувер будет облетать траекторию
$НазваниеМувера.decelTime(1);
$НазваниеМувера.accelTime(1);
while(1)
{
ghostlight();
}
}
Цитировать$ИмяДвери.Open(); открывает дверь
$ИмяДвери.Close(); закрывает дверь
Патрулирующий стражник.
Нам понадобиться три вида обьектов, 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)
кстати есть ещё path_anim,path_use,path_sleep
так что можно сделать так чтоб стражник во время патруля присаживался,ложился спать,использовал что-нибудь и тд
А есть список с анимациями для точки path_cycleanim. Я так понял эта точка анимацию должна проигрывать?
скрипт,добавляющий предмет в инвентарь
Цитировать$player1.addInvItem($НазваниеПредмета); add item to players inventory
Цитата: Shadowhide от 02 июля 2011 01:17:18
скрипт,добавляющий предмет в инвентарь
Цитировать$player1.addInvItem($НазваниеПредмета); add item to players inventory
А в каком окне прописывать этот скрипт нужно?
в скриптовом файле миссии
В этом самом окне? (http://s016.radikal.ru/i336/1107/db/a4986d7269c5.jpg) (http://www.radikal.ru)
http://modetwo.net/darkmod/wiki/index.php?title=My_first_map_script
Попробовал прописать в файле 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);
объясни пожалуйста,что ты пытаешся сделать ?
может опять повторить процедуру с обменом карты :)
Я пытаюсь присвоить две отмычки в инвентарь )) неполучается. Если у тебя есть время то можно повторить процедуру с картой :biggrin:
для этого не надо писать скрипт
достаточно добавить им свойство :
iv_map_start
1
вот если бы нужно было что АИ давал отмычку или что-то перемещалось в инвентарь волшебным образом,вот тогда,да,нужен скрипт
Спасибо за совет! :agree: Всё получилось :up:
Интересно а можно зделать стражников по разговорчевее? А то они стоят и молчат по сравнению с Thief 1 и Thief 2
не знаю
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
не попадалась на глаза функция,которая может зажечь потушенный огонь ?
Держи:
http://hedonism.nm.ru/files/tdm/test_light.map
Одна из кнопок гасит огонь, вторая - зажигает. Кубик позади огня воздействует на огонь сначала водой (через 3 сек), затем огнем (через 6 секунд). Все сделано через Stim/Response.
о,спасибо :)
биндим к игроку :
$имяпредмета.bind( $player1 );
скриптовая телепортация :
$имяпредмета.setWorldOrigin('координаты');
оставлю это здесь,вдруг кому пригодится
чтобы управляемая лошадь появилась в 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
там еще кажется были лошадки с другой моделью и без седла,но я выдирал от фонаря :)
короче мне там расказали интересное
общее число лута нельзя вычитать потому-что оно складывается из трех индивидуальных элементов,а игра не знает из чего что вычитать
покупать за общее число лута можно используя этот скрипт :
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);
}
}
теперь в первых шести строчках мне почти ничего не понятно
ну ладно,я думаю,что с этими покупками моя работа завершена,возможно кто-нибудь и заюзает у себя
Вычитается последовательно из всех типов лута, пока не выберется нужное количество. Если данного типа не хватает - вычитается из следующего.
режем патчи : http://forums.thedarkmod.com/topic/16090-patch-splitting-in-dark-radiant-ready-for-testing/
/////
void setSpawnArg(string key, string value);
/////
target_setkeyval
-
target
-
keyval