Problem mit breakcar System.

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
  • Hallo Brotfische,


    Ich bin gerade dabei ein "aufbrech" System für Fahrzeuge zu coden. Leider bekomme ich aber die Meldung das keine Fahrzeug in der Nähe sind, obwohl ich direkt vor einem Fahrzeug stehe.


    Code:


    stock:



    Ich hoffe ihr könnt mir helfen :)


    MfG :thumbup:


    Mit freundlichen Grüßen
    German_ScripterHD

  • Du musst das return mit der Meldung aus der Schleife nehmen, sonst endet es immer beim ersten Fahrzeug.
    ocmd:breakcar(playerid)
    {
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    for(new veh; veh<MAX_VEHICLES; veh++)
    {
    if(!IsVehicleInRangeOfPoint(veh, 10.0, x, y, z)) continue;
    new rand = random(30);
    if(rand==18)
    {
    new engine,lights,alarm,bonnet,boot,objective;
    GetVehicleParamsEx(veh,engine,lights,alarm,vehdoor,bonnet,boot,objective);
    alarm = 1;
    vehdoor = 0;
    objective = 1;
    SetVehicleParamsEx(veh,engine,lights,alarm,vehdoor,bonnet,boot,objective);
    return SendClientMessage(playerid,COLOR_GREEN,"Du hast das Fahrzeug aufgebrochen!");
    }
    return SendClientMessageEx(playerid,COLOR_BLUE,"Fahrzeug wurde nicht aufgebrochen (random = %i)",rand);
    }
    return SendClientMessage(playerid,C_Error,"Es ist kein Fahrzeug in der Nähe!");
    }

  • Du musst das return mit der Meldung aus der Schleife nehmen, sonst endet es immer beim ersten Fahrzeug.

    Ohhh... Jetzt sehe ich es auch :) Aber dank dir :good:


    //Edit: 1
    Eine Frage habe ich noch :P
    Undzwar, ist die Alarmanlage von den Fahrzeugen für alle hörbar oder nur für dein Spieler?


    //Edit 2:
    Also die Frage "Edit 1" besteht immer noch, aber ich habe auch ein neues Problem. Undzwar wollte ich dem Besitzer des Fahrzeuges noch eine Meldung senden lassen, das sein Fahrzeug gestohlen wurde. Aber leider klappt das nicht.... (print wird garnicht angezeigt)


    ocmd:breakcar(playerid)
    {
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    for(new veh; veh<MAX_VEHICLES; veh++)
    {
    if(!IsVehicleInRangeOfPoint(veh, 10.0, x, y, z)) continue;
    new rand = random(30);
    if(rand==18)
    {
    for(new i; i<MAX_PLAYERS; i++)
    {
    if(cInfo[veh][besitzer]==sInfo[i][db_id])
    {
    SendClientMessage(GetPlayerIdFromName(sInfo[i][username]),COLOR_BLUE,"Eins deiner Fahrzeuge wurde geklaut!");
    SendClientMessage(GetPlayerIdFromName(sInfo[i][username]),COLOR_BLUE,"Du kannst nun die Polizei verständigen.");
    printf("%s hat das Auto von %s (Datenbankid: %i|cInfo[i][besitzer]= %i) Ingameid: %i aufgebrochen!",getPlayerName(playerid),getPlayerName(GetPlayerIdFromName(sInfo[i][username])),sInfo[i][db_id],cInfo[veh][besitzer],playerid);
    }
    new engine,lights,alarm,bonnet,boot,objective;
    GetVehicleParamsEx(veh,engine,lights,alarm,vehdoor,bonnet,boot,objective);
    alarm = 1;
    vehdoor = 0;
    objective = 1;
    SetVehicleParamsEx(veh,engine,lights,alarm,vehdoor,bonnet,boot,objective);
    return SendClientMessage(playerid,COLOR_GREEN,"Du hast das Fahrzeug aufgebrochen!");
    }
    }
    return SendClientMessageEx(playerid,COLOR_BLUE,"Fahrzeug wurde nicht aufgebrochen (random = %i)",rand);
    }
    return SendClientMessage(playerid,C_Error,"Es ist kein Fahrzeug in der Nähe!");
    }


    Der stock:


    stock GetPlayerIdFromName(playername[])
    {
    for(new i = 0; i <= MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    new playername2[MAX_PLAYER_NAME];
    GetPlayerName(i, playername2, sizeof(playername2));
    if(strcmp(playername2, playername, true, strlen(playername)) == 0)
    {
    return i;
    }
    }
    }
    return INVALID_PLAYER_ID;
    }


    Mit freundlichen Grüßen
    German_ScripterHD

    2 Mal editiert, zuletzt von German_ScripterHD ()

  • Undzwar, ist die Alarmanlage von den Fahrzeugen für alle hörbar oder nur für dein Spieler?

    Davon gehe ich aus, ja.


    Aber leider klappt das nicht.... (print wird garnicht angezeigt)

    Versuche es so:
    ocmd:breakcar(playerid)
    {
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    for(new veh; veh<MAX_VEHICLES; veh++)
    {
    if(!IsVehicleInRangeOfPoint(veh, 10.0, x, y, z)) continue;
    new rand = random(30);
    if(rand==18)
    {
    for(new v; v < sizeof(cInfo); v++)
    {
    if(cInfo[v][vID] == veh) //Hier ist vID das, was du vor CreateVehicle hast, bei der Erstellung
    {
    for(new i; i<MAX_PLAYERS; i++)
    {
    if(cInfo[v][besitzer]==sInfo[i][db_id])
    {
    SendClientMessage(i,COLOR_BLUE,"Eins deiner Fahrzeuge wurde geklaut!");
    SendClientMessage(i,COLOR_BLUE,"Du kannst nun die Polizei verständigen.");
    printf("%s hat das Auto von %s (Datenbankid: %i|cInfo[i][besitzer]= %i) Ingameid: %i aufgebrochen!",getPlayerName(playerid),getPlayerName(i),sInfo[i][db_id],cInfo[v][besitzer],i);
    break;
    }
    }
    break;
    }
    }
    new engine,lights,alarm,bonnet,boot,objective;
    GetVehicleParamsEx(veh,engine,lights,alarm,vehdoor,bonnet,boot,objective);
    alarm = 1;
    vehdoor = 0;
    objective = 1;
    SetVehicleParamsEx(veh,engine,lights,alarm,vehdoor,bonnet,boot,objective);
    return SendClientMessage(playerid,COLOR_GREEN,"Du hast das Fahrzeug aufgebrochen!");
    }
    return SendClientMessageEx(playerid,COLOR_BLUE,"Fahrzeug wurde nicht aufgebrochen (random = %i)",rand);
    }
    return SendClientMessage(playerid,C_Error,"Es ist kein Fahrzeug in der Nähe!");
    }

  • @Kayne
    if(!strcmp(playername2, playername, true, strlen(playername)) == 0)


    Das geht nicht, das wird einen Tag Mismatch geben.


    Entweder
    if(strcmp(playername2, playername, true, strlen(playername)) == 0)
    Oder
    if(!strcmp(playername2, playername, true, strlen(playername)))


    Aber er brauch dies gar nicht in seinem Befehl.