[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
  • Mh Okay wollte eigentlich nicht mit ~r~ machen sondern mit hex Codes.
    Habs jetz so gelöst:
    TextDrawColor(Textdraw, Hexcode)
    HideTextDrawForPlayer()
    ShowTextDrawForPlayer()
    Funktioniert super auch ausserhalb von OnGameModeInit

  • Moin,
    was ist eigentlich der Unterschied zwischen return 0 und return 1 bei dem Fall hier?:


    //OnPlayerText:
    if(PlayerInfo[playerid][pMuted] == 1)
    {
    SendClientMessage(playerid, COLOR_ERROR, "Du kannst nichts schreiben, da dich ein Administrator gemuted hat!");
    return 0;
    }

    if(PlayerInfo[playerid][pMuted] == 1)
    {
    SendClientMessage(playerid, COLOR_ERROR, "Du kannst nichts schreiben, da dich ein Administrator gemuted hat!");
    return 1;
    }
    Beides macht das selbe - Wenn der Player gemuted ist schickt er die Message und "stoppt" da den Code. ?(


    //EDIT


    2. Wofür steht das "const" hier:
    stock SendAdminMessage(level, const msg[])
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if (PlayerInfo[i][pAdminlevel] >= level)
    {
    new string[128];
    format(string, sizeof(string), "[Adm] %s", msg);
    SendClientMessage(i, COLOR_ADMIN, string);
    }
    }
    }
    return 1;
    }
    Wenn man es weglässt funktioniert es genau so.

  • // This is a comment
    // uncomment the line below if you want to write a filterscript
    //#define FILTERSCRIPT


    #include <a_samp>


    #if defined FILTERSCRIPT


    public OnFilterScriptInit()
    {
    print("\n--------------------------------------");
    print(" Blank Filterscript by your name here");
    print("--------------------------------------\n");
    return 1;
    }


    public OnFilterScriptExit()
    {
    return 1;
    }


    #else


    main()
    {
    print("\n----------------------------------");
    print(" Blank Gamemode by your name here");
    print("----------------------------------\n");
    }


    #endif
    #define RED 0xAA3333AA
    #define YELLOW 0xFFFF00AA


    forward Whitelist(playerid);


    new gdebug = 0;


    public OnGameModeInit()
    {
    // Don't use these lines if it's a filterscript
    SetGameModeText("Blank Script");
    AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
    return 1;
    }
    public Whitelist(playerid)
    {
    if (gdebug >= 1){printf("DEBUG Whitelist Check(%d) (%s)", playerid);}
    new playername2[MAX_PLAYER_NAME];
    new storedcopname[64];
    GetPlayerName(playerid, playername2, sizeof(playername2));
    new File: file = fopen("Whitelist.cfg", io_read);
    if (file)
    {
    new valtmp[MAX_PLAYER_NAME];
    while (fread(file, valtmp) > 0)
    {
    strmid(storedcopname, valtmp, 0, strlen(playername2), 255);
    if ((strcmp(storedcopname, playername2, true, strlen(playername2)) == 0) && (strlen(playername2) == strlen(storedcopname)))
    {
    fclose(file);
    return 1;
    }
    }
    }
    fclose(file);
    return 0;
    }


    public OnPlayerConnect(playerid)
    {
    if (Whitelist(playerid)) {
    } else {
    SendClientMessage(playerid, RED, "Du stehst nicht auf der Whitelist");
    }
    return 1;
    }



    public OnGameModeExit()
    {
    return 1;
    }


    public OnPlayerRequestClass(playerid, classid)
    {
    SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
    return 1;
    }


    public OnPlayerConnect(playerid)
    {
    if (Whitelist(playerid)) {
    } else {
    SendClientMessage(playerid, RED, "Du stehst nicht auf der Whitelist");
    }
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    return 1;
    }


    public OnPlayerDeath(playerid, killerid, reason)
    {
    return 1;
    }


    public OnVehicleSpawn(vehicleid)
    {
    return 1;
    }


    public OnVehicleDeath(vehicleid, killerid)
    {
    return 1;
    }


    public OnPlayerText(playerid, text[])
    {
    return 1;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    new cmd[256];
    new idx;
    cmd = strtok(cmdtext, idx);


    if(strcmp(cmd, "/whitelist", true) == 0)
    {
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[64];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result))
    {
    SendClientMessage(playerid, YELLOW, "Benutze: /addp [spielername]");
    return 1;
    }
    if ((IsPlayerAdmin(playerid)))
    {
    new Float:px, Float:py, Float:pz;
    GetPlayerPos(playerid, px, py, pz);
    new coordsstring[256];
    format(coordsstring, 256, "%s\n",result);
    new File:hFile;
    hFile = fopen("Whitelist.cfg", io_append);
    fwrite(hFile, coordsstring);
    fclose(hFile);
    SendClientMessage(playerid, RED, " Der Spieler wurde zur Whitelist geaddet!");
    }
    return 1;
    }
    return 1;
    }



    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    return 1;
    }


    public OnPlayerExitVehicle(playerid, vehicleid)
    {
    return 1;
    }


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    return 1;
    }




    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    return 1;
    }


    public OnPlayerClickPlayer(playerid, clickedplayerid, source)
    {
    return 1;
    }
    //-----------------------strtok-----------------------------
    strtok(const string[], &index)
    {
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
    index++;
    }


    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
    result[index - offset] = string[index];
    index++;
    }
    result[index - offset] = EOS;
    return result;
    }
    //----------------------------------------------------


    Ich bekomme immer den error: C:\Dokumente und Einstellungen\Administrator\Desktop\GTA San Andreas server b\pawno\white.pwn(94) : error 021: symbol already defined: "OnPlayerConnect"


    /edit Error


  • Copyright = TextDrawCreate(10,428,"dein forum");
    TextDrawLetterSize(Copyright,0.5,1.3);
    TextDrawColor(Copyright,COLOR_TUTBLAU);//Hier musst du die farbe ändern
    TextDrawSetShadow(Copyright,0);
    TextDrawShowForAll(Copyright);


    ModeName = TextDrawCreate(628.000000,427.000000,"deine ts ip ");//TS³sversion
    TextDrawAlignment(ModeName,3);
    TextDrawBackgroundColor(ModeName,0xF60000F6);//Farbe
    TextDrawFont(ModeName,2);
    TextDrawLetterSize(ModeName,0.399999,1.700000);
    TextDrawColor(ModeName,0x000000ff);//Farbe kannst auch COLOR_RED machen oder so
    TextDrawSetProportional(ModeName,1);
    TextDrawSetShadow(ModeName,1);
    TextDrawShowForAll(ModeName);


    have fun 4 eva ^^


    ehm das muss unter OnGameModeInit


    //Edit was verbessert + hinzugefügt

  • der compiler ersetzt das definierte wort gegen die zahl die man angegeben hat an jeder stelle im script beim compilen. GetMaxplayers hat aber keinen wert weil es eine funktion ist und deshalb schmiert er ab. Du könntest aber
    new SERVER_MAX_PLAYERS = GetMaxPlayers();
    machen
    Bin mir net ganz sicher

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Guten abend zusammen ich hätte da ein kleines Problem ;(


    Also es ist folgendes Problem


    Ich registriere mich auf meinen Server wenn ich dann relogg mache und mich wieder einloggen will steht da auch mein Account wurde gefunden und so weiter aber mein Problem ist das ich irgendein Passwort eingeben kann und er mich dann einloggt also irgendwie speichert er das Passwort was ich bei der registration eingegeben habe nicht wisst ihr wo das Problem sein kann?

  • Hast du MadAd? Wenn ja, vergiss es und schau dir das Tutorial von Blackfox_UD an, des Login system von ihm ist Bugfrei und simpel. Wenn es nicht MadAd ist sondern dein eigenes, dann schau dir auch mal das Tutorial von Blackfox_UD an, dort suchst du die richtigen Zeilen an und vergleichst deines und sein Script.

    :D Was schaut ihr mich alle an??? Ich bin auch nur eine Signatur :D

  • Hab ne Warnung und ka wieso.
    if(!pInfo[playerid][gTeam] == Cops)



    C:\Users\Deniz\Desktop\neuer server1\gamemodes\Reallife.pwn(955) : warning 213: tag mismatch



    Kann mir wer bitte helfen.


    Mfg. Deniz

  • huhu,


    Hab hier ne Abfrage in nem GUI Dialog


    if(strlen(inputtext) == 4 && IsNumeric(inputtext))
    {
    //aktion1
    }
    else
    {
    //aktion2
    }


    Jedoch ist es wie folgt:


    Wenn ich vier Zahlen eingebe sollte es kein Problem in der Bafrage gebene und die erste Aktion sollte ausgeführt werden.


    Wenn ich nun jedoch genau vier Zahlen eingebe wird Aktion 2 und nicht Aktion 1 ausgeführt.
    Wenn ich vier Buschstaben eingebe, dann wird auch Aktion 2 ausgeführt, so wie es sein soll.
    Erkennt jemand den Fehler?


    So ist bei mir IsNumeric definiert:


    stock IsNumeric(const string[])
    {
    new lenght = strlen(string);
    for (new i=0; i<lenght; i++)
    {
    if (!((string[i] <= '9' && string[i] >= '0') || (i==0 && (string[i]=='-' || string[i]=='+'))))
    {
    return false;
    }
    }
    return 0;
    }

  • Ja ich hab hier ein kleines Problem mit einem dcmd kick befehl bzw. auch mit dem ban befehl


    also ich hab hier diesen Befehl:
    dcmd_kick(playerid, params[])
    {
    new pid, reason, str[256];
    if(sscanf(params, "rs", pid, reason)) return SendClientMessage(playerid, GREY, "Verwendung: /kick [Spieler/ID] [Grund]");
    if(pid == INVALID_PLAYER_ID) return SendClientMessage(playerid, GREY, "Ungültige ID");
    format(str, sizeof(str), "Spieler (( %s )) wurde von (( %s )) gekickt! Grund: %s.", playername(pid), playername(playerid), reason);
    SendClientMessageToAll(RED, str);
    Kick(pid);
    return 1;
    }


    Und nun wenn ich jetzt im Spiel schreibe: /kick 0 test oder /kick vater test
    kommt so ein mist raus:
    Spieler (( )) wurde von (( VaTeR325 )) gekickt! Grund: test.
    SERVER: Unknown Command.


    Wenn ich nun schreibe: /kick 0 test test oder /kick vater test test
    kommt sowas raus:
    Spieler (( )) wurde von (( )) gekickt! Grund: test test.
    SERVER: Unknown Command.


    und wenn ich das einfach entferne:
    format(str, sizeof(str), "Spieler (( %s )) wurde von (( %s )) gekickt! Grund: %s.", playername(pid), playername(playerid), reason);
    SendClientMessageToAll(RED, str);


    werd ich ganz normal gekickt...


    wieso ist das so? was muss ich ändern damit das geht?

  • dcmd_kick(playerid, params[])
    {
    new pid, reason, str[256];
    if(sscanf(params, "us", pid, reason)) return SendClientMessage(playerid, GREY, "Verwendung: /kick [Spieler/ID] [Grund]");
    if(pid == INVALID_PLAYER_ID) return SendClientMessage(playerid, GREY, "Ungültige ID");
    format(str, sizeof(str), "Spieler (( %s )) wurde von (( %s )) gekickt! Grund: %s.", playername(pid), playername(playerid), reason);
    SendClientMessageToAll(RED, str);
    Kick(pid);
    return 1;
    }


    Versuchs mal so, "u" ist für Spieler, nicht "r".

  • Du musst reason auch als string angeben. Und falls du die plugin version benutzt musst du die stringlänge auch mit schreiben.
    dcmd_kick(playerid, params[])
    {
    new pid, reason[64], str[256];
    if(sscanf(params, "us[64]", pid, reason)) return SendClientMessage(playerid, GREY, "Verwendung: /kick [Spieler/ID] [Grund]");
    if(pid == INVALID_PLAYER_ID) return SendClientMessage(playerid, GREY, "Ungültige ID");
    format(str, sizeof(str), "Spieler (( %s )) wurde von (( %s )) gekickt! Grund: %s.", playername(pid), playername(playerid), reason);
    SendClientMessageToAll(RED, str);
    Kick(pid);
    return 1;
    }

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen