Ich habe für meinen Reallife Server einen DriveIN für die Bürgershots programmiert. Auf meinen Rechner (Windows) geht alles ohne Probleme. Doch auf den Linux V-Server
geht das Menu nicht immer.
So wird das Menu ausgelöst:
if(GetPlayerState(i) == 2 && PlayerToPoint(5.2,i,1215.1074,-906.4305,42.7768) && drivet[i] == 0 || GetPlayerState(i) == 2 && PlayerToPoint(5.2,i,800.4473,-1629.9810,13.2578) && drivet[i] == 0 || GetPlayerState(i) == 2 && PlayerToPoint(5.2,i,-2351.2710,-156.7998,35.1953) && drivet[i] == 0 || GetPlayerState(i) == 2 && PlayerToPoint(5.2,i,-2347.0488,1023.5015,50.4223) && drivet[i] == 0) {
drivet[i] = 1;
TogglePlayerControllable(i, 0);
ShowMenuForPlayer(drivein,i);
}
Das ist in einem Timer drin der jede Sekunde ausgelöst wird. Bis dahin geht soweit alles. Dieses Menu geht auf.
Das Menu (Ausschnitt):
if(CurrentMenu == drivein)
{
switch(row)
{
case 0: //BURGER
{
HideMenuForPlayer(drivein,playerid);
ShowMenuForPlayer(driveb,playerid);
HideMenuForPlayer wird immer ausgeführt. Doch ShowMenu nicht immer (jedenfalls auf dem Linux).
DRIVEB Menu:
if(CurrentMenu == driveb)
{
switch(row)
{
case 0: //CHEESEBURGER
{
if(money2 > 3) {
SendClientMessage(playerid, COLOR_WHITE, "* Du hast dir einen Cheeseburger für $3 gekauft.");
GivePlayerMoney(playerid,-3);
PlayerPlaySound(playerid, 1054, 0.0, 0.0, 0.0);
SetPlayerHealth(playerid, php+30.0);
SetTimerEx("driveintimer",8000,false,"d",playerid);
TogglePlayerControllable(playerid, 1);
} else {
PlayerPlaySound(playerid, 1055, 0.0, 0.0, 0.0);
SendClientMessage(playerid, COLOR_WHITE, "Du hast nicht genug Geld für einen Cheeseburger.");
SetTimerEx("driveintimer",8000,false,"d",playerid);
TogglePlayerControllable(playerid, 1);
}
}
Nur CASE 0 sonst wird das hier zu lang.