У меня есть предложение для тех кто хорошо знает Луа - дополнять эту статью по нему, в которой будут описаны команды и синтаксис Lua. Вот шаблон: 1) Код команды 2) Описание команды (зачем нужна, что делает и т.д.) 3) Пример использования (если можно его привести) И так для каждой команды. Я понимаю, это долгая и нудная работа, но я могу помочь с оформлением + несколько команд я знаю. За эту работу вам будут благодарны многие в том числе и я. Начну нашу статью. 1) GibThis() Данная команда является приказывает указанному объекту уничтожиться на гибы (ну где то так) Пример использования:
Код:
Code
for actor in MovableMan.Actors do actor:GibThis() end
Результат: Все акторы в игре разлетятся на гибы.
2) IsPlayerControlled() Используется в условиях для проверки подконтрольности актора игроку. Пример использования:
Код:
Code
for actor in MovableMan.Actors do if self:IsPlayerControlled() then self:GibThis() ; end end
Результат: Актор которым управляет игрок разлетается на гибы.
3) UInputMan:KeyPressed(<число>) Данная команда при нажатии на указанную клавишу возвращает true, или false если была нажата другая клавиша. Число в команде указывает на какая клавиша должна быть нажата. Список клавиш и их чисел. Пример использования:
Код:
Code
for actor in MovableMan.Actors do if UInputMan:KeyPressed(11) and (self:IsPlayerControlled()) then self:GibThis() ; end end
Результат: Актор которым управляет игрок при нажатии на клавишу "К" разлетается на гибы.
4) UInputMan:KeyReleased(<число>) Данная команда при отпускании указанной клавиши возвращает true, или false если была отпущена другая клавиша. Число в команде указывает на какая клавиша должна быть отпущена. Список клавиш и их чисел. Пример использования:
Код:
Code
for actor in MovableMan.Actors do if UInputMan:KeyReleased(11) and (self:IsPlayerControlled()) then self:GibThis() ; end end
Результат: Актор которым управляет игрок при отпускании клавиши "К" разлетается на гибы.
5) UInputMan:KeyHeld(<число>) Данная команда при удерживании указанной клавиши возвращает true, или false если удерживается другая клавиша. Число в команде указывает на какая клавиша должна удерживаться. Список клавиш и их чисел. Пример использования:
Код:
Code
for actor in MovableMan.Actors do if UInputMan:KeyHeld(11) and (self:IsPlayerControlled()) then self:GibThis() ; end end
Результат: Актор которым управляет игрок при удерживании клавиши "К" разлетается на гибы.
6) ActivityMan:GetActivity():SetTeamFunds(<кол-во золота>,<номер команды>) Данная команда позволяет устанавливать кол-во золота в команде. Пример использования:
Код:
Code
ActivityMan:GetActivity():SetTeamFunds(50000, 0)
Результат: Кол-во золота у первой команды становится равным 50000.
7) IsEmitting( ) Данная команда позволяет проверить включен шлейф (Emission) или нет Пример использования:
Код:
Code
if self:IsEmitting() == false then self:EnableEmission(true); end
Результат: Если шлейф был выключен, то он будет включен.
8) EnableEmission(<Истина/Ложь>) Данная команда позволяет включить шлейф. Пример использования:
Код:
Code
if self:IsEmitting() == false then self:EnableEmission(true); end
Результат: Если шлейф был выключен, то он будет включен.
9) <юнит/оружие/эффект>.Pos = Vector(X, Y) Установка положения в пространстве. Пример использования:
Код:
Code
if self:IsPlayerControlled() then self.Pos = Vector(self.Pos.X, 0); end
Результат: У подконтрольного игроком юнита сохранится горизонтальная составляющая координат, но изменится вертикальная - юнит окажется вверху карты. П.С. Pos.X - коорд. по оси X; Pos.Y - коорд. по оси Y; Ноль находится в верхнем левом углу карты, ось X направлена вправо, ось Y - вниз.
10) <юнит>.Team = Activity.Team_2 Установка команды юнита Пример использования:
Код:
Code
for actor in MovableMan.Actors do if not self:IsPlayerControlled() then self.Team = Activity.Team_2 end end
Результат: Все юниты кроме того, которого контролирует игрок, переходят на сторону зеленых. П.С. Activity.Team_1 - команда красных
11) math.random(<число>); Генерация случайного числа в пределе от 1 до <число> (требует уточнения) 12) self:GetTeamDeathCount(<команда>) Получение кол-ва смертей юнитов определенной команды Пример использования:
Код:
Code
print(self:GetTeamDeathCount(Activity.Team_1))
Результат: Выведет в консоль число смертей юнитов красной команды (включая двери и дропподы)
13) <юнит/оружие/эффект>.Vel = Vector(X, Y) Установка скорости по осям. Пример использования:
Код:
Code
for actor in MovableMan.Actors do if self:IsPlayerControlled() then self.Vel = Vector(0, -30) end end
Результат: Подкинет вверх юнита, подконтрольного игроку.
14) <юнит>.AIMode = <юнит>.AIMODE_<режим ИИ> Установка режима ИИ для актора Пример использования:
Код:
Code
for actor in MovableMan.Actors do if not self:IsPlayerControlled() then self.AIMode = self.AIMODE_SENTRY; end end
Результат: Все юниты, кроме подконтрольного игроку остановятся и будут держать позицию П.С. AIMODE_BRAINHUNT - юниты отправятся убивать вражеский мозг AIMODE_PATROL - юниты будут хаотично патрулировать местность связка: self.AIMode = self.AIMODE_GOTO; self:ClearAIWaypoints(); self:AddAISceneWaypoint(Vector(X, Y)); - отправляет юнита в конкретную точку
Статья будет постоянно дополняться. Просьба всех, кто знает луа принимать в этом участие. Поправки, предложения и замечания приветствуются. Я мертв :)
Сообщение отредактировал Программист - Вторник, 20.04.2010, 17:10
Здесь можно собрать кучу уроков по луа в СС, что я давно хотел увидеть.
Пока совет один - дополнять и осуждать, а когда придет время, разделить все на 2 темы - сами уроки и обсуждения, а потом организовать целый форум. Тоже самое предлагаю и с ини. Вообщем автору зачет за вклад в развитие луа в нашем сайте
И еще, Программист, поможешь во всем что знаешь в луа? Я хочу знать хотя бы базовые основы(А ты как раз их знаешь)
RICARDO, Я около пяти минут назад нашел хороший тутор на дате, хочу заняться его переводом и тут выложить. А насчет помощи: я знаю как многие скрипты подстраивать под себя, и более менее основы Lua. В их изучении мне помогло среднее знание синтаксиса Pascal'я. Как я думаю, еще немного изучив Lua, я смогуу сделать свой вариант смены режимов оружия, гораздо легкий в интегрировании в ini код оружия. Можешь что-нибудь простое спросить, если я знаю то скажу. Я мертв :)
Как я думаю, еще немного изучив Lua, я смогуу сделать свой вариант смены режимов оружия, гораздо легкий в интегрировании в ini код оружия. Можешь что-нибудь простое спросить, если я знаю то скажу.
Сомневаюсь, что ты сделаешь то, чего не смог СС48. Он все ж гений луа и ини моддинга, инженер новых возможностей и нестандартного геймплея...
Сначала скажи-ка мне принцип, по которому ты хочешь это сделать, потому что тут принцип важнее чем техническая реализация.
Насчет статьи:
Она поможет разобраться в луа только опытным программистам, для нубов это останется темный лес. Для увеличения списка команд и описаний знание луа не нужно вообще, достаточно открыть кортексвикию и перевести....
Если вы читаете этот текст, значит вы посетили кладбище моей юности. Прощай, cortexcommandru.3dn.ru, ты для меня много значил когда-то.
Mad_Alex, на том же принципе, но только для переключения режимов оружия будет использоваться не меню, а кнопка на клавиатуре. Но я этим намного позже займусь, когда буду хорошо знать Lua.
Quote (Mad_Alex)
Насчет статьи: Она поможет разобраться в луа только опытным программистам, для нубов это останется темный лес.
Я сегодня буду переводить одну статью по Lua. Там как раз все основы разбираются. Я мертв :)
Как бы я для этого и создал статью в основном, для того чтобы не только я, но и люди, которые знают луа тоже её дополняли, либо напрямую (модераторы), либо через комменты Я мертв :)
Эхх... Ладно, предложение есть следующее: при увеличении списка команд до, скажем, тридцати - устраивать на сайте аналог кортекс вики с разделением команд на группы, быстрым поиском блэкджеком и шлюхами Думаю, даже обосновывать мнение не нужно... Как можно это сделать на нашем сайте? Арморед, Солдиер?
Dantalion13, Можно все под спойлер загнать и упорядочить либо создать аналог вики: 1) можно создать специальную ветку форума 2) можно использовать многоспойлерные спйлеры 3) можно сделать свою вики, благо движок бесплатный Я мертв :)
Ну... Еще можно создать страницу сайта и установить другой шаблон к нему, нарисовать шапку "кортекс вики русская версия" или как-то так, убрать с той страницы все лишнее (только ссылки на форум и на главную страницу сайта на видном месте оставить). На той странице (с другим шаблоном которая) соорудить невидимую таблицу, в ней - расположить ссылки на группы команд, сопроводив их какими-либо иконками. Ссылки на группы команд чтобы тоже вели на другие страницы с измененным шаблоном... там дать ссылки на подгруппы команд, как-то так. Или все ссылки на команды на одной странице сделать, и оформить по типу: 1. <первая группа> __1) <первая подгруппа> ____ - <первая ссылка> ____ - <вторая ссылка> ____ - <третья ссылка> __1) <вторая подгруппа> ____ - <первая ссылка> и так далее. Так более понтово будет )))
Мм... возможно, правила пользования бесплатным хостингом ucoz не дадут сделать страницу без всяких "наворотов". Ну, парочку модулей оставить тогда...
Dantalion13, молодец, добавил новых команд. Именно по такому принципу и строится статья. Для экономия места, спрятал все примеры под спойлеры. Я мертв :)
не мешал бы навигатор всё уже давно изобретено. в конце некоторых книг в алфавитном порядке ключевые слова или темы, а напротив них через запятую страницы где эти ключевые слова или темы упоминаются
чего бы тоже так не сделать?
Оружие - режимы link1 - создание link1, link2, link3 - bla-bla-bla
Навигатор пока что очень маленький получится =) Такой, что и без него обойтись можно... Или ты предлагал по командам навигатор создать? =) Считаю, что в обоих случаях навигатор создать следует... но не сейчас, наверное...
Навигатор вам нужен? Вот вам тогда Cortex Command Wki Rus. Но сначала это прочитайте. В ней пока почти ничего нет, только основа для создания статей. Так что давайте все вместе дружно переводить Wiki DataRealms и дополнять нашу новую вики! Также я добавляю на новую вики английские статьи и помечаю их как требующие перевода.Их можно посмотреть тут Я мертв :)
self:GetTeamFunds(<номер команды>); используется для получения данных о деньгах команды
Ребята, я пол дня тружусь над получением некоторой команды - но создать ее толком не могу, множество вариантов не воспринимает - выводит Eror. Если кто может прошу, поковыряйтесь. Подобная команда есть в уровнях где целью является выковырять некоторую сумму Oz из земли. Адрес к lua файлу: Base.rte/Activities/SiteScan.lua
Blump согласен логично но! этот способ работает только с обектами на сцене (теми которые мы можем сломать,увидеть(невооруженым глазом)) тоесть этот способ негоден для работы с инвентарем так как он существует только ввиде текста ктомуже я уже нашел как решить проблему
для получения инвентаря подконтрольного актора нужно ввести ActivityMan:GetActivity():GetControlledActor(0).Inventory;
тогда вы получите список обэктов инвентаря например магазин моего ак "AK-47 Magazine,heldDevice"
zasecrecheno, твой код - твои правила). Я подумал, что ты будешь скрипт к самой пушке будешь присоединять (или, я правильно понял?). Я не знаток хороших команд. Я искал всегда простые пути, обходные Моддинг - это сезонное. По крайней мере, у меня...
Сообщение отредактировал Blump - Воскресенье, 02.03.2014, 18:57
извените немного завис (мой вопрос и мой ответ не сходятся) щас перезагружусь и все будет ок похоже удаление с инвентаря (ToDelete = true) работает ступил (сначала ответил а потом попробовал) сейчасже исправлюсь
function Create(self) self.PresetName = self.PresetName..' '..math.random(10000);--код девайса для поиска end
function Update(self)
if self.Magazine ~= nil then for actor in MovableMan.Actors do --поиск актора который держит ету пуху if self.Magazine.RoundCount == 31 then --31 патрон является флагом (да я так иногда делаю) weapon = ToAHuman(actor).EquippedItem; --берем пуху которую держит актор if weapon.PresetName == self.PresetName then --проверка имя пухи которую держит актор и етого девайса (тут и нужен код пухи (без кода пухи игрок может воспользоваться магазином другого актора)) mag = actor:HasObject("AK-47 Magazine"); --проверка есть ли вообще магазины к етой пухе if mag == false then --магазины отсутствуют значит нет смисла искать по инвентарю self.Magazine.RoundCount = 0 end if mag == true then --магазины присутствуют заряжаем for device in actor.Inventory do --поиск по инвентарю if device.PresetName == "AK-47 Magazine" then --если ето магазин к пухе device.PresetName = ''; --обнуляем имя device.ToDelete = true; --удаляем пуху(она всеравно останется но исчезнет если актор ее возьмет) потому и обнуляем имя self.Magazine.RoundCount = 30; --заряжаем магазин break; end end end end end end end end