Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[TuT] Od Zera Do Quest Writer'A !


Spake

Rekomendowane odpowiedzi

Opublikowano

Witam !

Po pierwsze co chciałbym powiedzieć,to wiem że był podobny tutorial,tyle że mało obszerny,mało przekazujący.

Po drugie chciałbym wspomnieć,że zacząłem tutorial pisać na kacu po nieodespanym Sylwestrze,więc za jakiekolwiek błędy przepraszam.

Po trzecie - jeśli czegoś nierozumiesz,nie minusuj - pisanie questów,tak jak i pisanie stron WWW,czy aplikacji komputerowych wymaga ćwiczeń i czasu.

 

Wstęp

 

 

 

Questy do gry Metin2 pisane są w języku LUA - niektórzy z was może się już z nim spotkali,jest używany w wielu grach Online i nie tylko.

Edytor LUA - polecam Notepad++ - sam go używam nie tylko do LUA,lecz i do PHP oraz CSS.

Jeśli czegoś nierozumiesz,potrzebujesz więcej informacji - odsyłam do manuala

http://www.lua.org/manual/5.1/

 

 

 

Część 0 - LUA i pliki serwerowe

 

 

 

Oczywiście,questy pod grę Metin2 mają swoją budowę - rozpoczynają się linijkami

quest nazwa begin -- Coś w rodzaju indeksu
state start begin -- rozpoczęcie questa w grze

Oraz mają swoje własne funkcje - patrz rozdział "Lista funkcji".

 

 

 

Część I - zmienne i operatory

 

 

 

Zmienne

Może najpierw zaczniemy od tego....czym jest właściwie zmienna ?

Zmienna to nic innego,jak zarezerwowane miejsce w pamięci komputera (w tym wypadku serwera) dla różnych typów danych,zaczynając od liczb całkowitych aż po tekst.

Jak wygląda zmienna ?

Zmienne w języku LUA wyglądają tak:

zmienna1 = 'jakiś tam tekst'   -- zmienna tekstowa,inaczej "string"
zmienna2 = 7   -- zmienna liczbowa
zmienna3 = TRUE -- zmienna typu bool (true lub false - prawda lub fałsz)

Jak można zauważyć, przypisanie tekstu do zmiennej tekstowej musi się zaczynać znakiem ' oraz kończyć ' .

Przypisanie liczby do zmiennej liczbowej wygląda podobnie - tylko tutaj nie nie opatrujemy liczby znakami '' .

 

Zasięg zmiennych w języku LUA można określić na dwa sposoby:

local zmienna = TRUE -- zmienna lokalna,czyli zmienna która została wywołana wewnątrz jakiegoś bloku kodu (pętli,instrukcji warunkowej,funkcji itd) i wraz z zamknięciem tego bloku kodu ta zmienna poprostu "ginie".
zmienna = TRUE -- zmienna globalna,czyli dostępna w całym queście.

 

WAŻNE !

Nazwy zmiennych nie mogą nosić nazw:

end,

if,

while,

and,

or .

Powyższe nazwy są zarezerwowane przez język LUA i użytkownik nie ma możliwości użycia tych nazw.

Język LUA odróżnia wielkie litery oraz małe,więc zmienne "zmienna1" oraz "Zmienna1" to dwie inne zmienne;właśnie tym sposobem możemy ominąć ograniczenia nazw zmiennych stosując np.

zamiast zmiennej "end" zmienną "End" itd.

 

Operatory

Operatory to nic innego,jak funkcje matematyczne na zmiennych.

W LUA istnieją takie operatory:

> - większy,
< - mniejszy,
== - równy (WAŻNE ! Pojedynczy znak "=" oznacza przypisanie !)
<= - mniejszy lub równy,
>= - większy lub równy.
++ - inkrementacja zmiennej (dodawanie do zmiennej 1)
-- - dekrementacja (odejmowanie od zmiennej 1)

 

Operatory przydadzą się nam w dalszej części tutoriala,lecz lepiej zaznajomić się z nimi podczas poznawania zmiennych.

 

 

 

 

Część II - instrukcje warunkowe oraz komentarze

 

 

 

Instrukcje warunkowe

Instrukcje warunkowe - praktycznie najważniejsza część pisania questów.

Bez tego ani rusz !

 

-Instrukcja warunkowa if

Instrukcja warunkowa if ma bardzo prostą budowę :

if warunek then
instrukcja
end

Powyższa instrukcja zostanie wykonana gdy spełni się jakiś warunek.

Jeśli nie zostanie on spełniony,instrukcja nie wykona się.

Warunkiem może być praktycznie wszystko,dam wam przykład na podstawie dwóch zmiennych :

quest nazwa begin
state start begin

zmienna1 = 20
zmienna2 = 5

if zmienna1 > zmienna2 then
chat("zmienna1 jest większe od zmienna2 !")
end
end
end

Pomyślcie teraz,czy powyższa instrukcja się wykona ? Na czym polega ?

 

 

Powyższa instrukcja wykona się,gdy zmienna1 będzie większa od zmienna2 - tak jest ? Tak,więc instrukcja się wykona - w rezultacie na chacie w grze wyświetli się

tekst "zmienna1 jest większe od zmienna2 !".

 

Ważne ! Każda instrukcja warunkowa, pętla(o tym później) oraz funkcja musi być zakończona wyrazem "end". Na przykład

quest nazwa begin

state start begin

end

end

 

 

-Instrukcja warunkowa if-else

Instrukcja ta jest dopełnieniem wcześniejszej.

Tyle,że jeśli tutaj warunek się spełni, zostanie wykonana pierwsza instrukcja, jeśli się nie spełni, druga.

Przykład:

quest test begin
state start begin

fail1=50
fail2=50
if fail1~=fail2 then
chat("tekst numer jeden")
else
chat("tekst numer dwa")
end

 

Pierwsze,co rzuciło się w oczy pewnie nowy operator - "~=" (można też użyć !=) - jest to tzw. negacja, czyli "po polsku" przeczenie. Czyli np. zmienna1 NIE równa się zmiennej2 , zmienna tekstowa jest inna od drugiej zmiennej tekstowej etc.

 

 

Drugie co rzuciło się w oczy - wyraz else - po angielsku oznacza on poprostu inaczej,czyli kod po przetłumaczeniu na język zrozumiały dla nas,wyglądałby tak:

fail1 to jest 50
fail2 to jest 50

jeśli fail1(50) nierówna się fail2(50) zrób
wyświetl tekst numer jeden na chacie
lub jeśli fail1 równa się fail2
wyświetl tekst numer dwa na chacie
koniec

Myślę,że zrozumieliście tongue.gif.

 

-Instrukcja warunkowa when

Instrukcja when - bardzo mało informacji o niej w internecie,możliwe że jest to instrukcja warunkowa napisana przez twórców gry.

Więc tak,składnia when wygląda tak:

when warunek with coś begin
instrukcja
end

 

Dalej wam niestety nie powiem,sam dokońca nie rozumiem tej instrukcji,jeśli się dowiem czegoś więcej to napiszę.

 

Komentarze

Co to są komentarze ?

Komentarze to nic innego,jak nic nieznaczące dla gry,jak i dla kompilera LUA ciągi znaków pomagające quest writerowi w zorientowaniu się w kodzie skryptu (tak,tak,quest writer może się pogubić we własnym kodzie....),lub jeśli quest pisze kilka osób,komentowane są niektóre elementy,żeby praca przebiegała sprawniej i szybciej.

Jak stosować komentarze w języku LUA ?

 

-Komentarze jednolinijkowe

Komentarze jednolinijkowe rozpoczyna się dwoma myślnikami "--" ,po tych myślnikach kod nie jest traktowany jako kod tylko nic nieznaczący tekst.

[.....]
if zmienna>zmienna13 then -- to jest właśnie komentarz
[....]

-Komentarze wielolinijkowe

Komentarze wielolinijkowe zaczynamy od " --[[ " oraz kończymy "]]"

[....]
--[[
if zmienna==kowal then
chat("Tak,to jest kowal !")
end
]]
[....]

W powyższym kodzie kompilator pominie linie między znakami "--[[" oraz "]]" .

 

 

 

 

 

 

 

 

 

Lista funkcji

 

 

 

Najbardziej przydatne

chat() - Pisze na chacie wiadomość tekstową
chat("Tutaj tekst")

say() - Pisze wiadomość w okienku
say("Witaj na serwerze xxx ! Na początek dostaniesz startowy ekwipunek....")

say_reward() - pisze w okienku na ciemno-pomarańczowo,używane głównie do pisania nagród itd.
say_reward("Zbroja z czarnej stali+9")

say_item() - wyświetla w okienku obrazek przedmiotu
say_item(19) - wyświetli się obrazek Miecza +9

 

Inne

 

__give_char_priv()
addimage()
addmapsignal()
affect.add() - Dodaj się jakiś wpływ (nie wiem za bardzo)
affect.remove() - Wiadomo, usuwa UP
affect.remove_bad() - Usuwa się negatywny wpływ np. spowolnienie chyba
affect.remove_good() - Usuwa pozytywny wpływ np. aure
bool_to_str() - Nie wiem ale to jest jakiś algorytm który coś oblicza
building.get_land_id() - Nie wiem
building.get_land_info() - Nie wiem
building.has_land() - Nie wiem
building.set_land_owner() -- Nie wiem
char_log() -Wpisuje coś w MySQL do jakiegoś loga itp. (?)
chat() - Pisze na czacie wiadomość tekstową
clear_server_timer() - Resetuje zegar serwa (z tym zegarem to lepiej sie nie bawic)
clearmapsignal() - Nie wiem
cleartimer() - Resetuje jakiś stoper (np. w misjach na czas)
cmdchat() - pisze coś na czacie (?)
color(r,g, - to służy do wpisywania kolorów w postaci R,B,G
complete_quest() - Kończy questa (?)
complete_quest_state() - Nie wiem
confirm() - potwierdzenie
sys_log() - Pisze coś w systemowym logu (?)
d.check_eliminated() - Sptawdza ile mobów zostało zabitych chyba
d.clear_regen() - Nie wiem
d.count_monster() - ilość jakiś potworów
d.exit() - wiadomo
d.exit_all() - wiadomo
d.exit_all_to_start_position() - koniec czegoś tam i powraca do pierwszej pozycji ( czyli do pierwszego state)
d.get_kill_mob_count() - Ile jeszcze mobów trzeba zabić (taki licznik jakby)
d.get_kill_stone_count() - UP tylko że metinów (kamieni)
d.get_map_index() - Nie wiem
d.getf() - Nie wiem
d.is_unique_dead() - Sprawdza czy jest na dedzie (  )
d.is_use_potion() - Nie wiem ale coś związane z potami
d.join() - Nie wiem
d.jump_all() - Nie wiem
d.jump_all_local() - Nie wiem
d.kill_unique() - Nie wiem
d.new_jump()
d.new_jump_all()
d.purge() - To samo co komenda /purge
d.purge_unique() - UP tylko że coś inaczej
d.regen_file()
d.revived()
d.select() - Coś takiego jak funkcja Select()
d.set_dest()
d.set_exit_all_at_eliminate()
d.set_regen_file()
d.set_unique()
d.set_warp_at_eliminate()
d.setf()
d.spawn() - Chyba przywołuje jakiegoś moba (tak po nazwie zobaczyłem)
d.spawn_goto_mob() - Teleportuje gracza do moba chyba
d.spawn_group() - Przywołuje grupke mobów
d.spawn_mob() - Przywołuje moba
d.spawn_move_group() - Nie wiem
d.spawn_move_unique() - Nie wiem
d.spawn_name_mob() - Nie wiem
d.spawn_stone_door()
d.spawn_unique()
d.spawn_wooden_door()
d.unique_get_hp_perc()
d.unique_set_def_grade()
d.unique_set_hp()
d.unique_set_maxhp()
delay()
find_npc_by_vnum()
find_pc_by_name()
find_pc_cond()
game.drop_item()
game.get_event_flag()
game.get_guild_name()
game.get_safebox_level()
game.get_warp_guild_war_list()
game.open_mall() - Otwiera item shopk'a
game.open_safebox() - Otwiera magazyn 
game.request_make_guild()
game.set_event_flag()
game.set_safebox_level()
get_global_time() - Sprawdza która jest godzina
get_locale() - Sprawdza z jakiego jest państwa O_o
get_server_timer_arg()
get_time() - Sprawdza czas...
guild.around_ranking_string()
guild.get_any_war()
guild.get_ladder_point()
guild.get_name()
guild.get_rank()
guild.get_reserve_war_table()
guild.get_warp_war_list()
guild.high_ranking_string()
guild.is_bet()
guild.is_war()
guild.level()
guild.name()
guild.war_bet()
guild.war_enter()
highscore.register()
highscore.show()
horse.advance()
horse.feed()
horse.get_grade()
horse.get_health()
horse.get_health_pct()
horse.get_hp()
horse.get_level()
horse.get_stamina()
horse.get_stamina_pct()
horse.is_dead()
horse.is_mine
horse.is_riding()
horse.revive()
horse.ride()
horse.set_level()
horse.summon()
horse.unride()
horse.unsummon()
input() - Robi takiego textbox gdzie się wpisuje text, no wiesz co 
is_test_server() - Chyuba sprawdza czy serw jest GM MODE
item.get_count()
item.get_level()
item.get_name()
item.get_refine_vnum()
item.get_size()
item.get_socket()
item.get_sub_type()
item.get_type()
item.get_value()
item.get_vnum()
item.has_flag()
item.next_refine_vnum()
item.remove()
item.set_socket()
item_name()
loop_timer()
makequestbutton()
marriage.divorce_time_check()
marriage.end_wedding()
marriage.engage_to()
marriage.find_married_vid()
marriage.get_married_time()
marriage.get_wedding_list()
marriage.join_wedding()
marriage.marry_to()
marriage.remove()
marriage.set_to_marriage()
marriage.warp_to_my_marriage_map()
marriage.wedding_dark()
marriage.wedding_snow()
marriage.wedding_music()
marriage.wedding_is_playing_music()
math.floor()
math.max()
math.mod()
math.random()
member.chat()
member.clear_ready()
member.set_ready()
mob.spawn()
mob.spawn_group()
mob_name()
mob_vnum()
next_time_is_now()
next_time_set()
notice()
npc.dec_remain_hairdye_count()
npc.dec_remain_skill_book_count()
npc.get_empire()
npc.get_race()
npc.get_remain_hairdye_count()
npc.get_remain_skill_book_count()
npc.getrace()
npc.is_near()
npc.is_near_vid()
npc.is_pc()
npc.is_quest()
npc.kill() - Zabija npc  npc.kill(20016)   20016 to id kowala
npc.lock()
npc.open_shop() - Otwiera sklepik NPC'ta
npc.purge() - wiadomo (nie które funkcjepomijam bo są bardzo proste  )
npc.unlock()
npc_get_job()
npc_is_same_empire()
npc_is_same_job()
number()
party.chat()
party.clear_ready()
party.get_max_level()
party.get_near_count()
party.getf()
party.is_leader()
party.is_party()
party.run_cinematic()
party.setf()
party.setqf()
party.show_cinematic()
party.syschat()
pc.aggregate_monster()
pc.change_alignment()
pc.change_gold()
pc.change_money()
pc.change_sp()
pc.changealignment()
pc.changegold()
pc.changemoney()
pc.clear_skill()
pc.clear_sub_skill()
pc.clear_one_skill()
pc.count_item()
pc.countitem()
pc.delqf() - Usuwa coś w MySQL w tabeli quest
pc.destroy_guild() - wiadomo (nie będe już pisał "wiadomo")
pc.enough_inventory()
pc.forget_my_attacker()
pc.get_armor()
pc.get_empire()
pc.get_equip_refine_level()
pc.get_exp()
pc.get_gold()
pc.get_guild()
pc.get_horse_level()
pc.get_hp()
pc.get_job()
pc.get_leadership()
pc.get_level()
pc.get_local_x()
pc.get_local_y()
pc.get_map_index()
pc.get_max_hp()
pc.get_max_sp()
pc.get_money()
pc.get_name()
pc.get_next_exp()
pc.get_part()
pc.get_playtime()
pc.get_sex()
pc.get_skill_level()
pc.get_sp()
pc.get_start_location()
pc.get_vid()
pc.get_war_map()
pc.get_weapon()
pc.get_x()
pc.get_y()
pc.getarmor()
pc.getcurrentmapindex()
pc.getempire()
pc.getf()
pc.getgold()
pc.getguild()
pc.gethp()
pc.getleadership()
pc.getmaxhp()
pc.getmaxsp()
pc.getmoney()
pc.getname()
pc.getplaytime()
pc.getqf(name)
pc.get_skill_group()
pc.getsp()
pc.getweapon()
pc.getx()
pc.gety()
pc.give_exp(ilość expa)
pc.give_exp2(jak up)
pc.give_exp_perc(exp w procentach)
pc.give_gold(funkcja na kase)
pc.give_item() - To nie daje itema tylko range chyba
pc.give_item2(ID ITEMA)
pc.give_item_from_special_item_group(ID ITEMA Z ITEMSHOPA)
pc.give_lotto()
pc.has_guild() - Zwraca, czy jesteśmy w gildii (1), czy nie (0)
pc.has_master_skill() -Zwraca, czy mamy skille na G (1), czy nie (0)
pc.hasguild() - To samo co pc.has_guild()
pc.have_map_scroll()
pc.have_pos_scroll()
pc.in_dungeon() - Sprawdza czy jesteśmy w v1 (1), lub nie ma nas tam czyli zwraca (0)
pc.is_guild_master() - wiadomo
pc.is_horse_alive() - wiadomo
pc.is_married() - wiadomo
pc.is_mount() - wiadomo
pc.is_polymorphed() - Sprawdza czy jesteśmy zamienieni za pomocą poli (1) a jak nie to zwraca (0)
pc.isguildmaster() - wiadomo
pc.mount() - wiadomo
pc.pc_attract_ranger()
pc.polymorph(id_moba) - Zamienia nas w moba
pc.refine_equip() - wiadomo
pc.remove_from_guild() - Wywala z gilldi
pc.remove_item(id_tema) - Kasuje nam jakiś item z eq
pc.remove_polymorph() - wiadomo
pc.removeitem() - wiadomo
pc.reset_point() - Resetuje punkty ale niewiem czy skilli czy statusu
pc.revive_horse()
pc.select() - To samo co funkcja Select() tylko czymś się tóżni (nie wiem czym :P )
pc.set_part()
pc.set_warp_location()
pc.set_warp_location_local()
pc.setf()
pc.setqf(nazwa,wartość)
pc.set_skill_group() - Zmienia nas np. z mentala na bodego
pc.set_skill_level() - Zmienia nam np. Aure z 1 na P
pc.unmount()
pc.warp() - Teleportuje nas
pc.warp_exit()
pc.warp_local()
pc.warp_to_guild_war_observer_position() - Teleportuje nas na wojne gildi jak obserwator
pc.is_clear_skill_group()
pc_find_skill_teacher_vid()
pc_find_square_guard_vid()
pc_get_exp_bonus() - Daje nam bonusa na exp np. 50% (tylko dla nas!)
pc_get_village_map_index() - nie wiem
pc_is_novice() - Sprawdza czy mamy lvl niższy od 15
q.done() - wiadomo
q.getcurrentquestindex()
q.no_send()
q.set_clock()
q.set_clock_name()
q.set_clock_value()
q.set_counter()
q.set_counter_name()
q.set_counter_value()
q.set_icon()
q.set_quest_state()
q.set_state()
q.set_title()
q.set_title2()
q.setstate()
q.start()
q.yield()
raw_script()
restart_quest() - Restartuje qesta
say() - Pisze na ekranie jakiś tekst (wiadomo..)
say_npc_name() - nie wiem za bardzo
say_pc_name() - pisze cos tam na nick gracza???
say_reward() - Tym piszemy np.  say_reward("Otrzymałeś Miecz +9")
say_title() - Tytuł ten taki na żółto
say_item() - Wyskakuje obrazek itema chyba?
say_item_vnum() - jak up
select() - Tym robimy np. wybór  TAK lub NIE	przykład: select ( "Tak","Nie" ) zwraca 1 gdy nacisnie sie na tak a zwraca 2 gdy naciśnie się na Nie
select_table()
clear_letter() - Usuwa litery z ekranu
send_letter() - Pisze, coś jak say()
send_letter_ex()
server_loop_timer()
server_timer()
set_quest_state() - Zmienia state quest'a
set_state() - Zmieina state
setbgimage()
setcolor()
setleftimage()
setmapcenterposition()
setskin()
setstate()
show_horse_menu() - Pokazuje menu konia
skill_group_dialog()
syschat() - Coś debuguje (?)
table.insert()
table.foreach()
table.foreachi()
table.getn()
table_get_random_item()
target.clear()
target.delete()
target.id()
target.npc()
target.pc()
target.pos()
target.vid()
test_chat()
time_hour_to_sec()
time_min_to_sec()
timer() - licznik , stoper
tonumber()
tostring()
type()
wait() - Tworzy przycisk "Dalej"
pc.is_engaged()
time_to_str() - Zmeina czas (liczby) na słowo chyba
string.format()
math.ceil() -- aufrunden mathematisch
pc.is_gm() - sprawdza czy dana osoba to gm jak true to zwraca 1 jak false 0...
pc.get_gm_level()
pc.get_alignment() - Zwraca range gracza...
pc.get_real_alignment() - nie wiem
pc.learn_grand_master_skill() - Wbija skill np. Z G1 na G2 (musi być na G!!!) i wbija tylko o1
pc.is_skill_book_no_delay() - Sprawdza czy ktoś ma użyty zwój egzo czy nie. Wiadomo 1 lub 0
pc.remove_skill_book_no_delay() - Usuwa działanie zwoja egzo
__get_empire_priv_string() - Priv Zuo na jedno królestwo
__give_empire_priv()
npc.get_guild()
pc.mining() - sprawdza czy aktualnie korzystasz z kilofa (?)
d.notice() - coś związane z notatkami ale nie mam pojęcia co to jest "d"
pc.ore_refine()
under_han()
d.kill_all() - Zabija all potwory z całej mapki (?)
d.setqf()
__get_guild_priv_string()
__give_guild_priv()
__get_guildid_byname()
item.get_id()
item.select() - wybierasz item z eq
select_item() - co up
item.select_cell()
pc.diamond_refine()
__fish_real_refine_rod()
__refine_pick()
item.get_cell()
building.reconstruct()
arena.start_duel() - rozpoczyna pvp na arenie
arena.get_duel_list() - wiadomo
arena.add_observer() - Dodaje obserwatora do pvp na arenie
arena.is_in_arena()
BuildSkillList()
notice_all()
warp_all_to_village() - Wszystkich teleportuje do M1 (swojego królestwa)
say_in_map() - Domyślcie się bo ja nie wiem
goldbar.quest()
warp_all_in_map() - Wszystkich teleportuje na jakąś mapke (cool)
regen_in_map() - all potworom z mapki regenuje się full hp
kill_all_in_map() - zabija all na mapie O_o
notice_in_map()
forked.decdeadcount()
forked.cleardeadcount()
forked.setdeadcount()
forked.initkillcount()
forked.inckillcount()
forked.initmobkillcount()
forked.incmobkillcount()
forked.getmobkillcount()
warp_all_except_my_empire_in_map()
warp_all_my_empire_in_map()
forked.initforked()
warp_to_village() - psiałem juz wczesinej
forked.getdeadcount()
forked.incbosskillcount()
forked.getbosskillcount()
forked.getsungziposx()
forked.getsungziposy()
forked.getpassstartposx()
forked.getpassstartposy()
forked.getsungzimapindex()
forked.getpassmapindex()
forked.getpassmapindexbyempire()
get_start_mapindex()
get_start_pos_X()
get_start_pos_Y()
forked.getsungzipath()
forked.getpasspath()
forked.getpasspathbyempire()
forked.isforkedmapindex()
forked.issungzimapindex()
warp_all_to_village_except_my_empire()
is_allow_map()
oh.candidacy_list()
oh.election()
oh.candidacy_name()
oh.candidacy()
oh.takemonarchmoney()
pc.teleport() - Teleportuje gracza
oh.isguildmaster()
oh.candidacycount()
affect.remove_hair() - Usuwa fryz 
affect.add_hair() - Dodaje fryz 
affect.add_collect()
affect.add_collect_point()
pc.get_premium_remain_sec() - Daje komus konto premium
oh.ismonarch() - hmmm
oh.spawnmob() - Jak jest gm do mobyu się odradzają (?)
oh.monarchbless()
oh.monarchpowerup()
oh.monarchdefenseup()
pc.send_block_mode()
command("tutaj komenda gma któta ma być wpisana na chacie np . /mob 1903")
oxevent.get_status()
oxevent.open() - Otwiera OX
oxevent.close()
oxevent.quiz()
oxevent.end_event()
oxevent.get_attender()
oxevent.give_item() - Daje itemy za wygraną w OX
oxevent.end_event_force()
forked.getlevellimit()
mgmt.monarch_state() - sPRAWDZA CZY JEST GM
mgmt.monarch_change_lord() - Zmienia króla (chyba w wojnie królestw)
oh.frog_to_empire_money()
oh.spawnguard()
oh.info()
oh.transfer()
oh.warp()
pc.change_sex() - zmienia plec
pc.change_empire() - Zmeina królestwo
pc.get_change_empire_count() - Ile razy zmienił królestwo
get_quest_state() - Wiadomo (State questa sprawdza)
affect.remove_collect()

 

Listę funkcji pozwoliłem sobie wziąść z kursu użytkownika MrOMGWTF -

http://www.mpcforum.pl/topic/122517-kurs-kurs-pisania-questow/

,ponieważ nie odpisuje na PW.

 

 

 

 

 

Ostatnia aktualizacja 21 stycznia 2012 18:00

#drobne poprawki stylistyczne i dokładniejsze wytłumaczenie instrukcji warunkowych

 

Widzę dość duże zainteresowanie tutorialem / kursem :). Chyba wezmę się za jego kontynuację.

spake.png

Sygnaturkę wykonała KisuShite

 

 

take a gun and count to three...

 

windows7_userbar10.gif

45180.gif

Opublikowano

Noo spakuś postarałeś się ;d , masz tego swojego + :P

Zapraszam na prywatny serwer dedykowany metin2 !

 

 

Serwer zwie się Afrine :

 

 

Miła atmosfera , walczymy z cheaterami ! :)

 

Team zawsze pomoże graczom .

Opublikowano

Nie wiedziałeś co to zmienna?

Nie no naprawdę, po co się kompromitujesz pisząc tego posta.

Wpisał byś w google "Lua Zmienna" i masz...

Weź, naprawde szkoda pisać.

Spake,

opisz jeszcze jak ustalić wartości globalne ;)!

sygna RMCF1902

Opublikowano

Tutekl dobry, dla nowicjuszy pro super objaśnione łap + zasłużyłeś.

 

 

@up te twoje pokemny mnie już dobiją, jeszcze raz wyśrodkujesz tekst a cię zgłoszę za spam buraku... Drugi szczepan wszystko wie, nic nie robi.... Pochwal się swoimi osiągnięciami. A ty wiesz co to zmienna?? Jestem uczniem technikum informatycznego i to dość obszerne, w jednej definicji trudno to objaśnić, nawet mi na początku pisanie questów sprawiało trudności, mimo tego, że wcześniej miałem styczność z językami programowania, poznałem operatory, instrukcje przypisania, zmienne, stałe itp... Jesteś niemożliwy wszędzie gdzie zajrzę widzę twoje bezsensowne nic nie wnoszące do tematu wypowiedzi. To nie jest groźba, a raczej ostrzeżenie. Jeśli nie przestaniesz spamować to cie okroje...

235761444056892195480.gif

Opublikowano
d.new_jump_all()

Przerzuca wszystkich z obecnych na mapie do wybranego dunga(należy podać w argumentach id mapy, kord X i Y)

Można podejrzeć w queście dt, tego się używa do przerzutu z parteru na 1 piętro.

Rozpisz jeszcze wheny, z dostępnymi zdarzeniami typu take, kill, login etc. + używanie z tym "with". To się może innym przydać.

Opublikowano

Spodziewałem się czegoś lepszego,opisz wheny użycie najbardziej przydatnych funkcji.

@Up jakty dajesz kawałek kodu w innym języku programowania do questu lua i działa? Bo jestem bardzo ciekaw.

GG:5542533

Bez jakichkolwiek danych,proszę nie pisać w sprawie pomocy...

Opublikowano

bardzo rozbódowany ładnie zaraz dam co zauwarzyłem:

building.get_land_id() - sprawdza id terenu gildi
building.get_land_info() - sprawdza info o terenie gildi
building.has_land() - Nie wiem
building.set_land_owner() -- coś z zbudowaniem terenu gildi(?)
say_item() - Wyskakuje obrazek itema i jakie chcemy tam info
say_item_vnum() - wyskauje obrazek itema + id + nazwa
affect.add() - Dodaje bon nie do broni tylko po prostu do postaci takie coś jak na pl z questami
affect.remove() - usuwa bon

@down

when to jak dla mnie określenie według czego ma to być np.

when login or levelup begin

syschat("właśnie się zalogowałeś lub wbiłeś lvl witamy :)")

end

czyli:

when login or levelup begin --po zalogowaniu lub lvlup będą funkcje niżej

syschat("właśnie się zalogowałeś lub wbiłeś lvl witamy :)") -na czacie się pojawi taki text

end -zakończenie when

większość

tych funkcji by WoJjTeK

when login or levelup or enter or leave or kill or chat or click or use or logout begin

można

użyć:

when 222.use begin
say("użyłęm itemu i coś mnie pierdolneło ")
end

when 12123.chat."yyy zajebać ci?" begin
say("nie nie chce")
end

211c73cd6486beb.gif

Minecraft

odkrywcai.pngwolftamer.png

Odkrywca

Wolfer:Lubie pieski:P

Jeżeli jesteś człowiek to kliknij na obrazek:

baner6.gif

Opublikowano

@UP

Języki programowania między sobą różnią się bardzo niewiele,praktycznie tylko składnią i możliwościami.

 

Instrukcji when nierozumiem dokońca,jeśli ktoś ją opisze to będe bardzo wdzięczny.

Resztę tutoriala napiszę albo dzisiaj wieczorem albo jutro,bo już nie mam sił dzisiaj ;d.

spake.png

Sygnaturkę wykonała KisuShite

 

 

take a gun and count to three...

 

windows7_userbar10.gif

45180.gif

Opublikowano

nooo narescie mam nadzieje ze wkoncu uda mi sie napisac jakis pro quest

userbarwb.png

Zawsze promocje na sygnatury ^^

Opublikowano

Świetny poradnik dla kogoś kto miał już styczność z językami programowania. Z wcześniejszych tutów nie wyniosłem nic, ten jest lepszy od wszystkich poprzednich moim zdaniem. Leci + i 5.

Opublikowano

state start begin -- rozpoczęcie questa w grze

Zmień to.

Mogę napisać :

quest kowaltoMenda begin
state japierdolamento begin
...

To też będzie działać...

To nie jest rozpoczęcie questa w grze tylko pierwszy etap tego questa w grze ;)!

sygna RMCF1902

  • 1 rok później...
Opublikowano

mam problem jak zrobić żeby np. jak zrobić żeby np. na czacie wyświetlił się kliknąłeś na potki jak kliknę na kategorię potki

 

quest test begin
state start begin
 when login or levelup with pc.get_level() >= 46 begin
  set_state(kategorie)
 end
end
state kategorie begin
 select("Potki","Pelerynki","KD")
end
end

Opublikowano

Pięknie opisane, mam zamiar znów się zabierać za zabawę z serwerem, lecz teraz na wyższej szkole jazdy. :D

 

Tyle już jest tutoriali i kursów na ten temat

wink.gif...

Po co kolejny?

No ale dobra, + biggrin.gif!

A coś w stylu un/pakowaniu .eix .epk jest?

Tzn jakiś tutrial.

Opublikowano

Mam pytanie czy ma jakies znaczenie uzywanie TAB np. czesto w quescie widze :

[TAB][TAB][TAB] end

[TAB][TAB] end

[TAB] end

 

czy mozna poprostu

end

end

end

>>>> Jakże będą chrząkać warchlaki gdy usłyszą jak cierpiał stary dzik <<<<

Opublikowano

Kolejne pytanie od czego zalezy ilośc end ? i co mam źle w tym queście wykonanym prze zemnie :

 

quest test1 begin

state start begin

when login or levelup with pc.get_level() >= 100 begin

end

when letter begin

local v = find_npc_by_vnum(20084)

if v != 0 then

target.vid("__TARGET__", v, "Ulepszacz")

end

send_letter("Ulepszacz")

say("Witaj")

say("Chcesz otrzymac Ulepszacz ?")

local = select("Tak", "Nie")

if == 2 then

return

elseif == 1 then

pc.give_item2(30137, 2)

end

end

end

 

chodzi w nim ze koles na isc do npc 20084 i wizasc ulpeszacz xD

>>>> Jakże będą chrząkać warchlaki gdy usłyszą jak cierpiał stary dzik <<<<

Opublikowano

spróbuj teraz ob czyściłem ci kod

quest test1 begin
state start begin
 when login or levelup with pc.get_level() >= 100 begin
 when letter begin
 local v = find_npc_by_vnum(20084)
 if v != 0 then
  target.vid("__TARGET__", v, "Ulepszacz")
 end
 send_letter("Ulepszacz")
 say("Witaj")
 say("Chcesz otrzymac Ulepszacz ?")
 local = select("Tak", "Nie")
 if == 2 then
  return
 elseif == 1 then
  pc.give_item2(30137, 2)
 end
end
end

 

miałeś o jeden za dużo end

a poza tym o questach pisz tutaj

http://www.mpcforum.pl/topic/223876-pisanie-poprawa-questw

Opublikowano

Witam !

Po pierwsze co chciałbym powiedzieć,to wiem że był podobny tutorial,tyle że mało obszerny,mało przekazujący.

Po drugie chciałbym wspomnieć,że zacząłem tutorial pisać na kacu po nieodespanym Sylwestrze,więc za jakiekolwiek błędy przepraszam.

Po trzecie - jeśli czegoś nierozumiesz,nie minusuj - pisanie questów,tak jak i pisanie stron WWW,czy aplikacji komputerowych wymaga ćwiczeń i czasu.

 

Wstęp

 

 

 

Questy do gry Metin2 pisane są w języku LUA - niektórzy z was może się już z nim spotkali,jest używany w wielu grach Online i nie tylko.

Edytor LUA - polecam Notepad++ - sam go używam nie tylko do LUA,lecz i do PHP oraz CSS.

Jeśli czegoś nierozumiesz,potrzebujesz więcej informacji - odsyłam do manuala

http://www.lua.org/manual/5.1/

 

 

 

Część 0 - LUA i pliki serwerowe

 

 

 

Oczywiście,questy pod grę Metin2 mają swoją budowę - rozpoczynają się linijkami

quest nazwa begin -- Coś w rodzaju indeksu
state start begin -- rozpoczęcie questa w grze

Oraz mają swoje własne funkcje - patrz rozdział "Lista funkcji".

 

 

 

Część I - zmienne i operatory

 

 

 

Zmienne

Może najpierw zaczniemy od tego....czym jest właściwie zmienna ?

Zmienna to nic innego,jak zarezerwowane miejsce w pamięci komputera (w tym wypadku serwera) dla różnych typów danych,zaczynając od liczb całkowitych aż po tekst.

Jak wygląda zmienna ?

Zmienne w języku LUA wyglądają tak:

zmienna1 = 'jakiś tam tekst'   -- zmienna tekstowa,inaczej "string"
zmienna2 = 7   -- zmienna liczbowa
zmienna3 = TRUE -- zmienna typu bool (true lub false - prawda lub fałsz)

Jak można zauważyć, przypisanie tekstu do zmiennej tekstowej musi się zaczynać znakiem ' oraz kończyć ' .

Przypisanie liczby do zmiennej liczbowej wygląda podobnie - tylko tutaj nie nie opatrujemy liczby znakami '' .

 

Zasięg zmiennych w języku LUA można określić na dwa sposoby:

local zmienna = TRUE -- zmienna lokalna,czyli zmienna która została wywołana wewnątrz jakiegoś bloku kodu (pętli,instrukcji warunkowej,funkcji itd) i wraz z zamknięciem tego bloku kodu ta zmienna poprostu "ginie".
zmienna = TRUE -- zmienna globalna,czyli dostępna w całym queście.

 

WAŻNE !

Nazwy zmiennych nie mogą nosić nazw:

end,

if,

while,

and,

or .

Powyższe nazwy są zarezerwowane przez język LUA i użytkownik nie ma możliwości użycia tych nazw.

Język LUA odróżnia wielkie litery oraz małe,więc zmienne "zmienna1" oraz "Zmienna1" to dwie inne zmienne;właśnie tym sposobem możemy ominąć ograniczenia nazw zmiennych stosując np.

zamiast zmiennej "end" zmienną "End" itd.

 

Operatory

Operatory to nic innego,jak funkcje matematyczne na zmiennych.

W LUA istnieją takie operatory:

> - większy,
< - mniejszy,
== - równy (WAŻNE ! Pojedynczy znak "=" oznacza przypisanie !)
<= - mniejszy lub równy,
>= - większy lub równy.
++ - inkrementacja zmiennej (dodawanie do zmiennej 1)
-- - dekrementacja (odejmowanie od zmiennej 1)

 

Operatory przydadzą się nam w dalszej części tutoriala,lecz lepiej zaznajomić się z nimi podczas poznawania zmiennych.

 

 

 

 

Część II - instrukcje warunkowe oraz komentarze

 

 

 

Instrukcje warunkowe

Instrukcje warunkowe - praktycznie najważniejsza część pisania questów.

Bez tego ani rusz !

 

-Instrukcja warunkowa if

Instrukcja warunkowa if ma bardzo prostą budowę :

if warunek then
instrukcja
end

Powyższa instrukcja zostanie wykonana gdy spełni się jakiś warunek.

Jeśli nie zostanie on spełniony,instrukcja nie wykona się.

Warunkiem może być praktycznie wszystko,dam wam przykład na podstawie dwóch zmiennych :

quest nazwa begin
state start begin

zmienna1 = 20
zmienna2 = 5

if zmienna1 > zmienna2 then
chat("Blablabla,blabla")
end
end
end

Pomyślcie teraz,czy powyższa instrukcja się wykona ? Na czym polega ?

 

 

Powyższa instrukcja wykona się,gdy zmienna1 będzie większa od zmienna2 - tak jest ? Tak,więc instrukcja się wykona - w rezultacie na chacie w grze wyświetli się

tekst Blablabla,blabla.

 

Po drugie - pewnie zdziwiliście się,dlaczego na końcu są wyrazy "end" ?

Jest to zakończenie instrukcji warunkowej,pętli oraz funkcji. Gdy nie zakończymy jednych z tych rzeczy wyrazem "end" kod się prawdopodobnie nie skompiluje.

Zawsze na końcu questu muszą być conajmniej dwa wyrazy end,dlaczego ? Ponieważ musimy zakończyć cały quest :

quest nazwa begin
state start begin

 

 

-Instrukcja warunkowa if-else

Instrukcja ta jest jakby dopełnieniem wcześniejszej.

Tyle,że jeśli tutaj warunek się spełni zostanie wykonana inna instrukcja,jeśli się nie spełni inna.

Przykład:

quest test begin
state start begin

fail1=50
fail2=50
if fail1~=fail2 then
chat("tekst numer jeden")
else
chat("tekst numer dwa")
end

 

Pierwsze,co rzuciło się w oczy pewnie nowy operator - "~=" - oznacza on poprostu to,że warunek NIE został spełniony,czyli np.

zmienna1 NIE równa się zmiennej2 , zmienna tekstowa jest inna od drugiej zmiennej tekstowej etc.

Drugie co rzuciło się w oczy - wyraz else - po angielsku oznacza on poprostu inaczej,czyli kod po przetłumaczeniu na język zrozumiały dla nas,wyglądałby tak:

fail1 to jest 50
fail2 to jest 50

jeśli fail1(50) nierówna się fail2(50) zrób
wyświetl tekst numer jeden na chacie
lub jeśli fail1 równa się fail2
wyświetl tekst numer dwa na chacie
koniec

Myślę,że zrozumieliście tongue.gif.

 

-Instrukcja warunkowa when

Instrukcja when - bardzo mało informacji o niej w internecie,możliwe że jest to instrukcja warunkowa napisana przez twórców gry.

Więc tak,składnia when wygląda tak:

when warunek with coś begin
instrukcja
end

 

Dalej wam niestety nie powiem,sam dokońca nie rozumiem tej instrukcji,jeśli się dowiem czegoś więcej to napiszę.

 

Komentarze

Co to są komentarze ?

Komentarze to nic innego,jak nic nieznaczące dla gry,jak i dla kompilera LUA ciągi znaków pomagające quest writerowi w zorientowaniu się w kodzie skryptu (tak,tak,quest writer może się pogubić we własnym kodzie....),lub jeśli quest pisze kilka osób,komentowane są niektóre elementy,żeby praca przebiegała sprawniej i szybciej.

Jak stosować komentarze w języku LUA ?

 

-Komentarze jednolinijkowe

Komentarze jednolinijkowe rozpoczyna się dwoma myślnikami "--" ,po tych myślnikach kod nie jest traktowany jako kod tylko nic nieznaczący tekst.

[.....]
if zmienna>zmienna13 then -- to jest właśnie komentarz
[....]

-Komentarze wielolinijkowe

Komentarze wielolinijkowe zaczynamy od " --[[ " oraz kończymy "]]"

[....]
--[[
if zmienna==kowal then
chat("Tak,to jest kowal !")
end
]]
[....]

W powyższym kodzie kompilator pominie linie między znakami "--[[" oraz "]]" .

 

 

 

 

 

 

 

 

 

Lista funkcji

 

 

 

Najbardziej przydatne

chat() - Pisze na chacie wiadomość tekstową
chat("Tutaj tekst")

say() - Pisze wiadomość w okienku
say("Witaj na serwerze xxx ! Na początek dostaniesz startowy ekwipunek....")

say_reward() - pisze w okienku na ciemno-pomarańczowo,używane głównie do pisania nagród itd.
say_reward("Zbroja z czarnej stali+9")

say_item() - wyświetla w okienku obrazek przedmiotu
say_item(19) - wyświetli się obrazek Miecza +9

 

Inne

 

__give_char_priv()
addimage()
addmapsignal()
affect.add() - Dodaj się jakiś wpływ (nie wiem za bardzo)
affect.remove() - Wiadomo, usuwa UP
affect.remove_bad() - Usuwa się negatywny wpływ np. spowolnienie chyba
affect.remove_good() - Usuwa pozytywny wpływ np. aure
bool_to_str() - Nie wiem ale to jest jakiś algorytm który coś oblicza
building.get_land_id() - Nie wiem
building.get_land_info() - Nie wiem
building.has_land() - Nie wiem
building.set_land_owner() -- Nie wiem
char_log() -Wpisuje coś w MySQL do jakiegoś loga itp. (?)
chat() - Pisze na czacie wiadomość tekstową
clear_server_timer() - Resetuje zegar serwa (z tym zegarem to lepiej sie nie bawic)
clearmapsignal() - Nie wiem
cleartimer() - Resetuje jakiś stoper (np. w misjach na czas)
cmdchat() - pisze coś na czacie (?)
color(r,g, - to służy do wpisywania kolorów w postaci R,B,G
complete_quest() - Kończy questa (?)
complete_quest_state() - Nie wiem
confirm() - potwierdzenie
sys_log() - Pisze coś w systemowym logu (?)
d.check_eliminated() - Sptawdza ile mobów zostało zabitych chyba
d.clear_regen() - Nie wiem
d.count_monster() - ilość jakiś potworów
d.exit() - wiadomo
d.exit_all() - wiadomo
d.exit_all_to_start_position() - koniec czegoś tam i powraca do pierwszej pozycji ( czyli do pierwszego state)
d.get_kill_mob_count() - Ile jeszcze mobów trzeba zabić (taki licznik jakby)
d.get_kill_stone_count() - UP tylko że metinów (kamieni)
d.get_map_index() - Nie wiem
d.getf() - Nie wiem
d.is_unique_dead() - Sprawdza czy jest na dedzie (  )
d.is_use_potion() - Nie wiem ale coś związane z potami
d.join() - Nie wiem
d.jump_all() - Nie wiem
d.jump_all_local() - Nie wiem
d.kill_unique() - Nie wiem
d.new_jump()
d.new_jump_all()
d.purge() - To samo co komenda /purge
d.purge_unique() - UP tylko że coś inaczej
d.regen_file()
d.revived()
d.select() - Coś takiego jak funkcja Select()
d.set_dest()
d.set_exit_all_at_eliminate()
d.set_regen_file()
d.set_unique()
d.set_warp_at_eliminate()
d.setf()
d.spawn() - Chyba przywołuje jakiegoś moba (tak po nazwie zobaczyłem)
d.spawn_goto_mob() - Teleportuje gracza do moba chyba
d.spawn_group() - Przywołuje grupke mobów
d.spawn_mob() - Przywołuje moba
d.spawn_move_group() - Nie wiem
d.spawn_move_unique() - Nie wiem
d.spawn_name_mob() - Nie wiem
d.spawn_stone_door()
d.spawn_unique()
d.spawn_wooden_door()
d.unique_get_hp_perc()
d.unique_set_def_grade()
d.unique_set_hp()
d.unique_set_maxhp()
delay()
find_npc_by_vnum()
find_pc_by_name()
find_pc_cond()
game.drop_item()
game.get_event_flag()
game.get_guild_name()
game.get_safebox_level()
game.get_warp_guild_war_list()
game.open_mall() - Otwiera item shopk'a
game.open_safebox() - Otwiera magazyn 
game.request_make_guild()
game.set_event_flag()
game.set_safebox_level()
get_global_time() - Sprawdza która jest godzina
get_locale() - Sprawdza z jakiego jest państwa O_o
get_server_timer_arg()
get_time() - Sprawdza czas...
guild.around_ranking_string()
guild.get_any_war()
guild.get_ladder_point()
guild.get_name()
guild.get_rank()
guild.get_reserve_war_table()
guild.get_warp_war_list()
guild.high_ranking_string()
guild.is_bet()
guild.is_war()
guild.level()
guild.name()
guild.war_bet()
guild.war_enter()
highscore.register()
highscore.show()
horse.advance()
horse.feed()
horse.get_grade()
horse.get_health()
horse.get_health_pct()
horse.get_hp()
horse.get_level()
horse.get_stamina()
horse.get_stamina_pct()
horse.is_dead()
horse.is_mine
horse.is_riding()
horse.revive()
horse.ride()
horse.set_level()
horse.summon()
horse.unride()
horse.unsummon()
input() - Robi takiego textbox gdzie się wpisuje text, no wiesz co 
is_test_server() - Chyuba sprawdza czy serw jest GM MODE
item.get_count()
item.get_level()
item.get_name()
item.get_refine_vnum()
item.get_size()
item.get_socket()
item.get_sub_type()
item.get_type()
item.get_value()
item.get_vnum()
item.has_flag()
item.next_refine_vnum()
item.remove()
item.set_socket()
item_name()
loop_timer()
makequestbutton()
marriage.divorce_time_check()
marriage.end_wedding()
marriage.engage_to()
marriage.find_married_vid()
marriage.get_married_time()
marriage.get_wedding_list()
marriage.join_wedding()
marriage.marry_to()
marriage.remove()
marriage.set_to_marriage()
marriage.warp_to_my_marriage_map()
marriage.wedding_dark()
marriage.wedding_snow()
marriage.wedding_music()
marriage.wedding_is_playing_music()
math.floor()
math.max()
math.mod()
math.random()
member.chat()
member.clear_ready()
member.set_ready()
mob.spawn()
mob.spawn_group()
mob_name()
mob_vnum()
next_time_is_now()
next_time_set()
notice()
npc.dec_remain_hairdye_count()
npc.dec_remain_skill_book_count()
npc.get_empire()
npc.get_race()
npc.get_remain_hairdye_count()
npc.get_remain_skill_book_count()
npc.getrace()
npc.is_near()
npc.is_near_vid()
npc.is_pc()
npc.is_quest()
npc.kill() - Zabija npc  npc.kill(20016)   20016 to id kowala
npc.lock()
npc.open_shop() - Otwiera sklepik NPC'ta
npc.purge() - wiadomo (nie które funkcjepomijam bo są bardzo proste  )
npc.unlock()
npc_get_job()
npc_is_same_empire()
npc_is_same_job()
number()
party.chat()
party.clear_ready()
party.get_max_level()
party.get_near_count()
party.getf()
party.is_leader()
party.is_party()
party.run_cinematic()
party.setf()
party.setqf()
party.show_cinematic()
party.syschat()
pc.aggregate_monster()
pc.change_alignment()
pc.change_gold()
pc.change_money()
pc.change_sp()
pc.changealignment()
pc.changegold()
pc.changemoney()
pc.clear_skill()
pc.clear_sub_skill()
pc.clear_one_skill()
pc.count_item()
pc.countitem()
pc.delqf() - Usuwa coś w MySQL w tabeli quest
pc.destroy_guild() - wiadomo (nie będe już pisał "wiadomo")
pc.enough_inventory()
pc.forget_my_attacker()
pc.get_armor()
pc.get_empire()
pc.get_equip_refine_level()
pc.get_exp()
pc.get_gold()
pc.get_guild()
pc.get_horse_level()
pc.get_hp()
pc.get_job()
pc.get_leadership()
pc.get_level()
pc.get_local_x()
pc.get_local_y()
pc.get_map_index()
pc.get_max_hp()
pc.get_max_sp()
pc.get_money()
pc.get_name()
pc.get_next_exp()
pc.get_part()
pc.get_playtime()
pc.get_sex()
pc.get_skill_level()
pc.get_sp()
pc.get_start_location()
pc.get_vid()
pc.get_war_map()
pc.get_weapon()
pc.get_x()
pc.get_y()
pc.getarmor()
pc.getcurrentmapindex()
pc.getempire()
pc.getf()
pc.getgold()
pc.getguild()
pc.gethp()
pc.getleadership()
pc.getmaxhp()
pc.getmaxsp()
pc.getmoney()
pc.getname()
pc.getplaytime()
pc.getqf(name)
pc.get_skill_group()
pc.getsp()
pc.getweapon()
pc.getx()
pc.gety()
pc.give_exp(ilość expa)
pc.give_exp2(jak up)
pc.give_exp_perc(exp w procentach)
pc.give_gold(funkcja na kase)
pc.give_item() - To nie daje itema tylko range chyba
pc.give_item2(ID ITEMA)
pc.give_item_from_special_item_group(ID ITEMA Z ITEMSHOPA)
pc.give_lotto()
pc.has_guild() - Zwraca, czy jesteśmy w gildii (1), czy nie (0)
pc.has_master_skill() -Zwraca, czy mamy skille na G (1), czy nie (0)
pc.hasguild() - To samo co pc.has_guild()
pc.have_map_scroll()
pc.have_pos_scroll()
pc.in_dungeon() - Sprawdza czy jesteśmy w v1 (1), lub nie ma nas tam czyli zwraca (0)
pc.is_guild_master() - wiadomo
pc.is_horse_alive() - wiadomo
pc.is_married() - wiadomo
pc.is_mount() - wiadomo
pc.is_polymorphed() - Sprawdza czy jesteśmy zamienieni za pomocą poli (1) a jak nie to zwraca (0)
pc.isguildmaster() - wiadomo
pc.mount() - wiadomo
pc.pc_attract_ranger()
pc.polymorph(id_moba) - Zamienia nas w moba
pc.refine_equip() - wiadomo
pc.remove_from_guild() - Wywala z gilldi
pc.remove_item(id_tema) - Kasuje nam jakiś item z eq
pc.remove_polymorph() - wiadomo
pc.removeitem() - wiadomo
pc.reset_point() - Resetuje punkty ale niewiem czy skilli czy statusu
pc.revive_horse()
pc.select() - To samo co funkcja Select() tylko czymś się tóżni (nie wiem czym :P )
pc.set_part()
pc.set_warp_location()
pc.set_warp_location_local()
pc.setf()
pc.setqf(nazwa,wartość)
pc.set_skill_group() - Zmienia nas np. z mentala na bodego
pc.set_skill_level() - Zmienia nam np. Aure z 1 na P
pc.unmount()
pc.warp() - Teleportuje nas
pc.warp_exit()
pc.warp_local()
pc.warp_to_guild_war_observer_position() - Teleportuje nas na wojne gildi jak obserwator
pc.is_clear_skill_group()
pc_find_skill_teacher_vid()
pc_find_square_guard_vid()
pc_get_exp_bonus() - Daje nam bonusa na exp np. 50% (tylko dla nas!)
pc_get_village_map_index() - nie wiem
pc_is_novice() - Sprawdza czy mamy lvl niższy od 15
q.done() - wiadomo
q.getcurrentquestindex()
q.no_send()
q.set_clock()
q.set_clock_name()
q.set_clock_value()
q.set_counter()
q.set_counter_name()
q.set_counter_value()
q.set_icon()
q.set_quest_state()
q.set_state()
q.set_title()
q.set_title2()
q.setstate()
q.start()
q.yield()
raw_script()
restart_quest() - Restartuje qesta
say() - Pisze na ekranie jakiś tekst (wiadomo..)
say_npc_name() - nie wiem za bardzo
say_pc_name() - pisze cos tam na nick gracza???
say_reward() - Tym piszemy np.  say_reward("Otrzymałeś Miecz +9")
say_title() - Tytuł ten taki na żółto
say_item() - Wyskakuje obrazek itema chyba?
say_item_vnum() - jak up
select() - Tym robimy np. wybór  TAK lub NIE	przykład: select ( "Tak","Nie" ) zwraca 1 gdy nacisnie sie na tak a zwraca 2 gdy naciśnie się na Nie
select_table()
clear_letter() - Usuwa litery z ekranu
send_letter() - Pisze, coś jak say()
send_letter_ex()
server_loop_timer()
server_timer()
set_quest_state() - Zmienia state quest'a
set_state() - Zmieina state
setbgimage()
setcolor()
setleftimage()
setmapcenterposition()
setskin()
setstate()
show_horse_menu() - Pokazuje menu konia
skill_group_dialog()
syschat() - Coś debuguje (?)
table.insert()
table.foreach()
table.foreachi()
table.getn()
table_get_random_item()
target.clear()
target.delete()
target.id()
target.npc()
target.pc()
target.pos()
target.vid()
test_chat()
time_hour_to_sec()
time_min_to_sec()
timer() - licznik , stoper
tonumber()
tostring()
type()
wait() - Tworzy przycisk "Dalej"
pc.is_engaged()
time_to_str() - Zmeina czas (liczby) na słowo chyba
string.format()
math.ceil() -- aufrunden mathematisch
pc.is_gm() - sprawdza czy dana osoba to gm jak true to zwraca 1 jak false 0...
pc.get_gm_level()
pc.get_alignment() - Zwraca range gracza...
pc.get_real_alignment() - nie wiem
pc.learn_grand_master_skill() - Wbija skill np. Z G1 na G2 (musi być na G!!!) i wbija tylko o1
pc.is_skill_book_no_delay() - Sprawdza czy ktoś ma użyty zwój egzo czy nie. Wiadomo 1 lub 0
pc.remove_skill_book_no_delay() - Usuwa działanie zwoja egzo
__get_empire_priv_string() - Priv Zuo na jedno królestwo
__give_empire_priv()
npc.get_guild()
pc.mining() - sprawdza czy aktualnie korzystasz z kilofa (?)
d.notice() - coś związane z notatkami ale nie mam pojęcia co to jest "d"
pc.ore_refine()
under_han()
d.kill_all() - Zabija all potwory z całej mapki (?)
d.setqf()
__get_guild_priv_string()
__give_guild_priv()
__get_guildid_byname()
item.get_id()
item.select() - wybierasz item z eq
select_item() - co up
item.select_cell()
pc.diamond_refine()
__fish_real_refine_rod()
__refine_pick()
item.get_cell()
building.reconstruct()
arena.start_duel() - rozpoczyna pvp na arenie
arena.get_duel_list() - wiadomo
arena.add_observer() - Dodaje obserwatora do pvp na arenie
arena.is_in_arena()
BuildSkillList()
notice_all()
warp_all_to_village() - Wszystkich teleportuje do M1 (swojego królestwa)
say_in_map() - Domyślcie się bo ja nie wiem
goldbar.quest()
warp_all_in_map() - Wszystkich teleportuje na jakąś mapke (cool)
regen_in_map() - all potworom z mapki regenuje się full hp
kill_all_in_map() - zabija all na mapie O_o
notice_in_map()
forked.decdeadcount()
forked.cleardeadcount()
forked.setdeadcount()
forked.initkillcount()
forked.inckillcount()
forked.initmobkillcount()
forked.incmobkillcount()
forked.getmobkillcount()
warp_all_except_my_empire_in_map()
warp_all_my_empire_in_map()
forked.initforked()
warp_to_village() - psiałem juz wczesinej
forked.getdeadcount()
forked.incbosskillcount()
forked.getbosskillcount()
forked.getsungziposx()
forked.getsungziposy()
forked.getpassstartposx()
forked.getpassstartposy()
forked.getsungzimapindex()
forked.getpassmapindex()
forked.getpassmapindexbyempire()
get_start_mapindex()
get_start_pos_X()
get_start_pos_Y()
forked.getsungzipath()
forked.getpasspath()
forked.getpasspathbyempire()
forked.isforkedmapindex()
forked.issungzimapindex()
warp_all_to_village_except_my_empire()
is_allow_map()
oh.candidacy_list()
oh.election()
oh.candidacy_name()
oh.candidacy()
oh.takemonarchmoney()
pc.teleport() - Teleportuje gracza
oh.isguildmaster()
oh.candidacycount()
affect.remove_hair() - Usuwa fryz 
affect.add_hair() - Dodaje fryz 
affect.add_collect()
affect.add_collect_point()
pc.get_premium_remain_sec() - Daje komus konto premium
oh.ismonarch() - hmmm
oh.spawnmob() - Jak jest gm do mobyu się odradzają (?)
oh.monarchbless()
oh.monarchpowerup()
oh.monarchdefenseup()
pc.send_block_mode()
command("tutaj komenda gma któta ma być wpisana na chacie np . /mob 1903")
oxevent.get_status()
oxevent.open() - Otwiera OX
oxevent.close()
oxevent.quiz()
oxevent.end_event()
oxevent.get_attender()
oxevent.give_item() - Daje itemy za wygraną w OX
oxevent.end_event_force()
forked.getlevellimit()
mgmt.monarch_state() - sPRAWDZA CZY JEST GM
mgmt.monarch_change_lord() - Zmienia króla (chyba w wojnie królestw)
oh.frog_to_empire_money()
oh.spawnguard()
oh.info()
oh.transfer()
oh.warp()
pc.change_sex() - zmienia plec
pc.change_empire() - Zmeina królestwo
pc.get_change_empire_count() - Ile razy zmienił królestwo
get_quest_state() - Wiadomo (State questa sprawdza)
affect.remove_collect()

 

Listę funkcji pozwoliłem sobie wziąść z kursu użytkownika MrOMGWTF -

http://www.mpcforum.pl/topic/122517-kurs-kurs-pisania-questow/

,ponieważ nie odpisuje na PW.

 

 

 

Teraz ide się trochę ogarnąć po Sylwestrze,i pisze dalej.

Części drugiej spodziewajcie się za niedługo ;D.

 

CDN....

 

dla potomnych , xdestruck napisal ale usunal wiec lepiej dać tego bp ;p

Opublikowano

Witam.

Chciałbym zrobić questa. ,,Zabójca" Trzeba zabić 500 ludzi. Na początek zrobiłem coś takiego:

quest Zabójca begin

state start begin

when login or levelup with pc.get_level()>=100 begin

when latter begin

say()

say(" Witaj! Zabij 500 graczy, a dostaniesz 500kk! Na prawdę warto!")

confirm()

 

Co mam dalej zrobić, aby quest działał?

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...