Beiträge von #S.

    Immer noch der 1:1 gleiche Fehler.



    (Zeile 3981 ist CallLocalFunction Zeile)
    Kann doch nicht sein, dass der Code nur für einen Wagen, und dann auch noch ausgerechnet für den LSPD Wagen funktioniert. Ist ein wenig banal.
    Aber vielen Dank für deine bisherige Mühe, weiß ich zu schätzen.


    mfg.

    Dann bekomme ich ganz normal die Nachricht "Glückwunsch zum Erwerb eures neuen Fraktauto! [...]", also es wird halt der ganze Code unter dem createFrakCar Befehl ausgeführt.

    Keiner meiner Dialoge reagiert dann mehr ^^
    Sobald ich aber die vFunc.inc (die diese impl.inc braucht) oben aus meinem Script rausmache, bleibt nur noch der 1ne Error mit OnDialogResponse at:3971. Also der andere Error in der Konsole ist dann weg.


    Lösche ich die Include allerdings aus dem Script (vFunc.inc benutzt dies impl.inc, mit vFunc kann man u.a. die VehicleColors auslesen, brauche ich aber sowieso nicht mehr), bleibt nur noch die eine Fehlermeldung mit der createFrakCar Zeile.


    saveFrakCarToDB(frakid,fcarid)
    {
    new query[256];
    format(query,sizeof(query),"INSERT INTO fraktautos (besitzer,ffarbe,model,x,y,z,r) VALUES ('%i','%i','%i','%f','%f','%f','%f')",frakid,fcInfo[fcarid][ffarbe],fcInfo[fcarid][fmodel],fcInfo[fcarid][fc_x],fcInfo[fcarid][fc_y],fcInfo[fcarid][fc_z],fcInfo[fcarid][fc_r]);
    mysql_function_query(dbhandle,query,true,"frakCarSavedToDB","i",fcarid);
    print(query);
    return 1;
    }


    Wird nicht in der Konsole wiedergegeben. Weder die prints 1-13 noch die query von saveFrakCarToDB.


    Zum Vergleich nochmal hier die Konsole, wo ich das LSPD Car (596) kaufe und alles funktioniert, und dann halt der Screen von oben (wobei es da egal ist welches Auto es ist, alle 4 anderen funktionieren nicht außer diese VehicleID).
    Ziemlich merkwürdiger Fehler, allerdings nichts was sich nicht lösen lässt. ;)

    War oben im Post schon drin, hier nochmal:



    createFrakCar(frakid,modelid,Float:x,Float:y,Float:z,Float:r,f_farbe)
    {
    print("1");
    for(new i=0;i<sizeof(fcInfo);i++)
    {
    if(fcInfo[i][id_x]!=0)continue;
    print("2");
    fcInfo[i][fbesitzer]=frakid;
    print("3");
    fcInfo[i][fc_x]=x;
    print("4");
    fcInfo[i][fc_y]=y;
    print("5");
    fcInfo[i][fc_z]=z;
    print("6");
    fcInfo[i][fc_r]=r;
    print("7");
    fcInfo[i][fmodel]=modelid;
    print("8");
    switch(frakid)
    {
    case 1:
    {
    f_farbe=-1;
    }
    case 2:
    {
    f_farbe=252;
    }
    }
    print("11");
    fcInfo[i][ffarbe]=f_farbe;
    print("12");
    fcInfo[i][id_x]=CreateVehicle(modelid,x,y,z,r,f_farbe,-1,60);
    print("13");
    saveFrakCarToDB(frakid,i);

    return 1;
    }
    return 1;
    }

    Werde ich machen, danke.


    //Edit:
    Er kommt nicht mal zur 1, scheint also als würde die Funktion nicht einmal aufgerufen werden.

    Besagte Zeile + Code drum herum:



    if(dialogid==DIALOG_CHFRAKTS)
    {
    if(response)
    {
    printf("1");
    new fID=pInfo[playerid][fraktion];
    printf("2");
    new id=GetPVarInt(playerid,"buyFCarID");
    printf("3");
    if(fInfo[fID][f_kasse]<fahCars[id][fc_preis])
    {
    printf("4");
    SendClientMessage(playerid,CLR_RED,"In eurer Fraktionskasse befindet sich nicht genuegend Geld fur dieses Auto!");
    RemovePlayerFromVehicle(playerid);
    return 1;
    }
    printf("5");
    fInfo[fID][f_kasse]-=fahCars[id][fc_preis];
    printf("6");
    saveFrakKasse(fID);
    printf("7");
    createFrakCar(fID,fahCars[id][fmodel],fahInfo[id][fs_x],fahInfo[id][fs_y],fahInfo[id][fs_z],fahInfo[id][fs_r],fcInfo[id][ffarbe]); //Die böse Zeile
    printf("fID ist %i",fID);
    SendClientMessage(playerid,CLR_YELLOW,"Glueckwunsch zum Erwerb eures neuen Fraktautos! Als Leader kannst du mit /fpark euer Fahrzeug umparken.");
    RemovePlayerFromVehicle(playerid);
    }
    else
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,CLR_RED,"Autoverkauf abgebrochen.");
    SendClientMessage(playerid,CLR_RED,"Gehe wieder in das Auto, fals du dich verdrueckt hast.");
    return 1;
    }
    }


    Von den 1sen usw nicht stören lassen, waren nur ein paar Lösungsansätze.


    mfg.


    new fcInfo[64][fcEnum];

    Das dazugehörige Enum:

    enum fcEnum
    {
    id_x,
    fbesitzer,
    fmodel,
    ffarbe,
    Float:fc_x,
    Float:fc_y,
    Float:fc_z,
    Float:fc_r,
    fdb_id
    }

    Hallo Breadfish,


    bin dann auch mal auf den Trichter gekommen, ein eigenen Thread aufzumachen anstatt Kleine Scripting Fragen vollzuspammen. Hier ist das Problem etwas größer.
    Ich habe ein Fraktautohaus gescriptet, was teils auch wunderbar funktioniert. Allerdings immer nur für ein Fahrzeug, was nämlich das Police Car (596) ist.
    Hier erstmal das Array, wo alle Fraktautos drin sind.

    new fahCars[][fchInfoEnum] = {
    {596,2148.3457,-1148.2457,24.0449,268.3922,50}, // POLICE LSPD CAR PLATZ: 22
    {599,2148.1140,-1143.2367,24.5964,269.6135,50}, // POLICE RANGER PLATZ: 24
    {523,2148.1277,-1138.4258,25.1168,267.9870,50}, // POLICE HPV PLATZ: 25
    {497,2148.8813,-1133.8751,25.1917,267.8968,50}, // POLICE MAVERICK PLATZ: 26
    {411,2147.9229,-1203.5190,23.4772,269.6615,50} // INFERNUS PLATZ: 1
    };

    Werden auch alle erstellt, alles super. Jetzt fahre ich zum Platz hin, steige in das Police Car ein, kaufe es, es wird erstellt, kann es fparken usw. Gehe ich jetzt in irgendein anderes Fahrzeug rein, spuckt er mir in der Konsole folgende Meldung aus:


    Es geht also, warum auch immer, nur mit dem einem Fahrzeug.
    Alles weitere, was ihr (denke ich mal) braucht:


    Danke für jede Hilfe.


    mfg.

    fahCars habe ich momentan als Array:



    new fahCars[][fchInfoEnum] = {
    {596,2148.3457,-1148.2457,24.0449,268.3922,50}, // POLICE LSPD CAR PLATZ: 22
    {599,2148.1140,-1143.2367,24.5964,269.6135,50}, // POLICE RANGER PLATZ: 24
    {523,2148.1277,-1138.4258,25.1168,267.9870,50}, // POLICE HPV PLATZ: 25
    {497,2148.8813,-1133.8751,25.1917,267.8968,50}, // POLICE MAVERICK PLATZ: 26
    {411,2147.9229,-1203.5190,23.4772,269.6615,50} // INFERNUS PLATZ: 1
    };


    entsprechende Enum (falls gebraucht)


    Was noch wissenswert wäre: Ich kann mir immer nur das LSPD-Auto (also die 596) erfolgreich kaufen. Will ich mir eins der anderen Fraktcars kaufen, kriege ich diese Fehlermeldung.


    //Edit:
    Habe noch ein detaillierteres Bild gemacht.

    die dialogid=9 ist das hier:


    Die ganzen prints waren nur zu Testzwecken, bin schon etwas länger an dem Problem :rolleyes:
    Die Funktion:

    Wird jemand aus dem Error log schlau?



    betrifft folgende Zeile:


    createFrakCar(fID,fahCars[id][fmodel],fahInfo[id][fs_x],fahInfo[id][fs_y],fahInfo[id][fs_z],fahInfo[id][fs_r],fcInfo[id][ffarbe]);
    Das ist die Zeile in OnDialogResponse, was er mit ?? meint weiß ich nicht.

    Situation: Ich will mein Frakauto parken, kriege aber immer nur die Datenbank-ID 1 raus, obwohl ich mich in dem Auto befinde, welches die Datenkbank-ID 3 hat.
    Hab mir mal nen kleinen Befehl geschrieben, um zu schauen ob es klappt.

    ocmd:fparkinfo(playerid,params[])
    {
    for(new i=0;i<sizeof(fcInfo);i++)
    {
    if(!fcInfo[i][id_x])continue;
    new string[64];
    format(string,sizeof(string),"FDB_ID: %i",fcInfo[i][fdb_id]);
    SendClientMessage(playerid,CLR_YELLOW,string);
    //?
    }
    return 1;
    }

    Ich bin mir sicher, dass es daran liegt wo das ? ist. Ich weiß nämlich nicht, was ich dort hinmachen muss. Mache ich nichts hin, geht er alle 2 Frakautos durch und gibt mir die beiden IDs statt einem. Mache ich ein break, geht er wahrscheinlich immer nur das erste Auto durch, weswegen ich immer nur die ID1 kriege. Bei continue macht er es wie beim 1sten Fall. Bei return 1; geht er sowieso nur das erste Auto durch. Was muss also dahin? Ich bin ratlos... Ist bestimmt ganz einfach.

    Beim Printen von meinem /fpark Befehl wird fdb_id immer als 1 angegeben, obwohl ich im 2ten Fahrzeug (ist auch richtig als id=2 in der DB) bin. Es liegt also irgendwo dadran. Wo allerdings? Ich sehe nirgends irgendwo Fehler...



    mfg

    Habe mal ohne GetVehicleColor probiert und jetzt funktioniert der Befehl einwandfrei, bis auf dass ich das 2te Auto vom LSPD (in meiner DB "fraktautos" sind momentan nur 2 LSPD Wagen gespeichert) gar nicht mehr fparken kann, also er sagt mir einfach "Entweder du bist in keinem Fraktauto oder dieses Auto gehört nicht zu deiner Fraktion.".


    Aber natürlich. ^^

    Was ich seitdem noch hinzugefügt hatte war die Fkt. GetVehicleColor (.inc ausm Internet gezogen) und dieses noch mit ins format getan.

    new color1,color2;
    GetVehicleColor(id,color1,color2);
    for(new i=0;i<sizeof(fcInfo);i++)
    {
    if(id==fcInfo[i][id_x])
    {
    GetVehiclePos(fcInfo[i][id_x],fcInfo[i][fc_x],fcInfo[i][fc_y],fcInfo[i][fc_z]);
    GetVehicleZAngle(fcInfo[i][id_x],fcInfo[i][fc_r]);
    new query[256];
    format(query,sizeof(query),"UPDATE fraktautos SET ffarbe='%i',x='%f',y='%f',z='%f',r='%f' WHERE besitzer='%i' AND id='%i'",color1,fcInfo[i][fc_x],fcInfo[i][fc_y],fcInfo[i][fc_z],fcInfo[i][fc_r],fID,fcInfo[i][fdb_id]);
    mysql_function_query(dbhandle,query,false,"","");
    SendClientMessage(playerid,CLR_BLUE,"Erfolgreich umgeparkt. Euer Fraktauto wird nun immer hier spawnen!");

    Noch dazu habe ich bei vID weggemacht weil es dann nicht mehr benutzt wurde. Bei GetVehicleColor hatte ich vor stehen GetVehicleColor(GetPlayerVehicleID(playerid),.... Das habe ich nun mit id ersetzt und jetzt crasht der Server schon mal nicht mehr. Er sagt mir nur noch Unknown Command sobald ich /fpark eingebe.


    Bittesehr.

    Sobald ich /fparke, crasht meine sampserver.exe.