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: 188
Рейтинг: 2
ссылка на сообщение  Отправлено: 07.06.08 07:33. Заголовок: Нуи ессно сразу вопр..


Нуи ессно сразу вопрос: Каким макаром в танках рассчитывается координата объекта (например actor("", x, y, {...}))? Смотрел в других кампаниях, ни х. не понял... Единственное дошло то, что реальная координата, которая отображается в редакторе map, должна домнажаться на n-ю переменную...



Смерть - это не повод уходить из жизни... Спасибо: 0 
Профиль Цитата Ответить
moderator




Пост N: 1093
Рейтинг: 9
ссылка на сообщение  Отправлено: 07.06.08 09:57. Заголовок: Каждая клетка равна ..


Каждая клетка равна 32*32 пикселям. Т.е. координата клетки равна номеру клетки*32.

"Оглянись вокруг. Это место прекрасно! За исключением случаев, когда оно ужасно. Тогда оно УЖАСНО прекрасно!"
Шеогорат, Безумный Бог
Спасибо: 0 
Профиль Цитата Ответить
постоянный участник




Пост N: 137
Рейтинг: 7
ссылка на сообщение  Отправлено: 07.06.08 11:31. Заголовок: hmh пишет: Каждая к..


hmh пишет:

 цитата:
Каждая клетка равна 32*32 пикселям. Т.е. координата клетки равна номеру клетки*32.



Тут надо уточнить, что указанная "координата клетки" - это ее верхний левый угол. Если требуется поместить объект в центр клетки надо прибавить к координатам по 16.

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




Пост N: 190
Рейтинг: 2
ссылка на сообщение  Отправлено: 07.06.08 13:06. Заголовок: hmh, Morse - большое..


hmh, Morse - большое спасибо!!! Мне это было очень важно...

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




Пост N: 191
Рейтинг: 2
ссылка на сообщение  Отправлено: 08.06.08 11:46. Заголовок: Теперь хотел спросит..


Теперь хотел спросить: Можно ли сейчас по средствам скрипто ввести отслеживание нажатия кнопки. На сколько мне известно, в CPP эту функция реализуется через eof...

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




Пост N: 138
Рейтинг: 8
ссылка на сообщение  Отправлено: 09.06.08 00:36. Заголовок: Единственные события..


Единственные события которые может отслеживать скрипт - въезд в зону триггера (ну и выезд), респаун танка, дамаг и дестрой объектов, и подбор предметов. А C++ тут вообще непричем.

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




Пост N: 202
Рейтинг: 2
ссылка на сообщение  Отправлено: 12.06.08 08:59. Заголовок: 1. who можно использ..


1. who можно использовать только в триггере?
2. Как записать убить "того-то" с пом. who, а то kill(who) и kill("who") не контачат...
3. Не могли бы подробно объяснить принцип действия for.


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




Пост N: 142
Рейтинг: 9
ссылка на сообщение  Отправлено: 12.06.08 10:48. Заголовок: who - да, использует..


who - да, используется только в триггере. она и создана-то была специально для него. who - это имя танка, который въехал в область триггера. Но есть один важный момент, на который не поставлено должного акцента. Чтобы вся эта байда работала, ЭТО ИМЯ ДОЛЖНО СУЩЕСТВОВАТЬ.
Запомните это правило и передайте другим:

В СКРИПТАХ ЗАДАВАЙТЕ ИМЯ ВСЕМ ВОЗМОЖНЫМ ОБЪЕКТАМ, ДАЖЕ ЕСЛИ, КАК ВАМ КАЖЕТСЯ, ЭТО ИМЯ НИКОГДА И НИГДЕ НЕ ПОНАДОБИТСЯ.


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

Про цикл for: http://www.lua.ru/doc/2.4.5.html
подробнее ты нигде не найдешь

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




Пост N: 516
Рейтинг: 4
ссылка на сообщение  Отправлено: 12.06.08 11:00. Заголовок: Киллер пишет: Как з..


Киллер пишет:

 цитата:
Как записать убить "того-то" с пом. who, а то kill(who) и kill("who") не контачат...


Если убить, то вроде
 цитата:
damage(100000,who)


Kill - убрать
Damage - убить
Не путай





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




Пост N: 206
Рейтинг: 2
ссылка на сообщение  Отправлено: 12.06.08 11:17. Заголовок: Morse, зачем так нер..


Morse, зачем так нервничать? Имя было, но ,как ты сказал, - сервисное...
slava98, спасибо конечно, но про kill и damage я и так знаю, но kill для меня - это убить, а damage - повредить.

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




Пост N: 143
Рейтинг: 9
ссылка на сообщение  Отправлено: 12.06.08 11:54. Заголовок: Я не нервничаю. Я на..


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

Кстати у меня тоже вопрос: есть ли такая штука, как массив ВСЕХ объектов которые есть на карте? Или, если быть более точным: можно ли добраться хоть как-нибудь до объекта без имени? Напрямую - нельзя, это понятно, но может можно по какому-нибудь индексу в каком-нибудь массиве?

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




Пост N: 207
Рейтинг: 2
ссылка на сообщение  Отправлено: 12.06.08 13:43. Заголовок: Morse пишет: Кстати..


Morse пишет:

 цитата:
Кстати у меня тоже вопрос: есть ли такая штука, как мас...


Хм... Вопрос хороший. Думаю что навярнека это знает только Insert, а его уже с 1.5 месяца нет.
Вообще такой массив даже не должен, а обязан быть. Если открыть любой файл *.map, то в нем содержится код, содержащий все координаты построения объектов на карте, а таковых - очень много. Отсюда можно сделать вывод, что если у каждого объекта не будет личного индекса, то впринципе взаимодействие с объектами будет невозможно. Как я себе представляю, в этом случае будут массовые конфликты, и так, уничтожив 1 кирпич, мы уничтожим все... Так что они есь!
П.С. Конечно, комуто может показать ся, что я несу полный бред, но во всех, даже самых простых играх каждый объект занимает определенную ячейку памяти... вот так...
П.П.С. Однако же, навярняка знает сам Insert.

Смерть - это не повод уходить из жизни... Спасибо: 0 
Профиль Цитата Ответить





Пост N: 1
Рейтинг: 0
ссылка на сообщение  Отправлено: 30.06.08 15:49. Заголовок: А мне бы хотелось уз..


А мне бы хотелось узнать по подробнее о командах, приписываемых к conf.

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




Пост N: 555
Рейтинг: 4
ссылка на сообщение  Отправлено: 30.06.08 20:35. Заголовок: И мне..


И мне





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



Пост N: 292
Рейтинг: -5
ссылка на сообщение  Отправлено: 31.10.08 18:48. Заголовок: Есть какой нить туто..

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




Пост N: 154
Рейтинг: 9
ссылка на сообщение  Отправлено: 01.11.08 02:15. Заголовок: собственно это тоже ..


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

если есть конкретные вопросы - задавай, получишь ответы.

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



Пост N: 293
Рейтинг: -5
ссылка на сообщение  Отправлено: 01.11.08 12:42. Заголовок: Morse что можно впис..


Morse что можно вписать в on_destroy и что вообще оно обозначает?

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




Пост N: 155
Рейтинг: 9
ссылка на сообщение  Отправлено: 09.11.08 20:58. Заголовок: вписать туда можно с..


вписать туда можно строку - аналогично on_damage, а означает по-моему очевидно что.

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




Пост N: 427
Рейтинг: 20
ссылка на сообщение  Отправлено: 09.11.08 22:33. Заголовок: Я тут иногда) Попроб..


Я тут иногда) Попробую ответить сразу всем.

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

Нажатия кнопок отслеживать нельзя.

conf это таблица всех настроек игры. Их список можно получить если открыть в блокноте config.cfg или набрать в консоли "conf." и нажать Tab. Назначение большинства из них должно быть понятно из названия. Если что не понятно - спрашивайте. А вообще хорошо бы на wiki иметь про это статью. Начните кто-нибудь, а я потом поправлю


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



Пост N: 301
Рейтинг: -5
ссылка на сообщение  Отправлено: 11.11.08 13:54. Заголовок: Insert мдя, я всюрав..


Insert мдя, я всюравно ничего не понял =) лучше буду для кс продожлать карты мапить)

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




Пост N: 2
Рейтинг: 0
ссылка на сообщение  Отправлено: 13.11.09 15:54. Заголовок: genesis'у


Genesis пишет:

 цитата:
Есть какой нить тутор про скрипты в танках



Есть что-то на Скрипты

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




Пост N: 1369
Рейтинг: 6
ссылка на сообщение  Отправлено: 14.11.09 13:45. Заголовок: Да это ерунда! Это п..


Да это ерунда! Это плагиат с танкопедии.




Не кури вот что будет - !

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: 279
Рейтинг: -1
ссылка на сообщение  Отправлено: 15.11.09 21:27. Заголовок: А можно ли сделать п..


А можно ли сделать постоянный скрипт (например прожекторы светятся по кругу как на дискотеке)?



Be quiet, be smart, be ready

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




Пост N: 212
Рейтинг: 12
ссылка на сообщение  Отправлено: 16.11.09 01:12. Заголовок: что значит "пост..


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

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




Пост N: 280
Рейтинг: -1
ссылка на сообщение  Отправлено: 17.11.09 10:20. Заголовок: Morse в какой "н..


Morse в какой "недокампании"?



Be quiet, be smart, be ready

- наш форум :)
Спасибо: 0 
Профиль Цитата Ответить
moderator




Пост N: 1321
Рейтинг: 13
ссылка на сообщение  Отправлено: 17.11.09 10:30. Заголовок: http://zod.borda.ru/..


http://zod.borda.ru/?1-8-0-00000008-000-0-0-1255259314
Ссылка на slil.ru скончалась от старости, так что качай с сайта slava98, он выдал ссылку несколькими постами позже начального.

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




Пост N: 281
Рейтинг: -1
ссылка на сообщение  Отправлено: 17.11.09 11:51. Заголовок: hmh у мя она есть, н..


hmh у мя она есть, но я ничего не видел в конце!



Be quiet, be smart, be ready

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




Пост N: 213
Рейтинг: 12
ссылка на сообщение  Отправлено: 17.11.09 16:58. Заголовок: в данном случае я им..


в данном случае я имел в виду "последнюю надежду".
http://zod.borda.ru/?1-8-0-00000012-000-0-0-1219295148
если нигде не найдешь - вот фрагмент кода который отвечает за вечнодвижущийся объект
 
--создает объект "лес", который повреждает все находящиеся рядом танки со скоростью 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

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

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




Пост N: 282
Рейтинг: -1
ссылка на сообщение  Отправлено: 17.11.09 18:46. Заголовок: Morse А если наприме..


Morse А если например устроить вечную дискотеку с прожекторов(Включается - выключается и так до бесконечности)



Be quiet, be smart, be ready

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




Пост N: 214
Рейтинг: 12
ссылка на сообщение  Отправлено: 17.11.09 19:37. Заголовок: А какая разница? есл..


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

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



Не зарегистрирован
ссылка на сообщение  Отправлено: 28.11.09 13:02. Заголовок: Можно ли сделать нап..


Можно ли сделать например в on_destroy вместе damage и actor?

Спасибо: 0 
Цитата Ответить



Не зарегистрирован
ссылка на сообщение  Отправлено: 28.11.09 13:03. Заголовок: и если можно то как ..


и если можно то как разделять части скриптов?

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




Пост N: 1389
Рейтинг: 6
ссылка на сообщение  Отправлено: 28.11.09 13:35. Заголовок: Артур пишет: Можно..


Артур пишет:

 цитата:

Можно ли сделать например в on_destroy вместе damage и actor?


Разумеется. Объект создастся и взорвётся. Только нужно между ними поставить ;
Артур пишет:

 цитата:

и если можно то как разделять части скриптов?


На этот вопрос тебе ответит 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
__________________________Зона смерти






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



Не зарегистрирован
ссылка на сообщение  Отправлено: 28.11.09 14:35. Заголовок: slava98 пишет: Арту..


slava98 пишет:

 цитата:
Артур пишет:
цитата:

Можно ли сделать например в on_destroy вместе damage и actor?




Разумеется. Объект создастся и взорвётся. Только нужно между ними поставить ;
Артур пишет:
цитата:

и если можно то как разделять части скриптов?




На этот вопрос тебе ответит Morse (если объяснишь, то может и я смогу).


Спасибо! (ты мне на 2ой вопрос тоже ответил , я имел ввиду actor... и damage... как разделить )

Спасибо: 0 
Цитата Ответить



Не зарегистрирован
ссылка на сообщение  Отправлено: 28.11.09 14:39. Заголовок: Еще до и после ; над..


Еще до и после ; надо ставить пробелы?
и как настроить who в триггере? а то у меня не действует

Спасибо: 0 
Цитата Ответить





Пост N: 1
Рейтинг: 0
ссылка на сообщение  Отправлено: 28.11.09 14:40. Заголовок: У мя стоит who но вс..


У мя стоит who но все равно у меня появляется бустер но не берется сразу командой equip после actor

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




Пост N: 1393
Рейтинг: 6
ссылка на сообщение  Отправлено: 28.11.09 15:48. Заголовок: Артур пишет: Еще до..


Артур пишет:

 цитата:
Еще до и после ; надо ставить пробелы?


Только 1.
Артур пишет:

 цитата:
и как настроить who в триггере? а то у меня не действует


К сожфлению у меня тоже .
Артур пишет:

 цитата:
У мя стоит who но все равно у меня появляется бустер но не берется сразу командой equip после actor


У меня equip вообще не работает. Я хотел его поставить в нашу с Вирусом кампанию.




Не кури вот что будет - !

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: 218
Рейтинг: 12
ссылка на сообщение  Отправлено: 28.11.09 22:59. Заголовок: slava98 , Артур на ..


slava98 , Артур
на ваш вопрос ответ был дан на предыдущей странице - большими красными буквами, специально чтоб все видели. Следовало бы ту фразу поместить в шапку топика - чтоб все ее всегда видели. А то ей-богу уже устал от одной и той же ошибки.

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



Не зарегистрирован
ссылка на сообщение  Отправлено: 29.11.09 12:19. Заголовок: Артур, slava98 Бусте..


Артур, slava98 Бустер нельзя дать с помощью equip, это такой баг. Дело в том, что бустер - это единственный бонус, который прикрепляется не к танку, а к оружию, и это реализовано через эту... не очень правильно, вот.

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




Пост N: 1395
Рейтинг: 6
ссылка на сообщение  Отправлено: 29.11.09 20:41. Заголовок: инс я это знаю. Я пы..


инс я это знаю. Я пытался прикрепить к танку оружие.




Не кури вот что будет - !

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: 219
Рейтинг: 12
ссылка на сообщение  Отправлено: 30.11.09 00:32. Заголовок: инс пишет: Дело в т..


инс пишет:

 цитата:
Дело в том, что бустер - это единственный бонус, который прикрепляется не к танку, а к оружию, и это реализовано через эту...


"эта" называется "интерфейс" http://bash.org.ru/quote/19902 полиморфизм в подавляющем большинстве случаев именно через него(неё) работает...

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



Не зарегистрирован
ссылка на сообщение  Отправлено: 30.11.09 12:57. Заголовок: http://burrarum.live..


http://burrarum.livejournal.com/32707.html

Спасибо: 0 
Цитата Ответить





Пост N: 3
Рейтинг: 0
ссылка на сообщение  Отправлено: 01.12.09 18:24. Заголовок: У мя who не работает..


У мя who не работает в триггере! Вот неработающий скрипт: actor("weap_zippo", 0, 0, {name="zippo"} ); equip(who, "zippo")

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




Пост N: 220
Рейтинг: 12
ссылка на сообщение  Отправлено: 01.12.09 19:14. Заголовок: Вы мне все уже надое..


Вы мне все уже надоели... Потрудитесь наконец хотя бы перечитать с самого начала этот топик. Всего три страницы - не так уж и много. Тем более что вам нужна только первая.
Есть уже все-таки предел сколько раз можно отвечать на один и тот же вопрос.

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





Пост N: 4
Рейтинг: 0
ссылка на сообщение  Отправлено: 01.12.09 19:55. Заголовок: Я не пойму тот пост ..


Я не пойму тот пост должна быть какаято вещь с названием "who" или что?

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




Пост N: 488
Рейтинг: 26
ссылка на сообщение  Отправлено: 01.12.09 21:45. Заголовок: вообще, наверно мне ..


вообще, наверно мне правильнее будет сделать возможность надевать предметы не только на танки, но и на ихних игроков, ибо конца подобным вопросам не предвидится :)

Артур В обработчик триггера передается спец переменная who, в которой записано name въехавшего танка. Дело в том, что танком управляет player, у которого тоже есть свое name, другое и которое совсем не то, которым подписывается игрок. Танк периодически дохнет и рождается заново, а player живет все время. У player'а есть еще одно свойство vehname, которое определяет как будет называться танк. Когда играешь в мясо, у игроков по умолчанию все эти поля пустые, следовательно в триггерах who не сработает.

У меня есть идея, как убрать вообще геморрой с именами и обрести счастье. Плохая новость заключается в том, что у меня совсем нет времени :)

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





Пост N: 5
Рейтинг: 0
ссылка на сообщение  Отправлено: 02.12.09 09:41. Заголовок: Insert пишет: Артур..


Insert пишет:

 цитата:
Артур В обработчик триггера передается спец переменная who, в которой записано name въехавшего танка. Дело в том, что танком управляет player, у которого тоже есть свое name, другое и которое совсем не то, которым подписывается игрок. Танк периодически дохнет и рождается заново, а player живет все время. У player'а есть еще одно свойство vehname, которое определяет как будет называться танк. Когда играешь в мясо, у игроков по умолчанию все эти поля пустые, следовательно в триггерах who не сработает.


Спасибо Insert! я все понял Думал-думал как who поставить в "Мясо", триггеры хотел поставить чтоб оружие появлялось и к танку прикреплялось сразу Теперь поставлю чтоб оружие под триггером появлялось

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





Пост N: 29
Рейтинг: 0
ссылка на сообщение  Отправлено: 07.12.09 16:47. Заголовок: Почему damage не раб..


Почему damage не работает???

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




Пост N: 342
Рейтинг: -1
ссылка на сообщение  Отправлено: 13.12.09 21:33. Заголовок: Morse А можно селать..


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



Be quiet, be smart, be ready

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




Пост N: 408
Рейтинг: -1
ссылка на сообщение  Отправлено: 26.12.09 15:44. Заголовок: Меня очень волнует э..


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



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




Пост N: 223
Рейтинг: 12
ссылка на сообщение  Отправлено: 26.12.09 19:00. Заголовок: официально давать ко..


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

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




Пост N: 411
Рейтинг: -1
ссылка на сообщение  Отправлено: 26.12.09 19:10. Заголовок: Morse ну это я знаю,..


Morse ну это я знаю, ну например такой способ что-юы бот ехал по пути.



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





Пост N: 371
Рейтинг: 5
ссылка на сообщение  Отправлено: 26.12.09 22:35. Заголовок: чисто пофантазировал..


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

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




Пост N: 414
Рейтинг: -1
ссылка на сообщение  Отправлено: 27.12.09 09:36. Заголовок: Artistik пишет: у т..


Artistik пишет:

 цитата:
у триггера есть возможность удалять объекты?


Есть!


Artistik вывод конечно хорошый, но для этого нужно невидимый бустер и если несколько ботов по разным путям?




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





Пост N: 372
Рейтинг: 5
ссылка на сообщение  Отправлено: 27.12.09 21:21. Заголовок: да хоть что то...и с..


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

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




Пост N: 492
Рейтинг: 26
ссылка на сообщение  Отправлено: 28.12.09 22:28. Заголовок: В готовящейся к выхо..


В готовящейся к выходу версии можно будет отдавать прямые команды ботам: ехать, подбирать, стрелять

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




Пост N: 224
Рейтинг: 12
ссылка на сообщение  Отправлено: 28.12.09 23:28. Заголовок: Insert пишет: В гот..


Insert пишет:

 цитата:
В готовящейся к выходу версии можно будет отдавать прямые команды ботам: ехать, подбирать, стрелять



подбирать и стрелять - понятно, в качестве аргумента будет даваться имя объекта, а вот ехать - это как? "триггеры" таки превратятся в "локации"?

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




Пост N: 493
Рейтинг: 26
ссылка на сообщение  Отправлено: 29.12.09 00:48. Заголовок: ai_march(player, x, ..


ai_march(player, x, y) -- просто указываем координаты точки куда ехать

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





Пост N: 51
Рейтинг: 0
ссылка на сообщение  Отправлено: 29.12.09 14:05. Заголовок: Как equip теперь пол..


Как equip теперь пользоваться???

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




Пост N: 496
Рейтинг: 26
ссылка на сообщение  Отправлено: 29.12.09 15:12. Заголовок: Артур так же как и р..


Артур так же как и раньше: equip(танк, предмет)

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





Пост N: 52
Рейтинг: 0
ссылка на сообщение  Отправлено: 29.12.09 16:16. Заголовок: А who теперь работае..


А who теперь работает?=) Или надо писать user.имя игрока?=)

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




Пост N: 420
Рейтинг: -1
ссылка на сообщение  Отправлено: 29.12.09 22:12. Заголовок: А можно поподробнее ..


А можно поподробнее о командах?



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



Не зарегистрирован
ссылка на сообщение  Отправлено: 29.12.09 23:15. Заголовок: Артур who работает. ..


Артур who работает. например, если хочешь убить того, кто наехал на триггер, просто пишешь damage(1000,who)

VIRUS
http://ru.zod.wikia.com/wiki/Function_ai_attack
http://ru.zod.wikia.com/wiki/Function_ai_march
http://ru.zod.wikia.com/wiki/Function_ai_pickup



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




Пост N: 423
Рейтинг: -1
ссылка на сообщение  Отправлено: 30.12.09 09:43. Заголовок: инс спасибо. ..


инс спасибо.





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





Пост N: 3
Рейтинг: 0
ссылка на сообщение  Отправлено: 30.12.09 10:01. Заголовок: Я попробовал создать..


Я попробовал создать свою кампанию. У меня вопросы: триггер предназначен в данном случае для экипировки танка под именем "1"; почему при попадании в зону триггера в командной строке пишет: объект под именем "1" не является танком.
И ещё почему при попадании в зону триггера, который должен дамагить на 1000000 танк, в командной строке пишет damage(100000, "tank") (null)

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




Пост N: 424
Рейтинг: -1
ссылка на сообщение  Отправлено: 30.12.09 10:29. Заголовок: vlad0dalv пишет: И ..


vlad0dalv пишет:

 цитата:
И ещё почему при попадании в зону триггера, который должен дамагить на 1000000 танк, в командной строке пишет damage(100000, "tank") (null)


Посмотри, инс пишет:

 цитата:
например, если хочешь убить того, кто наехал на триггер, просто пишешь damage(1000,who)




vlad0dalv пишет:

 цитата:
Я попробовал создать свою кампанию. У меня вопросы: триггер предназначен в данном случае для экипировки танка под именем "1"; почему при попадании в зону триггера в командной строке пишет: объект под именем "1" не является танком.


vlad0dalv почитай эту тему Morse уже кучи раз отвечал на этот вопрос.
Morse пишет:

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






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





Пост N: 55
Рейтинг: 0
ссылка на сообщение  Отправлено: 30.12.09 21:28. Заголовок: Insert вау!=) damage..


Insert вау!=) damage работает!=) Но equip нет=( почему он не работает???? =(

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




Пост N: 499
Рейтинг: 26
ссылка на сообщение  Отправлено: 30.12.09 22:53. Заголовок: Артур и правда ведь ..


Артур и правда ведь не работает...

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





Пост N: 15
Рейтинг: 0
ссылка на сообщение  Отправлено: 31.12.09 21:11. Заголовок: VIRUS пишет: VIRU..


VIRUS и vehname и name я заполнял: результат один и тот же, а за "who"- спасибо

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





Пост N: 30
Рейтинг: 1
ссылка на сообщение  Отправлено: 03.01.10 20:59. Заголовок: как сделать так, что..


как сделать так, чтобы при попадании в зону триггера менялась команда танка?
Я пробовал pset("1","team","2"), но пишет что для свойства 'team' необходимо целое значение 'value'.
'1'- name, и vehname, и nick
'team'- prop
'2'- value (целое число)
(Вроде всё правильно)

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




Пост N: 230
Рейтинг: 13
ссылка на сообщение  Отправлено: 03.01.10 23:25. Заголовок: двойку надо без кавы..


двойку надо без кавычек, иначе это не число а строка.
и в последней версии можно писать
1.team = 2


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





Пост N: 31
Рейтинг: 1
ссылка на сообщение  Отправлено: 04.01.10 09:58. Заголовок: Morse ага, понятно. ..


Morse нет, 1.team=2 не подходит, пишет: malform number near '1.team'
А если написать who.team=2 , то пишет: object 'tank' не имеет свойство 'team'

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





Пост N: 32
Рейтинг: 1
ссылка на сообщение  Отправлено: 04.01.10 10:56. Заголовок: Morse А в старой вер..


А почему ai_march не работает?
Я пишу ai_march("tank",32,32). Вообще ничего не пишет!

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




Пост N: 232
Рейтинг: 14
ссылка на сообщение  Отправлено: 04.01.10 22:46. Заголовок: vlad0dalv пишет: Mo..


vlad0dalv пишет:

 цитата:
Morse нет, 1.team=2 не подходит, пишет: malform number near '1.team'
А если написать who.team=2 , то пишет: object 'tank' не имеет свойство 'team'


да, точно, не совсем так.
короче если ты пишешь
 service("ai",{name="qwe",team=1})

то поменять команду ты можешь ажно двумя путями
1. классический
 pset("qwe","team",2)

2. более верный
 qwe_obj = object("qwe") 
qwe_obj.team = 2


ну и до кучи способ третий - самый верный
изначально писать
 user.qwe_obj=service("ai",{name="qwe",team=1})

и потом спокойно
 user.qwe_obj.team=2


команда боту у тебя не пашет потому что это команда боту, т.е. сервису, а не танку.

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




Пост N: 510
Рейтинг: 27
ссылка на сообщение  Отправлено: 05.01.10 00:36. Заголовок: Я добавлю, что в тре..


Я добавлю, что в третем способе даже не обязательно зававать имя сервиса, достаточно просто
user.qwe_obj=service("ai",{team=1})


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





Пост N: 56
Рейтинг: 1
ссылка на сообщение  Отправлено: 05.01.10 10:48. Заголовок: Morse пишет: команд..


Morse пишет:

 цитата:
команда боту у тебя не пашет потому что это команда боту, т.е. сервису, а не танку.


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

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




Пост N: 571
Рейтинг: 1
ссылка на сообщение  Отправлено: 05.01.10 11:13. Заголовок: vlad0dalv service(..


vlad0dalv
service("ai",{name="qwe",active=0})
ai_attack("qwe", "target1")



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





Пост N: 59
Рейтинг: 1
ссылка на сообщение  Отправлено: 05.01.10 11:22. Заголовок: VIRUS пишет: vlad0d..


VIRUS пишет:

 цитата:
vlad0dalv
service("ai",{name="qwe",active=0})
ai_attack("qwe", "target1")


Я знаю это, но потом что написать чтобы он к примеру пошёл c командой ai_march?

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




Пост N: 573
Рейтинг: 1
ссылка на сообщение  Отправлено: 05.01.10 11:25. Заголовок: vlad0dalv это точно ..


vlad0dalv это точно можно с помошью if или then



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




Пост N: 574
Рейтинг: 1
ссылка на сообщение  Отправлено: 05.01.10 11:34. Заголовок: в луа..


в луа



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





Пост 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 
Профиль Цитата Ответить
постоянный участник




Пост N: 759
Рейтинг: 1
ссылка на сообщение  Отправлено: 10.01.10 21:03. Заголовок: Артур можно, но не в..


Артур можно, но не все ети скрипты там работают



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




Пост N: 242
Рейтинг: 14
ссылка на сообщение  Отправлено: 10.01.10 22:38. Заголовок: а еще можно микроско..


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

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




Пост N: 765
Рейтинг: 1
ссылка на сообщение  Отправлено: 10.01.10 22:45. Заголовок: Morse или над макрос..


Morse или над макросами потрудиться



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





Пост N: 144
Рейтинг: 1
ссылка на сообщение  Отправлено: 15.01.10 20:04. Заголовок: reset() conf.sv_ti..


 
reset()

conf.sv_timelimit = 0
conf.sv_fraglimit = 0
conf.sv_nightmode = true
loadmap("campaign/Demo/maps/part1.map")

end

Почему это не действует?



Смотрите на этот юзербар... Он вас гипнотизирует...

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




Пост N: 243
Рейтинг: 14
ссылка на сообщение  Отправлено: 15.01.10 20:46. Заголовок: во-первых действует...


во-первых действует.
во-вторых end в конце не нужен.
и в-третьих, а что собственно требуется получить?

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





Пост N: 146
Рейтинг: 1
ссылка на сообщение  Отправлено: 16.01.10 13:54. Заголовок: просто чтоб файл зап..


просто чтоб файл запускал карту и всё



Смотрите на этот юзербар... Он вас гипнотизирует...

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




Пост N: 245
Рейтинг: 14
ссылка на сообщение  Отправлено: 16.01.10 14:21. Заголовок: Файл просто запускае..


Файл просто запускает карту и все. Только "end" в конце убери.

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





Пост N: 147
Рейтинг: 1
ссылка на сообщение  Отправлено: 16.01.10 14:46. Заголовок: спасибо..


спасибо



Смотрите на этот юзербар... Он вас гипнотизирует...

Я знаю про вас всё...
Спасибо: 0 
Профиль Цитата Ответить





Пост N: 105
Рейтинг: 2
ссылка на сообщение  Отправлено: 16.01.10 17:47. Заголовок: Morse пишет: скрипт..


Morse пишет:

 цитата:
скрипт инициализации


Morse, а где он???=)

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




Пост N: 800
Рейтинг: 1
ссылка на сообщение  Отправлено: 16.01.10 18:56. Заголовок: Артур в редакторе на..


Артур в редакторе нажми ф8



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





Пост N: 109
Рейтинг: 2
ссылка на сообщение  Отправлено: 16.01.10 20:35. Заголовок: VIRUS спс..


VIRUS спс

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





Пост N: 115
Рейтинг: 1
ссылка на сообщение  Отправлено: 17.01.10 19:06. Заголовок: Подскажите плиз. Хоч..


Подскажите плиз. Хочу сделать такукую фишку- выключатель), врезаешься в кирпич и включаются прожектора.
Можно ли такое сделать? И что тогда писать в строке on_damage у объекта, выполняющего роль выключателя?

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





Пост N: 116
Рейтинг: 1
ссылка на сообщение  Отправлено: 17.01.10 19:06. Заголовок: Подскажите плиз. Хоч..


И ещё, можно ли сделать так чтобы он и включал и выключал прожектора

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





Пост N: 166
Рейтинг: 1
ссылка на сообщение  Отправлено: 17.01.10 20:52. Заголовок: function user.onTogg..


Скрытый текст

Не знаю



Смотрите на этот юзербар... Он вас гипнотизирует...

Я знаю про вас всё...

НЕ ЗАХОДИТЕ СЮДА!!!
http://www.youtube.com/watch?v=XA7Xl5CtHRM
Спасибо: 0 
Профиль Цитата Ответить



Не зарегистрирован
ссылка на сообщение  Отправлено: 18.01.10 10:57. Заголовок: в папке scripts созд..


в папке scripts создаем файл lightToggle.lua
local function ToggleLight(light) 
if light.active == 0 then
light.active = 1
else
light.active = 0
end
end

function user.ToggleLights(...)
for k,v in ipairs({...}) do
ToggleLight(object(v))
end
end


В скрипт инициализации добавляем
dofile("scripts/lightToggle.lua")


В on_damage объекта пишем
user.ToggleLights("L1","L2","L3","L4");pset("W1","health",500)

где L1,L2,... - имена прожекторов, их может быть сколько угодно много, W1 имя самого объекта

Спасибо: 0 
Цитата Ответить





Пост N: 118
Рейтинг: 1
ссылка на сообщение  Отправлено: 18.01.10 11:39. Заголовок: хорошо, попробую..


хорошо, попробую

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




Пост N: 246
Рейтинг: 14
ссылка на сообщение  Отправлено: 18.01.10 14:47. Заголовок: теперь уже у меня ес..


теперь уже у меня есть вопросы)

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

2. а сработает ли такая штука:
 
local function ToggleLight(light)
light.active = !(light.active) -- или not(light.active), я уж не помню как там
end
3. какое-то странное применение переменнопараметрической функции... почему пары? в каком виде такие параметры представляются в функции? чему будет равняться, скажем, "a", если я напишу в этой функции
a={...}


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



Не зарегистрирован
ссылка на сообщение  Отправлено: 18.01.10 16:26. Заголовок: Morse конечно можно..


Morse
конечно можно запихать и в инит скрипт, только в одну строчку неудобно же.

Штука не сработает из-за особенностей обработки луой булевых значений. Дело в том, что луа воспринимает всего две вещи как false - собственно false и nil. Любая строка, включая пустую, таблица, все числа, включая 0, воспринимаются как true. Свойство active возвращает число, следовательно not active всегда будет false. Кроме того, нельзя неявно конвертировать буль обратно в число, то есть light.active = true даст ошибку.

пары потому, что в стандартной луа есть два удобных способа перебрать элементы таблицы - pairs & ipairs. Первое работает с любыми ключами, а второе только c целочисленными ключами до первого промежутка. Троеточие - это способ записи многих аргументов. Оно по сути работает как множественное значение, то есть можно записать local x,y=... и надеяться что число аргументов совпадет. Если троеточие сунуть в скобки {...} то сконструируется таблица, как если бы мы написали {x,y,13}. В такой таблице ключами будут следующие подряд целые числа, начиная с 1 - как нам того и хотелось для ipairs :)

Есть еще один менее удобный способ перебрать элементы с целыми ключами - использовать оператор # для определения длины массива.

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




Пост N: 247
Рейтинг: 14
ссылка на сообщение  Отправлено: 18.01.10 17:13. Заголовок: навеяно новая карта..


навеяно

новая карта: dm5_disco_edition!



качаем, переименовываем в rar распаковываем

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




Пост N: 814
Рейтинг: 1
ссылка на сообщение  Отправлено: 18.01.10 21:21. Заголовок: Morse Где?..


Morse Где?



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




Пост N: 1799
Рейтинг: 7
ссылка на сообщение  Отправлено: 18.01.10 21:34. Заголовок: Morse класс! VIRUS h..


Morse класс!
VIRUS




Не кури вот что будет - !

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: 522
Рейтинг: 27
ссылка на сообщение  Отправлено: 18.01.10 21:54. Заголовок: Morse прикольно! я к..


Morse прикольно! я кстати не догадался зафигачить многострочный текст в строку инициализации
кстати, массив user.lights={} можно так же сделать локальным local lights={} чтобы не замусоривать пространство имен

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




Пост N: 1801
Рейтинг: 7
ссылка на сообщение  Отправлено: 18.01.10 21:54. Заголовок: VIRUS сохраняешь кар..


VIRUS сохраняешь картинку и открываешь с помощью архиватора.




Не кури вот что будет - !

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: 523
Рейтинг: 27
ссылка на сообщение  Отправлено: 18.01.10 21:55. Заголовок: VIRUS сохрани картин..


VIRUS сохрани картинку на диске и переименуй jpg в rar

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




Пост N: 817
Рейтинг: 1
ссылка на сообщение  Отправлено: 18.01.10 22:14. Заголовок: slava98 Insert спаси..


slava98 Insert спасибо Morse кул, моя идея?



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





Пост N: 187
Рейтинг: 1
ссылка на сообщение  Отправлено: 19.01.10 22:26. Заголовок: Morse а как ты сдела..


Оффтоп: Morse а как ты сделал так, чтобы картинка содержала всю информацию?
local i=1 
user.lights = {}
repeat
user.lights=object("l"..i)
i = i + 1
until not exists("l"..i)

function user.disco()
for i,o in ipairs(user.lights) do
o.active=(math.random()>0.75) and 0 or 1
end
pushcmd(function() user.disco() end,1)
end

можешь объяснить, что означает каждое составляющие?



Смотрите на этот юзербар... Он вас гипнотизирует...

Я знаю про вас всё...

НЕ ЗАХОДИТЕ СЮДА!!!
http://www.youtube.com/watch?v=XA7Xl5CtHRM
Спасибо: 0 
Профиль Цитата Ответить
постоянный участник




Пост N: 248
Рейтинг: 14
ссылка на сообщение  Отправлено: 19.01.10 23:07. Заголовок: по строчкам задаем ..


по строчкам

задаем переменную i
задаем пустой "массив" (или что тут под ним понимают)
входим в цикл с постусловием
тут у тебя ошибка. i-тому элементу массива мы присваиваем ссылку на объект с соотв. именем
инкремент
если объекты с заданными именами кончились, выходим из цикла

объявляем функцию
начинаем итерацию по элементам массива
если рандомное число больше 0.75 свойству active присваиваем 0, иначе 1
конец цикла
рекурсивно закидываем функцию в очередь
конец функции

вызываем функцию в первый раз


всем фонарям на карте были вручную даны имена (от l1 и далее по порядку). это конечно неудобно, но другого варианта нет (по крайней мере пока)

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





Пост N: 124
Рейтинг: 1
ссылка на сообщение  Отправлено: 20.01.10 13:29. Заголовок: вопрос по скрипту: я..


вопрос по скрипту:
я хочу чтобы при уничтожение какого-либо объекта игра становилась на паузу и писалось сообщение, вот я прописываю в
on_destroy такую фразу freeze(true); message("Команда хХх выиграла"). Уничтожаю объект и ничего не происходит, что я делаю не так
З.Ы. у меня версия 1:48

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





Пост N: 188
Рейтинг: 1
ссылка на сообщение  Отправлено: 20.01.10 18:27. Заголовок: Morse Спс..


Morse Спс



Смотрите на этот юзербар... Он вас гипнотизирует...

Я знаю про вас всё...

НЕ ЗАХОДИТЕ СЮДА!!!
http://www.youtube.com/watch?v=XA7Xl5CtHRM
Спасибо: 0 
Профиль Цитата Ответить





Пост N: 192
Рейтинг: 1
ссылка на сообщение  Отправлено: 20.01.10 18:59. Заголовок: Morse а ты писал наз..


Morse а ты писал названия с
L0
(с нуля)?



Смотрите на этот юзербар... Он вас гипнотизирует...

Я знаю про вас всё...

НЕ ЗАХОДИТЕ СЮДА!!!
http://www.youtube.com/watch?v=XA7Xl5CtHRM
Спасибо: 0 
Профиль Цитата Ответить
постоянный участник




Пост N: 249
Рейтинг: 14
ссылка на сообщение  Отправлено: 20.01.10 21:22. Заголовок: во-первых l - малень..


во-первых l - маленькое, не L, а во-вторых, у меня - нет с единицы. а вообще без разницы, хоть с -10, только переменную i надо будет нужным числом инициализировать. и я не уверен как с таким вывертом ipairs подружится...

и кстати если уж на то пошло то и l можно на L заменить, только тогда уж везде.

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





Пост N: 125
Рейтинг: 1
ссылка на сообщение  Отправлено: 20.01.10 21:44. Заголовок: И ещё подскажите пож..


И ещё подскажите пожалуйста. В версии 1.49-1.51 есть объект- декорация. В его свойствах под его текстуру можно подогнать любой файл из папки textures(вроде бы как), а как сделать чтобы в декорацию можно было загнать простую картинку, ну например эту

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




Пост N: 250
Рейтинг: 14
ссылка на сообщение  Отправлено: 20.01.10 22:14. Заголовок: картинку надо перегн..


картинку надо перегнать в 32-х битный (обязательно) tga, потом написать для этой картинки lua файл с извращенным синтаксисом (пример - в любой крупной кампании или в файле textures.lua), а потом на этот луа-файл кастануть loadtheme, после этого он появится в списке текстур

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



Не зарегистрирован
ссылка на сообщение  Отправлено: 21.01.10 10:52. Заголовок: А лучше этот луа-фай..


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

Спасибо: 0 
Цитата Ответить



Не зарегистрирован
ссылка на сообщение  Отправлено: 21.01.10 21:07. Заголовок: hdr{ attr ..


Скрытый текст

почему это не получается?

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




Пост N: 821
Рейтинг: 1
ссылка на сообщение  Отправлено: 21.01.10 22:37. Заголовок: vlad0dalv ты супер с..


Оффтоп: vlad0dalv ты супер скрипмейкер, откуда у тебя столько времени?



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




Пост N: 251
Рейтинг: 14
ссылка на сообщение  Отправлено: 22.01.10 01:33. Заголовок: опиши что именно не ..


опиши что именно не получается, и не печатай скрипты таким вырвиглазным методом.

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

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



Не зарегистрирован
ссылка на сообщение  Отправлено: 22.01.10 20:37. Заголовок: я пишу в скрипте ини..


я пишу в скрипте инициализации
function explosion(x, y, times, spd)  
local times = times or 1
local spd = spd or 0
for i=0, times-1 do
pushcmd(function() actor("user_object", x, y, {name="exploder"});
damage(100, "exploder") end, 0+i/100*spd)
end
end

function bombard(x1, y1, x2, y2, times, spd, explo, explospd)
times = times or 24
spd = spd or 15
explo = explo or 1
explospd = explospd or 0
local pixx = (x2-x1)/times
local pixy = (y2-y1)/times
for i=0, times-1 do
pushcmd(function() explosion(x1+pixx*i, y1+pixy*i, explo, explospd) end, 0+i/100*spd)
end
end

function dangerzone(x1, y1, x2, y2, time, spd, islinear, linspd)
time = time or 500
spd = spd or 500
islinear = islinear or 0
linspd = linspd or math.random(5, 20)
if islinear==0 then
local i=time/spd
for q=0, i-1 do
pushcmd(function()
rx = math.random(x1*32, x2*32)
ry = math.random(y1*32, y2*32)
explosion(rx, ry) end, spd*q/100)
end
end
if islinear==1 then
local i=time/spd
for q=0, i-1 do
pushcmd(function()
local rx1 = math.random(x1*32, x2*32)
local rx2 = math.random(x1*32, x2*32)
local ry1 = math.random(y1*32, y2*32)
local ry2 = math.random(y1*32, y2*32)
bombard(rx1, rx2, ry1, ry2, linspd, spd) end, spd*q/100)
end
end
end

Как ты с диско и при нахождении на триггер выполняется действие с помощью этих функций: взрывается пол стадии

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




Пост N: 1324
Рейтинг: 14
ссылка на сообщение  Отправлено: 22.01.10 21:00. Заголовок: "Человек" и ..


"Человек" и "vlad0dalv", сидящие с одного IP: не используйте никаких форматирующих тегов. Ваши сообщения после премодерации приходят в нечитабельное состояние.

Что именно не работает? Триггер? Тогда поэкспериментируй с pushcmd. Пол стадии(я так понимаю, пол в значении "пол", а не "половина"?) взрывается по всей площади в один момент? Проверь, выставил ли ты все параметры в функции dangerzone, а time не равно 0.

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





Пост N: 132
Рейтинг: 1
ссылка на сообщение  Отправлено: 22.01.10 21:00. Заголовок: я хочу чтобы при уни..


я хочу чтобы при уничтожение какого-либо объекта игра становилась на паузу и писалось сообщение, вот я прописываю в
on_destroy такую фразу freeze(true); message("Команда хХх выиграла"). Уничтожаю объект и ничего не происходит, что я делаю не так
З.Ы. у меня версия 1:48


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




Пост N: 1325
Рейтинг: 14
ссылка на сообщение  Отправлено: 22.01.10 21:05. Заголовок: http://ru.zod.wikia...


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

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





Пост N: 588
Рейтинг: 2
ссылка на сообщение  Отправлено: 25.01.10 22:56. Заголовок: А работает ли прикре..


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


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



Не зарегистрирован
ссылка на сообщение  Отправлено: 26.01.10 08:55. Заголовок: прикрепление бустера..


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

Спасибо: 0 
Цитата Ответить





Пост N: 590
Рейтинг: 2
ссылка на сообщение  Отправлено: 26.01.10 14:44. Заголовок: спс..


спс


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





Пост N: 139
Рейтинг: 2
ссылка на сообщение  Отправлено: 29.01.10 21:57. Заголовок: Незнал куда написать..


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

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




Пост N: 394
Рейтинг: 10
ссылка на сообщение  Отправлено: 30.01.10 09:16. Заголовок: перетащи свою карту ..


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

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





Пост N: 140
Рейтинг: 2
ссылка на сообщение  Отправлено: 30.01.10 12:22. Заголовок: переношу эту картинк..


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

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



Пост N: 1
Рейтинг: 0
ссылка на сообщение  Отправлено: 22.02.10 13:09. Заголовок: Как создать кампанию..


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

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




Пост N: 254
Рейтинг: 14
ссылка на сообщение  Отправлено: 22.02.10 13:18. Заголовок: Dark-FoX пишет: Что..


Dark-FoX пишет:

 цитата:
Что нужно сделать?



для начала - форум почитать. хотя бы чуть-чуть

http://zod.borda.ru/?1-6-0-00000036-000-0-0-1237968230

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




Пост N: 1679
Рейтинг: 4
ссылка на сообщение  Отправлено: 23.07.10 20:16. Заголовок: А можно в новой верс..


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


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




Пост N: 1693
Рейтинг: 4
ссылка на сообщение  Отправлено: 24.07.10 18:04. Заголовок: Так например functio..


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


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




Пост N: 332
Рейтинг: 7
ссылка на сообщение  Отправлено: 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 который атаковал. А от него уже можно плясать дальше (вообщем в примере найдете).
в редакторе НЕ обращаем внимания на Особый динамический Объект, он если и появится у Инса то будет реализован по другому, на основе ящика, чтобы боты его осязали, да и так правильней.
Мультиплеер отключен т.к. в текущем состоянии у него нет будущего, его надо переделывать под корень.

http://files.vhabare.ru/files/581_sv1qn/tank_.rar<\/u><\/a>

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




Пост N: 1702
Рейтинг: 4
ссылка на сообщение  Отправлено: 25.07.10 12:42. Заголовок: Anti_Killer это твоя..


Anti_Killer это твоя профиксенная? (старая или новая)

Я вот не понимаю как сделать двигающеюся стену


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




Пост N: 333
Рейтинг: 7
ссылка на сообщение  Отправлено: 25.07.10 13:22. Заголовок: Anti_Killer это тво..



 цитата:

Anti_Killer это твоя профиксенная? (старая или новая)

Я вот не понимаю как сделать двигающеюся стену

да. То что было у меня Исправления относительно той , которую я кидал для проверки мультиплеера и возможно тебе на мейл.
То что стены двигать Morse пример выкладывал http://tankzod.do.am/load/2-1-0-15<\/u><\/a> , там тупо убить старый объект, создать новый но чуть в сторону, на этом и основано , но это геморно немножко

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




Пост N: 1704
Рейтинг: 4
ссылка на сообщение  Отправлено: 25.07.10 13:26. Заголовок: Но это можно делать ..


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


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




Пост N: 334
Рейтинг: 7
ссылка на сообщение  Отправлено: 25.07.10 13:34. Заголовок: Но это можно делать ..



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

там все на таймерах основано. Уменьшаеш время таймера, объект телепортируется из места в место быстрее.

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




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




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




Пост N: 335
Рейтинг: 7
ссылка на сообщение  Отправлено: 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. Посмотри через редактор что и как расставлено и какие кординаты имеет. Последний параметр это с какой стороны ведем отсчет, слева или с права. Правда не понял относительно чего лево и право, но методом тыка понять можно :)

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




Пост N: 1706
Рейтинг: 4
ссылка на сообщение  Отправлено: 26.07.10 13:03. Заголовок: -- Move reset() co..



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


Не работает



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




Пост N: 337
Рейтинг: 7
ссылка на сообщение  Отправлено: 26.07.10 13:31. Заголовок: Не работает ты по ад..



 цитата:
Не работает

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

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




Пост N: 1708
Рейтинг: 4
ссылка на сообщение  Отправлено: 26.07.10 13:44. Заголовок: Я так и не понял как..


Я так и не понял как оно работает. Вот как сделать стенку передвигающеюся по наезду на тригер?


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




Пост N: 339
Рейтинг: 7
ссылка на сообщение  Отправлено: 26.07.10 15:06. Заголовок: Пособирал сейчас. В ..


Пособирал сейчас. В общем например

 цитата:

user.toggle1Close=1
user.toggle1Active=0

conf.sv_timelimit = 0
conf.sv_fraglimit = 0
loadmap("-----------------------------------Путь до мапы---------------------------------")
service("player_local", {name="player", nick="tester",vehname="veh1", class="default"})

actor("trigger",272 + 32, 32, {name="t", on_enter="user.onOpen()"})
for i = 1, 10 do
pushcmd(function() actor("wall_concrete", 272, i*32, {name="wall_n"..i}) end, 1 + 0.1 * i)
end

function user.onOpen()
if (user.toggle1Active==0) then
user.toggle1Active=1
if (user.toggle1Close == 1) then
user.moveObjectsY(9,2,30,"wall_n",1,10,1);
user.toggle1Close=0;
else
user.moveObjectsY(9,30,2,"wall_n",1,10,1);
user.toggle1Close=1;
end
pushcmd(function() user.toggle1Active=0 end,3)
end
end





создаст стену из 10 блоков в самом начале любой мапы. И тригер справа от первого блока этой стены , сразу на соседней клетке, по наезду на который стена проедит до 30 клетки. Еще раз заедишь и она начнет двигаться обратно. НО Так же тебе надо скопировать все функции Morse начиная строкой "--------БИБЛИОТЕКА ФУНКЦИЙ-by Morse" и до "---применяем к первой карте---"

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




Пост N: 2749
Рейтинг: 9
ссылка на сообщение  Отправлено: 03.08.10 12:39. Заголовок: А как переместить бе..


А как переместить бетон с 42.14 на 51.14? Я пробовал.
user.moveObjectsX(42,14,51,"p2",42,51,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: 262
Рейтинг: 15
ссылка на сообщение  Отправлено: 03.08.10 13:11. Заголовок: Способ создания-унич..


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

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




Пост N: 1726
Рейтинг: 4
ссылка на сообщение  Отправлено: 03.08.10 13:14. Заголовок: Morse о нематериален..


Morse о нематериален. Трясти не сможем, но мы со Славой уговорим его.


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




Пост N: 2750
Рейтинг: 9
ссылка на сообщение  Отправлено: 03.08.10 13:16. Заголовок: VIRUS пишет: Трясти..


VIRUS пишет:

 цитата:
Трясти не сможем, но мы со Славой уговорим его.


Да, наверное .




Если будешь ты курить,
Пиво, водку, коньяк пить,
То думать голова не будет,
Семья, друзья тебя забудут.
Будешь ты плохим,
Станешь ты таким -

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: 2754
Рейтинг: 9
ссылка на сообщение  Отправлено: 03.08.10 20:19. Заголовок: 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: 1730
Рейтинг: 4
ссылка на сообщение  Отправлено: 03.08.10 22:03. Заголовок: slava98 :sm15: ..


slava98


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




Пост N: 263
Рейтинг: 15
ссылка на сообщение  Отправлено: 04.08.10 00:52. Заголовок: мобильная "тюрел..


мобильная "тюрель" у тебя не выйдет - она не сможет стрелять. а разобраться можно в чем угодно, даже в женщинах.

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




Пост N: 341
Рейтинг: 8
ссылка на сообщение  Отправлено: 04.08.10 04:35. Заголовок: Способ создания-унич..



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

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

Сейчас доделываю одну компанию. После неё займусь )




-----добавил позже--------

Все положение дел описал в подфоруме компаний

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




Пост N: 1737
Рейтинг: 4
ссылка на сообщение  Отправлено: 05.08.10 13:29. Заголовок: Anti_Killer У меня в..


Anti_Killer У меня вышло их сдвинуть!


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




Пост N: 1752
Рейтинг: 4
ссылка на сообщение  Отправлено: 06.08.10 14:45. Заголовок: У кого осталась Mkma..


У кого осталась Mkmap а то на сайтах не рабочие?


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




Пост N: 353
Рейтинг: 8
ссылка на сообщение  Отправлено: 06.08.10 15:15. Заголовок: забыл про официальны..


забыл про официальный сайт ? ) http://ins-games.narod.ru/download.htm<\/u><\/a>

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




Пост N: 2780
Рейтинг: 9
ссылка на сообщение  Отправлено: 06.08.10 17:59. Заголовок: VIRUS http://tankzod..




Если будешь ты курить,
Пиво, водку, коньяк пить,
То думать голова не будет,
Семья, друзья тебя забудут.
Будешь ты плохим,
Станешь ты таким -

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: 1760
Рейтинг: 4
ссылка на сообщение  Отправлено: 12.08.10 20:52. Заголовок: loadmap(user.campFma..


loadmap(user.campFmaps.."map01.map") 
service( "player_local", {
name="player1",
skin="yellow",
team=1,
on_die="user.OnDiePlayer()",
class="default",
nick="Player1" } )
if user.boo = 5 then
message("Вы собрали все бустеры.")
end

--------------------------

user.boo=0


Ошибка в 9-ой строке.


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




Пост N: 2798
Рейтинг: 9
ссылка на сообщение  Отправлено: 12.08.10 21:03. Заголовок: VIRUS пишет: if use..


VIRUS пишет:

 цитата:
if user.boo = 5 then
message("Вы собрали все бустеры.")
end


Короче, вот здесь. А может надо поставить function user....




Если будешь ты курить,
Пиво, водку, коньяк пить,
То думать голова не будет,
Семья, друзья тебя забудут.
Будешь ты плохим,
Станешь ты таким -

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: 265
Рейтинг: 15
ссылка на сообщение  Отправлено: 12.08.10 22:42. Заголовок: черт, я с этим питон..


черт, я с этим питоном луа уже забыл. попробуй

if (user.boo == 5) then ...

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




Пост N: 357
Рейтинг: 8
ссылка на сообщение  Отправлено: 13.08.10 09:54. Заголовок: можно и без скобок. ..


можно и без скобок. Главное == не путать с =

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




Пост N: 1774
Рейтинг: 4
ссылка на сообщение  Отправлено: 17.08.10 10:50. Заголовок: pushcmd(function()se..


function  user.LevelChangeBox(n) 
if n~=nil then
if n==1 then botreduce=botreduce-1
elseif n==2 then botreduce=botreduce+1
end
end
local levelname;
if botreduce==1 then levelname="Средний"
elseif botreduce==2 then levelname="Ниже среднего"
elseif botreduce==3 then levelname="Легкий"
elseif botreduce==4 then levelname="Сверх легкий"
elseif botreduce==5 then levelname="для дошколят"
elseif botreduce==0 then levelname="Сложный"
elseif botreduce==-1 then levelname="Аццки сложный"
elseif botreduce==-2 then levelname="Непобедимый"
elseif botreduce<-2 then levelname="Чтото нереальное"
elseif botreduce>5 then levelname="еще легче =/"
end
local low = botreduce*100
if n ~= 3 then
service("msgbox", {text="Настройка уровня сложности\n Вы сейчас играете на уровне сложности \n\n\n\n ["..levelname.."]\n\n\n\n",on_select="user.LevelChangeBox(n)",option1="Повысить",option2="Понизить",option3="Закрыть"})
for n = 1,3 do
if exists("enemy"..n) then
local bot = object("enemy"..n)
if user.cpower==nil or user.cmax_speed==nil or user.cpower==0 or user.cmax_speed==0 then
user.cpower=classes[bot.class].power[1]
user.cmax_speed=classes[bot.class].max_speed[1]
end
classes[bot.class].max_speed[1]=user.cmax_speed-low
classes[bot.class].power[1] = user.cpower-low
bot.class=bot.class
end
end
end

Как разобратся?


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




Пост N: 364
Рейтинг: 8
ссылка на сообщение  Отправлено: 17.08.10 11:53. Заголовок: Как разобратся? в че..



 цитата:
Как разобратся?

в чем проблема конкретно ? Функция создает диалоговое окно в котором в зависимости от значения переменной botreduce выводит разные сообщения . Все остальное это применение класса боту.

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




Пост N: 1776
Рейтинг: 4
ссылка на сообщение  Отправлено: 17.08.10 12:24. Заголовок: Anti_Killer у меня к..


Anti_Killer у меня классы как их вставить. Я это не понимаю


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




Пост N: 2815
Рейтинг: 9
ссылка на сообщение  Отправлено: 17.08.10 12:27. Заголовок: Ставь функции. К при..


Ставь функции. К примеру я так пробую.Одна функция определённые классы запускает.





Если будешь ты курить,
Пиво, водку, коньяк пить,
То думать голова не будет,
Семья, друзья тебя забудут.
Будешь ты плохим,
Станешь ты таким -

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: 365
Рейтинг: 8
ссылка на сообщение  Отправлено: 17.08.10 12:44. Заголовок: Anti_Killer у меня к..



 цитата:
Anti_Killer у меня классы как их вставить. Я это не понимаю

у меня все классы в самом начале скрипта идут , там где написано МОИ КЛАССЫ. А потом я их уже применяю когда хочу и где хочу

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




Пост N: 1779
Рейтинг: 4
ссылка на сообщение  Отправлено: 17.08.10 12:48. Заголовок: У меня тоже. Но как ..


У меня тоже. Но как их в скрипт вставить? Чтобы просто у всех игроков был класс в состоянии от левела. А как сделать что бы танк постоянно ехал, а игрок только поворачивал?


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




Пост N: 2817
Рейтинг: 9
ссылка на сообщение  Отправлено: 17.08.10 12:59. Заголовок: VIRUS пишет: У меня..


VIRUS пишет:

 цитата:
У меня тоже. Но как их в скрипт вставить? Чтобы просто у всех игроков был класс в состоянии от левела.


Честно говоря я тебе это и говорил.
Я писал скрипт, но не дописал.

 цитата:
function user.LevelChangeBox(n)
botreduce = botreduce or 3 -- По умолчанию Нормальная сложность
if n==1 then botreduce=botreduce-1 -- Если нажали "Понизить"- понижается
elseif n==2 then botreduce=botreduce+1 --Аналогично))
end -- Честно, не знаю, сколько надо эндов
end
local levelname -- levelname локальный, а не глобальный
if botreduce==0 then botreduce=botreduce+1 -- Если сложность ниже 1 возвращается на 1
elseif botreduce==1 then levelname="Кошмар"
elseif botreduce==2 then levelname="Сложный"
elseif botreduce==3 then levelname="Нормальный"
elseif botreduce==4 then levelname="Лёгкий"
elseif botreduce==5 then botreduce=botreduce-1 -- Если выше, то на 5
end
service("msgbox", {text="Настройка уровня сложности\n Уровень сложности: \n\n\n\n ["..levelname.."]\n\n\n\n",on_select="user.LevelChangeBox(n)",option1="Повысить",option2="Понизить",option3="Закрыть"}) -- Ну тут разбираться не обязательно, наверное))
if levelname=="Лёгкий" then user.easy() -- Если сложнось лёгкая переходит на user.easy() Там хранятся классы для лёгкого режима
elseif levelname=="Нормальный" then user.normal()
elseif levelname=="Сложный" then user.hard()
elseif levelname=="Кошмар" then user.nichtmare() -- =)
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: 1780
Рейтинг: 4
ссылка на сообщение  Отправлено: 17.08.10 13:09. Заголовок: slava98 Понял..


slava98 Понял


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




Пост N: 2819
Рейтинг: 9
ссылка на сообщение  Отправлено: 17.08.10 13:10. Заголовок: Хорошо, только скрип..


Хорошо, только скрипт, кажется, не работает. Anti_Killer, если что-то не так скажи, пожалуйста.




Если будешь ты курить,
Пиво, водку, коньяк пить,
То думать голова не будет,
Семья, друзья тебя забудут.
Будешь ты плохим,
Станешь ты таким -

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: 366
Рейтинг: 8
ссылка на сообщение  Отправлено: 17.08.10 13:16. Заголовок: У меня тоже. Но как ..



 цитата:
У меня тоже. Но как их в скрипт вставить? Чтобы просто у всех игроков был класс в состоянии от левела


для нужного бота если при создании то задаешь свой класс в параметре class для ai \ player_local
а если потом то какой то ф-цией то вылавливаешь его как объект и меняеш что надо
local bot = object("name_of_ai_service")
bot.class="название_твоего_класса"


 цитата:
А как сделать что бы танк постоянно ехал, а игрок только поворачивал?

похоже что никак, но нет ничего невозможного, нужно просто найти подходящий модуль.
http://lua-users.org/wiki/LibrariesAndBindings<\/u><\/a> Здесь есть всякие
например [libkeybinder] (5.1) - Global keyboard shortcuts for GTK+ Applications. похоже подойдет, похоже можно с помощью него "зажать" любую клавишу, но я не пробовал добавлять дополнительные модули и не знаю работают ли они в танке.

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




Пост N: 367
Рейтинг: 8
ссылка на сообщение  Отправлено: 17.08.10 13:29. Заголовок: function user.LevelC..



 цитата:
function user.LevelChangeBox(n)
botreduce = botreduce or 3
if n==1 then botreduce=botreduce-1 -- Если нажали "Понизить"- понижается
elseif n==2 then botreduce=botreduce+1 --Аналогично))
end -- Честно, не знаю, сколько надо эндов
end --лишний end закрываем только конструкцию if then elseif then end, если бы было if then else if then end end то было бы 2 end'a
local levelname -- levelname локальный, а не глобальный
if botreduce==0 then botreduce=botreduce+1 -- Если сложность ниже 1 возвращается на 1
elseif botreduce==1 then levelname="Кошмар"
elseif botreduce==2 then levelname="Сложный"
elseif botreduce==3 then levelname="Нормальный"
elseif botreduce==4 then levelname="Лёгкий"
elseif botreduce==5 then botreduce=botreduce-1 -- Если выше, то на 5
end
service("msgbox", {text="Настройка уровня сложности\n Уровень сложности: \n\n\n\n ["..levelname.."]\n\n\n\n",on_select="user.LevelChangeBox(n)",option1="Повысить",option2="Понизить",option3="Закрыть"}) -- Ну тут разбираться не обязательно, наверное))
if levelname=="Лёгкий" then user.easy() -- Если сложнось лёгкая переходит на user.easy() Там хранятся классы для лёгкого режима
elseif levelname=="Нормальный" then user.normal()
elseif levelname=="Сложный" then user.hard()
elseif levelname=="Кошмар" then user.nichtmare() -- =)
end

end -- и нужно добавить этот end




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




Пост N: 2821
Рейтинг: 9
ссылка на сообщение  Отправлено: 17.08.10 15:29. Заголовок: Anti_Killer пишет: ..


Anti_Killer пишет:

 цитата:
похоже что никак, но нет ничего невозможного, нужно просто найти подходящий модуль.
http://lua-users.org/wiki/LibrariesAndBindings<\/u><\/a> Здесь есть всякие
например [libkeybinder] (5.1) - Global keyboard shortcuts for GTK+ Applications. похоже подойдет, похоже можно с помощью него "зажать" любую клавишу, но я не пробовал добавлять дополнительные модули и не знаю работают ли они в танке.


Это надо в коде рыться или в файле луа?
Кто-нибудь объясните мне, зачем нужны pget и position . А то в Танкопедии ничего непонятно. Как они работают, мне понятно, но непонятно зачем.




Если будешь ты курить,
Пиво, водку, коньяк пить,
То думать голова не будет,
Семья, друзья тебя забудут.
Будешь ты плохим,
Станешь ты таким -

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: 369
Рейтинг: 8
ссылка на сообщение  Отправлено: 18.08.10 05:33. Заголовок: Это надо в коде рыть..



 цитата:
Это надо в коде рыться или в файле луа?


Сам пока незнаю как модули подключать. Но когда подключ
так там и так в примерах все приведено , врятли можно лучше объяснить. pget раньше (да и сейчас при необходимости) использовался для получения параметра объекта (health, class, on_die и т.д. все параметры которые видны в редакторе при редактировании объекта)
вот как получали параметр объекта раньше

 цитата:

actor("pu_booster", 42, 128, {name="boo", respawn_time=10})
print( pget("boo", "respawn_time") )


а вот как можно получить сейчас

 цитата:

user.object=actor("pu_booster", 42, 128, {respawn_time=10})
print(user.object.respawn_time)



в обоих случаях выведет 10

position выдает координаты объекта. На этом принципе основано перемещение объекта. Берем старые координаты-> прибавляем к ним шаг и получаем новые координаты-> двигаем объект на новые координаты-> получаем движение

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




Пост N: 1781
Рейтинг: 4
ссылка на сообщение  Отправлено: 18.08.10 08:36. Заголовок: Anti_Killer пишет: ..


Anti_Killer пишет:

 цитата:
function user.LevelChangeBox(n)
botreduce = botreduce or 3
if n==1 then botreduce=botreduce-1 -- Если нажали "Понизить"- понижается
elseif n==2 then botreduce=botreduce+1 --Аналогично))
end -- Честно, не знаю, сколько надо эндов
end --лишний end закрываем только конструкцию if then elseif then end, если бы было if then else if then end end то было бы 2 end'a
local levelname -- levelname локальный, а не глобальный
if botreduce==0 then botreduce=botreduce+1 -- Если сложность ниже 1 возвращается на 1
elseif botreduce==1 then levelname="Кошмар"
elseif botreduce==2 then levelname="Сложный"
elseif botreduce==3 then levelname="Нормальный"
elseif botreduce==4 then levelname="Лёгкий"
elseif botreduce==5 then botreduce=botreduce-1 -- Если выше, то на 5
end
service("msgbox", {text="Настройка уровня сложности\n Уровень сложности: \n\n\n\n ["..levelname.."]\n\n\n\n",on_select="user.LevelChangeBox(n)",option1="Повысить",option2="Понизить",option3="Закрыть"}) -- Ну тут разбираться не обязательно, наверное))
if levelname=="Лёгкий" then user.easy() -- Если сложнось лёгкая переходит на user.easy() Там хранятся классы для лёгкого режима
elseif levelname=="Нормальный" then user.normal()
elseif levelname=="Сложный" then user.hard()
elseif levelname=="Кошмар" then user.nichtmare() -- =)
end

end -- и нужно добавить этот end



Тоесть это должно работать.


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




Пост N: 1783
Рейтинг: 4
ссылка на сообщение  Отправлено: 18.08.10 09:37. Заголовок: Вот. Все что я вписа..


Вот. Все что я вписал работает, но есть проблема с менюшкой.
Вот я делаю функцию менюшки:

 цитата:
function user.Menu(n)
if n==1 then user.Game()
elseif n==2 then user.Options()
elseif n==3 then user.About()
end
end


Вызываю её:

 цитата:
service("menu",{title="gui_splash",name="menu",names="Старт|Настройки|О компании",on_select="user.Menu(n)"})


При нажатии на кнопку "Настройки" должна открыться меню настроек.

 цитата:
function user.Options()
service("menu",{title="gui_splash",name="menu",names="Сложность|Режим||Назад",on_select="user.MenuOpt(n)"}) end
end


У нее есть функции, но сама меню не работает:

 цитата:
function user.MenuOpt(n)
if n==1 then user.ChangeDifficult()
elseif n==2 then user.Rm()
elseif n==3 then user.Back()
end
end


Вот ошибка:

 цитата:
[string "campaign/Snake.lua"]:51: attempt to call field 'Options' (a nil value)




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




Пост N: 370
Рейтинг: 8
ссылка на сообщение  Отправлено: 18.08.10 10:52. Заголовок: незнаю почему ошибку..


незнаю почему ошибку именно ту выдает но для начала исправь хотябы

 цитата:
function user.Options()
service("menu",{title="gui_splash",name="menu",names="Сложность|Режим|--[[лишний слеш]]--
|Назад",on_select="user.MenuOpt(n)"}) end --лишний end
end


и надо не создавать новое меню , а использовать уже созданное как у меня в скриптах.
т.е. user.menu = service....
и далее если что то меняем , например переменную names ...то так и пишем

 цитата:

function user.Options()
user.menu.names="blablabla"
user.menu.open=1
user.menu.open=1
- это обновит список опций меню . Можно вынести в отдельную функцию типо user.refresh()
end





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




Пост N: 1787
Рейтинг: 4
ссылка на сообщение  Отправлено: 18.08.10 11:02. Заголовок: Anti_Killer я просто..


Anti_Killer я просто не понимаю как устроены твои скрипты. А лишний слеш для того что бы сделать пробел.

Добавлено позже:
Как я понял мы не создаем еще одно а изменяем имена и функции прошлого? Но как?

Еще позже:
Разобрался! Наверно...


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




Пост N: 371
Рейтинг: 8
ссылка на сообщение  Отправлено: 18.08.10 11:17. Заголовок: Как я понял мы не со..



 цитата:
Как я понял мы не создаем еще одно а изменяем имена и функции прошлого? Но как?


лишний слеш обработается как отдельная кнопка
service возвращает ссылку на наш объект, мы приравниваем её нашей глобальной переменной user.menu и через нее работаем с объектом в дальнейшем . Просто сервис menu в отличии от messageboxа сам не удаляется пока не перезагрузишь карту (тебе же в любой момент времени может понадобиться меню по нажатию ESC, по этому автоудаление бессмысленно)

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




Пост N: 1790
Рейтинг: 4
ссылка на сообщение  Отправлено: 18.08.10 11:22. Заголовок: У меня теперь эта ош..


У меня теперь эта ошибка при нажатии на Настройки
[string "campaign/Snake.lua"]:77: attempt to index field 'menuservice' (a nil value)

Вот как выглядит функция
function user.Options() 
user.menuservice.names="Сложность|Режим|Назад"
user.menuservice.on_select="user.MenuOpt(n)"
user.Refresh()
--для обновления меню
if n == nil then return end
if n ==1 then user.ChangeDifficult()
elseif n == 2 then user.Rm()
else user.menuservice.names="Старт|Настройки|О кампании"
user.menuservice.on_select="user.Menu(n)"
user.Refresh()
end
end




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




Пост N: 372
Рейтинг: 8
ссылка на сообщение  Отправлено: 18.08.10 11:25. Заголовок: приравняе service та..


приравняй service там где ты меню создаешь к user.menuservice

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




Пост N: 1791
Рейтинг: 4
ссылка на сообщение  Отправлено: 18.08.10 11:45. Заголовок: function user.Option..


function user.Options()  
user.menuservice.names="Сложность|Режим|Назад"
user.menuservice.on_select="user.MenuOpt(n)"
user.Refresh()
--для обновления меню
if n == nil then return end
if n ==1 then user.ChangeDifficult()
elseif n == 2 then user.Rm()
else user.menuservice.names="Старт|Настройки|О кампании"
user.menuservice.on_select="user.Menu(n)"
user.Refresh()
end
end


У меня здесь не работает кнопка "Назад"

function user.ChangeDifficult(n) 
botreduce = botreduce or 2 -- По умолчанию средняя сложность
if n==1 then botreduce=botreduce-1 -- Если нажали "Понизить"- понижается
elseif n==2 then botreduce=botreduce+1 --Аналогично
end
local levelname -- levelname локальный, а не глобальный
if botreduce==0 then botreduce=botreduce+1 -- Если сложность ниже 1 возвращается на 1
elseif botreduce==1 then levelname="Лёгкий"
elseif botreduce==2 then levelname="Средний"
elseif botreduce==3 then levelname="Выше среднего"
elseif botreduce==4 then levelname="Сложный"
elseif botreduce==5 then levelname="Очень сложный"
elseif botreduce==6 then botreduce=botreduce-1 -- Если выше, то на 5
end
service("msgbox", {name="db", text="Настройка уровня сложности\n Уровень сложности: \n\n\n\n ["..levelname.."]\n\n\n\n",on_select="user.ChangeDifficult(n)",option1="Понизить",option2="Повысить",option3="Закрыть"})
if levelname=="Лёгкий" then user.Diff1() -- Если сложнось лёгкая переходит на user.Diff1() Там хранятся классы для лёгкого режима
elseif levelname=="Средний" then user.Diff2()
elseif levelname=="Выше среднего" then user.Diff3()
elseif levelname=="Сложный" then user.Diff4()
elseif levelname=="Очень сложный" then user.Diff5()
end
end


А здесь кнопка "Закрыть" я пробовал окно кильнуть не выходить


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




Пост N: 373
Рейтинг: 8
ссылка на сообщение  Отправлено: 18.08.10 12:13. Заголовок: У меня здесь не рабо..



 цитата:
У меня здесь не работает кнопка "Назад"


у тебя так вообще ни одна кнопка в user.Options не будет работать т.к. ты не передаешь n т.е. n у тебя всегда ==nil

 цитата:
А здесь кнопка "Закрыть" я пробовал окно кильнуть не выходить


а тут у тебя в on_select рекурсия и user.ChangeDifficult вызывается всегда по новой, т.е. заново создается и msgbox
пофтыкай сам. Просто внимательней надо быть

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




Пост N: 266
Рейтинг: 15
ссылка на сообщение  Отправлено: 18.08.10 12:28. Заголовок: Да там лучше даже не..


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

Попробуй как-нибудь так (луа у меня нету, за правильность не отвечаю, наверняка где-нибудь слажал, но идея должна быть ясна):

function user.ChangeDiff() 
local botdiff = 2
local levelname = ["Easy","Normal","Advanced","Hard","Impossible"]

while (button != 3)
service("msgbox", {---Черт вас в душу разберет что тут теперь писать надо---})
if ((button==1)and(botdiff > 1)) then
botdiff -= 1
end
if ((button==2)and(botdiff < 5)) then
botdiff += 1
end
end
user.Diff(botdiff)
end


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




Пост N: 1792
Рейтинг: 4
ссылка на сообщение  Отправлено: 18.08.10 12:50. Заголовок: Anti_Killer пишет: ..


Anti_Killer пишет:

 цитата:
а тут у тебя в on_select рекурсия и user.ChangeDifficult вызывается всегда по новой, т.е. заново создается и msgbox


У тебя в скрипте также, тоже создает каждый раз новое. Попробую разобраться


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




Пост N: 374
Рейтинг: 8
ссылка на сообщение  Отправлено: 18.08.10 13:09. Заголовок: У тебя в скрипте так..



 цитата:
У тебя в скрипте также, тоже создает каждый раз новое. Попробую разобраться

ну ненадо же все подчистую слизывать с меня у меня там в скрипте идет вполне логичное исключение "if n ~= 3 then" т.е. 3 вариант ответа исключен и продолжения при нем нет.



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




Пост N: 1793
Рейтинг: 4
ссылка на сообщение  Отправлено: 18.08.10 13:44. Заголовок: Anti_Killer пишет: ..


Anti_Killer пишет:

 цитата:
у тебя так вообще ни одна кнопка в user.Options не будет работать т.к. ты не передаешь n т.е. n у тебя всегда ==nil


Все работает кроме "Назад"


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




Пост N: 375
Рейтинг: 8
ссылка на сообщение  Отправлено: 18.08.10 14:44. Заголовок: user.menuservice.on_..



 цитата:
user.menuservice.on_select="user.MenuOpt(n)"


Так у тебя же меню настроек user.Options()
т.е. вместо
user.menuservice.on_select="user.MenuOpt(n)"
надо
user.menuservice.on_select="user.Options(n)"

ну и
function user.Options()
исправить на
function user.Options(n)

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




Пост N: 1795
Рейтинг: 4
ссылка на сообщение  Отправлено: 18.08.10 16:25. Заголовок: Anti_Killer пишет: ..


Anti_Killer пишет:

 цитата:
user.menuservice.on_select="user.MenuOpt(n)"
надо
user.menuservice.on_select="user.Options(n)"


А я смотрю смотрю и не замечаю
---
Вот нашел ошибку как исправить не знаю. Когда нажимаю на кнопку меню, нажатие как бы дублируется в открывшемся меню.
---
А можно ли создать локальную переменную в одной функции, а использовать её в другой.
Пример:
function primer()
local nyk
if not exits "eto" then nyk="1"
end
end

function primer2()
if nyk=="1" then actor("water"{name="eto"})
end
end

Возможно тут есть ошибки но мысль понятна


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




Пост N: 1802
Рейтинг: 4
ссылка на сообщение  Отправлено: 19.08.10 10:18. Заголовок: Если боту сказать ех..


Если боту сказать ехать с клетки 1/1 на клетку 1/500 он поедет через стену?


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




Пост N: 2829
Рейтинг: 9
ссылка на сообщение  Отправлено: 19.08.10 10:29. Заголовок: Попробуй :sm38: . Мн..


Попробуй . Мне кажется, нет.




Если будешь ты курить,
Пиво, водку, коньяк пить,
То думать голова не будет,
Семья, друзья тебя забудут.
Будешь ты плохим,
Станешь ты таким -

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: 1804
Рейтинг: 4
ссылка на сообщение  Отправлено: 19.08.10 10:41. Заголовок: slava98 Я пробую. У ..


slava98 Я пробую. У меня бот едет к точке а потом куда хочет.

VIRUS пишет:

 цитата:
Вот нашел ошибку как исправить не знаю. Когда нажимаю на кнопку меню, нажатие как бы дублируется в открывшемся меню.
---
А можно ли создать локальную переменную в одной функции, а использовать её в другой.
Пример:
function primer()
local nyk
if not exits "eto" then nyk="1"
end
end

function primer2()
if nyk=="1" then actor("water"{name="eto"})
end
end

Возможно тут есть ошибки но мысль понятна



Помогите


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




Пост N: 378
Рейтинг: 8
ссылка на сообщение  Отправлено: 19.08.10 11:09. Заголовок: Дам еще один мини ур..


Дам еще один мини урок.
смотри мою последнюю версию скрипта The Race (от 18 числа) , я там очень сильно все переделал в плане переменных, фактически все заново переписал . Глобальных там теперь почти нет , практически все и сплошь локальное как функции так и переменные.
Основное правило
Все глобальные переменные нужно помещать в табличку user, иначе будут проблемы с загрузкой/сохранением. То же самое касается функций,
например function new() - неправильно
Надо писать чтобы ф-ция была доступна для обработчиков событий объектов (on_select, on_damage, on_die и т.д.) function user.new()
либо если нигде объектом не обрабатывается то local function new()

Локальные переменные работают в рамках своего end'a в твоем примере так работать не будет , надо делать глобальную user.nyk либо в самом начале скрипта (вообще до начала публикаций функций и т.д. её задать) написать local nyk т.е. сработает только так

 цитата:

local nyk

function primer()
if not exits "eto" then nyk="1"
end
end

function primer2()
if nyk=="1" then actor("water"{name="eto"})
end
end



с локальными функциями также, Если одна локальная ф-ция используется другой, то локальная функция должна быть обязательно задана вышей той что её вызывает

Ну и надо не забывать что по умолчанию все переменные являются глобальными и надо приписывать везде либо user. либо делать local , ну у тебя вроде в этом плане нормально


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


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




Пост N: 1806
Рейтинг: 4
ссылка на сообщение  Отправлено: 19.08.10 11:36. Заголовок: Вотъ --функции меню-..


Вотъ
--функции меню-- 

user.menuservice = service("menu",{title="gui_splash",name="menu",names="Игра|Настройки|О кампании",on_select="user.Menu(n)"})
----------------------------------------------

function user.Menu(n)
if n == 1 then user.Game(n)
elseif n == 2 then user.Options(n)
elseif n == 3 then user.About()
end
end

function user.About()
service("msgbox", {text="Кампания Snake созданна как модификация танков\nКампания создавалась на основе неофициальной версии\n(c)\n Автор VIRUS\n Версия 1.0"})
end

function user.Rm()
service("msgbox", {text="К сожалению эта функция еще не реализована\n Ждите релиза в следующих версиях"})
end

function user.Refresh()
if exists(user.menuservice.name)==true then
--фактически пересоздаем меню если нам надо посмотреть изменения
user.menuservice.open=1
user.menuservice.open=1
end
end

function user.Options(n)
user.menuservice.names="Сложность|Режим|Назад"
user.menuservice.on_select="user.Options(n)"
user.Refresh()
--для обновления меню
if n == nil then return end
if n == 1 then user.ChangeDifficult()
elseif n == 2 then user.Rm()
else user.menuservice.names="Игра|Настройки|О кампании"
user.menuservice.on_select="user.Menu(n)"
user.Refresh()
end
end

function user.Game(n)
user.menuservice.names="Старт|Карта|Назад"
user.menuservice.on_select="user.Game(n)"
user.Refresh()
if n == nil then return end
if n == 1 then user.Start()
elseif n == 2 then user.ChangeMap()
else user.menuservice.names="Игра|Настройки|О кампании"
user.menuservice.on_select="user.Menu(n)"
user.Refresh()
end
end

function user.ChangeDifficult(n)
botreduce = botreduce or 2 -- По умолчанию средняя сложность
if n==1 then botreduce=botreduce-1 -- Если нажали "Понизить"- понижается
elseif n==2 then botreduce=botreduce+1 --Аналогично
end
local levelname -- levelname локальный, а не глобальный
if botreduce==0 then botreduce=botreduce+1 -- Если сложность ниже 1 возвращается на 1
elseif botreduce==1 then levelname="Лёгкий"
elseif botreduce==2 then levelname="Средний"
elseif botreduce==3 then levelname="Выше среднего"
elseif botreduce==4 then levelname="Сложный"
elseif botreduce==5 then levelname="Очень сложный"
elseif botreduce==6 then botreduce=botreduce-1 -- Если выше, то на 5
end
if n ~= 3 then
service("msgbox", {text="Настройка уровня сложности\n Уровень сложности: \n\n\n\n ["..levelname.."]\n\n\n\n",on_select="user.ChangeDifficult(n)",option1="Понизить",option2="Повысить",option3="Закрыть"})
if levelname=="Лёгкий" then user.Diff1() -- Если сложнось лёгкая переходит на user.Diff1() Там хранятся классы для лёгкого режима
elseif levelname=="Средний" then user.Diff2()
elseif levelname=="Выше среднего" then user.Diff3()
elseif levelname=="Сложный" then user.Diff4()
elseif levelname=="Очень сложный" then user.Diff5()
end
end
end

local levelid

function user.ChangeMap(n)
botreduce = botreduce or 1
if n==1 then botreduce=botreduce-1
elseif n==2 then botreduce=botreduce+1
end
local levelname
if botreduce==0 then botreduce=botreduce+1
elseif botreduce==1 then levelname="Без лабиринта"
elseif botreduce==2 then levelname="Квадрат"
elseif botreduce==3 then levelname="Квадрат внутри"
elseif botreduce==4 then levelname="Паралели и перпендекуляр"
elseif botreduce==5 then levelname="Комнаты"
elseif botreduce==6 then botreduce=botreduce-1
end
if n ~= 3 then
service("msgbox", {text="Выбор карты для игры\n Карта: \n\n\n\n ["..levelname.."]\n\n\n\n",on_select="user.ChangeMap(n)",option1="Предыдущая",option2="Следующая",option3="Закрыть"})
if levelname=="Без лабиринта" then levelid="1"
elseif levelname=="Квадрат" then levelid="2"
elseif levelname=="Квадрат внутри" then levelid="3"
elseif levelname=="Паралели и перпендекуляр" then levelid="4"
elseif levelname=="Комнаты" then levelid="5"
end
end
end

function user.Start()
if levelid=="1" then user.LoadLevel1()
elseif levelid=="2" then user.LoadLevel2()
elseif levelid=="3" then user.LoadLevel3()
elseif levelid=="4" then user.LoadLevel4()
elseif levelid=="5" then user.LoadLevel5()
end
end



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




Пост N: 379
Рейтинг: 8
ссылка на сообщение  Отправлено: 19.08.10 11:47. Заголовок: function user.Menu..



 цитата:

function user.Menu(n)
if n == 1 then user.Game(n)
elseif n == 2 then user.Options(n)
elseif n == 3 then user.About()
end
end


зачем здесь передавать n ? проверь везде. Т.е. он у тебя тут автоматом кудато лезть сразу же будет в user.Game(1) в user.Options(2)

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




Пост N: 1807
Рейтинг: 4
ссылка на сообщение  Отправлено: 19.08.10 11:53. Заголовок: Anti_Killer не понял..


Anti_Killer не понял
---
А понял, все же так просто


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




Пост N: 1808
Рейтинг: 4
ссылка на сообщение  Отправлено: 19.08.10 13:28. Заголовок: Как можно сделать чт..


Как можно сделать что бы можно было выбирать левела и при нажатии на кнопку старт выбранный левел запускался?


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




Пост N: 2831
Рейтинг: 9
ссылка на сообщение  Отправлено: 19.08.10 13:28. Заголовок: VIRUS пишет: functi..


VIRUS пишет:

 цитата:
function user.Rm()
service("msgbox", {text="К сожалению эта функция еще не реализована\n Ждите релиза в следующих версиях"})
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: 1809
Рейтинг: 4
ссылка на сообщение  Отправлено: 19.08.10 13:32. Заголовок: slava98 легко...


slava98 легко.


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




Пост N: 1816
Рейтинг: 4
ссылка на сообщение  Отправлено: 20.08.10 08:53. Заголовок: Похоже я Anti_Killer..


Похоже я Anti_Killerа уже достал. Но вот как сделать ПРАВИЛЬНО не пойму.

local levelid 

function user.ChangeMap(n)
botreduce = botreduce or 1
if n==1 then botreduce=botreduce-1
elseif n==2 then botreduce=botreduce+1
end
local levelname
if botreduce==0 then botreduce=botreduce+1
elseif botreduce==1 then levelname="Без лабиринта"
elseif botreduce==2 then levelname="Квадрат"
elseif botreduce==3 then levelname="Квадрат внутри"
elseif botreduce==4 then levelname="Паралели и перпендекуляр"
elseif botreduce==5 then levelname="Комнаты"
elseif botreduce==6 then botreduce=botreduce-1
end
if n ~= 3 then
service("msgbox", {text="Выбор карты для игры\n Карта: \n\n\n\n ["..levelname.."]\n\n\n\n",on_select="user.ChangeMap(n)",option1="Предыдущая",option2="Следующая",option3="Закрыть"})
if levelname=="Без лабиринта" then levelid="1"
elseif levelname=="Квадрат" then levelid="2"
elseif levelname=="Квадрат внутри" then levelid="3"
elseif levelname=="Паралели и перпендекуляр" then levelid="4"
elseif levelname=="Комнаты" then levelid="5"
end
end
end

function user.Start()
if levelid=="1" then user.LoadLevel1()
elseif levelid=="2" then user.LoadLevel2()
elseif levelid=="3" then user.LoadLevel3()
elseif levelid=="4" then user.LoadLevel4()
elseif levelid=="5" then user.LoadLevel5()
end
end



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




Пост N: 381
Рейтинг: 8
ссылка на сообщение  Отправлено: 20.08.10 09:38. Заголовок: Да помогу пока настр..


Да помогу пока настроение есть
1. не ставь числа в ковычки вроде "1"
2. end не там где надо поставил . Ставь до if levelname=="Без лабиринта" then levelid="1" и убирай один снизу.
3. функция user.Start() у тебя нигде не прописана. Т.е. ее не что не вызывает


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




Пост N: 1823
Рейтинг: 4
ссылка на сообщение  Отправлено: 20.08.10 10:17. Заголовок: Anti_Killer пишет: ..


Anti_Killer пишет:

 цитата:
3. функция user.Start() у тебя нигде не прописана. Т.е. ее не что не вызывает


Там есть скрипт что её вызывает


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




Пост N: 1825
Рейтинг: 4
ссылка на сообщение  Отправлено: 20.08.10 10:39. Заголовок: А можно ли писать та..


А можно ли писать так
pushcmd( function() service ("player_local", {name"snake1", nick="Змея", class="user.Class"}) end, 1)
------------------------------------------------------------------------------------------------------------↑ это функция



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




Пост N: 384
Рейтинг: 8
ссылка на сообщение  Отправлено: 20.08.10 10:43. Заголовок: LUA name"snake1&..


LUA
 цитата:
name"snake1"

как минимум на это накричит. Насчет функций без параметров не пробывал на LUA , но так часто применяют. Пробуй

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




Пост N: 1827
Рейтинг: 4
ссылка на сообщение  Отправлено: 20.08.10 11:08. Заголовок: function user.Start(..


function user.Start()
if levelid=="mapa1" then user.LoadLevel1()
elseif levelid=="mapa2" then user.LoadLevel2()
elseif levelid=="mapa3" then user.LoadLevel3()
elseif levelid=="mapa4" then user.LoadLevel4()
elseif levelid=="mapa5" then user.LoadLevel5()
end
end
----------------------------------------------

--функции игры--

function user.LoadLevel1()
pushcmd( function() loadmap ("campaign/Snake/maps/Snake_1.map") end, 1)
pushcmd( function() service ("player_local", {name="snake1", nick="Змея", class="user.Class"}) end, 1)
end

Никакой ошибки нет, но при нажатии на старт ничег не работает


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




Пост N: 385
Рейтинг: 8
ссылка на сообщение  Отправлено: 20.08.10 11:21. Заголовок: Отлаживай. Проверяй ..


Отлаживай. Проверяй через message до куда доходит и что выдает. Передается ли levelid, выполняется ли user.start() и т.д.

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




Пост N: 1829
Рейтинг: 4
ссылка на сообщение  Отправлено: 20.08.10 11:35. Заголовок: Доходит до user.star..


Доходит до user.start() а дальше гнет


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




Пост N: 386
Рейтинг: 8
ссылка на сообщение  Отправлено: 20.08.10 13:54. Заголовок: проверяй дальше. У т..


проверяй дальше. У тебя levelid что выдает у тебя присваивается 1 2 3 4 5 , а проверяется на mapa1 mapa2 . просто цифрой везде пиши

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




Пост N: 1830
Рейтинг: 4
ссылка на сообщение  Отправлено: 20.08.10 14:26. Заголовок: Anti_Killer пишет: ..


Anti_Killer пишет:

 цитата:
проверяй дальше. У тебя levelid что выдает у тебя присваивается 1 2 3 4 5 , а проверяется на mapa1 mapa2 . просто цифрой везде пиши


С этим все нормально


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




Пост N: 2842
Рейтинг: 9
ссылка на сообщение  Отправлено: 21.08.10 10:13. Заголовок: А с картами всё норм..


А с картами всё нормально?




Если будешь ты курить,
Пиво, водку, коньяк пить,
То думать голова не будет,
Семья, друзья тебя забудут.
Будешь ты плохим,
Станешь ты таким -

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: 1831
Рейтинг: 4
ссылка на сообщение  Отправлено: 21.08.10 14:25. Заголовок: slava98 естественно ..


slava98 естественно


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




Пост N: 3112
Рейтинг: 10
ссылка на сообщение  Отправлено: 01.11.10 12:18. Заголовок: function pda() if us..



 цитата:
function pda()
if user.pda == 1 then
user.msg=Проверка КПК. Сообщение 1
elseif user.pda == 2 then
user.msg=Проверка КПК. Сообщение 2
elseif user.pda == 3 then
user.msg=Проверка КПК. Сообщение 3
end
end
end
end


Это моя попытка сделать ПДА, как в Doom 3.

 цитата:
function user.pdabox(n)
botreduce = botreduce or 0
if n==1 then botreduce=botreduce-1
elseif n==2 then botreduce=botreduce+1
end
end
pda()
if botreduce==0 then botreduce=botreduce+1
elseif botreduce==1 then user.pda=1
elseif botreduce==2 then user.pda=2
elseif botreduce==3 then user.pda=3
elseif botreduce==4 then botreduce=botreduce-1
end
service("msgbox", {text="[..user.msg..]",on_select="user.pdabox(n)",option1=">",option2="<",option3="Закрыть"})


Это тоже. Только другой отрывок.

 цитата:
--*Мы загружаем PDA. Пока в тестовом режиме.
user.pda=1 -- Нам нужно 1-ое сообщение...
pda() -- ...и мы его загружаем..
user.pdabox() -- ...и высвечиваем.


А это я пробую его вызывать.

 цитата:
runtime error: data/campaign/War System/scripts/level1.lua:6: attempt to call global 'pda' (a nil value)


А это ошибка.
Объясните, что не так.


И ещё:

 цитата:

function user.shockin()
kill("shoker1")
pushcmd(function() message("Это электро-взрывчатка! Она поможет достать бустер!") end, 1)
actor("user_sprite", 470, 695, { name="shocksprite", texture="user/ekivator", layer=11 })
actor("trigger", 480, 695, { name="shocktrig", on_enter="user.shockout()" })
end

function user.shockout()
kill("shocksprite")
pset("shocktrig", "active", 0)
actor("pu_shock", 470, 695, { name="shocker2" })
pushcmd(function() message("Через десять секунд взрывчатка взорвётся.") end, 1)
pushcmd(function() message("5") end, 6)
pushcmd(function() message("4") end, 7)
pushcmd(function() message("3") end, 8)
pushcmd(function() message("2") end, 9)
pushcmd(function() message("1") end, 10)
pushcmd(function() kill("shocker2") explosion(47, 69) explosion(47, 70) kill("k1_v1") kill("k2_v1") end, 12)
end


Тут всё правильно? И как сделать так, чтобы объект появился на 48, а не на 4,8 и не на 480?



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

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: 395
Рейтинг: 9
ссылка на сообщение  Отправлено: 07.11.10 14:30. Заголовок: А это ошибка. Объяс..



 цитата:
А это ошибка.
Объясните, что не так.

функция у тебя user.pda() а зовешь просто pda() которой не существует. (это я тебе просто перевел сообщение ошибки. Внимательно читай еррор месаги, в них почти всегда вся соль)

 цитата:
Тут всё правильно? И как сделать так, чтобы объект появился на 48, а не на 4,8 и не на 480?


если лень каждый раз выщитывать то вместо числа - кординаты пиши get32(кордината) предварительно вставив в свой скрипт сверху функцию

 цитата:
local function get32(num)
return ((num-1) * 32) + 16;
end


она будет пересчитывать твои "клетки" из редактора в пиксели

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




Пост N: 3132
Рейтинг: 10
ссылка на сообщение  Отправлено: 07.11.10 19:02. Заголовок: если лень каждый раз..



 цитата:
если лень каждый раз выщитывать то вместо числа - кординаты пиши get32(кордината) предварительно вставив в свой скрипт сверху функцию


СПС, попробую.
А сеёчас у меня совсем другой скрипт.

 цитата:
function user.mailbox(n)
if n==nil then
if n==1 then botreduce=botreduce-1
elseif n==2 then botreduce=botreduce+1
end
end
if botreduce==0 then botreduce=botreduce+1
elseif botreduce==1 then mailnum=1
elseif botreduce==2 then mailnum=2
elseif botreduce==3 then mailnum=3
elseif botreduce==4 then mailnum=4
elseif botreduce==5 then botreduce=botreduce-1
end
mail(mailnum)
service("msgbox", {text=user.msg,on_select="user.mailbox(n)",option1="Назад",option2="Вперёд",option3="Закрыть"})
end
else
if n==3 then
end
end

function mail(message)
if message == 1 then
user.msg="Добро пожаловать в наше боевое поселение Экиваторов!"
elseif message == 2 then
user.msg="Проверка КПК. Сообщение 2"
elseif message == 3 then
user.msg="Проверка КПК. Сообщение 3"
elseif message == 4 then
user.msg="4"
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: 401
Рейтинг: 9
ссылка на сообщение  Отправлено: 08.11.10 02:43. Заголовок: else if n==3 then ..



 цитата:
else
if n==3 then
end

это вообще не обязательно было писать , а в on_select исправить
 цитата:
on_select="if n ~= 3 then user.mailbox(n) end "



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




Пост N: 3138
Рейтинг: 10
ссылка на сообщение  Отправлено: 08.11.10 21:31. Заголовок: Спасибо, громадное! ..


Спасибо, громадное! А то, не успел я изучить функцию, появился сервис. Теперь кампания поедет дальше .



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

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: 3144
Рейтинг: 10
ссылка на сообщение  Отправлено: 13.11.10 18:14. Заголовок: function user.shocki..



 цитата:
function user.shockin()
kill("shoker1")
pushcmd(function() message("Это электро-взрывчатка! Она поможет достать бустер!") end, 1)
actor("user_sprite", get32(47), get32(69.5), { name="shocksprite", texture="user/ekivator", layer=11 })
actor("trigger", get32(48), get32(69.6), { name="shocktrig", on_enter="user.shockout()" })
end

function user.shockout()
kill("shocksprite")
pset("shocktrig", "active", 0)
actor("pu_shock", get32(47), get32(69.5), { name="shocker2" })
pushcmd(function() message("Через десять секунд взрывчатка взорвётся.") end, 1)
pushcmd(function() message("5") end, 6)
pushcmd(function() message("4") end, 7)
pushcmd(function() message("3") end, 8)
pushcmd(function() message("2") end, 9)
pushcmd(function() message("1") end, 10)
pushcmd(function() kill("shocker2") explosion(47, 69) explosion(47, 70) kill("k1_v1") kill("k2_v1") end, 12)
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: 2029
Рейтинг: 4
ссылка на сообщение  Отправлено: 13.11.10 18:29. Заголовок: Не работает :( funct..


Не работает :(
function user.WaterFire()
local lifeobj
lifeobj = pget("obj_water", "health")
if lifeobj == 2000 then pset("dec_water", "texture", "user/water1")
elseif lifeobj == 1500 then pset("dec_water", "texture", "user/water2")
elseif lifeobj == 1000 then pset("dec_water", "texture", "user/water3")
elseif lifeobj == 500 then pset("dec_water", "texture", "user/water4")
elseif lifeobj == 100 then pset("dec_water", "texture", "user/waterfinal")
elseif lifeobj == 1 then kill("obj_water")
elseif lifeobj == 1 then kill("dec_water")
end
end


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




Пост N: 3146
Рейтинг: 10
ссылка на сообщение  Отправлено: 13.11.10 20:21. Заголовок: lifeobj = nill И неч..


lifeobj = nill
И нечего не происходит!
Он вообще не задаётся.



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

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: 2032
Рейтинг: 4
ссылка на сообщение  Отправлено: 13.11.10 20:38. Заголовок: А как задать? хп объ..


А как задать? хп объекта


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




Пост N: 404
Рейтинг: 9
ссылка на сообщение  Отправлено: 15.11.10 07:13. Заголовок: А как задать? хп объ..



 цитата:
А как задать? хп объекта


pset и pget надо использовать редко. С тех пор как Insert ввел функцию object они ушли на второй план

 цитата:
function user.WaterFire()
local lifeobj
lifeobj = pget("obj_water", "health")
if lifeobj == 2000 then pset("dec_water", "texture", "user/water1")
elseif lifeobj == 1500 then pset("dec_water", "texture", "user/water2")
elseif lifeobj == 1000 then pset("dec_water", "texture", "user/water3")
elseif lifeobj == 500 then pset("dec_water", "texture", "user/water4")
elseif lifeobj == 100 then pset("dec_water", "texture", "user/waterfinal")
elseif lifeobj == 1 then kill("obj_water")
elseif lifeobj == 1 then kill("dec_water")
end
end


можно записать как

 цитата:
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"
else then kill("obj_water") kill("dec_water") -- и вот это не правильно все равно. Если хочешь чтоб при смерти одного объекта умер и второй, добавь событие в on_die или в on_destroy объекта при убийстве которого надо убивать второй
end
end



соответственно задать хп объекта можно просто приравняв obj1.health = 100

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




Пост N: 3151
Рейтинг: 10
ссылка на сообщение  Отправлено: 15.11.10 10:35. Заголовок: Anti_Killer спасибо...


Anti_Killer спасибо. Но второй объект и не должен умирать. Но у меня есть тоже вопрос:
- Как взять хп с помощью pget у сервиса player?
Создаётся танк и сервис, а имя только у сервиса. А мне нужно взять хп у танка. (с помощью функции pget)
И ещё один (мы с Вирусом закидываем вопросами , но это потому что я не знал новинки новой версии, и они в Танкопедии не записаны ):
- Я знаю, что можно загрузить какой-нибудь файл в скриптах. Так игра сохранялась и загржалась в The Race. А можно сделать так, чтобы игра запускала файл lang.cfg с помощью скриптов из указанного места?



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

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: 406
Рейтинг: 9
ссылка на сообщение  Отправлено: 15.11.10 13:18. Заголовок: Как взять хп с помо..



 цитата:
Как взять хп с помощью pget у сервиса player?

vehname и есть объект танк. Проверяй хп у танка . вот и все.

 цитата:
Создаётся танк и сервис, а имя только у сервиса. А мне нужно взять хп у танка. (с помощью функции pget)

не вижу проблемы в задании параметра vehname у player_local

 цитата:
- Я знаю, что можно загрузить какой-нибудь файл в скриптах. Так игра сохранялась и загржалась в The Race. А можно сделать так, чтобы игра запускала файл lang.cfg с помощью скриптов из указанного места?

нет. Скрипты и игровые файлы вроде lang.cfg никак не связаны. lang.cfg обрабатывается при запуске игры

...я здесь был... Спасибо: 0 
Профиль Цитата Ответить
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 
Профиль Цитата Ответить





Пост N: 715
Рейтинг: 2
ссылка на сообщение  Отправлено: 19.06.11 11:31. Заголовок: slava98 Я не умею их..


slava98 Я не умею их делать. Я делаю просто карту с переключением режима дня и ночи!
P.S. Не-а. Не помог твой код. Он ввёлся успешно, но ничего такого нету!






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




Пост N: 2161
Рейтинг: 4
ссылка на сообщение  Отправлено: 19.06.11 13:33. Заголовок: Максим пишет: P.S. ..


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

 цитата:
P.S. Не-а. Не помог твой код. Он ввёлся успешно, но ничего такого нету!


Чей код?




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





Пост N: 717
Рейтинг: 2
ссылка на сообщение  Отправлено: 19.06.11 15:29. Заголовок: VIRUS Код aka slava9..


VIRUS Код aka slava98!

[/url]
[url=http://topglobus.ru/besplatno-userbar-forum-filmy-televidenie]



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




Пост N: 3465
Рейтинг: 11
ссылка на сообщение  Отправлено: 19.06.11 16:07. Заголовок: а ты запустил user.D..


а ты запустил user.DayAndNight()?
в моём коде нужно смены деня/ночи ждать 5 мин
и всё работает на
только ничего не видно...
зы. теперь я затеял сделать кампанию с этой функцией, а то в ws она не смотрится



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

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: 718
Рейтинг: 2
ссылка на сообщение  Отправлено: 19.06.11 16:42. Заголовок: slava98 Я хотел, что..


slava98 Я хотел, чтобы в самом начале карты он запустился (скрипт инициализации).






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




Пост N: 3466
Рейтинг: 11
ссылка на сообщение  Отправлено: 19.06.11 19:54. Заголовок: function user.DayAnd..



 цитата:
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;
user.DayAndNight()


Скопируй это и вставь в скрипт инициализации. Я проверял, работает.



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

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
__________________________Зона смерти








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





Пост N: 719
Рейтинг: 2
ссылка на сообщение  Отправлено: 20.06.11 07:51. Заголовок: slava98 Помогло! Спа..


slava98 Помогло! Спасибо!






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




Пост N: 435
Рейтинг: 9
ссылка на сообщение  Отправлено: 20.06.11 11:54. Заголовок: VIRUS service (..


VIRUS


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




1.Если не получается чтото сперва проверяй передается ли функция в переменную и чему равна через вывод на экран сообщения
2.Не используй глобальные переменные (ставь перед переменными слово local ) Допустимо только использование глобальной переменной user.

Вместо Attackerа привычная переменная who, все правильно, но в on_damage нужно поместить по минимуму, обычно достаточно просто написать "user.DamageOurvarrior(who)", далее работать уже внутри функции, а у тебя глобальная переменная создается, а это пункт 2, все остальные преобразования делаются уже внутри функции.

И как трактовать эту строчку ?

 цитата:
if nameofatacker ~= "ourplayer1" then


т.е. если ударил кто то кроме игрока то бот взбунтуется. Ты этого и хотел или как?

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




Пост N: 2164
Рейтинг: 4
ссылка на сообщение  Отправлено: 20.06.11 13:20. Заголовок: Anti_Killer пишет: ..


Anti_Killer пишет:

 цитата:
if nameofatacker ~= "ourplayer1" then


Это по моему Слава редактил))
Да а если написать user.DamageOurWarriour(who)
то как извлечь who.name или who содержит name?




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




Пост N: 2165
Рейтинг: 4
ссылка на сообщение  Отправлено: 20.06.11 13:30. Заголовок: хахахаха) Может функ..


хахахаха)
Может функция и работала просто объект с именем ourplayer1 не существует))
ourplayer1 - vehname
Сейчас переделаю функцию как ты сказал. Посмотрим...




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




Пост N: 2166
Рейтинг: 4
ссылка на сообщение  Отправлено: 20.06.11 13:38. Заголовок: я все равно не поним..


я все равно не понимаю как сделать... Помоги пожалуйста




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



Не зарегистрирован
ссылка на сообщение  Отправлено: 21.06.11 07:02. Заголовок: VIRUS пишет: Это п..


VIRUS пишет:

 цитата:

Это по моему Слава редактил))


Я там только кавычки поставил. Я тоже не понимал, почему там ~=.

Спасибо: 0 
Цитата Ответить





Пост N: 724
Рейтинг: 2
ссылка на сообщение  Отправлено: 21.06.11 09:55. Заголовок: Теперь подвопрос по ..


Теперь подвопрос по 2 (сделано).
2.1. Как сделать так, чтобы когда появится ночь, то все боты бы остановились и спали, кроме специального класса "Ночные убийцы". Класс такой же, как и класс defaunt, но ночью он не спит. Сам игрок тоже не спит.
2.1.1. Собственно, класс "Ночные убийцы" создайте и выложите в раздел "Классы" (или я сам создам, если скрипты помогут).






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




Пост N: 2167
Рейтинг: 4
ссылка на сообщение  Отправлено: 21.06.11 11:43. Заголовок: Максим пишет: 2.1. ..


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

 цитата:
2.1. Как сделать так, чтобы когда появится ночь, то все боты бы остановились и спали, кроме специального класса "Ночные убийцы". Класс такой же, как и класс defaunt, но ночью он не спит. Сам игрок тоже не спит.


Нужно отключить тех игроков





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





Пост N: 725
Рейтинг: 2
ссылка на сообщение  Отправлено: 21.06.11 12:56. Заголовок: VIRUS Автоматически ..


VIRUS Автоматически снова, а не через редактор.






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




Пост N: 2168
Рейтинг: 4
ссылка на сообщение  Отправлено: 21.06.11 16:48. Заголовок: ну да pset("name..


ну да
pset("name", "active", 0 или 1)




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





Пост N: 726
Рейтинг: 2
ссылка на сообщение  Отправлено: 21.06.11 18:09. Заголовок: VIRUS Для классов, а..


VIRUS Для классов, а не для определённого игрока! И причём если наступила ночь каждый раз применялось!






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




Пост N: 3469
Рейтинг: 11
ссылка на сообщение  Отправлено: 21.06.11 19:24. Заголовок: Ну типо ставить триг..


Ну типо ставить триггеры на точках рождения с именем, например 'n_trig(и здесь номер триггера)', даже скорее вокруг:

 цитата:
if who.class=='night' then
for i=1, (здесь мах кол-во игроков) do
who.name='night'..i
kill('n_trig(и здесь номер триггера)'')
end


и сама функция тогда:

 цитата:
function user.DayAndNight()
pushcmd(function()
conf.sv_nightmode = true
local tank = object('night'..i)
tank.playername=""
kill('night'..i) end, 1)
end, 1)
pushcmd(function() conf.sv_nightmode = false end, 270)
pushcmd(function() user.DayAndNight() end, 540)
end;
user.DayAndNight()


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
__________________________Зона смерти








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




Пост N: 2170
Рейтинг: 4
ссылка на сообщение  Отправлено: 21.06.11 20:22. Заголовок: Максим пишет: VIRUS..


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

 цитата:
VIRUS Для классов, а не для определённого игрока! И причём если наступила ночь каждый раз применялось!


А не легче когда ставится ночь, ставить всем нужным ботам актив 0?




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




Пост N: 3472
Рейтинг: 11
ссылка на сообщение  Отправлено: 21.06.11 22:19. Заголовок: VIRUS насколько я по..


VIRUS насколько я понял, там игрок ставит ботов. И классы. Я говорю, типа если класс у игрока такой то, то его имя такое то и ночью у него отнимается актив. Короче, завтра сам попробую. Это выполнимо, но очень сложно.



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

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: 2177
Рейтинг: 4
ссылка на сообщение  Отправлено: 25.06.11 17:54. Заголовок: Я скачал исходники, ..


Я скачал исходники, но скомпилировать не могу... Читал все описания но не совсем понял.




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




Пост N: 280
Рейтинг: 15
ссылка на сообщение  Отправлено: 25.06.11 18:20. Заголовок: Это такой вопрос по ..


Это такой вопрос по скриптам?

Там чтобы скомпилять помимо MSVC студии неплохо бы еще DirectX sdk поставить. Возможно еще что-нибудь, но это первое что в голову приходит.

И да, компиляция она ж не просто "не получается" - там наверное вылезает какая-нибудь ошибка? Если ее выложить сюда вероятность получить осмысленный ответ сильно увеличится. libastral как известно на винду пока не портирован.

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




Пост N: 3479
Рейтинг: 11
ссылка на сообщение  Отправлено: 25.06.11 18:25. Заголовок: 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
__________________________Зона смерти








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




Пост N: 3560
Рейтинг: 11
ссылка на сообщение  Отправлено: 01.01.12 16:27. Заголовок: Если тут ещё осталис..


Если тут ещё остались скриптеры, кроме меня, то я спрашиваю:
А можно объявить переменную локальной в цикле fоr? Например:

 цитата:
for local r = 1,20 do
pset("r"..r, "max_health", 1)
pset("r"..r, "health", 1)
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: 2235
Рейтинг: 4
ссылка на сообщение  Отправлено: 01.01.12 16:45. Заголовок: Скорее всего - да. Н..


Скорее всего - да. Но что мешает протестировать?



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