KFan 7 Опубликовано 12 января, 2012 Давайте определим что такое кнопка в html и как ее использовать <button value="Quest" action="bypass -h npc_%objectId%_Quest 9990_testquest" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"> Данная кнопка начнет разговор с квестом 9990_testquest После первого вызова все html файлы вызываются прямо из папки скрипта, то есть все файлы кроме самого первого должны быть в папке со скриптом, там кнопка выглядит немного иначе <button value="Что то" action="bypass -h bypass -h Quest 9990_buffer param" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"> После 1 запроса, все следующие запросы к квесту идут с параметром, обычно переменная event param - в данной кнопке это и есть параметр, в 1 параметре вы можете передать сразу кучу параметров, но разделять их допустим так param_param1_param2 а потом в самом скрипте разбить переданное по символу "_" тем самым у вас получится 3 переданных параметра Я не буду здесь говорить о том что было в прошлом гайде, давай перейдем сразу к основному коду def onEvent(self, event, st): - 1 параметр ни когда не трогайте, 2 параметр, это то что пришло из html файла, ну а 3 это переменная с персонажем htmltext = event if event = "heal" : - если параметр heal регеним HP st.getPlayer().restoreHP() elif event = "unheal" - если параметр unheal сбиваем ему хп до 1 единицы st.getPlayer().reduceCurrentHp(st.getPlayer().getMaxHp() + st.getPlayer().getMaxCp() - 1, st.getPlayer()) else : - если указанный параметр не обнаружем выдаем этот текст st.getPlayer().sendMessage("not paramaetr") return Я думаю тут все ясно, если нужно вы можете добавить проверку на итем, забрать его если он имиеется и т.д., все это описано в предидущей части В данном случае возможны бесконечные варианты кнопок, но будут верны тока 2 <button value="Что то" action="bypass -h bypass -h Quest 9990_buffer heal" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"> или <button value="Что то" action="bypass -h bypass -h Quest 9990_buffer unheal" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"> все остальные варианты будут давать ошибку Так же можно указать прямо в параметре какой итем и сколько брать за лечение, выглядеть это будет так <button value="Что то" action="bypass -h bypass -h Quest 9990_buffer heal_57_10000" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"> def onEvent(self, event, st): htmltext = event if event.startswith("heal_") : - Если начинается на heal_ значит это то что нам нужно act = event.split("_") st.takeItems(act[1], act[2]) - так как мы разбили 3 параметра, то 0 это heal, 57 это 1, a 10000 это 2 st.getPlayer().restoreHP() elif event = "unheal" st.getPlayer().reduceCurrentHp(st.getPlayer().getMaxHp() + st.getPlayer().getMaxCp() - 1, st.getPlayer()) else : st.getPlayer().sendMessage("not paramaetr") return в следующей части мы научимся создавать многоуровневые квесты, с атакой, убийством и прочим Успехов, экспереминтируйте! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты