Форум TeamX
   Home   Members  
Pages: [1] |   Go Down
 
Author Topic: Как заставить криттера спать?  (Read 404 times)
Rainman
Пользователь
Posts: 69

301104000
Как заставить криттера спать?
« on: 25 December 2010, 13:25:04 »

Я честно поискал такую тему на обоих форумах Teamx, но ничего не нашел (хотя помню, что где-то что-то подобное было).
Задача такая: с 9:00 до 21:00 детишки бегают, играют и прочая, а с 21:00 до 9:00 они спять и не шевелятся. Максимум, что мне удалось сделать - при наступлении "времени спать" ребенок идет на свой гекс, ложится на него, но тут же вскакивает (использовал группу анимаций идти_на_гекс + обратная_анимация_вставания). Кто-нибудь знает, как заставить ребенка спокойно лежать на своем гексе (тут еще вырисовывается проблема движковой анимации "ковыряния в носу", которая воспроизводится время от времени)?

Наш большой пост апокалиптический проект "Олимп 2207"
http://olympus2207.com
Master
Пользователь
Posts: 211

Чистосердечный зевака


Re: Как заставить криттера спать?
« Reply #1 on: 25 December 2010, 13:29:19 »

Я делал охрану, которая "дежурила" в зависимости от времени суток.

Так вот: с 21 вечера до 8 утра эти чудеса лежали, утром вставали и шли охранять. В 21 это чудо отрывается от лицезрения горизонта и идёт спать на гекс. Скриптов выходит много, но можно попробовать Великий Рандом с проверками на занятость гекса.

Пробуй через условия. Удачи!

У меня всё работало, но скрипты не сохранились, увы.. Грустный

Bugs...? Dammit Gus! I`m a dessert chef, not a programmer!
Fakels
Пользователь
Posts: 337

Модный геймер


Re: Как заставить криттера спать?
« Reply #2 on: 25 December 2010, 14:03:13 »

"как заставить ребенка спокойно лежать на своем гексе"
Лежим одыхаем
Quote
      reg_anim_clear(self_obj);
      reg_anim_begin();
      reg_anim_animate(self_obj,ANIM_fall_back_sf,-1);
      reg_anim_end();
      critter_injure(self_obj,DAM_KNOCKED_DOWN);
как только криттер подойдет на нужный гекс выполняешь этот скрипт, и все он замертво падает Смеющийся анимацию подберешь

Animate standing up
Quote
      reg_anim_animate( self_obj,ANIM_back_to_standing,-1);
« Last Edit: 25 December 2010, 14:26:29 by Fakels »

"Необходимо учесть все условия и тогда - нет проблем"
Master
Пользователь
Posts: 211

Чистосердечный зевака


Re: Как заставить криттера спать?
« Reply #3 on: 25 December 2010, 15:06:23 »

Мёртвое дитя будет говорить в этом случае? Я своих заставлял посылать будившего их подальше Смеющийся До рассвета Улыбка

Bugs...? Dammit Gus! I`m a dessert chef, not a programmer!
Rainman
Пользователь
Posts: 69

301104000
Re: Как заставить криттера спать?
« Reply #4 on: 25 December 2010, 16:07:18 »

to Fakels:

Спасибо за идею с "critter_injure(self_obj,DAM_KNOCKED_DOWN)", именно этого и не хватало. Окончательный код выглядит так:
1) При наступлении условия идти_спать
     reg_anim_func(2, self_obj);
     reg_anim_func(1, 1);
     reg_anim_obj_move_to_tile(self_obj, tile_num_in_direction(self_tile, 5, 10), -1);
     reg_anim_animate_reverse(self_obj,37,-1);
     reg_anim_animate(self_obj,48,-1);
     reg_anim_func(3, 0);
     critter_injure(self_obj, 2); //при этом криттер не воспроизводит стандартную анимацию чесания
2) При наступлении условия пробуждение
     critter_injure(self_obj, 2 bwor 8388608);
     reg_anim_func(2, self_obj);
     reg_anim_func(1, 1);
     reg_anim_animate(self_obj,37,-1);
     reg_anim_func(3, 0); //при это криттер полностью возвращается в свое нормальное состояние

Спасибо, что помогли разобраться!


Наш большой пост апокалиптический проект "Олимп 2207"
http://olympus2207.com
Master
Пользователь
Posts: 211

Чистосердечный зевака


Re: Как заставить криттера спать?
« Reply #5 on: 25 December 2010, 17:50:49 »

Rainman
Исходниками потом не поделишься? =)

Bugs...? Dammit Gus! I`m a dessert chef, not a programmer!
Pages: [1] |   Go Up