dini_Get must be indexed

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Guten Abend,
    ich bitte um Schnelle Hilfe:


    Code:

    new radiokassepfad[18]; // wir erstellen einen Pfad den wir unten formatieren
    format(radiokassepfad,sizeof(radiokassepfad),"Radiobiz.txt");
    if(GetPlayerMoney(playerid) < dini_Get(radiokassepfad,"RadioPreis")) return SendClientMessage(playerid,ROT,"Du hast nicht genug Geld für das Radio!");
    SendClientMessage(playerid, WEISS, "Kosten fürs Radio hören: $70");
    GivePlayerMoney(playerid, -70);//zieht den Spieler $70 ab
    RadioGeld += 70;
    RadioSpeichern(); // das Geld auch gespeichert wird.
    PlayAudioStreamForPlayer(playerid, "http://listen.technobase.fm/dsl.pls");



    Hier der Error:

    error 033: array must be indexed (variable "dini_Get") //Der Error befindet sich in der 3. Zeile


    Bitte helft mir..


    MFG
    Scripter4.0

    Scripter im Ruhestand.

  • warum lädst du eigentlich den Wert erst aus der Datei und anschliessend ziehst du die Summe eh manuell ab?


    Dein Code:

    if(GetPlayerMoney(playerid) < dini_Get(radiokassepfad,"RadioPreis")) return SendClientMessage(playerid,ROT,"Du hast nicht genug Geld für das Radio!");
    SendClientMessage(playerid, WEISS, "Kosten fürs Radio hören: $70");
    GivePlayerMoney(playerid, -70);//zieht den Spieler $70 ab


    Machs doch gleich manuell:

    if (GetPlayerMoney(playerid) < 70) return SendClientMessage(playerid,ROT,"Du hast nicht genug Geld für das Radio!");
    SendClientMessage(playerid, WEISS, "Kosten fürs Radio hören: $70");


    GivePlayerMoney(playerid, -70);//zieht den Spieler $70 ab


    Ansonsten:
    dini_Get(filename[],key[]) gibt einen String/Array zurück. Siehe return tmpres;


    Wenn dein Code so lassen willst, dann:

    if(GetPlayerMoney(playerid) < dini_Int(radiokassepfad,"RadioPreis")) return SendClientMessage(playerid,ROT,"Du hast nicht genug Geld für das Radio!");
    SendClientMessage(playerid, WEISS, "Kosten fürs Radio hören: $70");
    GivePlayerMoney(playerid, -70);//zieht den Spieler $70 ab

  • Keine Ahnung, was für eine DINI.inc du hast, aber in meiner sieht die Funktion folgendermaßen aus:


    stock dini_Get(filename[],key[]) {
    new File:fohnd;
    new tmpres[MAX_STRING];
    new tmpres2[MAX_STRING];
    tmpres[0]=0;
    fohnd=fopen(filename,io_read);
    if (!fohnd) return tmpres;
    while (fread(fohnd,tmpres)) {
    StripNewLine(tmpres);
    if (equal(dini_PRIVATE_ExtractKey(tmpres),key,true)) {
    /* We've got what we need */
    tmpres2[0]=0;
    strcat(tmpres2,dini_PRIVATE_ExtractValue(tmpres));
    fclose(fohnd);
    return tmpres2;
    }
    }
    fclose(fohnd);
    return tmpres;
    }


    Und man sehe ein return tmpres; ;)


    PS.:
    kann sein, daß meine DINI veraltet ist. Hier mal die Sourceinfos:


    /*
    * Dini 1.5.1
    * (c) Copyright 2006 by DracoBlue
    *
    * @author : DracoBlue (http://dracoblue.com)
    * @date : 13th May 2006
    * @update : 3rd June 2007
    * @require : DUtils 1.8
    *
    * This file is provided as is (no warranties).
    *
    * Feel free to use it, a little message in
    * about box is honouring thing, isn't it?
    *
    */

  • Nun habe ich noch ein Error:


    Mein Befehl:

    ocmd:radiopreis(playerid,params[])
    {
    new radiokassepfad[18], name[32]; // wir erstellen einen Pfad den wir unten formatieren
    format(radiokassepfad,sizeof(radiokassepfad),"Radiobiz.txt");
    if(dini_Get(radiokassepfad,"Besitzer") != GetPlayerName(playerid,name,sizeof(name)))return SendClientMessage(playerid, GRAU, "Dir gehört dieses Biz nicht!");
    if(!IsPlayerInRangeOfPoint(playerid, 3, -2521.3206,-624.1462,132.7807))return SendClientMessage(playerid, GRAU, "Du bist nicht am RadioBiz!");
    new preis,string[44];
    if(sscanf(params,"i",preis)) return SendClientMessage(playerid,GRAU,"VERWENDUNG: /radiopreis [PREIS]");
    if(preis > 5000)return SendClientMessage(playerid,GRAU,"Es muss in einem passendem Rahmen sein: $0 - $5000");
    RadioPreis += preis;//Wir ziehen aus der Staatskasse das geldraus
    RadioSpeichern(); // das Geld auch gespeichert wird.
    format(string,sizeof(string),"Du hast die Radiokosten auf $%i gesetzt",preis);
    SendClientMessage(playerid,ROT,string);
    return 1;
    }


    Der Error:

    array must be indexed (variable "dini_Get") //Der Error befindet sich in der 5. Zeile

    Scripter im Ruhestand.

  • Anstelle von Zeile 5

    if(dini_Get(radiokassepfad,"Besitzer") != GetPlayerName(playerid,name,sizeof(name)))return SendClientMessage(playerid, GRAU, "Dir gehört dieses Biz nicht!");


    mach folgendes rein:



    GetPlayerName(playerid, name, sizeof(name));
    if (strcmp(dini_Get(radiokassepfad,"Besitzer"), name, false) return SendClientMessage(playerid, GRAU, "Dir gehört dieses Biz nicht!");