Beiträge von malE

    Wenn du willst das nur der Fahrer gekickt wird, musst du davor abfragen ob playerid als passenger einsteigt.

    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(!ispassenger)
    {
    new Float:health;
    new name[MAX_PLAYER_NAME], string[50+MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    if(health > 995)
    format(string, sizeof(string), "%s has been banned by the System for Vehicle Health Hack.", name);
    SendClientMessageToAll(RED,string);
    GetVehicleHealth(vehicleid, health);
    SetVehicleHealth(vehicleid, 995);
    Kick(playerid);
    }
    return 1;
    }

    if(IsCopCarEx(GetPlayerVehicleID(playerid)) != 1 || PoliceEquip[playerid][pe_Funkgerat] == false)return SendClientMessage(playerid, COLOR_GREY, " Du bist in keinem Polizeifahrzeug oder du hast kein Funkgerät.");
    Wenn ich ein Funkgerät habe kommt trotzdem die Fehlermeldung.
    Es soll aber nur so sein:
    Kein Funkgerät & in keinem Polizei Auto = Fehler.

    Dein Code funktioniert nur wenn ich das Fahrzeug mit einem Befehl respawne.
    Also es ist nicht von Anfang an verschlossen, sondern nur wenn ich es mit dem Befehl respawne.


    Ergo: Fahrzeug beim erstellen nicht verschlossen - respawne ich stattdessen ein Privatfahrzeug mit einem Befehl wird das Fahrzeug verschlossen gespawnt, dank dein Code.
    Aber es soll ja von Anfang an verschlossen spawnen.

    @Jeffry dein Code funktioniert, nur dann wenn ich das Fahrzeug schon einmal in dem Fall mit meinem Befehl respawne.


    @Bluescreen sowie ich es getestet habe, wird das Fahrzeug auch nicht direkt nach dem erstellen respawnt.
    stock CreateVehicleEx(model, Float:x, Float:y, Float:z, Float:r, color, color2, respawndelay, siren)
    {
    new id = CreateVehicle(model, x, y, z, r, color, color2, respawndelay, siren);
    SetVehicleToRespawn(id);
    return 1;
    }

    Zu diesem public, da lasse ich mir printen ob die Variable wirklich auf true ist, laut dem print schon.
    forward OnPlayerVehiclesLoad(playerid);
    public OnPlayerVehiclesLoad(playerid)
    {
    new num_fields, num_rows;
    cache_get_data(num_rows, num_fields, handle);
    if(!num_rows)return 1;
    for(new i=0; i < num_rows; i++)
    {
    VehicleInfo[i][v_Besitzer] = cache_get_field_content_int(i, "besitzer", handle);
    VehicleInfo[i][v_Model] = cache_get_field_content_int(i, "model", handle);
    VehicleInfo[i][v_Color1] = cache_get_field_content_int(i, "color1", handle);
    VehicleInfo[i][v_Color2] = cache_get_field_content_int(i, "color2", handle);
    VehicleInfo[i][v_X] = cache_get_field_content_float(i, "x", handle);
    VehicleInfo[i][v_Y] = cache_get_field_content_float(i, "y", handle);
    VehicleInfo[i][v_Z] = cache_get_field_content_float(i, "z", handle);
    VehicleInfo[i][v_R] = cache_get_field_content_float(i, "r", handle);
    VehicleInfo[i][v_Schloss] = bool:cache_get_field_content_int(i, "schloss", handle);
    VehicleInfo[i][v_ID] = cache_get_field_content_int(i, "id", handle);
    printf("Schloss: %d", VehicleInfo[i][v_Schloss]);
    if(VehicleInfo[i][v_Model] >= 400 && VehicleInfo[i][v_Model] <= 611) {
    VehicleInfo[i][v_DLID] = CreateVehicle(VehicleInfo[i][v_Model], VehicleInfo[i][v_X], VehicleInfo [i][v_Y], VehicleInfo[i][v_Z], VehicleInfo[i][v_R], VehicleInfo[i][v_Color1], VehicleInfo[i][v_Color2], -1, 0);
    } else{
    printf("[FEHLER] Fahrzeug-Model %d existiert nicht (DB-ID: %d).", VehicleInfo[i][v_Model], i);
    }
    }
    return 1;
    }

    Habe es provisorisch mit einem Befehl gemacht, weil ich in der Wiki gelesen habe das, dass public OnVehicleSpawn nur Aufgerufen wird wenn ein Fahrzeug respawnt wird.
    ocmd:vehrespawn(playerid,params[])
    {
    if(PlayerInfo[playerid][p_Admin] < 3)return 1;
    new id;
    if(sscanf(params, "i", id))return SendClientMessage(playerid, COLOR_GREY, "Benutze: /vehrespawn [Fahrzeug-ID]");
    if(!IsValidVehicle(id))return SendClientMessage(playerid, COLOR_GREY, " | Ungültige Fahrzeug-ID angegeben.");
    SetVehicleToRespawn(id);
    SendClientMessage(playerid, COLOR_ADMCMD, "[AdmCmd] Fahrzeuge wurde respawnt.");
    return 1;
    }
    Wenn ich damit das Fahrzeug respawne werden mir auch die Infos geprintet, aber das Fahrzeug bleibt halt immer noch aufgeschlossen.

    Das komische ist das, dass ganze nicht einmal aufgerufen wird, bzw. es wird nichts geprintet.


    //E:


    Naja wenn ich das Fahrzeug respawne ( SetVehicleToRespawn ) wird das geprintet.
    [20:14:42] Schloss: 1 // Wird beim erstellen des Fahrzeugs geprintet - also Schloss ist true


    OnVehicleSpawn
    [20:14:54] Schloss == false
    [20:14:54] Türen: 0

    Fahrzeug wird offen gespawnt, obwohl die Variable true ist.
    Habe mir auch die Variable printen lassen, die ist zu 100% true.
    public OnVehicleSpawn(vehicleid)
    {
    new engine, lights, alarm, doors, bonnet, boot, objective;
    if(VehicleInfo[vehicleid][v_Schloss] == true) {
    GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
    doors = 1; // Türen werden geschlossen
    }else{
    GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
    doors = 0; // Türen werden geöffnet
    }
    SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
    return 1;
    }

    Sobald ich TextDraw TeamTextDraw[4], TextDraw TeamTextDraw[6] und TextDraw TeamTextDraw[11] drücke, wird der Mauszeiger immer noch angezeigt, obwohl ich es ausschalte.

    public OnPlayerClickTextDraw(playerid, Text:clickedid)
    {
    if(_:clickedid == INVALID_TEXT_DRAW)return SelectTextDraw(playerid, 0x00FF00FF);
    if(clickedid == TeamTextDraw[4])
    {
    if(PlayerInfo[playerid][p_Team] == 1)return SendClientMessage(playerid, COLOR_GREY, " Du gehörst schon zum Team der Gangster.");
    PlayerInfo[playerid][p_Team] = 1;
    SendClientMessage(playerid, COLOR_RED, " Du hast dich für den Gangster entschieden.");
    CancelSelectTextDraw(playerid);
    for(new i=0; i < 12; i++)TextDrawHideForPlayer(playerid, TeamTextDraw[i]);
    return 1;
    }
    if(clickedid == TeamTextDraw[6])
    {
    if(PlayerInfo[playerid][p_Team] == 2)return SendClientMessage(playerid, COLOR_GREY, " Du gehörst schon zum Team der Polizsten.");
    PlayerInfo[playerid][p_Team] = 2;
    SendClientMessage(playerid, COLOR_BLUE, " Du hast dich für den Polizisten entschieden.");
    CancelSelectTextDraw(playerid);
    for(new i=0; i < 12; i++)TextDrawHideForPlayer(playerid, TeamTextDraw[i]);
    return 1;
    }
    if(clickedid == TeamTextDraw[11])
    {
    for(new i=0; i < 12; i++)TextDrawHideForPlayer(playerid, TeamTextDraw[i]);
    CancelSelectTextDraw(playerid);
    return 1;
    }
    return 1;
    }

    Sobald ich ein TextDraw ausgewählt habe, wird der Mauszeiger immer noch angezeigt, obwohl ich es ausschalte.

    public OnPlayerClickTextDraw(playerid, Text:clickedid)
    {
    if(_:clickedid == INVALID_TEXT_DRAW)return SelectTextDraw(playerid, 0x00FF00FF);
    if(clickedid == TeamTextDraw[4])
    {
    PlayerInfo[playerid][p_Team] = 0;
    SendClientMessage(playerid, COLOR_RED, " Du hast dich für den Gangster entschieden.");
    CancelSelectTextDraw(playerid);
    for(new i=0; i < 11; i++)TextDrawHideForPlayer(playerid, TeamTextDraw[i]);
    return 1;
    }
    if(clickedid == TeamTextDraw[6])
    {
    PlayerInfo[playerid][p_Team] = 1;
    SendClientMessage(playerid, COLOR_BLUE, " Du hast dich für den Polizisten entschieden.");
    CancelSelectTextDraw(playerid);
    for(new i=0; i < 11; i++)TextDrawHideForPlayer(playerid, TeamTextDraw[i]);
    return 1;
    }
    return 1;
    }