Beiträge von IPrototypeI

    So musste noch nach was schauen da mir mysql_fetch_row_format etwas sinnlose dafür vor kam


    new result[MAX_PLAYER_NAME],MSG_STRING[400];
    mysql_query("SELECT `Name`, `Admin` FROM `accounts` WHERE `Admin` > 0")
    mysql_store_result()
    while(mysql_retrieve_row()){ // es geht auch mysql_next_row().
    mysql_fetch_field_row(result,"Name");
    mysql_fetch_field_row(result,"Admin");
    // ich bin zwar kein Fan von format aber was solls :D
    format(MSG_STRING,400"%s%s: Adminlevel %d\n",MSG_STRING,result,strval(result));
    }


    Es reicht wenn du das einmal formatieren lässt und eine kleine Info zum R7 plugin


    würde das so aussehen da geht das ganze mit der for schleife
    cache_get_data(row,field);
    for(new i; i < row; ++i){
    cache_get_row(i,0,PlayerInfo[i][pName]);
    printf("%s",PlayerInfo[i][pName]);
    }


    //edit zwei MSG_STRING für den ersten platzhalter vergessen

    Naja also mach es so


    SQL
    "UPDATE `accounts` SET `Admin` =  1"


    damit kannst du alle werte in einer Spalte auf 1 setzen

    SQL
    "SELECT `Name`, `Admin` FROM `accounts` WHERE `Admin` > 0"


    Du kannst in Querys auch Operator verwenden hier zum beispiel wird alles ausglesen was größer als 0 ist in dem fall auch nur der Name und das Adminlevel


    //edit


    die ausgelesenen Daten solltest du dan in einen string packen und den string auch immer weiter formatieren , wenn du das in einer msg box haben willst aber das macht ja
    auch sinn

    Das man in SA:MP ohne Plugins die Z-Achse abfragen kann, ein neues NPC System, Bilder in Textdraws anzeigen, auch eine Random-Vehicle-Spawn funktion und noch viel mehr.... :whistling:


    Es gibt auch die mapandreas include und die nächsten zwei Wünsche werden ja in Samp Extension umgesetzt und sowas wie eine Random-Vehicle-Spawn funktion ist unnötig


    Hab mal sowas erstellt um die Fahrzeuge random zu spawnen aufjedenfall landen diese nicht im wasser


    #define MAX_RANDOM_CARS (100)


    #define MAX_MAP_XCOORD (6000)
    #define MAX_MAP_YCOORD (6000)


    forward CreateRandomCars();
    new CarArray[MAX_RANDOM_CARS];
    public CreateRandomCars()
    {
    new i, Float:Pos[4];
    while(i != MAX_RANDOM_CARS){
    Pos[0] = (-3000.0 + random(MAX_MAP_XCOORD));
    Pos[1] = (-3000.0 + random(MAX_MAP_YCOORD));
    Pos[3] = (400 + random(211));
    GetPointZPos(Pos[0], Pos[1], Pos[2]);
    printf("%f %f %f %0.1f",Pos[0], Pos[1], Pos[2],Pos[3]);
    if(Pos[2] != 0.0){
    CarArray[i] = AddStaticVehicleEx(floatround(Pos[3]),Pos[0], Pos[1], Pos[2],0.0,0,0,-1);
    ++i;
    }
    }
    return 1;
    }


    CMD:warptocar(playerid,params[]){
    new vID, Float:Pos[3];
    if(sscanf(params,"d",vID))return SendClientMessage(playerid,-1,"Benutze: /warptocar [id]");
    GetVehiclePos(vID, Pos[0], Pos[1], Pos[2]);
    SetPlayerPos(playerid,Pos[0], Pos[1], Pos[2]);
    return 1;
    }


    und noch was zu den fahrzeugen in den beispiel skript wie grandlarc sind ja sehr viele autos enthalten diese werten aus files aus dem scriptfiles ordner geladen diese
    kann man ja auch benutzen, dann ist man ja auch nicht wie ein depp mit dem saven von 1500 Positionen beschäftigt und kan sowas sehr bequem umsetzen.

    Gehookt wird bei Onplayerconnect soweit ich weiß der Streamer, sscanf und foreach denke ich


    Gruß


    Nun gut das liegt nicht daran es geht um seine 4 hooking methode und zwar mit state zu arbeiten diese ist weit aus schneller und nicht so lästig wie
    mit CallLocalFunction oder CallRemoteFunction zu arbeiten das der Server abschmiert wenn ein leerer string übergeben wird.
    Dies Hooking Methode hat erst seit seiner neusten sscanf2 include drinne so viel ich weiß ( ich kann mich in dem bezug auch irren).


    du kannst ja mal was ausgeben lassen in dem hook um zu sehen ob das überhaupt aufgerufen wird dazu gehst du in die include und schreibst print("asdfghj");
    was auch immer du willst die hauptsache ist raus zu bekommen ob da der fehler auch bei dir liegt.
    Zum testen kann ja auch in dem fall mal den hook auch umschreiben vllt wirkt auch ihrgend was anderes auf state ein.

    Hm ok dan läuft ihrgend was bei OnPlayerConnected schief das problem ist halt die uhrsache davon zu finden hast vllt weitere hooks mit der hooking methode
    die du in der sscanf2 include siehst da diese Methode eigentlich sehr schnell ist dürfte es eigentlich keine probleme geben da OnPlayerConnect die gehookte version als erstes
    aufgerufen wird.

    Nein es gibt kein bug in bezug auf NPCs hab das ganze selbst gerade getestet es wird ihrgend was blockiert


    in bezug zum aufruf bei OnPlayerConnect(playerid) also wird der übeltäter sich hinter SSCANF_Join verbirgen ich hab nur noch nicht raus gefunden wie sich das blockieren lässt

    public OnPlayerConnect(playerid)
    {
    new
    name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof (name));
    SSCANF_Join(playerid, name, IsPlayerNPC(playerid));
    return SSCANF_OnPlayerConnect(playerid);
    }


    //edit


    Mal so eine Frage gehen nur die Befehle nicht die mit der spielerid arbeiten oder andere mit normalen nummer auch nicht oder strings etc...

    Um das ganze richtig zu stellen musst du sscanf ein bissle verarschen daher setzt du die werte die du nicht brauchst fürs splitten nach hinten


    enum vehicle_enum
    {
    ID,
    frakid,
    vmodel,
    col,
    col1,
    Float:v_x,
    Float:v_y,
    Float:v_z,
    Float:v_a,
    locked,
    vworld,
    vmod0,vmod1,vmod2,vmod3,vmod4,vmod5,vmod6,vmod7,vmod8,vmod9,vmod10,vmod11,vmod12,vmod13,
    neon,
    paintjob,
    id_x,
    };


    dann sollte es so aufjedenfall gehen


    sscanf(query,"p<|>e<iiiiiffffiiiiiiiiiiiiiiiii>",Fraktcar[fa_count]);


    kannst dir die ergebniss e auch mal ausgeben lassen per schleifen


    for(new i; vehicle_enum:i < vehicle_enum; i++) printf((i == 5 || i == 6 || i == 7 || i == 8)?("%f"):("%d"),Fraktcar[fa_count][vehicle_enum:i]);


    Er will auch aus ihrgend einem grund auch mit den Klammern ein argument nicht ignorieren.

    arbeite mit einer Float wnen du dei Komma zahlen haben willst und beim formatieren gibst die jeweilige dezimalen an die du verwenden willst hinter dem koma noch an %0.2f
    hier wären es zwei dezimale hinter dem Koma

    Und was muss ich bei Callback machen?


    Das Callback ist nicht nötig solange du die funktionen, welche das plugin mit sich bringt nutzt.
    Beispiel beim updaten, eintragen oder erstellen von tabellen.


    Rufst du jedoch Daten ab so ist dies nötig man kann das callback vergleichen mit mysql_store_result daher kannst du die funktionen wie cache_get_field_content,
    cache_get_data, etc... in dem callback verwenden daher ist das ganze auch multithreaded. Du kannst noch zusätzlich werte an die parameter der funktion welche dadurch aufgerufen wird benutzen.


    Ich weiß was du meinst das gleiche Probleme hatte ich mit dem Spieler Auslesen und zwar hat da "e<" nicht funktioniert daher habe ich die einzelnen Variable drunter Geschrieben und dann hat es funktioniert, das gleiche hatte ich hier auch vor und mit deinem Code kommt nur 0.0 raus 19 mal.


    meist liegt es daran das die leute das falsche parameter eingeben besser gesagt es werden nicht alle eintragen die in dem enum vorhanden sind.
    Ich persönlich hatte noch nie probleme damit benutzt du das neuste sscanf plugin ?



    und ahja eigentlich verändert dies nix da der Strich | das default trennzeichen ist kannst jedoch mal zusätzlich angeben
    while(mysql_fetch_row_format(LoadHouse,"|")){


    es kann ab und zu zur komplikation kommen wenn du ihrgend wo den sscanf code drinne hast.


    _________________________________________________________________________________
    FAIL
    sscanf(resulthouseline,"p<|>e<iiis[24]iiffffffffii>",HouseInfo[i]);
    zu
    sscanf(LoadHouse,"p<|>e<iiis[24]iiffffffffii>",HouseInfo[i]);

    du hast wohl noch nciht oft mit mysql gearbeitet

    stock LoadHouses()
    {
    new LoadHouse[256],i;
    mysql_query("SELECT * FROM `Houses`");
    mysql_store_result();
    while(mysql_fetch_row_format(LoadHouse)){
    sscanf(resulthouseline,"p<|>e<iiis[24]iiffffffffii>",HouseInfo[i]);
    printf("Check %f %f %f",HouseInfo[i][HousePosX],HouseInfo[i][HousePosY],HouseInfo[i][HousePosZ]);
    ++i;
    }
    print("Cars loaded");
    return mysql_free_result();
    }


    Sollte normal so gehen manche haben ja anscheinend ein problem mit dem auslesen mit sscanf wenn sie das direkte splitten für das array mit dem enum als index haben wird das ganze nochmal in der console ausgegeben falls dies nicht gehen sollte.

    Okay, und wie das die Zombies immer : ZOMBIE_1, ZOMBIE_2 usw. heißen?


    habs kurz oben verbesser wie schon angemerkt hab vergessen Z_Timer[1] bei valstr einzufügen


    der string ist erst je nacch ziffer 1


    per strins(b_name,ZOMBIE_NAME,0);
    wird vor der 1 der oben mit dem #define deklarierte string rein geschoben