Fahrzeug Abfrage PAWN

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, gerne möchte ich nun Abfragen ob ich am Haken ein Event Fahrzeug habe oder nicht (TowCar).
    Leider scheitert es bei der Abfrage. Das Fahrzeug wird wie folgt erstellt



    ocmd:eventcar(playerid,params[])
    {
    if(isAdmin(playerid,5))
    {
    new eventcarid;
    if(sscanf(params,"i",eventcarid)) return SendClientMessage(playerid,COLOR_RED,"/createeventcar [CAR ID]");
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    new veh = CreateVehicle(eventcarid, x+4, y, z,0, -1, -1, -1);
    SetVehicleNumberPlate(veh,"EVENTCAR");
    isEventVehicle[veh] = 1;
    }
    else
    {
    return SendClientMessage(playerid,-1,"Dieser Befehl konnte nicht gefunden werden");
    }
    return 1;
    }


    Mit
    if(isEventVehicle[i] == 1)
    versuche ich bisher abzufragen ob es ein Event Fahrzeug ist. Allerdings sagt er mir dauerhaft dass es dies nicht ist obwohl es eines der Fahrzeuge ist.


    Was ist in der Abfrage falsch ?

  • Aktuell wie folgt



    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(cInfo[i][id_x]==0) continue;
    if(cInfo[i][id_x] != GetVehicleTrailer(veh)) continue;
    cInfo[i][c_gespeert] = 1;
    DestroyVehicle(cInfo[i][id_x]);
    cInfo[i][id_x]=0;
    if(isEventVehicle[i] == 1) return SendClientMessage(playerid,-1,"Event Fahrzeuge können nicht abgeschleppt werden.");
    }

  • Dann musst du es so schreiben:
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(cInfo[i][id_x] == 0) continue;
    if(cInfo[i][id_x] != GetVehicleTrailer(veh)) continue;
    if(isEventVehicle[cInfo[i][id_x]] == 1) return SendClientMessage(playerid,-1,"Event Fahrzeuge können nicht abgeschleppt werden.");
    cInfo[i][c_gespeert] = 1;
    DestroyVehicle(cInfo[i][id_x]);
    cInfo[i][id_x]=0;
    break;
    }

  • Dann musst du es so schreiben:
    for(new i=0; i<sizeof(cInfo); i++){ if(cInfo[i][id_x] == 0) continue; if(cInfo[i][id_x] != GetVehicleTrailer(veh)) continue; if(isEventVehicle[cInfo[i][id_x]] == 1) return SendClientMessage(playerid,-1,"Event Fahrzeuge können nicht abgeschleppt werden."); cInfo[i][c_gespeert] = 1; DestroyVehicle(cInfo[i][id_x]); cInfo[i][id_x]=0; break;}

    Führt leider nicht zu dem gewünschten Erfolg. Es gibt im Grunde keine Verbesserung. Das Return wird weiterhin nicht aufgerufen.

  • So wie ich dein Code verstehe mach das mal so evt.



    if(isEventVehicle[GetVehicleTrailer(veh)] == 1)return SendClientMessage(playerid,-1,"Event Fahrzeuge können nicht abgeschleppt werden.");
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(cInfo[i][id_x] == 0) continue;
    if(cInfo[i][id_x] != GetVehicleTrailer(veh)) continue;
    cInfo[i][c_gespeert] = 1;
    DestroyVehicle(cInfo[i][id_x]);
    cInfo[i][id_x]=0;
    break;
    }

  • ocmd:eventcar(playerid,params[])
    {
    if (isAdmin(playerid, 5)) {
    new eventcarid;


    if (sscanf(params,"i",eventcarid)) {
    return SendClientMessage(playerid,COLOR_RED,"/createeventcar [CAR ID]");
    }


    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid, x, y, z);


    for (new i = 0; i < MAX_VEHICLES; i++) {


    if (cInfo[i][id_x] != 0) continue;



    cInfo[i][id_x] = CreateVehicle(eventcarid, x+4, y, z,0, -1, -1, -1);
    SetVehicleNumberPlate(cInfo[i][id_x], "EVENTCAR");
    isEventVehicle[cInfo[i][id_x]] = 1;
    break;
    }


    }
    else {
    SendClientMessage(playerid,-1,"Dieser Befehl konnte nicht gefunden werden");
    }
    return 1;
    }



    Lass das Car mal so erstellen. Müsste richtig geschrieben sein.


    Und die schleife:


    for (new i = 0; i < sizeof(cInfo); i++)
    {
    if (cInfo[i][id_x] == 0) continue;
    if (!GetVehicleTrailer(cInfo[i][id_x])) continue;
    if (isEventVehicle[cInfo[i][id_x]] == 1) {
    return SendClientMessage(playerid,-1,"Event Fahrzeuge können nicht abgeschleppt werden.");
    }


    cInfo[i][c_gespeert] = 1;


    DestroyVehicle(cInfo[i][id_x]);
    cInfo[i][id_x] = 0;
    }