-> Gibt das item sofort ins Inventar, daher weniger Buganfällig
Dafür braucht ihr die Questlib!
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:
PHP Code:
CREATE TABLE `is_kategorien` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`titel` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1
CREATE TABLE `is_items` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`vnum` int(10) unsigned NOT NULL,
`kategorie_id` int(10) unsigned NOT NULL,
`bild` varchar(50) NOT NULL,
`beschreibung` varchar(200) NOT NULL,
`preis` int(10) unsigned NOT NULL,
`anzeigen` varchar(1) NOT NULL,
`attrtype0` tinyint(4) NOT NULL DEFAULT '0',
`attrvalue0` smallint(6) NOT NULL DEFAULT '0',
`attrtype1` tinyint(4) NOT NULL DEFAULT '0',
`attrvalue1` smallint(6) NOT NULL DEFAULT '0',
`attrtype2` tinyint(4) NOT NULL DEFAULT '0',
`attrvalue2` smallint(6) NOT NULL DEFAULT '0',
`attrtype3` tinyint(4) NOT NULL DEFAULT '0',
`attrvalue3` smallint(6) NOT NULL DEFAULT '0',
`attrtype4` tinyint(4) NOT NULL DEFAULT '0',
`attrvalue4` smallint(6) NOT NULL DEFAULT '0',
`attrtype5` tinyint(4) NOT NULL DEFAULT '0',
`attrvalue5` smallint(6) NOT NULL DEFAULT '0',
`attrtype6` tinyint(4) NOT NULL DEFAULT '0',
`attrvalue6` smallint(6) NOT NULL DEFAULT '0',
`socket0` int(10) unsigned NOT NULL DEFAULT '0',
`socket1` int(10) unsigned NOT NULL DEFAULT '0',
`socket2` int(10) unsigned NOT NULL DEFAULT '0',
`socket3` int(10) unsigned NOT NULL DEFAULT '0',
`socket4` int(10) unsigned NOT NULL DEFAULT '0',
`socket5` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=33 DEFAULT CHARSET=latin1
In den Tabellen müssen folgende Felder mind. 1x gefüllt sein:
is_kategorien: id,titel
is_items: vnum,kategorie_id, beschreibung,preis
# Ende
Wer wissen will, wie sie aussieht, guggt sich den Dorfplatzwächter auf KeepMt2 an, die haben den Ingame-Itemshop schon drin.
Keine Gewähr dass sie ohne Modifikation funktioniert
lg Mijago
Benötigt:






