/lock Befehl will nicht ganz

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
  • Guten Abend liebe Brotfische, ich habe hier einen kleinen Fehler bei meinen /lock Befehl weiß aber leider nicht woran dieser scheitert.
    Ich habe diesen schon Debugged konnte aber nichts daraus fassen. Er springt von Debug 1 direkt zu 6.
    ocmd:lock(playerid,params[])
    {
    for(new i=0;i<MAX_PRIVATE_VEHICLES;i++)
    {
    printf("DEBUG: 1");
    new Float:pos[3];
    GetVehiclePos(i,pos[0],pos[1],pos[2]);
    if(IsPlayerInRangeOfPoint(playerid,10,pos[0],pos[1],pos[2]))
    {
    printf("DEBUG: 2");
    if(PrivateVehicle[i][p_owner] == playerid)
    {
    printf("DEBUG: 3");
    new engine,lights,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(i,engine,lights,alarm,doors,bonnet,boot,objective);
    if(doors == 1)
    {
    printf("DEBUG: 4");
    SetVehicleParamsEx(i,engine,lights,alarm,0,bonnet,boot,objective);
    SendClientMessage(playerid,Gelb,"[SInfo] {FFFFFF}You have unlocked your Vehicle.");
    return 1;
    }
    if(doors == 0)
    {
    printf("DEBUG: 4");
    SetVehicleParamsEx(i,engine,lights,alarm,1,bonnet,boot,objective);
    SendClientMessage(playerid,Gelb,"[SInfo] {FFFFFF}You have locked your Vehicle.");
    return 1;
    }
    }
    printf("DEBUG: 5");
    return SendClientMessage(playerid,Rot,"Error: {FFFFFF}You are not near by your Vehicle.");
    }
    printf("DEBUG: 6");
    return 1;
    }
    printf("DEBUG: 7");
    return 1;
    }


    //EDIT: Im Script ist alles eingerückt keine Sorge.

  • Hm, jetzt sagt er mir dass ich nicht in der Nähe meines Fahrzeuges bin obwohl ich direkt daneben stehe.
    Ein Bild der DB:

    Ich habe auch gerade gemerkt dass wenn ich ein Fahrzeug per Befehl erstelle und den Owner als "CaZe" angeben er mir wirre Zeichen in die DB schreibt.


    //EDIT:
    Den Owner lass ich so auslesen:
    PrivateVehicle[i][p_owner] = cache_get_field_content(i,"Owner",PrivateVehicle[i][p_owner],Handle);

  • Das musst du so auslesen:
    cache_get_field_content(i,"Owner",PrivateVehicle[i][p_owner],Handle,MAX_PLAYER_NAME);


    EDIT:
    Goldkiller:
    Da habe ich gar nicht drauf geachtet, habe einfach nur vorne das
    PrivateVehicle[i][p_owner] = entfernt ;)
    Dankeschön! :good:

    Einmal editiert, zuletzt von AirM4X ()

  • Außerdem musst du p_owner im enum zu p_owner[MAX_PLAYER_NAME] ändern.


    Und
    if(PrivateVehicle[i][p_owner] == playerid)
    zu
    if(!strcmp(PrivateVehicle[i][p_owner], SpielerName(playerid)))
    ändern.



    PS: Darf ich dich fragen, wo du diesen Code her hast? Genau dieses Problem habe ich jetzt schon mindestens drei mal in kurzer Zeit gesehen. Ist das ein Gamemode oder aus einem Tutorial?

  • Dass er zwei mal bei Debug 1 ist liegt an der Schleife, das passt schon.
    Nur der Debug 5 passt nicht.


    Wie sieht denn der Code jetzt aus?


    Edit:
    Das Laden muss übrigens so aussehen
    cache_get_field_content(i,"Owner",PrivateVehicle[i][p_owner],Handle,MAX_PLAYER_NAME);

  • Also:

    cache_get_field_content(i,"Owner",PrivateVehicle[i][p_owner],Handle);


    zu

    cache_get_field_content(i,"Owner",PrivateVehicle[i][p_owner],Handle,24);

    ?


    //EDIT:
    Der Befehl sieht so aus:
    ocmd:lock(playerid,params[])
    {
    for(new i=0;i<MAX_PRIVATE_VEHICLES;i++)
    {
    printf("DEBUG: 1");
    new Float:pos[3];
    GetVehiclePos(i,pos[0],pos[1],pos[2]);
    if(IsPlayerInRangeOfPoint(playerid,5,pos[0],pos[1],pos[2]))
    {
    printf("DEBUG: 2");
    if(!strcmp(PrivateVehicle[i][p_owner], getPlayerName(playerid)))
    {
    printf("DEBUG: 3");
    new engine,lights,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(i,engine,lights,alarm,doors,bonnet,boot,objective);
    if(doors == 1)
    {
    printf("DEBUG: 4");
    SetVehicleParamsEx(i,engine,lights,alarm,0,bonnet,boot,objective);
    SendClientMessage(playerid,Gelb,"[SInfo] {FFFFFF}You have unlocked your Vehicle.");
    return 1;
    }
    if(doors == 0)
    {
    printf("DEBUG: 4");
    SetVehicleParamsEx(i,engine,lights,alarm,1,bonnet,boot,objective);
    SendClientMessage(playerid,Gelb,"[SInfo] {FFFFFF}You have locked your Vehicle.");
    return 1;
    }
    }
    printf("DEBUG: 5");
    return SendClientMessage(playerid,Rot,"Error: {FFFFFF}You are not near by your Vehicle.");
    }
    printf("DEBUG: 6");
    }
    printf("DEBUG: 7");
    return 1;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Bereits getan bringt leider nichts
    Hat doch geklappt.
    Danke euch alle für die große Hilfe.
    Eine Frage habe ich jedoch noch.
    Beim Erstellen eines Privaten Fahrzeuges werden in der Datenbank nur wirre Zeichen angezeigt.


    //EDIT:
    Befehl des erstellens:
    ocmd:pcreate(playerid,params[])
    {
    if(!IsPlayerAnAdmin(playerid))return SendClientMessage(playerid,Rot,"Error: {FFFFFF}You are not allowed to use this Command.");
    if(!IsPlayerAdminRank(playerid,4))return SendClientMessage(playerid,Rot,"Error: {FFFFFF}You are not allowed to use this Command.");
    new model,owner,c1,c2;
    if(GetVehicleModel(MAX_VEHICLES-1))return SendClientMessage(playerid,Rot,"Error: {FFFFFF}The Limit of MAX_VEHICLES is reached.");
    if(sscanf(params,"siii",owner,model,c1,c2))return SendClientMessage(playerid,Rot,"Error: {FFFFFF}Use /pcreate [Owner] [Model ID] [Color 1] [Color 2]");
    if(model < 400 || model > 611)return SendClientMessage(playerid,Rot,"Error: {FFFFFF}The VehicleID can't be smaller then 400 or higher then 600.");
    if(c1 < 1 || c1 > 255)return SendClientMessage(playerid,Rot,"Error: {FFFFFF}In the Color ID 1 is an error. It can't be smaller then 1 and can't be higher then 255.");
    if(c2 < 1 || c2 > 255)return SendClientMessage(playerid,Rot,"Error: {FFFFFF}In the Color ID 2 is an error. It can't be smaller then 1 and can't be higher then 255.");
    for(new i=0;i<MAX_PRIVATE_VEHICLES;i++)
    {
    if(PrivateVehicle[i][p_vID] == 0)
    {
    new Float:x, Float:y, Float:z, Float:a;
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid, a);
    PrivateVehicle[i][p_modelID] = model;
    PrivateVehicle[i][p_x] = x;
    PrivateVehicle[i][p_y] = y;
    PrivateVehicle[i][p_z] = z;
    PrivateVehicle[i][p_a] = a;
    PrivateVehicle[i][p_color1] = c1;
    PrivateVehicle[i][p_color2] = c2;
    PrivateVehicle[i][p_owner] = owner;
    new query[342];
    mysql_format(Handle,query,sizeof(query),"INSERT INTO privatecars (id, Modelid, PosX, PosY, PosZ, PosA, Color1, Color2, Owner) VALUES ('%d', '%d', '%f', '%f', '%f', '%f', '%d', '%d', '%s')",
    i,PrivateVehicle[i][p_modelID],PrivateVehicle[i][p_x],PrivateVehicle[i][p_y],PrivateVehicle[i][p_z],PrivateVehicle[i][p_a],PrivateVehicle[i][p_color1],PrivateVehicle[i][p_color2],PrivateVehicle[i][p_owner]);
    mysql_pquery(Handle,query);
    PrivateVehicle[i][p_vID] = CreateVehicle(PrivateVehicle[i][p_modelID],PrivateVehicle[i][p_x],PrivateVehicle[i][p_y],PrivateVehicle[i][p_z],PrivateVehicle[i][p_a],PrivateVehicle[i][p_color1],PrivateVehicle[i][p_color2],-1);
    PutPlayerInVehicle(playerid,PrivateVehicle[i][p_vID],0);
    return SendClientMessage(playerid,Gelb,"[SInfo] {FFFFFF}The Private Vehicle was created and saved.");
    }
    }
    return SendClientMessage(playerid,Rot,"Error: {FFFFFF}The Limit of MAX_PRIVATE_VEHICLES is reached.");
    }


    //EDIT:
    Hat sich geklärt habe herausgefunden dass ich format nutzen muss.

    Einmal editiert, zuletzt von CaZe ()