Beiträge von IPrototypeI


    mit einem loop kannst du das ganze auflisten solltest natürlich zusätzlich eine abfrage machen ob der spieler überhaupt die variabel sbesitzt wenn ja sendest eine nachricht an den spieler anderfalls fügst das ganze zu einem großen string zusammen und zeigst es in einem dialog an also MSG box
    oder wie du es auch willst.


    Zu dem solltest du auch dem "Auftrag/Opfer" eine variabel setzen zum beispiel mit dem geld weil so kannst du alles mit den spielerid
    regeln.

    #define ACCLADEN sscanf(savedata,"p<|>e<"Deine Variablen">","Dein Enum");


    das define könntest du nicht mal nutzen so wie du es definiert hast
    und wer lesen kann ist klar im vorteil


    Zitat


    Wenn du mit sscanf arbeiten willst musst du wie ich es gesagt habe die meisten Werte in einer Spalte unterbringen als string
    den du danach ausließt und splittest.

    In dem du bestimmte berechnungen machst und dir das selbst schreibst für das an schießen der Person , jedoch gibts so weit ich noch weiß eine include




    jedoch kann du auch mal hier rein schauen


    [ SCRIPTING ] Umgang mit Kamera - Vektor

    könnte ich mir nicht vorstellen dazu könntest es noch notfalls printen ausserdem sieht man es in der mysql.log welche daten ausgelesen werden
    zu dme kannst ja gerne mal ein screen machen von der datenbank.


    Und wie schon angefragt hast du das mal ausprobiert in dem du ein wert in der datenbank gesetzt hast ob das geladen wird oder wenn du den wert ingame setzt ob er gespeichert wird.

    Wäre mal bitte jemand so nett und würde mir anhand eines Beispiels näher bringen wie man das bewerkstelligen kann?


    Die Antworten waren allesamt hilfreich, danke dafür.


    Edit: Kann mir wirklich keiner helfen?


    Mal so eine Frage für was brauchst du so ein müll ich würde es ja noch verstehen, wenn du die alten stats beibehalten möchtest
    und das speichersystem nur wechseln willst das somit die .ini beim auslesen gelöscht wird um so die daten zu übertragen.

    gut dann weißt du das es auf jedenfall nicht am Sql Syntax liegt , jedoch wie schon gesagt ich kann es nur vermuten
    ich kann leider keine direkten aussagen darüber treffen ob es nicht ladet oder speichert, wie schon gesagt ich erkenne keinen fehler
    und kann nur prognosen machen.


    was meist du mit Methode ? ^^

    also werde ich das ganze mit sscanf splitten richtig`?
    aber die funktion mit cache muss ich eingeschaltet lassen oder?


    mein query muss ich dann also unverändert lassen nur in der public LoadQuery mit sscanf arbeiten oder?


    es ist eine möglich methode um noch ein bissle di eleistung zu steigern meiner ansicht nach , jedoch nicht wirklich notwendig bring erstmal dein
    speichersystem fertig dann kannst du immer noch schauen ^^.


    Zur ersten frage lass diese variante erstmal bleiben und verwende das plugin auf herkömmlichen Art und Weise mit dem umkonvertieren
    des strings


    ich ziehe nochmal beispiele auf



    cache_get_row(0,29,savedata);
    SpielerInfo[playerid][pBank]=strval(savedata);
    cache_get_row(0,30,savedata);
    SpielerInfo[playerid][pTelefon]=strval(savedata);
    cache_get_row(0,40,SpielerInfo[playerid][pAfkGrund]);
    cache_get_row(0,41,savedata);
    SpielerInfo[playerid][pArmor]=floatstr(savedata);


    zu dem möchte ich noch ergänzen das beispiele sind also die spalten nicht beachten ^^
    wenn du dir das ganze mal anschauen willst ein kleines register- und loginsystem
    siehe hier


    http://gtawerk.de/Datenbank/in…age=Category&categoryID=3


    Hallo, das ist jetzt nicht mehr nötig, da die Warnungen jetzt nicht mehr kommen.
    Jedoch wird das Geld immer noch nicht ordnungsgemäß geladen. Wenn ich in der Tabelle was einstelle, wird es nicht in der Textdraw Leiste angezeigt, sondern immer 0, daher ist
    danach auf immer wieder 0 in der Tabelle.
    Speichere oder Lade ich das Geld falsch ?


    MFG


    dazu kann ich leider keine aussage genau machen das musst du testen ich sehe hier keinen fehler beim laden als auch beim auslesen .
    wird ihrgend was in der log angezeigt
    oder wenn du es per server.log haben willst.


    Code
    public OnQueryError( errorid, error[], callback[], query[], connectionHandle ){
        printf("EID: %d | Error: %s | callback: %s | Query: %s", errorid, error, callback, query);
        return 1;
    }


    Zum testen schau einfach mal das du die Sachen in der tabelle einträgst es könnte auch sein das du ein kleinen fehler gemacht hast in der ordnung
    beim laden zum beispiel.

    erhöhe mal deine Heapspace
    mit #pragma dynamic


    Sowas kann davon kommen , wenn man zu viele zu große Variabeln erstellt oder diese dann global sind .
    Das könnte unteranderem daran liegen das du viele (große) Variabeln erstellst und oder sie Global sind.

    Wie ich es dir ja schon per Pn geschrieben hatte ^^ wo ich meinen gefertigt hatte
    brauchst du nur die funktion


    Code
    stock GetDotXY(Float:StartPosX, Float:StartPosY, &Float:NewX, &Float:NewY, Float:alpha, Float:dist)
    {
             NewX = StartPosX + (dist * floatsin(alpha, degrees));
             NewY = StartPosY + (dist * floatcos(alpha, degrees));
    }


    also info das ist eine berechnung an einem einheitskreis ein nettes beispiel wo der code seinne uhrsprung hat.


    Anscheinend geht es nicht anders.



    Könnte man sich selber so ausgeben lassen,ist aber etwas umständlich mMn und ist auch nicht besser was "serverschonend" oder "übersichtlich" betrifft


    Mann könnte es optimieren und zwar alles daten bis auf den namen und das passwort zum vergleichen in zwei extra spalten und die anderen sachen alles in eine Spalte rein hauen als
    string um den auszulesen und anschließend zu splitten mit sscanf.


    da wenn man sich die speedtest mal anschaut



    Exactly as Burridge said. A call to sscanf to parse the line is faster than using cache_get_row the amount of times necessary, but the sscanf-solution also requires mysql_fetch_row, which takes an extra array (string) to fetch the data into first and then parse from it. With caching, the plugin stores the data internally in a vector and for some reason, such code is faster.



    quelle


    http://forum.sa-mp.com/showpost.php?p=1827054&postcount=6


    wie man hier raus übernehmen kann braucht ist sscanf in der verwendung schneller als das einzelne auslesen der einzelnen spalten und dazu zählt noch das umkonvertieren in
    ein integer oder in eine float.


    oder wie siehst du dies Goldkiller ?


    //edit


    Jan dein code ist nicht richtig du hast nur den string ^^ diesen solltest du auch jeweils kovertieren. ( Post 1 betreffend)
    und ein kleiner tipp zum auslesen von strings.
    Beispiel:

    Code
    cache_get_row(0,40,SpielerInfo[playerid][pAfkGrund]);


    und wie es goldkiller schon geschrieben hatte musst du den string umkonvertienen
    so wie du es dann machen wolltest stimmt. Das umkonvertieren gilt jedoch nicht für strings sie beispiel(Post 3 von dir betreffend)

    Wie mach ich so ein UsernameHash ban?!! Das klingt gut! ;)


    mfg Das Domz-Reallfie Team!


    in dem du die GPCI funktion von samp verwendest jedoch wie schon gesagt , wenn es zur überschneidungen kommt im benutzername kann der jennige auch nicht mehr drauf der dne selben hat.


    Beispiel du bannst Johann und jemand hat auch den namen als Benutzername ist der auch weg .


    Beispiel:


    native gpci (playerid, serial [], len); // this is the native.

    Code
    public OnPlayerConnect(playerid)
    {
       new playerserial[128];
       gpci(playerid,playerserial,sizeof(playerserial));
       if( !strcmp(playerserial, ".........."))
       {
    
    
       }
    }



    nativ dazu ist


    Code
    native gpci (playerid, serial [], len);


    jedoch gibt hier auch ein tutorial von trooper


    ahja du musst schon die gpci in einer datei speichern und auslesen