Kleines Weihnachtsrelease. Nichts großes ich wollts nur mit
euch teilen. Wie man Shining einfügt dürfte bekannt sein
Wenn nicht dann gibt es im Youtube ein schönes How To..
Diese "leeren" Charaktere stehe nicht in der player.player und man kann sich nicht im Client löschen. Sie haben keinen Namen, keinen Status, etc..
Wie löscht man die nun?
Ihr öffnet die account.account oder player.player und die player.player_index. Ihr sucht nach der Account ID, auf dem so ein leerer Charakter ist. Diese ID kopiert ihr und sucht in der player_index danach.
Jetzt sollte dort ein Account sein, daneben stehen auch der Slot mit dem Charakteren und das Reich.
Jetzt müsst ihr die Zahl vom leeren Slot durch eine 0 ersetzen.
Wer sicher gehen will, kopiert einfach die "Pid-Nummern" und sucht in der player.player danach. Wenn kein Ergebnis gefunden wird, kann man diese Zahl durch eine 0 ersetzen.
Speichert das ab und packt eure root.*** wieder anschließend ab damit in den Client.
Quest:
Code:
quest remove_tool begin
state start begin
when 35002.use begin
say_title("Lösch Optionen")
say("")
say("Was möchtest du tun?")
say("")
s = select("Charaktere löschen", "einzelne Items löschen", "komplettes Inventar löschen", "Abbrechen")
if s==4 then return end
if s==1 then
remove_tool.delete_char(1, 0) -- Parameter 1 = AN, 0 = OFF und die Levelbegrenzung 0 = default.
elseif s == 2 then
say_title("Item löschen")
say("")
say_reward("Es zählt immer der Slot, indem das erste ")
say_reward("Stück des Items liegt.")
say("-------------------------------------------------")
say_reward("Du solltest evtl. nachzählen, damit du")
say_reward("kein falsches Item löschst!")
say("-------------------------------------------------")
say_reward("Slots über 90 sind ausgerüstete Items!!!")
say("")
if select("Weiter","Abbrechen")==2 then return end
items = {}
slot = {}
for i = 0, 90 + 32 - 1 do
if item.select_cell(i) then
table.insert(items, item.get_name().." Slot: "..i+1)
table.insert(slot, i)
end
end
table.insert(items, "Abbrechen")
say_title("Item löschen")
s = select_table(items)
if s== table.getn(items) then syschat("Es wurde nichts gelöscht.") return end
item.select_cell(slot[s])
syschat(item.get_name().." vom Slot: ".. slot[s]+1 .." wurde gelöscht.")
item.remove()
elseif s == 3 then
say_reward("!!! ACHTUNG ACHTUNG !!!")
say("")
say("Es werden alle Items gelöscht, inklusive")
say("ausgerüsteter Items wie Rüstung, Frisur etc.")
say_reward("Dein Gold bleibt erhalten!")
say("")
say_reward("Inventar vollständig löschen?")
say("")
if select("Ja","Nein")==2 then return end
for i = 0, 90 + 32 - 1 do
if item.select_cell(i) then
item.remove()
end
end
syschat("Komplettes Inventar wurde gelöscht.")
end
end
function delete_char(on, level)
if on != 1 then syschat("Dieser Server unterstützt die Charakter-Lösch-Option nicht.") return end
pid = mysql_query("SELECT pid1, pid2, pid3 FROM player.player_index WHERE id = (SELECT account_id FROM player.player WHERE name='"..pc.get_name().."');")
pid4 = mysql_query("SELECT pid4 FROM player.player_index WHERE id = (SELECT account_id FROM player.player WHERE name='"..pc.get_name().."');")
pids = { }
table.insert(pids, pid[1][1])
table.insert(pids, pid[1][2])
table.insert(pids, pid[1][3])
table.insert(pids, pid4[1][1])
local right = { }
for i=1, 4, 1 do
if pids[i] !=0 then
table.insert(right, pids[i])
end
end
local names = { }
for i=1, table.getn(right), 1 do
name = mysql_query("SELECT name FROM player.player WHERE id = '"..right[i].."';")[1][1]
name = string.gsub(name, "(%W)", "")
table.insert(names, name)
end
table.insert(names, "Abbrechen")
say_title("Charakter löschen")
say("")
say_reward("Charakter mit Sonderzeichen werden")
say_reward("ohne angezeigt.")
local s = select_table(names)
if s == table.getn(names) then return end
name = mysql_query("SELECT name FROM player.player WHERE id = '"..right[s].."';")[1][1]
nlevel = mysql_query("SELECT level FROM player.player WHERE id = '"..right[s].."';")[1][1]
if nlevel < level then syschat("Die Levelbegrenzung von "..level.." verhindert die Löschung des Charakters '"..name.."'.") return end
say_title("Charakter löschen")
say("")
say("Du bist im Begriff deinen Charakter '"..name.."'")
say("zu löschen. Alle Items gehen dabei verloren und der")
say("Vorgang ist nicht mehr rückgängig zumachen.")
say("")
say_reward("Du brauchst deinen Charakter-Löschcode!")
say("")
if select("Weiter", "Abbrechen")==2 then return end
say_title("Charakter löschen")
say("")
say("Nun gut, es scheint deine entgültige Entscheidung zu")
say("sein, bitte gebe nun deinen Charakter-Löschcode ein.")
say("")
local code = mysql_query("SELECT social_id FROM account.account WHERE id = (SELECT account_id FROM player.player WHERE name='"..pc.get_name().."');")[1][1]
if tonumber(code) then
inp = tonumber(input())
else
inp = input()
end
if inp != code then syschat(inp.." - Löschcode ist nicht korrekt. Evtl. auf der Homepage nachschauen.") return end
say_title("Charakter löschen")
say("")
say("Dies ist nun die letzte Abfrage, ob du deinen")
say("Charakter wirklich entgültig löschen möchtest.")
say("")
say_reward("Charakter löschen?")
if select("Ja","Nein")==2 then return end
for i=1, 4, 1 do
if pids[i]==right[s] then
mysql_query("UPDATE player.player_index SET pid"..i.."='0' WHERE id = (SELECT account_id FROM player.player WHERE name='"..pc.get_name().."');")
end
end
mysql_query("DELETE FROM player.player WHERE name = '"..name.."';")
say_title("Charakter gelöscht")
say("")
say("Dein Charakter wurde gelöscht.")
say("")
say("Es ist nur noch ein LogOut von-")
say("nöten um den Vorgang abzuschließen.")
say("")
wait()
cmdchat("exit")
end
end
end
Heute veröffentliche ich einen Run, da ich zu doof für eine Funktion bin.
Also, wie ihr überhaupt den Run einfügt:
Ihr ladet euch die Datein aus dem Anhang. Ihr entpackt eure root.e** und die locale_de.e**. Ihr öffnet aus beiden die atlas_info.txt und geht nach ganz unten. Ihr fügt das hinzu:
PHP Code:
metin2_map_insel 588100 588100 1 1
Jetzt zieht ihr die "outdoorinsel.e**" in den Client und öffnet die Index aus dem Pack Ordner. Unter die ganzen outdoor Teile fügt ihr das ein:
PHP Code:
metin2_map_insel/ outdoorinsel
Speichern.
Clientside bist du fertig.
Öffne Filezilla und geh in den Pfad
/usr/home/game/share/data/dungeon
Dort fügst du die banditrun1.txt-banditrun4.txt ein.
Geh in das Verzeichnis
/usr/home/game/share/locale/germany/quest
und füg die Quest ein und füg die in die quest_list ein.
Geh nun in das Verzeichnis:
/usr/home/game/share/locale/germany/map
Dort fügst du die Serverside Map ein und trägst diese in die Index. Die Nummer aus der Index noch in die Cores eintragen.
Quests neuladen und rebooten.
Sooooo da ich nun auch endlich mal aktiv auf Epvp in der Metin2 Section sein werde, hier mal ein paar Ranggrafiken, die ich noch auf meiner Festplatte gefunden habe. Soweit ich mich recht erinnere, war dies mein erstes Werk in Photoshop. Kann mich aber auch irren
Nungut, werde wohl eher in Richtung Grafik Zeugs releasen, was ich in Zukunft erstellen werde. Sowohl Homepages, als auch Login Screens, Ladescreens, Forendesigns, Ranggrafiken, ...
heute stelle ich euch einen code zur verfügung mit dem
man denn niedrigsten und höchsten bonus auslesen kann.
das ganze ist an das henCMS angepasst worden.
es ist an sich nichts großes aber kann mansche helfen.
das es nicht der beste code ist, ist mir auch klar.
<?php ####################################################### ## Bonusliste by 95Industries Coded for Astora2 ### ## Copyright 2014. Alle Rechte vorbehalten. ### #######################################################
//Verbindungsaufbau $verbinden = mysql_connect('yourip', 'root', 'yourpasswort') or die ('Es konnte keine Verbindung zur Datenbank hergestellt werden.');
//Datenbank Verbindungsaufbau mysql_select_db($verbinden, 'player') or die ('Die Datenbank existiert nicht!');
heute stelle ich euch einen code zur verfügung mit dem
man denn niedrigsten und höchsten bonus auslesen kann.
das ganze ist an das henCMS angepasst worden.
es ist an sich nichts großes aber kann mansche helfen.
das es nicht der beste code ist, ist mir auch klar.
<?php ####################################################### ## Bonusliste by 95Industries Coded for Astora2 ### ## Copyright 2014. Alle Rechte vorbehalten. ### #######################################################
//Verbindungsaufbau $verbinden = mysql_connect('yourip', 'root', 'yourpasswort') or die ('Es konnte keine Verbindung zur Datenbank hergestellt werden.');
//Datenbank Verbindungsaufbau mysql_select_db($verbinden, 'player') or die ('Die Datenbank existiert nicht!');
!ACHTUNG: nach dem Download aus bonusListe.txt > bonusListe.php machen!
Why you just don't use a for statement to print the bonuses?
Use something like that:
PHP Code:
<?php ####################################################### ## Bonusliste by 95Industries Coded for Astora2 ### ## Copyright 2014. Alle Rechte vorbehalten. ### #######################################################
//Verbindungsaufbau $verbinden = mysql_connect('yourip', 'root', 'yourpasswort') or die ('Es konnte keine Verbindung zur Datenbank hergestellt werden.');
//Datenbank Verbindungsaufbau mysql_select_db($verbinden, 'player') or die ('Die Datenbank existiert nicht!');
Why you just don't use a for statement to print the bonuses?
Use something like that:
PHP Code:
<?php ####################################################### ## Bonusliste by 95Industries Coded for Astora2 ### ## Copyright 2014. Alle Rechte vorbehalten. ### #######################################################
//Verbindungsaufbau $verbinden = mysql_connect('yourip', 'root', 'yourpasswort') or die ('Es konnte keine Verbindung zur Datenbank hergestellt werden.');
//Datenbank Verbindungsaufbau mysql_select_db($verbinden, 'player') or die ('Die Datenbank existiert nicht!');
//Gibt alle Namen aus der apply Spalte auf deutsch aus $apply[0] = "Starke"; $apply[1] = "Inteligenz"; $apply[2] = "Vitalitat"; $apply[3] = "Max. MP"; $apply[4] = "Max. TP"; $apply[5] = "Beweglichkeit"; $apply[6] = "Angriffsgeschwindigkeit"; $apply[7] = "Bewegungsgeschwindigkeit"; $apply[8] = "Zaubergeschwindigkeit"; $apply[9] = "TP Regeneration"; $apply[10] = "MP Regeneration"; $apply[11] = "Vergiftungschance"; $apply[12] = "Ohnmachtchance"; $apply[13] = "Verlangsamungschance"; $apply[14] = "Chace auf Krit. Treffer"; $apply[15] = "Chance auf Durch. Treffer"; $apply[16] = "Str. gegen Halbmenschen"; $apply[17] = "Str. gegen Tiere"; $apply[18] = "Str. gegen Orks"; $apply[19] = "Str. gegen Esoterische"; $apply[20] = "Str. gegen Untote"; $apply[21] = "Str. gegen Teufel"; $apply[22] = "Schaden wird von TP abs."; $apply[23] = "Schaden wird von MP abs."; $apply[24] = "Ch. Nahkampf Angriff abzb."; $apply[25] = "Ch. Pfeilangriff auszuweichen"; $apply[26] = "Schwertverteidigung"; $apply[27] = "Zweihandverteidigung"; $apply[28] = "Dolchverteidigung"; $apply[29] = "Glockenverteidigung"; $apply[30] = "Facherverteidigung"; $apply[31] = "Pfeilwiederstand"; $apply[32] = "Feuerwiederstand"; $apply[33] = "Magiewiderstand"; $apply[34] = "Windwiederstand"; $apply[35] = "Ch. Nahkampftr. zu reflt."; $apply[36] = "Giftwiderstand"; $apply[37] = "EXP Bonus"; $apply[38] = "Yang Bonus"; $apply[39] = "Drop Bonus"; $apply[40] = "Abwehr gegen Ohnmacht"; $apply[41] = "Abwehr gegen Verlangsamen"; $apply[42] = "Angriffswert";
echo " <div id=\"head\"><h3>Bonusliste</h3></div> <p>Du willst wissen wie die minimalen und maximalen Bonis sind?<br> Dann ist fur dich diese Liste genau richtig!</p> <table> <tr> <th class=\"topLine\"><b>Bonus</th> <th class=\"topLine\"><b>minimal</b></th> <th class=\"topLine\"><b>maximal</b></th> </tr>"; for($i=0;$i<43;$i++) { echo"<tr> <td class=\"tdunkel\">{$apply[$i]}</td> <td class=\"thell\">{$minlevel[$i]}</td> <td class=\"tdunkel\">{$maxlevel[$i]}</td> </tr>"; } echo"</table>"; ?>
Why you use the row number as bonus identificator ? That is very shit if someone have make some modifications on table.
Better to do something like that
PHP Code:
<?php //Verbindungsaufbau $verbinden = mysqli_connect('yourip', 'root', 'yourpasswort','player') or die ('Es konnte keine Verbindung zur Datenbank hergestellt werden.'); //Gibt alle Namen aus der apply Spalte auf deutsch aus $bonus_name = array( "STR" => "Starke", "INT" => "Inteligenz", //Add all bonus like that ); //Abfrage $apply = array(); $abfrage = "SELECT * FROM item_attr"; $ergebnis = mysqli_query($verbinden, $abfrage); while($row = mysqli_fetch_array($ergebnis)){ $apply[] = array( 'name' => $bonus_name[$row['apply']], 'min' => $row['lv1'], 'max' => $row['lv5'] ); }
echo " <div id=\"head\"><h3>Bonusliste</h3></div> <p>Du willst wissen wie die minimalen und maximalen Bonis sind?<br> Dann ist fur dich diese Liste genau richtig!</p> <table> <tr> <th class=\"topLine\"><b>Bonus</th> <th class=\"topLine\"><b>minimal</b></th> <th class=\"topLine\"><b>maximal</b></th> </tr>"; for($i=0;$i<=count($apply);$i++) { echo"<tr> <td class=\"tdunkel\">".$apply['name']."</td> <td class=\"thell\">".$apply['min']."</td> <td class=\"tdunkel\">".$apply['max']."</td> </tr>"; } echo"</table>"; ?>