Ошибка при проверки на кол-во голды

den4iccc

Друзья CG
20 Сен 2014
440
1
Проект
Survival in Taiga XE
Есть абилка которая тратит голду и кастомный ресурс(дерево) при этом создаёт предмет, есть проверка на кол-во древесины, но нет проверки на кол-во голды проблема в том, что когда я использую абилку тратится голда и дерево и если нет дерева то предмет будет создоватся и тратиться голда
Код:
function create_1(keys)

	local player = keys.caster:GetPlayerOwner()
	local pID = player:GetPlayerID()
	local caster = keys.caster

	local ability = keys.ability
	
	local gold_cost = ability:GetGoldCost(1)
--	local gold_cost = ability:GetLevelSpecialValueFor("gold_cost", ability:GetLevel()-1)
	local lumber_cost = ability:GetLevelSpecialValueFor("lumber_cost", ability:GetLevel()-1)

	local enough_lumber

	local sooooo = EntIndexToHScript( keys.caster_entindex )
			
	if gold_cost ~= nil then
		player.lastSpentGold = gold_cost
--		ReturnGold(player, gold_cost)
	end

	if lumber_cost ~= nil then
		enough_lumber = CheckLumber(player, lumber_cost,true)
	else
		enough_lumber = true
	end
	
	if enough_lumber ~= true then
		return
	else
		for itemSlot = 0, 1, 2 do 
			local Item = sooooo:GetItemInSlot( itemSlot )
			sooooo:AddItemByName("item_1")
			SpendLumber(player, lumber_cost)
--			UseResources(player, bGold) gold_cost
		end
	end
	
end

в абилку прописываю
Код:
	 "AbilitySpecial"
	 {
	  "01"
	  { 
	    "var_type" "FIELD_INTEGER"
	    "lumber_cost" "10"
	  }
	  "02"
	  { 
	    "var_type" "FIELD_INTEGER"
	    "gold_cost" "-10"
	  }
	 }

могу конечно использовать "AbilityGoldCost" "10" в абилке только тогда будет игнорировать дерево и всё равно будет создавать предмет
 
Последнее редактирование модератором:
den4iccc, так у тебя ошибка при проверке голды или при проверке дерева?
 
[quote author=I_GRIN_I link=topic=1286.msg7925#msg7925 date=1485799184]
den4iccc, так у тебя ошибка при проверке голды или при проверке дерева?
[/quote]
по сути голды, например: у меня 20 голды и 10 дерева я прожимаю абилку тратится 10 голды и 10 дерева и создаётся предмет, потом жму ещё раз тратится 10 голды и 0 дерева при этом создаётся предмет, хочу сделать запрет чтобы создовался предмет если есть все ресурсы
Нужно как-то spendgold задействовать
 
den4iccc, ну, ты просто делаешь проверку if goldtospend <= currentgold and lumbertospend <= currentlumber then
 
Последнее редактирование модератором:
[quote author=I_GRIN_I link=topic=1286.msg7927#msg7927 date=1485799696]
den4iccc, ну, ты просто делаешь проверку if goldtospend <= currentgold and lumbertospend <= currentlumber then
[/quote]
Спасибо, я завтыкал просто :) :) :)
 
Последнее редактирование модератором:
Хахаахах теперь всё наоборот стало, всё зависит от дерева с голдой решил проблему осталось с деревом надо сделать чтобы они зависили друг от друга если нет одного из ресурсов то не будет выполняться действие
 
Так тебе же GRIN написал: проверяешь сразу оба случая через оператор and.
 
Ну да всё равно не реагирует
Код:
function create_1(keys)

	local player = keys.caster:GetPlayerOwner()
	local pID = player:GetPlayerID()
	local caster = keys.caster
	local ability = keys.ability

	local gold_cost = ability:GetLevelSpecialValueFor("gold_cost", ability:GetLevel()-1)
	local lumber_cost = ability:GetLevelSpecialValueFor("lumber_cost", ability:GetLevel()-1)

	local enough_lumber

	local create_woods = EntIndexToHScript( keys.caster_entindex )
			
	if gold_cost ~= nil then
		player.lastSpentGold = gold_cost
	end
	
	if lumber_cost ~= nil then
		enough_lumber = CheckLumber(player, lumber_cost,true)
	else
		enough_lumber = true
	end
	
	if gold_cost ~= true and enough_lumber ~= true then
		return
	else
		for itemSlot = 0, 1, 2 do 
			local Item = create_woods:GetItemInSlot( itemSlot )
			create_woods:AddItemByName("item_1")
			SpendLumber(player, lumber_cost)
			ReturnGold(player, gold_cost)
		end
	end
end
 
Последнее редактирование модератором:
Код:
if 5 ~= true then
	print("Pizdec")
end
 
Последнее редактирование модератором:
Вообще думаю тебе нужно сравнить два числа - сколько золота есть у игрока и сколько нужно для абилки
Код:
PlayerResource:GetGold(pID) --вот так можно узнать сколько золота у игрока
 
[quote author=ZLOY link=topic=1286.msg7933#msg7933 date=1485805439]
Код:
if 5 ~= true then
	print("Pizdec")
end
[/quote]

Елки палки, а я не смотрел его код :))

Ден, почитай про типы данных в языках программирования, например в том же lua. Нельзя сравнивать между собой число и булевую величину. Так же как и разные типы данных. А проверку на nil (пустоту) делать можно, потому что объект либо есть и он имеет какой-то тип, либо объекта нет (nil).
 
Последнее редактирование модератором:
Код:
"AbilityGoldCost" "700"


Код:
GetGoldCost	int GetGoldCost(int iLevel)	No Description Set
GetGoldCostForUpgrade	int GetGoldCostForUpgrade(int iLevel)
 
Последнее редактирование модератором:
Я код не читал но по сути просто делаеш что то типо
Код:
if gold_cost == 123 &amp; lumber[id] == 123 then

else say(nil,"kek",nil) end
Или если указан gold cost в KV
тада
Код:
 if lumber == 123 then

else
modifyGold(id,gold_cost)
end
 
Последнее редактирование модератором:
den4iccc, что делаешь то, кстати? Раз есть ресурсы, значит, что-то интересное.
 
Код:
local currentGold = pID:getGold()
if lumber == 123 then
-- Создать предмет
lumber = lumber - 1
else
-- Если нету
end
 
[quote author=Илья link=topic=1286.msg7939#msg7939 date=1485834451]
den4iccc, что делаешь то, кстати? Раз есть ресурсы, значит, что-то интересное.
[/quote]
Survival in taiga, почти доделал осталось только реализовать совсем немного и пошаманить в xml, всем спасибо за помощь проблему решил ещё вчера через ReturnGold,lastSpentGold,GetGoldCost и gold_cost ~= true and enough_lumber ~= true, сама карта мне кажется на любителя.
 
Хех, у меня тоже есть мод выжить в тайге), я его так и не доделал до конца, хоть там и немного осталось

Только зачем тебе голда, если там камни и дерево только
 
Хех, у меня тоже есть мод выжить в тайге), я его так и не доделал до конца, хоть там и немного осталось

Только зачем тебе голда, если там камни и дерево только

у меня голда это и есть камни)
 
Последнее редактирование модератором:
Золотая лихорадка в сибири

2d6a1485e88a.gif
 
Реклама: