Frage bzgl. /opark

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 Leute, kommen wir direkt zur Sache:
    Ich will das wenn ein Abschlepp Wagen an der Angel ein Car dran hat, das der die CarID direkt ausliest.
    Ich hab das z.B. so, aber der Server crashed davon ..



    ocmd:oparkt(playerid,params[]){
    new veh = GetPlayerVehicleID(playerid),id = getSlotID(veh),pID = ReturnPlayerid(sCarInfo[id][scName]),oapreis;
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,-1," Du musst in einem Abschleppwagen sitzen!");
    if(GetVehicleModel(veh) == 525)
    {
    if(sscanf(params,"i",oapreis)) return SendClientMessage(playerid,-1,"Verwende: /opark [Preis]");
    if(!IsPlayerInRangeOfPoint(playerid,150.0,907.2166,-1235.2578,0.9116)) return SendClientMessage(playerid,-1,"Du bist nicht in der O-Amt Base!");
    if(GetVehicleTrailer(id))
    if(sCarInfo[id][CarAbgeschleppt] == 0){
    GetVehiclePos(id,sCarInfo[id][pCarPos_X],sCarInfo[id][pCarPos_Y],sCarInfo[id][pCarPos_Z]);
    GetVehicleZAngle(id,sCarInfo[id][pCarPos_A]);
    sCarInfo[id][CarAbgeschleppt] = 1;
    sCarInfo[id][CarAbgeschlepptPreis] = oapreis;
    tuneCar(id,sCarInfo[id][VehID]);
    saveCar(id);
    SendClientMessage(pID,-1,"Hinweis: Dein Auto/Bike wurde abgeschleppt! Hole es beim Ordnungsamt ab!");
    }
    }
    return 1;
    }

  • Versuchs mal so:
    ocmd:opark(playerid,params[]){
    new veh = GetPlayerVehicleID(playerid),id = getSlotID(veh),oapreis;
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,-1," Du musst in einem Abschleppwagen sitzen!");
    if(sscanf(params,"i",oapreis)) return SendClientMessage(playerid,-1,"Verwende: /opark [Preis]");
    if(GetVehicleModel(veh) != 525)return SendClientMessage(playerid,-1,"Du bist in keinem Towtruck!");
    if(!IsPlayerInRangeOfPoint(playerid,150.0,907.2166,-1235.2578,0.9116)) return SendClientMessage(playerid,-1,"Du bist nicht in der O-Amt Base!");
    if(GetVehicleTrailer(id)){
    if(!sCarInfo[id][CarAbgeschleppt]){
    GetVehiclePos(id,sCarInfo[id][pCarPos_X],sCarInfo[id][pCarPos_Y],sCarInfo[id][pCarPos_Z]);
    GetVehicleZAngle(id,sCarInfo[id][pCarPos_A]);
    sCarInfo[id][CarAbgeschleppt] = 1,
    sCarInfo[id][CarAbgeschlepptPreis] = oapreis;
    SendClientMessage(ReturnPlayerid(sCarInfo[id][scName]),-1,"Hinweis: Dein Auto/Bike wurde abgeschleppt! Hole es beim Ordnungsamt ab!");
    return tuneCar(id,sCarInfo[id][VehID]),saveCar(id);
    }
    }
    return 1;
    }
    Ansonsten poste doch mal bitte die Funktion "getSlotID"



  • stock getSlotID(vehicleid)
    {
    new i;
    for(; i != MAX_VEHICLES; ++i)if(sCarInfo[i][VehID] == vehicleid)return i;
    return -1;
    }

    Geht immer noch nicht :/

  • Dann lass dir mal alles ausgeben:
    ocmd:opark(playerid,params[]){
    new veh = GetPlayerVehicleID(playerid),id = getSlotID(veh),oapreis;
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,-1," Du musst in einem Abschleppwagen sitzen!");
    if(sscanf(params,"i",oapreis)) return SendClientMessage(playerid,-1,"Verwende: /opark [Preis]");
    if(GetVehicleModel(veh) != 525)return SendClientMessage(playerid,-1,"Du bist in keinem Towtruck!");
    if(!IsPlayerInRangeOfPoint(playerid,150.0,907.2166,-1235.2578,0.9116)) return SendClientMessage(playerid,-1,"Du bist nicht in der O-Amt Base!");
    printf("1");
    if(GetVehicleTrailer(id)){
    printf("2");
    if(!sCarInfo[id][CarAbgeschleppt]){
    printf("3");
    GetVehiclePos(id,sCarInfo[id][pCarPos_X],sCarInfo[id][pCarPos_Y],sCarInfo[id][pCarPos_Z]);
    GetVehicleZAngle(id,sCarInfo[id][pCarPos_A]);
    printf("4");
    sCarInfo[id][CarAbgeschleppt] = 1,
    sCarInfo[id][CarAbgeschlepptPreis] = oapreis;
    printf("5");
    SendClientMessage(ReturnPlayerid(sCarInfo[id][scName]),-1,"Hinweis: Dein Auto/Bike wurde abgeschleppt! Hole es beim Ordnungsamt ab!");
    printf("6");
    return tuneCar(id,sCarInfo[id][VehID]),saveCar(id),printf("7");
    }
    }
    printf("8");
    return 1;
    }
    Bis wohin wird es debuggt?

  • Beitrag von AirM4X ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Ja liegt es auch.
    Aber ich möchte es nicht umschreiben, deswegen ... irgendwie anders möglich?


    -> bin nur kurz da.


    Das liegt daran das -1 zurück geben wird. greift man auf ein array mit einem negativen index zu so crasht der Server.


    ocmd:oparkt(playerid,params[]){
    new veh = GetPlayerVehicleID(playerid),oapreis;
    if(!IsPlayerInRangeOfPoint(playerid,150.0,907.2166,-1235.2578,0.9116)) return SendClientMessage(playerid,-1,"Du bist nicht in der O-Amt Base!");
    if(GetVehicleModel(veh) != 525)return SendClientMessage(playerid,-1," Du musst in einem Abschleppwagen sitzen!");
    new id = getSlotID(GetVehicleTrailer(veh));
    if(id == -1)return SendClientMessage(playerid, -1, "Dieses Fahrzeug ist kein Spielerfahrzeug.");
    if(sscanf(params,"i",oapreis)) return SendClientMessage(playerid,-1,"Verwende: /opark [Preis]");
    if(sCarInfo[id][CarAbgeschleppt] == 0){
    GetVehiclePos(id,sCarInfo[id][pCarPos_X],sCarInfo[id][pCarPos_Y],sCarInfo[id][pCarPos_Z]);
    GetVehicleZAngle(id,sCarInfo[id][pCarPos_A]);
    sCarInfo[id][CarAbgeschleppt] = 1;
    sCarInfo[id][CarAbgeschlepptPreis] = oapreis;
    tuneCar(id,sCarInfo[id][VehID]);
    saveCar(id);
    SendClientMessage(ReturnPlayerid(sCarInfo[id][scName]),-1,"Hinweis: Dein Auto/Bike wurde abgeschleppt! Hole es beim Ordnungsamt ab!");
    }
    return 1;
    }