Server Crasht bei Command

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,
    ich hab folgendes Problem:


    Ich arbeite gerade an meinem GangCar-System.
    Nun habe ich halt für die zweite Fraktion fahrzeuge eingeführt.
    Wenn ich seitdem einen DCMD benutze, Crasht mein Server.


    crashinfo.txt
    --------------------------


    SA-MP Server: 0.3c




    Exception At Address: 0x00402D38




    Registers:


    EAX: 0x000502D4 EBX: 0x00000000 ECX: 0x00000014 EDX: 0x00023C70


    ESI: 0x01FABEC0 EDI: 0x01F86438 EBP: 0x00000025 ESP: 0x0013F698


    EFLAGS: 0x00010212




    Stack:


    +0000: 0x00000000 0x01F86438 0x00000000 0x01000001


    +0010: 0x00000000 0x000502C4 0x000502D4 0x0005032C


    +0020: 0x0004C364 0x000502D8 0x0004C364 0x01F88254


    +0030: 0x01FABEC0 0x00000009 0x01F875C0 0x00023C6C


    +0040: 0x00482D0B 0x01F86438 0x0013F710 0x00000007


    +0050: 0x01F86438 0x00000000 0x01F86438 0x0013F720


    +0060: 0x0013F714 0x0202B1D8 0x01FF81F0 0x00000000


    +0070: 0x00000000 0x0202B1D8 0x00000000 0x01FF81F0


    +0080: 0x0049CC75 0x00000007 0x0004C330 0x0013F85C


    +0090: 0x003FB018 0x0013FC88 0x0000000C 0x00000088


    +00A0: 0x00000088 0x00000080 0x0013F85C 0x00000000


    +00B0: 0x0013F74D 0x00329D01 0x00000800 0x00000000


    +00C0: 0x0013F75D 0x00000001 0x12000000 0x01000000


    +00D0: 0x00000000 0x00000008 0x00000800 0x00000000


    +00E0: 0x00000002 0x0013F7B0 0x003F0000 0x7C920202


    +00F0: 0x00000002 0x003F06E8 0x003F0000 0x0202AFD8


    +0100: 0x0013F788 0x00000010 0x0013F9CC 0x7C91E900


    +0110: 0x00000000 0x0202AFD8 0x7C920202 0x7C92017B


    +0120: 0x00000010 0x0000FACC 0x003F0000 0x0013F5BC


    +0130: 0x0013F5C0 0x0013F808 0x7C91E900 0x7C9201C0




    --------------------------


    Kennt jemand da ne schnelle Lösung?
    MfG Firer

  • Am besten ises wenn du den HexCode 0x0013F714 in Stack #60 kurz veränderst in 0x00000000, ansonsten frag mal Kye, da nur er (was ich glaube) den SourceCode hat um nachzusehen.


    Wenn du ihn nicht fragen willst, dann poste uns die Problemzeile von deinem Sourcecode.

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!


  • enum gcar_info {
    gcar_id,
    gcar_owner,
    gcar_slot,
    Float:gcar_x,
    Float:gcar_y,
    Float:gcar_z,
    Float:gcar_rot,
    gcar_vehicleid
    }
    new g_cars[][gcar_info] = {
    {0,5,1, -2247.1292,110.2647,34.9503,358.7388}, //GroveStreet 1
    {1,5,2, -2247.0322,117.5761,34.9490,358.8047}, //GroveStreet 2
    {2,5,3, -2247.0120,94.2792,34.9503,359.7000}, //Grovestreet 3
    {3,5,4, -2246.9990,87.5638,34.9496,358.8338}, //GroveStreet 4
    {4,5,5, -2257.4688,119.4572,34.9707,179.0491}, //GroveStreet 5
    {5,5,6, -2258.7837,93.8334,34.9707,177.8491}, //GroveStreet 6
    // Sobald ich das ab hier einfüge
    {6,6,1, -2181.7502,1032.6985,79.7349,179.7053}, //StreetSnakes 1
    {7,6,2, -2189.8628,1033.0167,79.7349,177.3296}, //StreetSnakes 2
    {8,6,3, -2197.9241,1033.2206,79.7349,180.7440}, //StreetSnakes 3
    {9,6,4, -2205.5317,1016.0911,79.6583,270.4813}, //StreetSnakes 4
    {10,6,5, -2174.2415,1023.4548,79.6583,89.1117}, //StreetSnakes 5
    {11,6,6, -2211.4114,1023.6159,79.6582,90.2671} //StreetSnakes 6
    };

  • Der Befehl dazu wäre auch interessant, denn deine Definitionen sind richtig. Aber irgendwie merke ich auch gerade, dass du ungern Scahen aus deinem Script hier offenlegen willst ^^ Aber es geht nunmal nicht anders, wenn du es nicht alleine lösen kannst bzw. du hier Hilfe verlangst.

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • Ja, das stimmt.
    Ich gebe wirklich nur sehr ungerne Scriptteile aus meinem Script herraus.
    Habe es oft genug gesehen/gehört, dass es sogar "Kinder" gibt, die solche Scriptteile suchen und sich so ihr Script "zusammenstehlen"...
    Obwohl mir das natürlich auch durchaus bewusst ist.
    Hielt es aber für unnötig, da es bei allen DCMD's so ist.


    B2T:
    Es ist bei allen DCMD's, die ich nur für CMD's mit Parametern verwende, der Fall.
    Getestet habe ich es bei folgenden:
    dcmd_givemoney(playerid,params[])
    {
    if(GetPVarInt(playerid,"admin") < 2)
    {
    return SendClientMessage(playerid,COLOR_RED,"** Du hast nicht die Berichtigung für diesen Command!");
    }
    new pID,geld;
    if(sscanf(params,"ud",pID,geld))
    {
    return SendClientMessage(playerid,COLOR_RED,"** /givemoney [Playerid/Name] [Summe]");
    }
    if(!IsPlayerConnected(pID))
    {
    return SendClientMessage(playerid,COLOR_RED,"** Dieser Spieler ist nicht Online!");
    }
    else
    {
    AGivePlayerMoney(playerid,geld);
    SendFormatMessage(playerid,COLOR_YELLOW,"** Du hast %s $%d gegeben!",pname[pID],geld);
    if(playerid != pID){SendFormatMessage(playerid,COLOR_YELLOW,"** Admin %s hat dir $%d gegeben!",pname[playerid],geld);}
    AdminLog(playerid,"/givemoney");

    }
    return 1;
    }


    dcmd_veh(playerid,params[])
    {
    if(GetPVarInt(playerid,"admin") < 4)
    {
    return SendClientMessage(playerid,COLOR_RED,"** Du hast nicht die Berichtigung für diesen Command!");
    }
    new model,farbe1,farbe2;
    if(sscanf(params,"ddd",model,farbe1,farbe2))
    {
    return SendClientMessage(playerid,COLOR_RED,"** /(v)eh [Model] ([Farbe1] [Farbe2])");
    }
    if(model < 400 || model > 611)
    {
    return SendClientMessage(playerid,COLOR_RED,"** Ungültige Model-ID!");
    }
    else
    {
    new Float:px,Float:py,Float:pz,Float:pangle;
    GetPlayerPos(playerid,px,py,pz);
    GetPlayerFacingAngle(playerid,pangle);
    AddVehicle(model,px,py,pz,pangle,farbe1,farbe2);
    }
    return 1;
    }


    Hier nochmal meine DCMD-Defination.
    Ich bezweifle zwar, dass es daran liegen könnte, weil es ja vorher funktionierte, aber man will ja nichts ausschließen.
    #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1

  • Ok in diesem Fall wäre nicht der Befehl wichtig, sondern dann doch eher die Funktion AddVehicle!


    Meine Vermutung liegt an einem großem ArrayFehler, denn meißt entstehen solche "Crashes" bei multi-dimensionalen Array´s. Bei den einfachen bricht nur der Code ab ^^.

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!


  • enum c_enum {
    tank,
    c_color1,
    c_color2,
    c_model
    }
    new car[MAX_VEHICLES][c_enum];
    stock AddVehicle(model,Float:x,Float:y,Float:z,Float:rot,color1,color2)
    {
    new cid = AddStaticVehicleEx(model,x,y,z,rot,color1,color2,-1);
    car[cid][tank] = MaxTank(model);
    car[cid][c_color1] = color1;
    car[cid][c_color2] = color2;
    return cid;
    }
    stock MaxTank(model)
    {
    new wert;
    switch(model)
    {
    case 592,577,511,512,593,520,519,553,476,460,513: wert = 999; // Flugzeuge
    case 548,425,417,487,488,497,563,447,469: wert = 999; // Helikopter
    case 509,481,510: wert = 999; // Fahrräder
    case 462,448,581,522,521,461,523,463,586,468,471: wert = 40; //Motorräder
    case 480,533,439,555: wert = 50; // Cabrios
    case 499,422,482,498,609,524,578,455,403,414,582,443,514,600,413,515,440,543,459,408,456,554: wert = 80; // Industrie
    }
    return wert;
    }
    Funktioniert alles, bis ich diese Codezeilen einfüge...

  • Ok, wo verwendest du dann überhaupt "g_cars" ? ^^

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • Dann schau dir vl dort die for-Schleife an wo sie verwendet wird bzw. die Variable die für einen ArrayBereich gesetzt wird. Unten ein kleines Beispiel was "sein" könnte, auch mit einer anderen ungültigen Zahl.


    new zahl=-1;
    g_cars[zahl][gcar_id] = CreateVehicle(Blah Blah...);


    wenn du verstehst was ich meine ^^, also per printf Debuggen

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • Danke,
    hat mir schonmal weiter geholfen.


    Normalerweise müsste er von 0 bis 11 laden.
    Bei 9 springt er aber nach 48...


    //EDIT:
    Komisch, die for-schleife lief total falsch durch.
    Wenn ich jedes Fahrzeug Manuell beim starten lade, funktioniert alles.


    Werd ich wohl noch mal rumprobieren müssen.
    Oder es halt so lassen. Währe mehr Code und die Übersicht würde fehlen, aber wenigstens Funzen würde es^^

    Einmal editiert, zuletzt von Firerfan ()