Beiträge von Goldkiller

    if (strcmp("/camforall", cmdtext, true, 10) == 0)
    {
    if(PlayerInfo[playerid][pAdmin] >= 5)return 1;
    GameTextForPlayer(playerid,"~r~Kamera ~w~Schuss Zeit!",5000,5);
    for(new i = 0;i<MAX_PLAYERS;i++){
    { // <-- die Zeile muss weg
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))GivePlayerWeapon(i,43,999);
    }
    return 1;
    }
    if (strcmp("/minigunforall", cmdtext, true, 10) == 0)
    {
    if(PlayerInfo[playerid][pAdmin] >= 5)return 1;
    GameTextForPlayer(playerid,"~r~Minigun ~w~Party Time!",5000,5);
    for(new i = 0;i<MAX_PLAYERS;i++){
    { // <-- die Zeile muss weg
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))GivePlayerWeapon(i,38,999);
    }
    return 1;
    }
    Schon mal auf die Idee gekommen,teile des Scriptes testweise nicht mitzukompilieren, um den Fehler zu finden :wacko: ?

    doch danke ich versteh wie das funktioniert...
    PLAYER_FLAG_GOD = 1, //ist 1
    PLAYER_FLAG_VIP, // ist 2 weil es um 1 ge<< wird
    PLAYER_FLAG_MUTE, // ist 4 weil es um 2 ge<< wird


    Aber auch nur bei
    enum (<<= 1)
    Bei
    enum (<<= 2)
    wäre es Anders.Da wäre es 1 , 4 ,16 ,da man ja jeweil um 2 Verschiebt.
    0000001 - 1
    0000100 - 4
    0010000 - 16
    ;)

    Hier bei brauch oder kann man das auch überhaupt nicht.
    Das (<<= 1) bedeutet,dass für jeden folgenden Eintrag der Wert um 1 Bitweise verschoben wird.


    Zitat

    PLAYER_FLAG_GOD = 1,
    PLAYER_FLAG_VIP, // 2
    PLAYER_FLAG_MUTE, // 4


    Weil PLAYER_FLAG_GOD 1 ist,wird der nächste um 1 nach Links verschoben.
    000000001 ( << 1 ) [ Ist ja der Wert 1 ]
    --> daraus folgt :
    000000010


    Geht dann immer so weiter.


    Das ganze findet man aber auch mehr oder weniger im SA:MP Forum,Klick


    Du hättest es aber auch anstatt mit einem Enum so machen können
    #define PLAYER_FLAG_GOD ( 1 << 0 )
    #define PLAYER_FLAG_VIP ( 1 << 1 )
    #define PLAYER_FLAG_MUTE ( 1 << 2 )
    ...
    Oh man,dass verwirrt dich jetzt bestimmt xD

    aaah ok so langsam fang ich an es zu blicken danke :)


    Ist ja gut.Dann wird es auch nicht ganz so schwer sein,das Script oben halbwegs zu verstehen.


    Zitat

    PLAYER_FLAG_GOD = 1,
    PLAYER_FLAG_VIP, // 2
    PLAYER_FLAG_MUTE, // 4
    PLAYER_FLAG_INVISIBLE, // 8
    PLAYER_FLAG_SPECTATED, // 16


    16 8 4 2 1 - Wenn du jetzt weisst welche Bit für was steht,kannst du so auch daraus auf einiges schließen.


    1 0 1 0 0 - 16 und 4 sind gesetz,würde also heißen PLAYER_FLAG_SPECTATED und PLAYER_FLAG_MUTE
    1 1 1 0 1 - 16, 8,4 und 1 sind gestzt.Folgt also das _:GOD,MUTE,INVISIBLE und SPECTATED


    Abfragen dazu macht man dann mit Bitwise-And ( Nennt man glaub ich so )
    #define IsPlayerFlag(%0,%1) \
    (PlayerInfo[%0][ibFlag] & (%1) )

    Falls du mehr wissen willst,sag bescheid.Kann ja nicht schaden wenn mehr Leute damit anfangen auch so zu scripten,da es in meinen Augen mehr Vorteile hat.
    Bspw auch Teams.
    Man kann dann sagen der Spieler ist in TEAM_XY und TEAM_ADMIN ( Godfather eventuell ) ohne einen riesen Umstände.


    Da du ja weisst wie das Dualsystem funktioniert,brauch ich wohl 8 - 4 - 2 - 1 nicht erklären.Würde eigentlich noch viel weiter gehen bis es 32 Stellen sind.


    0011 im Dualsystem ist die 3.Wenn mann jetzt die 0011 um 2 nach links verschiebt ( << 2 ) erhält man 1100 ( 12 ).
    Hätte man jetzt um 1 verschoben ( << 1 ) wäre es demnach 0110 ( 6 ).
    Generell werden einfach die 0 und 1 im Dualsystem gesehen verschoben.
    Klick mich
    Das Bild zeigt die Bitverschiebung nach links um 1 ( << 1 ).

    Ist schwer zu erklären, glaube auch nicht,dass Ich 100% darüber bescheid weiss.
    Du solltest jedenfalls schon ein wenig über das Dualsystemwissen, um die ganze Bitverschiebung / setzung usw zu verstehen.



    Wenn ich Zeit finde post Ich vllt eine kurze Anleitung.Eventuell könnte aber irgendjemand anderes dir einen Crash-Kurs darin geben ;).

    Hat auch etwas mit Bitverschiebung / Bitflags zu tun.
    Hab dazu schon mal was gepostet,ist aber wohl untergegangen im Thread.



    Generell ist das ganze sehr nützlich wie Ich finde.Damit kann man sich einiges an Arbeit ersparen, natürlich nur wenn man auch wirklich weiss, wie es funktioniert.


    new
    str_num = 3;
    if(str_num << 2 == 24) return str_num = (~(3));
    3 << 2 ist aber 12 :-O!
    -------
    8 4 2 1
    - - - - -
    0 0 1 1 = 3
    1 1 0 0 = 12

    SetPlayerTeam() verhindert das.
    Weiss jetzt nicht wie du TEAM_1 bzw TEAM_2 definiert hast,nehme aber an so:
    #define TEAM_1 1
    #define TEAM_2 2
    Falls du es so hast,dann musst du dort wo du das Team des Spielers festlegst ( Wahrscheinleich gTeam[playerid] = XY ) noch den Spieler in ein richtiges SA:MP Team setzen.
    SetPlayerTeam(playerid,TEAM_1); // Oder halt TEAM_2.


    Dann müssteste eigentlich friendly-fire aus sein.

    public guttimer(playerid)
    {
    Spieler[playerid][handygut] -= 1;
    if(Spieler[playerid][handygut] <= 2 )
    {
    SendClientMessage(playerid,COLOR_BLUE,"Dein guthaben ist gleich leer");
    return 1;
    }
    return 1;
    }


    Kein Wunder das es Probleme gibt bei so einem Quatsch:
    SendClientMessage,"Dein guthaben ist gleich leer,");

    Versuch es mal so.
    new string[256];
    string[0]='\0';
    for(new i = 0; i<sizeof(Interiors); i++)
    {
    format(string, sizeof(string), "%sInnenraum %d: %d$\n",string,Interiors[i][IDs], Interiors[i][Kaufpreis]);
    }
    ShowPlayerDialog(playerid, DialogInt, DIALOG_STYLE_LIST, "Innenraum Ansicht", string, "Ansehen", "Abbrechen");

    Ganz wichtig ist,dass du string im format() immer wieder vor den neuen Text einfügst. ( Schwer zu erklären x( )

    Ich tippe mal ganz stark das Problem ist in dieser Zeile.
    Tanke[T][ZENSIERT] = result;
    Falls das stimmt,mach
    format(Tanke[T][ZENSIERT],128,result);
    sizeof() würde nicht funktionieren,deshalb 128.Falls es doch gehen würde,soll mich jemand aufklären wie x).


    Wäre besser du markierst beim nächsten mal die Zeiler in der der Fehler angezeigt wird :wacko: .

    format(string,sizeof(string),"Admin (%s) : %s",name,atext);
    Der Platzhalter muss zusammengeschrieben werden.


    Quatsch.Da ist trotzdem noch was falsch x(.


    if(sscanf(params,"s",atext)){

    Du willst einen String ( s ) , keinen Spieler ( u ).