![]() |
||||||||||||||||||||||||||||
[HOWTO] Eigene Quests schreiben
Hallo, Ich will euch mal zeigen wie ihr eigene Quests schreiben könnt. Benötigt: Notepad++ mit Lua Syntax Hilighting Eine Liste der Quest funktionen (Ist dabei^^) Geduld Ein Gehirn Umlaute: * Funktioniert Umlaute werden in DE Client angezeigt in China Client wird "?" angezeigt. Spoiler:
à : 195160 | ò : 195178 | è : 195168 | ì : 195172 | ù : 195185 á : 195161 | ó : 195179 | é : 195169 | í : 195173 | ú : 195186 â : 195162 | ô : 195180 | ê : 195170 | î : 195174 | û : 195187 ã : 195163 | õ : 195181 | ë : 195171 | ï : 195175 | ü : 195188 ä : 195164 | ö : 195182 æ: 195166 | ø : 195184 ç : 195167 ñ : 195177 Ä : 195132 Ö : 195150 Ü : 195156 ß : 195159 Einfach statt dem Buchstaben schreiben. Vergleichsoperatoren: 2 Werte vergleichen. Spoiler:
Quest funktionen: Spoiler:
__give_char_priv() -- Einem Charakter einen Bonus geben addimage() -- Ein Bild anzeigen addmapsignal() -- Ein Blinkenden Punkt auf die Map setzen affect.add() -- affect hinzufügen affect.remove() -- affect entfernen affect.remove_bad() -- negativen affect wegmachen affect.remove_good() -- positiven affect entfernen bool_to_str() -- Boolean zu String heisst 1 wird zu true und 0 wird zu false oder so building.get_land_id() -- Id des Landes ausgben building.get_land_info() -- Info über das land ausgeben building.has_land() -- hat land? 0 oder 1 building.set_land_owner() -- setzt den Besitzer des landes char_log() -- schreibt was in die log tabelle? chat() -- schreibt etwas in den chat? clear_server_timer() -- Server timer zurücksezen clearmapsignal() -- Blinkenden Punkt auf der Map Löschen cleartimer() -- timer zurück setzen cmdchat() -- cmd chat ka was color(r,g,b) -- farbe rgb glaubich complete_quest() -- quest abschließen complete_quest_state() -- complete sate confirm() -- bestätigen Ja nein? sys_log() -- etwas in den system log schreiben? d.check_eliminated() -- Checken ob alle Monster im Dungeon Berreich getötet wurden. d.clear_regen() -- Den Respawn im Dungeon anhalten. d.count_monster() -- Monster Anzahl im Dungeon d.exit() -- Spieler verlässt den Dungeon d.exit_all() -- Alle verlassen den Dungeon d.exit_all_to_start_position() -- Alle werden wieder an die Startposition gesetzt. d.get_kill_mob_count() -- Gibt die anzahl der im Dungeon getöteten Mobs aus d.get_kill_stone_count() -- Gibt die anzahl der im Dungeon getöteten Metins aus d.get_map_index() -- Dungeon Map Index d.getf() -- Dungeon Flag d.is_unique_dead() -- Ist ein einziger gestorben? d.is_use_potion() -- Benutzt jemand einen Pott d.join() -- Einer Gruppe im Dungeon beitreten d.jump_all() -- Alle zu einer Position warpen. Dungeon d.jump_all_local() -- Alle Lokal Warpen Dungeon d.kill_unique() -- Wurde ein einzelner getötet d.new_jump() -- Neuer Warp d.new_jump_all() -- Alle Spieler Warpen neu. d.purge() -- Ebene einmalig von Monstern säubern d.purge_unique() -- Eine einziges Monster oder einige verschwinden lassen im Dungeon d.regen_file() -- Monster Respawn datei laden d.revived() -- Wiederbelebt d.select() -- Dungeon Auswahl d.set_dest() -- Dungeon Ziel setzen d.set_exit_all_at_eliminate() -- Wenn ein Gegner getötet wurde verlassen alle die Map d.set_regen_file() -- Respawn datei setzen. d.set_unique() -- Einzelnen setzen im Dungeon d.set_warp_at_eliminate() -- Warp wenn Gegner besiegt. d.setf() -- Dungeon Flag setzen. d.spawn() -- Monster im Dungeon Spawnen d.spawn_goto_mob() -- Spawnt den Mob in Dungeon und teleport dich zu ihm d.spawn_group() -- Spawnt eine Gruppe im Dungeon d.spawn_mob() -- Monster Spawnen im Dungen d.spawn_move_group() -- gruppe spawnen und bewegen? d.spawn_move_unique() -- einen mob spawnen und bewegen? d.spawn_name_mob() -- Mob mit namen spawnen ![]() d.spawn_stone_door() -- Steintür Spawnen d.spawn_unique() -- Einzeln Spawnen d.spawn_wooden_door() -- Holztür spawnen d.unique_get_hp_perc() -- Leben des einzelnen Monsters abrufen oder Spielers kp d.unique_set_def_grade() -- Verteidigung des monsters setzen oder Spielers kp d.unique_set_hp() -- Leben des einzelnen Monsters setzen oder Spielers kp d.unique_set_maxhp() -- Max Leben des einzelnen Monsters setzen oder Spielers kp delay() -- Verzögerung find_npc_by_vnum() -- NPC mit vnum suchen find_pc_by_name() -- spieler bei namen suchen find_pc_cond() -- Spieler auswählen der Konditionen erfüllt game.drop_item() -- Item fallen lassen game.get_event_flag() -- Event Flag abrufen game.get_guild_name() -- Gilden Namen abrufen game.get_safebox_level() -- Lager größe abrugen game.get_warp_guild_war_list() -- Gildenkriegsliste abrufen game.open_mall() -- Itemshop Lager öffnen game.open_safebox() -- Lager öffnen game.request_make_guild() -- Anfrage auf Gilde erstellen senden game.set_event_flag() -- Event Flag setzen game.set_safebox_level() -- Lager größe ändern get_global_time() -- Globale Zeit ausgeben get_locale() -- gewählte locale ausgeben get_server_timer_arg() -- Server Timer value ausgeben get_time() -- zeit ausgeben guild.around_ranking_string() -- Gilden Ranking als String ausgeben guild.get_any_war() -- Jeden Gildenkrieg abrufen guild.get_ladder_point() -- Leader Punkte abrufen guild.get_name() -- Gildenname ausgeben guild.get_rank() -- Gilden Rank ausgeben guild.get_reserve_war_table() -- Gildenkriegs liste guild.get_warp_war_list() -- Gildenkrieg Warpliste guild.high_ranking_string() -- Highscore als Steing (Gilde) guild.is_bet() -- Wurde auf die Gilde geboten guild.is_war() -- nimmt die gilde an einem gildenkrieg teil? guild.level() -- Gildenlevel ausgeben guild.name() -- Gildennamen ausgeben guild.war_bet() -- Auf Gildenkrieg setzen guild.war_enter() -- Gildenkrieg beitreten highscore.register() -- Higscore anmeldung highscore.show() -- Highscore Anzeigen horse.advance() -- Pferd 1 Level up horse.feed() -- Pferd füttern. horse.get_grade() -- Pferde Rang ausgeben horse.get_health() -- Pferde Leben ausgeben horse.get_health_pct() -- Pferde Leben in Prozent horse.get_hp() -- Pferde leben ausgeben horse.get_level() PFerde Level ausgeben horse.get_stamina() -- Pferde ausdauer ausgeben horse.get_stamina_pct() -- Pferde ausdauer in Prozenzt horse.is_dead() -- Ist das Pferd tot? horse.is_mine -- Ist das mein Pferd horse.is_riding() -- Sitze ich auf einem Reittier horse.revive() -- Reittier wiederbeleben horse.ride() -- Pferd reiten horse.set_level() -- Pferde level steigen horse.summon() -- pferd rufen horse.unride() -- vom pferd absteigen horse.unsummon() -- Pferd wegschicken input() -- input feld erstellen wo man was eingeben kann is_test_server() -- Gibt aus ob es auf Testserver gestellt ist. item.get_count() -- Item Anzahl (itemvnum.use) item.get_level() -- Item-Level (itemvnum.use) item.get_name() -- item-namen (itemvnum.use) item.get_refine_vnum() item vnum der nächsten stufe item.get_size() -- item größe item.get_socket() -- item socker item.get_sub_type() -- item subtsype item.get_type() -- item type item.get_value() -- item value item.get_vnum() -- item value item.has_flag() -- item flag item.next_refine_vnum() -- id der nächsten stufe item.remove() -- item löschen item.set_socket() -- Item Socket setzen item_name() -- item namen ausgeben loop_timer() -- 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() -- prüft ob der npc eine quest hat npc.kill() npc.lock() npc.open_shop() npc.purge() 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() -- Gold ändern pc.change_money() -- Gold ändern pc.change_sp() -- SP ändern pc.changealignment() -- Rang ändern pc.changegold() -- Gold ändern pc.changemoney() -- gold ändern pc.clear_skill() -- Skill säubern pc.clear_sub_skill() -- Unterskill leermachen pc.clear_one_skill() -- einen skill säubern pc.count_item() -- item zählen pc.countitem()-- item zählen pc.delqf() -- was in der quest tabelle löschen pc.destroy_guild() -- Gilde auflösen pc.enough_inventory() -- Prüft ob im Inventar platz ist pc.forget_my_attacker() -- Wie Weiße Flagge monster in der nähe beachten dich kurze zeit nicht pc.get_armor() -- Rüstung ausgeben pc.get_empire() -- reich ausgeben 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() -- Leaderschafft ausgeben 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(exp) pc.give_exp2(exp) pc.give_exp_perc(percent) pc.give_gold(gold) pc.give_item(vnum)-- gibt Rang punkte zurück pc.give_item2(vnum) pc.give_item_from_special_item_group(is_item?) pc.give_lotto() pc.has_guild() -- Gibt zurück ob man in einer Gilde ist(1) oder eben nicht(0) pc.has_master_skill() -- Gibt zurück ob man irgendwas auf hat(1) oder eben nicht(0) pc.hasguild() -- Gibt zurück ob man in einer Gilde ist(1) oder eben nicht(0) pc.have_map_scroll() pc.have_pos_scroll() pc.in_dungeon() -- Gibt zurück ob man greade in einem Dungeon ist(1) oder eben nicht(0) pc.is_guild_master() -- Gibt zurück ob man Gilden Leader ist(1) oder eben nicht(0) pc.is_horse_alive() -- Gibt zurück das Pferd des Spielers lebt(1) oder eben nicht(0) pc.is_married() -- Gibt zurück ob man in verheiratet ist(1) oder eben nicht(0) pc.is_mount() pc.is_polymorphed() -- Gibt zurück ob man verwandelt ist(1) oder eben nicht(0) pc.isguildmaster() -- Gibt zurück ob man Gilden Leader ist(1) oder eben nicht(0) pc.mount(vnum,time) -- auf ein reittier aufsteigen pc.pc_attract_ranger() -- abstand messen? pc.polymorph(mob_vnum) -- Spieler Verwandeln pc.refine_equip() -- Gegenstand Verbeßern pc.remove_from_guild() -- Aus Gilde löschen pc.remove_item(item_vnum) -- Gegenstand aus Inventar löschen pc.remove_polymorph() -- Verwandlund rückgangig machen pc.removeitem() -- Gegenstand aus Inventar löschen pc.reset_point() -- Punkte zurück setzen (Status?) pc.revive_horse() pc.select() -- Auswahl pc.set_part() -- Part wie Harr usw setzen pc.set_warp_location() pc.set_warp_location_local() pc.setf() pc.setqf(name,value) pc.set_skill_group() --Lehre wechseln pc.set_skill_level() -- skill level ändern pc.unmount() -- Vom reittier absteigen pc.warp() -- Teleportieren pc.warp_exit() -- Teleportieren (Ausgang) pc.warp_local() -- Lokal warpen wie Tele Hack pc.warp_to_guild_war_observer_position() -- Teleportieren zu Gildenkrieg wächter Typie pc.is_clear_skill_group() pc_find_skill_teacher_vid() pc_find_square_guard_vid() pc_get_exp_bonus() -- Gibt dem EXP Bonus aus pc_get_village_map_index() -- gibt den map index des Dorfes aus pc_is_novice() -- gibt aus ob der Spieler noch unter level 15 ist q.done() -- quest beenden 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() -- state setzen q.start() -- Quest Starten q.yield() raw_script() restart_quest() -- Quest neustarten say() -- einaches sagen say_npc_name() -- gibt Text mit Formatierung für den NPC Namen aus say_pc_name() -- gibt Text mit Formatierung für den Spieler Namen aus say_reward() -- gibt Text mit Formatierung für eine Belohnunh aus say_title() -- gibt Text mit Formatierung für den Titel aus say_item() -- gibt Text mit Formatierung für ein Item aus say_item_vnum()--gibt Text mit Formatierung für ein Item aus<-Wie bei mt2de bei Schmied und Bio select() -- Auswahl die Values müsst ihr selber machen Jede value = 1 auswahl feld wie Ja Nein select_table() -- Ne tabelle ka wie das funktioniert ausprobieren clear_letter() -- Brief löschen usw send_letter() -- Quest Brief senden usw send_letter_ex() -- Quest Brief senden usw mit einer besonderheit ka was xD server_loop_timer() -- Schleifen Timer server_timer() -- timer erstellen? set_quest_state() -- state setzen set_state() -- state setzen setbgimage() setcolor() setleftimage() setmapcenterposition() setskin() setstate() show_horse_menu() -- pferde menu anzeigen skill_group_dialog() syschat() -- debug mode chat fenster 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() -- timer halt ka wie man es benutzt tonumber() -- irgendetwas zur nummer machen tostring() irgendwas zum string machen type() wait() -- erstellt einen weiter Knopf pc.is_engaged() time_to_str() -- Zeit zu String string.format() math.ceil() -- aufrunden mathematisch pc.is_gm() -- gibt aus ob der Spieler GM ist 1 oder 0 pc.get_gm_level() -- gibt das GM level zurück also implementor usw pc.get_alignment() -- gibt Rang punkte zurück pc.get_real_alignment() -- gibt echtes Gemüt zurück pc.learn_grand_master_skill() -- einen skill auf großmeister machen oder war es P immer 1 schritt pc.is_skill_book_no_delay() -- wenn eine Exxo gelesen wurde 1 wenn nicht 0 pc.remove_skill_book_no_delay() -- entfernt den exxo effekt __get_empire_priv_string() -- den Bonus eines Reichs ausgeben __give_empire_priv() -- einem Reich einen Bonus geben npc.get_guild() -- Gilde eines NPCs ausgeben pc.mining() -- prüft ob der Spieler greade an der Mine arbeitet (1) oder eben nicht d.notice() -- eine notiz anscheinend keine ahnung wofür "d" steht pc.ore_refine() under_han() d.kill_all() -- alle töten (monster ?) d.setqf() -- wie gesagt weiß ich nicht aber speichert auch sachen in der quest tabelle __get_guild_priv_string() __give_guild_priv() __get_guildid_byname() item.get_id() item.select() -- Item Auswahl? select_item() -- Item auswahl erstellen? item.select_cell() -- Item Zelle wählen? pc.diamond_refine() -- Steine uppen __fish_real_refine_rod() __refine_pick() item.get_cell() -- Box nummer ausgeben wo das item im inventar ist building.reconstruct() -- gebäude neu aufbauen arena.start_duel() -- duell in der arena starten arena.get_duel_list() -- Duell liste anzeigen arena.add_observer() -- Wächter hinzufügen? arena.is_in_arena() -- befindet sich in arena BuildSkillList() -- skill liste erstellen notice_all() -- überall notiz auffem server? warp_all_to_village() -- alle zurück in ihre dörfer teleportieren oder nur ein reich ka say_in_map() -- in Formartierung für Maps was sagen goldbar.quest() warp_all_in_map() -- allle in eine map teleportieren? regen_in_map() -- alle monster einer map regenerieren? kill_all_in_map() -- alle in der map töten? notice_in_map() -- notiz auf einer map forked.decdeadcount() forked.cleardeadcount() forked.setdeadcount() forked.initkillcount() forked.inckillcount() forked.initmobkillcount() forked.incmobkillcount() forked.getmobkillcount() warp_all_except_my_empire_in_map() -- alle aus mein reich in eine map teleportieren warp_all_my_empire_in_map() -- nur mein reich in map teleportieren forked.initforked() warp_to_village() -- ins dorf teleportieren (nur sich selber?) 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() -- alle in ihre dörfer teleportieren außer mein reich is_allow_map() -- Map erlaubt (1) Map nicht erlaubt (0) oh.candidacy_list() oh.election() oh.candidacy_name() oh.candidacy() oh.takemonarchmoney() pc.teleport() -- sich selber teleportieren oder jemanden zusich holen? oh.isguildmaster() oh.candidacycount() affect.remove_hair() -- harr entfernen affect.add_hair() -- harr geben affect.add_collect() -- irgendwas geben affect.add_collect_point() -- irgendwas geben pc.get_premium_remain_sec() -- wie lange ist man noch premium? oh.ismonarch() -- ist king? oh.spawnmob() -- mob spawnen wenn man king ist? oh.monarchbless() -- king segenen oder er segenet dich? oh.monarchpowerup() -- king bekommt mehr power oder du? oh.monarchdefenseup() -- king rüssi geben? aufjedenfall mehr verteidigung pc.send_block_mode() command("gm befehl") -- jo gm befehel ausfüren nur als gm oxevent.get_status() oxevent.open() -- öffnen oxevent.close() -- schließen oxevent.quiz() -- quiz starten oxevent.end_event() -- even beenden oxevent.get_attender() oxevent.give_item() -- am ende des ox events den gewinner oder gewinnern ein item geben oxevent.end_event_force() -- Mit gewalt das event beenden forked.getlevellimit() mgmt.monarch_state() -- king status mgmt.monarch_change_lord() -- king ändern oh.frog_to_empire_money() oh.spawnguard() oh.info() oh.transfer() oh.warp() pc.change_sex() -- geschlecht des spielers ändern pc.change_empire() -- Reich des spielers ändern pc.get_change_empire_count() -- wie oft schon das reich gewechselt get_quest_state() -- gibt den aktuellen state der quest aus affect.remove_collect() -- affect entfernen ka welchen Einleitung: Wir wolllen in diesem Tutorial eine kleine Quest schreiben. Aber das kommt später erstmal müssen wir ja wissen wie eine Quest Datei aufgebaut ist. Und das zeige ich euch jetzt. Aufbau einer Quest Datei: Kopf der Datei: Jede datei fängt so an. PHP-Code:
Die States: Spoiler:
Jede Quest file hat sogennante States sie beschreiben die einzelnen Teile einer Quest wie den anfang und das ende. Diese States funktionieren als Einhänge Punkte/Hooks PHP-Code:
Den State wechseln wir über PHP-Code:
Spoiler:
Die When berreiche: Die when berreiche tauchen an verschiedenen Stellen auf. Sie stellen sicher das die Reihenfolge stimmt und sachen nur kommen wenn sie kommen sollen. letter = Wenn die Briefe/Quest Briefe geladen werden. info = Wenn man auf eine Quest drückt button = fast wie info login = wenn man sich einloggt -> erklärt warum nach jedem login die Quests wierder auftauchen levelup = wenn ein neues level erreicht wird Beispiel: PHP-Code:
Funktionen: Spoiler:
Es gibt sogennante Funktionen die einem Helfen an Daten zukommen. Diese könnt ihr auch oben in der Funktions liste finden man setzt sie so ein funktionsname(argument1, arugment2) wie das mit den argumenten ist könnt ihr in anderen quest dateien rausfinden. Bedingungen: Spoiler:
Ihr wollt das eine Quest bestimmte einschränkungen habt. Ihr habt z.B jetzt gesagt die quest Bla ist ab level 80. Aber wie wollt ihr z.B machen das 90er weniger keine ahnung was kriegen oder eine Quest belohnung limitieren um Bugs zu vermeiden. Ihr könnt mit den Vergleichsoperatoren von oben dinge vergleichen. PHP-Code:
Ich werde die Liste nochmal überarbeiten. Achja wenn ihr mehrere Abfragen wort ein Beispiel aus einem Lua handbuch. So realisiert ihr z.B nen Simplen Taschenrechner ![]() PHP-Code:
Sachen in der Quest Tabelle Speichern: Spoiler:
Ihr wollt irgendeinen Wert in der Quest Tabelle speichern um ihn Später wieder rauszuholen dazu braucht ihr nur einen befehl und müsst euch nen namen ausdenken. PHP-Code:
PHP-Code:
PHP-Code:
Sachen aus der Quest tabelle abfragen: Spoiler:
So könnt ihr auch sachen aus der Tabelle überprüfen. Dazu hier mal die von mir gefixxte Goldbarren Quest Zitat:
Es gibt auch noch d.setqf() und d.getqf() für was die sind weiß ich noch nicht genau Los gehts: Also wir brauchen erstmal eine Story die wir Simpel halten. Sagen wir Die Gemi will Soon nach nem Date fragen. Und ihr sollt die Nachricht überbringen. Fangen wir also an: Spoiler:
PHP-Code:
|
![]() |