> For the complete documentation index, see [llms.txt](https://code-after-sex.gitbook.io/script-documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://code-after-sex.gitbook.io/script-documentation/cas-fishing/reference/troubleshooting.md).

# Troubleshooting

Start with the server console. The script writes what it is doing there rather than to the player's F8, so problems can be read without being in the game.

***

## The rod will not cast

**There is nothing on the hook.** This is the game's own behaviour, not a bug — an empty rod does not cast. Use `/fish` and pick a bait.

***

## No fish ever come

Watch the server console while the float is out:

```
BITE approaching: 7.3m (need 1.6m) drift=0.20m/s
```

The first number should **fall**. If it holds steady or climbs, the fish is not swimming in. If nothing appears at all, no species in that water takes the bait you are using — open `/fish` and check what this water wants.

`drift` is how fast the current is carrying your float. In fast water the fish is given extra speed to catch up.

***

## The prompt does not appear

Almost always the control it is bound to. RDR2 inputs exist only inside their own **control context** — the fishing minigame inputs do not exist while walking around, and a prompt bound to one silently never draws.

Anything shown outside a fight must use an `OnFoot` control. The script uses `INPUT_INTERACT_OPTION1` (G) and `INPUT_INTERACT_OPTION2` (H) for exactly this reason.

***

## The buyer is invisible or underground

Two separate causes:

**Invisible.** A newly created ped has no drawables until it is given an outfit preset and told to rebuild. The script does this; if you have replaced the model, check the name is valid — an invalid model does not error, it silently fails.

**Underground.** The Z in the config is only a place to start measuring from — the ground is probed and the ped placed on it. If the console says:

```
MARKET no ground under lagras at 2104.63, -294.17
```

the world had not streamed in. Move the coordinates or use `/marketmove` while standing on the spot.

***

## "You cannot carry that" with an empty satchel

The item has no row in your inventory's `items` table. The script seeds its own on start — check the console:

```
[cas-fishing] 28 items registered (0 new)
```

`0 new` means they were already there. If the line is missing entirely, the script could not reach the database; check `oxmysql` is started **before** `cas-fishing`.

***

## Bait is not used up

Working as intended for lures. Natural bait goes with the catch; lures come back, which is why they cost more. See Bait and fish.

***

## The fight is too easy or too hard

`Config.Fight.tensionRamp` decides how much a slow reaction costs. Lower is more forgiving. `reelGain` changes how long the fight lasts without changing how punishing it is. See The fight.

***

## Fishing is unavailable on this server build

```
Fishing is unavailable on this server build (no string.blob).
```

The script talks to the game's fishing task through a 240-byte struct, which needs `string.blob` — Lua 5.4 in a recent RedM artifact. Update your server artifacts.

***

## Still stuck

Run `/fishdebug` while the problem is happening and send the console output with your support request. It dumps the whole session state in one go.
