Beiträge von IPrototypeI


    Sry BlackAce aber deine variante sollte man nicht umbedingt nutzen sscanf bietet diese funktion schon und man hat auch die möglichkeit eigene specifer zu erstellen



    SSCANF:beispiel (string []){


    }



    So nur gibt es schon diese zwei specifer vorgefertigt



    sscanf (params,"k <vehicle>", vehicleid);



    Dasselbe geht auch mit den waffen nur statt vehicle weapon
    nehmen


    Also man kann jetzt nicht schreiben aber noch Befehle ausführen ?(



    OnPlayerText bezieht sich auf Textnachrichten
    OnPlayerCommandText auf Befehle, Befehle werden an dem / erkannt und demnach OnPlayerCommandText zugewiesen .



    wird bei OnPlayerCommandText 0 returnt so bekommt der Spieler die Message Unknown Command , bei OnPlayerText wird einfach nix im chat ausgegeben.


    Nutzt du ein CMD prozessor ist es so das OnPlayerCommandText gehookt wird bedeutet erst wird die gehookte Funktion aufgerufen danach das normale Callback.

    IPrototypeI:
    Du hast Punkt 4 vergessen.
    Das Pushen von Beiträgen ist erst nach 48 Stunden erlaubt. ;)


    Stimmt Rocky :D



    Dieser Beitrag wurde bereits 8 mal editiert, zuletzt von »Ch4oS« (Heute, 13:32)


    am besten noch das erneuern von beiträgen aussschalten sonst gibts noch eine Verwarnung :D

    Punk 1: Du kannst nur 1000 Objecte maximal pro spieler einstreamen in einer area ^^.
    Punkt 2: Erstelle keine Objekte via CreateObject, das reduziert die möglichkeit der einzustreamenden Objekte.
    Punkt 3: Die Streamdistance gibt den umkreis an in dem das Objekt für den Spieler erstellt wird, die Drawdistance ist heir wichtiger diese sorgt dafür das das Objekt auch nach 300 meter sichtbar ist
    daher Streamdistance = Drawdistance soll bedeuten nutze den selben wert von der Streamdistance auch für die Drawdistance.



    Normal sollte das alles ohne probleme funktionieren als Beispiel meine Stadthallenmap

    Cache nützt hier nicht viel, ebenso wie die parallelen/threaded queries.


    Naja würde ich nicht wirklich behaupten im generieren vom String , welcher die Namen enthält hast du mit der cache funktion erhebliche vorteile in der performance.
    Da du die ausgelesenen Daten temporär zwischenspeichern kannst über das Plugin.


    //edit


    Zur Include, also die Idee ist ganz nett, die umsetzung meiner Meinung nach naja also Verbesserungswürdiges gibt es genug, aber für das Forum hier langt es.

    Bei einem normalen String kannst du den jeweiligen zweiten index nicht ändern, da dieser Schreibgeschützt ist nach Microsoft Visual, daher benötigen wir einen String der mit Stringbuild deklariert wurde.
    Einfache Anführungszeichen werden bei einzelnen Zeichen (chars) genutzt , die doppelten bei einem String also eine Zeichekette mit mehreren Zeichen.

    Saphire


    Wenn du Texturen texturierst , so solltest du danach /saveobj eingeben um die ganzen daten zu speichern natürlich werden diese auch autmatisch geupdatet jedoch erst nach 10 Minuten.
    Das Problem mit dem konvertieren ist recht seltsam das sollte sich nicht ergeben, wenn man die richtige Bezeichung eingibt.
    Sollte das Problem trotz eines Updates noch bestehen so kann ich gerne mal via Teamviewer drüber schauen.

    Meiner Meinung nach sind die Leute , welche verarscht werden selbst schuld, da man anhand vom ersten Eindruck entscheiden kann ob der Verkäufer vertrauensvoll ist oder nicht oder generel an der Kaufabwicklung.


    Ich biete selbst Dienstleistungen an und verlange erst das Geld , wenn ich die Produkte fertiggestellt habe natürlich gehe ich das Produkt vor dem Kauf nochmals durch.

    Weil das was du gemacht hast wieder im großen und ganzen Scheiße war


    Alles was du geändert und hinzugefügt bis zeile 4 ist Top.
    Der Rest einfach nur nosense shit.


    Wie ich bereits in Skype auch erwähnt habe beschäftigst du dich nicht mit der Materie und überlegst deine Schritte, sondern schreibst einfach nur Müll zusammen, du gibst dir nicht einmal die Mühe den Code zu analysieren, welcher dir gepostet wurde.

    Aber, es ging bevor das /carlock funktionierte .. :<


    Ich weiß ja nicht was du verändert hast aufjedenfall hatte das zur folge das die Daten nicht richig geladen werden oder du sie resettest.
    Daher musst du mal nach der Fehlerquelle suche und dein skript debugen .

    Hier bitte ein kleiner Anfang:



    enum {
    DIALOG_FRL_OPTIONS = 1,
    DIALOG_FRL_DELETE,
    DIALOG_FRL_SHOW,
    DIALOG_FRL_ADD,
    }


    ocmd:fl(playerid, params[])
    {
    return ShowPlayerDialog(playerid, DIALOG_FRL_OPTIONS, DIALOG_STYLE_LIST, "Freundesliste", "Anschauen\nHinzufügen\nLöschen", "Auswählen", "Schließen");
    }


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    switch(dialogid){
    if(!response)return 1;
    case DIALOG_FRL_OPTIONS:{
    switch(listitem){
    case 0:return ShowPlayerDialog(playerid, DIALOG_FRL_ADD, DIALOG_STYLE_INPUT, "Freundesliste", "Gebe hier den Namen des Freundes ein", "Hinzufügen", "Zurück");
    case 1:return CreateDialog(playerid,DIALOG_FRL_SHOW);
    case 2:return CreateDialog(playerid,DIALOG_FRL_DELETE);
    }
    } case DIALOG_FRL_DELETE:{
    if(!response)return
    new query[128];
    mysql_format(sqlHandler, query,"DELETE FROM `table` WHERE `Owner` = '%e' AND `Friend` = '%e' LIMIT 1;",PlayerName(playerid),inputtext); // Limit 1 bedeutet es wird nur 1 Datensatz gelöscht wird genutzt um ein query zu optimieren %e mysql_format escaped den string automatisch
    mysql_query(query);
    return CreateDialog(playerid, DIALOG_FRL_DELETE);
    } case DIALOG_FRL_SHOW:{
    if(!response)return ShowPlayerDialog(playerid, DIALOG_FRL_OPTIONS, DIALOG_STYLE_LIST, "Freundesliste", "Anschauen\nHinzufügen\nLöschen", "Auswählen", "Schließen");
    } case DIALOG_FRL_ADD:{
    if(!response)return ShowPlayerDialog(playerid, DIALOG_FRL_OPTIONS, DIALOG_STYLE_LIST, "Freundesliste", "Anschauen\nHinzufügen\nLöschen", "Auswählen", "Schließen");
    }
    }
    return 1;
    }


    stock CreateDialog(playerid, dialogid){
    new query[64],text[1024];
    mysql_format(sqlHandler, query,"SELECT `Friend` FROM `table` WHERE `Owner` = '%e';",PlayerName(playerid));
    mysql_query(query);
    mysql_store_result();
    while(mysql_fetch_row_format(query)){ // da wir nur einen Eintrag auslesen bekommt der auch den den Delimiter | , springt auch jeweils zum nächsten Eintrag beim auslesen
    strcat(query,"\n");
    strcat(text,query);
    }
    mysql_free_result();
    return ShowPlayerDialog(playerid, DIALOG_FRL_DELETE, DIALOG_STYLE_LIST, "Freundesliste", text, "Auswählen", "Zurück");
    }

    Das ist ja nicht statisch du musst ja lediglich dein string den du in dem String-Array speicherst an einen Stringbuilder übergeben damit du auf den einzelnen index zugreifen kannst und diesen auch editieren.



    String [] Data = new string[10];
    Data[0] = "Hallo wie geht es euch den heute es ist doch ein schönes Wetter draußen warum sitz ihr hier Hallo wie geht es euch den heute es ist doch eine schönes Wetter draußen warum sitz ihr hier";
    StringBuilder test = new StringBuilder(Data[0]);
    bool letter = false;


    for (int i = 0; i != test.Length; ++i)
    {
    if((i % 50) == 0 && i != 0){
    if (test[i] != ' ') letter = true;
    else test[i] = '\n';
    }
    else if (letter == true && test[i] == ' ')
    {
    test[i] = '\n';
    letter = false;
    }
    }
    Data[0] = test.ToString();
    Console.Write(Data[0]);
    Console.ReadLine();


    Ich hab dir das etwas umgeschrieben, wie du eine zweite Schleife integrierst, dies darfst du selbst herausfinden, ist jedoch nicht sonderlich schwierig.

    Problem liegt hier


    if(strcmp(PlayerName(playerid),sCarInfo[i][sName],false) == 0)


    Die Aussage trifft nicht zu entweder werden die Fahrzeuge nicht richtig geladen oder in der Datenbank steht ein anderer.


    Was gibt den die Konsole aus , wenn du davor ein Debug setzt:



    ...
    printf("Name: %s",sCarInfo[i][sName]):
    if(strcmp(PlayerName(playerid),sCarInfo[i][sName],false) == 0) {
    ....