Гипат.org

Флейм - Это интересно (скрипты).!

читер30 - 16 мая 2015, 19:20
SetWind(число,число,число,число)
1 - отклонение ветроуязвимого эффекта по Х.
2 - по Y.
3 - по Z.
4 - 0=офф, 1+ =он.
Пока что, как ветроуюзвимый объект, мною изжвестен только дым (smoke)а
читер30 - 16 мая 2015, 19:24
Idle(объект)
юнит отдыхает.
IsDead - если объект дропнут/его нет - скрипт не реагирует.
Aleks - 16 мая 2015, 21:45
Действительно интересно. :)
Я очень сильно отстал от жизни, сейчас известны какие-то описания для следующих вещей?
Код:
CreateRandomizedFXSource( id : float , x1 : float , x2 : float , y1 : float , y2 : float , z1 : float , z2 : float , Volume : float , rad : float , NameWav : string )
ForIf( цикл )
PlayFX( float , float , float , float , string )
RecalcMercBriefings( )
SetDirectionToObject( nUnit : float )
SetPlayerAggression( float , float )
SetScience( object , float , float , float , float , float , float )
SetSpellAggression( Unit object , Aggression : float )

читер30 - 16 мая 2015, 23:57
Ты сам выкладывал файлик со скриптами. Там этих нет, я их расшифровал эксперементальным (нупским) путём). Этих воу не знаю, не...
читер30 - 17 мая 2015, 00:00
Вот*.
Думаю, матёрые пзшники их знают...
.
Через sеtwind можно пустить дым от костров через всю карту, даже в скайбокс. Он, кстати, имеет конусообразную форму и обрезан сверху))).
читер30 - 17 мая 2015, 00:05
Setsunlight нивкакую не пашет, печаль беда, хотел красный свет, но заменяется созданием светосферы на 100 z и с огромным радиусом ;-). Ещё буду разбирать скриптики. Я эти в посёлке разбирал, всякие сетагрессион там не протестить....
Aleks - 17 мая 2015, 00:42
Файлик я помню, оттуда и копировал. :)
читер30 - 17 мая 2015, 01:07
Окей. Выйду в предгорья и займусь ими!!1 кста, не знаешь как заставить эффект типа огня двигаться))?
Aleks - 17 мая 2015, 01:25
Я последний раз писал скрипты 7 лет назад %).
Могу только предположить, что можно использовать MoveParticleSource.
читер30 - 17 мая 2015, 09:31
Ок, спасибо %)) попробую
читер30 - 17 мая 2015, 13:45
РандомныйФКС даже трогать не хочу...
Showcredits не работает.
Forlf не хочу трогать...
читер30 - 17 мая 2015, 14:57
Сетагресион не работает !
Kalessin - 18 мая 2015, 02:11
Прочитал тему, ничего интересного не увидел :( Пиши еще.
читер30 - 18 мая 2015, 08:21
Зачем?
Kalessin - 20 мая 2015, 04:40
Есть слабая надежда увидеть что-то действительно интересное :rolleyes:
читер30 - 20 мая 2015, 08:42
Это просто расшифрованные многим неизвестные скрипты. И фсё
Kalessin - 22 мая 2015, 03:24
Понятно, что не текстуры :) Заодно, стоит обратить внимание на уже "расшифрованные" скрипты. Их описания далеко не всегда отличаются точностью и полнотой. Да и легкостью понимания для начинающих модостроителей тоже) К примеру, попробуй описать более простым и понятным языком работу InvokeAlarm.
читер30 - 22 мая 2015, 08:28
Одна из самых аццких комманд. Я попробую.
Либерти - 08 июня 2015, 16:22
Нашел прикол
Мучился 2 часа :( выискивая в коде из 30стрчек синтаксическую ошибку. Так и не нашел.
Подумал что в рег файле чего-то неправильно написал/недописал. Но и после побитового сравнения ничего не был обнаружено.
Короче я решил что у меня куриная слепота и я банально чего-то не хочу видеть в упор...
Решил скопировать полностью скрипт из другого моб-файла и убрать оттуда лишнее. Это помогло :)
Затем решил дописать переменные и 1 ф-ию с пустым кодом. Естественно я ее объявил по всем правилам.
Снова не работает! :mad:
Решил убрать ф-ию с объявлением... Все-равно.
И тут до меня начал доходить что проблема кроется в объявлении переменных. На вид все правильно, запятых и двоеточия там где нужно.

Оказалось что имена переменных почему-то не понравились движку. А именно - brothers и guards (причем неважно с заглавной или нет буквы)... Я прифигел :horror: Какая-то ерунда и 3часа возни. неужели это зарезервированные слова???
решил перед словами поставить подчеркиванья - _brothers _guards - Скрипт заработал. :roll:

Короче чудеса да и только.

ЗЫ. похоже правильная у меня практика сложилась - перед именами переменных ставить подчеркивания - так их легче определить. Видимо, придется и дальше эту традицию поддерживать.
Кстати перед именами пользовательских ф-ий я ставлю решетку - опять же легче выискивать в коде.
ЗЗЫ. будьте осторожны с именами, что-то там нечисто! :D
Demoth - 08 июня 2015, 20:13
Либерти, это особенность интерпретатора скритов в ПЗ. Если имя переменной/скрипта начинается с названия любой встроенной функции, то будет ошибка. В твоём случае - это переменная guards, начало которой совпадает с функцией Guard. С переменной brothers всё в порядке.
В моём редакторе .mob файлов (пароль к архиву: eisoft) встроена проверка скриптов на синтаксические ошибки. Он проверяет при помощи самой же ПЗ. Так что, если проверка не найдёт ошибок, то скрипт 100% правильный.

P.S. Да, это злостный самопиар и форсинг редактора.
читер30 - 08 июня 2015, 22:41
Спасибо демош и либерти, это мне очень пригодится = ) .
Либерти - 09 июня 2015, 10:04
Demoth, спасибо что разъяснил этот момент. До этого не встречал что об этом где-то писалось. Поэтому такие трудности и возникли.

Возникли сложности с завершением квеста. А именно, он иногда завершается при выполнении условий, иногда нет.
Еще не совсем понятно какие способы существуют для нормального и гарантированного завершения квестов.
По-идее есть 2 метода:
1) QStart("z16q3") .... Qfinish( )
2) GSSetVar( 0, "q.z16q3.z16q3", 2 )
Но как показала моя практика, оба способа не всегда срабатывают.
Причем даже совместное использование обоих способов не дает гарантированный результат. Во всяком случае я с этим сегодня столкнулся. Почему квест не всегда завершается? :spy:
MIRILLED - 09 июня 2015, 19:54
Цитата (Либерти):


Возникли сложности с завершением квеста. А именно, он иногда завершается при выполнении условий, иногда нет.
Еще не совсем понятно какие способы существуют для нормального и гарантированного завершения квестов.
По-идее есть 2 метода:
1) QStart("z16q3") .... Qfinish( )
2) GSSetVar( 0, "q.z16q3.z16q3", 2 )
Но как показала моя практика, оба способа не всегда срабатывают.
Причем даже совместное использование обоих способов не дает гарантированный результат. Во всяком случае я с этим сегодня столкнулся. Почему квест не всегда завершается? :spy:

QStart и QFinish используются для квестов приди и убей(По типу жабы людоеда) в чем-то более сложном реагирует неадекватно.
Поэтому используй второй способ. Что бы квест закончился тебе нужно написать:
GSSetVar( 0, "q.z16q3.z16q3", 2 )
QuestComplete()
Меня такая конструкция не подводила.
читер30 - 10 июня 2015, 01:47
Посмотри в мапы синглплеера и перекопируй куски кода.
Либерти - 10 июня 2015, 13:21
MIRILLED, благодарю. Решил проблему разделив проверку условий на 2 функции/процедуры.
Т.е. теперь проверяется 1 простое условие в 1 ф-ии, из которой вызывается ф-ия 2, в которой делается еще несколько проверок. и если все ок, запускается код. Сработало, 5 из 5 раз успешно было :)

Код:

Script #Exit  //1 ф-ия, запускает вторую
(
  if( UnitInSquare(_player, 260, 110, 270, 123) ) //игрок достигает зоны выхода
  then(
    KillScript()
    Sleep(5)
    #FinishQuest(NULL)  //вызов ф-ии 2
    )
)

Script #FinishQuest  //2 ф-ия
(
  if(
    IsEqual(HaveItem(0, 17), 1)  //есть ключевой предмет
    Every(i, _guards, IsDead(i)) //враги убиты
    IsAlive(GetObject(1020009))  //помошники живы
    IsAlive(GetObject(1020010))
    )
  then(
    KillScript()   
    GSSetVar(0, "q.z16q3.z16q3", 2)
    Qfinish()
    FOR (b, _brothers)
      ( SetCPFast(b, 120, 53, 0 ) )
    )
)


MIRILLED, у меня твой метод не сработал, точнее не сработало следующее:
Код:
GSSetVar(0, "q.z16q3.z16q3", 2)
QuestComplete(0, "q.z16q3.z16q3")

Квест как-бы засчитывается (в заданиях), но квестодатель думает что мы квест не сделали.
Я могу тебе квест скинуть, если ты думаешь что я что-то там не то сделал.
Часовой пояс: GMT +4:00
Форумы Поселка созданы на базе phpBB2 2.0.4 © phpBB Group