Beiträge von CaZe

    Ja habe, beim Laden aller Fahrzeuge wird ma p_owner auch richtig beim DEBUG ausgegben.


    Es ist an dein jTUT tutorial gehalten.

    forward LoadPrivateVehicles_Data();
    public LoadPrivateVehicles_Data()
    {
    new rows;
    rows = cache_num_rows();
    for(new i=0;i<rows;i++)
    {
    PrivateVehicle[i][p_modelID] = cache_get_field_content_int(i, "Modelid");
    PrivateVehicle[i][p_x] = cache_get_field_content_float(i, "PosX");
    PrivateVehicle[i][p_y] = cache_get_field_content_float(i, "PosY");
    PrivateVehicle[i][p_z] = cache_get_field_content_float(i, "PosZ");
    PrivateVehicle[i][p_a] = cache_get_field_content_float(i, "PosA");
    PrivateVehicle[i][p_color1] = cache_get_field_content_int(i, "Color1");
    PrivateVehicle[i][p_color2] = cache_get_field_content_int(i,"Color2");
    cache_get_field_content(i,"Owner",PrivateVehicle[i][p_owner],Handle,24);
    if(PrivateVehicle[i][p_modelID] >= 400 && PrivateVehicle[i][p_modelID] <= 611)
    {
    printf("Owner: %s (ID: %i)",PrivateVehicle[i][p_owner],i);
    PrivateVehicle[i][p_vID] = CreateVehicle(PrivateVehicle[i][p_modelID],PrivateVehicle[i][p_x],PrivateVehicle[i][p_y],PrivateVehicle[i][p_z],PrivateVehicle[i][p_a],PrivateVehicle[i][p_color1],PrivateVehicle[i][p_color2],-1);
    }
    else
    {
    printf("[Error] PrivateVehicle Model-ID %d doesn't exist (ID: %d).",PrivateVehicle[i][p_modelID],i);
    }
    if(GetVehicleModel(MAX_VEHICLES-1) != 0)return print("The Limit of Max Vehicles is reached.");
    if(i == MAX_PRIVATE_VEHICLES-1)return print("The Limit of Max Private Vehicles is reached.");
    }
    return 1;
    }

    Nabend Leute,
    ich habe nur kurz eine Frage:
    Ich bin gerade dabei ein Haus-System zu schreiben. Nun wollte ich nur bestimmte Interiors zur Erstellen freigen. Nur weiß ich nicht wie ich dort handhaben soll.
    Ich habe mir das so gedacht mit einem Enum alles zu deklarieren nur leider weiß ich nichtmal wie ich das hinbekommen soll.
    Schonmal danke im vorraus.

    Guten Abend liebe Leute,
    ich habe gerade erst bemerkt dass ich noch einen kleinen Fehler bei meinem /lock Befehl habe. Der Befehl ans sich selber funktioniert 1A nur 1 Problem ist da, beim Auslesen vom Owner des Fahrzeuges wird dieser leer ausgegeben. Als ich beim Laden der Fahrzeuge dies debuggte gab er mir den Owner zu dem jeweiligen Fahrzeug an.
    Obwohl p_owner leer ist sagt er es übereinstimmt trotzdem mit getPlayerName.


    Schonmal danke im vorraus.


    ocmd:lock(playerid,params[])
    {
    for(new i=0;i<MAX_PRIVATE_VEHICLES;i++)
    {
    new Float:pos[3];
    GetVehiclePos(i,pos[0],pos[1],pos[2]);
    if(IsPlayerInRangeOfPoint(playerid,5,pos[0],pos[1],pos[2]))
    {
    if(!strcmp(PrivateVehicle[i][p_owner], getPlayerName(playerid)))
    {
    printf("Owner = %s",PrivateVehicle[i][p_owner]);
    printf("Player = %s",getPlayerName(playerid));
    new engine,lights,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(i,engine,lights,alarm,doors,bonnet,boot,objective);
    if(doors == 1)
    {
    SetVehicleParamsEx(i,engine,lights,alarm,0,bonnet,boot,objective);
    SendClientMessage(playerid,Gelb,"[SInfo] {FFFFFF}You have unlocked your Vehicle.");
    return 1;
    }
    else
    {
    SetVehicleParamsEx(i,engine,lights,alarm,1,bonnet,boot,objective);
    SendClientMessage(playerid,Gelb,"[SInfo] {FFFFFF}You have locked your Vehicle.");
    return 1;
    }
    }
    return SendClientMessage(playerid,Rot,"Error: {FFFFFF}You are not near by your Vehicle.");
    }
    }
    return SendClientMessage(playerid,Rot,"Error: {FFFFFF}You are not near by your Vehicle.");
    }

    Bereits getan bringt leider nichts
    Hat doch geklappt.
    Danke euch alle für die große Hilfe.
    Eine Frage habe ich jedoch noch.
    Beim Erstellen eines Privaten Fahrzeuges werden in der Datenbank nur wirre Zeichen angezeigt.


    //EDIT:
    Befehl des erstellens:
    ocmd:pcreate(playerid,params[])
    {
    if(!IsPlayerAnAdmin(playerid))return SendClientMessage(playerid,Rot,"Error: {FFFFFF}You are not allowed to use this Command.");
    if(!IsPlayerAdminRank(playerid,4))return SendClientMessage(playerid,Rot,"Error: {FFFFFF}You are not allowed to use this Command.");
    new model,owner,c1,c2;
    if(GetVehicleModel(MAX_VEHICLES-1))return SendClientMessage(playerid,Rot,"Error: {FFFFFF}The Limit of MAX_VEHICLES is reached.");
    if(sscanf(params,"siii",owner,model,c1,c2))return SendClientMessage(playerid,Rot,"Error: {FFFFFF}Use /pcreate [Owner] [Model ID] [Color 1] [Color 2]");
    if(model < 400 || model > 611)return SendClientMessage(playerid,Rot,"Error: {FFFFFF}The VehicleID can't be smaller then 400 or higher then 600.");
    if(c1 < 1 || c1 > 255)return SendClientMessage(playerid,Rot,"Error: {FFFFFF}In the Color ID 1 is an error. It can't be smaller then 1 and can't be higher then 255.");
    if(c2 < 1 || c2 > 255)return SendClientMessage(playerid,Rot,"Error: {FFFFFF}In the Color ID 2 is an error. It can't be smaller then 1 and can't be higher then 255.");
    for(new i=0;i<MAX_PRIVATE_VEHICLES;i++)
    {
    if(PrivateVehicle[i][p_vID] == 0)
    {
    new Float:x, Float:y, Float:z, Float:a;
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid, a);
    PrivateVehicle[i][p_modelID] = model;
    PrivateVehicle[i][p_x] = x;
    PrivateVehicle[i][p_y] = y;
    PrivateVehicle[i][p_z] = z;
    PrivateVehicle[i][p_a] = a;
    PrivateVehicle[i][p_color1] = c1;
    PrivateVehicle[i][p_color2] = c2;
    PrivateVehicle[i][p_owner] = owner;
    new query[342];
    mysql_format(Handle,query,sizeof(query),"INSERT INTO privatecars (id, Modelid, PosX, PosY, PosZ, PosA, Color1, Color2, Owner) VALUES ('%d', '%d', '%f', '%f', '%f', '%f', '%d', '%d', '%s')",
    i,PrivateVehicle[i][p_modelID],PrivateVehicle[i][p_x],PrivateVehicle[i][p_y],PrivateVehicle[i][p_z],PrivateVehicle[i][p_a],PrivateVehicle[i][p_color1],PrivateVehicle[i][p_color2],PrivateVehicle[i][p_owner]);
    mysql_pquery(Handle,query);
    PrivateVehicle[i][p_vID] = CreateVehicle(PrivateVehicle[i][p_modelID],PrivateVehicle[i][p_x],PrivateVehicle[i][p_y],PrivateVehicle[i][p_z],PrivateVehicle[i][p_a],PrivateVehicle[i][p_color1],PrivateVehicle[i][p_color2],-1);
    PutPlayerInVehicle(playerid,PrivateVehicle[i][p_vID],0);
    return SendClientMessage(playerid,Gelb,"[SInfo] {FFFFFF}The Private Vehicle was created and saved.");
    }
    }
    return SendClientMessage(playerid,Rot,"Error: {FFFFFF}The Limit of MAX_PRIVATE_VEHICLES is reached.");
    }


    //EDIT:
    Hat sich geklärt habe herausgefunden dass ich format nutzen muss.

    Also:

    cache_get_field_content(i,"Owner",PrivateVehicle[i][p_owner],Handle);


    zu

    cache_get_field_content(i,"Owner",PrivateVehicle[i][p_owner],Handle,24);

    ?


    //EDIT:
    Der Befehl sieht so aus:
    ocmd:lock(playerid,params[])
    {
    for(new i=0;i<MAX_PRIVATE_VEHICLES;i++)
    {
    printf("DEBUG: 1");
    new Float:pos[3];
    GetVehiclePos(i,pos[0],pos[1],pos[2]);
    if(IsPlayerInRangeOfPoint(playerid,5,pos[0],pos[1],pos[2]))
    {
    printf("DEBUG: 2");
    if(!strcmp(PrivateVehicle[i][p_owner], getPlayerName(playerid)))
    {
    printf("DEBUG: 3");
    new engine,lights,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(i,engine,lights,alarm,doors,bonnet,boot,objective);
    if(doors == 1)
    {
    printf("DEBUG: 4");
    SetVehicleParamsEx(i,engine,lights,alarm,0,bonnet,boot,objective);
    SendClientMessage(playerid,Gelb,"[SInfo] {FFFFFF}You have unlocked your Vehicle.");
    return 1;
    }
    if(doors == 0)
    {
    printf("DEBUG: 4");
    SetVehicleParamsEx(i,engine,lights,alarm,1,bonnet,boot,objective);
    SendClientMessage(playerid,Gelb,"[SInfo] {FFFFFF}You have locked your Vehicle.");
    return 1;
    }
    }
    printf("DEBUG: 5");
    return SendClientMessage(playerid,Rot,"Error: {FFFFFF}You are not near by your Vehicle.");
    }
    printf("DEBUG: 6");
    }
    printf("DEBUG: 7");
    return 1;
    }

    Dann bin ich wohl noch ganz gut weggekommen, hatte die letzten Tage statt nen 15-20 einen 50-60 Ping. Bei mir hat sich das heute wieder gelegt.

    Hm, jetzt sagt er mir dass ich nicht in der Nähe meines Fahrzeuges bin obwohl ich direkt daneben stehe.
    Ein Bild der DB:

    Ich habe auch gerade gemerkt dass wenn ich ein Fahrzeug per Befehl erstelle und den Owner als "CaZe" angeben er mir wirre Zeichen in die DB schreibt.


    //EDIT:
    Den Owner lass ich so auslesen:
    PrivateVehicle[i][p_owner] = cache_get_field_content(i,"Owner",PrivateVehicle[i][p_owner],Handle);

    Guten Abend liebe Brotfische, ich habe hier einen kleinen Fehler bei meinen /lock Befehl weiß aber leider nicht woran dieser scheitert.
    Ich habe diesen schon Debugged konnte aber nichts daraus fassen. Er springt von Debug 1 direkt zu 6.
    ocmd:lock(playerid,params[])
    {
    for(new i=0;i<MAX_PRIVATE_VEHICLES;i++)
    {
    printf("DEBUG: 1");
    new Float:pos[3];
    GetVehiclePos(i,pos[0],pos[1],pos[2]);
    if(IsPlayerInRangeOfPoint(playerid,10,pos[0],pos[1],pos[2]))
    {
    printf("DEBUG: 2");
    if(PrivateVehicle[i][p_owner] == playerid)
    {
    printf("DEBUG: 3");
    new engine,lights,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(i,engine,lights,alarm,doors,bonnet,boot,objective);
    if(doors == 1)
    {
    printf("DEBUG: 4");
    SetVehicleParamsEx(i,engine,lights,alarm,0,bonnet,boot,objective);
    SendClientMessage(playerid,Gelb,"[SInfo] {FFFFFF}You have unlocked your Vehicle.");
    return 1;
    }
    if(doors == 0)
    {
    printf("DEBUG: 4");
    SetVehicleParamsEx(i,engine,lights,alarm,1,bonnet,boot,objective);
    SendClientMessage(playerid,Gelb,"[SInfo] {FFFFFF}You have locked your Vehicle.");
    return 1;
    }
    }
    printf("DEBUG: 5");
    return SendClientMessage(playerid,Rot,"Error: {FFFFFF}You are not near by your Vehicle.");
    }
    printf("DEBUG: 6");
    return 1;
    }
    printf("DEBUG: 7");
    return 1;
    }


    //EDIT: Im Script ist alles eingerückt keine Sorge.

    //EDIT1:
    Bitte achte auf die Setzung von Aktionen. Das erste Gui konnte nicht erstellt werden da alles hintereinander geschrieben war.


    So, ich habe mich kurz die paar Minuten schlau gemacht und denke du meinst das so:


    Erklärung:
    Gui, [Zahl]: ist dafür dass sich kein Gui überschneidet, also wenn du Gui 1 öffnen willst aber keine Zahlentrennung hast öffnest du auch das unten erstellte Gui.
    gSave ist die Variable/Funktion die aufgerufen wird wenn der Button gedrückt wird.
    Das mit den eigenen Commands werde ich hier noch reineditieren und dich dann anschreiben.

    Wenn ich das richtig verstanden habe, musst du einfach nur ein eines Gui erstellen welches sich bei der Benutzung des Buttons öffnet

    Ich hab gerade leider nicht an die Log gedacht. Aber diese gibt auch die richtigen Koordinaten aus.

    SQL
    [22:34:38] [DEBUG] mysql_pquery - connection: 1, query: "UPDATE fraccars SET Modelid='411',PosX='1472.139770',PosY='-1699", callback: "(null)", format: "(null)"


    @Mencent:


    //EDIT:
    Was ich auch gerade bemerke ist: Dass die Y Achse immer die gleiche ist egal wo man parkt.

    Erstmal sehr gutes Tutorial Jeffry. Sehr gut erklärt und beschrieben.
    Ich habe nur einen kleinen Fehler den ich mir nicht erklären kann.
    Undzwar, wenn ich den /park Befehl nutze wird alles richtig in die Datenbank übergeben außer die Y Achse. In der Konsole wird sie richtig geprinted nur nicht übertragen.
    Hier der code:

    stock SaveFracVehCheck(vehicleid)
    {
    new query[256];
    for(new i=0;i<MAX_FRAC_VEHICLES;i++)
    {
    if(FracVehicle[i][f_vID] == vehicleid)
    {
    GetVehiclePos(FracVehicle[i][f_vID],FracVehicle[i][f_x],FracVehicle[i][f_y],FracVehicle[i][f_z]);
    printf("Y=%f",FracVehicle[i][f_y]);
    GetVehicleZAngle(FracVehicle[i][f_vID],FracVehicle[i][f_a]);
    format(query,sizeof(query),"UPDATE fraccars SET Modelid='%i',PosX='%f',PosY='%f',PosY='%f',PosA='%f',Color1='%i',Color2='%i',Fracid='%i' WHERE id='%i'",
    FracVehicle[i][f_modelID],FracVehicle[i][f_x],FracVehicle[i][f_y],FracVehicle[i][f_z],FracVehicle[i][f_a],FracVehicle[i][f_color1],FracVehicle[i][f_color2],FracVehicle[i][f_fracID],i);
    /*mysql_format(Handle,query,sizeof(query),"UPDATE fraccars SET Modelid='%i',PosX='%f',PosY='%f',PosY='%f',PosA='%f',Color1='%i',Color2='%i',Fracid='%i' WHERE id='%i'",
    FracVehicle[i][f_modelID],FracVehicle[i][f_x],FracVehicle[i][f_y],FracVehicle[i][f_z],FracVehicle[i][f_a],FracVehicle[i][f_color1],FracVehicle[i][f_color2],FracVehicle[i][f_fracID],i);*/
    mysql_pquery(Handle,query);
    return 1;
    }
    }
    return 0;
    }


    Struktur der Tabelle:

    Nach dem Befehl:

    In diesem Falle gibt printf aber eine ~ -1600 Koordinate aus.


    Schonmal danke im vorraus.

    Ich habe das jetzt mal so gemacht:
    Es sieht so aus:
    new query[342],key[50];
    if(dialogid == DIALOG_REGISTER)
    {
    if(!response)
    {
    SendClientMessage(playerid,Rot,"Error: {FFFFFF}You have canceled the Registration. Please register to play on this Server.");
    SetTimerEx("KickTimer",500,false,"i",playerid);
    return 1;
    }
    if(strlen(inputtext) < 4)return SendClientMessage(playerid,Rot,"Error: {FFFFFF}Your Password cant be smaller then 7 or bigger then 50 characters."),ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Registration","It was no Account found under this name.\nPlease take a safe Password to register you.","Register","Cancel");
    format(key,50,"%s",inputtext);
    mysql_escape_string(getPlayerName(playerid),getPlayerName(playerid));
    mysql_escape_string(key, key);
    format(query, sizeof(query), "INSERT INTO (username, password) VALUES ('%s',MD5('%s'))",getPlayerName(playerid), key);
    mysql_pquery(Handle,query);
    SendClientMessage(playerid,Gelb,"[SInfo] {FFFFFF}You have created an Account.");
    }


    Ich habe die .amx gelöscht und das Script neu kompiliert. Die .amx is also aktuell und in der server.cfg ist der richtige Name vom Script eingetragen. Die Datenbank liest auch die Accounts aus die ich manuell eintragen konnte und trotzdem dieser Fehler der die Accounts nicht erstellen lässt.

    Jeffry:
    Bekomme trotzdem noch den gleichen Error:

    SQL
    [01:39:28] [DEBUG] mysql_pquery - connection: 1, query: "INSERT INTO (username, password) VALUES  ('test',MD5('12345678')", callback: "(null)", format: "(null)"
    [01:39:28] [DEBUG] CMySQLQuery::Execute[] - starting query execution
    [01:39:28] [ERROR] CMySQLQuery::Execute[] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(username, password) VALUES  ('test',MD5('12345678'))' at line 1
    [01:39:28] [DEBUG] CMySQLQuery::Execute[] - error will be triggered in OnQueryError


    format(key,50,"%s",inputtext);
    mysql_escape_string(getPlayerName(playerid),getPlayerName(playerid)), mysql_escape_string(key, key);
    format(query, sizeof(query), "INSERT INTO (username, password) VALUES ('%s',MD5('%s'))",getPlayerName(playerid), key);
    mysql_pquery(Handle,query);