Beiträge von Jeffry

    Abfragen ob eine Zahl eingegeben wurde kannst du mit IsNumeric.


    C
    stock IsNumeric(string[])
    {
    	for (new i = 0, j = strlen(string); i < j; i++)
    	{
    		if ((string[i] > '9' || string[i] < '0')) return 0;
    	}
    	return 1;
    }

    Abfragen ob der Skin existiert:
    http://wiki.sa-mp.com/wiki/Skins:All


    Zwischen 0 und 311 und prüfen, ob eine der fehlenden IDs vielleicht eingegeben wurde.

    Nochmal:
    Dieser Thread ist für kleine Scripting Fragen gedacht und nicht zum debuggen von Code, das ist einfach zu unübersichtlich, wenn dazwischen fünf Leute andere Dinge posten, wie du siehst ist dein erster Post zu dem Problem bereits untergegangen.
    Mache bitte einen neuen Thread auf.

    C
    SetPlayerSkin(playerid, strval(skin));

    Beachte aber, dass du noch abfragen musst, ob der Skin existiert und ob eine Zahl eingegeben wurde (IsNumeric).

    Wird das Menü immer wieder geöffnet, oder was genau ist das Problem?


    Falls das, dann:
    Unter den Includes:

    C
    new bool:blockedPickup[MAX_PLAYERS];


    C
    if(pickupid == WaffenPICK)
    {
    	ShowMenuForPlayer(WaffenMenu,playerid);
    	TogglePlayerControllable(playerid, false);
    }

    zu:

    C
    if(pickupid == WaffenPICK)
    {
    	if(blockedPickup[playerid]) return 1;
    	blockedPickup[playerid] = true;
    	ShowMenuForPlayer(WaffenMenu,playerid);
    	TogglePlayerControllable(playerid, false);
    	return 1;
    }


    Und dann dort, wo du das Menü wieder hidest:

    C
    blockedPickup[playerid] = false;


    Wenn du nichts bewegen kannst, dann versuche es mal ohne den Spieler zu freezen.

    Du hast hier 4-dimensionale Arrays in Verwendung, das geht nicht.


    Mache es mal so:


    Bei OnPlayerCommandText:


    Wenn du willst, dass man die Health eingeben kann:


    Dazu das hier ganz unten im Gamemode einfügen:

    C
    stock IsNumeric(string[])
    {
    	for (new i = 0, j = strlen(string); i < j; i++)
    	{
    		if ((string[i] > '9' || string[i] < '0')) return 0;
    	}
    	return 1;
    }

    Das ist die maximale Länge des Strings.
    In deinem Fall eben der Name (MAX_PLAYER_NAME) plus " has stopped the Event Countdown.", also 33, plus 1 (EOS-Zeichen). Daher musst du es auf 34+MAX_PLAYER_NAME ändern.


    Oder du machst einfach:

    C
    string[64]


    Das passt auch.

    Das ist nicht möglich, außer du fragst ab ob der Spieler AFK ist (Sanduhr über dem Kopf), denn er geht ja ins ESC Menü, müsste dann aber etwas Zeit drin bleiben.