Скрипт для управления частями тела
#1
Posted 02.12.09 - 17:42
#2
Posted 03.12.09 - 00:00
#3
Posted 03.12.09 - 00:59
А на отдельные части влиять можно запустив поверх анимации с приоритетом 2 и ниже другую с таким же приоритетом.
Небось видели, когда аватар улыбается? Вот шобы он улыбался надо поставить приоритет 2 или более анимации улыбки и такой же анимацям ходьбы.
Сами эмоции, как и кисти рук можно настроить при загрузке анимации в Expression и Hand pose соответственно. Можно так же сделать анимацию цикличной нажав галку Loop.
Хто хочет - ищет способ, хто не хочет - ищет причину.
#4
Posted 04.12.09 - 13:49
чтобы автара улыбалась достачно запустить анимацию встроенную в сл..просто из скрипта все. и не каких двух анимаций и ходьбы.
llStartAnimation("express_smile");
http://lslwiki.net/l...wakka=animation
#5
Posted 17.12.09 - 16:53
// Catherine Omega Heavy Industries
string gAnimName = "block L-foot"; // what animation to play?
default
{
state_entry()
{
llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION); // ask the owner for permission to trigger animations
llStartAnimation(gAnimName); // automatically trigger animation.
}
on_rez(integer param)
{
llResetScript(); // reset the script as soon as it starts.
}
attach(key id)
{
integer perm = llGetPermissions();
if (id != NULL_KEY) // make sure we're actually attached.
{
if (! (perm & PERMISSION_TRIGGER_ANIMATION)) // remember to use bitwise operators!
{
llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION); // request permissions from the owner.
}
}
else
{
if (perm & PERMISSION_TRIGGER_ANIMATION)
{
llStopAnimation(gAnimName); // stop the animation
}
}
}
}
ну в общем все работает, но как только аватар садится на предмет с анимацией ,то анимация в обуви отключается.Как сделать чтоб анимация в обуви работала постоянно?
Анимацию грузил в сл с максимальным приоритетом. Спасибо!
#6
Posted 17.12.09 - 20:52
В анимацонном движке СЛ таких глюков пруд-пруди (из за этого, по большей части хорошо написанные АО-шки какраз и стоют многа, а халявной инфы по ним нема почти), рекомендую распотрошить какую-нить фрибиковую АО, там "затычки" таких глюков имеютцо, правда сперва прийдётсця понять, что в них за что отвечает...
Просто, когда аватар садится на анимайионный мячик или какое-то кресло с прописанной в кресле своей анимацией она заменяет собой предыдущую, тоесть твою, и надо выключить новую анимацию и поновой запустить старую (правда и это не всегда прокатывает).
К сожалению АО-скриптер из мну мягко говоря никакой, поэтому самодельный код привести никакой нимагу, за неимением такового...
P.S. По ходу, написание урока по скриптовой логике придётцо форсировать...
Хто хочет - ищет способ, хто не хочет - ищет причину.
#7
Posted 17.12.09 - 21:22
#8
Posted 18.12.09 - 12:11
timer()
{
string test=llGetAnimation(llGetOwner());
if(test=="Sitting") llSay(0,"я сел");
}
это работает всегда, даже если запущен другой АО
#9
Posted 18.12.09 - 15:08
#10
Posted 19.12.09 - 12:23
В вашем скрипте это должно выглядеть пимерно так:
[color="#008000"]string[/color] gAnimName = "block L-foot";
[color="#0000FF"]default[/color]
{
[color="#008000"]state_entry[/color]()
{
[color="#8B0000"]llRequestPermissions[/color]([color="#8B0000"]llGetOwner[/color](), [color="#0000FF"]PERMISSION_TRIGGER_ANIMATION[/color]);
[color="#8B0000"]llStartAnimation[/color](gAnimName);
[color="#8B0000"]llSetTimerEvent[/color](0.3);[color="#FF8C00"] //УСТАНАВЛИВАЕМ ТАЙМЕР НА 0.3 СЕКУНДЫ[/color]
}
[color="#008000"]on_rez[/color]([color="#008000"]integer[/color] param)
{
[color="#8B0000"]llResetScript[/color]();
}
[color="#008000"]timer[/color]() [color="#FF8C00"]//Сопсна зубин таймер[/color]
{
[color="#008000"]string[/color] test=[color="#8B0000"]llGetAnimation[/color]([color="#8B0000"]llGetOwner[/color]()); [color="#FF8C00"]//Локальная переменная test равна имени текущей анимации[/color]
[color="#0000FF"]if[/color](test=="Sitting") {[color="#8B0000"]llStartAnimation[/color]([color="#2F4F4F"]"имя нужной анимации (в данном случае аним для ботинок)"[/color]);}
[color="#FF8C00"]//Если название анимации в test равно "sitting", то включить вашу добавочную анимацию.[/color]
}
[color="#008000"]attach[/color]([color="#008000"]key[/color] id)
{
[color="#008000"]integer[/color] perm = [color="#8B0000"]llGetPermissions[/color]();
[color="#0000FF"]if[/color] (id != [color="#0000FF"]NULL_KEY[/color])
{
[color="#0000FF"]if[/color] (! (perm & [color="#0000FF"]PERMISSION_TRIGGER_ANIMATION[/color]))
{
[color="#8B0000"]llRequestPermissions[/color]([color="#8B0000"]llGetOwner[/color](), [color="#0000FF"]PERMISSION_TRIGGER_ANIMATION[/color]);
}
}
[color="#0000FF"]else[/color]
{
[color="#0000FF"]if[/color] (perm & [color="#0000FF"]PERMISSION_TRIGGER_ANIMATION[/color])
{
[color="#8B0000"]llStopAnimation[/color](gAnimName);
}
}
}
}
Придупредю, насчёт анимаций - в поле имени можно вписать и UUID анимации (отпадает необходимость пихать саму анимацию в прим, её тогда можно подгружать прямо из вашего инвентаря), правда с оговоркой ключ можно скопировать ТОЛЬКО ЕСЛИ АНИМАЦИЯ СДЕЛАНА ВАМИ И ИМЕЕТ ВСЕ ПРАВА. (копирование UUID анимации - правая кнопка => Copy Asset UUID)
З.Ы. Кстати, зуба привёл пример, который не всегда работает и может конфликтовать с уже надетым АО. Фсё-таки АО-шки попотрошить рекомендую, там более универсальные способы обхода имеются. А вот как они работают вам лучше догадаться самому, поскольку вы будете свою вещь продавать и мало кому интересно за спасибо делать скрипты, с которых их создателям ничего не перепадёт (я, если шо не оскорбляю, а констатирую, шо в нашем секторе многие любят получать что-то на хяляву) Так шо разбираем фриби-АО, смотрим, пытаемся понять, делаем.
Небольшая подсказочка - большинство ХОРОШИХ АО для определения и смены текущей анимации используют функцию integer llGetAgentInfo(key id)
А начать разбор АО-шек рекомендую с халявного Wet Ikon AO, поскольку в нём почти все действия и функции комментируюцо (правда llGetAgentInfo он не юзает).
Хто хочет - ищет способ, хто не хочет - ищет причину.
#11
Posted 19.12.09 - 15:08
#12
Posted 19.12.09 - 15:29
Насчёт фактической помощи конкретно по чьим-то скриптам - помогать не буду, поскольку занят собственным проэктом.
Не следует воспринимать как намёк на "вход в долю" вышеприведённого мною,
скорее даже лучше воспринимать это, как мою личную неприязнь к людям, которые свято уверенны, что если им кто-то помог один раз, то можно надоедать вопросами сколь угодно долго и считать шо кто-то вам всегда объяснит непонятный момент с понятной лично вам точки зрения (таких товарищей в нашем секторе по пальцам одной руки пересчитать можно, причём 1-2 пальца ещё и останутся). Урок по логике скора выложу.
Изучай логику АО и постарайсця определить где именно проскакивает глюк с целью его устранения.
З.Ы. Прозьба не обижаться на меня за такой ответ, поскольку в данный момент дописываю второй урок параллельно с поиском и объяснением наиболее сложных заковырок для третьего урока + делаю скрипт фуря, уж извиняюсць, но разорваться на части категорицски нимагу. =Х.х=
Хто хочет - ищет способ, хто не хочет - ищет причину.
#13
Posted 19.12.09 - 15:50
#14
Posted 20.12.09 - 17:08
Axon Dezno, on 19.12.2009, 12:23, said:
Еще раз: РАБОТАЕТ ВСЕГДА.
По поводу моего примера, его немного надо модифицировать, потому что если не полениться проверить как он работает, то можно увидеть что он будет запускать анимацию через каждые N секунд (тем более с интервалом 0,3 сек). То есть просто не даст ей доиграть. Уважаемый Axon прежде чем писать скрипты, проверяйте их на работу.
#15
Posted 20.12.09 - 18:32
Тобиш тут товарищу Shah-у сперва надо разобраться в каких случаях возникают конфликты, а потом подумать, как их решить.
Сесна, шобы понять, как их решать нужно посмотреть, как их решают другие.
Во! Точна! Зуба, приведите прям тут товарищу пример сопряжения в обуви анимации с приоритетом 1 и анимации сидения на чём-то с приоритетом от 2 и ниже?
Уверен вам это раз плюнуть сделать, и такие простенькие скрипты для вас особой ценности не представляют. =^___^=
Хто хочет - ищет способ, хто не хочет - ищет причину.
#16
Posted 21.12.09 - 12:07
#17
Posted 21.12.09 - 19:15
#18
Posted 22.12.09 - 04:23
#19
Posted 22.12.09 - 13:07
Мдя... [два мегаскриптера-ФГМщика "курнули в сторонке" =О.х=] Вынос ТРУПпы состоялсця...
Хто хочет - ищет способ, хто не хочет - ищет причину.
#20
Posted 22.12.09 - 23:39
1 user(s) are reading this topic
0 members, 1 guests, 0 anonymous users









