Jump to content

Return из колбека в dbQuery


Recommended Posts

Привет. Пишем roleplay режим с знакомым, попутно учимся. Я взялся за написание регистрации\авторизации, и дошло до написания проверки на существование аккаунта. 

Не долго думая, я накидал такой вариант.

function isRegistered(nick)
	dbQuery(
		function(qh)
			local result = dbPoll(qh, 0)
			if #result == 0 then
				outputDebugString("ne zaregan")
				return true
			else 
				outputDebugString("zaregan")
				return false
			end
		end
		,dbHandle, "SELECT * FROM `accounts` WHERE `nick` = ? LIMIT 1", nick)
end

 

Но столкнулся с проблемой - оно не возвращает ни true ни false(сообщения отладочные выводятся правильно). Мне кажется, что решение где-то на поверхности, но дойти до него не могу.

Может подскажете какие-то другие варианты реализации этой функции, или укажите на ошибку(т.к. с самим языком Lua я знаком поверхностно).

Edited by West14
Link to comment
function isRegistered(nick, callback)
	dbQuery(
		function(qh)
			local result = dbPoll(qh, 0)
			if #result == 0 then
				callback( false )
			else
				callback( true )
			end
		end
		,dbHandle, "SELECT * FROM `accounts` WHERE `nick` = ? LIMIT 1", nick)
end

addEventHandler( 'example', root, function()
	local name = client:getName()
	isRegistered( name, function( state )
		outputDebugString( state and "zaregan" or "ne zaregan")
		if state then
			client:outputChat( 'Welcom back' )
		else
			client:outputChat( 'Hello my little friend' )
		end
	end )
end )

Каллбэк функция в dbQuery является анонимной и никуда ничего не возвращает.

Edited by TheNormalnij
  • Like 1
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...