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 [только новые]







Пост N: 61
Рейтинг: 1
ссылка на сообщение  Отправлено: 05.01.10 15:02. Заголовок: жаль..


жаль

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




Пост N: 234
Рейтинг: 14
ссылка на сообщение  Отправлено: 05.01.10 16:14. Заголовок: vlad0dalv пишет: А ..


vlad0dalv пишет:

 цитата:
А как тогда сделать так чтобы сервис выполнял последовательно разные ai действия с самого появления?



как ты себе это представляешь? допустим ты выдал сервису последовательность команд - как он должен определить что данная команда выполнена и можно приступать к следующей? ну предположим с маршем и подбором еще можно - бот добирается до определенной точки и это можно считать завершением. а атака? до первого попадания? до уничтожения? до обращения в бегство?
ведь самостоятельно все это проделать очень просто: сказал боту ехать туда-то, и шмяк туда триггер, в on_enter которого следующую команду. сказал подобрать предмет, а в on_pickup ему новую дерективу. сказал боту "убить", а в on_destroy убиенного - продолжение.
А вообще конечно боты кривовастенькие. Округление пути B-сплайнами это конечно сурово, но при этом следует признать что к нынешней версии они уже устарели. Что ж, ничто не идеально, надо выбирать ориентироваться ли на игру с людьми (сеть) или с компом (боты). Думаю большинство предпочтет сеть.

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





Пост N: 64
Рейтинг: 1
ссылка на сообщение  Отправлено: 05.01.10 17:35. Заголовок: Morse ДЕЛО В ТОМ, ЧТ..



 цитата:
как ты себе это представляешь? допустим ты выдал сервису последовательность команд - как он должен определить что данная команда выполнена и можно приступать к следующей? ну предположим с маршем и подбором еще можно - бот добирается до определенной точки и это можно считать завершением. а атака? до первого попадания? до уничтожения? до обращения в бегство?
ведь самостоятельно все это проделать очень просто: сказал боту ехать туда-то, и шмяк туда триггер, в on_enter которого следующую команду. сказал подобрать предмет, а в on_pickup ему новую дерективу. сказал боту "убить", а в on_destroy убиенного - продолжение.



Morse ДЕЛО В ТОМ, ЧТО Я ЭТО И ДЕЛАЛ ТАК ЖЕ НО НЕ ПОЛУЧАЛОСЬ, ПОЭТОМУ Я СЮДА И ПРИШЁЛ.
Попробуй сам так сделать и проверь.



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




Пост N: 235
Рейтинг: 14
ссылка на сообщение  Отправлено: 05.01.10 18:13. Заголовок: вот даже специально ..


вот даже специально попробовал
 reset() 

conf.sv_timelimit = 0
conf.sv_fraglimit = 0
conf.sv_nightmode = false
loadmap("campaign/Demo/maps/part1.map")
actor("respawn_point", 100, 100, {team=1})
user.ai_obj=service("ai", {nick="Subj", team=1, active=0})
actor("trigger",100,100,{on_enter="ai_march(user.ai_obj,500,100)"})
actor("trigger",500,100,{on_enter="ai_march(user.ai_obj,500,500)"})
actor("trigger",500,500,{on_enter="ai_march(user.ai_obj,100,500)"})
actor("trigger",100,500,{on_enter="ai_march(user.ai_obj,100,100)"})
создай файл <имя твоей любимой девушки>.lua в папке campaign и скопируй туда этот текст, и запусти как кампанию. убедишься что все работает.


кстати баг: боты не оставляют следов от гусениц.

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





Пост N: 70
Рейтинг: 1
ссылка на сообщение  Отправлено: 05.01.10 18:21. Заголовок: А почему у меня не п..


А почему у меня не получилось?, ведь тоже самое!

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





Пост N: 73
Рейтинг: 1
ссылка на сообщение  Отправлено: 05.01.10 19:01. Заголовок: Ладно скажи в чём я ..


Ладно скажи в чём я ошибся:
В ИГРЕ
 on_enter= actor("respawn_point", 100, 100, {team=0}) я 
on_enter= user.ai_obj=service("ai", {name="helper", team=0, active=0}) я
on_enter= ai_pickup(user.ai_obj,"gun") бот
on_pickup= ai_march(user.ai_obj,200,200) бот
on_enter= ai_attack(user.ai_obj,"enemy") бот
on_destroy= ai_march(...)

и т. д.
пишет: object or name expected to, got nil
и самое смешное, что они начинают ездить, но оружие по команде не берут (и вообще не берут; передвигаются хаотично или обычно от стационарных пушек)

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




Пост N: 236
Рейтинг: 14
ссылка на сообщение  Отправлено: 05.01.10 21:27. Заголовок: Да без понятия я где..


Да без понятия я где ты там ошибся. Одно могу сказать наверняка: где-то - точно ошибся.
Пример #2
 
reset()

conf.sv_timelimit = 0
conf.sv_fraglimit = 0
conf.sv_nightmode = false
loadmap("campaign/Demo/maps/part1.map")
actor("respawn_point", 100, 100, {team=1})
user.ai_obj=service("ai", {nick="Subj", team=1,active=0,on_respawn="ai_march(user.ai_obj,500,100)"})
user.weapon=actor("weap_autocannon",500,500,{on_pickup="ai_attack(user.ai_obj,user.stat)"})
user.stat=actor("turret_cannon",100,500)
actor("trigger",500,100,{on_enter="ai_pickup(user.ai_obj,user.weapon)"})

Рецепт тот же самый

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





Пост N: 83
Рейтинг: 1
ссылка на сообщение  Отправлено: 06.01.10 18:47. Заголовок: А зачем писать user...


А зачем писать user.ai_obj, если можно просто имя (У меня с именем работает, но только один раз с момента появления)

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




Пост N: 237
Рейтинг: 14
ссылка на сообщение  Отправлено: 06.01.10 21:08. Заголовок: во-первых так грамот..


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

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



Не зарегистрирован
ссылка на сообщение  Отправлено: 07.01.10 02:18. Заголовок: vlad0dalv затем еще,..


vlad0dalv затем еще, чтобы не выдумывать уникальных имен для всех объектов, чтобы по-простому работать с массивами объектов, чтобы иметь возможность обращаться к безымянным объектам, чтобы удобнее обращаться к свойствам объектов через точку, а не через pset/pget, чтобы при отладке скрипта в консоли получать подсказку по свойствам (пишешь user.ai_obj. потом жмешь Tab и сразу видишь, какие у объекта есть свойства). Наконец, это быстрее в плане производительности - ссылка напрямую связана с конкретным объектом, а по имени нужно каждый раз искать нужный объект среди кучи других.

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




Пост N: 687
Рейтинг: 1
ссылка на сообщение  Отправлено: 09.01.10 12:53. Заголовок: Morse пишет: --созд..


Morse пишет:

 цитата:
--создает объект "лес", который повреждает все находящиеся рядом танки со скоростью dam*60 hp в секунду
--сам объект движется по фигуре лиссажу с центром в stx sty радиусами rx ry частотами ax ay начальной фазой t
--и скоростью 1/sp. nameo - имя, должно быть непустым и уникальным. например запуск с параметрами
--user.moveRadiation(10,10,7,3,1,1,0,500,10,"test") создаст объкт движущийся по эллипсу с центром в 10 10 и радиусами
--7 по горизонтали и 3 по вертикали с малой скоростью и сильным дамагом (танк выносится за один проход)
function user.moveRadiation(stx,sty,rx,ry,ax,ay,t,sp,dam,nameo)
for i=1,60 do
local coordx = stx*32+rx*32*math.cos(ax*(i+t)*2*3.1415/sp)
local coordy = sty*32+ry*32*math.sin(ay*(i+t)*2*3.1415/sp)
pushcmd(function()
if exists(nameo.."wo") then kill(nameo.."wo") end
if exists(nameo.."tr") then kill(nameo.."tr") end
actor("wood",coordx,coordy,{name=nameo.."wo"})
actor("trigger",coordx,coordy,{name=nameo.."tr",radius=2,on_enter="damage("..dam..",who)"})
end,i/60)
end
t=t+60
if t>=sp then t=t-sp end
pushcmd(function() user.moveRadiation(stx,sty,rx,ry,ax,ay,t,sp,dam,nameo) end, 1)
end



наконецто это понял :)


но не могу понять что значят эти знаки: (если я хочу создать несколько ящиков которые движутся по линии)
Morse пишет:

 цитата:
stx sty


Morse пишет:

 цитата:
rx ry


Morse пишет:

 цитата:
t


Morse пишет:

 цитата:
ax ay






Be quiet, be smart, be ready
іʁɔvʎнdǝʚǝdǝu dиw
Спасибо: 0 
Профиль Цитата Ответить
постоянный участник




Пост N: 239
Рейтинг: 14
ссылка на сообщение  Отправлено: 09.01.10 20:39. Заголовок: эти знаки значат наз..


эти знаки значат названия переменных. что эти переменные делают вроде бы описано весьма четко.
линия впринципе тоже являет собой фигуру лиссажу, просто одна из частот должна быть равной нулю, или частоты должны быть равны.

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




Пост N: 707
Рейтинг: 1
ссылка на сообщение  Отправлено: 10.01.10 10:42. Заголовок: Morse я не понимаю ч..


Morse я не понимаю что такое частоты...



Be quiet, be smart, be ready
іʁɔvʎнdǝʚǝdǝu dиw
Спасибо: 0 
Профиль Цитата Ответить
постоянный участник




Пост N: 740
Рейтинг: 1
ссылка на сообщение  Отправлено: 10.01.10 11:56. Заголовок: Morse мой мозг понял..


Morse мой мозг понял всё, единствинный вопрос - обьект создаеться или создан?



Be quiet, be smart, be ready
іʁɔvʎнdǝʚǝdǝu dиw
Спасибо: 0 
Профиль Цитата Ответить
постоянный участник




Пост N: 746
Рейтинг: 1
ссылка на сообщение  Отправлено: 10.01.10 12:14. Заголовок: А как сделать взрыв ..


А как сделать взрыв по неизвесным координатам, которые узнаються с помошью Positon



Be quiet, be smart, be ready
іʁɔvʎнdǝʚǝdǝu dиw
Спасибо: 0 
Профиль Цитата Ответить



Не зарегистрирован
ссылка на сообщение  Отправлено: 10.01.10 14:23. Заголовок: damage(10, actor(..


damage(10, actor("user_object", position(obj), {health=1,max_health=1})) 
-- obj - это имя ссылка на объект, от которого нам нужны координаты


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




Пост N: 750
Рейтинг: 1
ссылка на сообщение  Отправлено: 10.01.10 14:34. Заголовок: инс большое спасибо..


инс большое спасибо



Be quiet, be smart, be ready
іʁɔvʎнdǝʚǝdǝu dиw
Спасибо: 0 
Профиль Цитата Ответить





Пост N: 99
Рейтинг: 2
ссылка на сообщение  Отправлено: 10.01.10 17:45. Заголовок: инс пишет: damage(1..


инс пишет:

 цитата:
damage(10, actor("user_object", position(obj), {health=1,max_health=1}))


В точности так? =)
И в дополнение к VIRUS - что надо добавить чтоб взрыв был например с перерывом в х секунд, но постоянно на протяжении всей карты???
И еще, куда скрипт выше писать в редакторе КАРТ (не кампании)?

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




Пост N: 755
Рейтинг: 1
ссылка на сообщение  Отправлено: 10.01.10 18:21. Заголовок: Артур пишет: И в до..


Артур пишет:

 цитата:
И в дополнение к VIRUS - что надо добавить чтоб взрыв был например с перерывом в х секунд, но постоянно на протяжении всей карты???


http://zod.borda.ru/?1-4-0-00000033-000-0-0#012 почитай!
Артур пишет:

 цитата:
И еще, куда скрипт выше писать в редакторе КАРТ (не кампании)?


Перефразируй



Be quiet, be smart, be ready
іʁɔvʎнdǝʚǝdǝu dиw
Спасибо: 0 
Профиль Цитата Ответить





Пост N: 101
Рейтинг: 2
ссылка на сообщение  Отправлено: 10.01.10 21:01. Заголовок: VIRUS пишет: Перефр..


VIRUS пишет:

 цитата:
Перефразируй

ну в обычном редакторе карт это куда писать??? (Можно в триггер с радиусом 999999999?)

Спасибо: 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
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет