On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 187
Рейтинг: 2
ссылка на сообщение  Отправлено: 07.06.08 07:27. Заголовок: Вопросы по скриптам


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

Смерть - это не повод уходить из жизни... Спасибо: 0 
Профиль Цитата Ответить
Ответов - 285 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]


moderator




Пост N: 3154
Рейтинг: 10
ссылка на сообщение  Отправлено: 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


Добавлено:
И всё-равно это не работает



К счастью подковы нашёл у корыта,
Не стоит так радоваться - кто-то откинул копыта.

NNNNNNN______N_______N____N_____N__N_____N
___N_________N_N______N____N_____N_N______
___N________NNNN______NNNNN_____NN_______
___N_______N____N_____N____N_____N_N______
___N______N______N____N____N_____N__N_____N
__________________________Зона смерти


<\/u><\/a>
<\/u><\/a>
<\/u><\/a>
<\/u><\/a>


Спасибо: 0 
Профиль Цитата Ответить
гранатомётчик со стажем




Пост N: 408
Рейтинг: 9
ссылка на сообщение  Отправлено: 16.11.10 02:43. Заголовок: а почему тогда? мне..



 цитата:
а почему тогда?

мне то по чем знать что у тебя что ? Если у тебя obj_water это service player_local, тогда тебе надо сначала получить vehname, задать его как object, потом уже получать от него health

...я здесь был... Спасибо: 0 
Профиль Цитата Ответить
постоянный участник




Пост N: 2045
Рейтинг: 4
ссылка на сообщение  Отправлено: 16.11.10 08:30. Заголовок: Я хочу чтобы при дам..


Я хочу чтобы при дамаге этого особого объекта менялись текстуры у декорации.


<\/u><\/a>
Be quiet, be smart, be ready!
I go...
...and you will be deid!
Спасибо: 0 
Профиль Цитата Ответить
гранатомётчик со стажем




Пост N: 411
Рейтинг: 9
ссылка на сообщение  Отправлено: 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




...я здесь был... Спасибо: 0 
Профиль Цитата Ответить
moderator




Пост N: 3155
Рейтинг: 10
ссылка на сообщение  Отправлено: 16.11.10 16:32. Заголовок: Если у тебя obj_wate..



 цитата:
Если у тебя obj_water это service player_local, тогда тебе надо сначала получить vehname, задать его как object, потом уже получать от него health


Вообще то это разные объекты. Плэер у меня ourplayer.
PS. Работает, спасибо.



К счастью подковы нашёл у корыта,
Не стоит так радоваться - кто-то откинул копыта.

NNNNNNN______N_______N____N_____N__N_____N
___N_________N_N______N____N_____N_N______
___N________NNNN______NNNNN_____NN_______
___N_______N____N_____N____N_____N_N______
___N______N______N____N____N_____N__N_____N
__________________________Зона смерти


<\/u><\/a>
<\/u><\/a>
<\/u><\/a>
<\/u><\/a>


Спасибо: 0 
Профиль Цитата Ответить
moderator




Пост N: 3272
Рейтинг: 11
ссылка на сообщение  Отправлено: 24.12.10 10:27. Заголовок: У меня вопрос. В Бей..


У меня вопрос. В Бейсике есть бесконечный цикл DO.. LOOP. Как в ТЗОДе создать бесконечный цикл?

 цитата:
function user.1()
pushcmd(function() loadmap("maps/dm1.map") end, 5)
pushcmd(function() loadmap("maps/dm2.map") end, 10)
pushcmd(function() loadmap("maps/dm3.map") end, 15)
pushcmd(function() message("TZOD Forever!!!") end, 20)
user.1()
end


Будет работать? На 5 секунде загружается карта 1, на 10 - 2, на 15 - 3, на 20 - пишится текст и потом всё сначала, на 25 опять грузится 1 карта.
Мне это нужно для того, чтобы сделать вращающиеся фонари и триггеры. Последние должны перемещаться по свету фонарей. Типа тревоги.



К счастью подковы нашёл у корыта,
Не стоит так радоваться - кто-то откинул копыта.

NNNNNNN______N_______N____N_____N__N_____N
___N_________N_N______N____N_____N_N______
___N________NNNN______NNNNN_____NN_______
___N_______N____N_____N____N_____N_N______
___N______N______N____N____N_____N__N_____N
__________________________Зона смерти


<\/u><\/a>
<\/u><\/a>
<\/u><\/a>
<\/u><\/a>


Спасибо: 0 
Профиль Цитата Ответить
постоянный участник




Пост N: 2088
Рейтинг: 4
ссылка на сообщение  Отправлено: 24.12.10 14:17. Заголовок: Это похоже на рекурс..


Это похоже на рекурсию функций из С++...

Эта функция никогда не завершится! (если она еще будет работать)

Вот цикл for в ТЗоДе есть, синтаксис у него какой? Как в С++?



<\/u><\/a>
<\/u><\/a>
Be quiet, be smart, be ready!
I go...
...and you will be deid!
Спасибо: 0 
Профиль Цитата Ответить
moderator




Пост N: 3273
Рейтинг: 11
ссылка на сообщение  Отправлено: 24.12.10 14:21. Заголовок: В Бейсике можно зада..


В Бейсике можно задать с помощью цикла for переменную, имеющую несколько значении, чаще всего от одного числа до другого. В ТЗОДЕ скорее всего тоже самое. Только используется по-другому. Ещё в Бейсике можно отключить цикл DO.. LOOP, функцией EXIT DO, а в ТЗОДЕ я его могу отключить с помощью if.. then.



К счастью подковы нашёл у корыта,
Не стоит так радоваться - кто-то откинул копыта.

NNNNNNN______N_______N____N_____N__N_____N
___N_________N_N______N____N_____N_N______
___N________NNNN______NNNNN_____NN_______
___N_______N____N_____N____N_____N_N______
___N______N______N____N____N_____N__N_____N
__________________________Зона смерти


<\/u><\/a>
<\/u><\/a>
<\/u><\/a>
<\/u><\/a>


Спасибо: 0 
Профиль Цитата Ответить
постоянный участник




Пост N: 274
Рейтинг: 15
ссылка на сообщение  Отправлено: 24.12.10 15:59. Заголовок: такая функция вылети..


такая функция вылетит с ошибкой переполнения стека. последний вызов user.1() надо тоже пихнуть в очередь, тогда будет работать. Я называю этот прием "рекурсивным заполнением очереди", и он у меня встречается во всем чем только можно.
Для примера можешь глянуть мою кампанию "такой большой и такой адронный" или карту dm5_disco_edition (где-то тут на форуме все должно быть)

Спасибо: 0 
Профиль Цитата Ответить
moderator




Пост N: 3275
Рейтинг: 11
ссылка на сообщение  Отправлено: 24.12.10 17:02. Заголовок: СПС, Morse. Всё твоё..


СПС, Morse. Всё твоё у меня в компе пылится. Посмотрю-полюбопытствую.



К счастью подковы нашёл у корыта,
Не стоит так радоваться - кто-то откинул копыта.

NNNNNNN______N_______N____N_____N__N_____N
___N_________N_N______N____N_____N_N______
___N________NNNN______NNNNN_____NN_______
___N_______N____N_____N____N_____N_N______
___N______N______N____N____N_____N__N_____N
__________________________Зона смерти


<\/u><\/a>
<\/u><\/a>
<\/u><\/a>
<\/u><\/a>


Спасибо: 0 
Профиль Цитата Ответить
постоянный участник




Пост N: 2089
Рейтинг: 4
ссылка на сообщение  Отправлено: 24.12.10 22:49. Заголовок: Morse пишет: dm5_di..


Morse пишет:

 цитата:
dm5_disco_edition



Во во, там цикл for



<\/u><\/a>
<\/u><\/a>
Be quiet, be smart, be ready!
I go...
...and you will be deid!
Спасибо: 0 
Профиль Цитата Ответить
moderator




Пост N: 3457
Рейтинг: 11
ссылка на сообщение  Отправлено: 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"})


Тоже не работает. Триггер спавниться, всё хорошо, только функция не работает. Выходит только

 цитата:
actor("trigger", user.get32(36), user.get32(18), { name="movetrig6",on_enter="if who.name==e4 then user.M1ActionBot4_2() else user.M1ActionBot4_2() end"})


Но это тоже самое, что и

 цитата:
actor("trigger", user.get32(36), user.get32(18), { name="movetrig6",on_enter="user.M1ActionBot4_2()"})





К счастью подковы нашёл у корыта,
Не стоит так радоваться - кто-то откинул копыта.

NNNNNNN______N_______N____N_____N__N_____N
___N_________N_N______N____N_____N_N______
___N________NNNN______NNNNN_____NN_______
___N_______N____N_____N____N_____N_N______
___N______N______N____N____N_____N__N_____N
__________________________Зона смерти








Спасибо: 0 
Профиль Цитата Ответить
постоянный участник




Пост N: 278
Рейтинг: 15
ссылка на сообщение  Отправлено: 11.06.11 18:30. Заголовок: if who.name==e4 заме..


if who.name==e4
заменить на
if who.name=="e4"
Это для начала. Так как кавычки будут внутри строки - заэскейпить их, т.е.
if who.name==\"e4\"
По поводу первого - не знаю, инфы мало.

А вообще, гляди в консоль - там оно ругаться должно что именно не работает.

Спасибо: 0 
Профиль Цитата Ответить
moderator




Пост N: 3458
Рейтинг: 11
ссылка на сообщение  Отправлено: 12.06.11 11:44. Заголовок: Спасибо! А то я не з..


Спасибо! А то я не знаю, как использовать функции. "" мог бы догадаться. А про эскейп не знал...
Ах да! С кавычками не работал, вот и удалил...
Ещё вопрос: а можно было перед этим поставить e4="e4"?

 цитата:
А вообще, гляди в консоль - там оно ругаться должно что именно не работает.


Я забыл сказать, что ничего не пишет. Писало бы - сам исправил. Удалил бы кампанию.




К счастью подковы нашёл у корыта,
Не стоит так радоваться - кто-то откинул копыта.

NNNNNNN______N_______N____N_____N__N_____N
___N_________N_N______N____N_____N_N______
___N________NNNN______NNNNN_____NN_______
___N_______N____N_____N____N_____N_N______
___N______N______N____N____N_____N__N_____N
__________________________Зона смерти








Спасибо: 0 
Профиль Цитата Ответить
постоянный участник




Пост N: 2156
Рейтинг: 4
ссылка на сообщение  Отправлено: 12.06.11 13:41. Заголовок: Вопрос к Антикиллеру..


Вопрос к Антикиллеру...
Функция Attacker была удалена, а как заменить ее?
Вот код:

 цитата:
service ("ai", {name="ourwarrior1", vehname="e1", nick="Поселенец", class="ekivator1", skin="ekivatorl", team=3, on_die="user.M1OnDieBot1()", on_damage="nameofatacker = who.name; user.DamageOurvarrior()", active=0})


и:

 цитата:
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



В чем ошибка?




Be quiet, be smart, be ready!
I go...
...and you will be deid!
Спасибо: 0 
Профиль Цитата Ответить
постоянный участник




Пост N: 279
Рейтинг: 15
ссылка на сообщение  Отправлено: 12.06.11 13:48. Заголовок: slava98 пишет: Ещё ..


slava98 пишет:

 цитата:
Ещё вопрос: а можно было перед этим поставить e4="e4"?


"Перед этим" где? Если это будет локальная переменная, то она пропадет вместе с контекстом. С глобальным доступом у нас там было поле user если я правильно помню. Так что можешь действительно где-нибудь "перед этим" написать user.e4 = "e4", или там user.myVeryImportantString = "e4", без разницы, а потом в скрипт подставлять это поле.
Кстати в питоне можно сделать вложенные кавычки используя двойные и одинарные.
text = "Here comes 'quoted text'"
Возможно в луа так же, не пробовал.

Спасибо: 0 
Профиль Цитата Ответить





Пост N: 714
Рейтинг: 2
ссылка на сообщение  Отправлено: 19.06.11 06:43. Заголовок: Вопросик: 1. Как с п..


Вопросик:
1. Как с помощью скриптов переключить день в ночь, затем ночь в день и т.д. автоматически причём чтоб это было?
2. Как с помощью скриптов включить жизни?






[/url]
Спасибо: 0 
Профиль Цитата Ответить
постоянный участник




Пост N: 2159
Рейтинг: 4
ссылка на сообщение  Отправлено: 19.06.11 07:56. Заголовок: 1. conf.sv_nightmode..


1. conf.sv_nightmode = false (Выключить) true (Включить)

2. Тут посложнее.
1) В создании сервиса
                        service( "player_local", {  
name="player1",
skin="yellow",
team=1,
on_die="user.OnDiePlayer()",
class="default",
nick="Player1" } )

(можно записать в строку)
Обязательно записать какую либо функцию в 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.




Be quiet, be smart, be ready!
I go...
...and you will be deid!
Спасибо: 0 
Профиль Цитата Ответить
moderator




Пост N: 3464
Рейтинг: 11
ссылка на сообщение  Отправлено: 19.06.11 09:30. Заголовок: Максим пишет: автом..


Максим пишет:

 цитата:
автоматически причём чтоб это было?


Если как в сталкере, то нужен бесконечный цикл. Например:

 цитата:

function user.DayAndNight()
pushcmd(function() conf.sv_nightmode = true end, 1)
pushcmd(function() conf.sv_nightmode = false end, 270)
pushcmd(function() user.DayAndNight() end, 540)
end


Оффтоп: А ты кампанию затеял?



К счастью подковы нашёл у корыта,
Не стоит так радоваться - кто-то откинул копыта.

NNNNNNN______N_______N____N_____N__N_____N
___N_________N_N______N____N_____N_N______
___N________NNNN______NNNNN_____NN_______
___N_______N____N_____N____N_____N_N______
___N______N______N____N____N_____N__N_____N
__________________________Зона смерти








Спасибо: 0 
Профиль Цитата Ответить
постоянный участник




Пост N: 2160
Рейтинг: 4
ссылка на сообщение  Отправлено: 19.06.11 11:01. Заголовок: Можно просто for(;;..


Можно просто
for(;;)
{
code
}




Be quiet, be smart, be ready!
I go...
...and you will be deid!
Спасибо: 0 
Профиль Цитата Ответить
Ответов - 285 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 1
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет