Beiträge von Kaliber

    //Meine Funktion nutzt man so:
    for(new i; i<GetID(); i++) //Geht die Spieler bist zur höchsten ID durch...


    -.-


    ganz nett ;) aber ich denke ich bleib doch lieber bei der Standard Schleife da man da doch mehr Möglichkeiten hat diese zu modifizieren.


    Ehm...du weißt aber, dass das immer noch die Standard Schleife ist, nur das man anstatt dem Makro eine Funktion verwendet :huh:


    mfg. :thumbup:

    !TheO ,


    dein Code ist falsch und unübersichtlich, schreibe hin so:


    stock ChangeCar(playerid, modelid) {
    if(!IsPlayerInAnyVehicle(playerid)) return 0;
    new veh = GetPlayerVehicleID(playerid);
    if(GetVehicleModel(veh) == modelid) return 0;
    new Float:Q[7];
    GetVehiclePos(veh,Q[0],Q[1],Q[2]);
    GetVehicleZAngle(veh,Q[3]);
    GetVehicleVelocity(veh,Q[4],Q[5],Q[6]);
    DestroyVehicle(veh);
    veh = CreateVehicle(modelid,Q[0],Q[1],Q[2],Q[3],-1,-1,-1);
    PutPlayerInVehicle(playerid,veh, 0);
    SetVehicleVelocity(veh, Q[4],Q[5],Q[6]);
    return 1;
    }


    mfg. :thumbup:

    Achso, jetzt habe ich dein Problem verstanden :D


    Mache es ganz easy so:


    ocmd:fraktionswahl(playerid, params[])
    {
    new string[256];
    format(string,sizeof string,"%i Spieler = Cali Kartell\n%i Spieler = Yakuza\n%i Spieler = Ballas\n%i Spieler = Triaden\n%i Spieler = Vagos\n%i Spieler = Aztecas\n%i Spieler = Grove Street\n%i Spieler = Red Solderis\n%i Spieler = Zivilist",GetFraktion(1),GetFraktion(2),GetFraktion(3),GetFraktion(4),GetFraktion(5),GetFraktion(6),GetFraktion(7),GetFraktion(8),GetFraktion(0));
    ShowPlayerDialog(playerid, DIALOG_FRAKTIONSWAHL, DIALOG_STYLE_LIST, "Gangfight - Fraktionswahl",string,"Wählen","Schließen");
    return 1;
    }


    stock GetFraktion(id) {
    new count;
    for(new i; i<MAX_PLAYERS; i++) {
    if(IsPlayerConnected(i) && Spieler[i][Member] == id) count++;
    }
    return count;
    }


    if(dialogid == DIALOG_FRAKTIONSWAHL)
    {
    if(!response) return 1;
    if(listitem != 8) Spieler[playerid][Member] = listitem+1;
    else Spieler[playerid][Member] = 0;
    SpawnPlayer(playerid);
    }


    mfg. :thumbup:

    Einfach mal so abfragen:


    if(dialogid == DIALOG_FRAKTIONSWAHL)
    {
    if(!response) return 1;
    if(listitem != 8) Spieler[playerid][Member] = listitem+1;
    else Spieler[playerid][Member] = 0;
    switch(listitem) {
    case 0: cali++;
    case 1: yak++;
    case 2: ballas++;
    case 3: triaden++;
    case 4: vagos++;
    case 5: aztecas++;
    case 6: grove++;
    case 7: red++;
    case 8: zivi++;
    }
    SpawnPlayer(playerid);
    }


    Das fasst deinen ganzen Code zusammen :D


    mfg. :thumbup:


    //Edit: gar nicht die unterschiedlichen Namen gesehen :whistling:

    Ich schätze mal, dass es so nicht funktionieren wird. die Methode von [DT]Sniper wird wohl eher funktionieren. Allerdings zweifel ich bei der Variante an, dass es durch die neue Schleife überhaupt noch sinnvoll ist.


    Kaliber:
    Wenn 1 Bot und 5 Spieler bei deiner Methode verbinden, so hat der letzte die ID 5. Verlassen nun Spieler 2 und 3 den Server, zählt deine Variante runter und ID 5 wird ausgelassen.


    :D Omg, habe da gerade einen großen Fehler gesehen ^^


    Schau jetzt nochmal, jetzt sollte das alles funktionieren :D


    @Rest Dankeschön :love:


    mfg. :thumbup:

    stock GetItem(playerid,slot, name[],len)


    Ja, darüber habe ich nicht nachgedacht ^^


    Gut, danke das du mir sowas sagst, verbessere es gleich :)


    Item[playerid][s] = "";


    Ein ganz schlimmer Fehler, der dir das "beigebracht" hat - gehört verprügelt.
    Du sorgst hier nur für memory leaks.


    Auch hier danke für den Tipp :D
    (Du kannst das uralte GF mal verprügeln :D)


    Unglaubliche 32 Zeilen Effektivcode und trotzdem noch so viel Mist.


    Dann gebe doch mal konstruktive Kritik und sag mal was hier Mist ist ;)


    @Rest, danke für die ganzen Kommentare :)


    mfg. :thumbup:


    //Edit: Rechtschreibung

    Sorry das ich mich grade Dumm anstelle aber versteh ich grade nicht also das ist ein Inventar System wo halt Sachen gespeichert sind aber wie speicher ich etwas wird es automatisch oder wie ähhh?. SORRY!



    Mit freundlichen Grüßen


    Nein, die Sachen werden nicht automatisch gespeichert, aber du kannst das ganz simpel speichern...


    Halt mit deinem Speicherungssystem und GetItem(playerid, slot); Das sähe dann so aus (Beispiel mit dini):


    dini_Set(Spielerdatei,"Item1",GetItem(playerid,0));
    dini_Set(Spielerdatei,"Item2",GetItem(playerid,1));
    //usw bis MAX_SLOTS erreicht ist


    Coole Sache,würdest du mir sowas als Kofferraumsystem machen gg Taschengeld?


    Was genau meinst du...erkläre das mal genauer ;)



    mfg. :thumbup:

    CreateObject ist die Standard Funktion von a_objects und man kann nur 1000 von diesen Objekten erstellen, da sie global erstellt sind und dauerhaft existieren...


    CreateDynamicObject arbeitet mit einem Streamer von Incognito und man kann unendlich viele Objekte nutzen, die aber halt auch verschwinden wenn man aus der DrawDistance läuft...da liegt nämlich der Unterschied :D


    mfg. :thumbup:


    //Edit: Name "a_objects"

    Wenn es für ihn _objectid ist dann ist das nun mal so!


    War nicht böse gemeint :D


    Aber es soll sich schließlich nicht falsch verbreiten... ;)


    Wenn es für ihn _objectid ist dann ist das nun mal so!


    Ja...aber das geht halt nicht, schau:


    new obj = CreateObject(...); //CreateObject returnt die Objektid


    CreateObject(modelid...); //Die modelid ist halt die id des Modells des Objekts :D


    Das ist ein wichtiger Unterschied !


    mfg. :thumbup: