Beiträge von [RG]Stormi25

    ist dass den eigentlich so schnell möglich, schließlich habe ich das notebook im august 2014 gekauft


    normalerweise dauert dass doch länger mit dem verstauben


    nein habe kein spiel gespielt, es war im leerlauf, also nur spotify und Chrome offen


    habe ihn auch schon eingeschickt gehabt, aber es konnte kein hardware defekt festgestellt werden

    Hallo zusammen


    ich habe das Problem dass mein BF3 immer wieder mit der Directx Meldung abschmiert, siehe Anhang
    gestern habe ich dieses Problem dann einem fachmann gezeigt welcher mir sagte dass mein Grafikchip zu heiß werde



    Was soll ich jetzt am besten tun?


    Das Notebook ist von August 2014 und wurde bereits im Februar eingeschickt. Dort konnte kein Hardware Defekt festgestellt werden


    LG

    Hallo zusammen


    wir werden heute ein 3Dimensionales Array bauen
    bezogen wird das ganze auf Busstrecken


    Es ist eine Erweiterung von dem Tutorial von Goldkiller *klick mich*


    Um diesem Tutorial zu folgen müsst ihr folgende Vorraussetzungen erfüllen :)



    1. Erfahrung mit Enums
    2. 1-3 Busstrecken die ihr Ingame schon gesaved habt
    3. das OCMD Include
    3. SpielerEnum und ggf eine MYSQL Verbindung da ich dies auf MYSQL schreibe bzgl des Jobsystems



    ich werde dieses System direkt so umschreiben, dass es ein direktes JobSystem ist.


    Solltet ihr bereits eins haben so müsst ihr nicht Alle schritte befolgen und lediglich anpassen


    Bei Fehlern und Problemen
    Ich werde die 1. Zeit immer in einem Livestream auf Twitch zur Verfügung stehen um dort Probleme und ähnlichem genau zu erklären

    Bei Fehlern und Problemen
    Ein Ausführliches Live Tutorial gibts hier auch



    Nun wir teilen dieses Tutorial in 3 Schritte


    1. Vorbereitungen
    2. Das Grundgerüst
    3. Anpassung auf das JobSystem



    Die Vorbereitungen


    Also zuerst werden wir nun die Enums erstellen die wir benöigen
    In Diesem Fall sind es 3
    1. Das SpielerEnum, welches ihr sowieso zu Anfang erstellt um die Daten aus der DB zu laden



    Bei dem Spielerenum brauchen wir nun folgende Dinge


    Checkpoints,
    r_id,
    bool:aktiv //Entweder True oder False



    beim letzten wird das Komma weggelassen


    Anschließend erstellen wir 2 weitere Enums


    enum busroutenEnum{ //brroutes
    Float:b_x,
    Float:b_y,
    Float:b_z,
    Float:b_rad,
    win

    }
    enum busstartsenum{ //brInfo

    Float:b_x,
    Float:b_y,
    Float:b_z,
    b_cps
    }


    im 1. Enum davon werden die Routen festgelegt also die Checkpoints etc. Auch habe ich mir gedacht dass wir hier den Gewinn einfügen


    beim 2. Enum werden die Startcheckpoints festgelegt + die Anzahl der Checkpoints


    --------------------------------------------------------------------


    Nun wollen wir das ganze ja auch verwenden also erstellen wir uns news



    new brInfo[][busstartsenum] = {
    // X Y Z ANZAHL DER CHECKPOINTS
    {2221.6140,1866.6394,10.3858, 10},
    {1243.3254,-1847.2728,13.1883,7},
    //{},


    };
    //brInfo[playerid][b_x]
    //brroutes[playerid][b_x]
    new brroutes[][][busroutenEnum] = {
    // X Y Z Radius Gewinn,RoutenID


    { //LV nach LS
    {2154.9355,1961.0078,10.2405,5.0,250},
    {2178.5608,2349.9243,10.2335,5.0,250},
    {2119.5234,2061.8625,10.2251,5.0,250},
    {2039.7462,1005.9709,10.2359,5.0,250},
    {1789.3076,801.3461,10.6779,5.0,250},
    {1673.3729,-785.5421,54.4621,5.0,250},
    {1186.4357,-934.5354,42.2987,5.0,250},
    {958.2468,-1080.1121,24.5061,5.0,250},
    {1028.4401,-1331.0526,12.9473,5.0,250},
    {1151.0576,-1409.2263,13.0779,5.0,250}
    },
    { //LS nach SF
    {1243.3254,-1847.2728,13.1883,5.0,250},
    {670.6043,-1735.1041,13.2707,5.0,250},
    {278.9674,-1513.9545,32.1741,5.0,250},
    {-130.4320,-1230.6105,2.5817,5.0,250},
    {-1787.2384,-571.1826,16.1349,5.0,250},
    {-1986.4297,151.1903,27.3380,5.0,250},
    {-1950.5823,576.5387,34.8990,5.0,250},
    {0.0, 0.0, 0.0, 0.0, 0},
    {0.0, 0.0, 0.0, 0.0, 0},
    {0.0, 0.0, 0.0, 0.0, 0}
    //{}
    //{}
    }




    };
    Im Ersten ist wie oben beschrieben die Startpoints festgelegt
    Wichtig dabei ist dass die Anzhal der Checkpoints hinten festgelegt wird


    da wir sonst ein Problem bekommen, wenn wir weniger als 10 Chckpoints haben verwenden wir sogenannte "Platzhalter"


    die sehen so aus {0.0, 0.0, 0.0, 0.0, 0}


    haben wir bei einer Strecke jetzt nur 8 von 10 Points so geben wir oben beim definieren der Startpunkte nur 8 an und die leeren Checkpoints werden nicht aufgerufen!






    Schritt 2, Das Grundgerüst


    Nun erstellen wir einen Befehl für die Jobauswahl


    ocmd:startjobs(playerid,params[])
    {
    ShowPlayerDialog(playerid,ANMELDUNGEN,DIALOG_STYLE_LIST,"Anmeldestellen","Busfahrer/in Los Santos \nBusfahrer Las Venturas","Anmeldung","Abbrechen");
    return 1;
    }

    ich hab den Busfaher in LS und LV getrent


    Nun werden wir dafür den Dialog oben erstellen


    entweder


    #define ANMELDUNEN 5213
    oder ihr macht es in einem Enum wo ihr die Zahlen dann nicht braucht


    enum {
    ANMELDUNGEN
    //WEITERES
    }; 
    Anschließend gehen wir zu
    OnDialogResponse


    und fügt dort die DialogID mit den Listitems ein


    also so
    if(dialogid == ANMELDUNGEN)
    {
    if(!response) return 1;
    if (listitem == 0)
    {


    SendClientMessage(playerid,CL_HBLUE,"Du hast den Busfahrer/innen-Job gestartet -> Fahre nun zur Anmeldestelle von Bus - Los Santos GmbH!");
    Roads[playerid] = 1;
    SetPlayerCheckpoint(playerid,1268.6335,-1816.1614,13.1145,7.0); //Annahme Stelle

    return 1;
    }
    if (listitem == 1)//Busfahrer LV
    {

    SendClientMessage(playerid,CL_HBLUE,"Du hast den Busfahrer/innen-Job gestartet -> Fahre nun zur Anmeldestelle von Bus - Las Venturas GmbH!");
    Roads[playerid] = 2;
    SetPlayerCheckpoint(playerid,2221.6140,1866.6394,10.3858,7.0); //Annahme Stelle

    return 1;
    }

    }
    Das ganze habe ich dann noch mit Roads getrennt
    wofür ihr oben
    new Roads[MAX_PLAYERS];
    erstellen müsst
    es ist eine Abfrage welche Busfahrerjob jetzt gewählt wurde damit ihr den Spieler zur annahme stelle Schicken könnt


    Wir haben den Spieler ja jetzt einen festen Checkpoint gesetzt


    daher gehen wir jetzt zu
    OnPlayerEnterCheckpoint


    wo wir unser Roads benutzen werden


    public OnPlayerEnterCheckpoint(playerid)
    {


    if(sInfo[playerid][aktiv])
    {
    DisablePlayerCheckpoint(playerid);
    new playercp = sInfo[playerid][Checkpoints],string[256];
    if(playercp >= brInfo[sInfo[playerid][r_id]][b_cps])

    }


    zuerst machen wir eine Abfrage ob er einen aktivien Job haben. Dis wird in der Regel dann gesetzt nachdem er den Job angenommen hat


    anschließend


    wird folgendes gemacht{
    sInfo[playerid][aktiv] = false;
    SendClientMessage(playerid,RED,"Du hast deine Strecke abgeschlossen. Du erhälst als Belohnung einen Geldbündel mit einer Rechnung");
    SendClientMessage(playerid,CL_ORANGE,"----[Rechnung]----");
    new gewinn;
    for(new i=0; i<brInfo[sInfo[playerid][r_id]][b_cps]; i++)
    {
    gewinn+=brroutes[sInfo[playerid][r_id]][i][win];
    }
    gewinn+=win_city_change;
    format(string,sizeof(string),"Verdienst $%i + $%i Euro Stadtwechsel = %i",gewinn-win_city_change, win_city_change, gewinn);
    SendClientMessage(playerid,CL_GREEEN,string);
    GivePlayerMoney(playerid,gewinn);
    SendClientMessage(playerid,CL_ORANGE,"----[Rechnung]----");
    }

    Wir setzen dem Spieler noch den Gewinn für jeden Checkpoint und addieren ihn
    Er wird ihm dann als Gewinn gutgeschrieben


    zum Schluss brauchen wir hier noch ein else damit wir wissen was passiert wenn er einen aktiven Job hat


    else
    {
    SetPlayerCheckpoint(playerid,brroutes[sInfo[playerid][r_id]][playercp][b_x],brroutes[sInfo[playerid][r_id]][playercp][b_y],brroutes[sInfo[playerid][r_id]][playercp][b_z],10);
    sInfo[playerid][Checkpoints] ++; // ++ ist das gleiche wie +1
    }


    sodass der befehl dann so aussieht if(sInfo[playerid][aktiv])
    {
    DisablePlayerCheckpoint(playerid);
    new playercp = sInfo[playerid][Checkpoints],string[256];
    if(playercp >= brInfo[sInfo[playerid][r_id]][b_cps])
    {
    sInfo[playerid][aktiv] = false;
    SendClientMessage(playerid,RED,"Du hast deine Strecke abgeschlossen. Du erhälst als Belohnung einen Geldbündel mit einer Rechnung");
    SendClientMessage(playerid,CL_ORANGE,"----[Rechnung]----");
    new gewinn;
    for(new i=0; i<brInfo[sInfo[playerid][r_id]][b_cps]; i++)
    {
    gewinn+=brroutes[sInfo[playerid][r_id]][i][win];
    }
    gewinn+=win_city_change;
    format(string,sizeof(string),"Verdienst $%i + $%i Euro Stadtwechsel = %i",gewinn-win_city_change, win_city_change, gewinn);
    SendClientMessage(playerid,CL_GREEEN,string);
    GivePlayerMoney(playerid,gewinn);
    SendClientMessage(playerid,CL_ORANGE,"----[Rechnung]----");
    }
    else
    {
    SetPlayerCheckpoint(playerid,brroutes[sInfo[playerid][r_id]][playercp][b_x],brroutes[sInfo[playerid][r_id]][playercp][b_y],brroutes[sInfo[playerid][r_id]][playercp][b_z],10);
    sInfo[playerid][Checkpoints] ++; // ++ ist das gleiche wie +1
    }
    }



    Nun unser aktueller Stand ist, dass der Spieler nun einen Startpunkt bekommt bzw die folgenden Checkpoints bekommt


    Ich werde im OnPlayerEnterCheckpoint nun auf folgendes eingehen,
    SetPlayerCheckpoint(playerid,brroutes[sInfo[playerid][r_id]][playercp][b_x],brroutes[sInfo[playerid][r_id]][playercp][b_y],brroutes[sInfo[playerid][r_id]][playercp][b_z],10);
    denn dies ist unser 3Dimensionales Array was wir nun benötigen


    brroutes[sInfo[playerid][r_id]][playercp][b_x]
    fragt die X Koordinate der R_id ab also die RoutenID


    d.h wir brauchen bei jeder Checkpoint abfrage die R_id!
    if(playercp >= brInfo[sInfo[playerid][r_id]][b_cps])


    fragt ab ob der Spieler die Maximale Anzahl der Checkpioints erreicht also in dem Falle 10, bzw die angegebene Zahl!
    wenn ja wird der Checkpoint disabled und der Gewinn verteilt



    Nun haben wir folgenden Standpunkt:


    Spieler startet Job mit /startjobs und wählt Busfahrer aus
    Spieler bekommt anmeldepunkt
    Spieler bekommt die Checkpoints
    Spieler bekommt Gewinn bei Abschluss


    ich hoffe ich habe nix vergessen,
    werde das ganze von der Größe anpassen und fertig editieren


    LG


    Stormi25


    Jeffry



    so sieht das bei mir aus


    public OnPlayerCarsLoad(playerid) //Autos laden ^^
    {
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(!num_rows)return 1;
    for(new i=0; i<num_rows; i++)
    {
    new id = getFreeCarID();
    cInfo[id][model]=cache_get_field_content_int(i,"model",dbhandle);
    cInfo[id][besitzer]=cache_get_field_content_int(i,"besitzer",dbhandle);
    cInfo[id][c_x]=cache_get_field_content_float(i,"x",dbhandle);
    cInfo[id][c_y]=cache_get_field_content_float(i,"y",dbhandle);
    cInfo[id][c_z]=cache_get_field_content_float(i,"z",dbhandle);
    cInfo[id][c_r]=cache_get_field_content_float(i,"r",dbhandle);
    // cInfo[id][key][0]=cache_get_field_content_int(i,"key_0",dbhandle);
    cInfo[id][db_id]=cache_get_field_content_int(i,"id",dbhandle);
    cInfo[id][kmstand]=cache_get_field_content_float(i,"kmstand",dbhandle);
    cInfo[id][id_x]=CreateVehicle(cInfo[id][model],cInfo[id][c_x],cInfo[id][c_y],cInfo[id][c_z],cInfo[id][c_r],-1,-1,-1);
    cInfo[id][liter] = cache_get_field_content_int(i,"tank",dbhandle);
    printf("liter =%i",cInfo[id][liter]);
    cInfo[id][zustand] = cache_get_field_content_float(i,"zustand",dbhandle);
    SetVehicleHealth(id,cInfo[id][zustand]);

    }
    return 1;
    }


    loadPlayerCars(playerid) //Autos laden Funktion
    {
    new query[256];
    format(query,sizeof(query),"SELECT * FROM autos WHERE besitzer='%i'",sInfo[playerid][db_id]);
    mysql_function_query(dbhandle,query,true,"OnPlayerCarsLoad","i",playerid);
    return 1;
    }