Did you know? elitepvpers has its own image host, epvpimg.com.
[Release] Ingame Itemshop (Quest)
This is a discussion on [Release] Ingame Itemshop (Quest) within the Metin2 PServer Guides & Strategies forum part of the Metin2 PServer - Discussions / Questions category; Hier mal mein Ingame-Itemshop mit Kathegorien, Item anzeige und anzeige, welches lvl und welche Rasse es tragen kann.
-> Gibt ...
Hier mal mein Ingame-Itemshop mit Kathegorien, Item anzeige und anzeige, welches lvl und welche Rasse es tragen kann.
-> Gibt das item sofort ins Inventar, daher weniger Buganfällig
Dafür braucht ihr die Questlib!
Spoiler:
PHP Code:
quest ig_is_mijago begin
state start begin
when 11000.chat."Ingame-Itemshop" or 11002.chat."Ingame-Itemshop" or 11004.chat."Ingame-Itemshop" begin
ig_is_mijago.zeige_is()
end
when letter begin
send_letter('Userpanel')
end
when button or info begin
ig_is_mijago.zeige_menu()
end
function zeige_menu()
say('Willkommen im Userpanel.[ENTER]Was benötigst du?')
local sel = select('Ingame-Itemshop','Spenden',"Abbrechen")
if sel == 1 then
ig_is_mijago.zeige_is()
elseif sel == 2 then
ig_is_mijago.spenden()
elseif sel == 3 then
-- ig_is_mijago.gm_liste()
end
end
function zeige_is()
local g = mysql_query("SELECT coins FROM account.account, player.player where account.id = player.account_id and player.name = \\'"..pc.get_name().."\\'")
say('Willkommen, '..pc.get_name()..'[ENTER]Du hast: '..g.coins[1]..' Coins.')
if g.coins[1] == "0" then
say("Da du keine Coins besitzt, kannst du dir leider nichts kaufen.")
-- return
end
say(col.lightskyblue('Ingame-Itemshop. Written by Mijago'))
ig_is_mijago.waehle_kat()
end
function waehle_kat()
local g = mysql_query("SELECT * FROM homepage.is_kategorien")
say('Welche Kategorie möchtest du ansehen?')
local i = 1
local c = 'local sel = select('
for i=1,getn(g.titel),1 do
c = c..'\\"'..g.titel[i]..'\\",'
if i == getn(g.titel) then
c = c..'\\"Abbrechen\\"'
end
end
c = c..')\\nreturn sel'
-- say(c)
local sel = assert(loadstring(c))()
if sel == getn(g.titel)+1 then
return 0
end
ig_is_mijago.waehle_item(sel)
end
function waehle_item(kat)
kat = 0+kat
local g = mysql_query("SELECT * FROM homepage.is_items WHERE kategorie_id = "..kat)
say('Welches Item möchtest du ansehen?')
local i = 1
local d = 'sel = select('
for i=1,getn(g.vnum),1 do
d = d..'\\"'..ig_is_mijago.itemname(g.vnum[i])..'\\",'
if i == getn(g.vnum) then
d = d..'\\"Zur Auswahl\\"'
end
end
d = d..')\\nreturn sel'
local sel = assert(loadstring(d))()
if sel == getn(g.vnum)+1 then
ig_is_mijago.waehle_kat()
return
end
ig_is_mijago.zeige_item(g.vnum[sel],kat)
end
function zeige_item(vnum,kat)
kat = 0+kat
vnum = 0+vnum
say("Du hast folgendes Item ausgewählt:")
local q = mysql_query("select * from player.item_proto WHERE vnum = "..vnum)
local q2 = mysql_query("select preis as coins from homepage.is_items WHERE vnum = "..vnum)
local rasse = ''
-- say_item(q.locale_name[1],vnum,"Benötigte Coins: "..q2.coins[1])
say_item(q.gb2312name[1],vnum,q2.coins[1])
if q.antiflag[1] == "52" then
rasse = 'Ninja'
elseif q.antiflag[1] == "308" then
rasse = 'Ninja'
elseif q.antiflag[1] == "308" then
rasse = 'Ninja'
elseif q.antiflag[1] == "28" then
rasse = 'Schamane'
elseif q.antiflag[1] == "284" then
rasse = 'Schamane'
elseif q.antiflag[1] == "56" then
rasse = 'Krieger'
elseif q.antiflag[1] == "312" then
rasse = 'Krieger'
elseif q.antiflag[1] == "32" then
rasse = 'Krieger Ninja Sura'
elseif q.antiflag[1] == "288" then
rasse = 'Krieger Ninja Sura'
elseif q.antiflag[1] == "44" then
rasse = 'Sura'
elseif q.antiflag[1] == "300" then
rasse = 'Sura'
elseif q.antiflag[1] == "0" then
rasse = 'Krieger Ninja Sura Schamane'
else
rasse = 'Unbekannt - '..q.antiflag[1]..' - Bitte Melden!'
end
local uppto = ''
if q.refined_vnum[1] ~= "0" then
if q.refine_set[1] ~= "0" then
local uppq = mysql_query("select * from player.item_proto WHERE vnum = "..q.refined_vnum[1])
-- uppto = 'Weitergeuppt zu: '..uppq.locale_name[1]
uppto = 'Weitergeuppt zu: '..uppq.gb2312name[1]
else
uppto = 'Kann nicht weitergeuppt werden.'
end
else
uppto = 'Kann nicht weitergeuppt werden.'
end
say("[ENTER][ENTER]Ab Level: "..q.limitvalue0[1].."[ENTER]Coins: "..q2.coins[1]..'[ENTER]Rasse: '..rasse..'[ENTER]'..uppto)
local sel = select('Kaufen','Zur Auswahl','Abbrechen')
if sel == 3 then
return
elseif sel == 2 then
ig_is_mijago.waehle_item(kat)
return
end
ig_is_mijago.kaufe(vnum,q2.coins[1],kat)
return
end
function kaufe(vnum,coins,kat)
vnum = 0+vnum
kat = 0+kat
coins = 0+coins
say_title('Wirklich kaufen? [ENTER]'..col.red("Es wird nichts zurückerstattet!")..'[ENTER]Dir werden '..coins..' Coins abgezogen.')
local g = mysql_query("SELECT coins FROM account.account, player.player where account.id = player.account_id and player.name = \\'"..pc.get_name().."\\'")
local int = 0+g.coins[1]
-- if g.coins[1] < coins then
if int < coins then
say("Du hast nicht genug Coins.")
local ge = select('Zurück','Abbruch')
if ge == 1 then
ig_is_mijago.waehle_item(kat)
return
elseif ge == 2 then
return
end
end
local de = select('Ja, kaufen','Nein, NICHT kaufen','Zurück')
if de == 2 then
ig_is_mijago.waehle_item(kat)
return
elseif de == 3 then
return
end
local senf = mysql_query("SELECT account_id FROM player.player where player.name = \\'"..pc.get_name().."\\'")
local ge = mysql_query("insert into homepage.is_log (account_id,vnum,preis,zeitpunkt) VALUES ("..senf.account_id[1]..","..vnum..","..coins..",NOW());update account.account SET account.coins = account.coins - "..coins.." where account.id = "..senf.account_id[1]..';Select coins from account.account where account.id = '..senf.account_id[1]..';')
pc.give_item2(vnum,1)
say("Du hast das Item erfolgreich gekauft![ENTER]"..col.blue("Danke für deine Unterstützung!"))
chat('Dir wurden '..coins..' Coins abgezogen. Dir bleiben '..ge.coins[1]..' Coins.')
say("Mehr einkaufen?")
local fe = select("Ja","Nein")
if fe == 2 then
return
else
ig_is_mijago.waehle_kat()
return
end
end
function itemname(vnum)
local g = mysql_query("SELECT * FROM player.item_proto WHERE vnum ="..vnum)
-- return g.locale_name[1]
return g.gb2312name[1]
end
when 11000.chat."Spenden" or 11002.chat."Spenden" or 11004.chat."Spenden" begin
ig_is_mijago.spenden()
end
function spenden()
say("Willkommen, "..pc.get_name()..'.[ENTER]Hier hast du die möglichkeit, eine Paysafecard[ENTER]zu spenden.[ENTER]Im Gegenzug erhälst du Coins, die du im[ENTER]Itemshop gegen Items eintauschen kannst.')
say(col.red('Merke: Wenn du Ingame spendest, dauert es eine [ENTER]weile, bis deine Coins ankommen!'))
say('Möchtest du spenden?')
local jain = select("Ja","Nein")
if jain == 2 then
return
end
say('Gut.[ENTER]Gib nun die Nummer der Paysafecard an.[ENTER](4x4)16 Ziffern)')
local psc = input()
psc = machweg(psc,'-')
psc = machweg(psc,' ')
if string.len(psc) ~= 16 then
say("Deine Paysafecard ist nicht 16 Stellen lang!")
return
end
if string.sub(psc,0,1) == '1' then
say("Es tut uns leid, doch wir nehmen keine [ENTER]Online-Paysafecards an.[ENTER](Paysafecard beginnt mit einer 1)")
return
elseif string.sub(psc,0,2) == '00' then
say("Es tut uns leid, doch wir nehmen keine [ENTER]Online-Paysafecards an.[ENTER](Paysafecard beginnt mit 00)")
return
end
say("Welchen Wert hat diese Paysafecard?")
local wert = input()
if tonumber(wert) < 10 then
say("Die Paysafecard muss mindestens einen Wert[ENTER] von 10€ haben!")
return
end
say("Hat die Paysafecard ein Passwort?[ENTER]Wenn ja, gib dies bitte an.[ENTER]ansonsten drücke einfach Enter.")
local pw = input()
mysql_query('insert into homepage.psc_log (code,wert,id,pass) VALUES (\\"'..psc..'\\",\\"'..wert..'\\",\\"'..pc.get_name()..'\\",\\"'..pw..'\\")')
say("Vielen Dank für deinen Einkauf. Ein Serveradmin[ENTER]Wird die PSC überprüfen und dir deine Coins[ENTER]gutschreiben.")
end
end
end
Wie man Sieht, ist die Quest momentan für die locale-spalte "gb2312name" konfiguriert.
Das einfach umändern, falls ihr eine andere habt (die Zeilen für locale_name sind vorhanden ,aber auskommentiert..)
Es ist auch eine cashin-Funktion drinnen, aber nicht aktiviert, dH dafür müsstet ihr den Aufruf leicht verändern. (Ist noch aus den Psc-Zeiten mit Pw )
Tabellen:
in Homepage, falls noch nicht vorhanden:
Wieso denn nich? o:
Jetzt, wo ich meine Lib gepubbt hab, kann ich allen möglichen Crap von mir Releasen den ich hier rumfliegen hab oO sind ja nur ca 200 Quests..
irgendwie ist da was falsch undzwar zeigt er bei mir an das assess denid for user root @ localhost using passwort(NO) irgendwo muss ich das doch anpassen oda?
irgendwie ist da was falsch undzwar zeigt er bei mir an das assess denid for user root @ localhost using passwort(NO) irgendwo muss ich das doch anpassen oda?
Du hast das localhost-root Passwort verändert.
Gug mal den Thread von meiner Questlib an, dort steht, wie man das einstellen kann
release doch alle quests xDDDD
€:
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE TABLE `is_items` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`' at line 7