HausSystem funktioniert nicht richtig

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
  • Huhu,


    das Haussystem was ich gemacht hab funktioniert nicht richtig. Da funktioniert nur das erste gebäude. Die anderen funktionieren nicht.


    Wieso?


    enum buildingsEnum
    {
    Float:b_x,
    Float:b_y,
    Float:b_z,
    Float:b_ix,
    Float:b_iy,
    Float:b_iz,
    b_interior
    };


    new bInfo[][buildingsEnum] =
    { //b_x,b_y,b_z, b_ix,b_iy,b_iz, b_interior
    {1482.5889,-1771.4764,18.7958, 389.9620,173.8798,1008.3828, 3},//Rathaus
    {1460.0408,-1010.5744,26.8438, 1461.6990,-1008.4385,26.8259, 0},//Bank
    {1462.3796,-1010.8090,26.8438, 1461.6990,-1008.4385,26.8259, 0}
    };


    COMMAND:enter(playerid,params[])
    {
    if(!IsSpielerEingeloggt(playerid,1))return 1;
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerInRangeOfPoint(i,1,bInfo[i][b_x],bInfo[i][b_y],bInfo[i][b_z]))return 1;
    SetPlayerPos(i,bInfo[i][b_ix],bInfo[i][b_iy],bInfo[i][b_iz]);
    SetPlayerInterior(i,bInfo[i][b_interior]);
    SetPlayerVirtualWorld(i,0);
    }
    return 1;
    }


    COMMAND:exit(playerid,params[])
    {
    if(!IsSpielerEingeloggt(playerid,1))return 1;
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(GetPlayerVirtualWorld(playerid)!=i)continue;
    if(!IsPlayerInRangeOfPoint(i,3,bInfo[i][b_ix],bInfo[i][b_iy],bInfo[i][b_iz]))return 1;
    SetPlayerPos(i,bInfo[i][b_x],bInfo[i][b_y],bInfo[i][b_z]);
    SetPlayerInterior(i,0);
    SetPlayerVirtualWorld(i,0);
    }
    return 1;
    }


    Ich komme einfach nicht mehr weite

  • Du musst bei den ersten Parameter anstatt i, playerid schreiben, z.B. hier:

    C
    if(!IsPlayerInRangeOfPoint(i,1,bInfo[i][b_x],bInfo[i][b_y],bInfo[i][b_z]))return 1;


    zu

    C
    if(!IsPlayerInRangeOfPoint(playerid,1,bInfo[i][b_x],bInfo[i][b_y],bInfo[i][b_z]))return 1;


    Außerdem müssen die beiden Schleifen so aussehen:

    C
    for(new i=0; i<sizeof(bInfo); i++)
  • Marvin war schneller, das ist mir dann auch noch aufgefallen.


    Allerdings muss bei der IsPlayerInRangeOfPoint Zeile trotzdem ein continue am Ende stehen, kein return 1.


    Und dann jeweils bei SetPlayerPos etc den ersten Parameter von i zu playerid ändern.

  • Du musst bei den ersten Parameter anstatt i, playerid schreiben, z.B. hier:

    C
    if(!IsPlayerInRangeOfPoint(i,1,bInfo[i][b_x],bInfo[i][b_y],bInfo[i][b_z]))return 1;


    zu

    C
    if(!IsPlayerInRangeOfPoint(playerid,1,bInfo[i][b_x],bInfo[i][b_y],bInfo[i][b_z]))return 1;


    Außerdem müssen die beiden Schleifen so aussehen:

    C
    for(new i=0; i<sizeof(bInfo); i++)

    klappt auch nicht :(

  • @Exon Liegt dann wahrscheinlich noch am return 1;


    Schreibe die beiden Commands so:

    Einmal editiert, zuletzt von AirM4X () aus folgendem Grund: Siehe letzten Beitrag von Jeffry