[RELEASE] in-game email/jelszó csere

Indította ATAG, 2011-10-14, 06:46:28

2011-10-14, 06:46:28 Utolsó szerkesztés: 2011-10-14, 22:40:06 Szerző: ATAG
mysql adatokat (név,jelszó) értelem szerűen meg kell adni a 7. sorban, valamint az npc kódját is célszerű megváltoztatni (a kovácsé van benne).
Elsősorban tesztelés céljából készült, produktív szerveren csak saját felelősségére használja mindenki!

-- change_email.quest
--by ATAG
quest change_email begin
state start begin
function mysql_query(text)
  local tmp=number(11111111,99999999)
  os.execute('mysql -u USER -pPASSWORD -N -e '..string.format("%q",text)..' 2>&1 > /tmp/'..tmp)
  local f,e=io.open("/tmp/"..tmp)
  if f then
return function()
local l=f:read("*l")
if l then
    return l
else
    f:close()
    os.execute("rm /tmp/"..tmp)
end
end
  else
return nil, e
  end
   end

when 20016.chat."Email/jelszó csere" begin
local acc_id
if pc.get_account_id then
-- rev.1765...
acc_id = pc.get_account_id()
else
--old "korea" support
for ret in change_email.mysql_query("SELECT account_id FROM player.player WHERE name="..string.format("%q",pc.get_name()).." LIMIT 1;") do
acc_id=ret
end
end
if not acc_id then
say("Nem találom az acc ID-t! ERROR")
return
end
say("Adj meg új emailt, vagy hagyd üresen")
say("")
local email=input()
if email!="" then
email=string.gsub(email,"(\')","\\'")
local sql='UPDATE account.account SET email='..string.format("%q",email)..' WHERE id='..acc_id..' LIMIT 1;'
change_email.mysql_query(sql)
say("Email megváltozott erre:[ENTER]"..email)
say("")
wait()
end
say("Adj meg új jelszót, vagy hagyd üresen")
say("")
local pass=input()
if pass!="" then
pass=string.gsub(pass,"(\')","\\'")
local sql='UPDATE account.account SET password=PASSWORD('..string.format("%q",pass)..') WHERE id='..acc_id..' LIMIT 1;'
change_email.mysql_query(sql)
say("Jelszó megváltozott erre:[ENTER]"..pass)
say("")
end
   end
end
end


A hongkong_list vagy locale_list-be quest_functions-ba be kell írni az "új" funkciókat:
os.execute
string.format
string.gsub
io.open

esetleg még a pc.get_account_id-t, de 2010-es vagy újabb szervernél ez nemszükséges :)

2011-10-14, 11:28:56 #1 Utolsó szerkesztés: 2011-10-14, 12:03:56 Szerző: TheLAW
Ez remek. Köszi!
csak nem lehet teleíteni


Uploaded with ImageShack.us

for
do
sqltest.mysql_query
pc.get_account_id
change_email.mysql_query
read
os.execute
os.execite
string.format
string.gsub
io.open
mysql_query

már mindent beleírtam de ugyan azt írja.
quest_functions ba írtam mert locale_list ben a .quest fájlok listája van

2011-10-14, 12:29:28 #3 Utolsó szerkesztés: 2011-10-14, 12:36:59 Szerző: ATAG
Respect, valóban oda kell.



A "calls undeclared function" szerint mégsem jó helyen van... esetleg az ékezeteket próbáld kigyomlálni, nálam cp1250-el megy a teszt szerver :)

 

De se emailt sem jelszót nem változtat.





Nagyon szépen köszönöm ATAG, nekem sikerült és nagyon jó lett!
Bátran állíthatom átment a teszten!

Üdvözlettel: Molnár Kitty Liliána

Idézetet írta: Ninjley Dátum 2011-10-14, 16:39:01
Nagyon szépen köszönöm ATAG, nekem sikerült és nagyon jó lett!
Bátran állíthatom átment a teszten!

Üdvözlettel: Molnár Kitty Liliána

Nyalit be lehet fejezni 

Grat ATAG faxa lett :D Remélem még 1x hasznát veszem =)

Az esetleges sql hibákról sajnos nincs visszajelzés a szkriptben.
Ha nem változtatja meg az adatokat, de amúgy hibátlanul lefut, akkor a mysql adatok lettek helytelenül megadva. Ebbe párszor én is belefutottam :)

Bocsi én szúrtam el. mysql ben olyan felhasználót írtam be aminek csak olvasáshoz volt joga    
Tökéletesen működik köszi.

2011-10-15, 11:49:10 #9 Utolsó szerkesztés: 2011-10-15, 11:52:25 Szerző: Rezo
Köszönöm,majd remélem hasznát veszem :D.

De valami szúrja a szememet...
Mi az,hogy "átment a teszten"? Te teszteled ATAG-ot vagy mi? -.-"