Отправлено: 25.01.10 22:56. Заголовок: А работает ли прикре..
А работает ли прикрепление бустера тогда, когда он появляется? Во-первых, с того сообщения (про баг с бустером) немало времени прошло, может исправили. Во-вторых, я не скриптописатель и если прикрепление уже возможно, то поподробнее пожалуйста. ЗАРАНННЕЕ СаПаСибо!
Отправлено: 29.01.10 21:57. Заголовок: Незнал куда написать..
Незнал куда написать этот вопрос, думаю тут ему место. Я, человек плохо разбирающийся в скриптах(!) решил сделать карту своего городачерез прогу mkmap (если её ещё помнят). Вот отрывок из ReadMe Чтобы преобразовать рисунок в карту, необходимо передать через командную строку имя входного и выходного файла: mkmap input [output] input - имя входного графического файла output - имя выходного файла карты (можно не указывать) Вот я открываю "пуск-- стандартные-- командная строка и ввожу в ней mkmap D:\1 [D:\map] И мне выводится надпись "mkmap не является внутреней и внешней командой, исполняемой программой или пакетным файлом Что мне делать?
Отправлено: 30.01.10 09:16. Заголовок: перетащи свою карту ..
перетащи свою карту на mkmap.exe и будет счастье А если из командной строки - сперва перейди в директорию с mkmap.exe командой "CD", а только потом вводи "mkmap.exe <обрабатываемый файл> [<обработанный файл>]".
Отправлено: 30.01.10 12:22. Заголовок: переношу эту картинк..
переношу эту картинку на ярлык mkmap.exe и выводит "функция не поддерживается, а в командной строке опять не является внутреней или внешней командой...
Отправлено: 25.07.10 03:34. Заголовок: А можно в новой верс..
цитата:
А можно в новой версии сделать что бы бот ехал за игроком? Постоянно до команды "стоп".
Вобще вот как то так
цитата:
function user.FolowToPlayer(ainame,vehtank) if ((exists(vehtank) == true) and (exists(pget(ainame,'vehname'))) == true) then local x,y = position(vehtank); local x1,y1 = position(pget(ainame,'vehname')); ai_stop(ainame); if (math.sqrt((x-x1)^2+(y-y1)^2) > 140) then ai_march(ainame, x, y); end end if (stop ==false ) then pushcmd(function() user.FolowToPlayer(ainame,vehtank); end, 0.4) end end
Юзать user.FolowToPlayer("Имя_любого_Бота","Название_танка_за_которым_следовать") . Глобальная переменная stop, изменяем на true и танк перестает двигаться за игроком, иначе, постоянно следует. но надо саму ф-цию стопа профиксить (т.к. она не стирает пути, а только стирает цель). Скину с утречка по вашему времени пофиксеную версию если надо
------------------------------------------
как и сказал вот профиксенный версия + исправленный мой скрипт-пример (удалил дофига лишнего + один из танков следует за игроком, но легко сделать и больше) убраны on_damage, on_pickup, health для игрока. В скрипте показано что легко обойтись и без них. А вот attacker реализован по другому и там это наглядно показано. В событии on_respawn (т.к. именно в этот момент создается объект с названием vehname) для любого игрока\бота задается событие on_damage для его танка. Т.е. появилось новое событие on_damage для танка в котором возвращается объект в локальной переменной who который атаковал. А от него уже можно плясать дальше (вообщем в примере найдете). в редакторе НЕ обращаем внимания на Особый динамический Объект, он если и появится у Инса то будет реализован по другому, на основе ящика, чтобы боты его осязали, да и так правильней. Мультиплеер отключен т.к. в текущем состоянии у него нет будущего, его надо переделывать под корень.
Отправлено: 25.07.10 13:37. Заголовок: Смотрю и нифига не п..
Смотрю и нифига не понимаю. Можешь расписать функции
цитата:
function user.moveObjectsX(stx,sty,endx,name,sti,endi,tox) local numi = (endx - stx) * 16 local toy = 0 stx = ((stx - 1) * 32) + 16 sty = ((sty - 1) * 32) + 16 endx = ((endx - 1) * 32) + 16 if numi < 0 then numi = - numi -- аналог math.abs - я не знаю существует ли он end local intx = (endx-stx)/numi for i = 1,numi do pushcmd(function ()user.moveObjectsOneIteration(stx+intx*i,sty,name,sti,endi,tox,toy) end,i/16) end end
Отправлено: 25.07.10 14:05. Заголовок: Эта функция просто п..
Эта функция просто перемещает объекты которые по Х Тут тебе только время в таймере стоит редактировать, все остальное это подгонка под 32 пиксельные клетки, чтобы передвегаться по ним, остальное менять здесь ничего не стоит , все и так отлажено.
цитата:
function user.moveObjectsX(stx,sty,endx,name,sti,endi,tox) -- перемещение объекта по X local numi = (endx - stx) * 16 local toy = 0 stx = ((stx - 1) * 32) + 16 sty = ((sty - 1) * 32) + 16 endx = ((endx - 1) * 32) + 16 if numi < 0 then numi = - numi -- аналог math.abs - я не знаю существует ли он end local intx = (endx-stx)/numi for i = 1,numi do pushcmd(function ()user.moveObjectsOneIteration(stx+intx*i,sty,name,sti,endi,tox,toy) end,i/16) --если поставить вместо 16 64 то будет вообще плавный ход end end
Ну и как это работает. функция для передвижки первой стены. Читаем коментарий автора
--двигаем объект(ы) с точки stx sty до точки endx sty. объекты имеют вид --n1,n2,n3,...,nk где n - name а индексы - от sti до endi, --tox - +1 если нумирация слева направо, -1 если наоборот
цитата:
function user.onToggle1Damage() pset("tog1","health",500); if (user.toggle1Active==0) then user.toggle1Active=1 --открыть if (user.toggle1Close == 1) then user.moveObjectsY(7,5,3,"w",1,3,1); user.toggle1Close=0; pset("tog1","corner",3); else --закрыть user.moveObjectsY(7,3,5,"w",1,3,1); user.toggle1Close=1; pset("tog1","corner",1); end pushcmd(function() user.toggle1Active=0 end,3) end end
т.е. у нас user.moveObjectsY(7,5,3,"w",1,3,1); это мы двигаем все объекты у которых имя имеет вид "w1" "w2" "w3" ("w",1,3) с точки с кординатами по клеточной системе от X = 7 и Y=5 (те что возле мышки в редакторе подписываются в общем) до точки с кординатой по Y = 3 соответственно для user.moveObjectsX третий параметр это точка конца по X. Посмотри через редактор что и как расставлено и какие кординаты имеет. Последний параметр это с какой стороны ведем отсчет, слева или с права. Правда не понял относительно чего лево и право, но методом тыка понять можно :)
function user.moveObjectsX(stx,sty,endx,name,sti,endi,tox) local numi = (endx - stx) * 16 local toy = 0 stx = ((stx - 1) * 32) + 16 sty = ((sty - 1) * 32) + 16 endx = ((endx - 1) * 32) + 16 if numi < 0 then numi = - numi -- аналог math.abs - я не знаю существует ли он end local intx = (endx-stx)/numi for i = 1,numi do pushcmd(function ()user.moveObjectsOneIteration(stx+intx*i,sty,name,sti,endi,tox,toy) end,i/64) end end
Отправлено: 26.07.10 13:31. Заголовок: Не работает ты по ад..
цитата:
Не работает
по адекватней чутка пиши. Какие ошибки? все ли функции заинклудил. Если это полный код то тебе надо еще function ()user.moveObjectsOneIteration(stx+intx*i,sty,name,sti,endi,tox,toy) найти у него в коде и вставить в твой код
Все даты в формате GMT
3 час. Хитов сегодня: 13
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет