Beiträge von Jeffry

    Ne, das mit dem Standard setzen find ich bescheuert..weil ist ja eh immer XYZ1234 oder sowas..und man kann ja einfach prüfen ob die Funktion was leeres wiedergibt, dann setzt man halt das Standard Ding..ansonsten das Nummernschild, das wesentlich effizienter

    Das macht aber nicht immer Sinn.
    Angenommen in einem Dialog möchte ich alle Fahrzeuge mit deren Nummernschild anzeigen, habe aber nie SetVehicleNumberPlate genutzt. Dann gibt der Dialog nichts aus, oder, wenn man dort dann das Nummernschild setzt, ändert es sich weg vom Standard (wäre reiner Zufall das gleiche Schild zu bekommen).


    CreateVehicle (etc) zu hooken und dort ein random Kennzeichen zu genererieren macht den Code nicht wirklich uneffizienter. Ob man das jetzt selbst im eigenen Code macht, oder es in der Include steht, spielt keine Rolle, nur dass letzteres weniger Aufwand für den User ist und ersterem gegenüber effizienter ist, da ein Funktionsaufruf weniger notwendig wird.


    Um immer richtige Ergebnisse zu bekommen gehört das meiner Meinung nach dazu.

    Hier gerade mal aus dem Kopf geschrieben:

    DestroyVehicle sollte ebenfalls gehookt werden.
    Erstellt man beispielsweise Fahrzeug ID 1, setzt dessen Nummernschild zu "Hallo", löscht das Fahrzeug und erstellt ein neues Fahrzeug (wieder ID 1), ohne dessen Nummernschild zu setzen (Standard Nummernschild), dann wird dennoch "Hallo" zurück gegeben.


    Allgemein werden die Standardnummernschilder gar nicht erkannt. CreateVehicle (etc) zu hooken und dort direkt ein eigenes Random-Nummernschild zu setzen wäre am besten.

    Ich hab grade gesehen, dass ich in der Schleife die falsche Variable mitkopiert habe (i anstatt id).
    Versuche es so:
    ocmd:motor(playerid,params[])
    {
    if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER)return
    SendClientMessage(playerid,COLOR_RED,"Du bist nicht der Fahrer eines Fahrzeugs.");
    new Vehicle = GetPlayerVehicleID(playerid), engine,lights,alarm,doors,bonnet,boot,objective;

    //Fahrschule
    if(IsAFahrschule(Vehicle))
    {
    if(PlayerInfo[playerid][pFahrschulmotor]==0)
    {
    SendClientMessage(playerid,COLOR_RED,"Es findet kein Termin in der Fahrschule statt.");
    return 1;
    }
    GetVehicleParamsEx(Vehicle, engine,lights,alarm,doors,bonnet,boot,objective);
    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);
    DestroyVehicle(playerid);
    }
    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);
    format(LastDriver[Vehicle],50,"%s",getPlayerName(playerid));
    PlayerInfo[playerid][pFahrschulmotor]=0;
    }
    return 1;
    }

    //Bus
    if(IsAbus(Vehicle) && PlayerInfo[playerid][pJob] == 1)
    {
    GetVehicleParamsEx(Vehicle, engine,lights,alarm,doors,bonnet,boot,objective);
    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);
    format(LastDriver[Vehicle],30,"%s",getPlayerName(playerid));
    }
    return 1;
    }

    //Private Fahrzeuge
    for(new id = 0; id < sizeof(cInfo); id++)
    {
    if(cInfo[id][id_x] == Vehicle)
    {
    if(cInfo[id][besitzer] == PlayerInfo[playerid][p_id])
    {
    GetVehicleParamsEx(Vehicle, engine,lights,alarm,doors,bonnet,boot,objective);
    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);
    }
    }
    else
    {
    SendClientMessage(playerid, 0xFF0000FF, "Dieses Fahrzeug gehört nicht dir.");
    }
    return 1;
    }
    }
    return 1;
    }
    Falls du das bereits abgeändert hattest, sitzt du im Fahrzeug?

    Du musst die Position relativ zur Erstell-Position minimal ändern.
    Sprich, wenn die Koordinaten den Erstellungsdaten entsprechen, dann so:
    MoveDynamicObject(LSPDObj[0], 1544.6968, -1630.8386 + 0.1, 13.1008, 0.01, 0.0, 0.0, 90.0);


    Das "+0.1" ist die minimale Positionsänderung. Die brauchst du nur beim Öffnen, beim schließen geht es dann ja wieder in die Ausgangsposition zurück, sprich "-1630.8386".
    Die "0.01" im fünften Parameter ist die Geschwindigkeit. Falls zu schnell/langsam, passe dies an (mehr = schneller).


    SetDynamicObjectRot darfst du dabei nicht nutzen, sonst wird es sofort gesetzt.

    Wie ersetze ich mysql_store_result und mysql_free_result ?


    Korrekt sieht das so aus:
    stock FreeFrakCheck()
    {
    new query[128], rows;
    for(new i;i<MAX_FRACTION_CARS;i++)
    {
    mysql_format(handle,query,sizeof(query),"SELECT * FROM frakcars WHERE id='%i'",i);
    mysql_query(handle,query);
    cache_get_row_count(rows);
    if(rows == 0) return i;
    }
    return -1;
    }


    [plugins/mysql] duplicate connection detected: handle id 1 already exists


    Eventuell lädst du etwas zwei mal. Der MySQL Log wäre hier hilfreich.

    In Zeile 20 ist das return 1 falsch, das musst du entfernen.
    Besser schreibst du den Code aber so, das ist übersichtlicher:
    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == PLAYER_STATE_DRIVER)
    {
    new vid = GetPlayerVehicleID(playerid);
    for(new i = 0; i<sizeof(mcars); i++)
    {
    if(vid == mcars[i])
    {
    if(!IstSpielerInFraktion(playerid, 3))
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,ROT,"Du bist nicht beim den Medics!");
    }
    return 1;
    }
    }
    for(new i = 0; i<sizeof(lvpdcars); i++)
    {
    if(vid == lvpdcars[i])
    {
    if(!IstSpielerInFraktion(playerid, 1))
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,ROT,"Du bist nicht beim PD!");
    }
    return 1;
    }
    }
    }
    return 1;
    }

    Das kannst du so machen:


    ocmd:motor(playerid,params[])
    {
    if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER)return
    SendClientMessage(playerid,COLOR_RED,"Du bist nicht der Fahrer eines Fahrzeugs.");
    new Vehicle = GetPlayerVehicleID(playerid), engine,lights,alarm,doors,bonnet,boot,objective;

    //Fahrschule
    if(IsAFahrschule(Vehicle))
    {
    if(PlayerInfo[playerid][pFahrschulmotor]==0)
    {
    SendClientMessage(playerid,COLOR_RED,"Es findet kein Termin in der Fahrschule statt.");
    return 1;
    }
    GetVehicleParamsEx(Vehicle, engine,lights,alarm,doors,bonnet,boot,objective);
    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);
    DestroyVehicle(playerid);
    }
    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);
    format(LastDriver[Vehicle],50,"%s",getPlayerName(playerid));
    PlayerInfo[playerid][pFahrschulmotor]=0;
    }
    return 1;
    }

    //Bus
    if(IsAbus(Vehicle) && PlayerInfo[playerid][pJob] == 1)
    {
    GetVehicleParamsEx(Vehicle, engine,lights,alarm,doors,bonnet,boot,objective);
    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);
    format(LastDriver[Vehicle],30,"%s",getPlayerName(playerid));
    }
    return 1;
    }

    //Private Fahrzeuge
    for(new id = 0; id < sizeof(cInfo); id++)
    {
    if(cInfo[id][id_x] == Vehicle)
    {
    if(cInfo[id][besitzer] == PlayerInfo[playerid][p_id])
    {
    GetVehicleParamsEx(Vehicle, engine,lights,alarm,doors,bonnet,boot,objective);
    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);
    }
    }
    else
    {
    SendClientMessage(playerid, 0xFF0000FF, "Dieses Fahrzeug gehört nicht dir.");
    }
    return 1;
    }
    }
    return 1;
    }

    weißt du nicht zu wo er den nächsten idx raus nehmen soll.

    idx ist eine Zahl (kommt aus der Schleife), daher geht das. Er speichert den Wert der FraktionsKasse mit dem Index "idx" in den Datensatz mit der fID "idx".
    Also zum Beispiel: FraktionsKasse[1] und fID = 1.




    Eine Idee wieso ich jetzt Tag mismatch bei pquery Zeile bekomme ..

    mysql_pquery(handle,query, false, "", "");
    zu:
    mysql_pquery(handle,query, "", "");


    http://wiki.sa-mp.com/wiki/MySQL/R40#mysql_pquery