[quest] mysql stb-nél kéne help (K)

Indította Lolexx, 2013-03-30, 14:24:49

2013-03-30, 14:24:49 Utolsó szerkesztés: 2013-04-05, 20:27:18 Szerző: [MOD]Aegist
Sziasztok

Szeretnék egy olyan questet írni,amiben két választása van az illetőnek.Az egyik 'Igen' a másik 'Nem'.
Az 'Igen' választás az adatbázisban player/player/valasztas oszlopban az értéket 1re állítja.
A   'Nem' választás az adatpázisban player/player/valasztas oszlopban az értéket 2re állítja.

A quest amivel próbálkoztam:
*Tudom,hogy nincs benne a két választásos dolog,először működjön így utána megoldom azt már

quest valasztos begin
state start begin
when 9004.chat."Választás" begin
mysql_query("UPDATE player.player SET valasztas=1 WHERE name="..pc.get_name()..";")
end
when 9004.chat."Választásom" begin
local valasztas = mysql_query("SELECT valasztas FROM player.palyer WHERE name="..pc.get_name()..";")
say("Neked "..valasztas.." -es a választásod")
end
end
end


ami questlib -ben van

db_user="******"
db_pass="********"
db_host="localhost"

function mysql_select(query,notselect)
    local tmp=number(11111111,99999999)
os.execute('mysql -h '..db_host..' -u '..db_user..' -p'..db_pass..' -N -e '..string.format("%q",query)..' 2>&1 > /tmp/'..tmp)

if not notselect then
local res,i={},1
local f,e=io.open("/tmp/"..tmp)
if f then
local line=f:read("*l")
while line do
res[i]={}
string.gsub(line,"([^\t]+)\t*", function(s)
table.insert(res[i],s)
end)
i=i+1
line=f:read("*l")
end
f:close()
os.execute("rm /tmp/"..tmp)
end
return res
end
end

function mysql_notselect(query)
return mysql_select(query,true)
end

mysql_query = mysql_select



*Fontos,hogy CSAK karakterre vonatkozóan írja át az értéket,ezért próbáltam name= pcgetname-val
*A probléma az,hogy nem váltsa át,viszont ha manuálisan beírom a queryt,beírom a nevet is akkor átváltsa.

☜☆☞  Az életemért harcolok,de ugyanakkor a harcnak élek! ☜☆☞

2013-03-30, 15:31:28 #1 Utolsó szerkesztés: 2013-03-30, 16:37:47 Szerző: ATAG
Név helyett jobb a vid-et használni, a select is gyorsabb vele (szerintem).
Valójában csak annyi volt a hibád, hogy ez a mysql_query() nem egy értékkel, hanem egy tömbbel tér vissza. Szóval helyesen:  say("Neked "..valasztas[1][1].." a választásod")

quest valasztos begin
state start begin
when 9004.chat."Választás" begin
say("Válassz! Igen, vagy nem?")
local s = select("Igen","Nem", "Később választok")
if s == 3 then
return
else
mysql_query("UPDATE player.player SET valasztas="..s.." WHERE id="..pc.get_player_id()..";")
end
local valasztas = mysql_query("SELECT valasztas FROM player.palyer WHERE id="..pc.get_player_id()..";")
say("Neked "..valasztas[1][1].." a választásod")
end
end
end

Köszöntem nagyon nagyon szépen,már csak 1 bajom van vele,hogy pc.get_vid mivel egyenlő?melyik oszlop az,mert kiírtattam a vid számomat,és player.player-ben nincs ilyen.

Nem lehet magát a karakter ID-jét lekérni?

☜☆☞  Az életemért harcolok,de ugyanakkor a harcnak élek! ☜☆☞

Bocsi, az valóban nem az id... ezt kell helyette használni: pc.get_player_id()

2013-03-30, 17:13:41 #4 Utolsó szerkesztés: 2013-04-05, 20:27:04 Szerző: [MOD]Aegist


Köszönöm szépen,így már szuperül szuperál .



☜☆☞  Az életemért harcolok,de ugyanakkor a harcnak élek! ☜☆☞