Форум » Вопросы и ответы » Вопрос по скриптам » Ответить

Вопрос по скриптам

Вирус: Я не могу разобратся со скриптом loadmap , а ещё не подскажете как легче вычеслять точки в скрипте actor?

Ответов - 34, стр: 1 2 All

Morse: для начала давай определимся с терминологией. скрипт - это вся программа целиком. то что ты называешь "скриптами" именуется "функция". Далее по порядку. loadmap - читаем вики. тамошний пример весьма показателен: в качестве параметра функции передается строка (т.е. в двойных кавычках) содержащая путь к нужной карте начиная от корневой директории танков. actor - тут действительно в вики ничего не написано... каждая клетка в редакторе - это на самом деле матрица 32х32. соответственно координата правого нижнего угла клетки - 32*Х, 32*У. середины - 32*Х-16, 32*У-16

инс: а вы допишите то, чего не хватает. на то она и вики :)

Morse: не-не-не)) у кого-то там семья и дети, а кто-то только дописывает диплом, ищет работу и подругу жизни. я лучше допишу чего мне в научном проекте и в резюме не хватает)))


Келтас: вирус забыл свой пароль паетому отвечу я : лаодмап не пашет полностью в форме loadmap("maps/dm1.map") у меня по крайней мере

VIRUS: Morse пишет: actor - тут действительно в вики ничего не написано... каждая клетка в редакторе - это на самом деле матрица 32х32. соответственно координата правого нижнего угла клетки - 32*Х, 32*У. середины - 32*Х-16, 32*У-16 А по руски?

hmh: Ты себе представь, что сетка в редакторе, на которой объекты ставятся, делит всю игровую площадь на куски, которые высотой в 32 условных единицы и шириной тоже в 32. Так вот, в поле введения координат в скриптах ты вводишь именно условные единицы, а не клетки сами по себе, то есть чтобы поставить что-нибудь в нижнем правом углу третьей сверху и пятой слева клетки, тебе надо подставить X и Y в actor значениями соответственно 32*5 и 32*3. Чтобы поставить танк на середину клетки, отнимаешь половинные значения ширины-высоты клеток от конечной кординаты: 32*5-16 и 32*3-16.

VIRUS: Ты себе представь, что сетка в редакторе, на которой объекты ставятся, делит всю игровую площадь на куски, которые высотой в 32 условных единицы и шириной тоже в 32. Так вот, в поле введения координат в скриптах ты вводишь именно условные единицы, а не клетки сами по себе, то есть чтобы поставить что-нибудь в нижнем правом углу третьей сверху и пятой слева клетки, тебе надо подставить X и Y в actor значениями соответственно 32*5 и 32*3. Понял, а єто не понял Чтобы поставить танк на середину клетки, отнимаешь половинные значения ширины-высоты клеток от конечной кординаты: 32*5-16 и 32*3-16.

VIRUS: А почему у меня отсчет начинаеться с 16,16

hmh: Где начинается? Поконкретнее, пожалуйста.

VIRUS: В верхнем левом углу X,Y клетка 1,1 = 16,16 точек

hmh: Слушай, я тебе тут всё так разжевал, что достаточно вылезти из танка и на ложечке съесть. Отсчёт точек ведётся с 0, и если твой курсор(или чем ты там точки отсчитываешь) находится на середине клетки - то к точкам прибавляется половина клетки, а не вся клетка. Не понимаешь - экспериментируй и делай выводы, рано или поздно поймёшь.

VIRUS: Келтас пишет: лаодмап не пашет полностью в форме loadmap("maps/dm1.map") у меня по крайней мере Та и у меня пашет тоько в кампании в документе .LUA А в тригере не пашет

Morse: http://zod.borda.ru/?1-6-0-00000020-000-0-0-1201511653

VIRUS: Извините за глупый вопрос но вопще зачем скрипт quit()

RUSlan: VIRUS Закрыть

VIRUS: Я знаю что закрыть но зачем закрывать игру

Инс: Чтобы можно было в консоли нажать Q, Tab, Enter

VIRUS: А можно ли сделать так, чтобы мины взрывались по скрипту?

Morse: мину можно просто кильнуть. а чтобы получить анимацию взрыва можно воспользоваться соответствующим скриптом.

VIRUS: А урон нанесется?

Morse: нанесется, нанесется. только вот количество его будет скорее всего другим - там надо поизучать

hmh: Поставь объект "танк"(по-моему, так в функциях и пишется - "tank", на Танкопедии не написано, увы) на мине, потом сразу кильни функцией kill(). Мина взорвётся, танка пользователь не увидит.

VIRUS: А можно ли заставить ботов ехать в одну точку?

Morse: нет, ботами управлять нельзя. но есть один фокус: если где-нибудь на карте создать бустер, то все боты в радиусе видимости ломанутся его брать. даже если его тут же уничтожить они все равно будут ломиться в точку где он лежал. такой вот милый хак.

VIRUS: Morse а если например карта большая и нужно чтобы бот ехал по одному пути!

RUSlan: VIRUS Создавай ряд бустеров...

VIRUS: А у меня боты культурные - берут по одному бустеру! И даже иногда вспоминают это

koljin: У меня вопрос можно ли сделать такой скрипт чтобы пример танк стоит на маленькой текстуре(декорация) 5 секунд и она поменяется цветом пример с красного на серый. Если есть такой скрипт то мне очень надо он.

VIRUS: koljin Вполне можно сделать, но для этого нужно две декорации с разными цветами. Я думаю это можно сделать только в документе Lua (тоесть в кампании). Сделать єто можно так: ставиш тригер на тоже место где и декорация и придаеш в on enter функцию например dec(). Делать сам скрипт я бы начал так: (декорация уже стоит на карте с тригером и функцией) ПИШЕМ: function dec() time = time + 5 (это время через которое будет выполнятся скрипт) kill "1" (убрали предыдущую декорацию. P.S. У декорации должно быть имя (например 1) actor("user_sprite", 42, 128, {name="2", texture = "имя тексуры"} ) (создали другую декорацию) end P.S.S. Я не слишком уверен в точности скрипта, но я знаю что Morse поможет

slava98: Я думал можно сменить с помощью pset.

VIRUS: slava98 ну можно и так

Morse: ставим триггер нужного радиуса. в on_enter выставляем какую-нибудь переменную в значение допустим 1 и пихаем в очередь функцию которую хотим выполнить (в данном случае - смена текстуры у декорации). в on_leave выставляем эту самую переменную в ноль. в функции первой строчкой делаем проверку на равенство переменной единице (чтобы функция не срабатывала в том случае если танк за это время смоется). это будет с одной стороны простой скрипт, с другой - довольно глючный. если танк начнет часто въезжать-выезжать начнется масштабный хаос. можно скрипт немного усложнить с помощью скажем функции "рандом". выглядеть это будет примерно так: [pre2] on_enter: num = random(); if (user.trig1 == null) user.trig1={}; user.trig1[num] = true; --или что угодно еще pushcmd(func() actionTrig(num) end, 5) on_leave: user.trig1 = null actionTrig(num) if ((user.trig1 != null) && (user.trig1[num] == true)) { --производим наше действие } user.trig1 = null end [/pre2] вполне возможно что этот код будет ни разу не рабочим - луашный синтаксис я уже забыл, но смысл из него должен быть ясен.

koljin: Я щас попробую если все получится то получится супер миссия.

VIRUS: И как всегда Morse нас спасает!



полная версия страницы