• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Problems with a creature script

calveron

Bravemansworld
Joined
Feb 5, 2008
Messages
165
Reaction score
13
Location
Sweden
Im having some troubles with having 2 npcs with similar quests.. Apperiently when I add the second quest, none of them works.

creaturescripts.xml
Code:
<?xml version="1.0" encoding="UTF-8"?>
<creaturescripts>
	<event type="kill" name="monsterkillrats" script="monsterkillrats.lua"/>
	<event type="kill" name="monsterkillbears" script="monsterkillbears.lua"/>
	<event type="login" name="PlayerLogin" script="login.lua"/>
	<event type="login" name="FirstItems" script="firstitems.lua"/>
	<event type="death" name="PlayerDeath" script="playerdeath.lua"/>
</creaturescripts>

login.lua
Code:
function onLogin(cid)
	registerCreatureEvent(cid, "monsterkillrats")
	registerCreatureEvent(cid, "monsterkillbears")
	registerCreatureEvent(cid, "PlayerDeath")
	return TRUE
end

monsterkillrats.lua
Code:
local monsters = {
	--name = storage
	["rat"] = 45004,
	["cave rat"] = 45004
}

function onKill(cid, target)
	local monster = monsters[getCreatureName(target):lower()]
	if(isPlayer(target) == FALSE and monster and getPlayerStorageValue(cid, 76669) == 2) then
		if getPlayerStorageValue(cid, monster) < 16 then 
			local killedMonsters = getPlayerStorageValue(cid, monster)
			if(killedMonsters < 1) then
				killedMonsters = 0
			end
			setPlayerStorageValue(cid, monster, killedMonsters + 1)
			doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have killed " .. killedMonsters .. " of 15 rats.")
		else
			doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have killed enough rats.")
			setPlayerStorageValue(cid, 76669, 3)
		end
	end
	return TRUE
end


monsterkillbears.lua
Code:
local monsters = {
	--name = storage
	["bear"] = 46004
	
}

function onKill(cid, target)
	local monster = monsters[getCreatureName(target):lower()]
	if(isPlayer(target) == FALSE and monster and getPlayerStorageValue(cid, 76670) == 2) then
		if getPlayerStorageValue(cid, monster) < 3 then 
			local killedMonsters = getPlayerStorageValue(cid, monster)
			if(killedMonsters < 0) then
				killedMonsters = 0
			end
			setPlayerStorageValue(cid, monster, killedMonsters + 1)
			doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have killed " .. killedMonsters .. " of 2 bears.")
		else
			doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have killed enough bears.")
			setPlayerStorageValue(cid, 76670, 3)
		end
	end
	return TRUE
end

Where is the conflict? please help for rep++++++++++++
 
merge
Lua:
local t = {}

t['rats'] = {
	Count = 15,
	QuestKey = 76669,
	KillKey = 45004,
	monsters = {'rat', 'cave rat'}
}
t['bears'] = {
	Count = 2,
	QuestKey = 76670,
	KillKey = 46004,
	monsters = {'bear'}
}

function onKill(cid, target)
	if isPlayer(target) == FALSE then
		local n = getCreatureName(target):lower()
		for k, v in pairs(t) do
			if isInArray(v.monsters, n) == TRUE then
				if getPlayerStorageValue(cid, v.QuestKey) == 2 then
					local cur = getPlayerStorageValue(cid, v.KillKey)
					if cur < v.Count then 
						cur = math.max(0, cur) + 1
						setPlayerStorageValue(cid, v.KillKey, cur)
						if cur == v.Count then
							doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'You have killed enough ' .. k .. '.')
							setPlayerStorageValue(cid, v.QuestKey, 3)
						else
							doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'You have killed ' .. cur .. ' of ' .. v.Count .. ' ' .. k  .. '.')
						end
					end
				end
				break
			end
		end
	end
	return TRUE
end
 
Back
Top