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