- 235
- 62
- Версия SA-MP
-
- Любая
Что я не так написал я не могу телепортироватся и пишет команда неверная.
require "MoonAdditions"
local TELEPORT_DELAY = 3000 -- задержка телепортации в миллисекундах
local TELEPORT_COMMAND = "/tpk" -- команда для телепортации
local teleportCoords = { -- координаты для телепортации на карте
{"Рыболовный порт", 1372.451171875, -1488.5141601563, 13.546875},
{"Сверхмаркет", 682.46875, -460.501953125, 16.3359375},
{"Аэропорт", 1661.8588867188, -2396.3588867188, 13.546875},
{"Полицейский участок", 246.9482421875, 63.376953125, 1002.640625},
{"Больница", 1179.109375, -1323.212890625, 13.34375},
}
function teleportPlayer(playerid, coordinates)
if IsPlayerConnected(playerid) then -- Проверяет, подключён ли игрок перед телепортацией
SetPlayerPos(playerid, coordinates[1], coordinates[2], coordinates[3])
SendClientMessage(playerid, 0xFFFFAA00, "Вы телепортированы на " .. coordinates[4] .. "!")
end
end
function onPlayerCommandText(playerid, cmdtext)
if cmdtext:sub(1, #TELEPORT_COMMAND) == TELEPORT_COMMAND then
local playerCoords = {GetPlayerPos(playerid)}
local destinationIndex = tonumber(cmdtext:sub(#TELEPORT_COMMAND+1))
if destinationIndex and teleportCoords[destinationIndex] then
local destinationCoords = teleportCoords[destinationIndex]
if IsPointInWater(destinationCoords[2], destinationCoords[3], destinationCoords[4]) or IsPointInAirportArea(destinationCoords[2], destinationCoords[3], destinationCoords[4]) then
SendClientMessage(playerid, 0xFFFFAA00, "Невозможно телепортироваться в эту область.")
return false
end
if GetPlayerTargetActor(playerid) ~= INVALID_ACTOR_ID or GetPlayerTargetPlayer(playerid) ~= INVALID_PLAYER_ID or GetPlayerTargetVehicle(playerid) ~= INVALID_VEHICLE_ID then
SendClientMessage(playerid, 0xFFFFAA00, "Невозможно телепортироваться, пока вы находитесь в транспорте / стреляете в обьекты / игроков.")
return false
end
if GetPlayerAttachedObject(playerid, 0) == 1 then
SendClientMessage(playerid, 0xFFFFAA00, "Невозможно телепортироваться, пока вы держите предмет.")
return false
end
local string = string.format("Телепортация через %.2f секунд...", TELEPORT_DELAY/1000)
SendClientMessage(playerid, 0xFFFFAA00, string)
SetTimerEx("teleportPlayer", TELEPORT_DELAY, false, "if", playerid, destinationCoords)
return true
else
SendClientMessage(playerid, 0xFFFFAA00, "Некорректный выбор точки телепортации.")
end
end
return false
end
AddEvent("OnPlayerCommandText", onPlayerCommandText)
require "MoonAdditions"
local TELEPORT_DELAY = 3000 -- задержка телепортации в миллисекундах
local TELEPORT_COMMAND = "/tpk" -- команда для телепортации
local teleportCoords = { -- координаты для телепортации на карте
{"Рыболовный порт", 1372.451171875, -1488.5141601563, 13.546875},
{"Сверхмаркет", 682.46875, -460.501953125, 16.3359375},
{"Аэропорт", 1661.8588867188, -2396.3588867188, 13.546875},
{"Полицейский участок", 246.9482421875, 63.376953125, 1002.640625},
{"Больница", 1179.109375, -1323.212890625, 13.34375},
}
function teleportPlayer(playerid, coordinates)
if IsPlayerConnected(playerid) then -- Проверяет, подключён ли игрок перед телепортацией
SetPlayerPos(playerid, coordinates[1], coordinates[2], coordinates[3])
SendClientMessage(playerid, 0xFFFFAA00, "Вы телепортированы на " .. coordinates[4] .. "!")
end
end
function onPlayerCommandText(playerid, cmdtext)
if cmdtext:sub(1, #TELEPORT_COMMAND) == TELEPORT_COMMAND then
local playerCoords = {GetPlayerPos(playerid)}
local destinationIndex = tonumber(cmdtext:sub(#TELEPORT_COMMAND+1))
if destinationIndex and teleportCoords[destinationIndex] then
local destinationCoords = teleportCoords[destinationIndex]
if IsPointInWater(destinationCoords[2], destinationCoords[3], destinationCoords[4]) or IsPointInAirportArea(destinationCoords[2], destinationCoords[3], destinationCoords[4]) then
SendClientMessage(playerid, 0xFFFFAA00, "Невозможно телепортироваться в эту область.")
return false
end
if GetPlayerTargetActor(playerid) ~= INVALID_ACTOR_ID or GetPlayerTargetPlayer(playerid) ~= INVALID_PLAYER_ID or GetPlayerTargetVehicle(playerid) ~= INVALID_VEHICLE_ID then
SendClientMessage(playerid, 0xFFFFAA00, "Невозможно телепортироваться, пока вы находитесь в транспорте / стреляете в обьекты / игроков.")
return false
end
if GetPlayerAttachedObject(playerid, 0) == 1 then
SendClientMessage(playerid, 0xFFFFAA00, "Невозможно телепортироваться, пока вы держите предмет.")
return false
end
local string = string.format("Телепортация через %.2f секунд...", TELEPORT_DELAY/1000)
SendClientMessage(playerid, 0xFFFFAA00, string)
SetTimerEx("teleportPlayer", TELEPORT_DELAY, false, "if", playerid, destinationCoords)
return true
else
SendClientMessage(playerid, 0xFFFFAA00, "Некорректный выбор точки телепортации.")
end
end
return false
end
AddEvent("OnPlayerCommandText", onPlayerCommandText)