Beiträge von Jeffry

    Wird das Tuning gespeicher?


    Das kannst du so machen:
    Beim Speichern:
    new tmpstr[10];
    for(new s=0; s<14; s++)
    {
    format(tmpstr, sizeof(tmpstr), "tSlot%d", s);
    dini_IntSet(path, tmpstr, GetVehicleComponentInSlot(fracVehicle[i][e_vID], s));
    }


    Beim Laden (nach CreateVehicle):
    new tmpstr[10], cmp;
    for(new s=0; s<14; s++)
    {
    format(tmpstr, sizeof(tmpstr), "tSlot%d", s);
    cmp = dini_Int(path, tmpstr);
    if(cmp > 0) AddVehicleComponent(fracVehicle[i][e_vID], cmp);
    }

    fcreate gibt es nicht.


    Bei mir läuft der Code (Dome) ohne Probleme, die Datei wird korrekt mit Inhalt erstellt.
    io_append erstellt die Datei wenn sie nicht existiert.


    Prüfe mal, ob du die Berechtigung hast, in dem Ordner etwas zu schreiben, möglicherweise liegt es daran.

    Ja, wenn du keines von beidem bist, dann kommt die Meldung, sprich wenn du eines von beidem bist, dann kommt die Meldung nicht und du kannst den Befehl ausführen.

    if(!IsPlayerAdmin(playerid) && pInfo[playerid][pAdmin] != 7)return SCM(playerid, COLOR_GREEN, "[Admin-FEHLER]: Du bist kein Supporter/Moderator/Administrator/Projektleiter!");


    Das ,1 am Ende hab ich weg gemacht, da brauchst du nicht.

    Lass es dir mal so ausgeben. Was wird dann angezeigt?
    Bist du im richtigen Interior und der richtigen virtuellen Welt?
    LSbizSkinShopInfo[i][bLSbizSkinShop_Label2] = CreateDynamic3DTextLabel("Kasse", COLOR_YELLOW, LSbizSkinShopInfo[i][bLSbizSkinShop_BuyX], LSbizSkinShopInfo[i][bLSbizSkinShop_BuyY], LSbizSkinShopInfo[i][bLSbizSkinShop_BuyZ], 12, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, LSbizSkinShopInfo[i][bLSbizSkinShop_World], LSbizSkinShopInfo[i][bLSbizSkinShop_Interior], -1);
    LSbizSkinShopInfo[i][bLSbizSkinShop_Pickup2] = CreateDynamicPickup(1274, 1, LSbizSkinShopInfo[i][bLSbizSkinShop_BuyX], LSbizSkinShopInfo[i][bLSbizSkinShop_BuyY], LSbizSkinShopInfo[i][bLSbizSkinShop_BuyZ], -1);
    printf("BuyPickup geladen: X = %f | Y = %f | Z %f", LSbizSkinShopInfo[i][bLSbizSkinShop_BuyX], LSbizSkinShopInfo[i][bLSbizSkinShop_BuyY], LSbizSkinShopInfo[i][bLSbizSkinShop_BuyZ]);
    printf("Label: %d | Pickup: %d | World: %d | Interior: %d", _:LSbizSkinShopInfo[i][bLSbizSkinShop_Label2], LSbizSkinShopInfo[i][bLSbizSkinShop_Pickup2], LSbizSkinShopInfo[i][bLSbizSkinShop_World], LSbizSkinShopInfo[i][bLSbizSkinShop_Interior]);

    Die Abfrage muss im Befehl vor der Zuweisung sein, am besten sogar vor der Schleife:
    ocmd:kaufefirmengelaende(playerid,params[])
    {
    if(sInfo[playerid][firma] != -1)return SendClientMessage(playerid,rot,"Fehler: Du Besitzt bereits eine Firma!");
    for(new i;i<sizeof(Firmengebiete);i++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 4.0, Firmengebiete[i][F_KaufX], Firmengebiete[i][F_KaufY], Firmengebiete[i][F_KaufZ]))
    {
    GetPlayerName(playerid, Firmengebiete[i][F_Besitzer], MAX_PLAYER_NAME);
    //Hier das Label aktualisieren.
    sInfo[playerid][firma]= i;
    return SendClientMessage(playerid, 0xFFFFFFFF, "Gekauft.");
    }
    }
    return SendClientMessage(playerid, 0xFF0000FF, "Du bist nich am Kaufpunkt des Firmengeländes!");
    }

    Das ist mir nicht nachvollziehbar.
    Ich kann dir anbieten, ausnahmsweise mal mit TeamViewer drauf zu schauen, vielleicht findet sich dann der Fehler.
    Müsstest mir eben sagen, wann du Zeit hast.


    EDIT:
    Erledigt. Funktioniert nun wie beschrieben mit:
    format(query,sizeof(query),"SELECT * FROM user WHERE username='%s' AND passwort=MD5('%s')",name,passwort);
    und:
    format(query,sizeof(query),"INSERT INTO user (username, passwort, level) VALUES ('%s', MD5('%s'), '1')",name,passwort);

    Übrigens, da du geschrieben hast, dass du neu in der Materie bist, rate ich dir, fange gleich mit dem richtigen System an, und nicht mit diesen Funktionen (mysql_GetString, etc).


    Die sind sehr langsam und gehen auf die Performance des Servers.


    Ich verlinke hier mal das Tutorial für die neuste und beste Version von MySQL für den Server:
    [ SCRIPTING ] [jTuT] MySQL R39-3 (Installation, XAMPP, Verwendung, Bedienung & Registrations-System)


    Wenn du damit deine Systeme von Anfang an aufbaust, dann lohnt sich das wirklich.

    Du musst in den vierten Parameter einen String schreiben, und GetString's können nicht direkt in mehrdimensionale Arrays geschrieben werden, daher muss man format/strcat verwenden.
    public InitialiseBusinesses()
    {
    new str_x[8];
    for(new x=1; x <= BusinessAmountVar; x++)
    {
    valstr(str_x, x);
    BusinessData[x][ID] = x;
    format(BusinessData[x][BizName], 64, mysql_GetString("businesses", "Name", "ID", str_x));
    BusinessData[x][BizX] = mysql_GetFloat("businesses", "BizX", "ID", str_x);
    BusinessData[x][BizY] = mysql_GetFloat("businesses", "BizY", "ID", str_x);
    BusinessData[x][BizZ] = mysql_GetFloat("businesses", "BizZ", "ID", str_x);
    BusinessData[x][Price] = mysql_GetInt("businesses", "Price", "ID", str_x);
    BusinessData[x][Status] = mysql_GetInt("businesses", "Status", "ID", str_x);
    format(BusinessData[x][BizOwner], 64, mysql_GetString("businesses", "Owner", "ID", str_x));
    BusinessData[x][Bank] = mysql_GetInt("businesses", "Bank", "ID", str_x);
    BusinessData[x][EnterPrice] = mysql_GetInt("EnterPrice", "Price", "ID", str_x);
    /*if(!strcmp(BusinessData[x][BizOwner], "No-One"))
    {//Zu verkaufen
    BusinessData[x][BIZPickup] = CreatePickup(1272, 1, BusinessData[cbizid][BizX], BusinessData[cbizid][BizY], BusinessData[cbizid][BizZ], -1);
    format(BusinessData[cbizid][BIZ3DText],256,"Business zu verkaufen!\n\nName: %s [ID:%i]\nPreis: $%i\nEingangspreis: $%i",BusinessData[cbizid][BizName],BusinessData[cbizid][ID],BusinessData[cbizid][Price],BusinessData[cbizid][EnterPrice]);
    BusinessData[cbizid][BIZ3D] = Create3DTextLabel(BusinessData[cbizid][BIZ3DText], COLOR_ORANGE, BusinessData[cbizid][BizX], BusinessData[cbizid][BizY], BusinessData[cbizid][BizZ], 10.0, 0, 1);
    }
    else
    {//In Besitz
    BusinessData[x][BIZPickup] = CreatePickup(1273, 1, BusinessData[cbizid][BizX], BusinessData[cbizid][BizY], BusinessData[cbizid][BizZ], -1);
    format(BusinessData[cbizid][BIZ3DText],256,"Business nicht zu verkaufen!\n\nName: %s [ID:%i]\nPreis: $%i\nEingangspreis: $%i",BusinessData[cbizid][BizName],BusinessData[cbizid][ID],BusinessData[cbizid][Price],BusinessData[cbizid][EnterPrice]);
    BusinessData[cbizid][BIZ3D] = Create3DTextLabel(BusinessData[cbizid][BIZ3DText], COLOR_ORANGE, BusinessData[cbizid][BizX], BusinessData[cbizid][BizY], BusinessData[cbizid][BizZ], 10.0, 0, 1);
    }*/
    }
    return 1;
    }

    if(!strcmp(item, "Schlagring"))
    {
    //Eingefügt:
    ShowPlayerDialog(playerid,DIALOG_InventarMenu,DIALOG_STYLE_LIST,"Inventar-Menü Erweitert","Benutzen\nWegwerfen\nInformation","Wählen","Abbrechen");
    SendClientMessage(playerid, 0xFF0000FF, "Schlagring");
    PickedItem[playerid] = 0;
    }
    else if(!strcmp(item, "Golfschlaeger"))
    {
    //Eingefügt:
    ShowPlayerDialog(playerid,DIALOG_InventarMenu,DIALOG_STYLE_LIST,"Inventar-Menü Erweitert","Benutzen\nWegwerfen\nInformation","Wählen","Abbrechen");
    SendClientMessage(playerid, 0xFF0000FF, "Golfschlaeger");
    PickedItem[playerid] = 1;
    }
    //Usw...


    So weißt du dann, welches Item der Spieler ausgewählt hat.

    Ich hab dir das mal gebastelt.
    new bool:ItemDialogOpen[MAX_PLAYERS][3];


    Dort wo der Dialog angezeigt wird:
    ShowPlayerDialog(playerid,DIALOG_Inventar,DIALOG_STYLE_LIST,"Inventar","Legale Waffen\nIllegale Waffen\nEssen","Wählen","Abbrechen");
    SetPVarString(playerid, "ItemD_0", "Legale Waffen");
    SetPVarString(playerid, "ItemD_1", "Illegale Waffen");
    SetPVarString(playerid, "ItemD_2", "Essen");
    for(new i=0; i<3; i++) ItemDialogOpen[playerid][i] = false;Nur das.


    Und dann:
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == DIALOG_Inventar)
    {
    if(!response) return 1;
    new tmp[64], item[64];
    format(tmp, sizeof(tmp), "ItemD_%d", listitem);
    GetPVarString(playerid, tmp, item, sizeof(item));
    if(!strcmp(item, "Legale Waffen"))
    {
    ItemDialogOpen[playerid][0] = !ItemDialogOpen[playerid][0];
    }
    else if(!strcmp(item, "Illegale Waffen"))
    {
    ItemDialogOpen[playerid][1] = !ItemDialogOpen[playerid][1];
    }
    else if(!strcmp(item, "Essen"))
    {
    ItemDialogOpen[playerid][2] = !ItemDialogOpen[playerid][2];
    }
    else
    {
    if(!strcmp(item, "Schlagring"))
    {
    SendClientMessage(playerid, 0xFF0000FF, "Schlagring");
    }
    else if(!strcmp(item, "Golfschlaeger"))
    {
    SendClientMessage(playerid, 0xFF0000FF, "Golfschlaeger");
    }
    //Usw...
    return 1;
    }
    new string[1024], count;
    format(string, sizeof(string), "Legale Waffen\n");
    SetPVarString(playerid, "ItemD_0", "Legale Waffen");
    count++;
    if(ItemDialogOpen[playerid][0])
    {
    for(new i=0; i<9; i++)
    {
    if(ItemInfo[playerid][ItemsEnum:i]==0) continue;
    format(string,sizeof(string),"%s -%s (%i)\n",string, ItemName(i), ItemInfo[playerid][ItemsEnum:i]);
    format(tmp, sizeof(tmp), "ItemD_%d", count);
    SetPVarString(playerid, tmp, ItemName(i));
    count++;
    }
    }
    format(string,sizeof(string),"%sIllegale Waffen\n",string);
    format(tmp, sizeof(tmp), "ItemD_%d", count);
    SetPVarString(playerid, tmp, "Illegale Waffen");
    count++;
    if(ItemDialogOpen[playerid][1])
    {
    for(new i=9; i<23; i++)
    {
    if(ItemInfo[playerid][ItemsEnum:i]==0) continue;
    format(string,sizeof(string),"%s -%s (%i)\n",string, ItemName(i), ItemInfo[playerid][ItemsEnum:i]);
    format(tmp, sizeof(tmp), "ItemD_%d", count);
    SetPVarString(playerid, tmp, ItemName(i));
    count++;
    }
    }
    format(string,sizeof(string),"%sEssen\n",string);
    format(tmp, sizeof(tmp), "ItemD_%d", count);
    SetPVarString(playerid, tmp, "Essen");
    count++;
    if(ItemDialogOpen[playerid][2])
    {
    for(new i=23; i<sizeof(ItemInfo[]); i++)
    {
    if(ItemInfo[playerid][ItemsEnum:i]==0) continue;
    format(string,sizeof(string),"%s -%s (%i)\n",string, ItemName(i), ItemInfo[playerid][ItemsEnum:i]);
    format(tmp, sizeof(tmp), "ItemD_%d", count);
    SetPVarString(playerid, tmp, ItemName(i));
    count++;
    }
    }
    ShowPlayerDialog(playerid,DIALOG_Inventar,DIALOG_STYLE_LIST,"Inventar",string,"Wählen","Abbrechen");
    return 1;
    }
    return 1;
    }


    Sieht dann so aus:

    Sind natürlich nur Test-Daten.