Beiträge von Kaliber

    Wurde schon 100000x mal geklärt. Eine einfache google Suche hätte es auch getan.


    Du verwendest killerid in Arrays, obwohl du nicht prüfst, ob killerid != INVALID_PLAYER_ID ist.

    Ich habe auch eingebaut das man das RCON PW ändern kann, kann ich dies genau so wie Account PWs mit Bcrypt hashen in der DB?

    Wozu solltest du das in einer Datenbank speichern wollen, wenn es eh in der server.cfg steht?



    ch hab es schon mit nem timer probiert aber bekomme es nicht hin die

    Hä?


    Musst doch nur alles zusammenführen:

    So bald ich mein /kick befehl nutze mit parametern kommt eine fehlermeldung:

    Du musst grund auch schon als string deklarieren :D


    C
    new string[120], pID, grund[32];
    if(sscanf(params,"us[32]", pID, grund)) return SCM(playerid,WEISS,""#HTML_GREEN"INFO | "#HTML_WHITE"/kick [playerid/name] [Grund]");

    if(!PlayerInfo[pID][LoggedIn]) return NO_CONNECT_P

    Schreib das so:


    C
    if(!IsPlayerConnected(pID) || !PlayerInfo[pID][LoggedIn]) return NO_CONNECT_P

    Denn pID wird auf INVALID_PLAYER_ID durch sscanf gesetzt ergo (65535) und da du das in das Array packst, das aber nur eine größe von 1000 hat, kommt es hier zu einem Fehler. Das bedeutet, dass du das abfangen musst.

    Das kannst du so machen oder auch:


    C
    if(pID == INVALID_PLAYER_ID || !PlayerInfo[pID][LoggedIn]) return NO_CONNECT_P

    Wobei der IsPlayerConnected sicherer ist, da er auch ohne sscanf funktionieren würde :)

    Muss ich in der Datenbank oder bei OnPlayerRegister Default Werte eintragen oder wo liegt der Fehler?

    Gibt 2 Möglichkeiten.


    Entweder du trägst in der Datenbank (also in der Tabelle) den Default Wert für die Spalte Euro ein und zwar auf 0.

    Oder du gibst diese beim Insert einfach mit, machst halt einfach noch ein `Euro` dazu und den Wert eben auf 0.

    Also in der Datenbank hat die erste crew die ID 1 ka wieso nicht null.

    Ja, da wird ab 1 gezählt.


    Aaaaaber trotzdem sind doch in deinem Array alle Einträge bei 0.


    Ich würde es definitiv bei 0 starten lassen und bei den Abfragen einfach sowas machen:


    C
    CrewInfo[PlayerInfo[playerid][Crew]-1][cName]

    noch eine frage bezüglich dazu: wie kann ich es umändern sodass das textlabel nur dem spieler angezeigt wird, der schießt (issuerid) Kaliber

    Nächstes mal, am Besten direkt in den ersten Thread deine Vorstellung schreiben, wie du dir das System vorstellst hahaha xD

    Mit allen Details, sowas ist nur schwer vorherzusehen hahaha xD


    Machste so:


    Achsoooo, schreib das doch hahahaha xD


    Mach es so:


    folgende fehlermeldungen

    Dann hast du wohl eine globale Variable die Label heißt, das nicht so juuut, aber auch egal, dann machs einfach so:


    C
    new string[32],Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    format(string,sizeof(string),"DMG: %.02f",amount);
    SetTimerEx("@DeleteDmgDraw",1000*10,0,"i",_:Create3DTextLabel(string, 0xFF0000FF, x,y,z, 20.0, GetPlayerVirtualWorld(playerid), 0)); //1000*10 = 10 Sekunden
    
    //Und dann außerhalb:
    @DeleteDmgDraw(i);@DeleteDmgDraw(i) {
        Delete3DTextLabel(Text3D:i);
    }

    Das hier erstellt das textlabel dort, wo die kugel den spieler trifft.

    Achsooo, ja sag das doch, dass du das willst :D


    Dann lösch das alles..und mach es so:

    Dann bleibt das Label 10 Sekunden da, wo der Spieler getroffen wurde.