[Frage] Random

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
  • So hallo Brotfische.


    Das ist mein Code.


    forward Schwarzmarkt();
    public Schwarzmarkt()
    {
    new Schwarz[64];
    format(Schwarz,sizeof(Schwarz),"/Schwarz/Schwarzmarkt.ini");
    if(dini_Int("/Schwarz/Schwarzmarkt.ini","Zeit") < 60)
    {
    dini_IntSet(Schwarz,"Zeit",dini_Int(Schwarz,"Zeit")+1);
    }
    if(dini_Int("/Schwarz/Schwarzmarkt.ini","Zeit") == 60)
    {
    KillTimer(Schwarz22);
    new rand = 1 + random(10);
    dini_IntSet(Schwarz,"Ort",rand);
    dini_IntSet(Schwarz,"Zeit",0);
    Schwarz22 = SetTimer("Schwarzmarkt", 60000, true);
    }

    }



    Wie kann ich jetzt machen das wenn Ort = 1 ist sagen wir die Objecte 1,2 und 3 an einem Ort Auftauchen
    wenn Ort = 2 ist tauchen sie an einem anderen Ort auf .


    Muss ich einfach


    forward Schwarzmarkt();
    public Schwarzmarkt()
    {
    new Schwarz[64];
    format(Schwarz,sizeof(Schwarz),"/Schwarz/Schwarzmarkt.ini");
    if(dini_Int("/Schwarz/Schwarzmarkt.ini","Zeit") < 60)
    {
    dini_IntSet(Schwarz,"Zeit",dini_Int(Schwarz,"Zeit")+1);
    }
    if(dini_Int("/Schwarz/Schwarzmarkt.ini","Zeit") == 60)
    {
    KillTimer(Schwarz22);
    new rand = 1 + random(10);
    dini_IntSet(Schwarz,"Ort",rand);
    dini_IntSet(Schwarz,"Zeit",0);
    Schwarz22 = SetTimer("Schwarzmarkt", 60000, true);
    }
    if(dini_Int("/Schwarz/Schwarzmarkt.ini","Ort") == 1)
    {
    CreateObject(blablabla);

    }
    if(dini_Int("/Schwarz/Schwarzmarkt.ini","Ort") == 2)
    {
    createObject(blablabla);
    }
    }

    [tabmenu][tab=Produktion][subtab='iProduction']

    [subtab='Projekt']

  • also so


    new old;
    old = dini_Get(Schwarz,"Ort"));
    DestroyObject(old);



    und oben


    new 1[24] // objecte


    1= createObject(blablabla)



    dann wenn Ort 1 ist werden alle objecte mit der Var 1 gelöscht ?

    [tabmenu][tab=Produktion][subtab='iProduction']

    [subtab='Projekt']

  • mit dem löschen geht das nicht so wie du willst du kannst nur einer variabel ein wert zuweisen.


    daher für drei objekte ( benutze wenn es sich anbietet immer ein array da dies ressourcen spart im gegensatz zum neu deklarieren von variabeln)


    objekt[3];

    objekt[0] = createObject(blablabla);
    objekt[1] = createObject(blablabla);
    objekt[2] = createObject(blablabla);


    und um alle zu löschen benutzt man eine schleife(loop). sizeof gibt den wert von objekt[] wieder also wie viele werte das array beinhaltet also hier 3.


    for(new i; i < sizeof(objekt); ++i)DestroyObject(objekt[i]);


    zum Thema setzen der Objekte woher nimmst du die zufäälige position aus einem array oder auch aus der ini weil dann könntest du die werte davon nehmen
    und jeweilige werte hinzurechnen
    Bsp:


    objekt[0] = createObject(1337,X,Y+5.0,Z, ......................);
    objekt[1] = createObject(1337,X,Y-5.0,Z, ......................);
    objekt[2] = createObject(1337,X+5,Y.0,Z, ......................);

  • also ich bin da grade selber hinter gekommen wie du :P


    Ist das so richtig ?


    es gibt 4 Orte auf der Map die werden alle 60 min geändert und die Objecte sind gleich und angenommen 99 Stück.


    new D[99];
    new C[99];
    new B[99];
    new A[99];


    dann bein On GameModeInit



    new Schwarz[64];
    format(Schwarz,sizeof(Schwarz),"/Schwarz/Schwarzmarkt.ini");
    if(dini_Exists(Schwarz))
    {
    dini_Set(Schwarz,"Zeit",dini_Get(Schwarz,"Zeit"));
    dini_Set(Schwarz,"Ort",dini_Get(Schwarz,"Ort"));
    Schwarz22 = SetTimer("Schwarzmarkt", 60000, true);
    }
    else
    {
    dini_Create(Schwarz);
    dini_IntSet(Schwarz,"Zeit",0);
    dini_IntSet(Schwarz,"Ort",0);
    return 1;
    }


    dann unten


    forward Schwarzmarkt();
    public Schwarzmarkt()
    {
    new Schwarz[64];
    format(Schwarz,sizeof(Schwarz),"/Schwarz/Schwarzmarkt.ini");
    if(dini_Int("/Schwarz/Schwarzmarkt.ini","Zeit") < 60)
    {
    dini_IntSet(Schwarz,"Zeit",dini_Int(Schwarz,"Zeit")+1);
    }
    if(dini_Int("/Schwarz/Schwarzmarkt.ini","Zeit") == 60)
    {
    KillTimer(Schwarz22);
    new rand = random(3)+1;
    dini_IntSet(Schwarz,"Ort",rand);
    dini_IntSet(Schwarz,"Zeit",0);
    Schwarz22 = SetTimer("Schwarzmarkt", 60000, true);
    for(new i; i < sizeof(D); ++i)
    {
    DestroyObject(D[i]);
    DestroyObject(C[i]);
    DestroyObject(B[i]);
    DestroyObject(A[i]);
    }
    }
    if(dini_Int("/Schwarz/Schwarzmarkt.ini","Ort") == 4)
    {
    D[1]=CreateObject(2587, 0, 0, 0, 0.0, 0.0, 96.0);
    }
    else if(dini_Int("/Schwarz/Schwarzmarkt.ini","Ort") == 3)
    {


    C[1]=CreateObject(2587, 0, 0, 0, 0.0, 0.0, 96.0);
    }
    else if(dini_Int("/Schwarz/Schwarzmarkt.ini","Ort") == 2)
    {
    B[1]=CreateObject(2587, 0, 0, 0, 0.0, 0.0, 96.0);
    }
    else if(dini_Int("/Schwarz/Schwarzmarkt.ini","Ort") == 1)
    {
    A[1]=CreateObject(2587, 0, 0, 0, 0.0, 0.0, 96.0);
    }


    return 1;
    }

    [tabmenu][tab=Produktion][subtab='iProduction']

    [subtab='Projekt']

  • iRFT
    ich denk das sollte von ihm nur ein beispiel sein


    Zitat

    es gibt 4 Orte auf der Map die werden alle 60 min geändert und die Objecte sind gleich und angenommen 99 Stück.


    er hat es schon verstanden davon geh ich mal aus



    new D[99];
    new C[99];
    new B[99];
    new A[99];


    kann man noch vereinfachen
    beispiel:
    new A[99][4];


    jedoch benutz nur so eine große array die du auch benötigst wenn du nur 10 Objekte hast dann benutze nur 10 Zellen
    da kannst auch ein define machen wenn du willst
    #define SCHM_O 10
    new A[SCHM_O ];