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")