Comandos#
Los comandos del juego son nombres que puedes cambiar en Settings → Commands & keys — deja uno vacío para desactivarlo; el cambio se aplica al reiniciar. Los comandos de consola existen para explicar lo que está haciendo el script y para entregar las compras de la tienda.
Comando | Dónde | Descripción |
|---|---|---|
| En el juego, admins | Abre el panel de administración: tiendas, catálogo, moderación, jugadores, Tebex, pool, armas addon y configuración. |
| En el juego | Abre el inventario de skins. |
| En el juego | Muestra la skin del arma que llevas en la mano, con su número de bajas. Se puede asignar una tecla en Settings. |
| En el juego, pintores | Invita al jugador más cercano al banco de trabajo de la tienda en la que estás. |
| En el juego | Canjea una compra de Tebex por su id de transacción. |
Comando del estudio | En el juego, admins | Desactivado por defecto. Ponle un nombre en Settings para abrir el estudio en cualquier lugar. |
| Consola | El comando que ejecuta Tebex al comprar. Funciona aunque el jugador esté desconectado. |
| Consola | Revoca lo que concedió una transacción. La transacción sigue marcada como usada. |
| Consola | Una línea de estado por tienda: abierta o cerrada, nivel, propietario, banco de trabajo, personal de servicio y capaz de pintar, caja, suministros — y lo que falta. |
| Consola | Cuántas ranuras de skin están en uso por arma y cómo se están compartiendo. |
| Consola | Si el pool de shells está en buen estado y, si no, por qué. |
| Consola | Cuántas skins pintan los clientes por sí mismos y por qué el resto descarga una imagen. Con un hash, vuelve a comprobar esa skin. |
Un admin también puede ejecutar los comandos de consola en el juego, siempre que tenga también el ace de ese comando. La salida siempre va a la consola del servidor.
Diagnóstico del cliente (F8)#
Se ejecutan en la consola F8 del juego y solo afectan al jugador que los ejecuta.
Comando | Qué hace |
|---|---|
| Recorre toda la cadena de la skin en el orden en que puede fallar — pool, ranura, estado, arma, shells, texturas, caché — y luego pide al servidor su parte. |
| Pinta el arma que llevas en la mano de color magenta plano, saltándose el estudio, la compra y la descarga. El magenta significa que la parte del juego funciona y el fallo está antes. |
| Elimina la prueba. |
| Oculta o muestra el arma original bajo una skin, hasta el siguiente cambio de configuración. |
| Activa o desactiva las texturas de skins durante esta sesión — para confirmarlas o descartarlas como causa de un crash. |
Exports del cliente#
Para abrir el estudio o el inventario de skins desde tus propios scripts — un prop de portátil, un menú radial, una armería.
El estudio y el inventario
-- Opens the studio at a shop, with the same rules as its NPC
-- (open, stocked, self service, standing there). Admins can open it anywhere.
exports['qs-weaponskin-creator']:OpenStudio(shopId)
local open = exports['qs-weaponskin-creator']:IsStudioOpen()
-- Opens the skin inventory (does nothing while another of its windows is open)
exports['qs-weaponskin-creator']:OpenSkinInventory()Las skins del jugador
-- Hang the skins back on after your script rebuilt the weapon or the ped
exports['qs-weaponskin-creator']:ReapplySkins()
-- What the local player wears: a list of { w = weapon, s = slot, h = picture hash }
local worn = exports['qs-weaponskin-creator']:GetOwnSkins()
-- Per weapon: the slot, the shells hung on it and the picture
local hung = exports['qs-weaponskin-creator']:GetWornSkins()Exports del servidor#
Cómo otro recurso controla Weapon Skin Creator — una skin de recompensa, una armería que entrega un arma ya con skin, un trabajo que paga a una tienda. source es el id de servidor de un jugador, y el jugador debe tener un personaje cargado.
GiveCatalogSkin
Copia gratis una skin del catálogo al inventario de un jugador. Cuenta para las copias del artículo, funciona con artículos ocultos y no equipa la skin por sí sola.
local ok, result = exports['qs-weaponskin-creator']:GiveCatalogSkin(source, 3)
if ok then
exports['qs-weaponskin-creator']:EquipSkin(source, result) -- result is the new skin id
else
print('could not give it: ' .. result) -- inventory_full, sold_out, not_found…
endSkins y equipamiento
-- Every skin a player owns, including those waiting for review
for _, skin in ipairs(exports['qs-weaponskin-creator']:GetPlayerSkins(source)) do
print(skin.id, skin.weapon, skin.name, skin.state, skin.kills)
end
-- Put an owned skin on its weapon type, or on one gun by its serial
local ok, err = exports['qs-weaponskin-creator']:EquipSkin(source, 42, 'weapon_carbinerifle', serial)
-- err: not_owner, skin_pending, wrong_weapon, weapon_unknown
-- What a weapon — or one exact gun — is wearing right now (nil if nothing)
local skin = exports['qs-weaponskin-creator']:GetEquippedSkin(source, 'weapon_pistol', serial)
if skin then print(skin.name, skin.catalog_id) endTiendas y personal
local shops = exports['qs-weaponskin-creator']:GetShops()
local workers = exports['qs-weaponskin-creator']:GetShopWorkers(1) -- owner first, then by rank
local staff = exports['qs-weaponskin-creator']:IsShopWorker(source, 1) -- shop id optional: any shop
local painter = exports['qs-weaponskin-creator']:IsPainter(source) -- may paint right now
-- Hire a player; without a rank id they get the lowest rank
local ok, err = exports['qs-weaponskin-creator']:HireShopWorker(1, source)La caja
local balance = exports['qs-weaponskin-creator']:GetShopBalance(1)
-- A positive amount pays in; a negative one takes out, only if the till holds it.
-- Both appear in the shop's ledger with the description you give.
local ok, newBalance = exports['qs-weaponskin-creator']:AddShopMoney(1, -500, 'Rent')State bags y eventos#
Replicados y escritos por el servidor. Léelos, nunca los escribas.
Clave | Contiene |
|---|---|
| Lo que lleva el jugador: una lista de |
|
|
| Las armas addon añadidas desde el panel de administración. |
Evento | Lado | Cuándo |
|---|---|---|
| Cliente del que mata | Se contó una baja para una skin. |
| Cliente | Cambió lo que lleva el jugador. |
| Cliente | Se entregó una compra de la tienda. |
| Cliente, local | Se aplicó o cambió la configuración. |
| Cliente, local | El framework ha cargado el personaje. |
| Servidor → cliente | Lánzalo para mostrar el aviso del script a un jugador. |
-- client: a kill-streak counter of your own
RegisterNetEvent('weaponskin:kill', function(weaponKey, skinId)
print(('kill with skin %s on %s'):format(skinId, weaponKey))
end)
-- server: show the script's toast to a player
TriggerClientEvent('weaponskin:notification', source, 'Your skin is ready', 'success')Sobre los errores#
Cada callback y export que puede rechazar devuelve una clave, no una frase: inventory_full, sold_out, not_enough_money, no_permission_shop. Es deliberado — el mismo fallo se lee en el idioma de cada jugador. Registra la clave en tus propios scripts y encuentra su texto en errors en locales/<code>.json. Errores comunes enumera los más frecuentes.



