Beiträge von Jeffry

    Einfach so:
    switch(classid)
    {
    case 0:
    {
    GameTextForPlayer(playerid, "Skin 1", 5000, 4);
    gTeam[playerid] = TEAM_USARMY;
    }
    case 1:
    {
    GameTextForPlayer(playerid, "Skin 2", 5000, 4);
    gTeam[playerid] = TEAM_USARMY;
    }
    case 2:
    {
    GameTextForPlayer(playerid, "Skin 3", 5000, 4);
    gTeam[playerid] = TEAM_IRGDNWAS;
    }
    }

    Schreibe es so:
    ocmd:ban(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,ROT,"Du hast kein Admin Level 3.");
    new pID, reason[128],string[144];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,GELB,"Tippe: /ban [id] [grund]");
    format(string,sizeof(string),"Du wurdest von %s gebannt. Grund: %s",Name(playerid),reason);
    SendClientMessageToAll(ROT, string);
    SetPVarInt(pID,"Gesperrt",1);
    new Spieler[50];
    printf("Account suche");
    format(Spieler,sizeof(Spieler),"/Accounts/%s.txt",Name(pID));
    if(fexist(Spieler))
    {
    dini_Set(Spieler,"bangrund",reason);
    dini_Set(Spieler,"banadmin",Name(playerid));
    printf("Dini Bearbeitung");
    }
    SetTimer("Gebannt",1450,false);
    Log("BanLog",string);
    return 1;
    }


    Dann poste deine "Gebannt" Funktion und deine SpielerSpeichern Funktion, möglicherweise überschreibst du damit wie Werte wieder.

    Der Radius scheint mir etwas klein. Ändere das mal zu:
    public OnPlayerConnect(playerid)
    {
    //Spawn Bahnhof LS
    RemoveBuildingForPlayer(playerid, 4025, 1777.8359, -1773.9063, 12.5234, 50.0);
    RemoveBuildingForPlayer(playerid, 4070, 1719.7422, -1770.7813, 23.4297, 50.0);
    RemoveBuildingForPlayer(playerid, 4071, 1722.5000, -1775.3984, 14.5156, 50.0);
    RemoveBuildingForPlayer(playerid, 4072, 1777.4375, -1782.3047, 12.6250, 50.0);
    return 1;
    }


    Klappt es dann?

    Dir neue Version nutzt verschiedene Threads, bzw kann das nutzen, und vor allem besteht der Unterschied natürlich darin, dass das R39-2 mit caching arbeitet, sprich es ist wesentlich performanter als das R5.


    Alles was du mit dem R5 machen kannst, kannst du auch mit dem R39-2 machen.


    Wie gesagt, wenn du mit der Zeit gehen willst, nutze das R39-2. Es lohnt sich auf jeden Fall.




    @[GeD]Max:
    OnPlayerRequestClass:
    switch(classid)
    {
    case 0: GameTextForPlayer(playerid, "Skin 1", 5000, 4);
    case 1: GameTextForPlayer(playerid, "Skin 2", 5000, 4);
    case 2: GameTextForPlayer(playerid, "Skin 3", 5000, 4);
    }



    Das kannst mit der Kamera kannst du mit http://wiki.sa-mp.com/wiki/InterpolateCameraPos machen. Bei case 0 lässt du es zu der linken Position bewegen, bei case 1 wieder zu der rechten, bei case 2 zur linken, usw.
    Versuch es einfach mal.

    da ich mir nicht sicher bin ob ich es Richtig gemacht habe und ich keine möglichkeit habe es alleine Lokal zu testen bitte ich nochmals um mithilfe.


    Passt, habe es kurz für dich getestet. Nur das "I" bei "If" muss klein sein: "if":
    if(strcmp(cmdtext, "/motor",true) == 0)
    {
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return 1;
    new Vehicle = GetPlayerVehicleID(playerid), engine,lights,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(Vehicle, engine, lights, alarm, doors, bonnet, boot, objective);


    GetVehicleParamsEx(Vehicle,engine,lights,alarm,doors,bonnet,boot,objective);
    if(Vehicle != INVALID_VEHICLE_ID)
    {
    if(engine == VEHICLE_PARAMS_ON)
    {
    SetVehicleParamsEx(Vehicle,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
    GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~W~Motor ~r~aus!", 2000, 5);
    }
    else
    {
    SetVehicleParamsEx(Vehicle,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
    GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~W~Motor ~g~an!", 2000, 5);
    }
    }
    return 1;
    }

    Was genau willst du denn haben?
    "das es jede Fraktion abließt" => Was meinst du damit?


    Mache bitte mal ein Beispiel von dem was du haben willst, dann schauen wir ob es möglich ist was du haben willst.

    Schlichtweg ein Klammerfehler.
    Außerdem brauchst du die Schleife:


    forward VehicleHealth();
    public VehicleHealth()
    {
    for(new playerid = 0; playerid < MAX_PLAYERS; playerid++)
    {
    if(IsPlayerConnected(playerid))
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new Float:health;
    new veh = GetPlayerVehicleID(playerid);
    GetVehicleHealth(veh, health);
    if(health > 400)
    {
    SendClientMessage(playerid,0xFF0000FF,"Du hast einen Motorschaden!");
    }
    }
    }
    }
    return 1;
    }


    Du musst dir aber im Klaren darüber sein, dass die Nachricht jede Sekunde kommt, du brauchst also noch eine Variable, die du auf 1 setzt, wenn die Nachricht das erste mal kam.

    Lade dir das nativechecker Plugin herunter und füge es in deinen Server ein. Dann poste den Log der kommt wenn du den Server startest.
    Achte darauf, dass der nativechecker an letzter Stelle bei plugins in der server.cfg steht.

    Am Streamer liegt das nicht, ich denke eher, dass du ein Array sprengst.


    Ändere mal
    format(s, sizeof(s), "%s Base", Fraktionen[FrakBase[i][fbase_fid]][f_name]);
    Zu
    format(s, sizeof(s), "%s Base", Fraktionen[i][f_name])

    1.
    Das geht in der normalen class selection nicht. Du kannst Spielern keine unterschiedlichen Skins anzeigen, sondern allen nur den gleichen Satz an Skins. Wenn du es unterscheiden willst musst du eine eigene class selection, zum Beispiel mit Textdraws zum anklicken, machen.
    Du kannst die Skins aber über den GameText (Punkt 2) rot und grün anzeigen lassen, und bei Rot eben bei OnPlayerRequestSpawn return 0 machen, dann kann man den Skin nicht auswählen.


    2.
    Das würdest du bei OnPlayerRequestClass mit einem switch über classid machen. Case 0 wäre der erste Skin in der Reihe, Case 1 der zweite, und so weiter. Mit GameTextForPlayer zeigst du den GameText an.


    3.
    Flüssige Bewegungen erstellt man hiermit:
    http://wiki.sa-mp.com/wiki/InterpolateCameraPos
    http://wiki.sa-mp.com/wiki/InterpolateCameraLookAt

    Dann mach das testweise mal für 10 oder 20 Objekte, geht es für diese Objekte dann auch? Wenn ja, musst du es eben für alle Objekte machen. Wenn nicht, schicke mir nochmal den Code.
    Aber das ist doch immerhin ein Fortschritt! :thumbup:

    Ja, nur das "id =" kannst du weg machen.


    Es sollen alle Objekte in diesem Format sein:
    CreateDynamicObject(ModelID, X, Y, Z, rx, ry, rz, ... );


    Ohne was davor und ohne was danach.

    Kann es gleich machen ;) sorry für die späte antwort


    Ich habe mir deinen Filterscript angeschaut.


    Du hast einmal CreateDynamicObject und einmal CreateObject. Ändere erst mal ALLE deine Objekte zu CreateDynamicObject.
    Wenn du das gemacht hast, sollte es auch ohne den Code-Teil von mir gehen, soweit ich weiß entfernt der Streamer die Objekte wenn ein Filterscript entfernt wird.


    Außerdem hattest du das "ObjectCreatedInFS" nur an 4 Objekten, von mehreren hunderten.



    Also: Alle zu CreateDynamicObject ändern => ObjectCreatedInFS - Zeugs weg machen => Ausprobieren.
    Wenn es nicht geht, mir nochmal den Code schicken, oder hier posten, wie du willst.