Форум » Вопросы и ответы » Вопросы по скриптам » Ответить

Вопросы по скриптам

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

Ответов - 285, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All

hmh: http://ru.zod.wikia.com/wiki/Function_pushcmd Используй это, когда кодируешь on_destroy, on_damage, триггеры и тому подобное.

TDiamond: А работает ли прикрепление бустера тогда, когда он появляется? Во-первых, с того сообщения (про баг с бустером) немало времени прошло, может исправили. Во-вторых, я не скриптописатель и если прикрепление уже возможно, то поподробнее пожалуйста. ЗАРАНННЕЕ СаПаСибо!

инс: прикрепление бустера работает, за примерами в танкопедию


TDiamond: спс

FEAR: Незнал куда написать этот вопрос, думаю тут ему место. Я, человек плохо разбирающийся в скриптах(!) решил сделать карту своего городачерез прогу mkmap (если её ещё помнят). Вот отрывок из ReadMe Чтобы преобразовать рисунок в карту, необходимо передать через командную строку имя входного и выходного файла: mkmap input [output] input - имя входного графического файла output - имя выходного файла карты (можно не указывать) Вот я открываю "пуск-- стандартные-- командная строка и ввожу в ней mkmap D:\1 [D:\map] И мне выводится надпись "mkmap не является внутреней и внешней командой, исполняемой программой или пакетным файлом Что мне делать?

Киллер: перетащи свою карту на mkmap.exe и будет счастье А если из командной строки - сперва перейди в директорию с mkmap.exe командой "CD", а только потом вводи "mkmap.exe <обрабатываемый файл> [<обработанный файл>]".

FEAR: переношу эту картинку на ярлык mkmap.exe и выводит "функция не поддерживается, а в командной строке опять не является внутреней или внешней командой...

Dark-FoX: Как создать кампанию со скриптами? Что нужно сделать?

Morse: Dark-FoX пишет: Что нужно сделать? для начала - форум почитать. хотя бы чуть-чуть http://zod.borda.ru/?1-6-0-00000036-000-0-0-1237968230

VIRUS: А можно в новой версии сделать что бы бот ехал за игроком? Постоянно до команды "стоп".

VIRUS: Так например function() ai_march("player1", position("boo"))

Anti_Killer: А можно в новой версии сделать что бы бот ехал за игроком? Постоянно до команды "стоп". Вобще вот как то так 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 который атаковал. А от него уже можно плясать дальше (вообщем в примере найдете). в редакторе НЕ обращаем внимания на Особый динамический Объект, он если и появится у Инса то будет реализован по другому, на основе ящика, чтобы боты его осязали, да и так правильней. Мультиплеер отключен т.к. в текущем состоянии у него нет будущего, его надо переделывать под корень. http://files.vhabare.ru/files/581_sv1qn/tank_.rar

VIRUS: Anti_Killer это твоя профиксенная? (старая или новая) Я вот не понимаю как сделать двигающеюся стену

Anti_Killer: Anti_Killer это твоя профиксенная? (старая или новая) Я вот не понимаю как сделать двигающеюся стену да. То что было у меня Исправления относительно той , которую я кидал для проверки мультиплеера и возможно тебе на мейл. То что стены двигать Morse пример выкладывал http://tankzod.do.am/load/2-1-0-15 , там тупо убить старый объект, создать новый но чуть в сторону, на этом и основано , но это геморно немножко

VIRUS: Но это можно делать до китайской пасхи (если сдвигать на 100 клеток например)

Anti_Killer: Но это можно делать до китайской пасхи (если сдвигать на 100 клеток например) там все на таймерах основано. Уменьшаеш время таймера, объект телепортируется из места в место быстрее.

VIRUS: Смотрю и нифига не понимаю. Можешь расписать функции 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

Anti_Killer: Эта функция просто перемещает объекты которые по Х Тут тебе только время в таймере стоит редактировать, все остальное это подгонка под 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. Посмотри через редактор что и как расставлено и какие кординаты имеет. Последний параметр это с какой стороны ведем отсчет, слева или с права. Правда не понял относительно чего лево и право, но методом тыка понять можно :)

VIRUS: -- Move reset() conf.sv_timelimit = 0 conf.sv_fraglimit = 0 conf.sv_nightmode = false loadmap("campaign/Move/maps/m_map.map") service("player_local", {name="player", nick="Убийцо",vehname="veh1", class="default"}) function user.moveObjectsX(1,1,6,"ww",1,3,1); 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 Не работает

Anti_Killer: Не работает по адекватней чутка пиши. Какие ошибки? все ли функции заинклудил. Если это полный код то тебе надо еще function ()user.moveObjectsOneIteration(stx+intx*i,sty,name,sti,endi,tox,toy) найти у него в коде и вставить в твой код



полная версия страницы