[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
  • Hallo.
    Kleine Frage, daher auch der Thread *g* .


    [MAX_PLAYERS] = Die maximale Anzahl an Spielern ( oder? ).
    [MAX_PLAYER_NAME] = Die maximale Anzahl an Zeichen eines Namens ( oder ? ).


    Wann genau verwendet man jeweils eins davon bzw. wann ist es nötig?( Habe mir bereits einige angeguckt, doch mal wurden sie hergenommen vom Ersteller ... und mal nicht bei ähnlichen Fällen ) ?(
    ( Anmerkung: Ich weiß, dass ein Tutorial existiert zu Variablen, doch das klärte nicht ganz meine Fragen ^^ )

    Suche Scriptlehrer :rolleyes:

  • Nur ein Beispiel, für den Herren mit Linuxmaskottchenavatar ;)



    if(strcmp(cmd, "/beispiel", true) == 0)
    {
    new JetzigesAutoWelchesDerSpielerGeradeFährt = GetPlayerVehicleID(carid);
    AddVehicleComponent(JetzigesAutoWelchesDerSpielerGeradeFährt, IDdesTuningkomponenten);
    return 1;
    }

  • Hi habe problem mit der Whitelist:
    habe eigl. alles richtig gemacht:


    eigenes Callback

    public Whitelist(playerid)
    {
    if (gdebug==1){printf("DEBUG Whitelist Check(%d) (%s)", playerid);}
    new playername2[MAX_PLAYER_NAME];
    GetPlayerName(playerid, playername2, sizeof(playername2));
    new File: file = fopen("Whitelist.cfg", io_read);
    if (file)
    {
    new valtmp[MAX_PLAYER_NAME];
    while (fread(file, valtmp)) {
    StripNewLine(valtmp);
    if (!strcmp(valtmp, playername2, true, strlen(playername2))) {
    fclose(file);
    return 1;
    }
    }
    }
    fclose(file);
    return 0;
    }



    bei onplayerconnect

    if(Whitelist(playerid))
    {
    SendClientMessage(playerid,COLOR_ORANGE,"Willkommen auf dem RealLife BeTA Server!");

    } else {
    new playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid, playername, sizeof(playername));
    new string[200];
    format(string, sizeof(string), "%s wurde gekickt. (Nicht auf der Whitelist)",playername);
    SendClientMessage(playerid,COLOR_WHITE,"Whitelist: Dein Name steht nicht auf der Whitelist!");
    SendClientMessageToAll(COLOR_WHITE,string);
    Kick(playerid);
    return 1;
    }


    habe auch keine errors etc.
    :(


    immer wenn ich connecte kommt
    SendClientMessage(playerid,COLOR_ORANGE,"Willkommen auf dem RealLife BeTA Server!");


    (habe Die Whitelist.cfg ohne namen gemacht, müsste also eigl gekickt werden)


    mfg

  • Whitelist(playerid)
    {
    new File:fstream = fopen("Whitelist.cfg", io_read), msg[256], pName[16];
    if(!fstream)
    return -1;
    GetPlayerName(playerid, pName, 16);
    while(fread(fstream, msg, sizeof msg))
    {
    StripNewLines(msg); // Der mögliche Error, lassen wir es aber mal. ;x
    if(!strcmp(msg, pName)&&strlen(msg)==strlen(pName))
    goto _Ok;
    }
    goto _Fail;
    _Ok:
    fclose(fstream);
    return 1;
    _Fail:
    fclose(fstream);
    return 0;
    }


  • Erklärst mal bitte wieso du bei GetPlayerVehicleID als playerid Parameter anscheindend eine carid übergeben willst?

  • Ich will ein Array definieren wo alle Player[x][0] Integer sind, Player[x][1] Strings sind, Player[x][2] floats sind und alle Player[x][3] bools sind. Wie geht das?


    Ich hoffe es steht nicht schon irgendwo ?(


    Stratege993

    Signatur:
    Hier findest du viele nützliche Infos!

  • Nur ein Beispiel, für den Herren mit Linuxmaskottchenavatar ;)



    new JetzigesAutoWelchesDerSpielerGeradeFährt = GetPlayerVehicleID(carid);


    Weisst du auch, wofür GetPlayerVehicleID gut ist?
    Um das Auto eines Spielers zu finden, doch woher weiss er welcher Spieler es ist, wenn man ihm versucht die carid zu geben, mhh?
    Merkste was, ne?


    new JetzigesAutoWelchesDerSpielerGeradeFährt = GetPlayerVehicleID(playerid);
    So ists richtig ^^


    EDIT: Oh, Goldkiller, dein Beitrag nicht gesehen :sleeping:

  • Ich will ein Array definieren wo alle Player[x][0] Integer sind, Player[x][1] Strings sind, Player[x][2] floats sind und alle Player[x][3] bools sind. Wie geht das?


    Ich hoffe es steht nicht schon irgendwo ?(


    Stratege993


    Dafür benutzt man am besten enums;
    enum e_Strange993 {
    meinString[4],
    meinIntegerWert,
    Float:meinFloat
    }


    new Players[MAX_PLAYERS][e_Strange993];


    //Zugriff:
    Players[2][meinString]="ABC";
    Players[2][meinIntegerWert]=1338;
    Players[2][meinFloat]=0.4;

  • Super, danke für die schnelle Antwort. :thumbup:
    Es hat noch einen schönen Nebeneffekt, man muss sich nicht merken was hinten die 3 oder 5 bedeutet, sondern man schreibt es einfach aus :rolleyes: .

    Signatur:
    Hier findest du viele nützliche Infos!

  • huhu,


    also ich hätte mal eine kleine frage.
    sollte die frage schon irgendwo zu finden sein, entschuldige ich mich...gefunden habe ich nichts.
    also nun zur frage :D


    beim gRandomPlayerSpawns:
    new Float:gRandomPlayerSpawns[6][3] = {
    {334.9979,-1776.0828,5.0890},
    {351.3918,-1801.0250,4.7702},
    {319.4041,-1814.8954,4.3397},
    {309.1599,-1819.8839,4.1863},
    {309.1599,-1819.8839,4.1863},
    {362.1238,-1806.4893,7.8382}
    };


    was heißt in dem schnipsel die
    gRandomPlayerSpawns[6][3] ?


    Danke im vorraus :thumbup:


    Mit freundlichen Grüßen,
    Mr_Hero

  • Heyho,


    hab eine "kleine" Frage.


    Und zwar habe ich mir per file Functions ein Account System erstellt, nur beim Laden aus der Datei, da haperts noch im Script. Da bekomme ich diverse Errors:
    if( strcmp( key , "AdminLevel" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pFlaschen] = strval( val ); } // Hier kommt kein Error, kein Warning, nix
    if( strcmp( key , "Fightswon", true ) == 0 = { val = ini_GetValue ( Data ); PlayerInfo[playerid][pAtt] = strval ( val ); } // Hier kommt dieser Error:
    error 022: must be lvalue (non-constant)


    Ich weiß ned worans liegt. Vllt könnt ihr mir weiterhelfen.

    Help dcmd & sscanf to their way to Pawn domination. Read the tutorial below, and use it.
    dcmd & sscanf

  • Hallo.
    Kleine Frage, daher auch der Thread *g* .


    [MAX_PLAYERS] = Die maximale Anzahl an Spielern ( oder? ).
    [MAX_PLAYER_NAME] = Die maximale Anzahl an Zeichen eines Namens ( oder ? ).


    Wann genau verwendet man jeweils eins davon bzw. wann ist es nötig?( Habe mir bereits einige angeguckt, doch mal wurden sie hergenommen vom Ersteller ... und mal nicht bei ähnlichen Fällen ) ?(
    ( Anmerkung: Ich weiß, dass ein Tutorial existiert zu Variablen, doch das klärte nicht ganz meine Fragen ^^ )

    Also, MAX_PLAYERS ist auf 200 gesetzt, also die in der Tat die maximale Spieleranzahl.
    MAX_PLAYER_NAME ist auf 24 gesetzt und entspricht der maximalen Länge eines Spielernamens.
    Du solltest aber unterscheiden:
    new playername[MAX_PLAYER_NAME]; // Das wird meist/immer als String verwendet
    new VAR[MAX_PLAYERS]; // Das wird meist/immer als Array verwendet
    Im Grunde genommen könnte man es auch umdrehen...


    Ich scripte NICHT mehr, ich möchte mit NIEMANDEM einen Server aufmachen habe auch NICHTS mehr mit LoH zu tun, also lasst es mit den PNs!

  • Ich habe ne frage und zwar will ich das man den /su befehl nur in einem bestimmten radius benutzen kann ...


    Muss ich vlt. das hier im /su befehl irgendwo einfügen
    if (ProxDetectorS(100.0, playerid, giveplayerid))


    so sieht der /su befehl aus


    if(strcmp(cmd, "/suspect", true) == 0 || strcmp(cmd, "/su", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(OnDuty[playerid] != 1 && PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pMember] == 12)
    {
    SendClientMessage(playerid, COLOR_GREY, " You are not on Duty!");
    return 1;
    }
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "USAGE: (/su)spect [playerid/PartOfName] [crime discription]");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    if (gTeam[playerid] == 2 || IsACop(playerid))
    {
    if(IsPlayerConnected(giveplayerid))
    {
    if(giveplayerid != INVALID_PLAYER_ID)
    {
    if (gTeam[giveplayerid] != 2)
    {
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    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, COLOR_GRAD2, "USAGE: (/su)spect [playerid/PartOfName] [crime text]");
    return 1;
    }
    if(WantedPoints[giveplayerid] == 0) { WantedPoints[giveplayerid] = 3; }
    else { WantedPoints[giveplayerid]+= 2; }
    SetPlayerCriminal(giveplayerid,playerid, result);
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD2, " You can't suspect a Cop !");
    }
    }
    }
    else
    {
    format(string, sizeof(string), " %d is not an active player.", giveplayerid);
    SendClientMessage(playerid, COLOR_GRAD1, string);
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD2, " You are not a Cop / FBI / National Guard !");
    }
    }
    return 1;
    }



    Wäre dem jenigen sehr dankbar wen er den eine befehl dort rein scripten könnte...thx schonmal im vorraus