Beiträge von Dachdecker

    Ich hab es mal so getestet und es kam nicht einmal vor, dass rnd und rnd2 gleich waren



    if(strcmp("/test", cmdtext, true, 10) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    new rnd = random(50)+1,
    rnd2= random(50)+1,
    rndstring[30];
    if(rnd2 == rnd)
    {
    rnd2=random(50)+1;
    }
    else
    {
    format(rndstring, sizeof(rndstring), "RND: %d ------ RND2: %d", rnd, rnd2);
    SendClientMessage(playerid, Weiss, rndstring);
    }
    }
    return 1;
    }

    @Jeffry


    Das CreatePickup wird erstellt, aber das Create3DTextLabel nicht..


    Und mir fehlt noch ein /bizerstellen befehl.. kommt mit deinem tut da nicht zurecht ... Du hast da iwas mit idx und bla blub..



    stock BusinessLaden()
    {
    new erstellteBusinesses, path[64], BizString[200];
    for(new i=0; i<Max_Businesses; i++)
    {
    format(path, sizeof(path), "/Businesses/%d.ini", i);
    if(!fexist(path)) continue;

    strmid(BusinessInfo[i][B_Besitzer],dini_Get(path,"BizBesitzer"),false,strlen(dini_Get(path,"BizBesitzer")),MAX_PLAYER_NAME);
    strmid(BusinessInfo[i][B_Inteilhaber],dini_Get(path,"BizInteilhaber"),false,strlen(dini_Get(path,"BizInteilhaber")),MAX_PLAYER_NAME);
    BusinessInfo[i][B_Kasse] = dini_Int(path, "BizKasse");
    BusinessInfo[i][B_Pakete] = dini_Int(path, "BizPakete");
    BusinessInfo[i][B_Pos_X] = floatstr(dini_Get(path, "Biz_X"));
    BusinessInfo[i][B_Pos_Y] = floatstr(dini_Get(path, "Biz_Y"));
    BusinessInfo[i][B_Pos_Z] = floatstr(dini_Get(path, "Biz_Z"));
    BusinessInfo[i][B_ID] = dini_Int(path, "BizID");

    if(BusinessInfo[i][B_ID] <= Max_Businesses)
    {
    format(BizString, sizeof(BizString), "Besitzer: %s\nInteilhaber: %s\nKasse: %d\nPakete: %d", BusinessInfo[i][B_Besitzer], BusinessInfo[i][B_Inteilhaber], BusinessInfo[i][B_Kasse], BusinessInfo[i][B_Pakete]);
    Create3DTextLabel(BizString, Weiss, BusinessInfo[i][B_Pos_X], BusinessInfo[i][B_Pos_Y], BusinessInfo[i][B_Pos_Z], 5, 0,0);
    CreatePickup(1272, 1, BusinessInfo[i][B_Pos_X], BusinessInfo[i][B_Pos_Y], BusinessInfo[i][B_Pos_Z] ,0);
    }
    else
    {
    printf("Fehler: BizID %d existiert nicht.", BusinessInfo[i][B_ID]);
    }

    erstellteBusinesses++;
    if(erstellteBusinesses == Max_Businesses) return print("Es können keine weiteren Businesses geladen werden, Limit (Max_Businesses) erreicht.");
    }
    return 1;
    }

    Hallo ihr lieben,


    ich habe soeben ein BusinessSystem angefangen.. Ich möchte gerne wissen, wo ich es am Besten Speichere und Lade. Und was beim stock BusinessLaden und BusinessSpeichern in Klammern stehen sollte.


    Hier meine Ansätze:



    stock BusinessErstellen(Name[MAX_PLAYER_NAME], Teilhaber[MAX_PLAYER_NAME], BPakete, Float:X, Float:Y, Float:Z)
    {
    new BusinessDatei[64];
    format(BusinessDatei, sizeof(BusinessDatei), "Businesses/%s.txt", Name);
    dini_Create(BusinessDatei);
    dini_Set(BusinessDatei, "Besitzer", Name);
    dini_Set(BusinessDatei, "Inteilhaber", Teilhaber);
    dini_IntSet(BusinessDatei, "Pakete", BPakete);
    dini_FloatSet(BusinessDatei, "B_Pos_X", X);
    dini_FloatSet(BusinessDatei, "B_Pos_Y", Y);
    dini_FloatSet(BusinessDatei, "B_Pos_Z", Z);
    return 1;
    }
    stock BusinessLaden(Name[MAX_PLAYER_NAME])
    {
    new BusinessDatei[64], BusinessString[200];
    format(BusinessDatei, sizeof(BusinessDatei), "Businesses/%s.txt", Name);
    for(new i = 0; i<MAX_Businesses; i++)
    {
    BusinessInfo[i][Besitzer] = dini_Get(BusinessDatei, "Besitzer");
    BusinessInfo[i][Inteilhaber] = dini_Get(BusinessDatei, "Inteilhaber");
    BusinessInfo[i][Pakete] = dini_Int(BusinessDatei, "Pakete");
    BusinessInfo[i][B_Pos_X] = dini_Float(BusinessDatei,"B_Pos_X");
    BusinessInfo[i][B_Pos_Y] = dini_Float(BusinessDatei,"B_Pos_Y");
    BusinessInfo[i][B_Pos_Z] = dini_Float(BusinessDatei,"B_Pos_Z");
    format(BusinessString, sizeof(BusinessString), "Inhaber: %s\nInteilhaber: %s\nPakete: %i\nKasse: %i$", BusinessInfo[i][Besitzer],BusinessInfo[i][Inteilhaber],BusinessInfo[i][Pakete],BusinessInfo[i][Kasse]);
    Create3DTextLabel(BusinessString, Weiss, BusinessInfo[i][B_Pos_X], BusinessInfo[i][B_Pos_Y], BusinessInfo[i][B_Pos_Z], 5,0,0);
    }
    return 1;
    }
    stock BusinessSpeichern(Name[MAX_PLAYER_NAME])
    {
    new BusinessDatei[64];
    format(BusinessDatei, sizeof(BusinessDatei), "Businesses/%s.txt", Name);
    for(new i = 0; i<MAX_Businesses; i++)
    {
    dini_Set(BusinessDatei, "Besitzer", BusinessInfo[i][Besitzer]);
    dini_Set(BusinessDatei, "Inteilhaber", BusinessInfo[i][Inteilhaber]);
    dini_IntSet(BusinessDatei, "Pakete", BusinessInfo[i][Pakete]);
    dini_FloatSet(BusinessDatei, "B_Pos_X", BusinessInfo[i][B_Pos_X]);
    dini_FloatSet(BusinessDatei, "B_Pos_Y", BusinessInfo[i][B_Pos_Y]);
    dini_FloatSet(BusinessDatei, "B_Pos_Z", BusinessInfo[i][B_Pos_Z]);
    }
    return 1;
    }


    Der Befehl zum Erstellen:



    ocmd:bizerstellen(playerid, params[])
    {
    new BSpielerName[MAX_PLAYER_NAME], BizTeilhaber[MAX_PLAYER_NAME], BizPakete, Float:B_X, Float:B_Y, Float:B_Z;
    if(sscanf(params, "ssi", BSpielerName, BizTeilhaber, BizPakete)) return SendClientMessage(playerid, Weiss, "/bizerstellen [SpielerName][Teilhaber][Pakete]");
    if(SpielerInfo[playerid][AdminLevel] <= 5) return SendClientMessage(playerid, Weiss, "");
    GetPlayerPos(playerid, B_X, B_Y, B_Z);

    BusinessErstellen(BSpielerName, BizTeilhaber, BizPakete, B_X, B_Y, B_Z);
    printf("SpielerName: %s, Teilhaber: %s, Pakete: %i, FloatX: %f, FloatY: %f, FloatZ: %f", BSpielerName, BizTeilhaber, BizPakete, B_X, B_Y, B_Z);
    SendClientMessage(playerid, Weiss, "Biz erstellt");
    return 1;
    }

    Vielen Dank Jeffry.


    Ich hätte eine weitere Frage.


    Wie kann ich jetzt mit sagen wir mal "stock" eine Funktion machen wo das Businesserstellt wird (ingame per Befehl) in txt gespeichert und selbstverständlich beim Start des Servers ausgelesen?
    Kannst du mir eventuell dabei auch helfen? @Jeffry

    @BenQ Das ist syntakisch völlig daneben.


    Das Problem ist, dass du im enum Besitzer schreibst und im format Inhaber.
    BusinessInfo[i][Inhaber]
    Zu
    BusinessInfo[i][Besitzer]

    Verdammt Jeffry du hast total recht, das offentlichliche nicht erkannt. vielen dank

    Probiere mal so.
    new BusinessString[200];for(new i = 0; i<MAX_Businesses; i++){format(BusinessString, sizeof(BusinessString), "Inhaber: %s\nInteilhaber: %s\nKasse: %i$", BusinessInfo[i][Inhaber],BusinessInfo[i][Inteilhaber],BusinessInfo[i][Kasse]);Create3DTextLabel(BusinessString, Weiss, BusinessInfo[MAX_Businesses][BInfo][B_Pos_X], BusinessInfo[MAX_Businesses][BInfo][B_Pos_Y], BusinessInfo[MAX_Businesses][BInfo][B_Pos_Z], 5,0,0);}


    E:\Grand Theft Auto San Andreas\Server\gamemodes\Selfmade.pwn(341) : warning 213: tag mismatch
    E:\Grand Theft Auto San Andreas\Server\gamemodes\Selfmade.pwn(341) : error 032: array index out of bounds (variable "BusinessInfo")
    E:\Grand Theft Auto San Andreas\Server\gamemodes\Selfmade.pwn(342) : error 032: array index out of bounds (variable "BusinessInfo")
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase




    2 Errors.


    Fehler 341 bei format
    Fehler 342 bei Create3DTextLabel