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

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

Киллер: Задавайте вопросы по скриптовому языку ЗОД и ждите скорейшего ответа на них!

Ответов - 285, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All

slava98: Morse класс! VIRUS

Insert: Morse прикольно! я кстати не догадался зафигачить многострочный текст в строку инициализации кстати, массив user.lights={} можно так же сделать локальным local lights={} чтобы не замусоривать пространство имен

slava98: VIRUS сохраняешь картинку и открываешь с помощью архиватора.


Insert: VIRUS сохрани картинку на диске и переименуй jpg в rar

VIRUS: slava98 Insert спасибо Morse кул, моя идея?

vlad0dalv: Morse а как ты сделал так, чтобы картинка содержала всю информацию? [pre]local i=1 user.lights = {} repeat user.lights=object("l"..i) i = i + 1 until not exists("l"..i) function user.disco() for i,o in ipairs(user.lights) do o.active=(math.random()>0.75) and 0 or 1 end pushcmd(function() user.disco() end,1) end[/pre] можешь объяснить, что означает каждое составляющие?

Morse: по строчкам задаем переменную i задаем пустой "массив" (или что тут под ним понимают) входим в цикл с постусловием тут у тебя ошибка. i-тому элементу массива мы присваиваем ссылку на объект с соотв. именем инкремент если объекты с заданными именами кончились, выходим из цикла объявляем функцию начинаем итерацию по элементам массива если рандомное число больше 0.75 свойству active присваиваем 0, иначе 1 конец цикла рекурсивно закидываем функцию в очередь конец функции вызываем функцию в первый раз всем фонарям на карте были вручную даны имена (от l1 и далее по порядку). это конечно неудобно, но другого варианта нет (по крайней мере пока)

FEAR: вопрос по скрипту: я хочу чтобы при уничтожение какого-либо объекта игра становилась на паузу и писалось сообщение, вот я прописываю в on_destroy такую фразу freeze(true); message("Команда хХх выиграла"). Уничтожаю объект и ничего не происходит, что я делаю не так З.Ы. у меня версия 1:48

vlad0dalv: Morse Спс

vlad0dalv: Morse а ты писал названия с [pre2]L0[/pre2] (с нуля)?

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

FEAR: И ещё подскажите пожалуйста. В версии 1.49-1.51 есть объект- декорация. В его свойствах под его текстуру можно подогнать любой файл из папки textures(вроде бы как), а как сделать чтобы в декорацию можно было загнать простую картинку, ну например эту

Morse: картинку надо перегнать в 32-х битный (обязательно) tga, потом написать для этой картинки lua файл с извращенным синтаксисом (пример - в любой крупной кампании или в файле textures.lua), а потом на этот луа-файл кастануть loadtheme, после этого он появится в списке текстур

Инс: А лучше этот луа-файл положить в папку с темами и поставить его как тему в сойствах карты, иначе подцепленная подобным образом текстура на объекте не сохранится после save/load.

vlad0dalv: [pre]hdr{ attr  heightd attr  widthd attr   author attr   desc attr   e-mail attr   link-url attr   on_init attr  function explosion(x, y, times, spd) local times = times or 1 local spd = spd or 0 for i=0, times-1 do pushcmd(function() actor("user_object", x, y, {name="exploder"}); damage(100, "exploder") end, 0+i/100*spd) end end function bombard(x1, y1, x2, y2, times, spd, explo, explospd) times = times or 24 spd = spd or 15 explo = explo or 1 explospd = explospd or 0 local pixx = (x2-x1)/times local pixy = (y2-y1)/times for i=0, times-1 do pushcmd(function() explosion(x1+pixx*i, y1+pixy*i, explo, explospd) end, 0+i/100*spd) end end function dangerzone(x1, y1, x2, y2, time, spd, islinear, linspd) time = time or 500 spd = spd or 500 islinear = islinear or 0 linspd = linspd or math.random(5, 20) if islinear==0 then local i=time/spd for q=0, i-1 do pushcmd(function() rx = math.random(x1*32, x2*32) ry = math.random(y1*32, y2*32) explosion(rx, ry) end, spd*q/100) end end if islinear==1 then local i=time/spd for q=0, i-1 do pushcmd(function() local rx1 = math.random(x1*32, x2*32) local rx2 = math.random(x1*32, x2*32) local ry1 = math.random(y1*32, y2*32) local ry2 = math.random(y1*32, y2*32) bombard(rx1, rx2, ry1, ry2, linspd, spd) end, spd*q/100) end end end  theme desertattr   type deathmatchattr   version 5395}hdr dfn:y wall_concrete   name x y  health health_max on_destroy on_damage  corner  styleobj:" ЂA ЂA HB HB obj:" @B ЂA HB HB obj:"  B ЂA HB HB obj:" C ЂA HB HB obj:" 0C ЂA HB HB obj:" PC ЂA HB HB obj:" ?C ЂA HB HB obj:" ЁC ЂA HB HB obj:" ёC ЂA HB HB obj:" ИC ЂA HB HB obj:" ШC ЂA HB HB obj:" иC ЂA HB HB obj:" шC ЂA HB HB obj:" D ЂA HB HB obj:" D ЂA HB HB obj:" D ЂA HB HB obj:" D ЂA HB HB obj:" $D ЂA HB HB obj:" ,D ЂA HB HB obj:" 4D ЂA HB HB ...[/pre] почему это не получается?

VIRUS: vlad0dalv ты супер скрипмейкер, откуда у тебя столько времени?

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

vlad0dalv: я пишу в скрипте инициализации [pre]function explosion(x, y, times, spd) local times = times or 1 local spd = spd or 0 for i=0, times-1 do pushcmd(function() actor("user_object", x, y, {name="exploder"}); damage(100, "exploder") end, 0+i/100*spd) end end function bombard(x1, y1, x2, y2, times, spd, explo, explospd) times = times or 24 spd = spd or 15 explo = explo or 1 explospd = explospd or 0 local pixx = (x2-x1)/times local pixy = (y2-y1)/times for i=0, times-1 do pushcmd(function() explosion(x1+pixx*i, y1+pixy*i, explo, explospd) end, 0+i/100*spd) end end function dangerzone(x1, y1, x2, y2, time, spd, islinear, linspd) time = time or 500 spd = spd or 500 islinear = islinear or 0 linspd = linspd or math.random(5, 20) if islinear==0 then local i=time/spd for q=0, i-1 do pushcmd(function() rx = math.random(x1*32, x2*32) ry = math.random(y1*32, y2*32) explosion(rx, ry) end, spd*q/100) end end if islinear==1 then local i=time/spd for q=0, i-1 do pushcmd(function() local rx1 = math.random(x1*32, x2*32) local rx2 = math.random(x1*32, x2*32) local ry1 = math.random(y1*32, y2*32) local ry2 = math.random(y1*32, y2*32) bombard(rx1, rx2, ry1, ry2, linspd, spd) end, spd*q/100) end end end[/pre] Как ты с диско и при нахождении на триггер выполняется действие с помощью этих функций: взрывается пол стадии

hmh: "Человек" и "vlad0dalv", сидящие с одного IP: не используйте никаких форматирующих тегов. Ваши сообщения после премодерации приходят в нечитабельное состояние. Что именно не работает? Триггер? Тогда поэкспериментируй с pushcmd. Пол стадии(я так понимаю, пол в значении "пол", а не "половина"?) взрывается по всей площади в один момент? Проверь, выставил ли ты все параметры в функции dangerzone, а time не равно 0.

FEAR: я хочу чтобы при уничтожение какого-либо объекта игра становилась на паузу и писалось сообщение, вот я прописываю в on_destroy такую фразу freeze(true); message("Команда хХх выиграла"). Уничтожаю объект и ничего не происходит, что я делаю не так З.Ы. у меня версия 1:48



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