• 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!

Solved Pacman Event

Akkz

New Member
Joined
Apr 22, 2012
Messages
172
Reaction score
0
Hello, I have made some threads before and none can fix the problem so now I make one more because I really need help with this Pacman-event! The problem is when you walk on a tile, its supposed to be pressed down so it does not count if you walk on it again, here is my scripts..

Movements/scripts/pacman.lua
Lua:
-- Pacman script: Controller [TGY] 
pressedTiles = {}
gameStarted = false
dif = 1

local function pacmanCounter(text, start, col, dif)
	if start then 
		gameStarted = true
		doCreateMonster("Pacman Ghost", {x = 716, y = 937, z = 7})
		if dif > 1 then
			doCreateMonster("Pacman Ghost", {x = 726, y = 937, z = 7}) 
		end
		if dif > 2 then
			doCreateMonster("Pacman Ghost", {x = 721, y = 937, z = 7}) 
		end
	end
	doSendAnimatedText({x = 721, y = 942, z = 7}, text, col)
end

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
	if false == isPlayer(cid) then
		return
	end
	
	if item.actionid == 5301 and item.itemid == 426 then
		-- HANDLE TILE
		if not gameStarted then
			--doPlayerPopupFYI(cid, "x")
			doTeleportThing(cid, fromPosition, true)
			return true
		end
		doTransformItem(item.uid, 425)
		table.insert(pressedTiles, position)
		local cnt = #pressedTiles
		doSendAnimatedText(position, (cnt).."/84", TEXTCOLOR_GREEN)
		if cnt > 83 then
			doTeleportThing(cid, {x = 717, y = 934, z = 6}, true)
			doSendAnimatedText(position, ":D", TEXTCOLOR_GREEN)
			local prize = 5
			if dif == 2 then prize = 15 end
			if dif == 3 then prize = 20 end
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "[PACMAN] You won ".. prize .." Gold Nuggets!")
			doPlayerAddItem(cid,2157,prize)
		end
	elseif item.actionid == 7392 then
		-- HANDLE JOINING PERSON
		local c = isCreatureInArea({x = 716, y = 937, z = 7}, {x = 726, y = 947, z = 7}) -- Getting crss inside
		for _,v in pairs(c) do
			if isPlayer(v) then
				doTeleportThing(cid, fromPosition, true)
				return true
			end
		end
		-- Nobody is inside, check ticket/pick it - check exhaust first
		--doPlayerPopupFYI(cid, "You must wait " .. (math.floor((getPlayerStorageValue(cid, 7948)-os.time())/60)+1) .. " more minutes till you can play again.")
	 --if getPlayerStorageValue(cid, 7948) > 0 and (os.time() < getPlayerStorageValue(cid, 7948)) then
			--doTeleportThing(cid, fromPosition, true)
			--doPlayerPopupFYI(cid, "You must wait " .. (math.floor((getPlayerStorageValue(cid, 7948)-os.time())/60)+1) .. " more minute(s) till you can play again.")
		--	return true
		--end 
		if getPlayerItemCount(cid, 2157) < 1 then
			doTeleportThing(cid, fromPosition, true)
			doPlayerPopupFYI(cid, "You need 1 Gold nugget to play.")
			return true
		end
		doPlayerRemoveItem(cid, 2157, 1)
		setPlayerStorageValue(cid, 7948, os.time() + 900)
		-- Set difficulity variabele
		dif = 1
		if item.uid == 7396 then
			dif = 2
		elseif item.uid == 7397 then
			dif = 3
		end
		-- Clean the area and reset the tiles now
		for _,v in pairs(c) do
			doRemoveCreature(v)
		end
		for _,v in pairs(pressedTiles) do
			doItemSetAttribute(doCreateItem(426, v),"aid", 5301)
		end
		pressedTiles = {}
		gameStarted = false
		doTeleportThing(cid, {x = 721, y = 942, z = 7}, true)
		pacmanCounter("3", false, TEXTCOLOR_RED, dif)
		addEvent(pacmanCounter,1000,"2", false, TEXTCOLOR_ORANGE, dif)
		addEvent(pacmanCounter,2000,"1", false, TEXTCOLOR_YELLOW, dif)
		addEvent(pacmanCounter,3000,"GO!", true, TEXTCOLOR_GREEN, dif)
	end


	return true
end

Creaturescripts/scripts/pacmanhandle.lua
Lua:
-- Pacman die handler [TGY]
function onPrepareDeath(cid, dl)
	if isPlayer(cid) and isInArea(getCreaturePosition(cid), {x = 716, y = 937, z = 7},{x = 726, y = 947, z = 7}) then
	    --doCreatureAddHealth(cid, getCreatureMaxHealth(cid) - getCreatureHealth(cid))
		doCreatureAddHealth(cid, getCreatureMaxHealth(cid), 65535, 256, true)
	    doCreatureAddMana(cid, getCreatureMaxMana(cid) - getCreatureMana(cid))
		doTeleportThing(cid, {x = 717, y = 934, z = 6})
		doSendMagicEffect({x = 717, y = 934, z = 6}, 10)
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "[PACMAN] Game over....")
		doPlayerPopupFYI(cid, "You were killed by a Pacman Ghost.")
		return false
    end
	return true
end

Thanks!
 
Last edited by a moderator:
I don't know how this script works, have you tried to something with this part?
Lua:
pressedTiles = {}
 
You don't need to add anything there. Make sure to use the right tile and action id:
if item.actionid == 5301 and item.itemid == 426 then
 
Yes I have something in movements.xml should I have something in login or something maybe?

Code:
  	<movevent type="StepIn" actionid="5301" event="script" value="pacman.lua" />
 	<movevent type="StepIn" actionid="7392" event="script" value="pacman.lua" />
 
Last edited:
Maybe look in the datapack you got the script from? Should not be so hard to search for aids, and uids.
WibbenZ
 
If you have the same problem, adding this script with same action id solved it.
Lua:
function onStepOut(cid, item, pos, frompos)
	return true
end
 
Back
Top