[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Würde mein Befehl um Admins anzuzeigen so funktionieren?



    CMD:admins(playerid, params[])
    {
    new iString[512] = '\0';



    foreach(new i : Player)
    {
    if(Player[i][Level] > 0 && Player[i][IsOnDuty] == true)
    {
    format(iString, sizeof(iString), "%s{00c5ff}%s {808080}|| {00c5ff}%s {808080}|| {00FF7F}Im Dienst\n", iString, Player[i][Name], GetRang(i));
    }
    if(Player[i][Level] > 0 && Player[i][IsOnDuty] == false)
    {
    format(iString, sizeof(iString), "%s{00c5ff}%s {808080}|| {00c5ff}%s\n", iString, Player[i][Name], GetRang(i));
    }
    }



    if(strlen(iString) < 1) ShowPlayerDialog(playerid,DIALOG_HELPS,DIALOG_STYLE_MSGBOX,"{FFFF00}Teammitglieder Online", "Keine Teammitglieder Online","Ok","");
    else ShowPlayerDialog(playerid,DIALOG_HELPS,DIALOG_STYLE_MSGBOX,"{FFFF00}Teammitglieder Online", iString,"Ok","");



    return 1;
    }

  • Ich habe meinen Befehl jetzt so:

    CMD:admins(playerid, params[])
    {
    new iString[512] = "Name\tRang\tStatus\n";



    foreach(new i : Player)
    {
    if(Player[i][Level] > 0 && Player[i][IsOnDuty] == true)q
    {
    format(iString, sizeof(iString), "%s{00c5ff}%s\t{84758A}%s\t{00FF7F}Im Dienst\n", iString, Player[i][Name], GetRang(i));
    }
    if(Player[i][Level] > 0 && Player[i][IsOnDuty] == false && Player[i][IsAFK] == false)
    {
    format(iString, sizeof(iString), "%s{00c5ff}%s\t{84758A}%s\t{FECDCA}Online\n", iString, Player[i][Name], GetRang(i));
    }
    if(Player[i][Level] > 1 && Player[i][IsAFK] == true)
    {
    format(iString, sizeof(iString), "%s{00c5ff}%s\t{84758A}%s\t{E8702A}AFK\n", iString, Player[i][Name], GetRang(i));
    }
    }



    if(strlen(iString) < 1) ShowPlayerDialog(playerid,DIALOG_HELPS,DIALOG_STYLE_MSGBOX,"{FFFF00}Teammitglieder Online", "Keine Teammitglieder Online","Ok","");
    else ShowPlayerDialog(playerid,DIALOG_HELPS,DIALOG_STYLE_TABLIST_HEADERS,"{FFFF00}Teammitglieder Online", iString,"Ok","");



    return 1;
    }

    Wie kann ich es machen das wenn man auf irgendeine der Zeilen(Personen) klickt dass man auf einen weiteren Dialog weitergeleitet wird? Bei OnDialogResponse mit listitem?

  • Ist mir schon bewusst aber wen ich für jeden bus 1 erstelle wird das zu viel?



    for(new i=0;i<sizeof(Busfahrer);i++){Create3DTextLabel( "Leerfahrt", 0x33CCFFFF, 50.0, 60.0, 110.0, 20.0);Attach3DTextLabelToVehicle(Vehicle[Busfahrer[i]][vehText], 0, -1, -1, -1, 100.0);}

    Nein da du ja einen Streamer dafür nutzt, solange nicht zu viele gleichzeitig geladen werden ist alles im Rahmen. Ich empfehle dir aber dir die Befehle des Incognito Streamers anzuschauen und das nicht im SA.MP Wiki da Bezeichnung, Position der Parameter usw. gerne mal vertauscht sind.

  • Wenn ich was im Chat schreibe, bin ich dann gefreezt. Habe auch SuFu benutzt aber bin nicht weiter gekommen.


    OnPlayerText

    if(sInfo[playerid][Einstellung][2] == 1)
    {
    if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
    {
    ApplyAnimation(playerid, "ped", "Idle_Chat", 4.1, 0, 0, 0, 0, ((strlen(text) * 100) + 1000), 0);
    return 1;
    }
    }

  • Wie kann ich es machen das wenn man auf irgendeine der Zeilen(Personen) klickt dass man auf einen weiteren Dialog weitergeleitet wird? Bei OnDialogResponse mit listitem?

    if(dialogid == DIALOG_HELPS)
    {
    if(!response) return 1;
    new count = -1;
    foreach(new i : Player)
    {
    if(Player[i][Level] > 0) count++;
    if(count == listitem)
    {
    //Player "i" wurde angeklickt
    //z.B. für weitere Verwendung:
    //SetPVarInt(playerid, "ClickedPlayer", i);

    return 1;
    }
    }
    return 1;
    }


    Außerdem solltest du die im Befehl das zweite "if" zu einem "else if" machen, und das letzte "if" zu einem "else", sonst kann es zu doppelten Einträgen kommen.

  • Warum wird SpielerLaden nicht aufgerufen?


  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Ja das andere funktioniert jetzt. Hab da bisschen rumprobiert, aber der Timer wird nicht gekillt


    Oben im Script:
    new LoginTimer[MAX_PLAYERS];
    OnUserCheck:

    Code
    public OnUserCheck(playerid)
    {
    	{
    		new d_info[512];
    		format(d_info, sizeof(d_info), ""HTML_WEIS"Willkommen "SERVER_HTML"%s"HTML_WEIS", \nBitte gebe dein Passwort ein um dich einzuloggen:\nDeine IP: "SERVER_HTML"%s", sI[playerid][pName], Spielerip(playerid));
    		SPD(playerid, D_LOGIN, DIALOG_STYLE_PASSWORD, ""SERVER_HTML""SERVER_TAG""HTML_WEIS": Login", d_info, "Weiter", "Abbrechen");
    		LoginTimer[playerid] = SetTimer("LoginTimerPublic", 30000, false);
    	}
    	return 1;
    }

    Das Public:



    Code
    public LoginTimerPublic(playerid)
    {
        KickWithMessage(playerid, COLOR_KICK, "Server: Du wurdest gekickt, Grund: Zeitüberschreitung");
    	return 1;
    }

    Unter OnUserLogin:
    KillTimer(LoginTimer[playerid]);

    Einmal editiert, zuletzt von Marschl ()

  • Nein der Timer heißt nicht LoginTimerPublic, da ich im Script den LoginTimer defeniert habe. Wie meinst du dass mit SetTimerEx?
    Man wird gekickt aber dass Problem liegt darin dass wenn man eingeloggt ist, der Timer tzdm weiterläuft

  • Wo liegt mein Fehler? Es wird kein Textlabel erstellt und kein Pickup
    OnPlayerDisconnect:


    Timer Public:


    Code
    public LogoutInfo(playerid)
    {
    	Delete3DTextLabel(LogoutText[playerid]);
    	DestroyPickup(LogoutPickup[playerid]);
    	return 1;
    }
  • Ich versuche momentan das Discord Connector Plugin von maddinator zu benutzen aber irgendwie find ich den Fehler nicht?



    public DCC_OnChannelMessage(DCC_Channel:channel, const author[], const message[])
    {
    if(author == "SAMP Bot") return 0; //FEHLER
    if(channel != g_WelcomeChannelId) return 0;
    new channel_name[48];
    DCC_GetChannelName(channel, channel_name);



    new str[160];
    format(str, sizeof str, "[Discord] {FFFF00}%s: {FFFFFF}%s", author, message);
    SendClientMessageToAll(COLOR_BLUEGREEN, str);
    return 1;
    }


    Ich krieg die Fehlermeldung: "error 033: array must be indexed (variable "author")