Eroare quest

Înainte de a posta o problemă, caută în acest forum și poate găsești rezolvare.
Închis
Avatar utilizator
BearHunter
Nivel 1

Nivel 1
Mesaje: 66
Membru din: 17 Iun 2015, 19:41
Aprecieri: 16  
Mulţumiri: 1  
Medalii

Salutare j4m !
Tocmai ce am terminat de impelmentat un sistem pentru a putea vedea Monedele Dragon în inventar, însă am o mică eroare.
Problema este că serverul nu reușește să transmită numărul de monede clientului, moneledele rămânând constant așa : Imagine Sunt sigur că este greșit questul, adică funcția din questul ăsta:

Cod: Selectaţi tot

quest mds begin
	state start begin
		when login begin
			loop_timer("carga_mds", 10)
		end
	
		when carga_mds.timer begin
			local coins = mysql_query("SELECT coins from account.account WHERE id="..pc.get_account_id().." LIMIT 1;")[1][1]
			cmdchat("Mds "..coins)
		end
	end
end
În loc de funcția mysql_query am pus pc.get_level() să văd dacă transmite această valoare, și o transmite, deci chestia aia cu mysql_query e greșită.

În sysser din server îmi apare aceste erori :
SYSERR: Jul 31 14:00:30 :: WriteRunningStateToSyserr: LUA_ERROR: quest mds.start leave
SYSERR: Jul 31 14:00:39 :: RunState: LUA_ERROR: [string "mds"]:1: attempt to index field `?' (a nil value)
SYSERR: Jul 31 14:46:45 :: RunState: LUA_ERROR: [string "mds"]:2: attempt to concatenate local `coins' (a table value)
SYSERR: Jul 31 14:46:45 :: WriteRunningStateToSyserr: LUA_ERROR: quest mds.start leave
Apropo, utilizez un server cu game 34k.
Imagine
Afișează semnătura
Avatar utilizator
Marggraf
Utilizator interzis !

Utilizator interzis !
Mesaje: 1074
Membru din: 25 Mai 2014, 12:46
Server: loading...
Regat: Shinsoo
Aprecieri: 36  
Mulţumiri: 36  
Medalii

quest_lib vezi la functia mysql_query
Imagine
Imagine
Afișează semnătura
Avatar utilizator
BearHunter
Nivel 1

Nivel 1
Mesaje: 66
Membru din: 17 Iun 2015, 19:41
Aprecieri: 16  
Mulţumiri: 1  
Medalii

Marggraf scrie:quest_lib vezi la functia mysql_query
Asta este funcția din questlib :

Cod: Selectaţi tot

mysql_query = function(query) 
    local rt = io.open('CONFIG','r'):read('*all') 
    local pre= string.gsub(rt,'.+PLAYER_SQL:%s(%S+)%s(%S+)%s(%S+)%s(%S+).+','-h%1 -u%2 -p%3 -D%4') 
    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)   
    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]        = b 
        out[t[1][a]]    = out[t[1][a]] or {} 
        out[t[1][a]][i-1]    = b 
    end) end 
    return out 
end
Imagine
Afișează semnătura
Avatar utilizator
Marggraf
Utilizator interzis !

Utilizator interzis !
Mesaje: 1074
Membru din: 25 Mai 2014, 12:46
Server: loading...
Regat: Shinsoo
Aprecieri: 36  
Mulţumiri: 36  
Medalii

Cod: Selectaţi tot

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)

	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
    	out[t[1][a]]       	= out[t[1][a]] or {}
    	out[t[1][a]][i-1]  	= tonumber(b) or b
	end) end
	return out
end
vezi asa si vezi ca trb reboot
Imagine
Imagine
Afișează semnătura
Avatar utilizator
BearHunter
Nivel 1

Nivel 1
Mesaje: 66
Membru din: 17 Iun 2015, 19:41
Aprecieri: 16  
Mulţumiri: 1  
Medalii

Marggraf scrie:

Cod: Selectaţi tot

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)

	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
    	out[t[1][a]]       	= out[t[1][a]] or {}
    	out[t[1][a]][i-1]  	= tonumber(b) or b
	end) end
	return out
end
vezi asa si vezi ca trb reboot
Mulțumesc foarte mult, am reușit. Am fost înlocuit mai demult cu ce mi-ai arătat tu, dar apoi am pus din nou originalul, neștiind că este nevoie de reboot după ce înlocuiesc ceva din questlib. Mulțumesc încă o dată.

Am primit răspunsul. Cer închiderea topicului.
Imagine
Afișează semnătura
Închis
Răspunsuri
1
Vizualizări
128
Răspunsuri
8
Vizualizări
518
Răspunsuri
7
Vizualizări
471

Înapoi la “Probleme rezolvate”

  • Informaţie
  • Cine este conectat

    Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 30 vizitatori