[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
    • Offizieller Beitrag

    Wie frage ich ab ob er den Trailer z.b ID: 435 angehängt hat?

    Erstes Problem soweit behoben?


    Zum Trailer:


    Code
    new trailerid = GetVehicleTrailer(vehicleid);
    new model = GetVehicleModel(trailerid);

    Die Variable model wäre nun die Modelid, sprich: if(model == 435) ...


    Es gibt auch weitere Funktionen:
    http://wiki.sa-mp.com/wiki/AttachTrailerToVehicle
    http://wiki.sa-mp.com/wiki/DetachTrailerFromVehicle
    http://wiki.sa-mp.com/wiki/IsTrailerAttachedToVehicle


    Als Beispiel, falls du die mal brauchst.

  • Problem habe ich behoben auch getestet Funktioniert :D
    habs auch gesehn gehabt das da eine Klammer fehlt :D


    das heißt in der regel
    if(GetVehicleModel(vehicleid) == 515 || GetVehicleModel(vehicleid) == 514 || GetVehicleTrailer(trailerid) == 435)


    wäre das eine möglichkeit?

  • Kurze Frage kann das so stimmen bin mir da nicht so sicher :/

  • Bin sehr begeistert von der Binaersuche im Vergleich zu der Variante mit dem Iterator bei dem Pickupsystem :D


    Bei einem Array mit der Groesse MAX_PICKUPS verdammt schnell


    Bench for iterator: executes, by average, 13.32 times/ms.
    Bench for binarysearch: executes, by average, 2623.24 times/ms.


    Aber warum findet Binaersuche eigentlich so wenig Anwendung in SA-MP Allgemein? Habe gerade mal 1 Thema dazu im englischen SA-MP Forum gefunden.. Gibt doch bestimmt super viele Anwendungen dafuer


  • Ich habe eine frage es funktioniert soweid alles außer das letzte weil der Trailer eine andere ID hat wen ich den ankoppel und /lieferung mache nimmt er es nicht an?


    Warum die ersten beiden Funktionieren?

  • Folgender Befehl, folgende Fehler;



    forward GetAdmins(playerid);
    public GetAdmins(playerid)
    {
    new string[512], header[128], adminrang, name[MAX_PLAYER_NAME], online, OnlineString[32], pYear, pMonth, pDay, pHour, pMinute, pSecond, lastlogin;
    new rows = cache_num_rows();
    for(new i=0;i<rows;i++)
    {
    adminrang = cache_get_field_content_int(i, "Admin");
    lastlogin = cache_get_field_content_int(i, "LastLogin");
    cache_get_field_content(i, "Name", name, myCon, MAX_PLAYER_NAME);
    if(adminrang > 0 && adminrang < 6)
    {
    TimestampToDate(lastlogin, pYear, pMonth, pDay, pHour, pMinute, pSecond, 1, 0);
    online = cache_get_field_content_int(i, "playerOnline");
    if(online == 0)OnlineString=""COLOR_HEX_RED"Offline";
    else if(online == 1)OnlineString=""COLOR_HEX_GREEN"Online";
    format(header, sizeof(header),""COLOR_HEX_WHITE"Team-Mitglied\tStatus\tLetzte Aktivität");
    format(string, sizeof(string),"%s\n%s\n%s %s\t%s\t%02d.%02d.%02d - %02d:%02d:%02d", header, string, GetAdminName(adminrang), name, OnlineString, pDay, pMonth, pYear, pHour, pMinute, pSecond);
    //format(string, sizeof(string), "%s%s %s - %s\t\t", string, GetAdminName(adminrang), name, OnlineString);
    }
    }
    ShowPlayerDialog(playerid, DIALOG_ADMINS, DIALOG_STYLE_TABLIST_HEADERS, "Team-Mitglieder", string, "Schließen", "");
    return 1;
    }


    3 Team-Mitglieder vorhanden, werden alle angezeigt. Jedoch auch 2 mal der header..
    Weiterhin möchte ich gerne, dass sobald das Team-Mitglied online ist, nicht die letzte Aktivität sondern einfach ein "-" angezeigt wird.

  • Ich habe das ganze nicht getestet aber so sollte es gehen ob der Spieler ein Admin ist könntest du im MySQL query auch abfragen



    //Definier das oben im Script damit kannst du abfragen ob ein String leer ist
    #define isnull(%1) \
    ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))


    forward GetAdmins(playerid);


    public GetAdmins(playerid)
    {
    new String[512], header[128], adminrang, name[MAX_PLAYER_NAME], online, OnlineString[32], pYear, pMonth, pDay, pHour, pMinute, pSecond, lastlogin;


    adminrang = cache_get_field_content_int(i, "Admin");
    lastlogin = cache_get_field_content_int(i, "LastLogin");
    cache_get_field_content(i, "Name", name, myCon, MAX_PLAYER_NAME);


    for(new i=0;i<cache_num_rows();i++)
    {
    if(adminrang > 0 && adminrang < 6)
    {
    TimestampToDate(lastlogin, pYear, pMonth, pDay, pHour, pMinute, pSecond, 1, 0);
    online = cache_get_field_content_int(i, "playerOnline");


    if(isnull(String))
    {
    if(online == 0)
    {
    format(string, sizeof(string),""COLOR_HEX_WHITE"Team-Mitglied\tStatus\tLetzte Aktivität\n%s %s\tOffline\t%02d.%02d.%02d - %02d:%02d:%02d", GetAdminName(adminrang), name, pDay, pMonth, pYear, pHour, pMinute, pSecond);
    }
    else if(online == 1)
    {
    format(string, sizeof(string),""COLOR_HEX_WHITE"Team-Mitglied\tStatus\tLetzte Aktivität\n%s %s\tOnline\t-", GetAdminName(adminrang), name);
    }
    }
    else
    {
    if(online == 0)
    {
    format(String, sizeof(String),"%s\n%s %s\tOffline\t%02d.%02d.%02d - %02d:%02d:%02d", GetAdminName(adminrang), name, pDay, pMonth, pYear, pHour, pMinute, pSecond);
    }
    else if(online == 1)
    {
    format(String, sizeof(String),"%s\n%s %s\tOnline\t-", String, GetAdminName(adminrang), name);
    }
    }
    }
    }
    ShowPlayerDialog(playerid, DIALOG_ADMINS, DIALOG_STYLE_TABLIST_HEADERS, "Team-Mitglieder", string, "Schließen", "");
    return 1;
    }


    @Speezy

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Nope, funktioniert leider so gar nicht. Der Dialog ist vollkommen 'verbuggt', wird mir nur ein Team-Mitglied angezeigt und der Team-Rang im HEADER.

    public GetAdmins(playerid)
    {
    new string[512], header[128], adminrang, name[MAX_PLAYER_NAME], online, pYear, pMonth, pDay, pHour, pMinute, pSecond, lastlogin;
    for(new i=0;i<cache_num_rows();i++)
    {
    adminrang = cache_get_field_content_int(i, "Admin");
    lastlogin = cache_get_field_content_int(i, "LastLogin");
    cache_get_field_content(i, "Name", name, myCon, MAX_PLAYER_NAME);
    if(adminrang > 0 && adminrang < 6)
    {
    TimestampToDate(lastlogin, pYear, pMonth, pDay, pHour, pMinute, pSecond, 1, 0);
    online = cache_get_field_content_int(i, "playerOnline");
    if(isnull(string))
    {
    if(online == 0)
    {
    format(string, sizeof(string),""COLOR_HEX_WHITE"Team-Mitglied\tStatus\tLetzte Aktivität\n%s %s\tOffline\t%02d.%02d.%02d - %02d:%02d:%02d", GetAdminName(adminrang), name, pDay, pMonth, pYear, pHour, pMinute, pSecond);
    }
    else if(online == 1)
    {
    format(string, sizeof(string),""COLOR_HEX_WHITE"Team-Mitglied\tStatus\tLetzte Aktivität\n%s %s\tOnline\t-", GetAdminName(adminrang), name);
    }
    }
    else
    {
    if(online == 0)
    {
    format(string, sizeof(string),"%s\n%s %s\tOffline\t%02d.%02d.%02d - %02d:%02d:%02d", GetAdminName(adminrang), name, pDay, pMonth, pYear, pHour, pMinute, pSecond);
    }
    else if(online == 1)
    {
    format(string, sizeof(string),"%s\n%s %s\tOnline\t-", string, GetAdminName(adminrang), name);
    }
    }
    }
    }
    ShowPlayerDialog(playerid, DIALOG_ADMINS, DIALOG_STYLE_TABLIST_HEADERS, "Team-Mitglieder", string, "Schließen", "");
    return 1;
    }

  • Ich habe den String noch nicht gesetzt jetzt sollte es gehen.


    Beispiel:

    format(string, sizeof(string),"%s\n%s %s\tOffline\t%02d.%02d.%02d - %02d:%02d:%02d", GetAdminName(cache_get_field_content_int(i, "Admin")), name, pDay, pMonth, pYear, pHour, pMinute, pSecond);
    zu
    format(string, sizeof(string),"%s\n%s %s\tOffline\t%02d.%02d.%02d - %02d:%02d:%02d", string, GetAdminName(cache_get_field_content_int(i, "Admin")), name, pDay, pMonth, pYear, pHour, pMinute, pSecond);



    #define isnull(%1) \
    ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))


    forward GetAdmins(playerid);


    public GetAdmins(playerid)
    {
    new String[1024], BenutzerName[MAX_PLAYER_NAME], Jahr, Monat, Tag, Stunde, Minute, Sekunde;


    mysql_query(MySQL, "SELECT * FROM `Accounts` WHERE Admin > '0' AND Admin < '6' ORDER BY `Admin` DESC", true);


    for(new i=0;i<cache_num_rows();i++)
    {
    cache_get_field_content(i, "Name", BenutzerName, myCon, MAX_PLAYER_NAME);
    TimestampToDate(cache_get_field_content_int(i, "LastLogin"), Jahr, Monat, Tag, Stunde, Minute, Sekunde, 1, 0);


    if(isnull(String))
    {
    if(cache_get_field_content_int(i, "playerOnline") == 0)
    {
    format(String, sizeof(String),"Team-Mitglied\tStatus\tLetzte Aktivität\n\%s %s\tOffline\t%02d.%02d.%02d - %02d:%02d:%02d", GetAdminName(cache_get_field_content_int(i, "Admin")), BenutzerName, Tag, Monat, Jahr, Stunde, Minute, Sekunde);
    }
    else if(cache_get_field_content_int(i, "playerOnline") == 1)
    {
    format(String, sizeof(String),"Team-Mitglied\tStatus\tLetzte Aktivität\n\%s %s\tOnline\t-", GetAdminName(cache_get_field_content_int(i, "Admin")), BenutzerName);
    }
    }
    else
    {
    if(cache_get_field_content_int(i, "playerOnline") == 0)
    {
    format(String, sizeof(String),"%s\n\%s %s\tOffline\t%02d.%02d.%02d - %02d:%02d:%02d", String, GetAdminName(cache_get_field_content_int(i, "Admin")), BenutzerName, Tag, Monat, Jahr, Stunde, Minute, Sekunde);
    }
    else if(cache_get_field_content_int(i, "playerOnline") == 1)
    {
    format(String, sizeof(String),"%s\n\%s %s\tOnline\t-", String, GetAdminName(cache_get_field_content_int(i, "Admin")), BenutzerName);
    }
    }
    }
    ShowPlayerDialog(playerid, DIALOG_ADMINS, DIALOG_STYLE_TABLIST_HEADERS, "Team-Mitglieder", String, "Schließen", "");
    return 1;
    }


    //Edit jetzt geht es, und mit der Methode sollte es auch ohne Public gehen.


    @Speezy

    Einmal editiert, zuletzt von Lukaz ()

  • Guten Abend zusammen,
    der Liebe @Jeffry hatte doch mal ein Stock Geschrieben um das Geburtsjahr auszulesen.
    Sprich, das man bei der Registration so ein Format nutzen musste: 01.01.1990, hat dies vielleicht noch einer oder kann mir die Funktion
    zukommen lassen?


    MfG.
    Aaron!

    Die Missglückte Persönlichkeit, Ciao!

  • Beitrag von xPatrick ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Hallo,


    Ich habe ein Problem beim Offline arresten.


    Die nachtricht kommt das ich den User eingesperrt habe aber wen er wider drauf kommt spawnt er ganz normal?
    und die Wanteds bleiben auch normal?

  • Danke hat 1A funktioniert :)


    Habe noch ein anderes Problem:


    Ich möchte den Zustand sowie die Geschwindigkeit im Textdraw zeigen lassen habe jetzt schon folgendes:


    GetPlayerSpeed(playerid){new Float:x, Float:y, Float:z,Float:rtn;if(IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid),x,y,z); else GetPlayerVelocity(playerid,x,y,z);rtn = floatsqroot(x*x+y*y+z*z);return floatround (rtn * 100*1.61);}for(new i;i<MAX_PLAYERS;i++){if(IsPlayerInAnyVehicle(i)){new string;format(string,sizeof(string),"%d km/h",GetPlayerSpeed(playerid,true));TextDrawSetString(TachoTXT[10][i], string);// In diesen Puplic wird der Tacho angezeigt wenn er im Fahrzeug ist....


    Bekomme jedoch 3 Errors


    C:\Users\xPaddz\Desktop\Selfmade\gamemodes\Roleplay.pwn(1458) : warning 219: local variable "string" shadows a variable at a preceding level
    C:\Users\xPaddz\Desktop\Selfmade\gamemodes\Roleplay.pwn(1459) : error 035: argument type mismatch (argument 1)
    C:\Users\xPaddz\Desktop\Selfmade\gamemodes\Roleplay.pwn(1459) : error 035: argument type mismatch (argument 1)
    C:\Users\xPaddz\Desktop\Selfmade\gamemodes\Roleplay.pwn(1460) : error 035: argument type mismatch (argument 2)
    C:\Users\xPaddz\Desktop\Selfmade\gamemodes\Roleplay.pwn(1458) : warning 203: symbol is never used: "string"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


    Einmal editiert, zuletzt von xPatrick ()

  • Beitrag von Dr. Frauenarzt ()

    Dieser Beitrag wurde vom Autor gelöscht ().