# Installation

{% hint style="danger" %}
If you are transferring files using FTP transfer your files using [winscp ](https://winscp.net/eng/download.php)program. Filezilla transfers files as corrupted.
{% endhint %}

{% hint style="danger" %}
If you have xsound in your source files, you must remove it. Use the xsound file we provided to you.
{% endhint %}

### Step 1: File Location

* Create a \[phone] folder inside the main source file and extract the files in the zip to this folder.

<figure><img src="/files/ROocVhrtBdOMQCxSLo0r" alt=""><figcaption><p>Phone files should be like this among your resources.</p></figcaption></figure>

### Step 2: Insert SQL Query

* Read the **gksphone/gksphone.sql** file into your database.

{% embed url="<https://www.youtube.com/watch?v=40rEUkF2mso>" %}

### Step 3: ConifgAPI.lua Configuration

* Fill in the blanks in gksphone/configAPI.lua with discord webhook for taking photos(Don't skip without filling these sections).

{% hint style="info" %}
You can check here for all the config api functions.
{% endhint %}

{% hint style="warning" %}
If you want to use music and playtube app: you must fill Cfg.TebexTransactionID line with your [tbx-id](https://docs.gkshop.org/information/faq#i-cant-find-my-transaction-id).
{% endhint %}

<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FnzCIydoDTM36u1gSgRi1%2Fuploads%2FHlvEenOktwmv4IjsV1tq%2Fyeniconfigapi.png?alt=media&#x26;token=92f9bf31-b845-4169-a582-192927627d09" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
If you are going to use a discord webhook for your media uploads, don't forget to write your discord webhook in the Cfg.PhotoWebHook section. If you don't know how to create discord webhook, [check this page](https://hookdeck.com/webhooks/platforms/how-to-get-started-with-discord-webhooks#discord-webhooks-frequently-asked-questions).
{% endhint %}

{% hint style="success" %}
As GKSHOP, We offer Media Service so that you can better use the media services on our phone. It isn't mandatory to purchase this service, it is optional. [Purchase GKSMEDIA SERVICE](https://service.gkshop.org/package/5563991)
{% endhint %}

### Step 4: Config.lua Configuration

* You can edit the fields in **gksphone/config.lua** to the infrastructure you use and activate it according to the sound script you use and make the necessary adjustments.

```lua
Config = Config or {}

--- ### Framework Settings ### ---

Config.QBCoreNewversion = true

if Config.QBCoreNewversion then
    Config.CoreName = "QBCore"
    Config.Core = exports['qb-core']:GetCoreObject()
    Config.CoreNotify = "QBCore:Notify"
else
    Config.CoreName = "QBCore:GetObject"
    Config.Core = nil
    TriggerEvent(Config.CoreName, function(obj) Config.Core = obj end)
    Config.CoreNotify = "QBCore:Notify"
end

--- ### Phone settings ### ---

Config.KeyMapping       = true                 --## This setting is for those using slotted inventory. (Prevents key operation)
Config.OpenPhone        = 'f1'                 --## Phone open key ## https://docs.fivem.net/docs/game-references/input-mapper-parameter-ids/keyboard/
Config.Locale           = 'en'
Config.RegisterCommand  = "TooglePhone"        -- commandName
Config.ItemName         = {           -- # item name
                            "phone",
                            "pink_phone",
                            "gold_phone"
                        }
Config.ChargeItemName   = "powerbank"           --- PowerBank Item Name
Config.PropActive       = true
Config.CryptoName       = "qbit"
Config.HospitalAmbulanceAlert = false
Config.Fahrenheit       = false
Config.EyeTarget        = false                 -- required qb-target (You can use it for contacts sharing and phone booth)
Config.TargetExport     = "qb-target"           -- exports["qb-target"]  -- Resource Name
Config.UsableItem       = true                  -- If you want to use without items set it to false
Config.OxInvetory       = false                 -- Set to true if you are using Ox Inventory
Config.AirDropID        = false                -- Activate the AirDrop feature if you want the player to see the ID.
Config.AutoMessageDelete    = true             -- Automatically deletes messages (Messages,Mail,Group Messages,Tinder Messages,Advertising)
Config.AutoDeleteTime       = 4                -- How many days ago you want to delete data
Config.AutoWantedTime       = 4                -- How many days ago you want to delete data (Automatic deletion of wanted people in MDT application after how many days if deletion is forgotten)
Config.WaitPhone            = 2                -- Cycle time when phone is on
Config.Signal               = true             -- Signal system (phone downtime in some areas)

--- ### Voice settings ### ---

Config.MumbleExport     = "mumble-voip"       -- exports["mumble-voip"] -- Resource Name
Config.PMAVoiceExport   = "pma-voice"         -- exports["pma-voice"]   -- Resource Name
Config.PMAVoice         = true               -- Use Pma-Voice Resource (Recomended!) https://github.com/AvarianKnight/pma-voice
Config.UseMumbleVoIP    = false               -- Use Frazzle's Mumble-VoIP Resource https://github.com/FrazzIe/mumble-voip
Config.UseTokoVoIP      = false
Config.SaltyChat        = false               -- SaltyChat (Only v2.6 and lower | Not tested in v2.6 higher versions)

--- ## CALL COMMAND ### ---
Config.OnlineContactPlayers = false    -- Activate to see active players in the contacts
Config.CallAnswer = "answer"  -- quick answer (registercommand)
Config.EndCall = "endcall"  -- to close call (registercommand)

Config.SpecificNumberOn = false  --- If you want the SpecificNumber function to work, enable it
 -- When this number is called the trigger on the doc page will work.
 -- server : https://docs.gkshop.org/gksphone/developers/server-event#specific-number
 -- client : https://docs.gkshop.org/gksphone/developers/client-event#specific-number
Config.SpecificNumber = {
    ["5555555"] = true
}



-- ### TAXI APP ### ---
Config.TaxiPrice        = 75     -- Taxi Price ( 75$/KM )
Config.TaxiJobCode      = "taxi"  -- Job Code

-- ### House APP ### ---
Config.loafHouse        = false   -- Activate if you are using Loaf House (https://store.loaf-scripts.com/package/4310850)

-- ### BANK APP ### ---
Config.BankTransferCom      = 10     -- Bank transfer commission rate
Config.OfflineBankTransfer  = true

---### Dispatch ### ---

-- cd_dispatch => Codesign Dispatch (https://codesign.pro/package/4206357)
-- ps-dispatch => Project-Sloth (https://github.com/Project-Sloth/ps-dispatch)
Config.Dispatch       = ""

-- ### GARAGE APP ### ---
Config.qbGarages        = true   -- Set to false if you are not using qb-garages
Config.cdGarages        = false  -- Activate if you are using Codesign Garage (https://codesign.pro/package/4206352)
Config.loafGarages      = false  -- Activate if you are using Loaf Garage (https://store.loaf-scripts.com/package/4310876)

Config.OwnedVehicles    = "player_vehicles"   -- ## SQL TABLE NAME (VEHICLES)
Config.ValespawnRadius  = 170.0   -- Distance to spaw your car
Config.ValePrice        = 100    -- Vale Price
Config.ValeNPC          = true   -- Activate if you want the valet to bring the car to you.
Config.ImpoundVale      = true   -- Set to true to not fetch impounded cars

Config.ClassList = {
    [0] = "Compact",
    [1] = "Sedan",
    [2] = "SUV",
    [3] = "Coupe",
    [4] = "Muscle",
    [5] = "Sport Classic",
    [6] = "Sport",
    [7] = "Super",
    [8] = "Motorbike",
    [9] = "Off-Road",
    [10] = "Industrial",
    [11] = "Utility",
    [12] = "Van",
    [13] = "Bike",
    [14] = "Boat",
    [15] = "Helicopter",
    [16] = "Plane",
    [17] = "Service",
    [18] = "Emergency",
    [19] = "Military",
    [20] = "Commercial",
    [21] = "Train"
}
Config.Carhashdebug = false  -- car hash (f8)

-- ### CAR SELLER ### ---

Config.OfflineCarSeller = false
Config.DefaultGarage = "pillboxgarage"  -- The garage where the car will go when a car is purchased
Config.CarsellerTax = 10

Config.CarsSellerBlacklist = {
    [-16948145] = false, -- car hash and true/false
    [1234311532] = false
}

Config.CarSellerClassBlock = {
    ["Emergency"] = true,
    ["Super"] = false
}




-- ### Advertising APP ### ---
Config.AdvertisingPrice = 300
Config.AdvertisingSendBlockCommand = "blockAdd" -- (/blockAdd true/false)

-- ### Twitter APP ### ---
Config.TwitterVerifyCommand = "twitterverify"   -- (/twitterverify true/false username)
Config.TwitterSendBlockCommand = "blockTwitter" -- (/blockTwitter true/false)

-- ### Instagram APP ### ---
Config.InstagramVerifyCommand = "instagramverify"  -- (/instagramverify true/false username)
Config.InstagramSendBlockCommand = "blockInstagram" -- (/blockInstagram true/false)

-- ### Race APP ### ---
Config.RaceAutCommand = "raceaut"
Config.qbcoreaut = "god"  --- qb-core authorization system

-- ### Charge ### --- (/charge playerid charge(0-100))
Config.ChargeAutCommand = "charge"
Config.qbcorechargeaut = "god"  --- qb-core authorization system

-- ### Number Change ### ---
Config.NewNumberChange = "phonenumberchange" -- /phonenumberchange playerid newnumber


-- ## PHONE Box -- ##

Config.PhoneBox = true
Config.PhoneBoxKey = "E"
Config.PhoneBoxRegCom = "phonebox"
Config.PhoneBoothMoney = { actived = true, money = 500 }
Config.PhoneBoothModel = {
	[1281992692] = true,
    [1158960338] = true,
    [295857659] = true,
    [-78626473] = true,
    [-2103798695] = true,
    [1511539537] = true,
    [-1559354806] = true
}
Config.PhoneBootNumber = "22222"



--## Crypto ##--


-- Cryptos to use
-- You can add or turn off any crypto you want. (https://api.coingecko.com/api/v3/coins/list?include_platform=false) Crypto list that can be added
-- The id option will be the first value, and the second value will be true or false.
Config.Crytos = {
    ["bitcoin"] = true,
    ["ethereum"] = true,
    ["tether"] = true,
    ["binance-usd"] = true,
    ["uniswap"] = true,
    ["binancecoi"] = true,
    ["terra-luna"] = true,
    ["avalanche-2"] = true,
    ["cardano"] = true,
    ["ripple"] = true,
    ["usd-coin"] = true,
    ["dogecoin"] = true,
    ["litecoin"] = true,
    ["chainlink"] = true,
    ["stellar"] = true,
    ["tron"] = true,
    ["eos"] = true,
    ["monero"] = true,
    ["iota"] = true
}

---##  Spam ## ---

Config.SpamLimit = 6  -- Default: 6
Config.SpamReset = 10  -- seconds
Config.SpamPlayerKick = true
Config.SpamDropPlayer = "You were kicked from the server for spamming too much"


-- ### Business APP ### ---

-- JOBs that will use the Business APP
Config.UseBusinessJobs = {   
    mechanic = true,
    ambulance = true,
    police = true
}


Config.UseBillingCommission = true  -- Invoice commission true/false
-- This is a percentage (0.10) == 10% ( Must be active to receive commission - If the player is not in the game, she/he cannot receive a commission.)
Config.BillingCommissions = {
    mechanic = 0.10,
    police = 0.20
}


-- People who can use the application at a high level (jobs and lowest rank) 
Config.JobGrade  = { 
    ["police"] = 3,
    ["ambulance"] = 2,
    ["mechanic"] = 2
}


--- ## Live APP --- ##

Config.LiveAPPDonateTax = 0.20 -- deduction rate from incoming money
```

<table><thead><tr><th width="267">Code Block</th><th width="251.33333333333331">Value</th><th>Explanation</th></tr></thead><tbody><tr><td>Config.PMAVoice </td><td>true / false</td><td>Set true if you are using</td></tr><tr><td>Config.UseMumbleVoIP</td><td>true / false</td><td>Set true if you are using</td></tr><tr><td>Config.UseTokoVoIP</td><td>true / false</td><td>Set true if you are using</td></tr><tr><td>Config.SaltyChat</td><td>true / false</td><td>Set true if you are using</td></tr><tr><td>Config.OnlineContactPlayers</td><td>true / false</td><td>Set true if you are using</td></tr><tr><td>Config.CallAnswer</td><td>answer</td><td>Answer registercommand</td></tr><tr><td>Config.EndCall</td><td>endcall</td><td>Endcall registercommand</td></tr></tbody></table>

### Step 5: Adding Gotur Job

{% hint style="info" %}
qb-core > shared > jobs.lua - Add job
{% endhint %}

```lua
["gotur"] = {
	label = "Götür",
	defaultDuty = true,
	grades = {
        ['0'] = {
                name = "Messenger",
                payment = 0
            },
	['1'] = {
                name = "Manager",
		isboss = true,
                payment = 0
            },
        },
},
```

### Step 6: Polyzone

{% hint style="info" %}
If you want to use the phone's signal feature, don't forget to use the polyzone script.
{% endhint %}

{% embed url="<https://github.com/mkafrin/PolyZone>" %}

### Step 7: Server.cfg Configuration

```markdown
ensure gks_gotur
ensure gks_racing
ensure xsound
ensure gks_ebay
ensure gksphone
ensure gks_rentacar
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.gkshop.org/gksphone-v1/qb/installation.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
