---
# System prepended metadata

title: West RP - Horse Additional Shop
tags: [westrp, horseAdditionalShop]

---

West RP - Horse Additional Shop
===

###### tags: `westrp` `horseAdditionalShop`

## Adatbeszerzes

Ha  a játékos a `CP` közelébe ér üzenet formájában értesíti a server a kliens oldalt, hogy ay adatokat hívja le:

- type: **fetch_data**
- location: a helyszín neve

```json
{
    "type": "fetch_data"
    "location": "horseAdditionalShop"
}
```

Ha a jatekos a `CP`-t megnyitva megsem volna adata:

- a vonatkozó query állapota `idle` és
- a `data.results` üres

akkor ismét elmegy a `{ type: "fetch_data" }` kérés ekkor viszont érdemes kirakni egy loading spinnert, ami jelzi a játékosnak a vásárlás tényét

## Akciók

### CP nyitás

Játékos a `CP`-hez érve megnyitotta azt:

```json
    {
        "type": "open_cp"
        "location": "horseAdditionalShop"
    }
```

Nézet oldal, behív:

```
/react/horseAdditionalShop/open
```

Method: `GET`

Request:
```
   nincs paraméter 
```

Response:
```json
    {
        "entity": "ok" 
    }
```
:::danger

Errors: 

    nincs
:::

### Termékek betöltése

```
/react/horseAdditionalShop/loadProducts
```

Method: `GET`

Request:
```
nincs paraméter
```

Response:
```json
    {
        "results": [
            { ... }        
        ]
    }
```



### Tárgy spawn-olása

```
/react/horseAdditionalShop/showProduct
```

Method: `GET`

Request:
```json
    {
        "model": "{model hexdec}"
    }
```

Response:
```json
    {
        "entity": "ok"
        
    }
```

:::danger
Errors: 

    {"error": "invalid_model"}

:::


```lua=
CP:
local bolt = nil

lókiegészítő bolt cp megnyitása: bolt = 'lokiegeszitok'
bolt cp elhagyása: bolt = nil

local spawnhorse = nil
local kiegeszito_model = nil
local spawned = nil
local errors = nil

RegisterNUICallback('horseAdditionalShop/products', function(adatnev,cb)
	if bolt == 'lovak' then
	    
	elseif bolt == 'lokiegeszitok' then
	    lo_lekeres(adatnev)
        while visszakuldes == nil do
            Wait(100)
        else
            cb(errors)
            errors = nil
        end
	elseif bolt == 'szeker' then
	
	end
end)

function lo_lekeres(lokiegeszito) 
    if lokiegeszito == nil then
        hibaüzenet()
        errors = {"error": "invalid_model"}
    else
        if spawned == nil then
            model = lonev_hash
            RequestModel(model)
            spawnhorse = native(model)

            whlie spawnhorse == nil do
                wait(10)
            end
            spawned = true
        end
        kiegeszito_model = lokiegeszito
        if kiegeszito_model ~= nil then
            DeleteKiegeszito(kiegeszito_model)
            kiegeszito_model = nil
            Spawn_kiegeszito(kiegeszito_model)
        else
            Spawn_kiegeszito(kiegeszito_model)
        end
        errors = {"entity": "ok"}
    end
end

```
### Tárgy forgatása

A vezérélst két féle képpen lehet megoldani:

- A játékban az egér aktiv, de ebben a pillanatban a menü vezérelt gombok működése a játékból triggerelődnek. Itt laggolás lehetséges, mert messageekent keresztül kommunikál a játék a nézet oldallal.
- A forgatás egy külön gombbal érhető el, ekkor a menü inaktívvá válik és a játékos tudja forgatni az adott modelt. Amikor kilép ebből a nézetből akkor a nézetoldaé visszakapjaa vezérlést.


```json
{
    "type": "keyboard_action"
    "button": "up"
}
```

```json
{
    "type": "keyboard_action"
    "button": "down"
}
```

```json
{
    "type": "keyboard_action"
    "button": "enter"
}
```

```json
{
    "type": "keyboard_action"
    "button": "esc"
}
```


### Játékos tulajdonai

```
/react/horseAdditionalShop/showPlayerProducts
```

Method: `GET`

Request:
```json
   nincs paraméter
```

Response:
```json
    {
        "results": [ <model> ]
    }
```

### Termék vásárlás

```
/react/horseAdditionalShop/buyProducts
```

Method: `POST`

Request:
```json
    {
        "products": [ <model> ]
    }
```

Response:
```json
    {
        "entity": "OK"
    }
```

:::danger
Error:

```
nincs
```
:::

### Képernyő elhagyása

```
/react/horseAdditionalShop/close
```

Method: `GET`

Request:
```json
    nincs paraméter
```

Response:
```json
    {
        "entity": "ok"
    }
```



