Beiträge von Opa_Schlumpf

    EDIT//
    Habe es selber geschaft ohne den Zufall Kram usw. :D
    Eine Abfrage war nicht richtig eingestellt wobei ich wieder was anderes machen musste.


    Wie das aber nun bei dir(BloodyEric) ausgesehen hätte würde mich auch interessieren, denn so wüsste ich die Anwendung von while besser.


    Danke für eure Hilfe.


    EDIT2//
    Ok irgendwie will bei mir nie eine for-Schleife.
    Dadurch ich jetzt geschafft habe eine Haus zu erstellen möchte ich sie auch dynamisch löschen.
    Aber das for gibt nur "0" aus und ich finde den Fehler nicht.
    Hier mein Code:

    COMMAND:deletehouse(playerid)
    {
    new HouseDatei[128];
    format(HouseDatei,sizeof(HouseDatei),"Houses/%i",h);
    if(SpielerInfo[playerid][Adminlevel]==3)
    {
    if(aLogin[playerid]==1)
    {
    for(new h;h<100;h++)
    {
    if(dini_Exists(HouseDatei))
    {
    if(IsPlayerInRangeOfPoint(playerid,3,HouseInfo[h][hx],HouseInfo[h][hy],HouseInfo[h][hz]))
    {
    dini_Remove(HouseDatei);
    }
    else return SendClientMessage(playerid,ROT,"Sie sind nicht in der Nähe eines Hauses!");
    }
    }
    }
    else return SendClientMessage(playerid,ROT,"Sie sind nicht als Admin eingeloggt!");
    }
    else return SendClientMessage(playerid,ROT,"Sie haben nicht das benötigte Adminlevel!");
    return 1;
    }
    Wenn ich diesen Befehl eingebe kommt:
    "Sie sind nicht in der Nähe eines Hauses!".
    Ich habe mir nun den Wert von der for-Schleife ausgeben lassen und sie kommt nur bis "0" und dann wird "Sie sind nicht in der Nähe eines Hauses!" versendet und aus der Command.


    Ich hoffe auf Hilfe finde einfach keinen Fehler.


    mfg.
    Opa

    Ich will ein Haussystem machen.
    Dadurch bekommt jedes Haus eine ID in diesen Fall "h".
    Dadurch die ID nicht doppelt vorkommen darf wird mit "if(HouseInfo[h][hID]==0)" abgefragt ob der Wert der aktuellen Variable auf 0 ist. (0=nicht erstellt).
    Nun habe ich aber das Problem das alle erstellten Häuser die id 0 haben.


    Ich hoffe so ist es ausführlich.


    mfg.
    Opa

    Frage:
    Nach meinen Wissen gibt eine for-Schleifen den Wert aus, bei dem sie grad ist.
    Nun habe ich aber mitbekommen das bei mir was ned richtig geht.


    Hier mein Code:
    COMMAND:createhouse(playerid,params[])
    {
    for(new h;h<MAX_HOUSES;h++)
    {
    if(HouseInfo[h][hID]==0)
    {
    HouseInfo[h][hID]=h;
    break;
    }
    }
    return 1;
    }
    "h" ist hier immer "0".
    Ich weis nicht wo der Fehler liegen könnte.
    Wenn ihr den ganzen Code braucht, könnt ihr in gerne haben.


    mfg.
    Opa

    Ok Danke.
    Ich habe mir den Code mal näher angesehen und ich habe schon die erste Frage:
    public OnFilterScriptInit()
    {
    iGameModeInit_X();
    new line[255],File:hausx = fopen(HAUS_DATEI,io_read),
    haus_index;
    if(hausx)
    {
    while(fread(hausx,line))
    {
    if(line[strlen(line)-2] == '\r')line[strlen(line)-2] = '\0';
    if(line[strlen(line)-1] == '\n')line[strlen(line)-1] = '\0';
    strmid(HausDaten[_cache_haus][Besitzer],strtok(line,haus_index,','),0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
    HausDaten[_cache_haus][ax] = floatstr(strtok(line,haus_index,','));
    HausDaten[_cache_haus][ay] = floatstr(strtok(line,haus_index,','));
    HausDaten[_cache_haus][az] = floatstr(strtok(line,haus_index,','));
    HausDaten[_cache_haus][ix] = floatstr(strtok(line,haus_index,','));
    HausDaten[_cache_haus][iy] = floatstr(strtok(line,haus_index,','));
    HausDaten[_cache_haus][iz] = floatstr(strtok(line,haus_index,','));
    HausDaten[_cache_haus][interior] = strval(strtok(line,haus_index,','));
    HausDaten[_cache_haus][virtual_world] = strval(strtok(line,haus_index,','));
    HausDaten[_cache_haus][kosten] = strval(strtok(line,haus_index,','));
    HausDaten[_cache_haus][play_time] = strval(strtok(line,haus_index,','));
    HausDaten[_cache_haus][nicht_zum_kauf] = strval(strtok(line,haus_index,','));
    HausDaten[_cache_haus][verschlossen] = strval(strtok(line,haus_index,','));
    format(line,sizeof line,"Besitzer : %s\nScore : %d\nKosten : %d$",HausDaten[_cache_haus][Besitzer],HausDaten[_cache_haus][play_time],HausDaten[_cache_haus][kosten]);
    HausDaten[_cache_haus][lbl_haus] = Create3DTextLabel(line,(!HausDaten[_cache_haus][nicht_zum_kauf]) ? (0x00FF00FF) : (0xFF0000FF),HausDaten[_cache_haus][ax],HausDaten[_cache_haus][ay],HausDaten[_cache_haus][az],10.0,0,0);
    HausDaten[_cache_haus][pickid] = CreatePickup(1273,1,HausDaten[_cache_haus][ax],HausDaten[_cache_haus][ay],HausDaten[_cache_haus][az],0);
    HausDaten[_cache_haus][icon_id] = iAddStreamIcon(HausDaten[_cache_haus][ax],HausDaten[_cache_haus][ay],HausDaten[_cache_haus][az],(HausDaten[_cache_haus][nicht_zum_kauf]) ? (32) : (31),0);
    haus_index = 0;
    _cache_haus++;

    }
    fclose(hausx);
    }
    return 1;
    }
    Diese Zeilen gehen noch weiter.
    Wie man sehen kann ist "eig." jede zeile gleich.
    Jetzt wollte ich Fragen, ob da automatisch auf den nächsten Wert in der Zeile gegriffen wird.
    Sonst wären ja alle Zeilen mit den Gleichen Wert besetzt.
    Nun wollte ich auch noch sagen, ob das auch mit dini funktioniert.


    Danke erstmal.
    mfg.
    Opa

    Also mit Datei meine ich, das eine Textdatei erstellt wird. Ich verwende dini.
    Nun gibt es z.B. einen Befehl, mit dem man neue Häuser erstellt.
    Sobald man diesen eingegeben hat wird eine neue Datei für das Haus erstellt.
    Nun ist meine Frage, ob diese Variante gut ist oder ob es eine bessere Lösung gibt.

    Guten Tag.


    Ich bin gerade am Anfang des Haussystemes und möchte fragen, ob es gut ist, wenn für jedes Haus eine Datei erstellt wird?
    Gibt es eine bessere Lösung? wenn ja bitte auch vorführen :thumbup:
    Werde jetzt aber mit den allgemeinen Sachen beginnen.


    Hoffe auf Antwort
    mfg.
    Opa


    EDIT//Überschrift

    Guten Tag.
    Es geht, um das speichern und laden von Daten mit Dini.
    Ich habe schon öfters gesehen, das mehrere Daten in einer Zeile gespeichert wurden.
    Nun wollte ich fragen wie dies möglich ist.
    Mein Script ist derzeit auf Dini aufgebaut und ich möchte es auch beibehalten.
    Danke.
    mfg.
    Opa


    EDIT//Überschrift angepasst

    So.
    Ich habe nun eine weitere Variante versucht.
    Leider kommt jetzt immer:


    C:\Program Files (x86)\Rockstar Games\GTA San Andreas\gamemodes\tdm3.pwn(170) : error 001: expected token: "}", but found "["
    C:\Program Files (x86)\Rockstar Games\GTA San Andreas\gamemodes\tdm3.pwn(1793) : error 017: undefined symbol "gcarx"
    C:\Program Files (x86)\Rockstar Games\GTA San Andreas\gamemodes\tdm3.pwn(1793) : error 029: invalid expression, assumed zero
    C:\Program Files (x86)\Rockstar Games\GTA San Andreas\gamemodes\tdm3.pwn(1793) : warning 215: expression has no effect
    C:\Program Files (x86)\Rockstar Games\GTA San Andreas\gamemodes\tdm3.pwn(1793) : error 001: expected token: ";", but found "]"
    C:\Program Files (x86)\Rockstar Games\GTA San Andreas\gamemodes\tdm3.pwn(1793) : fatal error 107: too many error messages on one line


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    5 Errors.
    Wobei ich aber alles richtig habe.
    Mein Code:
    case 1://Kaufen
    {
    for(new i;i<MAX_TEAMSVEH;i++)
    {
    if(GangInfo[myteam][gcar][i]<=399)
    {
    if(GangInfo[myteam][Kasse]>=gcspreis[playerid])
    {
    new number;
    number=i;
    GangInfo[myteam][gcar][i]=gcsid[playerid];
    GangInfo[myteam][gcarx][i]=1004.9217;
    GangInfo[myteam][gcary][i]=-1351.3798;
    GangInfo[myteam][gcarz][i]=13.0647;
    GangInfo[myteam][Kasse]-=gcspreis[playerid];
    GangInfo[myteam][gcarcolor1][i]=0;
    GangInfo[myteam][gcarcolor2][i]=0;
    GangInfo[myteam][gcarsellpreis][i]=gcspreis[playerid]/4;
    gcars[myteam][i]=AddStaticVehicle(GangInfo[myteam][gcar][i],GangInfo[myteam][gcarx][i],GangInfo[myteam][gcary][i],GangInfo[myteam][gcarz][i],GangInfo[myteam][gcarfacing][i],0,0);
    new engine,lights,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(gcars[myteam][i],engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(gcars[myteam][i],engine,lights,alarm,VEHICLE_PARAMS_ON,bonnet,boot,objective);
    SetVehicleNumberPlate(gcar[myteam][i],GangInfo[myteam][gcarnumber][i]);
    SendClientMessage(playerid,ORANGE,"Fahrzeug Erfolgreich gekauft.");
    SendClientMessage(playerid,ORANGE,"Bitte parken sie ihr Fahrzeug mit /gpark.");
    SendClientMessage(playerid,ORANGE,"Weitere Befehle finden sie unter /commands.");
    }
    else
    {
    SendClientMessage(playerid,ROT,"Soviel Geld hat deine Gang nicht!");
    ShowPlayerDialog(playerid,DIALOG_GCARSHOP1_LIST,DIALOG_STYLE_LIST,"Bitte wählen sie ein Auto aus um weitere Optionen auszuwählen","Mesa\nBlista Compact\nComet\nBurrito\nGreenwood\nNebula\nMajestic\nBuccaneer\nGlendale\nHermes\nCamper\nMoonbeam\nVoodoo\nSentinel\nBravura\nLandstalker\nAlpha\nPicador\nStafford","Auswählen","Abbrechen");
    }
    }
    }
    else
    {
    SendClientMessage(playerid,ROT,"Sie haben die maximale Anzahl an Gang-Fahrzeugen erreicht");
    }
    }


    Danke für eure Hilfe.
    mfg.
    Opa
    EDIT// geschriebenes soeben gelöscht!
    EDIT 2// text neu geschrieben

    Guten Tag.
    Dadurch ich mein Gangsystem zurzeit dynamisch machen will stehe ich vor einem Problem:
    So wurde es definiert:
    enum GInfo
    {
    ...
    gcarnumber[MAX_TEAMSVEH][20],//Zeile 169
    gcarsellpreis[MAX_TEAMSVEH]
    ...
    }


    new GangInfo[MAX_TEAMS][GInfo];


    Nun die Zeile die Errors ausgibt:
    format(string,sizeof(string),"Hier können sie gebrauchte Gang-Fahrzeuge verkaufen.\nWenn sie dieses Gang-Fahrzeug verkaufen bekommen sie ein \nViertel des Kaufpreises zurück!\nWenn sie dies machen wollen drücken sie bitte auf \"Verkaufen\".\n \nVerkaufspreis: %i€",GangInfo[myteam][gcarsellpreis[i]]);


    Und zuletzt die Fehler:
    C:\Program Files (x86)\Rockstar Games\GTA San Andreas\gamemodes\tdm3.pwn(169) : error 001: expected token: "}", but found "["// Dieser Fehler ist die Variable im enum
    C:\Program Files (x86)\Rockstar Games\GTA San Andreas\gamemodes\tdm3.pwn(826) : error 017: undefined symbol "gcarsellpreis"
    C:\Program Files (x86)\Rockstar Games\GTA San Andreas\gamemodes\tdm3.pwn(826) : warning 215: expression has no effect
    C:\Program Files (x86)\Rockstar Games\GTA San Andreas\gamemodes\tdm3.pwn(826) : error 001: expected token: ";", but found "]"
    C:\Program Files (x86)\Rockstar Games\GTA San Andreas\gamemodes\tdm3.pwn(826) : error 029: invalid expression, assumed zero
    C:\Program Files (x86)\Rockstar Games\GTA San Andreas\gamemodes\tdm3.pwn(826) : fatal error 107: too many error messages on one line


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    5 Errors.


    Erklärung: (zu Zeile 169)
    Die letzte Zahl in der Klammer soll die Länge der Variable sein.
    Dadurch sich jetzt mehr Fehler auftischen liegt es wohl am enum.
    Jetzt wollte ich fragen ob es eine Möglichkeit gibt es ohne enum zu machen.


    Danke für eure Hilfe.


    mfg.
    Opa


    EDIT// Überschrift angepasst. habe noch keine Lösung gefunden
    EDIT2//Text hinzugefügt