|
You last visited: Today at 06:25
Advertisement
[SERVICE] Die Questkontrolle
Discussion on [SERVICE] Die Questkontrolle within the Metin2 Private Server forum part of the Metin2 category.
02/18/2015, 16:15
|
#11101
|
elite*gold: 35
Join Date: Aug 2014
Posts: 336
Received Thanks: 267
|
Quote:
Originally Posted by C-3PO.
Nabend Epvp. Hier mein Fehler:
Code:
5: not found
Warning: Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'mt2'@'localhost' (using password: YES)
es geht um den mysql_select Befehl, hier die funktion:
Code:
mysql_query = function(query)
if not pre then
local rt = io.open('CONFIG','r'):read('*all')
pre,_= string.gsub(rt,'.+PLAYER_SQL:%s(%S+)%s(%S+)%s(%S+)%s(%S+).+','-h%1 -u%2 -p%3 -D%4')
end
math.randomseed(os.time())
local fi,t,out = 'mysql_data_'..math.random(10^9)+math.random(2^4,2^10),{},{}
--os.execute('mysql '..pre..' --e='..string.format('%q',query)..' > '..fi) -- für MySQL51
os.execute('mysql '..pre..' -e'..string.format('%q',query)..' > '..fi) -- für MySQL55
for av in io.open(fi,'r'):lines() do table.insert(t,split(av,'\t')) end; os.remove(fi);
for i = 2, table.getn(t) do table.foreach(t[i],function(a,b)
out[i-1] = out[i-1] or {}
out[i-1][a] = tonumber(b) or b or 'NULL'
out[t[1][a]] = out[t[1][a]] or {}
out[t[1][a]][i-1] = tonumber(b) or b or 'NULL'
end) end
return out
end
und hier mal die config, falls die benötigt wird:
Die Config ist komplett richtig, Server startet, und quests gehen auch nur sobald ich eine quest mit dem mysql_select befehl ausführe ändert er nichts in der db, hier ein Beispiel:
Code:
when 20011.chat."Spielzeit zurücksetzen" begin
local name = pc.get_name()
mysql_query("UPDATE player.player SET playtime = 0 WHERE name = '"..name.."';")
say("Spielzeit wurde auf 0 zurückgesetzt!")
end
Funktioniert leider nicht, woran liegt das?
|
#immernoch
|
|
|
02/19/2015, 11:31
|
#11102
|
elite*gold: 40
Join Date: Nov 2009
Posts: 1,159
Received Thanks: 442
|
Quote:
Originally Posted by C-3PO.
#immernoch
|
Ich weiß es nicht genau, aber könnte es eventuell auch möglich sein, dass es wie bei den DR Gutscheinen noch in der Quest eine Abfrage geben muss mit der Connection zur Datenbank?
|
|
|
02/19/2015, 15:34
|
#11103
|
elite*gold: 120
Join Date: Jul 2012
Posts: 219
Received Thanks: 6
|
Do you know why my quest doesn't work ? I know you can simply say pc.teleport(name) without game.set_flag ... but i want to make a bigger system
PHP Code:
quest bind begin state start begin when 40003.use with game.get_event_flag(nume, 0) begin say_title("Bind System:") say("Do you want to have a friend ?") local a = select("Yes","No!") if a == 1 then say_title("Bind System:") say_reward("Tell me your friend's name") local nume = pc.get_name() local name = input() if pc.get_level() < 35 then say_title("Bind system:") say("You can't use this item") else game.set_event_flag(nume, 1) game.set_event_flag(name, 1) pc.remove_item(40003, 1) end end end when 40003.use with game.get_event_flag(nume, 1) begin say_title("Bind System") say("Do you want to teleport at your friend ?") local b = select("Yes","No!") if b == 1 then pc.teleport(name) end end end end
|
|
|
02/19/2015, 17:30
|
#11104
|
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
|
Quote:
Originally Posted by WyppyOne
Do you know why my quest doesn't work ? I know you can simply say pc.teleport(name) without game.set_flag ... but i want to make a bigger system
PHP Code:
quest bind begin state start begin when 40003.use with game.get_event_flag(nume, 0) begin say_title("Bind System:") say("Do you want to have a friend ?") local a = select("Yes","No!") if a == 1 then say_title("Bind System:") say_reward("Tell me your friend's name") local nume = pc.get_name() local name = input() if pc.get_level() < 35 then say_title("Bind system:") say("You can't use this item") else game.set_event_flag(nume, 1) game.set_event_flag(name, 1) pc.remove_item(40003, 1) end end end when 40003.use with game.get_event_flag(nume, 1) begin say_title("Bind System") say("Do you want to teleport at your friend ?") local b = select("Yes","No!") if b == 1 then pc.teleport(name) end end end end
|
PHP Code:
when 40003.use with game.get_event_flag(nume, 1) begin
get: (name) == value / != value / ...
set: (name, value)
|
|
|
02/19/2015, 21:11
|
#11105
|
elite*gold: 120
Join Date: Jul 2012
Posts: 219
Received Thanks: 6
|
Quote:
Originally Posted by [Sensenmann]
PHP Code:
when 40003.use with game.get_event_flag(nume, 1) begin
get: (name) == value / != value / ...
set: (name, value)
|
I dont understand,can you modify it ?
|
|
|
02/19/2015, 21:12
|
#11106
|
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
|
Quote:
Originally Posted by WyppyOne
I dont understand,can you modify it ?
|
PHP Code:
quest bind begin state start begin when 40003.use with game.get_event_flag(nume) == 0 begin say_title("Bind System:") say("Do you want to have a friend ?") local a = select("Yes","No!") if a == 1 then say_title("Bind System:") say_reward("Tell me your friend's name") local nume = pc.get_name() local name = input() if pc.get_level() < 35 then say_title("Bind system:") say("You can't use this item") else game.set_event_flag(nume, 1) game.set_event_flag(name, 1) pc.remove_item(40003, 1) end end end when 40003.use with game.get_event_flag(nume) == 1 begin say_title("Bind System") say("Do you want to teleport at your friend ?") local b = select("Yes","No!") if b == 1 then pc.teleport(name) end end end end
|
|
|
02/19/2015, 21:32
|
#11107
|
elite*gold: 120
Join Date: Jul 2012
Posts: 219
Received Thanks: 6
|
Quote:
Originally Posted by [Sensenmann]
PHP Code:
quest bind begin state start begin when 40003.use with game.get_event_flag(nume) == 0 begin say_title("Bind System:") say("Do you want to have a friend ?") local a = select("Yes","No!") if a == 1 then say_title("Bind System:") say_reward("Tell me your friend's name") local nume = pc.get_name() local name = input() if pc.get_level() < 35 then say_title("Bind system:") say("You can't use this item") else game.set_event_flag(nume, 1) game.set_event_flag(name, 1) pc.remove_item(40003, 1) end end end when 40003.use with game.get_event_flag(nume) == 1 begin say_title("Bind System") say("Do you want to teleport at your friend ?") local b = select("Yes","No!") if b == 1 then pc.teleport(name) end end end end
|
Ty but the quest doesn't work,it never goes out of first when,when i click it always ask me if i want a friend xD And you can edit it that you can add your friend and teleport at him if he is online ?
------
Asks that if you want to make them it would be great :
--If you and your friend are in same map ( get index map ) receive a bonus
--When your friend or you log out the bonus dissapear
|
|
|
02/21/2015, 14:26
|
#11108
|
elite*gold: 0
Join Date: Jun 2013
Posts: 70
Received Thanks: 12
|
Quest funkt nicht
Die Quest funktzuniert nicht aus welchen grund auch es soll ein auftrag geben 2 metin steine zu killen also ab level 5 metin der gier 10 x und metin der schlacht 10x als belohnung soll man 1x militär pferdebuch bekommen pferd level 30 und 2kk yang Irgendwie klappt die Quest nicht
PHP Code:
quest Metin_steine_kill_quest begin state start begin when login or levelup with pc.get_level() == 5 begin set_state(metin_quest) end end state metin_quest begin when letter begin send_letter("MetinAuftrag") end state metinkill begin when letter begin send_letter("Zerstoere die Metinsteine") when info or button begin say_title("Metinauftrag") say("Sei gegrüßt Fremder!") say("Ich bräuchte dringend deine Hilfe.") say("Kannst du für mich die Metin Steine zerstören?.") say("Eure Aufgabe:") say("") say("Töte einen Metin der Schlacht, Metin der Gier") say("Die Metine findest du auf der Map1") pc.setqf(state1) q.set_counter("Metin der Schlacht", 10) pc.setqf(state2) q.set_counter("Metin der Gier", 10) end state state1 begin when letter begin send_letter("Zerstoere die Metinsteine") end when button or info begin say_title("Auftrag: Metin der Gier") say("Anzahl der Zerstoerten Metins") say_reward("Metinsteine: "..pc.qetgf(state1).."") end state state2 begin when button or info begin say_title("Auftrag:Metin der Schlacht") say("Anzahl der Zerstoerten Metins") say_reward("Metinsteine: "..pc.qetgf(state2).."") end when 8003.kill begin local count = pc.getqf(state1) if count <= 10 then pc.setqf(state1) q.set_counter("Metin der Schlacht", count) if count == 0 then end when 8004.kill begin local count = pc.getqf(state2) if count <= 10 then pc.setqf(state2) q.set_counter("Metin der Gier", count1) end if count == 0 then say_title("Metinauftrag Abgeschlossen!") say("") say("") say("Gut du hast es geschafft.") say("Hier deine Belohnung") say_reward("[1] [Millitär Pferdebuch, Pferdelevel 30] [1kk yang]") pc.give_item2([50053], [1]) horse.get_level()>=30 pc.give_exp2([0]) pc.get_money([100000000]) clear_letter() set_state(__COMPLETE__) end end end
|
|
|
02/21/2015, 14:37
|
#11109
|
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
|
Quote:
Originally Posted by Bullrihgter
Die Quest funktzuniert nicht aus welchen grund auch es soll ein auftrag geben 2 metin steine zu killen also ab level 5 metin der gier 10 x und metin der schlacht 10x als belohnung soll man 1x militär pferdebuch bekommen pferd level 30 und 2kk yang Irgendwie klappt die Quest nicht
PHP Code:
quest Metin_steine_kill_quest begin state start begin when login or levelup with pc.get_level() == 5 begin set_state(metin_quest) end end state metin_quest begin when letter begin send_letter("MetinAuftrag") end state metinkill begin when letter begin send_letter("Zerstoere die Metinsteine") when info or button begin say_title("Metinauftrag") say("Sei gegrüßt Fremder!") say("Ich bräuchte dringend deine Hilfe.") say("Kannst du für mich die Metin Steine zerstören?.") say("Eure Aufgabe:") say("") say("Töte einen Metin der Schlacht, Metin der Gier") say("Die Metine findest du auf der Map1") pc.setqf(state1) q.set_counter("Metin der Schlacht", 10) pc.setqf(state2) q.set_counter("Metin der Gier", 10) end state state1 begin when letter begin send_letter("Zerstoere die Metinsteine") end when button or info begin say_title("Auftrag: Metin der Gier") say("Anzahl der Zerstoerten Metins") say_reward("Metinsteine: "..pc.qetgf(state1).."") end state state2 begin when button or info begin say_title("Auftrag:Metin der Schlacht") say("Anzahl der Zerstoerten Metins") say_reward("Metinsteine: "..pc.qetgf(state2).."") end when 8003.kill begin local count = pc.getqf(state1) if count <= 10 then pc.setqf(state1) q.set_counter("Metin der Schlacht", count) if count == 0 then end when 8004.kill begin local count = pc.getqf(state2) if count <= 10 then pc.setqf(state2) q.set_counter("Metin der Gier", count1) end if count == 0 then say_title("Metinauftrag Abgeschlossen!") say("") say("") say("Gut du hast es geschafft.") say("Hier deine Belohnung") say_reward("[1] [Millitär Pferdebuch, Pferdelevel 30] [1kk yang]") pc.give_item2([50053], [1]) horse.get_level()>=30 pc.give_exp2([0]) pc.get_money([100000000]) clear_letter() set_state(__COMPLETE__) end end end
|
PHP Code:
when login or levelup with pc.get_level() == 5 begin set_state(metin_quest) end end state metin_quest begin when letter begin send_letter("MetinAuftrag") end
Du setzt den Spieler in die state 'metin_quest', sendest in der state ein letter aber machst mit dem letter überhaupt nichts. Kein wunder, dass da nichts passiert
|
|
|
02/21/2015, 16:50
|
#11110
|
elite*gold: 35
Join Date: Aug 2014
Posts: 336
Received Thanks: 267
|
Hier eine Funktion die einfach nur einen bg setzen soll.
Code:
function set_background(name)
say_size(256, 323)
setbgimage('roll.tga')
addimage(20,12,name..'.tga')
end
Jedoch funktioniert sie nicht. Liegt wahrscheinlich daran das name ein string ist aber wie schreibe ich das dann?
|
|
|
02/21/2015, 17:00
|
#11111
|
elite*gold: 0
Join Date: Sep 2009
Posts: 665
Received Thanks: 444
|
#Edt: nvm, gefunden
|
|
|
02/22/2015, 00:19
|
#11112
|
elite*gold: 120
Join Date: Jul 2012
Posts: 219
Received Thanks: 6
|
I dont understant why this quest doesn't work ... i know,is a bullshit but ...
PHP Code:
quest daily begin state start begin when login with get_global_time() – pc.getqf("last_mission") >= 24*60*60 begin send_letter("Misiunea Zilnica") say_title("Misiune zilnica") say("Esti insarcinat sa omori 10 ursi. ") say("Vei primi o rasplata aleatorie.") say_important("Itemul special din saptamana asta este : ") pc.setqf("state", 10) q.set_counter("Ursi ramasi: ", 10) end when button or info begin say("¿Crezi ca esti cel mai bun din regat ?") say("¡Demonstreaza!") say("Respecta regulile si fi corect") say_reward("Monstrii ramasi: "..pc.getqf("state").." ") end when 110.kill begin local count = pc.getqf("state") – 1 if count <= 10 then pc.setqf("state", count) q.set_counter("Monstrii ramasi:", count) end if count == 0 then say_title("BRAVO ai reusit!") say("Ai omorat 10 ursi!") say("Recompesa:") say_reward("500.000.000 Yang") pc.change_money(500000000) pc.setqf("last_mission", get_global_time()) clear_letter() end end end end
|
|
|
02/24/2015, 18:05
|
#11113
|
elite*gold: 0
Join Date: Jan 2011
Posts: 91
Received Thanks: 12
|
kann ingame niemanden bannen was ist hier falsch
Code:
quest spielerstatus begin
state start begin
when letter begin
if pc.is_gm() then
send_letter("Entbannen/Bannen")
end
end
when button or info begin
say_title"Was möchtest du machen?"
say""
local s = select("Spieler Bannen","Spieler Entbannen","Abbrechen")
if s>2 then return end
say_title"gib den namen des Spielers ein"
say("der "..({"Entbannt","Gebannt"})[s].." werden soll")
say""
local name = input()
say_title"Status: "
say""
if tonumber(mysql_query("select account_id from player.player where name='"..name.."' ")[1][1])==0 then
say(string.format("Kein eintrag in der Datenbank mit dem namen: %s",name))
else
say(string.format("Spieler: %s",name))
say("Wurde "..({"Entbannt","Gebannt"})[s])
mysql_query("update account.account join player.player set account.status = '"..({"OK","BLOCK"})[s].."' where player.account_id = account.id and player.name='"..name.."'")
end
send_letter("Entbannen/Bannen")
end
end
end
|
|
|
02/24/2015, 20:23
|
#11114
|
elite*gold: 0
Join Date: Feb 2015
Posts: 156
Received Thanks: 73
|
Quote:
Originally Posted by CFROSFIRE
kann ingame niemanden bannen was ist hier falsch
Code:
quest spielerstatus begin
state start begin
when letter begin
if pc.is_gm() then
send_letter("Entbannen/Bannen")
end
end
when button or info begin
say_title"Was möchtest du machen?"
say""
local s = select("Spieler Bannen","Spieler Entbannen","Abbrechen")
if s>2 then return end
say_title"gib den namen des Spielers ein"
say("der "..({"Entbannt","Gebannt"})[s].." werden soll")
say""
local name = input()
say_title"Status: "
say""
if tonumber(mysql_query("select account_id from player.player where name='"..name.."' ")[1][1])==0 then
say(string.format("Kein eintrag in der Datenbank mit dem namen: %s",name))
else
say(string.format("Spieler: %s",name))
say("Wurde "..({"Entbannt","Gebannt"})[s])
mysql_query("update account.account join player.player set account.status = '"..({"OK","BLOCK"})[s].."' where player.account_id = account.id and player.name='"..name.."'")
end
send_letter("Entbannen/Bannen")
end
end
end
|
guck dir mal die says an. überall fehlen klammern.
|
|
|
02/24/2015, 20:48
|
#11115
|
elite*gold: 0
Join Date: Sep 2009
Posts: 665
Received Thanks: 444
|
Code:
quest spielerstatus begin
state start begin
when letter with pc.is_gm() begin
send_letter("Entbannen/Bannen")
end
when button or info begin
local list_word = {"Bann", "Entbann"}
local option = {"BLOCK", "OK"}
say_title("Was möchtest du machen?")
say()
local s = select("Spieler Bannen","Spieler Entbannen","Abbrechen")
if s == 3 then return end
say_title(list_word[s] .." - Gib den Namen des Spielers ein:")
say()
local name = input()
say_title("Status:")
say()
if tostring(mysql_query("SELECT name FROM player.player WHERE name = '"..name.."';")[1][1]) == 0 then
say("Kein Datenbankeintrag für Spieler mit Namen: ".. name)
else
local account = tonumber(mysql_query("SELECT account_id FROM player.player WHERE name = '".. name .."';")[1][1])
mysql_query("UPDATE account.account SET status = '".. option[s] .."' WHERE id = '".. account .."';")
say("Spieler: ".. name .." - ".. list_word[s] .." erfolgreich.")
end
end
end
end
verstehe zwar immernoch nicht, warum man das nicht einfach von Hand macht, aber hier =)
|
|
|
All times are GMT +2. The time now is 06:25.
|
|