Перейти к содержанию
Авторизация  
KFan

Пишем Квест На Питоне (2 Из 5 Частей)

Рекомендуемые сообщения

Давайте определим что такое кнопка в 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

 

 

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

 

Успехов, экспереминтируйте!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...