Beiträge von Jeffry

    Wenn das irgendwo funktioniert hat war das Zufall. ;)


    Besser ist es so:


    mysql_tquery(dbhandle,"SELECT * FROM `server_fleet`", "LoadVehs", "");


    forward LoadVehs();
    public LoadVehs()
    {
    new num_rows,num_fields;
    cache_get_data(num_rows,num_fields,dbhandle);
    for(new i = 0; i < num_rows; i++)
    {
    new id = GetFreeServerFleetID();
    printf("Slot ID: %i",id);
    Server_Fleet[id][Fleet_ModelID] = cache_get_field_content_int(i,"ModelID",dbhandle);
    printf("ModelID: %i",Server_Fleet[id][Fleet_ModelID]);
    Server_Fleet[id][Fleet_ID] = CreateVehicleEx(Server_Fleet[id][Fleet_ModelID],Server_Fleet[id][Fleet_X],Server_Fleet[id][Fleet_Y],Server_Fleet[id][Fleet_Z],Server_Fleet[id] [Fleet_Rotation],Server_Fleet[id][Fleet_Color1],Server_Fleet[id][Fleet_Color2],5000);
    printf("Fahrzeug sollte erstellt sein");
    printf("ModelID: %i",Server_Fleet[id][Fleet_ModelID]);
    }
    return 1;
    }

    Zu Problem 1:
    Ein Problem ist das nicht wirklich, weil es ja sein kann, dass du nach ein paar Minuten das Fahrzeug 1 gelöscht hast, sprich wenn du dann wieder ein Fahrzeug erstellst, bekommt es die ID 1. Da du wahrscheinlich 200 Fahrzeuge im Server zu Beginn hast fängt es bei 201 an. Wird dann irgendwann die ID 1 entfernt (warum auch immer?), wird die 1 wieder frei.
    Also generell würde ich das, was ich sehe, nicht als Problem sehen.



    Zu Problem 2:
    Da fügst du einfach eine weitere Schleife hinzu, die durch "CreatedCars" loopt, gleich wie bei den "lspdcar" Fahrzeugen.

    sscanf brauchst du hier gar nicht. Schreibe es einfach so, das ist effizienter:


    ocmd:a(playerid,params[])
    {
    new string[145];
    if(Spieler[playerid][pEingeloggt]!=1)return ErrorMsg(playerid,"Du bist noch nicht eingeloggt.");
    if(Spieler[playerid][pAdminrang]<1)return ErrorMsg(playerid,"Du hast nicht das nötige Adminlevel.");
    if(!params[0])return ErrorMsg(playerid,"/a(dmin Chat) [Text]");
    if(strlen(params)>90)return ErrorMsg(playerid,"/a(dmin Chat) [Text darf maximal 90 Zeichen beinhalten]");
    format(string,sizeof(string),"**(( %s %s: %s ))",Adminrang(playerid),Spieler[playerid][pName],params);
    SendAdminMessage(0x00A5FFFF,string);
    return 1;
    }
    ocmd:z(playerid,params[])
    {
    new string[145];
    if(Spieler[playerid][pEingeloggt]==0)return ErrorMsg(playerid,"Du bist noch nicht eingeloggt.");
    if(gTeam[playerid]!=TEAM_ZOMBIE)return ErrorMsg(playerid,"Du kannst diesen Befehl nicht benutzen.");
    if(!params[0])return ErrorMsg(playerid,"/z(chat) [Text]");
    if(strlen(params)>90)return ErrorMsg(playerid,"Der eingegebene Text ist zu lang.");
    format(string,sizeof(string),"**(( Zombie %s: %s ))",Spieler[playerid][pName],params);
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(Spieler_[pEingeloggt]==0)continue;
    if(gTeam[i]!=TEAM_ZOMBIE)continue;
    SendClientMessage(i,0xB40000FF,string);
    }
    return 1;
    }
    ocmd:h(playerid,params[])
    {
    new string[145];
    if(Spieler[playerid][pEingeloggt]==0)return ErrorMsg(playerid,"Du bist noch nicht eingeloggt.");
    if(gTeam[playerid]!=TEAM_HUMAN)return ErrorMsg(playerid,"Du kannst diesen Befehl nicht benutzen.");
    if(!params[0])return ErrorMsg(playerid,"/h(chat) [Text]");
    if(strlen(params)>90)return ErrorMsg(playerid,"Der eingegebene Text ist zu lang.");
    format(string,sizeof(string),"**(( Human %s: %s ))",Spieler[playerid][pName],params);
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(Spieler[i][pEingeloggt]==0)continue;
    if(gTeam[i]!=TEAM_HUMAN)continue;
    SendClientMessage(i,0x33AA33AA,string);
    }
    return 1;
    }


    Und wenn du unbedingt sscanf verwenden willst, aber die Funktion nutzt, dann musst du nur "s" schreiben, anstatt "s[XX]".

    Empty statement heißt leere Anweisung. Das Semikolon nach den beiden if Abfragen ist eine leere Anweisung.


    Mach die beiden Semikolons nach den beiden if Abfragen weg, dann geht's. ;)

    Ich sehe bei keinen der drei Lösungsmöglichkeiten eine Abfrage ob der Spieler im Fahrzeug ist. Was meinst du?
    Wenn es dir um das "In der Nähe sein" geht, dann mach die IsPlayerInRangeOfPoint Abfrage einfach weg.

    @K3Ksii:
    new name, grund[128], n1[128],query[1024];
    zu:
    new name[MAX_PLAYER_NAME], grund[64], n1[145],query[128];


    @Mausibiba:
    Das kannst, bzw. musst, du mit einer Schleife machen.
    CMD:random(playerid)
    {
    new player1 = GetRandomPlayer(playerid);
    if(player1 == INVALID_PLAYER_ID) return SendClientMessage(playerid, 0xFF0000FF, "Es ist kein Spieler außer dir online!");
    //SetPlayerPos(player1, 195.7658,-1436.2083,12.9808);
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    if(i == player1)
    {
    SetPlayerPos(player1, 195.7658,-1436.2083,12.9808);
    }
    else
    {
    SetPlayerPos(i, 195.7658,-1436.2083,12.9808);
    }
    }
    }
    return 1;
    }
    PS: Gewöhne dir bitte ab, Vollzitate zu verwenden, das stört. Danke :)

    Uh, interessant.
    Ich sehe da keinen Fehler.


    Teste es bitte mal so:
    format(name, 128, "{0C9BCB}[* {FFFFFF}%s{0C9BCB} *]", name);
    zu:
    format(name, 128, "%s", name);
    Nur um das auszuschließen, falls der Fehler dann noch immer besteht.



    EDIT:
    Nemesus Jr.:
    Ok, dann scheint es ein Fehler im Streamer Plugin zu sein. 8|