Отправлено: 15.11.10 15:39. Заголовок: Anti_Killer а почему..
Anti_Killer а почему тогда?
цитата:
data/campaign/War System/scripts/main.lua:157: object of type 'player_local' has no property 'health'
Добавлено:
цитата:
можно записать как
цитата:
runtime error: data/campaign/War System/scripts/functions.lua:73 (третья линия): unexpected symbol near '='
Добавлено: Исправил:
цитата:
function user.WaterFire() local obj1=object("obj_water"); obj2=object("dec_water") if obj1.health == 2000 then obj2.texture="user/water1" elseif obj1.health == 1500 then obj2.texture="user/water2" elseif obj1.health == 1000 then obj2.texture="user/water3" elseif obj1.health == 500 then obj2.texture="user/water4" elseif obj1.health == 100 then obj2.texture="user/waterfinal" elseif obj1.health == 1 then kill("obj_water") --kill("dec_water") -- и вот это не правильно все равно. Если хочешь чтоб при смерти одного объекта умер и второй, добавь событие в on_die или в on_destroy объекта при убийстве которого надо убивать второй end end
Отправлено: 16.11.10 02:43. Заголовок: а почему тогда? мне..
цитата:
а почему тогда?
мне то по чем знать что у тебя что ? Если у тебя obj_water это service player_local, тогда тебе надо сначала получить vehname, задать его как object, потом уже получать от него health
Отправлено: 16.11.10 15:52. Заголовок: Я хочу чтобы при дам..
цитата:
Я хочу чтобы при дамаге этого особого объекта менялись текстуры у декорации.
Ну вот самый минимум для этого, начинай с малого проверяй на каком моменте тупит
цитата:
local actor_who_take_damage=actor('tank',100,100,{on_damage='user.damage()',skin='yellow'}) --тот кого бъем local actor_who_change_skin=actor('tank',80,100,{}) --тот кто меняет скин\текстуру при повреждении того кого надо бить function user.damage() actor_who_change_skin.skin='red' end
Будет работать? На 5 секунде загружается карта 1, на 10 - 2, на 15 - 3, на 20 - пишится текст и потом всё сначала, на 25 опять грузится 1 карта. Мне это нужно для того, чтобы сделать вращающиеся фонари и триггеры. Последние должны перемещаться по свету фонарей. Типа тревоги.
Отправлено: 24.12.10 14:21. Заголовок: В Бейсике можно зада..
В Бейсике можно задать с помощью цикла for переменную, имеющую несколько значении, чаще всего от одного числа до другого. В ТЗОДЕ скорее всего тоже самое. Только используется по-другому. Ещё в Бейсике можно отключить цикл DO.. LOOP, функцией EXIT DO, а в ТЗОДЕ я его могу отключить с помощью if.. then.
Отправлено: 24.12.10 15:59. Заголовок: такая функция вылети..
такая функция вылетит с ошибкой переполнения стека. последний вызов user.1() надо тоже пихнуть в очередь, тогда будет работать. Я называю этот прием "рекурсивным заполнением очереди", и он у меня встречается во всем чем только можно. Для примера можешь глянуть мою кампанию "такой большой и такой адронный" или карту dm5_disco_edition (где-то тут на форуме все должно быть)
Отправлено: 11.06.11 12:56. Заголовок: if exists ("e1..
цитата:
if exists ("e1") == true then pset("ourwarrior1", "active", 0) elseif exists ("e2") == true then pset("ourwarrior2", "active", 0) elseif exists ("e4") == true then pset("ourwarrior4", "active", 0) end end
И не выходит! Короче, скрипт должен проверять существование танка и отключать его, если он существует (я использую pset, так как по-другому не получается) И ещё.
цитата:
actor("trigger", user.get32(36), user.get32(18), { name="movetrig6",on_enter="if who.name==e4 then user.M1ActionBot4_2() else end"})
Тоже не работает. Триггер спавниться, всё хорошо, только функция не работает. Выходит только
Отправлено: 11.06.11 18:30. Заголовок: if who.name==e4 заме..
if who.name==e4 заменить на if who.name=="e4" Это для начала. Так как кавычки будут внутри строки - заэскейпить их, т.е. if who.name==\"e4\" По поводу первого - не знаю, инфы мало.
А вообще, гляди в консоль - там оно ругаться должно что именно не работает.
Отправлено: 12.06.11 11:44. Заголовок: Спасибо! А то я не з..
Спасибо! А то я не знаю, как использовать функции. "" мог бы догадаться. А про эскейп не знал... Ах да! С кавычками не работал, вот и удалил... Ещё вопрос: а можно было перед этим поставить e4="e4"?
цитата:
А вообще, гляди в консоль - там оно ругаться должно что именно не работает.
Я забыл сказать, что ничего не пишет. Писало бы - сам исправил. Удалил бы кампанию.
function user.DamageOurvarrior() if nameofatacker ~= "ourplayer1" then damagesourvarriors = damagesourvarriors + 1 if damagesourvarriors == 1 then message("Поселенец: Эй! Не стреляй по своим!!") elseif damagesourvarriors == 2 then message("Поселенец: Ты что не понял?! Не стреляй по поселенцем!!!") elseif damagesourvarriors == 3 then message("Поселенец: Последнее предупреждение! Хватит стрелять по своим!!!") elseif damagesourvarriors > 3 then message("Командир поселенцев: Он предатель, бей его!") pset("ourplayer", "team", 2) pset("ourwarrior3", "active", 1) user.EnemyAttack() end end end
Отправлено: 12.06.11 13:48. Заголовок: slava98 пишет: Ещё ..
slava98 пишет:
цитата:
Ещё вопрос: а можно было перед этим поставить e4="e4"?
"Перед этим" где? Если это будет локальная переменная, то она пропадет вместе с контекстом. С глобальным доступом у нас там было поле user если я правильно помню. Так что можешь действительно где-нибудь "перед этим" написать user.e4 = "e4", или там user.myVeryImportantString = "e4", без разницы, а потом в скрипт подставлять это поле. Кстати в питоне можно сделать вложенные кавычки используя двойные и одинарные. text = "Here comes 'quoted text'" Возможно в луа так же, не пробовал.
Отправлено: 19.06.11 06:43. Заголовок: Вопросик: 1. Как с п..
Вопросик: 1. Как с помощью скриптов переключить день в ночь, затем ночь в день и т.д. автоматически причём чтоб это было? 2. Как с помощью скриптов включить жизни?
(можно записать в строку) Обязательно записать какую либо функцию в on_die!
2) Теперь нужно создать саму функцию.
function user.OnDiePlayer() user.life = user.life - 1 if user.life > 0 then message("У вас осталось " .. user.life .. " жизней") else user.Defeat() end end
Создай какую либо переменную, например, user.life = x (х - любое число - количество жизней) При выполнении функции от переменной отнимается единица (1 жизнь) Далее проходится проверка количества жизней. Если больше нуля, то пишем количество оставшихся жизней. Если же равно нулю или каким-то непонятным образом меньше, то выполняем любую команду (в примере - поражение игрока) И наконец завершение цикла и самой функции.
П.С. Смотри кампании, разбирай сам примеры. Это может быть сложно. Но спрашивай) П.С.С. Примеры из кампании Battle City.
Все даты в формате GMT
3 час. Хитов сегодня: 13
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет