Отправлено: 05.01.10 16:14. Заголовок: vlad0dalv пишет: А ..
vlad0dalv пишет:
цитата:
А как тогда сделать так чтобы сервис выполнял последовательно разные ai действия с самого появления?
как ты себе это представляешь? допустим ты выдал сервису последовательность команд - как он должен определить что данная команда выполнена и можно приступать к следующей? ну предположим с маршем и подбором еще можно - бот добирается до определенной точки и это можно считать завершением. а атака? до первого попадания? до уничтожения? до обращения в бегство? ведь самостоятельно все это проделать очень просто: сказал боту ехать туда-то, и шмяк туда триггер, в on_enter которого следующую команду. сказал подобрать предмет, а в on_pickup ему новую дерективу. сказал боту "убить", а в on_destroy убиенного - продолжение. А вообще конечно боты кривовастенькие. Округление пути B-сплайнами это конечно сурово, но при этом следует признать что к нынешней версии они уже устарели. Что ж, ничто не идеально, надо выбирать ориентироваться ли на игру с людьми (сеть) или с компом (боты). Думаю большинство предпочтет сеть.
Отправлено: 05.01.10 17:35. Заголовок: Morse ДЕЛО В ТОМ, ЧТ..
цитата:
как ты себе это представляешь? допустим ты выдал сервису последовательность команд - как он должен определить что данная команда выполнена и можно приступать к следующей? ну предположим с маршем и подбором еще можно - бот добирается до определенной точки и это можно считать завершением. а атака? до первого попадания? до уничтожения? до обращения в бегство? ведь самостоятельно все это проделать очень просто: сказал боту ехать туда-то, и шмяк туда триггер, в on_enter которого следующую команду. сказал подобрать предмет, а в on_pickup ему новую дерективу. сказал боту "убить", а в on_destroy убиенного - продолжение.
Morse ДЕЛО В ТОМ, ЧТО Я ЭТО И ДЕЛАЛ ТАК ЖЕ НО НЕ ПОЛУЧАЛОСЬ, ПОЭТОМУ Я СЮДА И ПРИШЁЛ. Попробуй сам так сделать и проверь.
и т. д. пишет: object or name expected to, got nil и самое смешное, что они начинают ездить, но оружие по команде не берут (и вообще не берут; передвигаются хаотично или обычно от стационарных пушек)
Отправлено: 06.01.10 21:08. Заголовок: во-первых так грамот..
во-первых так грамотнее с точки зрения теории программирования - в качестве параметра ты передаешь в функцию объект, а не какую-то бессмысленную строку. во-вторых объекты - вещь знакомая, всегда очевидно чего он может и как его можно использовать. ну и наконец в-третьих - чтобы не эскейпить кавычки. текст из-за них в такую мешанину превращается...
Отправлено: 07.01.10 02:18. Заголовок: vlad0dalv затем еще,..
vlad0dalv затем еще, чтобы не выдумывать уникальных имен для всех объектов, чтобы по-простому работать с массивами объектов, чтобы иметь возможность обращаться к безымянным объектам, чтобы удобнее обращаться к свойствам объектов через точку, а не через pset/pget, чтобы при отладке скрипта в консоли получать подсказку по свойствам (пишешь user.ai_obj. потом жмешь Tab и сразу видишь, какие у объекта есть свойства). Наконец, это быстрее в плане производительности - ссылка напрямую связана с конкретным объектом, а по имени нужно каждый раз искать нужный объект среди кучи других.
--создает объект "лес", который повреждает все находящиеся рядом танки со скоростью 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 пишет:
Отправлено: 09.01.10 20:39. Заголовок: эти знаки значат наз..
эти знаки значат названия переменных. что эти переменные делают вроде бы описано весьма четко. линия впринципе тоже являет собой фигуру лиссажу, просто одна из частот должна быть равной нулю, или частоты должны быть равны.
В точности так? =) И в дополнение к VIRUS - что надо добавить чтоб взрыв был например с перерывом в х секунд, но постоянно на протяжении всей карты??? И еще, куда скрипт выше писать в редакторе КАРТ (не кампании)?
Все даты в формате GMT
3 час. Хитов сегодня: 13
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет