QBESXStandalone
Agency-Shops التثبيت
كل متجر 24/7 وLTD وRob's Liquor ومتجر أجهزة وAmmu-Nation ومحطة وقود على الخريطة في سكربت واحد لـ FiveM.
v1.0.0مدفوع5 صفحاتاعتبارًا من October 19, 2026, 20:00 CEST

01التثبيت
- 1Extract Agency-Shops into your resources folder
- 2تأكد من تفعيل OneSync على خادمك
- 3Add ensure Agency-Shops to server.cfg, after your framework, your inventory and oxmysql
- 4شغل الخادم: يتم إنشاء جداول قاعدة البيانات عند التشغيل الأول (ملف install/agency_shop.sql مطلوب فقط إذا كان مستخدم قاعدة البيانات لا يملك صلاحية إنشاء الجداول)
- 5أضف add_ace group.admin agency.shop allow لمنح المسؤولين الوصول إلى لوحة /ashops
- 6هل تشغل qb-shops أو esx_shops أو متاجر ox_inventory؟ قم بإزالة إدخالات 24/7 الخاصة بها، وإلا سيقف كاشيران خلف نفس المنصة
- 7هل تشغل qb-storerobbery أو سكربت مشابه؟ عطل أحدهما، أو اضبط Config.Robbery.Enabled = false
- 8هل تشغل سكربت وقود بمضخات خاصة به؟ عطل التفاعل مع مضخاته، أو اضبط Config.GasStations.Enabled = false
- 9الوضع المستقل (Standalone): املأ Config.Standalone للأموال والعناصر (راجع صفحة الإعدادات)
- 10اختياري: ضع عناوين Discord webhook في config_server.lua، والذي لا يتم إرساله أبداً للاعبين
02المتطلبات
oxmysql (مطلوب)OneSync (مطلوب)QBCore أو QBox أو ESX (اختياري، يعمل بدونها في الوضع المستقل)نظام حقيبة (اختياري: ox_inventory أو qs-inventory أو الخاص بإطار عملك، يتم اكتشافه تلقائياً)Agency Phone (اختياري، يضيف Agency Pay كوسيلة دفع)Agency-Notify (اختياري، وإلا يعرض المتجر رسائله الخاصة)ox_target أو qb-target (اختياري، وإلا يتم استخدام موجه الأزرار)ps-dispatch أو cd_dispatch (اختياري، لتنبيهات السطو وسرقة المتاجر، وإلا يتم استخدام تنبيه مدمج)سكربت وقود (اختياري: LegacyFuel أو ox_fuel أو cdn-fuel أو ps-fuel أو lc_fuel أو Renewed-Fuel أو okokGasStation أو qs-fuelstations، وإلا سيعمل نظام الوقود المدمج)
03ملف SQL
اختياري: ينشئ المورد هذه الجداول بنفسه عند بدء التشغيل. استورد هذا الملف فقط إذا كنت تُعدّ قاعدة البيانات يدويًا:
-- =============================================================================
-- AGENCY SHOP - database tables
-- Created automatically on start (Config.AutoApplySql = true). Run this file by
-- hand only if your database user may not create tables.
-- =============================================================================
CREATE TABLE IF NOT EXISTS `agency_shop_owned` (
`id` VARCHAR(64) NOT NULL,
`kind` VARCHAR(16) NOT NULL DEFAULT 'store',
`owner` VARCHAR(80) NOT NULL,
`owner_name` VARCHAR(120) NOT NULL DEFAULT '',
`name` VARCHAR(60) NULL DEFAULT NULL,
`balance` INT NOT NULL DEFAULT 0,
`prices` LONGTEXT NULL,
`stock` LONGTEXT NULL,
`staff` LONGTEXT NULL,
`fuel` INT NOT NULL DEFAULT 0,
`fuel_prices` LONGTEXT NULL,
`sales_total` INT NOT NULL DEFAULT 0,
`revenue_total` BIGINT NOT NULL DEFAULT 0,
`last_sale` TIMESTAMP NULL DEFAULT NULL,
`bought_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `owner` (`owner`)
);
CREATE TABLE IF NOT EXISTS `agency_shop_orders` (
`id` INT NOT NULL AUTO_INCREMENT,
`shop` VARCHAR(64) NOT NULL,
`kind` VARCHAR(16) NOT NULL DEFAULT 'goods',
`items` LONGTEXT NULL,
`crates` INT NOT NULL DEFAULT 0,
`litres` INT NOT NULL DEFAULT 0,
`cost` INT NOT NULL DEFAULT 0,
`fee` INT NOT NULL DEFAULT 0,
`status` VARCHAR(16) NOT NULL DEFAULT 'open',
`courier` VARCHAR(80) NULL DEFAULT NULL,
`courier_name` VARCHAR(120) NULL DEFAULT NULL,
`eta` INT NULL DEFAULT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `shop` (`shop`),
KEY `status` (`status`)
);
CREATE TABLE IF NOT EXISTS `agency_shop_points` (
`id` INT NOT NULL AUTO_INCREMENT,
`shop` VARCHAR(64) NOT NULL,
`kind` VARCHAR(16) NOT NULL,
`x` DOUBLE NOT NULL,
`y` DOUBLE NOT NULL,
`z` DOUBLE NOT NULL,
`h` DOUBLE NOT NULL DEFAULT 0,
`category` VARCHAR(40) NULL DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `shop` (`shop`)
);
CREATE TABLE IF NOT EXISTS `agency_shop_ledger` (
`id` INT NOT NULL AUTO_INCREMENT,
`shop` VARCHAR(64) NOT NULL,
`kind` VARCHAR(24) NOT NULL,
`amount` INT NOT NULL DEFAULT 0,
`note` VARCHAR(160) NULL DEFAULT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `shop` (`shop`)
);
-- What admins change with /ashops: catalogs and store settings, laid over config.lua.
CREATE TABLE IF NOT EXISTS `agency_shop_overrides` (
`kind` VARCHAR(16) NOT NULL,
`id` VARCHAR(64) NOT NULL,
`data` LONGTEXT NULL,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`kind`, `id`)
);
-- Every sale of an owned store or station, line by line: the owner's analytics.
CREATE TABLE IF NOT EXISTS `agency_shop_sales` (
`id` INT NOT NULL AUTO_INCREMENT,
`shop` VARCHAR(64) NOT NULL,
`sale` VARCHAR(24) NOT NULL,
`item` VARCHAR(64) NOT NULL,
`qty` INT NOT NULL DEFAULT 0,
`amount` INT NOT NULL DEFAULT 0,
`account` VARCHAR(16) NOT NULL DEFAULT 'cash',
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `shop_time` (`shop`, `created_at`)
);
+من المفيد معرفته
يعمل Agency-Shops مباشرة بعد سطر ensure. هناك أربع نقاط تستحق المراجعة قبل التشغيل الأول: ترتيب التشغيل، وقاعدة البيانات، وصلاحيات الإدارة، وسكربتات المتاجر أو السطو أو الوقود الأخرى.
- ترتيب التشغيل وOneSync
- ضع ensure Agency-Shops بعد إطار عملك وحقيبتك وoxmysql في server.cfg. يجب أن يكون OneSync مفعلاً، وoxmysql مطلوب.
- قاعدة البيانات
- يتم إنشاء الجداول agency_shop_owned و agency_shop_orders و agency_shop_points و agency_shop_ledger و agency_shop_overrides و agency_shop_sales عند أول تشغيل. الملف install/agency_shop.sql مطلوب فقط إذا كان مستخدم قاعدة البيانات لا يملك صلاحية إنشاء الجداول، وتعيين Config.AutoApplySql = false يوقف الخطوة التلقائية.
- صلاحيات الإدارة
- المسؤولون هم اللاعبون الذين يملكون ACE agency.shop أو group.admin أو group.superadmin، أو مجموعة من Config.Admin.Groups. يمنح الأمر add_ace group.admin agency.shop allow لوحة /ashops لمجموعة الإدارة لديك. في خوادم standalone يسرد Config.Standalone.admins التراخيص.
- سكربتات المتاجر الأخرى
- قم بإزالة مدخلات 24/7 من qb-shops أو esx_shops أو متاجر ox_inventory، وإلا سيقف كاشيران خلف نفس المنضدة. أوقف تشغيل qb-storerobbery والسكربتات المشابهة، أو عيّن Config.Robbery.Enabled = false. بالنسبة لسكربت الوقود الذي يمتلك مضخاته الخاصة، أوقف التفاعل مع مضخاته أو عيّن Config.GasStations.Enabled = false.
?الأسئلة المتكررة
أين توضع Discord webhooks؟
في config_server.lua، لكل من Ownership و Register و Deliveries و Shoplift و Robbery. هذا الملف لا يتم إرساله إلى اللاعبين أبدًا.
هل أحتاج إلى Agency Phone؟
لا. عندما يعمل agency-phone، يتوفر Agency Pay عند الدفع وعند المضخة تلقائيًا. بدونه يدفع اللاعبون نقدًا أو بالبطاقة.