Beiträge von root

    @malE
    Du kannst das eigentlich ziemlich einfach erreichen:


    Code
    new langerText[] = "ICH BIN DER STRING";
    new striche[256];
    printf("%s",langerText);
    for(new i = 0; i < strlen(langerText); i++)
    {
        strcat(striche, "-"); //Strich Hinzufügen
    }
    printf("%s",striche);

    Habs probiert sollte passen. Musst es nurnoch auf deine Variablen anpassen.

    Eher so oder?


    Code
    SetPlayerSkin(pID, f_skins[PlayerInfo[pID][pFraction] - 1][PlayerInfo[pID][pFrank] - 1]);

    Je nach Hersteller kann man anfragen und bekommt eine ISO oder ähnliches.
    Zum Teil kann man den Key einfach auf Steam einlösen ;)

    Aber da nehme ich auch Route um zu wissen welche Strecke es ist geht das nicht auch iwie bei sizeof?

    Denke man kann bei sizeof() nur die Dimensionen auslesen. Vielleicht hat @Kaliber @Jeffry noch eine Idee

    @Kaliber
    Danke für die Info. Länger nicht mehr mit PAWN gearbeitet.


    @The Sensei


    Wie Kaliber schon erwähnte noch das -1 machen da arrays bei 0 anfangen.

    Also wäre

    Code
    sizeof(fscp_streacke1[]) //Strecke 1
    sizeof(fscp_streacke1[][])//Strecke 2



    Ist das so richtig ?
    Wäre es nicht möglich es iwie so auslesen zu können ?

    Code
    Sizeof(fscp_strecke[route])

    Nein Dimensionen sind was anderes.

    Ich bin mir nicht sicher ob du das so angeben kannst:
    Musst du mal probieren, hab länger nicht mehr mit PAWN gearbeitet.


    Code
    sizeof(fscp_strecke[][0]) //Erste Strecke
    sizeof(fscp_strecke[][1]) //Zweite Strecke

    wie kann ich von der 2 Strecke die sizeof auslesen ?Welche Strecke habe ich unter Route gespeichert

    Du kannst in sizeof die Dimensionen mit angeben (glaub ich zumindest).
    Quasi:

    Code
    sizeof(fscp_streacke1) //Gesamt
    sizeof(fscp_streacke1[]) //Erste Dimension
    sizeof(fscp_streacke1[][]) //Zweite Dimension
    sizeof(fscp_streacke1[][][]) //Dritte Dimension

    @The Sensei
    Was genau geht denn nicht / nur ab und zu?

    Moin Leute!
    Ich bin dabei mein Teleport System zu schreiben, Speichern klappt Problemlos, aber das Laden nicht irgendwie.
    Sobald ich den Befehl eingebe, sagt er mir, das keine Teleports vorhanden sei, obwohl in der Datenbank drei Einträge gibt.


    Der Befehl:ocmd:ateleport(playerid, params[]){if(!IstSpielerEinAdmin(playerid,2))return SendClientMessage(playerid, FARBE_WEISS, "[{FF0000}FEHLER{FFFFFF}]: Du hast nicht die Rechte diesen Befehl zu benutzen!");if(!sInfo[playerid][sEingeloggt])return SendClientMessage(playerid, FARBE_WEISS, "[{FF0000}FEHLER{FFFFFF}]: Du bist nicht eingeloggt!");new buffer[512];for(new i; i < MAX_TELEPORTS; i++){if(TeleInfo[i][set] == true){format(buffer, sizeof(buffer), "{FFFFFF}%s%s\n", buffer, TeleInfo[i][tName]);}}if(strlen(buffer) == 0)return SendClientMessage(playerid, FARBE_WEISS, "[{FF0000}FEHLER{FFFFFF}]: Es sind derzeit keine Teleports vorhanden!");ShowPlayerDialog(playerid, DIALOG_TELEPORTS, DIALOG_STYLE_LIST, "{FFFFFF}Teleports", buffer, "Porten", "Abbrechen");return 1;}Die Funktion zum Laden:forward LoadTeleports();public LoadTeleports(){if(cache_get_row_count(MySQL_Handle)){for(new i,y=cache_get_row_count(MySQL_Handle);i<y;i++){TeleInfo[i][tX] = cache_get_field_content_float(i, "tX", MySQL_Handle);TeleInfo[i][tY] = cache_get_field_content_float(i, "tY", MySQL_Handle);TeleInfo[i][tZ] = cache_get_field_content_float(i, "tZ", MySQL_Handle);TeleInfo[i][tInterior] = cache_get_field_content_int(i, "tInterior", MySQL_Handle);TeleInfo[i][tVWorld] = cache_get_field_content_int(i, "tVWorld", MySQL_Handle);cache_get_field_content(i, "tName", TeleInfo[i][tName], MySQL_Handle, 32);TeleInfo[i][set] = true;}}printf("Aktuele Teleports: %i/%i", cache_get_row_count(MySQL_Handle), MAX_TELEPORTS);return 1;}


    Hoffe einer kann mir Helfen, wäre sehr Dankbar!

    Von wo holst du diesen MYSQL_Handler her?
    Du gehts nämlich durch die Rows dieses Handlers durch.


    Hi, ich habe mir ein kleines FilterScript erstellt womit ich in der server_log.txt die Befehle printe die auf meinem Server ausgeführt werden.
    Nun möchte ich das aber in einer seperaten Datei abspeichern, dennoch genau wie in dem folgenden Code ohne Zugriff auf das Gamemode zu haben (sprich nicht in jedem Befehl irgendeine Zeile hinzufügen damit der Befehl geloggt wird).


    Gibt es eine Möglichkeit alle Befehle die ausgeführt werden in einer seperaten Datei abzuspeichern? Aktueller Code schaut so aus, taucht aber wie gesagt nur in der server_log auf.


    public OnPlayerCommandText(playerid, cmdtext[]){ new playername[24]; GetPlayerName(playerid, playername, 24); printf("[CMD LOG]: Command %s(%d): %s", playername, playerid, cmdtext); return 0;}

    Du kannst es z.b so machen:

    Code
    new File:log = fopen("command_log.txt", io_append);
    fwrite(log, "Hier was du loggen willst also zb. cmdtext"); //anpassen
    fwrite(log, "\n");
    fclose(log);

    Der Klammernfehler muss irgendwo in der nähe, sicher über der Zeile des erstens Fehlers.
    D.h. du darfst ab dem ersten Zeile wo ein Fehler ist nach oben gehen und irgendwo da müsste ein Klammernfehler sein.
    Sonst lad den Code mal auf Pastbin oder so hoch und schick die errors.

    Wieso wird das Objekt "wrope" nicht an meinem Auto befestigt und somit das andere Auto und "wobj"? Nein, es kommen keine Erros alles weitere ist vorhanden(Die Schnippsel wie new wobj; oder so)


    if (PRESSED(KEY_NO)){if(IsPlayerInRangeOfPoint(playerid, 2.0, 437.2438,-1806.4763,5.5469)){if(IsPlayerInAnyVehicle(playerid)){wveh = GetPlayerVehicleID(playerid);if(!wohnwagenan){wtrailer = CreateVehicle(607, 0.0000, 0.0000, 0.0000, 0.0000, -1, -1, 100);wobj = CreateDynamicObject(3168, 0.00000, -8.25150, -0.6327, 0.00000, 0.00000, 180.00000);wrope = CreateDynamicObject(19087, 0.00000, -1.07170, -0.27270, 0.00000, 90.00000, 90.00000);AttachDynamicObjectToVehicle(wrope, wveh, 0.00000, -1.07170, -0.27270, 0.00000, 90.00000, 90.00000);AttachDynamicObjectToVehicle(wrope, wtrailer, 0.0000, 3.4823, -0.2727, 0.00000, 90.00000, 90.00000);AttachDynamicObjectToVehicle(wobj, wtrailer, 0.0000, -2.2660, -0.9707, 0.00000, 0.00000, 180.00000);SendClientMessage(playerid, COLOR_WHITE, "Du hast erfolgreich einen Wohnwagen für 500 Dollar an deinem Fahrzeug befestigt!");SendClientMessage(playerid, COLOR_LIGHTBLUE, "[OOC] Drücke hier nochmals 'N' um ihn wieder abzuhängen.");GivePlayerMoney(playerid, -500);wohnwagenan = true;return 1;}else{DestroyVehicle(wtrailer);DestroyDynamicObject(wobj);DestroyDynamicObject(wrope);SendClientMessage(playerid, COLOR_WHITE, "Du hast den Wohnwagen abgekoppelt und zurück gegeben!");wohnwagenan = false;return 1;}}}}

    Code
    AttachDynamicObjectToVehicle(wrope, wveh, 0.00000, -1.07170, -0.27270, 0.00000, 90.00000, 90.00000);
    AttachDynamicObjectToVehicle(wrope, wtrailer, 0.0000, 3.4823, -0.2727, 0.00000, 90.00000, 90.00000);

    Du machst das wrope Object 1x an deinem Auto an und dann am Trailer.
    Denke mal das du wenn du das Objekt am Trailer anmachst somit es vom Auto wieder ablöst.
    Kannst also entweder am Auto oder am Trailer anmachen.

    ocmd:ban(playerid,params[]){if(!isPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,-1,""#error_farbe"Keine Berechtigung");new pID, reason[128],string[555];if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,-1,"Tippe: /ban [id] [grund]");format(string,sizeof(string),"Sie wurden gerade gesperrt da Sie gegen das Regelwerk verstößen haben.\nBitte lesen Sie erneut das Regelwerk damit soetwas nicht erneut passiert.\nWenn Sie denken das die Sperre zu unrecht verhangen wurde melden Sie sich bei dem Ausführendem Admin.\n\nInformationen:\n\nBan-Grund: %s\nAusführerender Admin: %s",reason,PlayerInfo[playerid][pName]);ShowPlayerDialog(playerid,DIALOG_BAN,DIALOG_STYLE_MSGBOX,"Spielausschluss",string,"Okay","");SetTimerEx("kicktimer",200,false,"d",pID);format(string,sizeof(string),""#error_farbe"%s wurde von %s gebannt. Grund: %s",PlayerInfo[pID][pName],PlayerInfo[playerid][pName],reason);SendClientMessageToAll(-1,string);PlayerInfo[pID][pBan] = 1;PlayerInfo[pID][pBanadmin] = PlayerInfo[playerid][pName];BanUser(pID, reason);format(string,sizeof(string),"%s wurde von %s gebannt. Grund: %s",PlayerInfo[pID][pName],PlayerInfo[playerid][pName],reason);Log("BanLog",string);return 1;}


    Er ist doch ein String?


    stock BanUser(pID, reason){new query[256];gettime(stunde,minuten,sekunde);getdate(jahr,monat,tag);mysql_format(handle, query, sizeof(query), "INSERT INTO `accountbans` SET name = '%s', reason = '%s', admin = '%s', date = '%02d.%02d.%04d|%02d:%02d:%02d'",PlayerInfo[pID][pName],reason,PlayerInfo[pID][pBanadmin],tag,monat,jahr,stunde,minuten,sekunde);mysql_pquery(handle, query);return 1;}

    Da der Grund ein String ist muss der Stock wie folgt sein:

    Code
    stock BanUser(pID, reason[128]) //Hier eine grösse
    {
    new query[256];
    gettime(stunde,minuten,sekunde);
    getdate(jahr,monat,tag);
    mysql_format(handle, query, sizeof(query), "INSERT INTO `accountbans` SET name = '%s', reason = '%s', admin = '%s', date = '%02d.%02d.%04d|%02d:%02d:%02d'",
    PlayerInfo[pID][pName],reason,PlayerInfo[pID][pBanadmin],tag,monat,jahr,stunde,minuten,sekunde);
    mysql_pquery(handle, query);
    return 1;
    }

    Zeig mal den Kompletten Befehl der den Stock aufruft.

    Die Fehlercodes waren oben:


    es hat angeblich was mit meinem Stock zutun (selbst erstellt)


    stock BanUser(pID, reason);{new query[256];gettime(stunde,minuten,sekunde);getdate(jahr,monat,tag);mysql_format(handle, query, sizeof(query), "INSERT INTO `accountbans` SET name = '%s', reason = '%s', admin = '%s', date = '%02d.%02d.%04d|%02d:%02d:%02d'",PlayerInfo[pID][pName],reason,PlayerInfo[pID][pBanadmin],tag,monat,jahr,stunde,minuten,sekunde);mysql_pquery(handle, query);return 1;}

    Du musst den Strickpunkt wegnehmen nach dem Stocknamen,



    Code
    stock BanUser(pID, reason)
    {
    new query[256];
    gettime(stunde,minuten,sekunde);
    getdate(jahr,monat,tag);
    mysql_format(handle, query, sizeof(query), "INSERT INTO `accountbans` SET name = '%s', reason = '%s', admin = '%s', date = '%02d.%02d.%04d|%02d:%02d:%02d'",
    PlayerInfo[pID][pName],reason,PlayerInfo[pID][pBanadmin],tag,monat,jahr,stunde,minuten,sekunde);
    mysql_pquery(handle, query);
    return 1;
    }

    WTF? W T F ?!


    Er zeigt in der console die korrekten koordinaten an!


    Habe dann mal SetPlayerPos ge-// und SetSpawnInfo benutzt. Plötzlich bin ich gespawnt. Wie kann das sein?! ABER SetPlayerInterior und VirtualWorld funktioniert nicht, denn ich bin in der Luft gespawnt und unsaft geladent^^

    Du musst beim laden auch noch die Viruelle Welt aus der Datenbankladen.

    //Edit: Korrektur