Skip to content

Commit

Permalink
Solucionado bug creación ints y vehículos
Browse files Browse the repository at this point in the history
Se ha apliado un parche que corrige el bug que impedía crear interiores y vehículos en ciertas circunstancias. Igualmente, se ha aplicado un parche al sistema de guardado que hacía que a veces no se guardara la última posición del PJ y causaba un lag extremo. Por último, se ha optimizado el funcionamiento de las resources 3dtext e interiores, haciendo que funcionen mejor en servidores muy sobrecargados.
  • Loading branch information
javier-es committed Dec 19, 2020
1 parent 726b849 commit 4e1ff03
Show file tree
Hide file tree
Showing 8 changed files with 56 additions and 245 deletions.
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,10 +85,14 @@ de MTA-Paradise SERÁ IGNORADO!
- Si al abrir el servidor se cierra solo, el problema será 99% relacionado con MySQL. Comprueba que has seguido todos los pasos, y que estás usando el módulo mta_mysql(.dll en Windows y .so en Linux). Comprueba que dicho módulo esté en la carpeta correcta (en la que indican en la Wiki de MTA del enlace anterior) y, por último, comprueba que las credenciales en resources/sql/mysql.lua sean las correctas.

- Es muy interesante revisar el archivo mods\deathmatch\logs\server.log en caso de que haya errores. Lo mejor es borrar el fichero, abrir el servidor y cerrarlo (o esperar a que se cierre solo) y, después, revisar este archivo.

- Si has descargado este GM con anterioridad y no podías ni crear interiores ni crear vehículos, decirte que esos fallos han sido **solucionados.** Descarga la última versión.
## Integración con foro SMF

- Este GM es compatible con la integración de un foro SMF versión 2.1. Para ello, habrá que modificar la resource 'sqlforo'
con las credenciales de la base de datos del foro y establecer la variable enabled en true (línea 22, fichero mysql.lua de la resource sqlforo y sqllogin).

- También habrá que establecer la variable enabled en true (línea 18, fichero foro.lua de la resource foro).

- A partir de aquí, la resource 'foro' se encargará de ofrecer al usuario vincular su usuario IG con su cuenta de foro.

Expand Down
26 changes: 13 additions & 13 deletions db/server.sql
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
-- https://www.phpmyadmin.net/
--
-- Servidor: 127.0.0.1
-- Tiempo de generación: 08-06-2020 a las 16:14:31
-- Tiempo de generación: 19-12-2020 a las 19:22:00
-- Versión del servidor: 10.4.11-MariaDB
-- Versión de PHP: 7.4.6

Expand All @@ -18,7 +18,7 @@ SET time_zone = "+00:00";
/*!40101 SET NAMES utf8mb4 */;

--
-- Base de datos: `server`
-- Base de datos: `server2`
--

-- --------------------------------------------------------
Expand Down Expand Up @@ -452,31 +452,31 @@ CREATE TABLE `interiors` (
`outsideX` float NOT NULL,
`outsideY` float NOT NULL,
`outsideZ` float NOT NULL,
`outsideVehRX` float NOT NULL,
`outsideVehRY` float NOT NULL,
`outsideVehRZ` float NOT NULL,
`outsideVehRX` float DEFAULT NULL,
`outsideVehRY` float DEFAULT NULL,
`outsideVehRZ` float DEFAULT NULL,
`outsideInterior` tinyint(3) UNSIGNED NOT NULL,
`outsideDimension` int(10) UNSIGNED NOT NULL,
`insideX` float NOT NULL,
`insideY` float NOT NULL,
`insideZ` float NOT NULL,
`insideVehRX` float NOT NULL,
`insideVehRY` float NOT NULL,
`insideVehRZ` float NOT NULL,
`insideVehRX` float DEFAULT NULL,
`insideVehRY` float DEFAULT NULL,
`insideVehRZ` float DEFAULT NULL,
`insideInterior` tinyint(3) UNSIGNED NOT NULL,
`interiorName` varchar(255) CHARACTER SET latin1 NOT NULL,
`interiorType` tinyint(3) UNSIGNED NOT NULL,
`interiorPrice` int(10) UNSIGNED NOT NULL,
`interiorPriceCompra` int(11) NOT NULL DEFAULT 0,
`characterID` int(10) UNSIGNED NOT NULL DEFAULT 0,
`locked` tinyint(3) NOT NULL DEFAULT 0,
`dropoffX` float NOT NULL,
`dropoffY` float NOT NULL,
`dropoffZ` float NOT NULL,
`dropoffX` float DEFAULT NULL,
`dropoffY` float DEFAULT NULL,
`dropoffZ` float DEFAULT NULL,
`precintado` int(10) UNSIGNED NOT NULL DEFAULT 0,
`idasociado` int(10) UNSIGNED NOT NULL DEFAULT 0,
`alarma` int(10) UNSIGNED NOT NULL DEFAULT 0,
`camaras` int(11) NOT NULL,
`camaras` int(11) NOT NULL DEFAULT 0,
`recaudacion` int(10) UNSIGNED NOT NULL DEFAULT 0,
`productos` int(10) UNSIGNED NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Expand Down Expand Up @@ -859,7 +859,7 @@ CREATE TABLE `vehicles` (
`fuel` float UNSIGNED NOT NULL DEFAULT 100,
`pinturas` int(11) NOT NULL DEFAULT 3,
`tunning` text CHARACTER SET latin1 DEFAULT NULL,
`neon` int(11) NOT NULL,
`neon` int(11) DEFAULT NULL,
`seguro` int(11) NOT NULL DEFAULT 0,
`km` int(11) NOT NULL DEFAULT 0,
`fasemotor` int(11) NOT NULL DEFAULT 0,
Expand Down
28 changes: 13 additions & 15 deletions resources/3dtext/3dtext.lua
Original file line number Diff line number Diff line change
Expand Up @@ -106,23 +106,21 @@ addCommandHandler( "nearbytexts",

function createTableAndSend3DText()
for k, v in ipairs(getElementsByType("player")) do
if exports.players:isLoggedIn(v) then
local x, y, z = getElementPosition( v )
local dimension = getElementDimension( v )
local interior = getElementInterior( v )
local elementsToSend = {}
for key, element in pairs( getElementsByType( "3dtext", resourceRoot ) ) do
if getElementDimension( element ) == dimension and getElementInterior( element ) == interior then
local distance = getDistanceBetweenPoints3D( x, y, z, getElementPosition( element ) )
if distance <= 15 then
table.insert(elementsToSend, element)
end
local x, y, z = getElementPosition( v )
local dimension = getElementDimension( v )
local interior = getElementInterior( v )
local elementsToSend = {}
for key, element in pairs( getElementsByType( "3dtext", resourceRoot ) ) do
if getElementDimension( element ) == dimension and getElementInterior( element ) == interior then
local distance = getDistanceBetweenPoints3D( x, y, z, getElementPosition( element ) )
if distance <= 15 then
table.insert(elementsToSend, element)
end
end
if #elementsToSend > 0 then
triggerClientEvent(v, "onSendTablePickup3DText", v, elementsToSend)
end
end
if #elementsToSend > 0 then
triggerClientEvent(v, "onSendTablePickup3DText", v, elementsToSend)
end
end
end
setTimer(createTableAndSend3DText, 1500, 0)
setTimer(createTableAndSend3DText, 2500, 0)
4 changes: 4 additions & 0 deletions resources/foro/foro.lua
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,11 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
]]

local enabled = false -- Poner en true si se utilizará el sistema de vinculación y sincronización con un foro SMF.

function checkUsernameForum ()
if enabled == false then return end
local userID = exports.players:getUserID(source)
local sql = exports.sqllogin:query_assoc_single("SELECT userIDForo FROM usuarios WHERE estado = 1 AND userIDIG = " .. tonumber(userID))
if sql then
Expand Down Expand Up @@ -88,6 +91,7 @@ function tieneFaccionAsociada(groupID)
end

function actualizarPermisosEnForo(userID)
if enabled == false then return end
if not userID then return false end
local userIDForo = getUserIDForo(userID)
if not userIDForo then return false end
Expand Down
28 changes: 13 additions & 15 deletions resources/interiors/interiors.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1350,26 +1350,24 @@ addCommandHandler("comprarint", ejecutarCompra)

function createTableAndSendInts()
for k, v in ipairs(getElementsByType("player")) do
if exports.players:isLoggedIn(v) then
local x, y, z = getElementPosition( v )
local dimension = getElementDimension( v )
local interior = getElementInterior( v )
local elementsToSend = {}
for key, element in pairs( getElementsByType( "colshape", resourceRoot ) ) do
if getElementDimension( element ) == dimension and getElementInterior( element ) == interior then
local distance = getDistanceBetweenPoints3D( x, y, z, getElementPosition( element ) )
if distance <= 20 then
table.insert(elementsToSend, element)
end
local x, y, z = getElementPosition( v )
local dimension = getElementDimension( v )
local interior = getElementInterior( v )
local elementsToSend = {}
for key, element in pairs( getElementsByType( "colshape", resourceRoot ) ) do
if getElementDimension( element ) == dimension and getElementInterior( element ) == interior then
local distance = getDistanceBetweenPoints3D( x, y, z, getElementPosition( element ) )
if distance <= 20 then
table.insert(elementsToSend, element)
end
end
if #elementsToSend > 0 then
triggerClientEvent(v, "onSendTablePickupInts", v, elementsToSend)
end
end
if #elementsToSend > 0 then
triggerClientEvent(v, "onSendTablePickupInts", v, elementsToSend)
end
end
end
setTimer(createTableAndSendInts, 1500, 0)
setTimer(createTableAndSendInts, 2500, 0)

function isInteriorAlquiler(interiorID)
local interior = interiors[ interiorID ]
Expand Down
10 changes: 7 additions & 3 deletions resources/players/main.lua
Original file line number Diff line number Diff line change
Expand Up @@ -509,10 +509,14 @@ local function savePlayer( player )
local gordura = tonumber(getElementData(player, "gordura"))
local musculatura = tonumber(getElementData(player, "musculatura"))
local tpd = tonumber(getElementData(player, "tpd"))
-- Evitar valores negativos que provocan errores al guardarse.
if sed < 0 then sed = 0 end
if cansancio < 0 then cansancio = 0 end
if hambre < 0 then hambre = 0 end
if gordura < 0 then gordura = 0 end
if musculatura < 0 then musculatura = 0 end
if tpd < 0 then tpd = 0 end
local sql, error = exports.sql:query_free( "UPDATE characters SET musculatura = " ..musculatura.. ", gordura = " .. gordura .. ", cansancio = " .. cansancio .. ", sed = " .. sed .. ", hambre = " .. hambre .. ", tpd = " .. tpd .. ", x = " .. x .. ", y = " .. y .. ", z = " .. z .. ", dimension = " .. dimension .. ", interior = " .. interior .. ", rotation = " .. getPedRotation( player ) .. ", health = " .. math.floor( getElementHealth( player ) ) .. ", armor = " .. math.floor( getPedArmor( player ) ) .. ", weapons = " .. getWeaponString( player ) .. ", lastLogin = NOW() WHERE characterID = " .. tonumber( getCharacterID( player ) ) )
if not sql or error then
savePlayer( player )
end
end
end
end
Expand Down
197 changes: 0 additions & 197 deletions resources/players/main_c.lua.old

This file was deleted.

Loading

0 comments on commit 4e1ff03

Please sign in to comment.