Auto-translated
If you look at the DialogBox code, you can assume that the problem lies in the use of GetCurrentPlayer there. TalkBox expects the first argument to be not the player number, but its filter. For players 1 and 2, the filter is equal to the number, but for 3+, it is not. Therefore, it probably only works for the first two players. If the problem is this, then the solution would be to wrap the first argument of DialogBox - GetPlayerFilter(GetCurrentPlayer()).