Beiträge von Golemcraftler

    Hallo liebe Breadfish Kumpels, hallo Jeffry


    Da ich nach dem Racesystem nochmals die Fraktionen unter die Lupe genommen habe (kein schimmel vorhanden)
    wollte ich noch 1 Bug beheben


    Also es werden keine Pickups für die Fraktionen erstellt



    Hier mal der Aufbau


    die defines

    //Staatliche einrichtungen | Fraktionen
    #define SFPDDutyEquipPoint 238.0306,125.4313,1003.2188 // >
    #define SFPDHealPoint 242.3738,108.9842,1003.2188 // >
    #define SFPDIntID 10

    die defines
    #define LSPDDutyPoint 324.7148,305.5775,999.1484 // >
    #define LSPDHealPoint 321.9749,315.2595,999.1484 // >
    #define LSPDIntID 5

    die defines
    #define ArmyABDutyPoint 223.7495,1869.6224,13.1406 // >
    #define ArmyABHealPoint 240.0738,1859.0677,14.0840 // >
    #define ArmyHBDuty_EquipPoint 414.5320,2531.6768,19.1618 // >
    #define ArmyHBHealPoint 413.9103,2539.3020,16.5276 // >



    dann mein enum


    enum dutyPoints {
    d_name[64],
    d_pickup,
    Float:dx,
    Float:dy,
    Float:dz,
    Text3D:d_text,
    dv,
    v_world
    };



    new dP[MAX_DPOINTS][dutyPoints] = {
    {"LSPD-Duty Punkt",1239, 324.7148, 305.5775, 999.1484},
    {"SFPD-Duty|Equip Punkt",1239,238.0306,125.4313,1003.2188},
    {"Army-Duty Punkt",1239,223.7495,1869.6224,13.1406},//AB
    {"Army-Duty|Equip Punkt",1239,414.5320,2531.6768,19.1618},//HB
    {"SAMAG-Duty Punkt",1239,1805.0970,-1303.9603,71.2734},
    {"SAMAG-EQUIP Punkt",1239,1803.2406,-1304.9993,71.2734},


    //HEALS
    {"SFPD-Heal Punkt",1240,242.3738,108.9842,1003.2188},
    {"LSPD-Heal Punkt",1240,321.9749,315.2595,999.1484},
    {"Army-Heal Punkt",1240,240.0738,1859.0677,14.0840}, //AB
    {"Army-Heal Punkt",1240,413.9103,2539.3020,16.5276} //HB
    };


    und bei Ongamemodeinit die schleife die diese erstellen soll


    for(new b=0; b<MAX_DPOINTS; b++)
    {
    new string[128];
    format(string,64,"%s",dP[b][d_name]);
    CreatePickup(dP[b][d_pickup],1,dP[b][dx],dP[b][dy],dP[b][dz],dP[b][dv]);
    dP[b][d_text] = Create3DTextLabel(string,CL_ORANGE,dP[b][dx],dP[b][dy],dP[b][dz],0,dP[b][dv],0);
    }


    hoffe ihr könnt ihr mir auch bei diesem Fall helfen



    Vielen Dank im Vorraus


    Golemcraftler

    also


    das mit den Checkpoints klappt soweit die werden soweit alle angezeigt


    jetzt sollen die spieler gefreezed werden wenn sie in die Startlinie fahren und unfreezed wenn /startrace benutzt wird


    /joinevent soll dann auch gesperrt werden (in diesem fall für 30 min da dies eine Eventsperre sein sol)


    hier nochmals der befehl /startrace und /joinevent


    /startrace
    ocmd:joinevent(playerid,params[])
    {
    switch (eventstart)
    {
    case 0: {
    //Mitte
    new vID = CreateVehicle(502,1156.4369,-897.5735,42.8511,183.1492,-1,-1,60);
    SetPlayerPos(playerid,1156.4369,-897.5735,42.8511);
    PutPlayerInVehicle(playerid,vID,0);
    eventstart = 2;
    SendClientMessage(playerid,CL_GREEEN,"Du bist dem Event beigetreten. Fahre nun an die Startlinie!");
    jEvent[playerid] = 1;
    SetPlayerCheckpoint(playerid,1159.2834,-929.9013,43.23885 , 5.0);
    return 1;
    }
    //Rechts
    case 1: {
    new vID = CreateVehicle(503,1152.7489,-897.8755,42.8496,183.1492,-1,-1,60);
    SetPlayerPos(playerid,1152.7489,-897.8755,42.8496);
    PutPlayerInVehicle(playerid,vID,0);
    eventstart = 0;
    SetPlayerCheckpoint(playerid,1159.2834,-929.9013,43.23885 , 5.0);
    SendClientMessage(playerid,CL_GREEEN,"Du bist dem Event beigetreten. Fahre nun an die Startlinie!");
    jEvent[playerid] = 1;
    return 1;
    }
    //Links
    case 2:{
    SetPlayerCheckpoint(playerid,1159.2834,-929.9013,43.23885 , 5.0);
    new vID = CreateVehicle(502,1162.0453,-897.6024,42.8875,183.1492,-1,-1,60);
    SetPlayerPos(playerid,1162.0453,-897.6024,42.8875);
    PutPlayerInVehicle(playerid,vID,0);
    eventstart = 1;
    SendClientMessage(playerid,CL_GREEEN,"Du bist dem Event beigetreten. Fahre nun an die Startlinie!");
    jEvent[playerid] = 1;
    return 1;
    }
    }
    return 1;
    }


    und /startrace


    forward Racestart(playerid);
    public Racestart(playerid)
    {
    for(new i= 0; i<MAX_PLAYERS; i++)
    {
    if(jEvent[i] == 1 && LSRACE[i] == 1) continue;
    printf("jevent[%i] == 1 && LSRACE[%i] == 1",i,i);
    TogglePlayerControllable(i,1);
    DisablePlayerCheckpoint(i);
    SetPlayerCheckpoint(i,1104.4375,-949.0429,42.8388,8); //1. Checkpoint
    SendClientMessage(i,RED,"GO GO GO!");
    SendClientMessageToAll(RED,"GO GO GO! Das Rennen wurde gestartet!");
    LSRACE[playerid] = 1;
    OnPlayerEnterCheckpoint(i);

    }
    //SetPlayerCheckpoint(playerid,1104.4375,-949.0429,42.8388,8);
    return 1;
    }


    ocmd:startrace(playerid,params[])
    {
    SetTimerEx("Racestart",10000,false,"");
    SendClientMessageToAll(CL_ORANGE,"Das Rennen startet in 10 Sekunden");
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(jEvent[i] == 1) continue;
    TogglePlayerControllable(i,0);
    SCMTOADMIN("Spieler im Rennen wurden gefreezed");
    SetPlayerCheckpoint(i,1159.2834,-929.9013,43.23885,8); //Startlinie
    }
    return 1;
    }



    danke nochmal Jeffry das hat mir alles schon sehr sehr geholfen ;)

    also so



    if(jEvent[playerid] == 1)
    {
    new string[256];
    if(LSRACE[playerid] == 1)
    {
    DisablePlayerCheckpoint(playerid);
    format(string,sizeof(string),"%s erreichte Checkpoint 1",SpielerName(playerid));
    SetTimerEx("Race",200,false,"i",playerid);
    SCMTOADMIN(string);
    return 1;
    }
    if(LSRACE[playerid] == 2)
    {
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,804.7927,-1047.2712,25.1715,8);
    format(string,sizeof(string),"%s erreichte Checkpoint 2",SpielerName(playerid));
    SetTimerEx("Race",200,false,"i",playerid);
    SCMTOADMIN(string);
    return 1;
    }
    if(LSRACE[playerid] == 3)
    {
    //new string[128];
    DisablePlayerCheckpoint(playerid);
    //SetPlayerCheckpoint(playerid,,8);
    format(string,sizeof(string),"%s hat das Ziel erreicht!",SpielerName(playerid));
    SendClientMessageToAll(RED,string);
    return 1;
    }
    }


    Jeffry




    werde es eben mal ausprobieren


    beim Compilieren habe ich dort noch


    printf("%s = %i",SpielerName(playerid,LSRACE[playerid]));


    number of arguments does not match

    okay also siehts nun so aus


    also jetzt für die ersten 2 als BSP

    OnPlayerEnterCheckpoint
    public OnPlayerEnterCheckpoint(playerid)
    {
    /* #define RacelinieLS 1159.2834,-929.9013,43.23885
    #define RacepointLS1 1104.4375,-949.0429,42.8388
    #define RacepointLS2 936.9182,-968.8925,38.5286
    #define RacePointLS3 804.7927,-1047.2712,25.1715*/

    OnPlayerEnterCheckpoint

    if(jEvent[playerid] == 1)
    {
    new string[256];
    if(LSRACE[playerid] == 1)
    {
    DisablePlayerCheckpoint(playerid);
    format(string,sizeof(string),"%s erreichte Checkpoint 1",SpielerName(playerid));
    SetTimerEx("Race",200,false,"i",playerid);
    LSRACE[playerid] = 2;
    SCMTOADMIN(string);
    return 1;
    }
    if(LSRACE[playerid] == 2)
    {
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,804.7927,-1047.2712,25.1715,8);
    format(string,sizeof(string),"%s erreichte Checkpoint 2",SpielerName(playerid));
    LSRACE[playerid] = 3;
    SetTimerEx("Race",200,false,"i",playerid);
    SCMTOADMIN(string);
    return 1;
    }


    Jeffry

    wo rufe ich

    PAWN Quelltext 1 Race(playerid)
    auf?



    also siehts dann so aus?!



    bei OnPlayerEnterCheckpoint das habe ich gelöscht

    Hier alles zum Racesystem
    ocmd:joinevent(playerid,params[])
    {
    switch (eventstart)
    {
    case 0: {
    //Mitte
    new vID = CreateVehicle(502,1156.4369,-897.5735,42.8511,183.1492,-1,-1,60);
    SetPlayerPos(playerid,1156.4369,-897.5735,42.8511);
    PutPlayerInVehicle(playerid,vID,0);
    eventstart = 2;
    SendClientMessage(playerid,CL_GREEEN,"Du bist dem Event beigetreten. Fahre nun an die Startlinie!");
    jEvent[playerid] = 1;
    //SetPlayerCheckpoint(playerid, , 5.0);
    return 1;
    }
    //Rechts
    case 1: {
    new vID = CreateVehicle(503,1152.7489,-897.8755,42.8496,183.1492,-1,-1,60);
    SetPlayerPos(playerid,1152.7489,-897.8755,42.8496);
    PutPlayerInVehicle(playerid,vID,0);
    eventstart = 0;
    SendClientMessage(playerid,CL_GREEEN,"Du bist dem Event beigetreten. Fahre nun an die Startlinie!");
    jEvent[playerid] = 1;
    return 1;
    }
    //Links
    case 2:{
    new vID = CreateVehicle(502,1162.0453,-897.6024,42.8875,183.1492,-1,-1,60);
    SetPlayerPos(playerid,1162.0453,-897.6024,42.8875);
    PutPlayerInVehicle(playerid,vID,0);
    eventstart = 1;
    SendClientMessage(playerid,CL_GREEEN,"Du bist dem Event beigetreten. Fahre nun an die Startlinie!");
    jEvent[playerid] = 1;
    return 1;
    }
    }
    return 1;
    }
    forward Racestart(playerid);
    public Racestart(playerid)
    {
    for(new i= 0; i<MAX_PLAYERS; i++)
    {
    if(jEvent[i] == 1 && LSRACE[i] == 1) continue;
    printf("jevent[%i] == 1 && LSRACE[%i] == 1",i,i);
    TogglePlayerControllable(i,1);
    DisablePlayerCheckpoint(i);
    SetPlayerCheckpoint(i,1104.4375,-949.0429,42.8388,8); //1. Checkpoint
    SendClientMessage(i,RED,"GO GO GO!");
    SendClientMessageToAll(RED,"GO GO GO! Das Rennen wurde gestartet!");
    LSRACE[playerid] = 1;
    OnPlayerEnterCheckpoint(i);

    }
    //SetPlayerCheckpoint(playerid,1104.4375,-949.0429,42.8388,8);
    return 1;
    }
    forward Race(playerid);
    public Race(playerid)
    {
    if(LSRACE[playerid] == 1)
    {
    SetPlayerCheckpoint(playerid,936.4375,-968.8925,38.5286,8);
    LSRACE[playerid] = 2;
    }
    else if(LSRACE[playerid] == 2)
    {
    SetPlayerCheckpoint(playerid,804.7927,-1047.2712,25.1715,8);
    LSRACE[playerid] = 3;
    }
    else if(LSRACE[playerid] == 3)
    {
    SetPlayerCheckpoint(playerid,804.7927,-1047.2712,25.1715,8);
    LSRACE[playerid] = 4;
    }
    else if(LSRACE[playerid] == 4)
    {

    LSRACE[playerid] = 5;
    }
    else if(LSRACE[playerid] == 5)
    {

    LSRACE[playerid] = 6;
    }

    //RaceLS[playerid];// = RaceLS[playerid] +1;
    printf("%s = %i",SpielerName(playerid,RaceLS[playerid]);
    return 1;
    }
    ocmd:startrace(playerid,params[])
    {
    SetTimerEx("Racestart",10000,false,"");
    SendClientMessageToAll(CL_ORANGE,"Das Rennen startet in 10 Sekunden");
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(jEvent[i] == 1) continue;
    TogglePlayerControllable(i,0);
    SCMTOADMIN("Spieler im Rennen wurden gefreezed");
    SetPlayerCheckpoint(i,1159.2834,-929.9013,43.23885,8); //Startlinie
    }
    return 1;
    }

    Jeffry



    also der Timer wird aufgerufen


    allerdings ist mir grad aufgefallen das nicht die Startlinie sondern der 1. Chekpoint (im Timer drinne) angezeigt wird


    SetPlayerCheckpoint(i,1104.4375,-949.0429,42.8388,8); //1. Checkpoint


    hier nochmal die beiden teile



    forward Racestart(playerid);
    public Racestart(playerid)
    {
    for(new i= 0; i<MAX_PLAYERS; i++)
    {
    if(jEvent[i] == 1 && LSRACE[i] == 1) continue;
    printf("jevent[%i] == 1 && LSRACE[%i] == 1",i,i);
    TogglePlayerControllable(i,1);
    SCMTOADMIN("Spieler im Rennen wurden unfreezed");
    DisablePlayerCheckpoint(i);
    SetPlayerCheckpoint(i,1104.4375,-949.0429,42.8388,8); //1. Checkpoint
    SendClientMessage(i,RED,"GO GO GO!");
    SendClientMessageToAll(RED,"GO GO GO! Das Rennen wurde gestartet!");
    LSRACE[playerid] = 1;
    OnPlayerEnterCheckpoint(i);

    }
    //SetPlayerCheckpoint(playerid,1104.4375,-949.0429,42.8388,8);
    return 1;
    }
    ocmd:startrace(playerid,params[])
    {
    SetTimerEx("Racestart",10000,false,"");
    SendClientMessageToAll(CL_ORANGE,"Das Rennen startet in 10 Sekunden");
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(jEvent[i] == 1) continue;
    TogglePlayerControllable(i,0);
    SCMTOADMIN("Spieler im Rennen wurden gefreezed");
    SetPlayerCheckpoint(i,1159.2834,-929.9013,43.23885,8); //Startlinie
    }
    return 1;
    }


    es wird halt nur der andere checkpoint aufgerufen welcher NICHT gelöscht wird

    Hallo liebe Community



    da ich mit dem SetPlayerRaceCheckpoint gehabe nicht zurecht komme (weil ich es irgendwie nicht hinkriege und verstehe -> sie samp wiki


    habe ich nun angefangen mit SetPlayerCheckpoint zu arbeiten und dementsprechend versucht das RaceSystem so zu bauen


    unter anderem habe ich mir dort überlegt zwischendurch ggf rechenaufgaben o.ä zu machen



    Naja kommen wir zum system


    /startevent also die Auswahl klappt soweit


    dann wird bei der Auswahl /joinevent freigegeben


    Spoiler anzeigen
    ocmd:joinevent(playerid,params[]){ switch (eventstart) { case 0: { //Mitte new vID = CreateVehicle(502,1156.4369,-897.5735,42.8511,183.1492,-1,-1,60); SetPlayerPos(playerid,1156.4369,-897.5735,42.8511); PutPlayerInVehicle(playerid,vID,0); eventstart = 2; SendClientMessage(playerid,CL_GREEEN,"Du bist dem Event beigetreten. Fahre nun an die Startlinie!"); jEvent[playerid] = 1; //SetPlayerCheckpoint(playerid, , 5.0); return 1; } //Rechts case 1: { new vID = CreateVehicle(503,1152.7489,-897.8755,42.8496,183.1492,-1,-1,60); SetPlayerPos(playerid,1152.7489,-897.8755,42.8496); PutPlayerInVehicle(playerid,vID,0); eventstart = 0; SendClientMessage(playerid,CL_GREEEN,"Du bist dem Event beigetreten. Fahre nun an die Startlinie!"); jEvent[playerid] = 1; return 1; } //Links case 2:{ new vID = CreateVehicle(502,1162.0453,-897.6024,42.8875,183.1492,-1,-1,60); SetPlayerPos(playerid,1162.0453,-897.6024,42.8875); PutPlayerInVehicle(playerid,vID,0); eventstart = 1; SendClientMessage(playerid,CL_GREEEN,"Du bist dem Event beigetreten. Fahre nun an die Startlinie!"); jEvent[playerid] = 1; return 1; } } return 1;}forward Racestart(playerid);public Racestart(playerid){ for(new i= 0; i<MAX_PLAYERS; i++) { if(jEvent[i] == 1 && LSRACE[i] == 1) continue; printf("jevent[%i] == 1 && LSRACE[%i] == 1",i,i); TogglePlayerControllable(i,0); SCMTOADMIN("Spieler im Rennen wurden unfreezed"); DisablePlayerCheckpoint(i); SetPlayerCheckpoint(i,1104.4375,-949.0429,42.8388,8); //1. Checkpoint SendClientMessage(i,RED,"GO GO GO!"); SendClientMessageToAll(RED,"GO GO GO! Das Rennen wurde gestartet!"); LSRACE[playerid] = 1; OnPlayerEnterCheckpoint(i); } //SetPlayerCheckpoint(playerid,1104.4375,-949.0429,42.8388,8); return 1;}ocmd:startrace(playerid,params[]){ SetTimerEx("Racestart",10000,false,""); SendClientMessageToAll(CL_ORANGE,"Das Rennen startet in 10 Sekunden"); for(new i=0; i<MAX_PLAYERS; i++) { if(jEvent[i] == 1) continue; TogglePlayerControllable(i,1); SetPlayerCheckpoint(i,1159.2834,-929.9013,43.23885,8); //Startlinie } return 1;
    }



    bei diesem sind 3 Startpunkte festgelegt damit nicht alle aufeinander spawnen


    von da aus fangen die Probleme an!


    Ich möchte ihnen direkt die Startlinie zeigen und wenn sie dort rein fahren freezen!
    es soll eine Variable gesetzt werden damit nur die die an der Linie stehen die nächsten Checkpoints sehen


    ich komme leider nicht weiter und weiß nicht wie ich das bauen soll dass die Checkpoints angezeigt werden
    tutti kompletti
    http://pastebin.com/UL7iTstv




    Es werden übrigens KEINE Checkpoints angezeigt






    Ich bin euch dankbar für jede Hilfe


    sebstverständlich auch erreichbar per Teamviewer auf Anfrage


    MFG


    Golemcraftler


    Jeffry ein fall für dein Superhirn :D