Ich habe mich mal kurz dranngesetzt wie man das Questen
am leichtesten erlernt zumindest habe ich mir das genauso
damals selbst beigebracht und ich finde es die verständnissvollste
und leichteste Methode es sich selbst beizubringen
ohne sich 10.000 Tutorials reinzuziehen und man kein Wort versteht
ich denke auf die Weise sollte es echt jeder verstehen.
Ich werde diesen Thread hier noch um einiges erweitern
sofern ihr es würdigt, mir ist klar es ist ein bisschen unnötig
da es schon ewige zahlreiche Threads dazu gibt allerdings
fragen mich immer noch total viele Leute ob ich es ihnen beibringen
kann und bisher den Leuten wie ich es beigebracht habe haben
dies genauso erlernt wie ich es euch hier zeige daher hat
dieser Thread seinen Sinn.
Der Inhalt des Questen zu erlernen besteht darin erstmal
überhaupt die -end-'s richtig zu setzen denn ist ein End
falsch gesetzt oder existiert schon garnicht ist die Quest
fehlerhaft bzw wird überhaupt nicht geladen.
Nun fangen wir direkt mal mit dem ersten Teil an.
Part 1:
quest learning_questing begin
state start begin
when xxx.chat."quest lernen" begin
say_title("Questen lernen Tutorial:")
say("")
say("Deine Texte können hier rein!")
say("Pro Zeile ein neues say")
say("")
say("Möchtest du das Questen lernen?")
say("")
local lernen = select ("Ja", "Nein")
if lernen == 2 then
return
elseif lernen == 1 then
say_title("Super!")
say("")
say("Fangen wir direkt mal an!")
end
end
end
end
--die xxx in Zeile 3 durch die NPC Value ersetzen
--nach chat. "Der Text in Anführungszeichen - Questtext beim NPC" begin in Zeile 3 steht für das Starten einer Quest
--say_title steht für die Überschrift der Quest darunter am besten einmal die funktion say("") setzen
--nach der überschrift am besten eine leere say nutzen um die gestaltung zu verschönern
--danach wieder eine say funktion mit eurem gewünschten text vergisst in klammern die "" nicht !!WICHTIG!!
--am besten in den say funktionen keine zu langen texte nutzen und immer wieder eine neue say nutzen
--sobald der haupttext fertig ist und eine frage gestellt wird am besten wieder eine leere say nutzen
--danach wieder eine say funktion mit der Frage und ebenfalls wieder darunter eine leere say zur schönheit nutzen
--nach local - lernen - ist es egal was du angibst nach dem = steht select für -Auswahl zwischen
--if -- lernen angeben was nach dem local vor dem = angegeben ist - 2 ist für die selectwahl sprich hier die 2 für -"Nein"
--return -- bricht die auswahl ab und kehrt zurück
--elseif -- hier ist ist das elseif nachdem ein if bereits existiert für das abbrechen das elseif dient für die 1 ( -"Ja" )
--Wieder das gleiche Spiel wie oben bei say_title
--erstes end für das beenden des if systems
--zweites end für das beenden der when funktion
--drittes end für das beenden der state
--viertes end für das beenden der quest
Seht diese Quest nicht als Funktion an sondern seht diese Quest
an die noch keine richtigen funktionen besitzt.
diese hier gilt erstmalig für die richtigen end's zu setzen.
quest learning_questing_2 begin
state start begin
when xxx.chat."quest lernen 2" begin
say_title("Questen lernen Teil 2")
say("")
say("Dies hier ist der 2te Teil zum erlernen des Questens")
say("Hier werden wir die funktionen beitragen wo man etwas")
say("Abgeben muss um etwas zu erhalten auf leichte Variante")
say("")
say("Möchtest du nun beginnen?")
say("")
local lernen = select ("Ja", "Nein")
if lernen == 2 then
return
elseif lernen == 1 and pc.count_item(50084) == 0 then -- pc.count_item sucht ein item im inventar das nicht existiert
say_title("Super!") -- falls dann das item nicht existiert kommt dieser text
say("")
say("Weiter gehts mit Part2")
say("Hierfür müsst ihr nun etwas auftragen")
say("z.b. Bring mir eine Sensenmanntruhe!")
say("")
elseif lernen == 1 and pc.count_item(50084) >= 1 then
say_title("Super!")
say("")
say("Du hast nun die Sensenmanntruhe mindestens 1x im Inventar"9
say("Du hast den Auftrag bekommen eine davon abzugeben.")
pc.remove_item(50084, 1) -- pc.remove_item steht für das entfernen eines items 50084 für die item value und die 1 für die anzahl davon die zu entfernen sind
end
end
end
end
--Der erste teil bis return ist wieder dasselbe wie beim ersten Part
--nach return fängt nun ein pc.count_item an --pc.count_item(value) == 0 sucht ein item im inventar das nicht existiert ( die 0 )
--Darunter wird nun der Text abgegeben das passiert wenn das item nicht gefunden wird
--Nun zum elseif mit pc.count_item das das angegebene item der value mehr als 1x hat
--Die funktion pc.remove_item hat folgendes 50084 ist die itemvalue die 1 zählt wie oft es entfernt wird.
--Tipp am besten ist es immer wie in Part 1 hinter den end's immer -- end für if system -- end für when funktion u.s.w. zu setzen
um sich daran nicht verirren zu können.
Part 3 kommen wir nun eigentlich nicht zur Quest sondern eher zu den meist genutzten funkitonen sprich sowas wie in Part 2 "pc.remove_item" nun ich werde hier welche ablisten und sie in komma's trennen damit der eintrag dieses Parts nicht all zu groß wird. Beachtet bitte das ich hier jetzt nur die wichtigsten auflisten werde falls ich welche vergesse bitte verbessert mich.
Kann sein das ich welche vergessen habe wenn ja bitte verbessert mich über Skype oder Private Nachricht in Elitepvpers. Zu einigen Funktionien werden wir in diesem Thread noch mehr erfahren in anderen Parts. Ouhja und Questparts zum lernen wie man einen richtigen Dungeon ( run ) erstellt werden auch kommen aber das dauert noch eine Weile da Runs questen eher zu den Fortgeschrittenen Questen gehört und wir sind hier noch am Anfang des Tutorials.
Hier Part 4 mit diesem Part werden oben funktionen genutzt von Part 3:
Schreiben wir nun mal ein questchen mit mehreren funktionen aus Part 3
und dazu 2 Quests in einer zusammen. Zudem zeige ich euch gleich hier
wie man eine Quest nur 1x nutzen kann Pro Charakter dies verhindert
oft das man mit quests buggen kann ( bugusing )
quest learning_questing_4 begin
state start begin
when xxx.chat."questen lernen 4" with pc.get_level() >= 30 begin
say_title("Questen lernen Part 4")
say("")
say("Nun läuft alles wieder ab wie Part 1")
say("")
say("Möchtest du beginnen?")
say("")
local lernen = select ("Ja", "Nein")
if lernen == 2 then
return
elseif lernen == 1 then
syschat("Super!")
chat("")
chat("Hier nutzen wir schonmal den Chatbefehl das im normalen")
chat("Chat wiedergegeben wird. Dafür besteht der Befehl chat")
chat("der Befehl syschat gibt das selbe aus wie chat nur in")
chat("roter Schriftfarbe anstatt weiß.")
chat("wenn du das hier erfolgreich gelesen hast erhältst du etwas")
pc.give_item2(50084, 1)
pc.give_gold(1000000)
set_state(__COMPLETE__)
end -- Beendet if system
end -- Beendet when funktion
when login with pc.get_level() == 1 begin
horse.set_level("11")
pc.give_item2(kampfgaulhandbuch-value, 1)
chat("Dein Pferd hat Level 11 erreicht und du bekommst das passende Buch dazu.")
set_state(__COMPLETE__)
end -- Beendet when funktion
end -- Beendet state start
state __COMPLETE__ begin -- beginnt das gesetzte set_state von vorhin
end -- beendet wieder die state ( ist wichtig und nötig!
end -- beendet zu guter letzt die gesammte Quest
--Zeile 3 das Übliche wie immer nur zählt diesmal ein Befehl der ausgibt > größer als Level 30 erst dann ist die Quest abrufbar
--Alles bis elseif lernen 1 ist dasselbe wie sonst
--syschat gibt die Schrift im normalen Chat in rot aus
--chat gibt die Schrift im normalen Chat in weiß aus
--pc.give_item2() ist wie in Part 2 nur das man hier mit ein item erhält
--pc.give_gold() gibt einem Spieler den inhalt wie im Beispiel hier 1.000.000 Yang hinzu
--set_state ist dafür eine neue state zu beginnen die abgerufen werden kann
--Der inhalt vom set_state "__COMPLETE__" ist dafür da eine Quest nur 1x funktionstüchtig zu machen
--horse.set_level() setzt das Pferdelevel dessen inhalt im beispiel "11" hat auf Level 11 ( kampfgaul )
--darunter tritt wieder pc.give_item2() ein womit man diesmal aber ein KG-Buch dem Spieler gibt.
--Auch hier wird dann wieder ein set_state(__COMPLETE__) genutzt damit sich die quest während man Level 1
ist nicht immer und immer wieder wiederholt.
Nun zu dem Part wo es rein hauptsächlich darum geht Abfragen einzubauen
wie ihr teilweise in Part 4 schon mitbekommen habt. Diesmal aber Diskret.
Ob die Mapindex's nun dem Reich entsprechen bin ich mir grad nicht sicher
habe ehrlich gesagt keine Lust gerade nachzuschauen.
quest learning_questing_5 begin
state start begin
when login with pc.get_level() == 1 begin
if pc.get_map_index() == 21 then
chat("Willkommen in Gelben Reich")
set_state(__COMPLETE__)
elseif pc.get_map_index() == 1 then
chat("Willkommen im Blauen Reich")
set_state(__COMPLETE__)
elseif pc.get_map_index() == 41 then
chat("Willkommen im Roten Reich")
set_state(__COMPLETE__)
end
end
end
state __COMPLETE__ begin
end
end
-- when login gilt dafür sobald sich ein Spieler einloggt das pc.get_level basiert wenn er genau auf level 1 ist
-- das if pc.get_map_index basiert wenn die mapindex genau 1, 21 oder 41 beträgt ist dies der fall kommt der text
-- set_state hier wurde wieder ein __COMPLETE__ gesetzt damit der Text nicht jedesmal mit Level 1 erscheint sondern nur 1x
-- nun wie üblich wieder die end's setzen und das state __COMPLETE__ beginnen und 2 weitere end's um die Quest zu beenden
In diesem Part zeige ich euch nun etwas verständnissvoll hoffe ich doch mal wie man Arrays nutzt
der Part hier gehört schon etwas mehr zu den die sich mehr zutrauen können und lernfähiger sind
als manch andere die halt dann doch ihre Zeit benötigen um es zu erlernen.
Hierzu questen wir am besten mal eine einfache Message mit ein paar Abfragen.
Eine Array verkürzt die Questgröße intensiv!
quest learning_questing_6 begin
state start begin
when xxx.chat."quest lernen 5" begin
local sname, getyang, index = pc.get_name(), pc.get_gold(), pc.get_map_index()
if index == 21 then
chat("Willkommen im Gelben Reich ", sname)
chat("Soviel Yang hast du bereits im Besitz ", getyang)
set_state(__COMPLETE__)
else
return
end
end
end
state __COMPLETE__ begin
end
end
-- wie in den ersten parts kennt ihr ja was die worte nach local dienen diesmal sind sie getrennt
durch Komma's das ihr nicht in jeder Zeile ein neues local angeben müsst.
-- Schaut euch hierzu die Struktur an wie die Komma's getrennt sind und wie es nach dem = getrennt ist.
-- if index == ist die selbe funktion wie bei part 1 nämlich die angabe welche worte ihr nutzt ist egal
hauptsache sie stimmt mit der local überein. Diese funktion ruft das 3te objekt index ( pc.get_map_index() ) ab.
-- nach dem chat seht ihr ist nach dem letzten Anführungszeichen ein , gesetzt und ein sname angegeben
dies ruft die funktion sname = pc.get_name() ab ebenso ist es dasselbe mit getyang logischerweise
die dann die funkiton pc.get_gold() abruft.
In Part 7 wird es nun wieder eine Schriftliche aussage geben die euch nun 5 begriffe genauer
erklärt und die auch ziemlich nötig sind zumindest 3 Befehle davon.
Hierbei handelt es sich um folgende 5 sachen:
when login begin - 1
when logout begin - 2
when run begin - 3
when walk begin - 4
when levelup begin - 5
- 1. Funktion beginnt sobald sich ein Spieler eingeloggt hat -- Befehl wird oft genutzt
- 2. Funktion beginnt oder deaktiviert sogar etwas sobald der Spieler sich ausgeloggt hat -- Befehl wird oft benutzt
- 3. Funktion beginnt wenn der Spieler läuft -- Befehl wird sehr selten benutzt
- 4. Funktion beginnt wenn der Spieler geht -- Befehl wird sehr selten benutzt
- 5. Funktion beginnt wenn der Spieler ein Levelup bekommt z.b. von Level 2 auf Level 3. -- Befehl wird oft genutzt
Zudem ist auch sowas möglich in einer Variable zusammenzufügen:
when login or run or walk or levelup begin
Dies dient wir es das wort or ( oder ) schon sagt wenn etwas von der auswahl passiert.
Klingt doof ist aber so ;)
Spielen wir in Part 8 mal ein bisschen mit einer Eventflag rum und einem
Automatischen Part der ein notice_all enthält. Fangen wir mal an.
quest learning_questing_8 begin
state start begin
when login begin
game.set_event_flag(""..pc.get_name().."", 1)
end
when logout begin
game.set_event_flag(""..pc.get_name().."", 0)
end
when login begin
if game.get_event_flag(""..pc.get_name().."") == 1 then
notice_all(""..pc.get_name().." hat sich gerade angemeldet.")
end
end
when logout begin
if game.get_event_flag(""..pc.get_name().."") == 0 then
notice_all(""..pc.get_name().." hat sich gerade abgemeldet.")
end
end
end
end
--Wie in Part 7 wurde when login und when logout genutzt
--Diesmal nutzen wir ein Eventbefehl ( game.set_event_flag() ) mit der funktion pc.get_name()
die vom Spieler der sich gerade einloggt den Namen nutzt und dem eine Eventnummer ( 1 ) oder
beim Ausloggen ( 0 ) setzt.
--Dann haben wir ein game.get_event_flag() gesetzt dies dient dazu den gesetzten eventflag
wieder abzurufen und wiederzugeben. == 1 steht dafür wenn er sich eingeloggt hat und
== 0 wenn er sich ausgeloggt hat dazu die funktion notice_all die jedem Spieler im
Ankündigungschat bescheid gibt ob der Spieler sich nun ein oder ausgeloggt hat.
Springen wir mal kurz rüber wie man einen killcounter für Mobs/Metins erstellt
da ich die Anfrage seit gestern schon öfters bekommen habe. Darum zeige ich
euch nun wie man eine einfache Quest mit einem Counter schreibt der nach unten zählt.
Machen wir das Beispiel mal mit 3 Wüstenfuchse die man töten muss.
Natürlich gibt es noch ausgeprägtere Methoden und bessere als diese.
Aber diese Art von Counter finde ich Persönlich für Anfänger am leichtesten
zu verstehen.
quest learning_quest_9 begin
state start begin
when levelup with pc.get_level() == 5 begin
say_title("Töte für mich 3 Wüstenfuchse:")
say("")
say("Töte 3 Wüstenfuchse für mich um diese Quest")
say("abzuschließen du erhältst dann eine Belohnung.")
say("")
say("")
pc.setf("fuchs", 3)
set_state(__COMPLETE__)
end
when 2101.kill with pc.get_level() >= 5 begin
pc.setf("fuchs", pc.getf("fuchs") - 1)
if pc.getf("fuchs") == 0 then
say_title("Super!")
say("")
say("Du hast alle 3 Fuchse getötet.")
say("Hier deine Belohnung.")
say("")
pc.give_item2(19, 1)
syschat("Du hast ein Schwert+9 erhalten.")
set_state(__COMPLETE__)
end
end
end
state __COMPLETE__ begin
end
end
--Wie der Befehl levelup schon sagt, ruft er diese funktion ab sobald man ein levelup hat
zudem wird die Abfrage erweitert wenn er das Levelup auf 5 hat.
--Der Allgemeine text wieder bis pc.setf()
--2101.kill - 2101 ist die Value vom Wüstenfuchs .kill ist der befehl sobald der Mob
mit der entsprechenden value "2101" getötet wird danach wieder die levelabfrage
das es gültig ist wenn man höher als Level 5 ist.
--pc.setf setzt eine Flag mit der man wie im Beispiel das Wort ( flag ) "fuchs" abrufen kann
sogesehen ist setf dafür da eine flag zu setzen zudem ist pc.getf für das abrufen der setf zuständig.
--bei der abfrage von if pc.getf ist die variable 0 ausschlaggebend sobald man 3 getötet hat
bekommst du die belohnung wie du im Text nachvollziehen kannst.
--Dann das Übliche wieder mit __COMPLETE__ das die Quest nicht unendlich mal geladen wird
sondern pro Charakter nur 1x machbar ist.
So da sich nun in der Regel eigentlich jeder von Part 1 - 9 auseinandersetzen kann
und sich das Normale Questen für Anfänger ziemlich leicht aneeignen kann/sollte,
werde ich nun zum Teil Dungeons übergehen. In diesem Teil hier werde ich euch zeigen
wie ihr in einen Dungeon reinkommt durch eine einzige Map als einzelner Spieler
alleine im Run sprich wer Zokay kennt und deren Dungeon's weiß sicher was
damit gemeint ist, ist für manche Quester sogar noch ein highleight die es nicht wissen.
Zudem wird die Mapindex in meinem Beispiel 220 für den Dungeon sein die ihr dann
selbst durch eure Dungeonquest abändern solltet. Ich werde die Dungeonquest
hier mit dem Anfang immer erweitern und erweitern und erweitern, also
das Stück für Stück System.
quest learning_questing_10 begin
state start begin
when xxx.use begin
say_title("Zuerst der normale Chronwarp")
say("")
say("Hier der Text den ihr wollt")
say("")
say("Möchtest du den Dungeon betreten?")
say("")
local lernen = select ("Ja", "Nein")
if lernen == 2 then
return
elseif lernen == 1 then
pc.warp(koordinate1, koordinate2)
end
end
when login with pc.get_map_index() == 220 begin
d.new_jump_all(koordinate1, koordinate2)
end
when login with pc.in_dungeon() and pc.get_map_index() == 220 begin
say_title("Super!")
say("")
say("Du bist nun erfolgreich als einzigster Spieler")
say("in deinem eigenen Dungeon teleportiert worden.")
say("")
end
end
end
--xxx ist eure itemvalue die genutzt werden soll type muss in der DB auf 18 gestellt sein
--.use nach xxx ist der Befehl dafür das ein item mit der angegebenen xxx vnum genutzt wird
--darunter der ledigliche text wieder mit der auswahl bis elseif lernen == 1
--pc.warp hat 2 teile sprich koordinate 1 und 2 die ihr ingame über /state abrufen könnt.
habt ihr diese dann eingetragen werdet ihr auf die Map teleportiert, achtung für die Dungeonquest
hier muss laut beispiel die mapindex 220 betragen!!!
--d.new_jump_all ist der selbe befehl wie pc.warp nur dieser Befehl fungiert die Map in eine
Art Dungeonmap um sodass die Map mit d. befehlen genutzt werden kann wie z.b. d.setf oder d.warp u.s.w.
In Part 11 kommen wir dann erstmal wieder zu den meist genutzten Befehlen wie in Part 3.
Hierzu werde ich euch wieder Befehle auflisten die üblich für das Questen eines Dungeons
benötigt werden, falls ich hier auch Befehle vergessen habe bitte verbessert mich.
d.warp(), d.new_jump(), d.new_jump_all(), d.check_eliminated(), d.notice(),
d.notice_all(), d.chat(), pc.in_dungeon(), d.spawn_mob(), .kill, npc.get_race(),
d.regen_file(/ordner/pfad/regen.txt), d.getf(), d.getqf(), d.exit()
Das sind erstmal die vorläufig gebrauchten funktionen die ihr als anfänger benötigt,
Ich muss zugeben ich habe für das lernen wie man Dungeons questet ziemlich lange
gebraucht also gebt nicht gleich auf falls es nicht sofort bei euch klappt.
Ich werde hier stück für stück noch mehr beitragen mit der Zeit
und immer mehr und mehr dazu führen das es zum fortgeschrittenen
Questen gehört. Falls euch dieser Thread nicht passt
kann ich euch nur beglückwünschen und sagen Alt+F4 ist
eine geniale Lösung
Hier mal beschreibungen der quest_functions nach dem Thread :
Code:
item.get_cell()
Werte: Keine Werte
Beschreibung: gibt bei take und use das Aktuell benutzte Item aus.
Rückgabe: false wenn ein fehler aufgetreten ist ansonsten die Zellennumer im Inventar
item.select_cell(slot)
Werte: Slot im Inventar
Beschreibung: wählt ein Item im Inventar aus so das die item befehle auf das ausgewählte Item angewendet werden.
Rückgabe: Boolean
item.get_socket(socketid)
Werte: sockel nummer 0 bis 2
Beschreibung: Erwartet die Socket ID, wenn diese gegeben ist gibt es den Inhalt des Sockets aus also welches item sich im Sockel befindet.
Rückgabe: false oder item vnum
item.remove(void)
Werte: keine
Beschreibung: Entfernt das Aktuell ausgewählte Item.
Rückgabe: keine
item.get_id(void)
Werte: keine
Beschreibung: Gibt die ID des Aktuell ausgewählten Items aus.
Rückgabe: false oder itemid
item.select(itemid)
Werte: Id des Items welches man auswählen will (nicht Vnum)
Beschreibung: Setzt das ausgewählte Item auf die angegebene ID so das die Item befehle für dieses Item gelten.
Rückgabe: Boolean
item.get_count(void)
Werte: Keine
Beschreibung: Gibt die Anzahl wie groß der Stack des aktuell gewählten Items ist also z.B 50 Perlen zurrück
Rückgabe: false oder count
item.get_level(void)
Werte: keine
Rückgabe: refine_level des gewählten Items z.b Schwert+1 = 1
item.get_name(void)
Werte: keine
Rückgabe: Name des gewählten Items
item.get_refine_vnum(void)
Werte: keine
Rückgabe: refined_vnum des gewählten Items.
item.get_size(void)
Werte: keine
Rückgabe: größe des gewählten items <- Datenbank feld size
item.get_sub_type(void)
Werte: keine
Rückgabe: subtype des gewählten Items
item.get_type(void)
Werte: keine
Rückgabe: type des gewählten Items
item.get_value(value)
Werte: value
Rückgabe: Wert eines Value felds des gewählten Items( value felder= value1 bis 5)
item.get_vnum(void)
Werte: keine
Rückgabe: Vnum des gewählten Items
item.has_flag(flag)
Werte: flag
Beschreibung: prüft ob das ausgewählte item den angegebenen flag
Rückgabe: Boolean
item.set_socket(socketnum, value)
Werte: Sockelnummer, Wert der gesetzt werden soll
Beschreibung: Setzt bei der Aktuell gewählten Waffe in den angegebenen sockel das angegbene item ein (socketnum max = 2)
game.drop_item_with_ownership(item_vnum, anzahl)
Beschreibung: Droppt ein Item unter dem Spieler mit seinem Namen darüber der Name bleibt 10 Sekunden darüber
__give_char_priv(rate_type, rate)
Beschreibung: Gibt dem Aktuell ausgewählten Charakter einen Rate Bonus
Werte: rate_type = 1 bis 4 (YANG, DROP, YANGBOMB, EXP)
rate = höhe der Rate
__get_empire_priv_string()
Beschreibung: Die Aktuellen Boni eines Reiches als String ausgeben
__give_empire_prive(empire, rate_type, rate, time) -- einem Reich einen Bonus geben
Beschreibung: Gibt einem bestimmten Reich oder allen Reichen einen Rate Bonus
Werte: rate_type= 1-4 (DROP, GOLD_DROP,TEN_GOLD_DROP, EXP)
empire = 0-3 0 = alle reiche
__getnpcid(npc_name)
Beschreibung gibt einem die NPC ID aus wenn man den npc namen als wert angibt
is_test_server()
Beschreibung: Gibt einen booleschen wert zurrück je nach dem ob der server ein Test Server ist oder nicht
kill_all_in_map(mapindex)
Beschreibung: Tötet alle NPCs und Monster auf der angegebenen Map eventuell auch Spieler
Werte: mapindex der Ziel Map
bool_to_str()
Beschreibung: Konvertiert einen Booleschen Wert zu einem String = "true" oder "false"
cmdchat(clientCMD)
Beschreibung: Sendet einen Befehl in einem Chat Channel den der Client annimt.
Wird genutzt für Sachen wie das öffnen eines Privaten Ladens oder die Meldungen beim Uppen
command(cmd)
Beschreibung: Wie /befehl als Spieler genauso von rechten eingeschränkt
enable_over9refine(int, int)
Beschreibung: /
Werte: /
regen_in_map(mapindex, path)
Beschreibung: Lädt die regen Datei die mit path angeben wird und aktiviert sie auf der mit mapindex angegebenen Map
say_in_map(mapindex, text)
Beschreibung: Wie say nur das es auf dem angegebenen Map Index für alle angezeigt wird
set_quest_state(questname, state)
Beschreibung: Setzt bei der angegeben Quest den angegeben State als Aktiv bzw führt ihn aus
set_skin(skin_type)
Beschreibung: Setzt den Stil des sich öffnenden Quest Fensters (Balken oder nicht, sichtbar oder nicht usw)
syschat(text)
Beschreibung: Gibt den eingegebenen Text in Metin2 Fehler schrift für den Spieler aus
syserr(text)
Beschreibung: Gibt einen Quest Fehler im Chat aus wenn der Server ein test_server ist
time_to_str()
Beschreibung: Gibt die Aktulle Zeit als String zurrück
warp_all_to_village(mapindex, time)
Beschreibung: Teleportiert alle Spieler die sich auf der Map
mit dem angegebenen Map Index befinden
in ihre Dörfer zurrück.
time setzt die Wartezeit wie lange es dauert bis die Spieler geportet werden.
warp_to_village()
Beschreibung: Teleportiert den Aktuell gewählten Charakter in sein Dorf zurrück
affect.add(applytype, applyvalue, time)
Beschreibung: Fügt einen Affect mit dem Type 1000 hinzu somit kann er zusätzlich zu allen anderen Affects gelten
Gültige applytype's sind 1 bis 80 also Boni ID's
affect.remove()
Beschreibung: Entfernt den angegebenen affecttype
Anmerkung: Affect 223 kann nicht entfernt werden
210 = GM Stun
211 = GM Slow
203 = Unsichtbarkeit
223 = Chatblock
500 bis 509 = EXP Boni usw
514 = Haar
532 = Pferdename
affect.remove_all_collect()
Beschreibung: Entfernt alle Collect Affects = Bio Quest Affects
affect.remove_bad()
Beschreibung: Entfernt alle Negativen Affects wie Brennen, Gift und Sonstiges
affect.remove_good()
Beschreibung: Entfernt jegliche Positive Affects auch Skill Buffs usw
affect.remove_hair()
Beschreibung: Entfernt das aktuelle Haar
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?
clear_server_timer() -- Server timer zurücksezen
clearmapsignal() -- Blinkenden Punkt auf der Map Löschen
cleartimer() -- timer zurück setzen
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
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.
loop_timer() -- Loop Timer
npc.is_quest() -- Prüft ob der NPC gerade für eine Quest benötigt wird
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() -- das selbe wie setqf
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
raw_script()
restart_quest() -- Setzt den Quest State wieder auf Start
say() -- Einfaches [SAY]
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
target.clear()
target.delete()
target.id()
target.npc()
target.pc()
target.pos()
target.vid()
test_chat()
time_hour_to_sec()
time_min_to_sec()
type()
pc.is_engaged() -- Ist der Spieler verlobt
string.format()
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
Wie gesagt ich werde hier noch mehr reineditieren mit der Zeit.
Im Anhang befindet sich eine .quest datei, mit der ihr den Thread
in einem Überblick habt falls euch dies hier zu unübersichtlich ist.
danke, besser als die howto´s wo man garnix versteht warum dies warum das, jetzt hab ich dank dir gelernt warum man immer am ende 3 mal end einsetzen muss. thx given
Gibt aber gute Programme dafür, was einfacher ist was du dort machst.
Trotzdem danke.
Sorry ich halte von Programmen nichts das ist erstens
die billigste Variante und zweitens kannst du damit niemals
richtige gute Quests erstellen daher am besten immer
mit Notepad++ Questen und hierzu ist das Tutorial
wofür ich es euch stück für Stück erklären werde.
Glaubt mir das wird ein ziemlich großer und umfrangsreiches
Tutorial
quest learning_questing begin
state start begin
when xxx.chat."quest lernen" begin --- xxx durch eine NPC Value ersetzen nach chat. "Der Text in Anführungszeichen - Questtext beim NPC" begin steht für das Starten einer Quest
say_title("Questen lernen Tutorial:") -- say_title steht für die Überschrift der Quest darunter am besten einmal die funktion say
say("") -- für eine schöne quest die den gewissen flair hat
say("Deine Texte können hier rein!") -- deine texte die du möchtest
say("Pro Zeile ein neues say") -- nicht zuviel in eine Zeile quetschen sondern schön immer wieder pro Zeile ein neues Say nutzen
say("") -- eine leere Zeile für die Frage des locals dient zur Übersicht das es nicht zusammengequetscht aussieht
say("Möchtest du das Questen lernen?") -- deine eigene Zeile in der du eine Frage stellst zur auswahl
say("") -- wieder eine zeile zur schönheit
local lernen = select ("Ja", "Nein") -- nach local - lernen ist es egal was du angibst nach dem = steht select für -Auswahl zwischen
if lernen == 2 then -- lernen angeben was nach dem local vor dem = angegeben ist - 2 ist für die selectwahl sprich hier die 2 für -"Nein"
return -- bricht die auswahl ab und kehrt zurück
elseif lernen == 1 then -- hier ist ist das elseif nachdem ein if bereits existiert für das abbrechen das elseif dient für die 1 ( -"Ja" )
say_title("Super!") -- Wieder das gleiche Spiel wie oben bei say_title
say("") -- ebenfalls wieder wie oben
say("Fangen wir direkt mal an!") -- und dies hier auch
end -- ein end setzen für das if system
end -- ein end setzen für das beenden für when funktionen
end -- beendet die state begin
end -- beendet die quest begin
Regardz - Lucky
muss man immer leerzeichen machen? da z.b.
Code:
end -- ein end setzen für das if system
end -- ein end setzen für das beenden für when funktionen
end -- beendet die state begin
end -- beendet die quest begin
geht nicht auch so:
Code:
end -- ein end setzen für das if system
end -- ein end setzen für das beenden für when funktionen
end -- beendet die state begin
end -- beendet die quest begin
sind die leerzeichen notwendig? was wenn man sie so ohne leerzeichen macht? geht dann die ganze quest nicht mehr oder sind die leerzeichen nur da damit es übersichtlicher und schöner aussieht?
end -- ein end setzen für das if system
end -- ein end setzen für das beenden für when funktionen
end -- beendet die state begin
end -- beendet die quest begin
geht nicht auch so:
Code:
end -- ein end setzen für das if system
end -- ein end setzen für das beenden für when funktionen
end -- beendet die state begin
end -- beendet die quest begin
sind die leerzeichen notwendig? was wenn man sie so ohne leerzeichen macht? geht dann die ganze quest nicht mehr oder sind die leerzeichen nur da damit es übersichtlicher und schöner aussieht?
Geht, allerdings wirst du schnell merken, dass es anders VIEL einfacher ist den Überblick zu behalten, wenn du TABS machst
@TE , nice, aber ich würd da als Anfänger glaub ich net durchblicken, mit der Masse an Kommentaren o.O
Ja Delta hat aber recht, ich werde es mit der Zeit
wies aussieht noch übersichtlicher gestalten.
So kann man ein bisschen durcheinander kommen.
ja danke würde vielen anfängern wie mir sehr helfen, am besten währe es noch wenn du die codes für die quest-funktionen mit ins thread reinschreiben würdest. dann müsste man diese nicht in der sufu weitersuchen und ja war ja nur so als vorschlag
@all wenn ich also einige Tab´s mehr mache, ist die quest dann tot oder würde sie weiterhin funktionieren? kann grad nicht testen da ich keinen server hab darum auch die frage
@all wenn ich also einige Tab´s mehr mache, ist die quest dann tot oder würde sie weiterhin funktionieren? kann grad nicht testen da ich keinen server hab darum auch die frage
Tabs sind egal
Haben keine Auswirkung auf deinen code
Kannst auch alles in eine Zeile schreiben wenn du lustig bist xD (I think )
Archäologie erlernen 10/26/2011 - World of Warcraft - 5 Replies Hi Leute,
ich bin Lvl 43 und wollte Archäologie erlernen, aber wenn ich zu den Lehrern in Orgrimmar,Unterstadt und Silbermond gehe und sie anklicke, kann ich nichts auswählen die Liste is leer O.o
[B] Vote 4 Coins Script (IP & Account Abfrage) bis zu 5 Vote Seiten! (Eigenständig) 10/11/2011 - Metin2 Trading - 2 Replies Ich habe ein Vote System programmiert, bei dem Spieler für Coins voten können. Bis zu 5 Seiten können eingetragen werden (Kann ich beliebig erweitern)
Es wird in einer Datenbank die IP & AccountID gespeichert, somit kann man mit einer IP auch nur einmal Voten und pro Account auch nur einmal auch wenn man die IP resetten sollte.
Somit ist ein Betrug vollkommen ausgeschlossen.
Das Script ist eigenständig und passt somit zu jeder Website!
C++/gamehacking erlernen 09/23/2010 - C/C++ - 9 Replies Hi.
Ich hätte mal so ein paar Fragen.Ich möchte gerne C++ erlernen und damit Hacks erstellen(z.B. War Rock).Mir ist bewusst,dass ich C++ nicht innerhalb von 2 Tagen erlernen kan und das ich mir dafür Zeit nehmen muss.Nun zu meinen Fragen:
Wie habt Ihr C++ erlernt??Und wie lange habt ihr ca. Dafür gebraucht??Ca. 1 jahr(so viel zeit würde ich mir auch nehmen).Könntet ihr mir vlt ein paar Links oder so etwas geben um C++ zu erlernen?Bücher würden auch gehen(Links wären besser).Ich habe in der...
Assembler erlernen 03/17/2010 - General Coding - 23 Replies Hey Leute,
ich bin neu hier=)
Ich würde gerne Assembler lernen.
Habe schon Erfahrung in C++.
Ich kann mich jedoch schon seit einer Woche nicht entscheiden welchen Assembler ich nehmen soll, auch weil ich bisher für keinen ein richtiges Anfängertutorial gefunden habe=(
Was würdet ihr mir empfehlen?
NASM, FASM? oder sonst was?
MASM wollt ich eg nicht, ist wieder so Microsoft spezifisch...:D
Ihr im Forum ist ja ein Tutorial verlinkt für TASM, wär das zu empfehlen?
Jedoch ist doch TASM...
Programmieren erlernen! 11/30/2009 - General Coding - 28 Replies Hallo liebe coder's.
Ich hab mich entschlossen mich mal mit Programmieren zu beschäftigen.
Ich besitze keine Vor Kenntnisse, im Klar-Text, ich bin noch ein totaler Anfänger.
Was ich coden möchteß
Hacks, Tools etc...
Jetzt zu meinen Fragen