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