LINUX.ORG.RU

История изменений

Исправление LightDiver, (текущая версия) :

У меня тут встал вопрос. Почему в луа может не работать условие «не равно»? ~=

endQuests тут - переменная, в которой «простые_квесты»

if TDG[sender][endQuests][x]~="1" then

Параметр равняется «1» - я проверяю в игре. Возвращается «1».

https://cdn.discordapp.com/attachments/811217303378329643/1097028724819492874/1.png

Я проверяю в таблиц, то же самое: https://cdn.discordapp.com/attachments/811217303378329643/1097028731635257455/2.png

А строка if TDG[sender][endQuests][x]~=«1» then считает что там нет единицы. И это не в первый раз. В другом условии у меня:

if testQ["текущий_квест"]==nil or testQ["текущий_квест"]=="9999" then
        btn[2]:Disable()
        btn[2]:SetText("Нет взятых квестов")
elseif testQ["текущий_квест"]~=nil or testQ["текущий_квест"]~="9999" then
        testComplit=testQ["текущий_квест"]
        id, name, points, completed, month, day, year, description, flags, icon, rewardText, isGuildAch = GetAchievementInfo(testComplit)
        if completed == true then
            btn[2]:Disable()
            btn[2]:SetText("Ачивка не выполнена")
        else
            btn[2]:Enable()
            btn[2]:SetText("Сдать квест")
        end
    end

Собственно этот код в принципе не работает. И я не могу понять почему. Сначала я сделал условие «testQ[«текущий_квест»]~=nil or testQ[«текущий_квест»]~=«9999» then» первым, но тогда игра ругается мне что там nil. Но уловие ты видишь? По условию оно должно туда перейти, если там не nil. А оно переходит, если nil.

Тогда я сделал первым условием если == nil. Короче, суть проблемы: условие ~= не работает. Почему?

Собственно вот не рабочий блок, например:

if string.find (message,hsh) and string.find (message, "#aai") then
	msg1=mysplit(message)
	msg2=msg[6]
	TDG[sender][endQuests][msg2]="1"
	testQLVL=TDG[sender]["уровень_квестов"]
	testQLVL=tonumber(testQLVL)
	countQ=tablelength(pQuests[testQLVL])
	local chisloProstyhQComplit=0
	chisloProstyhQComplit=tonumber(chisloProstyhQComplit)
	for testQ=1, countQ do
		local x = math.random(1, countQ)
		ach=pQuests[testQLVL][x]
		if TDG[sender][endQuests][x]~="1" then
			SendChatMessage(hsh .. " #aaa " .. sender .. ", покажи мне ачивку " .. ach .. " " .. GetAchievementLink(ach), "OFFICER", nil, 1)
			break
		else
			chisloProstyhQComplit=chisloProstyhQComplit + 1
			if chisloProstyhQComplit==countQ then
				achCmplt="6584"
				SendChatMessage(hsh .. " #aah " .. sender .. ", все стартовые квесты уже выполнены. Теперь покажи мне ачивку" .. achCmplt .. GetAchievementLink(achCmplt), "OFFICER", nil, 1)
			end
		end
	end
end

if TDG[sender][endQuests][x]~=«1» then

Вот это условие. Как видно, оно не должно выполняться. А оно выполняется. Ерунда какая то.

Исправление LightDiver, :

У меня тут встал вопрос. Почему в луа может не работать условие «не равно»? ~=

if TDG[sender][endQuests][x]~="1" then

Параметр равняется «1» - я проверяю в игре. Возвращается «1».

https://cdn.discordapp.com/attachments/811217303378329643/1097028724819492874/1.png

Я проверяю в таблиц, то же самое: https://cdn.discordapp.com/attachments/811217303378329643/1097028731635257455/2.png

А строка if TDG[sender][endQuests][x]~=«1» then считает что там нет единицы. И это не в первый раз. В другом условии у меня:

if testQ["текущий_квест"]==nil or testQ["текущий_квест"]=="9999" then
        btn[2]:Disable()
        btn[2]:SetText("Нет взятых квестов")
elseif testQ["текущий_квест"]~=nil or testQ["текущий_квест"]~="9999" then
        testComplit=testQ["текущий_квест"]
        id, name, points, completed, month, day, year, description, flags, icon, rewardText, isGuildAch = GetAchievementInfo(testComplit)
        if completed == true then
            btn[2]:Disable()
            btn[2]:SetText("Ачивка не выполнена")
        else
            btn[2]:Enable()
            btn[2]:SetText("Сдать квест")
        end
    end

Собственно этот код в принципе не работает. И я не могу понять почему. Сначала я сделал условие «testQ[«текущий_квест»]~=nil or testQ[«текущий_квест»]~=«9999» then» первым, но тогда игра ругается мне что там nil. Но уловие ты видишь? По условию оно должно туда перейти, если там не nil. А оно переходит, если nil.

Тогда я сделал первым условием если == nil. Короче, суть проблемы: условие ~= не работает. Почему?

Собственно вот не рабочий блок, например:

if string.find (message,hsh) and string.find (message, "#aai") then
	msg1=mysplit(message)
	msg2=msg[6]
	TDG[sender][endQuests][msg2]="1"
	testQLVL=TDG[sender]["уровень_квестов"]
	testQLVL=tonumber(testQLVL)
	countQ=tablelength(pQuests[testQLVL])
	local chisloProstyhQComplit=0
	chisloProstyhQComplit=tonumber(chisloProstyhQComplit)
	for testQ=1, countQ do
		local x = math.random(1, countQ)
		ach=pQuests[testQLVL][x]
		if TDG[sender][endQuests][x]~="1" then
			SendChatMessage(hsh .. " #aaa " .. sender .. ", покажи мне ачивку " .. ach .. " " .. GetAchievementLink(ach), "OFFICER", nil, 1)
			break
		else
			chisloProstyhQComplit=chisloProstyhQComplit + 1
			if chisloProstyhQComplit==countQ then
				achCmplt="6584"
				SendChatMessage(hsh .. " #aah " .. sender .. ", все стартовые квесты уже выполнены. Теперь покажи мне ачивку" .. achCmplt .. GetAchievementLink(achCmplt), "OFFICER", nil, 1)
			end
		end
	end
end

if TDG[sender][endQuests][x]~=«1» then

Вот это условие. Как видно, оно не должно выполняться. А оно выполняется. Ерунда какая то.

Исходная версия LightDiver, :

У меня тут встал вопрос. Почему в луа может не работать условие «не равно»? ~=

if TDG[sender][endQuests][x]~="1" then

Параметр равняется «1» - я проверяю в игре. Возвращается «1».

https://cdn.discordapp.com/attachments/811217303378329643/1097028724819492874/1.png

Я проверяю в таблиц, то же самое: https://cdn.discordapp.com/attachments/811217303378329643/1097028731635257455/2.png

А строка if TDG[sender][endQuests][x]~=«1» then считает что там нет единицы. И это не в первый раз. В другом условии у меня:

if testQ["текущий_квест"]==nil or testQ["текущий_квест"]=="9999" then
        btn[2]:Disable()
        btn[2]:SetText("Нет взятых квестов")
elseif testQ["текущий_квест"]~=nil or testQ["текущий_квест"]~="9999" then
        testComplit=testQ["текущий_квест"]
        id, name, points, completed, month, day, year, description, flags, icon, rewardText, isGuildAch = GetAchievementInfo(testComplit)
        if completed == true then
            btn[2]:Disable()
            btn[2]:SetText("Ачивка не выполнена")
        else
            btn[2]:Enable()
            btn[2]:SetText("Сдать квест")
        end
    end

Собственно этот код в принципе не работает. И я не могу понять почему. Сначала я сделал условие «testQ[«текущий_квест»]~=nil or testQ[«текущий_квест»]~=«9999» then» первым, но тогда игра ругается мне что там nil. Но уловие ты видишь? По условию оно должно туда перейти, если там не nil. А оно переходит, если nil.

Тогда я сделал первым условием если == nil. Короче, суть проблемы: условие ~= не работает. Почему?