Beiträge von malE

    Ich habe mich gerade noch ein bisschen mit dem TDEditor beschäftigt und habe herraus gefunden, dass man es simple per TDEditor machen kann.
    Jetzt habe ich eben alle TextDrawTextSize angepasst und nun funktioniert es einwandfrei.


    Trotzdem danke das du versucht hast mir es zu erklären. :love:
    Jetzt können wir mit dem eigentlichen anfangen.

    Dafür musst du die Größe das anklickbaren Bereiches mit TextDrawTextSize anpassen. wiki.sa-mp.com/wiki/TextDrawTextSize
    Der X Wert ist die Position PLUS die Größe des nach rechts anklickbaren Bereiches. Der Y Wert ist die geschätzte Höhe.


    Angenommen du erstellst dein Textdraw bei X = 120 und Y = 90. Dann machst du den Text "Hallo Welt" da rein. Sagen wir, der Text ist so groß, dass er in etwa über ein Zehntel deines Bildschirmes geht (musst du abschätzen, oder mit einem Lineal abmessen), dann heißt das 640 durch 10, das wäre 64. Somit ist TextDrawTextSize-X = 120 + 64 = 184.
    Nun misst, bzw. schätzt, du die Höhe des Textdraws, sagen wir mal du bekommst den Text in etwa 20 mal untereinander hin, bis dein Bildschirm von oben nach unten voll damit wäre. Heißt also: 480 durch 20, das gibt 24. Somit wäre TextDrawTextSize-Y = 24.


    640 und 480 sind die vollen Werte für Breite und Höhe, unabhängig von der Auflösung.

    Diesen Beitrag von dir in einem anderen Beitrag habe ich schon gelesen, leider verstehe ich es auch nicht.

    Hallo ( @Jeffry ),
    ich habe angefangen mit den Grundlagen der Funktion, nun weiß ich leider nicht weiter.
    Ich habe auch schon versucht per Beispiele welche ich durch Google gefunden habe, mir weiter zu helfen, leider erfolglos.


    Es soll so sein, das man nur zwischen den Skins wählen kann die im davor festgelegten Array sind.
    Wenn man dann ein Skin ausgesucht hat und Ihn auswählt, soll noch abgefragt werden ob die PoliceEXP ( eine EXP Variable ) für den Skin ausreicht, wenn nicht soll er den Skin nicht erhalten.


    Hier meine Codes & TextDraws ( bei den TextDraw ist die TextDrawSize noch verbuggt, ich weiß nicht wie ich es entbugge Bsp Bild)
    Ich bitte um eure Hilfe, ich komme nämlich alleine nicht weiter.




    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;
    }