Beiträge von IPrototypeI

    also gehen tut das schon dafuer brauchst du ein eigenen client ein plugin und dazu noch die passende include sowas musst du jedoch alles selbst schreiben . das mit der veraenderung von der map wuerde auch gehen dazu muesstest du ein eigenen mod schreiben und das ist dazu sehr schwer . grundlegend ist alles moeglich nur das knowhow der leute ist beschraenkt
    :D

    Grundlegend würde das schon gehen wie er es macht
    nur braucht er eine extra variabel in seinem einem enum wo die art also welche gerichte das restaurant enthält


    dann lässt sich das ganze mit der variabel und einer forschleife wie oben in dem beispiel command auslesen.


    also statt dem i hier und der forschleife eine feste variabel von dem enum


    beispiel dann

    for(new ex = 0; ex < MAX_GERICHTE; ex++)format(str, sizeof(str), "%s \t\tPreis: %d€\n", Gerichte[Restaurant[e][art]][ex][GName], Gerichte[Restaurant[e][art]
    ][ex][GPreis]);

    Naja die Funktion buggt mir ein bissle


    Beispiel:


    ocmd:test2(playerid,params[])
    {
    #pragma unused params
    new string[20] = "Jens";
    new Float:abc = 10.12;
    new a1 = 1, b1 = 10, c1 = 12, d1= 31;
    new Float:xy1 = 10.12;
    new Float:xz1 = 10.12;
    new string1[20] ="test";
    new string2[20] ="test12";
    SendClientMessagef(playerid,-1,"%s geht %f Kiometer weit und ist %d , %d , %d, %d, %f, %f, %s, %s",string,abc,a1,b1,c1,d1,xy1,xz1,string1,string2);
    SendClientMessagef(playerid,-1,"%s geht %f Kiometer weit und ist %d , %d",string,abc,a1,b1);
    return 1;
    }


    Beweis bild:



    Jedoch ist deine Funktion teilweise besser als die von Ryder im vergleich siehe Bild
    die obere Version ist von Hauke die untere von Ryder


    Ok habe dann noch Dass hinzugefügt:
    if(!strlen(Gerichte[e][ex][GName]))continue;


    /e
    Ich weiß jetzt nicht ob der Server Crasht wenn ich einen String Abfrage der gar nicht existiert aber im Array ist.


    MFG Piet


    Ich frage mich echt gerade was du damit genau bezwecken willst mit strlen bekommt du die länge des strings
    und wenn es nicht der länge entspricht wird die for schleife weiter geführt
    welchen Hintergedanke hast du dazu gehabt?

    es unterscheidet sich nicht viel der sscanf code bei mysql würde so aussehen



    sscanf(Query, "p<|>e<ddddddddddddd>", Safebox[id]);




    stock LoadSafeboxes()
    {
    new Query[1024], i = 0;
    format(Query, sizeof(Query), "SELECT * FROM safebox");
    mysql_query(Query);
    mysql_store_result();
    while(mysql_fetch_row_format(Query))
    {
    sscanf(Query, "p<|>e<ddddddddddddd>", Safebox[i]);
    i++;
    }
    }


    was ist hier jetzt so umständlich

    der code


    for(new ex = 0; ex < sizeof(Gerichte[e]); ex++)


    geht nicht daher ist es besser du setzt dafür einen wert für die speisen ein beispiel 5


    dann gehts. soweit ich weiß kann man das nicht machen mit multidimensionale arrays


    //edit das beispiel hasst du oben


    #define MAX_SPEISEN 2


    for(new ex = 0; ex < MAX_SPEISEN; ex++)

    Müsstes du alles neu machen ;) bleib lieber so da mysql sehr aufwendig ist und man damit lieber von 0 anfängt
    zb bei ein selfmade ;)


    Schwachsinn aufwendig wäre das nicht du kannst sscanf auch ganz leicht verwenden mit mysql .


    Ein Beispiel aus meinem alten carsystem zeigt das


    stock Autosladen()
    {
    new Query[1024], id, i = 0;
    format(Query, sizeof(Query), "SELECT * FROM autos4");
    mysql_query(Query);
    mysql_store_result();
    while(mysql_fetch_row_format(Query))
    {
    id = i;
    sscanf(Query, "p<|>e<is[25]iiiffff>", VehicleInfo[id]);
    new Color1 = random(126); new Color2 = random(126);
    CreateVehicle(VehicleInfo[id][Model],VehicleInfo[id][Pos][X],VehicleInfo[id][Pos][Y],VehicleInfo[id][Pos][Z],VehicleInfo[id][Pos][R],Color1,Color2, 60*10000);
    i++;
    printf("%d",VehicleInfo[id][Model]);
    }
    }


    ich hätte dir ein beispiel posten können mit dem laden von deiner Box jedoch weiß ich nicht ob du ein die Variabeln in einem enum hast
    obwohl das nichts groß zur Sache tut nur erspart das einem viele unnötige Zeilen


    sscanf(Query, "p<|>e<is[25]iiiffff>", VehicleInfo[id]);

    hm das komme ich jetzt auch ^^ da sowas nix damit zu tun hat worum es gerade geht .


    also ich weiß jetzt nicht was du mit derm posten deiner forschleife jetzt noch meinst aber eine idee die sachen auszulesen
    wäre eine doppelte for schleife

    #define MAX_LOKALE 2
    #define MAX_SPEISEN 2
    ocmd:test(playerid,params[])
    {
    #pragma unused params
    for(new i; i < MAX_LOKALE; i++){
    for(new ei; ei < MAX_SPEISEN; ei++){
    new str[128];
    format(str, sizeof(str), "%s \t\tPreis: %d€\n", Gerichte[i][ei][GName], Gerichte[i][ei][GPreis]);
    SendClientMessage(playerid,-1,str);
    }
    }
    return 1;
    }


    wegen deinen gerichten um alles auszulesen naja das hat nun hier wenig mit dem unterschiedlichen Restaurants zu tun ich weiß jedoch wäre es eine idee
    nur solltest du dann das erste hier i gehen die jeweilige Zahl ersetzen wenn der spieler den command eingibt um die speisen abzurufen.


    Aber nun zu dem Restaurant kannst du mir bitte das enum posten mit dem dazugehörigen array falls eins besteht.


    //edit


    Ah ok ^^ auch gut ich hoffe ich hab dir trotzdem geholfen

    müsste so klappen


    enum renum_gerichte
    {
    GName[24],
    GPreis,
    Float:GHealth
    };
    new Gerichte[2][2][renum_gerichte] = {
    {
    {"Kleiner Burger", 7, 13.0},
    {"Großer Burger", 16, 23.0}
    },
    {
    {"Kleines Hühnchen", 9, 16.0},
    {"Großes Hühnchen", 23, 31.0}
    }
    };


    ich editier das nochmal dumme frage

    Eine grundlegende Frage willst du unterschiedliche restaurants machen oder sind das imm nur die selben.


    weil da diese variante vollkommen ausreicht


    new Gerichte[][renum_gerichte] = {
    {"Kleiner Burger", 7, 13.0},
    {"Großer Burger", 16, 23.0}},
    {"Kleines Hühnchen", 9, 16.0},
    {"Großes Hühnchen", 23, 31.0}
    };


    grundlegend versteh ich immer noch nicht genau was du möchtest.

    Grundsetzlich zu der Idee um SObeit zu detecten das wird bei den meisten Hacker-Noobs gehen aber nicht bei der Elite und die werden weiter Sachen releasen
    um Samp kaputt zu machen ein beispiel ist das kleine Programm GoodPlayer von 0x688 damit kannst du den GRP client umgehen ohen probleme
    und mann wird sowas niemals vermeiden können ohne ihrgend was illigales zu machen und auch dann wird es nicht möglich komplett von samp zu verbannen.