All pastes #568399 Raw Edit

Something

public text v1 · immutable
·published 2007-06-15 14:38 UTC
rendered paste body
function round(num, idp)
	local mult = 10^(idp or 0)
	return math.floor(num * mult + 0.5) / mult
end

function pvp_enter_cmd(player,args,type)
	if not player:isInCombat() and not player:isInFlight() and not player:isDead() then

local myx = player:GetPositionX();
local myy = player:GetPositionY();
local myz = player:GetPositionZ();
local mymap = player:GetMapId();
		local mypvpid = tonumber(player:GetGUIDLow());	
		queryString = "SELECT `time_enter` FROM `pvp_cmd_data` WHERE `playerid`="..mypvpid;
		local query = sDatabase:Query(queryString)
		local pvptimenow = os.time();
		if query ~= nil and query:GetRowCount() > 0 then
			local gotpvpdata = query:Fetch()
			local cooldown = gotpvpdata[0]:GetInt32()
			--local mymap = gotpvpdata[1]:GetString()
			if (pvptimenow - cooldown) >= 1800 then
				sDatabase:Execute("DELETE FROM `pvp_cmd_data` WHERE `playerid`="..mypvpid.."");
				sDatabase:Execute("INSERT INTO `pvp_cmd_data` VALUES("..pvptimenow..", "..mypvpid..", "..mymap..", "..pvptimenow..", 1, "..myx..", "..myy..", "..myz..")")
				if player:isGameMaster() then
				player:TeleportTo( 0 ,   -13228.1,   227.833,   32.8926 ,  1.06  ,true ,true ,true )
				else
				player:TeleportTo( 0 ,   -13228.1,   227.833,   32.8926 ,  1.06  ,true ,true,false )
				end
			else
				local pvpwaittime = ((1800 - (pvptimenow - cooldown)) / 60)
				local newtime = round(pvpwaittime, 1)
				player:SendSysMessage("You can not do that yet you must wait "..newtime.." minutes.")
			end	
		else
			--sDatabase:Execute("INSERT INTO `pvp_cmd_data` VALUES("..pvptimenow..", "..mypvpid..", "..mymap..","..pvptimenow..",1)")
			sDatabase:Execute("INSERT INTO `pvp_cmd_data` VALUES("..pvptimenow..", "..mypvpid..", "..mymap..", "..pvptimenow..", 1, "..myx..", "..myy..", "..myz..")")
			if player:isGameMaster() then
			player:TeleportTo( 0 ,   -13228.1,   227.833,   32.8926 ,  1.06  ,true ,true ,true )
			else
			player:TeleportTo( 0 ,   -13228.1,   227.833,   32.8926 ,  1.06  ,true ,true ,false )
			end
		end
		
    end
return true
end

register_lua_script_command(".pvpenter","pvp_enter_cmd")


function pvp_leave_cmd(player,args,type)
    if not player:isInCombat() and not player:isInFlight() and not player:isDead() then

		local mypvpid = tonumber(player:GetGUIDLow());	
		queryString = "SELECT `mymap` , `time_leave` , `in_arena` , `myx` , `myy` , `myz` FROM `pvp_cmd_data` WHERE `playerid`="..mypvpid;
		local query = sDatabase:Query(queryString)
		local pvptimenow = os.time();
		if query ~= nil and query:GetRowCount() > 0 then
			local gotpvpdata = query:Fetch()
			local gomapid = gotpvpdata[0]:GetInt32()
			local cooldown = gotpvpdata[1]:GetInt32()
			local canleave = gotpvpdata[2]:GetInt32()
			local gox = gotpvpdata[3]:GetInt32()
			local goy = gotpvpdata[4]:GetInt32()
			local goz = (gotpvpdata[5]:GetInt32()+1)
			if canleave == 1 then
				if (pvptimenow - cooldown) >= 60 then
				--player:TeleportTo( 0 ,   -14406.59,   419.35,   22.39 ,  1.06  ,true ,true )
				if player:isGameMaster() then
					player:TeleportTo( gomapid ,  gox ,  goy ,   goz ,  1.06  ,true ,true, true )
				else
					player:TeleportTo( gomapid ,  gox ,  goy ,   goz ,  1.06  ,true ,true, false )
				end
				sDatabase:Execute("UPDATE `pvp_cmd_data` SET `in_arena`='0' WHERE `playerid`='"..mypvpid.."'")
				else
				local pvpwaittime = ((60 - (pvptimenow - cooldown)) / 60)
				local newtime = round(pvpwaittime, 1)
				player:SendSysMessage("You only just got here, you must wait "..newtime.." minutes.")
				end
			else
			player:SendSysMessage("You must be in the arena! Type .pvpenter")
			end
		end		
    end
return true
end

register_lua_script_command(".pvpleave","pvp_leave_cmd")