Beiträge von Jeffry

    Du kannst dann entweder den Range erhöhen, oder du berechnest die Position erst nach der Range Abfrage. Eigentlich hatte ich gedacht 15 reicht als Range.


    for(new i = 0; i<sizeof(pCar); i++)
    {
    new Float:vPos[4];
    GetVehiclePos(pCar[i], vPos[0], vPos[1], vPos[2]);
    GetVehicleZAngle(pCar[i], vPos[3]);
    if(IsPlayerInRangeOfPoint(playerid, 15.0, vPos[0], vPos[1], vPos[2]))
    {
    vPos[0] = (-8.0 * floatsin(-vPos[3], degrees));
    vPos[1] = (-8.0 * floatcos(-vPos[3], degrees));
    Object[b][ra_x] = vPos[0],Object[b][ra_y] = vPos[1],Object[b][ra_z] = vPos[2],Object[b][ra_a] = vPos[3];
    ObjectID[playerid] = CreateObject(1632,Object[b][ra_x], Object[b][ra_y], Object[b][ra_z]-3.0, 0, 0, Object[b][ra_a]+0);
    MoveObject(ObjectID[playerid], Object[b][ra_x], Object[b][ra_y], Object[b][ra_z]-1.0, 0.06, 0, 0, Object[b][ra_a]+0);
    SetTimer("BuildObj", 30000, false);
    ObjOwner[playerid] = playerid;
    return 1;
    }
    }
    return SendClientMessage(playerid, COLOR_ERRORTEXT, "Du bist nicht nah genug am Laster!");



    EDIT: Ich habe den Fehler gerade entdeckt, das return war in der Schleife, somit hat es beim ersten Fahrzeug aufgehört. Die Berechnung lasse ich trotzdem mal so, ist ressourcenschonender. Code ist abgeändert, sollte jetzt klappen.

    Die Berechnung ist durcheinander und hat eigentlich keine Auswirkung mehr auf das Objekt:
    for(new i = 0; i<sizeof(pCar); i++)
    {
    new Float:vPos[4];
    GetVehiclePos(pCar[i], vPos[0], vPos[1], vPos[2]);
    GetVehicleZAngle(pCar[i], vPos[3]);
    vPos[0] = (-8.0 * floatsin(-vPos[3], degrees));
    vPos[1] = (-8.0 * floatcos(-vPos[3], degrees));
    Object[b][ra_x] = vPos[0],Object[b][ra_y] = vPos[1],Object[b][ra_z] = vPos[2],Object[b][ra_a] = vPos[3];
    if(IsPlayerInRangeOfPoint(playerid, 15.0, Object[b][ra_x], Object[b][ra_y]-2, Object[b][ra_z]))
    {
    ObjectID[playerid] = CreateObject(1632,Object[b][ra_x], Object[b][ra_y], Object[b][ra_z]-3.0, 0, 0, Object[b][ra_a]+0);
    MoveObject(ObjectID[playerid], Object[b][ra_x], Object[b][ra_y], Object[b][ra_z]-1.0, 0.06, 0, 0, Object[b][ra_a]+0);
    SetTimer("BuildObj", 30000, false);
    ObjOwner[playerid] = playerid;
    return 1;
    }
    else return SendClientMessage(playerid, COLOR_ERRORTEXT, "Du bist nicht nah genug am Laster!");
    }

    Ne, das war nur zum testen ob es an MySQL liegt, damit wir uns später nicht zu Tode suchen. Liegt es aber nicht, zum Glück.


    Schreib es so, geht es dann? Ich verstehe dein System noch nicht wirklich, aber vielleicht passt es ja schon.
    stock LoadPlayercar(playerid,slot)
    {
    if(slot == -1)return 1;
    new slotstr[16];
    valstr(slotstr,slot);
    for(new i=0;i<MAX_VEHICLES;i++)
    {
    if(FahrzeugInfo[i][fz_ID] == 0)
    {
    FahrzeugInfo[i][fz_Besitzer] = playerid;
    FahrzeugInfo[i][fz_Typ] = 1;
    FahrzeugInfo[i][fz_Slot] = slot;
    FahrzeugInfo[i][fz_Preis] = mysql_GetInt("userautos","Preis","Slot",slotstr);
    FahrzeugInfo[i][fz_Model] = mysql_GetInt("userautos","Model","Slot",slotstr);
    FahrzeugInfo[i][fz_Farbe1] = mysql_GetInt("userautos","Farbe1","Slot",slotstr);
    FahrzeugInfo[i][fz_Farbe2] = mysql_GetInt("userautos","Farbe2","Slot",slotstr);
    FahrzeugInfo[i][fz_X] = mysql_GetFloat("userautos","X","Slot",slotstr);
    FahrzeugInfo[i][fz_Y] = mysql_GetFloat("userautos","Y","Slot",slotstr);
    FahrzeugInfo[i][fz_Z] = mysql_GetFloat("userautos","Z","Slot",slotstr);
    FahrzeugInfo[i][fz_A] = mysql_GetFloat("userautos","A","Slot",slotstr);
    FahrzeugInfo[i][fz_mod1] = mysql_GetInt("userautos","mod1","Slot",slotstr);
    FahrzeugInfo[i][fz_mod2] = mysql_GetInt("userautos","mod2","Slot",slotstr);
    FahrzeugInfo[i][fz_mod3] = mysql_GetInt("userautos","mod3","Slot",slotstr);
    FahrzeugInfo[i][fz_mod4] = mysql_GetInt("userautos","mod4","Slot",slotstr);
    FahrzeugInfo[i][fz_mod5] = mysql_GetInt("userautos","mod5","Slot",slotstr);
    FahrzeugInfo[i][fz_mod6] = mysql_GetInt("userautos","mod6","Slot",slotstr);
    FahrzeugInfo[i][fz_mod7] = mysql_GetInt("userautos","mod7","Slot",slotstr);
    FahrzeugInfo[i][fz_mod8] = mysql_GetInt("userautos","mod8","Slot",slotstr);
    FahrzeugInfo[i][fz_mod9] = mysql_GetInt("userautos","mod9","Slot",slotstr);
    FahrzeugInfo[i][fz_mod10] = mysql_GetInt("userautos","mod10","Slot",slotstr);
    FahrzeugInfo[i][fz_mod11] = mysql_GetInt("userautos","mod11","Slot",slotstr);
    FahrzeugInfo[i][fz_mod12] = mysql_GetInt("userautos","mod12","Slot",slotstr);
    FahrzeugInfo[i][fz_mod13] = mysql_GetInt("userautos","mod13","Slot",slotstr);
    FahrzeugInfo[i][fz_mod14] = mysql_GetInt("userautos","mod14","Slot",slotstr);
    FahrzeugInfo[i][fz_Tank] = mysql_GetInt("userautos","Tank","Slot",slotstr);
    FahrzeugInfo[i][fz_Opark] = mysql_GetInt("userautos","Opark","Slot",slotstr);
    FahrzeugInfo[i][fz_Glas] = mysql_GetInt("userautos","Glas","Slot",slotstr);
    FahrzeugInfo[i][fz_Panzer] = mysql_GetInt("userautos","Panzer","Slot",slotstr);
    FahrzeugInfo[i][fz_Lock] = 0;
    FahrzeugInfo[i][fz_Radio] = 0;
    if(FahrzeugInfo[i][fz_Model] < 400 || FahrzeugInfo[i][fz_Model] > 611) continue;
    FahrzeugInfo[i][fz_ID] = s_CreateVehicle(FahrzeugInfo[i][fz_Model],FahrzeugInfo[i][fz_X],FahrzeugInfo[i][fz_Y],FahrzeugInfo[i][fz_Z],FahrzeugInfo[i][fz_A],FahrzeugInfo[i][fz_Farbe1],FahrzeugInfo[i][fz_Farbe2],-1);
    new vID = FahrzeugInfo[i][fz_ID];
    FahrzeugInfo[i][fz_Motor] = 0;
    new engine, lights, alarm, doors, bonnet, boot, objective;
    GetVehicleParamsEx(FahrzeugInfo[i][fz_ID], engine, lights, alarm, doors, bonnet, boot, objective);
    SetVehicleParamsEx(FahrzeugInfo[i][fz_ID], engine, lights, alarm, 0, bonnet, boot, objective);
    hbremse[vID][hb_Status] = mysql_GetInt("userautos","HandBremse","Slot",slotstr);
    if(FahrzeugInfo[i][fz_Opark] == 1)
    {
    hbremse[vID][hb_Status] = 2;
    }
    SetVehicleNumberPlate(vID,SpielerName(playerid));
    if(FahrzeugInfo[i][fz_mod1] != -1){AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod1]);}
    if(FahrzeugInfo[i][fz_mod2] != -1){AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod2]);}
    if(FahrzeugInfo[i][fz_mod3] != -1){AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod3]);}
    if(FahrzeugInfo[i][fz_mod4] != -1){AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod4]);}
    if(FahrzeugInfo[i][fz_mod5] != -1){AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod5]);}
    if(FahrzeugInfo[i][fz_mod6] != -1){AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod6]);}
    if(FahrzeugInfo[i][fz_mod7] != -1){AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod7]);}
    if(FahrzeugInfo[i][fz_mod8] != -1){AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod8]);}
    if(FahrzeugInfo[i][fz_mod9] != -1){AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod9]);}
    if(FahrzeugInfo[i][fz_mod10] != -1){AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod10]);}
    if(FahrzeugInfo[i][fz_mod11] != -1){AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod11]);}
    if(FahrzeugInfo[i][fz_mod12] != -1){AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod12]);}
    if(FahrzeugInfo[i][fz_mod13] != -1){AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod13]);}
    if(FahrzeugInfo[i][fz_mod14] != -1){AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod14]);}
    return 1;
    }
    }
    return 1;
    }

    Dann müssen wir es wohl oder üben debuggen. Fangen wir mit dem Speichern an:


    <Code auf Wunsch von [DT]midomen entfernt, wegen Copyright.>


    Was steht im Log, wenn du dein Fahrzeug speicherst? Stimmen die Koordinaten die geprintet werden mit denen überein, die das Fahrzeug wirklich hat (/dl).
    Werden die Werte dann richtig in die Datei geschrieben? Wenn nein, was steht in der Datei?



    EDIT:
    Ich habe es ihm kurz per TeamViewer fertig gemacht.
    Problem waren 10 Warnungen die er ignoriert hat, darunter mehrere Tag Mismatch bei den Positionsvariablen, was dazu geführt hat, dass die Fahrzeuge nicht korrekt erstellt worden sind. Der Code ist korrekt, jetzt funktioniert alles.


    @leader_king: Bitte auf erledigt setzen. Danke dir! :)

    Ok, super. :)


    Das liegt daran, dass du das Objekt ein ganz klein wenig bewegen musst, wenn du es rotieren lassen willst.


    Versuch es mal so:
    if(IsPlayerInRangeOfPoint(playerid,10,699.0999800,-1384.8000000,14.4000000))
    {
    if(IsPlayerInFrakt(playerid,1)||IsPlayerInFrakt(playerid,6)||IsPlayerInFrakt(playerid,16)||IsPlayerAnAdmin(playerid,4))
    {
    MoveObject(pdschranke[0],699.0999800,-1384.8000000,14.4100000,0.001,0.0000000,0.0000000,0.0000000);
    tor[playerid]=1;
    }
    }
    if(IsPlayerInRangeOfPoint(playerid,10,715.7999900,-1384.8000000,14.4000000))
    {
    if(IsPlayerInFrakt(playerid,1)||IsPlayerInFrakt(playerid,6)||IsPlayerInFrakt(playerid,16)||IsPlayerAnAdmin(playerid,4))
    {
    MoveObject(pdschranke[1],715.7999900,-1384.8000000,14.4100000,0.001,0.0000000,0.0000000,180.0000000);
    tor[playerid]=1;
    }
    }



    if(IsPlayerInRangeOfPoint(playerid,10,699.0999800,-1384.8000000,14.4000000))
    {
    if(IsPlayerInFrakt(playerid,1)||IsPlayerInFrakt(playerid,6)||IsPlayerInFrakt(playerid,16)||IsPlayerAnAdmin(playerid,4))
    {
    MoveObject(pdschranke[0],699.0999800,-1384.8000000,14.3900000,0.001,0.0000000,90.0000000,0.0000000);
    tor[playerid]=0;
    }
    }
    if(IsPlayerInRangeOfPoint(playerid,10,715.7999900,-1384.8000000,14.4000000))
    {
    if(IsPlayerInFrakt(playerid,1)||IsPlayerInFrakt(playerid,6)||IsPlayerInFrakt(playerid,16)||IsPlayerAnAdmin(playerid,4))
    {
    MoveObject(pdschranke[1],715.7999900,-1384.8000000,14.3900000,0.001,0.0000000,90.0000000,180.0000000);
    tor[playerid]=0;
    }
    }

    if(sInfo[playerid][LiveLeader] !== getPlayerName(playerid))
    zu:
    if( strcmp(sInfo[playerid][LiveLeader],getPlayerName(playerid)) )


    Da du zwei Strings miteinander vergleichst.

    Entweder ein Fehler im Code oder du hast eine Cheat-Konsole geladen.



    Microsoft .NET Framework 4.5.1 wird benötigt um Programme die mit Microsoft .NET geschrieben worden sind auszuführen.

    for(new i = 0; i<sizeof(pCar); i++)
    {
    GetVehiclePos(pCar[i], vPos[0], vPos[1], vPos[2]);
    GetVehicleZAngle(pCar[i], vPos[3]);
    if(IsPlayerInRangeOfPoint(playerid, 15.0, vPos[0], vPos[1]-2, vPos[2]))
    {
    Object[playerid] = CreateObject(1632, vPos[0], vPos[1], vPos[2]-2.6, 0, 0, vPos[3]+180);
    MoveObject(Object[playerid], vPos[0], vPos[1], vPos[2]-0.01, 0.001, 0, 0, vPos[3]+180);
    ObjectErstellt[playerid] = 1;
    return 1;
    }
    else return SendClientMessage(playerid, COLOR_ERRORTEXT, "Du bist nicht nah genug am Fahrzeug!");
    }


    Falls es zu schnell geht, mach das 0.001 kleiner, also zu 0.0001.