📜  Fivem esx (1)

📅  最后修改于: 2023-12-03 15:15:05.413000             🧑  作者: Mango

Fivem ESX介绍

简介

Fivem是GTA5的第三方多人游戏平台,而ESX是在Fivem平台上最流行的框架之一,它是用Lua编写的。它为玩家和开发人员提供了可自定义的角色和社会系统。 ESX提供了许多自定义功能,如公司、滑活、银行、健康和医院等。

实现

ESX使用了一些GTA5模式的API(例如Citizen),来创建一个新的环境,使所有的自定义功能能够实现。该框架为Fivem提供了一个独特的社交游戏体验,使玩家能够创造自己的角色来探险、创业和将自己介绍给其他玩家。

该框架包含许多不同的自定义功能和选项,使开发人员能够快速创建自己的服务器,而无需从头开始。这些选项包括角色创建,物品管理、拍卖行、汽车系统和更多的社交功能。

特点
  • 完全自定义:ESX框架允许开发人员完全自定义他们的服务器,包括角色创建、物品管理、交易和其他社会动态。

  • 动态天气和时间:ESX具有动态的天气和时间系统,此外,它还允许开发人员设置自己的天气、时间和季节。

  • 社交系统:ESX允许玩家创建自己的公司、滑活、银行、健康和医院,并与其他玩家互动。

组件
  • ESX_menu_default: 基本的菜单,用于管理角色、物品和其他服务器功能。

  • ESX_addonaccount: 允许玩家创建自己的银行账户,并允许开发人员设置资金和其他货币项。

  • ESX_addoninventory: 管理角色的物品、工具和其他可用物品。

  • ESX_taxijob: 在游戏中提供出租车服务,接受和完成客户端要求。

示例代码
-- ESX_API:

ESX = nil

Citizen.CreateThread(function()

	while ESX == nil do
		TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
		Citizen.Wait(0)
	end

end)

-- ESX服务器事件:

ESX.RegisterServerCallback('esx:getPlayerData', function(source, cb)

	local xPlayer    = ESX.GetPlayerFromId(source)
	local identifiers = GetPlayerIdentifiers(source)
	local result     = MySQL.Sync.fetchAll('SELECT * FROM users WHERE identifier = @identifier', {
		['@identifier'] = identifiers[1]
	})

	if result[1] then
		local data = json.decode(result[1].data)
		local charinfo = {
			name = xPlayer.getName(),
			sex = (data.charinfo and data.charinfo.sex or 'male'),
			coords = xPlayer.getCoords(),
			health = xPlayer.getHealth()
		}
		cb(charinfo, data, true)
	else
		cb(nil, nil, false)
	end

end)

ESX.RegisterServerCallback('esx:getOtherPlayerData', function(source, cb, target)

	local xPlayer = ESX.GetPlayerFromId(target)

	if xPlayer then
		local identifiers = GetPlayerIdentifiers(target)
		local result     = MySQL.Sync.fetchAll('SELECT * FROM users WHERE identifier = @identifier', {
			['@identifier'] = identifiers[1]
		})

		if result[1] then
			local data = json.decode(result[1].data)
			cb(data, true)
		else
			cb(nil, false)
		end
	else
		cb(nil, false)
	end

end)

返回值:

# Fivem ESX介绍

## 简介

Fivem是GTA5的第三方多人游戏平台,而ESX是在Fivem平台上最流行的框架之一,它是用Lua编写的。它为玩家和开发人员提供了可自定义的角色和社会系统。 

## 实现

ESX使用了一些GTA5模式的API(例如Citizen),来创建一个新的环境,使所有的自定义功能能够实现。该框架为Fivem提供了一个独特的社交游戏体验,使玩家能够创造自己的角色来探险、创业和将自己介绍给其他玩家。

该框架包含许多不同的自定义功能和选项,使开发人员能够快速创建自己的服务器,而无需从头开始。这些选项包括角色创建,物品管理、拍卖行、汽车系统和更多的社交功能。

## 特点

- 完全自定义:ESX框架允许开发人员完全自定义他们的服务器,包括角色创建、物品管理、交易和其他社会动态。
- 动态天气和时间:ESX具有动态的天气和时间系统,此外,它还允许开发人员设置自己的天气、时间和季节。
- 社交系统:ESX允许玩家创建自己的公司、滑活、银行、健康和医院,并与其他玩家互动。

## 组件

- [ESX_menu_default](https://github.com/esx-framework/esx_menu_default): 基本的菜单,用于管理角色、物品和其他服务器功能。
- [ESX_addonaccount](https://github.com/esx-framework/esx_addonaccount): 允许玩家创建自己的银行账户,并允许开发人员设置资金和其他货币项。
- [ESX_addoninventory](https://github.com/esx-framework/esx_addoninventory): 管理角色的物品、工具和其他可用物品。
- [ESX_taxijob](https://github.com/esx-framework/esx_taxijob): 在游戏中提供出租车服务,接受和完成客户端要求。

## 示例代码

```lua
-- ESX_API:

ESX = nil

Citizen.CreateThread(function()

	while ESX == nil do
		TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
		Citizen.Wait(0)
	end

end)

-- ESX服务器事件:

ESX.RegisterServerCallback('esx:getPlayerData', function(source, cb)

	local xPlayer    = ESX.GetPlayerFromId(source)
	local identifiers = GetPlayerIdentifiers(source)
	local result     = MySQL.Sync.fetchAll('SELECT * FROM users WHERE identifier = @identifier', {
		['@identifier'] = identifiers[1]
	})

	if result[1] then
		local data = json.decode(result[1].data)
		local charinfo = {
			name = xPlayer.getName(),
			sex = (data.charinfo and data.charinfo.sex or 'male'),
			coords = xPlayer.getCoords(),
			health = xPlayer.getHealth()
		}
		cb(charinfo, data, true)
	else
		cb(nil, nil, false)
	end

end)

ESX.RegisterServerCallback('esx:getOtherPlayerData', function(source, cb, target)

	local xPlayer = ESX.GetPlayerFromId(target)

	if xPlayer then
		local identifiers = GetPlayerIdentifiers(target)
		local result     = MySQL.Sync.fetchAll('SELECT * FROM users WHERE identifier = @identifier', {
			['@identifier'] = identifiers[1]
		})

		if result[1] then
			local data = json.decode(result[1].data)
			cb(data, true)
		else
			cb(nil, false)
		end
	else
		cb(nil, false)
	end

end)