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.
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?
Bocsi, az valóban nem az id... ezt kell helyette használni: pc.get_player_id()
Köszönöm szépen,így már szuperül szuperál .