Brauche hilfe Befehl bringt server zum hängen

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
  • Hey ,
    ich brauche hierbei hilfe ich finde den fehler nicht wenn man den befehl ausführt hängt sich der server auf
    ich bitte um hilfe



    if(strcmp(cmd, "/parkamt", true) == 0)
    {
    if(SpielerInfo[playerid][sMember] == 18)
    {
    tmp = strtok(cmdtext,idx);
    new Float:bX,Float:bY,Float:bZ;
    GetPlayerPos(playerid,bX,bY,bZ);
    new Float:aX,Float:aY,Float:aZ;
    if(!strlen(tmp)) return SendClientMessage(playerid,0xFF0000FF,"==[parkamt]== /parkamt [name] >>> [Anbauen oder Abbauen]");
    if(strcmp(tmp,"Anbauen",true) == 0)
    {
    for(new vid;vid!=MAX_VEHICLES;vid++)
    {
    GetVehiclePos(vid,aX,aY,aZ);
    if((floatabs(bX-aX)<3.0)&&(floatabs(bY-aY)<3.0)&&(floatabs(bZ-aZ)<3.0)&&(vid!=GetPlayerVehicleID(playerid)))
    {
    if(!IsADtCar(vid))
    {
    new fc;while(fc<MAX_FRACTION_CARS){
    if(FractionCars[fc][fVehid] >= 400 && FractionCars[fc][fVehid] <= 611)
    {
    if(FractionCars[fc][fCarid] == vid)
    {
    FractionCars[fc][fparkamt] = 1;
    format(globquery, sizeof(globquery), "* %s baut eine parkamt an das Fahrzeug.", GetName(playerid));
    ProxDetector(30.0, playerid, globquery, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
    return 1;
    }
    }
    }
    }
    else
    {
    //Wird gemacht
    new theOwner = GetOwner(vid);
    new xid;
    for(new x;x!=MaxVeh;x++)
    {
    if(Dtc_PlayerHaveCar[playerid][x])
    {
    if(vid == PlayerCar[theOwner][x][CarId])
    {
    xid = x;
    break;
    }
    }
    }
    PlayerCar[theOwner][xid][Kralle] = 1;
    format(globquery,256,"UPDATE `carsystem` SET `Kralle`='1' WHERE `CarOwner`='%s_%d'",GetName(playerid),xid);
    mysql_query(globquery);
    format(globquery, sizeof(globquery), "* %s baut eine parkamt an das Fahrzeug.", GetName(playerid));
    ProxDetector(30.0, playerid, globquery, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
    return 1;
    }
    }
    }
    }
    else if(strcmp(tmp,"Abbauen",true) == 0)
    {
    for(new vid;vid!=MAX_VEHICLES;vid++)
    {
    GetVehiclePos(vid,aX,aY,aZ);
    if ((floatabs(bX-aX)<3.0)&&(floatabs(bY-aY)<3.0)&&(floatabs(bZ-aZ)<3.0)&&(vid!=GetPlayerVehicleID(playerid)))
    {
    new theOwner = GetOwner(vid);
    new xid;
    for(new x;x!=MaxVeh;x++)
    {
    if(Dtc_PlayerHaveCar[playerid][x])
    {
    if(vid == PlayerCar[theOwner][x][CarId])
    {
    xid = x;
    break;
    }
    }
    }
    PlayerCar[theOwner][xid][Kralle] = 0;
    format(globquery,256,"UPDATE `carsystem` SET `Kralle`='0' WHERE `CarOwner`='%s_%d'",GetName(playerid),xid);
    mysql_query(globquery);
    format(globquery, sizeof(globquery), "* %s baut die parkamt des Fahrzeugs ab.", GetName(playerid));
    ProxDetector(30.0, playerid, globquery, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
    return 1;
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_WHITE, "============= [parkamt] =============");
    SendClientMessage(playerid, COLOR_RED, "FEHLER: /parkamt [name]");
    SendClientMessage(playerid, COLOR_GREY, "Verfügbare Namen: Anbauen, Abbauen");
    SendClientMessage(playerid, COLOR_WHITE, "============= [parkamt] =============");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Du gehörst nicht zum Ordnungsamt!");
    return 1;
    }
    return 1;
    }

  • Ich meine, du kannst innerhalb der Schleife for(new vid;vid!=MAX_VEHICLES;vid++)
    keine weiteren Schleifen einbauen. Aber ich kann mich auch irren.

    In einer for Schleife kann man für gewöhnlich schon noch weitere Schleifen schreiben.


    Ich finde aber die Art wie du die for Schleife geschrieben hast etwas "eigen" ich würd das lieber so machen:

    Code
    for(new vid = 0; vid < MAX_VEHICLES; vid++)

    aber das müsste ja eigentlich so auch funktionieren wie du das hast. Also im Zweifelsfalle kannst ja mal meine Schleife probieren, falls es nichts bringt empfehle ich dir alle paar Zeilen irgend eine Ausgabe rein zu machen (print, SendClientMessage, ..) und dann zu checken welche Ausgabe du als letztes noch von dem Befehl erhältst bevor sich der Server aufhängt.

  • In einer for Schleife kann man für gewöhnlich schon noch weitere Schleifen schreiben.
    Ich finde aber die Art wie du die for Schleife geschrieben hast etwas "eigen" ich würd das lieber so machen:

    Code
    for(new vid = 0; vid < MAX_VEHICLES; vid++)

    aber das müsste ja eigentlich so auch funktionieren wie du das hast. Also im Zweifelsfalle kannst ja mal meine Schleife probieren, falls es nichts bringt empfehle ich dir alle paar Zeilen irgend eine Ausgabe rein zu machen (print, SendClientMessage, ..) und dann zu checken welche Ausgabe du als letztes noch von dem Befehl erhältst bevor sich der Server aufhängt.

    Geht immer noch nicht der server bleibt aber er hängt sich auf -.-

  • Dann würde ich jetzt folgendes tun:


    Das ziehst du durch den ganzen Befehl durch (also nach allen paar Zeilen ein Eintrag mit "print(..)") und dann führst du den Befehl ingame aus und siehst dir dann die server_log.txt an, scrollst ganz nach unten und siehst nach ob eines von den "prints" in der log steht bzw welches als letztes in der log steht. Dann weißt du mal ungefähr in welchem Bereich der Fehler anfängt.

  • Beitrag von TimeLine ()

    Dieser Beitrag wurde von Trooper[Y] gelöscht ().
  • Beitrag von SaschaMois ()

    Dieser Beitrag wurde von Trooper[Y] gelöscht ().
  • Beitrag von Mike.Jankins ()

    Dieser Beitrag wurde von seegras gelöscht ().