описание:после смерти актора запускается таймер на 20-30 сек.,после чего на месте смерти первого появляется такой же новый.(т.к. "возрождение",как я понял,невозможно даже в Lua)
В ини актора в самом начале добавь: (лучше скопируй это с ини Torden'а моего мода)
AddEffect = MOPixel PresetName = TW Particle S Mass = 0.008 RestThreshold = -500 //LifeTime = 100 Sharpness = 0 HitsMOs = 0 GetsHitByMOs = 0 AirResistance = 0.1 GlobalAccScalar = 0.0 ScriptPath = <путь до скрипта> Color = Color R = 255 G = 0 B = 255 Atom = Atom Material = Material CopyOf = Air TrailColor = Color R = 255 G = 0 B = 255 TrailLength = 5
Добавлено (07.01.2011, 15:26) --------------------------------------------- Затем, в той части, которая описывает самого актора, добавь: AddEmitter = AEmitter CopyOf = TW Emitter S
Теперь рядом с актором будет спавниться частица, к которой прикреплен скрипт.
Добавлено (07.01.2011, 15:43) --------------------------------------------- А вот скрипт к той частице. Теперь пробуй и пиши, какие ошибки выдавало в консоли.
Code
function Create(self)
if not self.ResAct then self.ResActT = {} self.ResActT.Timer = Timer(); end self.ResAct = nil; -- сам актор self.ResActN = "<имя актора>";
local curdist = 30; -- проверяем, есть ли поблизости актор с нужным именем for i = 1,MovableMan:GetMOIDCount()-1 do target = MovableMan:GetMOFromID(i); if target.PresetName == self.ResActN then local avgx = target.Pos.X - self.Pos.X; local avgy = target.Pos.Y - self.Pos.Y; local dist = math.sqrt(avgx ^ 2 + avgy ^ 2); if dist < curdist then self.ResAct = target; end end end
if self.ResAct == nil then -- если актор не найден, то частица убирается self.ToDelete = true; self.LifeTime = 0; end
end
function Update(self)
self.ToDelete = false; -- это чтобы частица никуда не делась self.ToSettle = false;
if self.ResAct then -- если наш чух когда-то существовал хотя бы if MovableMan:IsActor(self.ResAct) -- если он сейчас жив if string.find(self.ResAct.PresetName ,self.ResActN) ~= nil then -- и если его имя равно его имени, лол self.Vel = Vector(0,0); -- устанавливаем скорость и позицию частицы так, чтоб она была рядом с актором self.Pos = self.ResAct.Pos; self.RAPos = self.ResAct.Pos; -- обновляем позицию актора, чтоб потом в ее же заспавнить нового чухана else self.ToDelete = true; -- иначе удаляем self.LifeTime = 0; end else if not self.RTCHlolper then -- обнуляем таймер, который отсчет вести будет self.ResActT.Timer:Reset(); self.RTCHlolper = 1; end if self.ResActT.Timer:IsPastSimMS(10000) then -- если прошло 10 секунд local actor = CreateAHuman("имя","папка с модом"); -- спавним нового актора actor.Pos = self.RAPos; actor.Team = 0; -- (вроде бы) MovableMan:AddActor(actor); end end end
end
Сообщение отредактировал Dantalion13 - Пятница, 07.01.2011, 15:44
Dantalion13, зачем всё так сложно то? Гораздо проще написать два маленьких скрипта. Первый прикрепляется к актору, второй к некоторому эмиттеру. Скрипт 1 создает при смерти актора некий эмиттер. Второй скрипт включает таймер, по истечении которого эмиттер уничтожается, образуя актора. А можно даже и без луа. Мой YouTube канал.
Интересно, только я помню мод "Гринков - самый бесстрашный из клонов"? С вопросами, в том числе касающимися моддинга, пишите мне в личные сообщения. Они должны дойти до меня, даже если я не часто захожу на сам сайт. А вообще можете связаться со мной через VK: https://vk.com/dizzybat Там я, возможно, отвечу чуть быстрее.
Спаси свою душу, используй ВОЛШЕБНЫЙ ПОИСК! С вопросами, в том числе касающимися моддинга, пишите мне в личные сообщения. Они должны дойти до меня, даже если я не часто захожу на сам сайт. А вообще можете связаться со мной через VK: https://vk.com/dizzybat Там я, возможно, отвечу чуть быстрее.
Добавлено (08.01.2011, 01:48) --------------------------------------------- Инквизитор, будь человеком: дай скрин ошибки или опиши словами, чего там не так.
была бы ошибка,я её решил бы(или сюда выложил).всё нормально работает,без ошибок.только он не воскресает.
Добавлено (08.01.2011, 13:37) --------------------------------------------- скрипт гринкова работает,только слишком быстро,а как замедлить хз.а вот тот,что Thunder-ский вообще не пашет.
Как насчет сделать гранату? И единственным ее осколком, гибом, сделать нового человечка. И таймер гранате задать. Если решишь пойти по этому пути, подгоню недостающий код спавна и активации гранаты при смерти чушка.
Сообщение отредактировал Dantalion13 - Суббота, 08.01.2011, 21:38
Ага, и ты забыл сказать, что солдат будет неподконтролен игроку. С вопросами, в том числе касающимися моддинга, пишите мне в личные сообщения. Они должны дойти до меня, даже если я не часто захожу на сам сайт. А вообще можете связаться со мной через VK: https://vk.com/dizzybat Там я, возможно, отвечу чуть быстрее.
Во-первых, не гранату, а частицу MOPixel, как делают все цивилизованные мододелы. Во-вторых, как ты будешь переносить информацию о команде актора? Тащемта, я могу сказать тебе решение, но мне интересно, что ты скажешь. С вопросами, в том числе касающимися моддинга, пишите мне в личные сообщения. Они должны дойти до меня, даже если я не часто захожу на сам сайт. А вообще можете связаться со мной через VK: https://vk.com/dizzybat Там я, возможно, отвечу чуть быстрее.
Авотхрен, расово правильный подход это острота, это модно и круто, а имя это сакс, так-то.
Но на самом деле особо большой разницы нет. --Хватит уже использовать мат на форуме. ximximik
С вопросами, в том числе касающимися моддинга, пишите мне в личные сообщения. Они должны дойти до меня, даже если я не часто захожу на сам сайт. А вообще можете связаться со мной через VK: https://vk.com/dizzybat Там я, возможно, отвечу чуть быстрее.
Любой более-менее сложный луа-мод. Фишка в том, что остроту любого объекта можно прямо во время игры через луа менять как хочешь. И она, разумеется, остается локально для этого конкретного объекта. Причем параметр остроты есть даже у акторов, хоть по идее он и не нужен, зато знающим мододелам оставляет целую числовую переменную для хранения каких угодно данных, за что Дане спасибо. С вопросами, в том числе касающимися моддинга, пишите мне в личные сообщения. Они должны дойти до меня, даже если я не часто захожу на сам сайт. А вообще можете связаться со мной через VK: https://vk.com/dizzybat Там я, возможно, отвечу чуть быстрее.
Для каждого объекта ведь можно назначать некоторые свои переменные? А потом их использовать. В коде почти всегда встречается назначение переменных такого типа: self.perscons На них можно зарезервировать что угодно. А потом использовать хоть где. Можно ведь создать гранату а после этого назначить её значение переменной granade.teamact равной self.team А потом при разрушении гранаты через функцию Destroy(self) создать актора и назначить ему команду, равную значению переменной гранаты teamact . И зачем мучится с гранатой? Я же ранее привел более простой пример.
Ты же знаешь, в СС все всегда сложнее чем обычно. А иначе бы мы, мододелы, не любили бы его так сильно.
С вопросами, в том числе касающимися моддинга, пишите мне в личные сообщения. Они должны дойти до меня, даже если я не часто захожу на сам сайт. А вообще можете связаться со мной через VK: https://vk.com/dizzybat Там я, возможно, отвечу чуть быстрее.