Beiträge von Jeffry

    Ja.


    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(Spieler[i][Team] == 13)
    {
    TogglePlayerDynamicCP(i,Flame[slot][Flame_CP],1);
    SetPlayerMapIcon(i,20,FeuerPos[rand][0],FeuerPos[rand][1],FeuerPos[rand][2],20,COLOR_RED,1);
    }
    }


    Die Variable brauchst du nicht, da du es über den Slot entfernst, die 20 nach dem i ist der Slot (oder eben die Icon ID).

    Flame[slot][Flame_Icon] = SetPlayerMapIcon(playerid,20,FeuerPos[rand][0],FeuerPos[rand][1],FeuerPos[rand][2],20,COLOR_RED,1);
    muss mit playerid als "i" in die Schleife, die du drunter hast, also nach
    TogglePlayerDynamicCP(i,Flame[slot][Flame_CP],1);

    Auf der Karte siehst du immer nur einen Checkpoint, das ist normal so, da SA-MP nicht mehr als einen Checkpoint pro Spieler anzeigen kann.
    Man könnte das hier verwenden: http://forum.sa-mp.com/showthread.php?t=250174


    Wenn du aber nahe an das Feuer fährst, müsstest du den Checkpoint sehen, bzw. sobald das Feuer näher ist als das andere wechselt der Checkpoint. Es wird immer der dir am nächsten stehende Checkpoint angezeigt.

    Was war letztendlich das Problem? Hat der Code es gelöst, oder war was anderes schuld?


    Zwecks des Skins:
    Wird
    SetPlayerSkin(playerid,11);
    überhaupt ausgeführt?
    Füge da mal einen print davor ein, und schau ob der kommt, wenn der NPC sich verbindet. Wenn nicht, dann setze den Teil des NPCs ganz nach oben unter OnPlayerSpawn.

    Die Feuer und Checkpoints müssen außerhalb der Schleife erstellt werden.


    public FeuerRandom()
    {
    new slot = GetFlameSlot();

    if(slot == -1)
    {
    return slot;
    }
    new string[145];
    format(string,sizeof(string),"HQ: An alle Einheiten ein Feuer ist ausgebrochen!...");
    SendFamilyMessage(13,COLOR_RED,string);
    new rand = random(sizeof(FeuerPos));
    Flame[slot][Flame_pos][0] = FeuerPos[rand][0];
    Flame[slot][Flame_pos][1] = FeuerPos[rand][1];
    Flame[slot][Flame_pos][2] = FeuerPos[rand][2] - Z_DIFFERENCE;
    Flame[slot][Flame_CP] = CreateDynamicCP(FeuerPos[rand][0],FeuerPos[rand][1],FeuerPos[rand][2],15.0,0,0,-1,1400.0);
    CreateFire(FeuerPos[rand][0],FeuerPos[rand][1],FeuerPos[rand][2]);


    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(Spieler[i][Team] == 13)
    {
    TogglePlayerDynamicCP(i,Flame[slot][Flame_CP],1);
    }
    }
    return 1;
    }



    Beim OnPlayerEnterDynamicCP dann mit einer Schleife durch die slots:
    for(new i=0; i<sizeof(Flame); i++)
    {
    if(Flame[i][Flame_CP] == checkpointid) //...
    }


    Zum enum dann noch "Flame_CP" hinzufügen.

    Ok.
    Geht es denn mit dem Checkpoint jetzt, und mit dem Löschen? Also geht das System für ein Feuer jetzt?


    Für die mehreren Feuer:
    Poste bitte dein enum von "Flame".

    Ok, das ist recht wenig.
    Dann gehe vorerst mal so vor: (Beispiel Cheater)


    Dort wo ein Cheater gemeldet wird:
    gVarCheater++;
    new string[32];
    format(string, sizeof(string), "[]Cheater melden", gVarCheater);
    TextDrawSetString(Sup7, string);


    Global unter die Includes:
    new gVarCheater;


    Die Textdraws zeigst du beim Login je nach Admin-Level an:
    if(SpielerInfo[playerid][AdminLevel] > 1) TextDrawShowForPlayer(...);
    if(SpielerInfo[playerid][AdminLevel] > 2) TextDrawShowForPlayer(...);
    //...


    Bau das mal so ein, für alle deine "Themen" an Reports, und schau wie du voran kommst.

    Der Fehler sind irgendwelche fehlende Dateien, das können entweder die Microsoft Visual C++ Installationen sein, oder die .NET Frameworks. Welche direkt das sind kann ich dir nicht sagen, da das komischerweise nicht bei allen gleich ist. Kommt auch darauf an, welches Plugin du zu verwenden versuchst. Welches ist das?
    Alternativ kannst du ja auch mal ein anderes MySQL Plugin ausprobieren.


    EDIT:
    Hier noch die Links für MSVC++:
    http://www.microsoft.com/de-de/download/details.aspx?id=29
    http://www.microsoft.com/en-us…oad/details.aspx?id=10986
    http://www.microsoft.com/de-de/download/details.aspx?id=5555


    Das sind, zu mindest in etwa, die die ich drauf habe. Da gibt es so viele Versionen, da blickt niemand mehr durch.

    Einfach alles in die jeweiligen Ordner einfügen (so wie es in der RAR ist), die Ordner die nicht existieren einfach erstellen.
    Also das was in "scriptfiles" in der RAR ist, gehört auch zu "scriptfiles" in deinem Server-Ordner. So für alle.

    Dann zeige uns bitte, wie du die Textdraws momentan den Spielern anzeigst, und unter welchem Callback das steht.
    Wenn die Aktualisierung noch nicht klappt, poste auch die Stelle, an der es aktualisiert wird, bzw. werden soll.


    Dann gehen wir das Schritt für Schritt durch, nicht alles auf einmal.

    #indlude <dini>
    zu:
    #include <dini>




    @[LnD]JustMe.77:
    Für die YSI Library brauchst du alle. Ich weiß nicht ob du speziell das für die y_dialogs rausziehen kannst, und ob es dann noch geht. Nimm einfach alles.
    Zur Nebenfrage: Nein, ,aber du kannst zum Server-Start 50 NPCs verbinden lassen, dann deine NPCs, dann die 50 anderen wieder kicken, dann hast du die ersten 50 IDs frei. :thumbup:

    Dann ersetze:
    if(GetPVarInt(playerid, "Adminlevel") != 1)return SendClientMessage(playerid, -1, " Dein Adminlevel ist zu niedrig!");
    mit:
    if(GetPVarInt(playerid,"SpielerAdmin")<1) return SendRightError(playerid,1);


    und bei deinem tprison Befehl kannst du die Zeile direkt nach
    ocmd:tprison(playerid, params);
    {
    einfügen.

    Also bei mir bleibt er im Server.
    Code:
    #include <a_npc>
    main(){}


    public OnRecordingPlaybackEnd()
    {
    StartRecordingPlayback(PLAYER_RECORDING_TYPE_ONFOOT,"Stadthalle");
    }


    public OnNPCSpawn()
    {
    StartRecordingPlayback(PLAYER_RECORDING_TYPE_ONFOOT,"Stadthalle");
    }


    Falls es nicht geht, versuche es mal mit einem leeren Gamemode, geht es dann?

    if(IsPlayerInAnyVehicle(playerid))
    {
    if(newkeys == KEY_FIRE)
    {
    for(new i=0; i<sizeof(FeuerPos); i++)
    {
    if(IsPlayerInRangeOfPoint(playerid,15.0,FeuerPos[i][0],FeuerPos[i][1],FeuerPos[i][2]))
    {
    if(Spieler[playerid][Team] == 13)
    {
    DestroyObject(feuerobj);
    SendClientMessage(playerid,COLOR_BLUE,"Du hast das Feuer erfolgreich gelöscht. (+500$)");
    GivePlayerCash(playerid,500);
    return 1;
    }
    }
    }
    }
    }

    Du suchst nicht nach der Position, sondern du suchst wieder ein neues "rand" raus, daher geht es nicht.
    Entweder du machst eine Schleife durch alle Positionen des Feuers und prüfst, welcher der Spieler nache ist, oder du speicherst das "rand" bei der Erstellung, zum Beispiel in "feuerrand" und prüfst dann bei OnPlayerKeyStateChange danach, anstatt ein neues "rand" zu generieren.


    Bei OnPlayerWeaponShot solltest du auch noch nach der Position abfragen, sonst kann man überall schießen.

    Kannst du bitte mal den Server Log posten, der kommt wenn du den Server startest?
    Und ein Bild von deinem Server-Ordner, also von dem was drin ist.