Beiträge von Jeffry

    Um Nachrichten zu empfangen ob jemand Gestorben ist muss mann erst in den Dienst Tretten wer es da ideal für die Abfrage aber du meinst ya was anderes.[/font]


    Ich meine was anderes? Ich weiß nicht genau was du jetzt meinst. Du musst die CallRemoteFunction dort aufrufen, wo du im GameMode dem Spieler die pJob Variable auf 33 setzt. Wo das ist weiß ich nicht.


    Du kannst den Code ja auch mal posten, wo du pJob auf 33 setzt.

    @[GeD]Max:

    andere Unterschiede hab ich noch nicht festgestellt. Bin für neues gerne offen :D


    Der Hauptunterschied ist der, dass public's mit CallRemoteFunction / CallLocalFunction und vor allem von Timern aufgerufen werden können.
    Stocks hingegen können Arrays zurückgeben, das kann man mit einem public nicht, ebenso können keine Standartwerte in den Parametern von public's eingebaut werden (=optionale Parameter).



    DeaN Hunter:
    Das sollte eigentlich so klappen. Aber versuche mal:
    CreateObject(8390, 1472.90002, -2540.19995, 31.9, 0, 0, 270,150.0);


    Sicher, dass es nicht CreateDynamicObject ist?

    Wenn ich deinen Aufbau richtig verstanden habe, muss es so aussehen:
    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)
    {
    for(new i=0; i<MaxVeh; i++)
    {
    if(PlayerCar[playerid][i][CarId] == Vehicle)
    {
    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;
    }
    }
    return SendClientMessage(playerid, 0xFF0000FF, "Fahrzeug gehört nicht dir!");
    }
    return 1;
    }

    Willkommen in der Scripting Base!


    Füge unter den Includes folgende Zeile ein:
    #pragma dynamic 100000


    Falls die Meldung nicht weg geht, erhöhe die Zahl etwas. Wenn die Meldung weg ist, versuche ob der Dialog angezeigt wird. Oft liegt es an dieser Nachricht.

    DMW007:
    forward Float:mysql_GetFloat(Table[], Field[], Where[], Is[]);
    stock Float:mysql_GetFloat(Table[], Field[], Where[], Is[])
    {
    new query[128], Float:sqlfloat;
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Is, Is);
    format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_float(sqlfloat);
    mysql_free_result();
    return sqlfloat;
    }


    Die Fehlermeldung bedeutet, dass du keine Funktion mit Tag Resultat (also Float) vor deren Definition verwenden darfst. Indem du die Funktion forwardest umgehst du das.


    Alternativ könnte der stock in eine Include gepackt werden, oder direkt unter den Includes definiert werden. Mit forward ist es aber am geschicktesten.

    Was hat denn bei dir nicht geklappt? Die beiden Editoren, oder das Einfügen der ausgegebenen Codes?
    Wenn ersteres, was hat da nicht funktioniert?
    Wenn letzteres, dann poste bitte die Codes die nicht gehen.


    Hast du auch die aktuelle SAMP Server Version?

    Schreibe es mal so:
    ocmd:mv(playerid,params[])
    {
    if(!IsPlayerInRangeOfPoint(playerid,8.0,1544.69165, -1630.95276, 13.08530))return 1;
    {
    SendClientMessage(playerid,FARBE_WEISS,"Die Schranke ist Geöffnet! In 7 Sekunden schließt sie sich Automatisch!");
    MoveSchranke(Tore[0]);
    SetTimerEx("TorTimer",7000,false,"d",0);
    }
    if(!IsPlayerInRangeOfPoint(playerid,8.0,1591.73621, -1638.06018, 12.41790))return 1;
    {
    SendClientMessage(playerid,FARBE_WEISS,"Das Tor ist Geöffnet! In 7 Sekunden schließt sich Tor Automatisch!");
    MoveObject(Tore[1],1584.51758, -1637.96497, 12.41790,5.8,0.00000, 0.00000, 0.00000);
    SetTimerEx("TorTimer",7000,false,"d",1);
    }
    return 1;
    }


    public TorTimer(id)
    {
    if(id == 0) return MoveSchranke(Tore[0]);
    if(id == 1) return MoveObject(Tore[1], ...Startposition von Tore[1] ...);
    return 1;
    }

    @DevdogVideos: Da ich die Funktionen nicht kenne kann ich dir auch nicht sagen wie du sie zu verwenden hast. Wenn, dann solltest du sie posten.


    @[GeD]Max:
    Welche Variable wird mit dem enum SpielerTimeBanned verbunden? (Suche nach [SpielerTimeBanned] und poste das).
    Außerdem solltest du, und das sage ich nicht zu ersten mal, für solche Probleme einen Thread erstellen, da das definitiv keine kleine Scripting Frage ist.

    Dann hat dein Gamemode ein Problem an einer anderen Stelle, denn der Code ist 100% korrekt.
    Du kannst es ja in dem Filterscript laufen lassen.


    Wenn du dann dem Spieler einen Job gibst, setzt du die Variable auch in dem Filterscript über CallRemoteFunction.


    Beispiel:
    Im GM:
    CallRemoteFunction("SetJob", "dd", playerid, 33);



    Im FS:
    forward SetJob(playerid, job);
    public SetJob(playerid, job)
    {
    PlayerInfo[playerid][pJob] = job;
    return 1;
    }

    Nein, das enum hilft dir um die Schranken zu verwalten. Du erstellst dann zweidimensionales Array, die erste Dimension greift auf die Schrenken ID zu und die zweite auf die Eigenschaften, sprich das enum, zu.


    Arbeite dich durch das Tutorial, dort ist es schön erklärt wie du es machen musst. Ich kann nur das wiederholen was dort steht.

    @[GeD]Max: So wie es aussieht, schreibst du in die Platzhalter die enum-Werte rein, und nicht die Variablen. Poste mal wie du das enum und die dazugehörige Variable deklariert hast. Oder behebe das Problem gleich, wenn du weißt was ich meine.
    Die andere Warnung kommt, weil du die Variable nie verwendest, sprich die Zeit nicht weiter verarbeitest.


    @DevdogVideos:
    Du gibst nirgends an, ob die Schranke hoch oder runter gehen soll. Außerdem gibst rufst du mit dem Timer der bei ! gestartet wird das Objekt von 0 auf. Um dir zu helfen bräuchte man auch noch die fehlenden Funktionen MoveSchranke und SetSchranke. Oder du versuchst dies erstmal selbst umzusetzen, vielleicht bekommst du es ja schon hin.

    Klar, mit dem Job geht es natürlich nicht, wenn es in einem extra Filterscript ist. Der ist ja nur zum testen gedacht.
    Wenn du es jetzt bei dir einfügen willst in den Code (ist eigentlich 1:1 der Code den du hast), dann kannst du das machen, aber lass das hier weg:


    #define COLOR_GREY 0xAAAAAAFF
    enum pData {
    pJob
    };
    new PlayerInfo[MAX_PLAYERS][pData];


    Die Deklarationen hast du ja schon.

    Also ich habe das gerade mal bei mir getestet:
    #include <a_samp>


    #define COLOR_GREY 0xAAAAAAFF
    enum pData {
    pJob
    };
    new PlayerInfo[MAX_PLAYERS][pData];


    forward IsARomero(carid);
    public IsARomero(carid)
    {
    new modelid = GetVehicleModel(carid);
    if(modelid == 442)
    {
    return 1;
    }
    return 0;
    }



    public OnFilterScriptInit()
    {
    return 1;
    }


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    printf("IsARomero: %d | playerid: %d | model: %d", IsARomero(GetPlayerVehicleID(playerid)), playerid, GetVehicleModel(GetPlayerVehicleID(playerid)));
    printf("Job: %d | NPC: %d", PlayerInfo[playerid][pJob], IsPlayerNPC(playerid));
    if(IsARomero(GetPlayerVehicleID(playerid)))
    {
    if(PlayerInfo[playerid][pJob] != 33 || IsPlayerNPC(playerid))
    {
    printf("Entfernt.");
    SendClientMessage(playerid,COLOR_GREY," Du bist kein bestatter !");
    RemovePlayerFromVehicle(playerid);
    return 1;
    }
    }
    return 1;
    }


    Log:

    Zitat

    [11/11/2014 20:02:21] IsARomero: 1 | playerid: 16 | model: 442
    [11/11/2014 20:02:21] Job: 0 | NPC: 0
    [11/11/2014 20:02:21] Entfernt.


    Klappt einwandfrei.


    Erstelle das bei dir mal als Filterscript und teste es dann.