Tacho Spinnt

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 habe eine frage unswa will ich den Fahrzeug besitzer ausgeben lassen aber es funktioniert irgendwie nicht aber wieso ?
    es wird mir immer Error angezeigt aber wieso ?


    public TachoUpdate()
    {
    new string[128];
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(!IsPlayerInAnyVehicle(i))continue;
    new veh = GetPlayerVehicleID(i),str[64],Float:hp,speed = GetVehicleSpeed(veh);
    new vehicleid;
    formatEx(str,"Speed: %d KM/H", speed);
    TextDrawSetString(Tacho[i][Speed],str);
    GetVehicleHealth(veh, hp);
    hp = floatmul(floatdiv(100,750),(hp-250));
    if(hp<=0.0){hp=0.0;}
    formatEx(str,"Zustand: %.0f",hp);
    TextDrawSetString(Tacho[i][Zustand],str);
    formatEx(str,"%s", VehicleFriendlyNames[GetVehicleModel(veh)-400]), TextDrawSetString(Tacho[i][Name],str);
    TextDrawSetString(Tacho[i][besitz],str);
    formatEx(str,"%s", GetAutoBesitzer(i,vehicleid),TextDrawSetString(Tacho[i][besitz],str));
    new vID = GetPlayerVehicleID(i);
    format(string,sizeof(string),"Tank: %i Liter",tank[vID]);
    TextDrawSetString(Tacho[i][ptank],string);
    }
    return 1;
    }


    public GetAutoBesitzer(playerid,vehicleid)
    {
    /*new string[68];
    for(new sv = 0; sv < sizeof(cInfo); sv++)
    {
    format(string,sizeof(string),"%s",cInfo[sv][ckz]);
    return TextDrawSetString(Tacho[playerid][besitz], string);
    }*/
    for(new i=0; i<MAX_FRAC_VEHICLES; i++)
    {
    if(fcars[i][fc_vID] == vehicleid)
    {
    if(fcars[i][fc_fracID] == 0) return TextDrawSetString(Tacho[playerid][besitz], "Error");
    else if(fcars[i][fc_fracID] == 1) return TextDrawSetString(Tacho[playerid][besitz], "Polizei");
    else if(fcars[i][fc_fracID] == 2) return TextDrawSetString(Tacho[playerid][besitz], "FBI");
    else if(fcars[i][fc_fracID] == 3) return TextDrawSetString(Tacho[playerid][besitz], "Medic");
    else if(fcars[i][fc_fracID] == 4) return TextDrawSetString(Tacho[playerid][besitz], "Oamt");
    else if(fcars[i][fc_fracID] == 5) return TextDrawSetString(Tacho[playerid][besitz], "News");
    else if(fcars[i][fc_fracID] == 6) return TextDrawSetString(Tacho[playerid][besitz], "Fahrschule");
    else if(fcars[i][fc_fracID] == 7) return TextDrawSetString(Tacho[playerid][besitz], "Grove Street");
    else if(fcars[i][fc_fracID] == 8) return TextDrawSetString(Tacho[playerid][besitz], "Ballas");
    else if(fcars[i][fc_fracID] == 9) return TextDrawSetString(Tacho[playerid][besitz], "Vagos");
    else if(fcars[i][fc_fracID] == 10) return TextDrawSetString(Tacho[playerid][besitz], "Aztecas");
    else if(fcars[i][fc_fracID] == 11) return TextDrawSetString(Tacho[playerid][besitz], "S.F Rifa");
    else if(fcars[i][fc_fracID] == 12) return TextDrawSetString(Tacho[playerid][besitz], "Lacosa Nostra");
    else if(fcars[i][fc_fracID] == 13) return TextDrawSetString(Tacho[playerid][besitz], "Yakuza");
    else if(fcars[i][fc_fracID] == 14) return TextDrawSetString(Tacho[playerid][besitz], "Russen Mafia");
    else if(fcars[i][fc_fracID] == 15) return TextDrawSetString(Tacho[playerid][besitz], "Hitmna");
    else if(fcars[i][fc_fracID] == 16) return TextDrawSetString(Tacho[playerid][besitz], "Wheelmann");
    }
    }
    for(new c=0; c<sizeof(Jobc); c++)
    {
    if(GetPlayerVehicleID(playerid) == Jobc[code=c][v_ID])
    {
    if(Jobc[code=c][Jobid] == 2)
    {
    new string[30];
    format(string,sizeof(string),"Müllmann");
    convert_encoding(string);
    return TextDrawSetString(Tacho[playerid][besitz], string);
    }
    else if(Jobc[code=c][Jobid] == 1)
    {
    new string[30];
    format(string,sizeof(string),"Straßenreiniger");
    convert_encoding(string);
    return TextDrawSetString(Tacho[playerid][besitz], string);
    }
    else if(Jobc[code=c][Jobid] == 3)
    {
    return TextDrawSetString(Tacho[playerid][besitz], "Pizzeria");
    }
    else if(Jobc[code=c][Jobid] == 4)
    {
    return TextDrawSetString(Tacho[playerid][besitz], "Postamt");
    }
    else if(Jobc[code=c][Jobid] == 5)
    {
    return TextDrawSetString(Tacho[playerid][besitz], "Berarbeiter");
    }
    else if(Jobc[code=c][Jobid] == 6)
    {
    new string[30];
    format(string,sizeof(string),"Holzfäller");
    convert_encoding(string);
    return TextDrawSetString(Tacho[playerid][besitz], string);
    }
    }
    }
    for(new i = 0; i<sizeof(newbie); i++)
    {
    if(GetPlayerVehicleID(playerid) == newbie[i])
    {
    return TextDrawSetString(Tacho[playerid][besitz], "Neuling");
    }
    }
    return 1;
    }

  • formatEx(str,"%s", VehicleFriendlyNames[GetVehicleModel(veh)-400]), TextDrawSetString(Tacho[i][Name],str);
    TextDrawSetString(Tacho[i][besitz],str);
    formatEx(str,"%s", GetAutoBesitzer(i,vehicleid),TextDrawSetString(Tacho[i][besitz],str));
    zu:
    GetAutoBesitzer(i,veh);

  • okey das funktioniert aber wenn ich in ein Privat car einsteige will ich auch den Besitzer angeben lassen aber ich lasse in der Tabelle den Besitzer mit der DB id speichern wie kann ich das machen das ich dann den Spieler namen ausgeben kann ?
    Jeffry:

  • SQL
    SELECT name FROM users WHERE id = '%d'


    Das Query, angepasst an deine Tabelle, mit der db_id des Besitzers des Fahrzeugs mit deinem MySQL Plugin per Query absenden und das Result dann auslesen. Dann hast du den Besitzer.

  • oke danke das probiere ich aus aber ich habe die GetAutoBesitzer funktion ein Bisschen umgeschrieben und Bekomme einen Error aber wieso ?
    da ich die nachher auch für den Befehl fürs Oamt nehmen kann


    error 090: public functions may not return arrays (symbol "GetAutoBesitzer")


    Im Tacho Update
    format(string,sizeof(string),"%s",GetAutoBesitzer(i,veh));
    TextDrawSetString(Tacho[i][besitz],string);


    Die Funktion
    public GetAutoBesitzer(playerid,vehicleid)
    {
    new string[30];
    for(new i=0; i<MAX_FRAC_VEHICLES; i++)
    {
    if(fcars[i][fc_vID] == vehicleid)
    {
    if(fcars[i][fc_fracID] == 0)
    {
    format(string,sizeof(string),"Error");
    }
    else if(fcars[i][fc_fracID] == 1)
    {
    format(string,sizeof(string),"Polizei");
    }
    else if(fcars[i][fc_fracID] == 2)
    {
    format(string,sizeof(string),"FBI");
    }
    else if(fcars[i][fc_fracID] == 3)
    {
    format(string,sizeof(string),"Medic");
    }
    else if(fcars[i][fc_fracID] == 4)
    {
    format(string,sizeof(string),"Oamt");
    }
    else if(fcars[i][fc_fracID] == 5)
    {
    format(string,sizeof(string),"News");
    }
    else if(fcars[i][fc_fracID] == 6)
    {
    format(string,sizeof(string),"Fahrschule");
    }
    else if(fcars[i][fc_fracID] == 7)
    {
    format(string,sizeof(string),"Grove Street");
    }
    else if(fcars[i][fc_fracID] == 8)
    {
    format(string,sizeof(string),"Ballas");
    }
    else if(fcars[i][fc_fracID] == 9)
    {
    format(string,sizeof(string),"Vagos");
    }
    else if(fcars[i][fc_fracID] == 10)
    {
    format(string,sizeof(string),"Aztecas");
    }
    else if(fcars[i][fc_fracID] == 11)
    {
    format(string,sizeof(string),"S.F Rifa");
    }
    else if(fcars[i][fc_fracID] == 12)
    {
    format(string,sizeof(string),"Lacosa Nostra");
    }
    else if(fcars[i][fc_fracID] == 13)
    {
    format(string,sizeof(string),"Yakuza");
    }
    else if(fcars[i][fc_fracID] == 14)
    {
    format(string,sizeof(string),"Russen Mafia");
    }
    else if(fcars[i][fc_fracID] == 15)
    {
    format(string,sizeof(string),"Hitman");
    }
    else if(fcars[i][fc_fracID] == 16)
    {
    format(string,sizeof(string),"Wheelman");
    }
    }
    }
    for(new c=0; c<sizeof(Jobc); c++)
    {
    if(GetPlayerVehicleID(playerid) == Jobc[code=c][v_ID])
    {
    if(Jobc[code=c][Jobid] == 2)
    {
    format(string,sizeof(string),"Müllmann");
    convert_encoding(string);
    }
    else if(Jobc[code=c][Jobid] == 1)
    {
    format(string,sizeof(string),"Straßenreiniger");
    convert_encoding(string);
    }
    else if(Jobc[code=c][Jobid] == 3) format(string,sizeof(string),"Pizzeria");
    else if(Jobc[code=c][Jobid] == 4) format(string,sizeof(string),"Postamt");
    else if(Jobc[code=c][Jobid] == 5) format(string,sizeof(string),"Bergarbeiter");
    else if(Jobc[code=c][Jobid] == 6)
    {
    format(string,sizeof(string),"Holzfäller");
    convert_encoding(string);
    }
    }
    }
    for(new i = 0; i<sizeof(newbie); i++)
    {
    if(GetPlayerVehicleID(playerid) == newbie[i])
    {
    format(string,sizeof(string),"Neuling");
    }
    }
    return string;
    }

  • okey das funktioniert jetze nochmal zu den Privat cars
    Jeffry:
    so bekomme ich Errors
    new string[30];
    for(new sv = 0; sv < sizeof(cInfo); sv++)
    {
    new name[38];
    format(string,sizeof(string),"SELECT name FROM users WHERE id = '%d'",name);
    return name;
    }


    und das 26x
    error 047: array sizes do not match, or destination array is too small

  • format(string,sizeof(string),"SELECT name FROM users WHERE id = '%d'",name);
    Das macht keinen Sinn. Dort muss die db_id des Besitzers rein.


    Außerdem musst du das Result auslesen.


    Der Error kommt wohl, weil dein Rückgabestring nicht gleich groß ist, als der in den du es schreibst. Ohne Code kann ich dir das aber nicht sagen.

  • ich habe das jetze so aber den name wird nicht angezeigt ?
    es erscheint kurz und geht sofort wieder weg
    stock GetAutoBesitzer(playerid,vehicleid)
    {
    new string[50];
    for(new sv = 0; sv < sizeof(cInfo); sv++)
    {
    new name[30];
    format(name,sizeof(name),"SELECT name FROM users WHERE id = '%d'",string);
    }
    for(new i=0; i<MAX_FRAC_VEHICLES; i++)
    {
    if(fcars[i][fc_vID] == vehicleid)
    {
    if(fcars[i][fc_fracID] == 0)
    {
    format(string,sizeof(string),"Error");
    }
    else if(fcars[i][fc_fracID] == 1)
    {
    format(string,sizeof(string),"Polizei");
    }
    else if(fcars[i][fc_fracID] == 2)
    {
    format(string,sizeof(string),"FBI");


    }
    else if(fcars[i][fc_fracID] == 3)
    {
    format(string,sizeof(string),"Medic");


    }
    else if(fcars[i][fc_fracID] == 4)
    {
    format(string,sizeof(string),"Oamt");

    }
    else if(fcars[i][fc_fracID] == 5)
    {
    format(string,sizeof(string),"News");

    }
    else if(fcars[i][fc_fracID] == 6)
    {
    format(string,sizeof(string),"Fahrschule");

    }
    else if(fcars[i][fc_fracID] == 7)
    {
    format(string,sizeof(string),"Grove Street");

    }
    else if(fcars[i][fc_fracID] == 8)
    {
    format(string,sizeof(string),"Ballas");

    }
    else if(fcars[i][fc_fracID] == 9)
    {
    format(string,sizeof(string),"Vagos");

    }
    else if(fcars[i][fc_fracID] == 10)
    {
    format(string,sizeof(string),"Aztecas");

    }
    else if(fcars[i][fc_fracID] == 11)
    {
    format(string,sizeof(string),"S.F Rifa");

    }
    else if(fcars[i][fc_fracID] == 12)
    {
    format(string,sizeof(string),"Lacosa Nostra");

    }
    else if(fcars[i][fc_fracID] == 13)
    {
    format(string,sizeof(string),"Yakuza");

    }
    else if(fcars[i][fc_fracID] == 14)
    {
    format(string,sizeof(string),"Russen Mafia");

    }
    else if(fcars[i][fc_fracID] == 15)
    {
    format(string,sizeof(string),"Hitman");

    }
    else if(fcars[i][fc_fracID] == 16)
    {
    format(string,sizeof(string),"Wheelman");

    }
    }
    }
    for(new c=0; c<sizeof(Jobc); c++)
    {
    if(GetPlayerVehicleID(playerid) == Jobc[code=c][v_ID])
    {
    if(Jobc[code=c][Jobid] == 2)
    {
    format(string,sizeof(string),"Müllmann");
    convert_encoding(string);

    }
    else if(Jobc[code=c][Jobid] == 1)
    {
    format(string,sizeof(string),"Straßenreiniger");
    convert_encoding(string);

    }
    else if(Jobc[code=c][Jobid] == 3)
    {
    format(string,sizeof(string),"Pizzeria");

    }
    else if(Jobc[code=c][Jobid] == 4)
    {
    format(string,sizeof(string),"Postamt");

    }
    else if(Jobc[code=c][Jobid] == 5)
    {
    format(string,sizeof(string),"Bergarbeiter");

    }
    else if(Jobc[code=c][Jobid] == 6)
    {
    format(string,sizeof(string),"Holzfäller");
    convert_encoding(string);

    }
    }
    }
    for(new i = 0; i<sizeof(supmobil); i++)
    {
    if(GetPlayerVehicleID(playerid) == supmobil[i])
    {
    format(string,sizeof(string),"Supmobil");

    }
    }
    for(new i = 0; i<sizeof(newbie); i++)
    {
    if(GetPlayerVehicleID(playerid) == newbie[i])
    {
    format(string,sizeof(string),"Neuling");

    }
    }
    return string;
    }

  • for(new sv = 0; sv < sizeof(cInfo); sv++)
    {
    new name[30];
    format(name,sizeof(name),"SELECT name FROM users WHERE id = '%d'",string);
    }
    Das hier macht auch keinen Sinn, da wird kein Query gesendet und kein Result ausgelesen, nichts. Zudem ist der String nicht die db_id, was ich nun zum dritten mal sage.



    Warum es gleich wieder weg geht kann ich dir so nicht sagen. Entweder du setzt den String wieder leer nachdem du das gemacht hast, oder du hidest das TextDraw.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Am sinnvollsten wäre es, den Name direkt beim Start des Servers in eine Variable zu speichern, sonst geht das zu sehr auf die Ressourcen.
    Wie du das machst kommt auf dein MySQL Plugin drauf an.


    Eigentlich müsste man um auch dort die Geschwindigkeit zu verbessern dann mit einem JOIN arbeiten.

  • Beitrag von reaL. ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • bekomme eine Leere Nachricht


    enum carEnum{
    id_x,
    model,
    besitzer,
    Float:c_x,
    Float:c_y,
    Float:c_z,
    Float:c_r,
    db_id,
    pctank,
    ckz,
    bname[30]
    }


    createPlayerCar(playerid,modelid,Float:x,Float:y,Float:z,Float:r)
    {
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(cInfo[i][id_x]!=0)continue;
    new string[30];
    format(string,sizeof(string),"%s",getPlayerName(playerid));
    format(cInfo[i][bname],30,string);
    cInfo[i][besitzer]=sInfo[playerid][db_id];
    cInfo[i][c_x]=x;
    cInfo[i][c_y]=y;
    cInfo[i][c_z]=z;
    cInfo[i][c_r]=r;
    cInfo[i][model]=modelid;
    cInfo[i][id_x] = CreateVehicle(modelid,x,y,z,r,-1,-1,-1);
    tank[cInfo[i][id_x]] = 100;
    SetVehicleParamsEx(cInfo[i][id_x],0,0,0,1,0,0,0);
    saveCarToDB(playerid,i);
    new str[10],plate;
    plate = GetFreeNumberPlate();
    format(str, sizeof(str), "PRP-SA-%d", plate);
    cInfo[i][ckz] = SetVehicleNumberPlate(cInfo[i][id_x],str);
    new query[256];
    format(query,sizeof(query),"UPDATE autos SET Kennzeichen='%s' WHERE id='%i'",cInfo[i][ckz],cInfo[i][db_id]);
    mysql_function_query(dbhandle,query,false,"","");
    return 1;
    }
    return 1;
    }


    public OnPlayerCarsLoad(playerid)
    {
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(!num_rows)return 1;
    for(new i=0; i<num_rows; i++)
    {
    new id=getFreeCarID();
    new string[30];
    format(string,sizeof(string),"%s",getPlayerName(playerid));
    format(cInfo[i][bname],30,string);
    cInfo[id][model]=cache_get_field_content_int(i,"model",dbhandle);
    cInfo[id][besitzer]=cache_get_field_content_int(i,"besitzer",dbhandle);
    cInfo[id][c_x]=cache_get_field_content_float(i,"x",dbhandle);
    cInfo[id][c_y]=cache_get_field_content_float(i,"y",dbhandle);
    cInfo[id][c_z]=cache_get_field_content_float(i,"z",dbhandle);
    cInfo[id][c_r]=cache_get_field_content_float(i,"r",dbhandle);
    cInfo[id][pctank]=cache_get_field_content_int(i,"tank",dbhandle);
    cache_get_field_content(i,"Kennzeichen",cInfo[id][ckz],dbhandle,20);
    cInfo[id][db_id]=cache_get_field_content_int(i,"id",dbhandle);
    cInfo[id][id_x]=CreateVehicle(cInfo[id][model],cInfo[id][c_x],cInfo[id][c_y],cInfo[id][c_z],cInfo[id][c_r],-1,-1,-1);
    SetVehicleNumberPlate(cInfo[id][id_x],cInfo[id][ckz]);
    tank[cInfo[id][id_x]] = (cInfo[id][pctank]);
    }
    return 1;
    }




    stock GetAutoBesitzer(playerid,vehicleid)
    {
    new string[50];
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(cInfo[i][id_x] == vehicleid)
    {
    format(string,sizeof(string),"%s",cInfo[i][bname]);
    SendClientMessage(playerid,ROT,string);
    }
    }

  • format(string,sizeof(string),"%s",getPlayerName(playerid));
    printf("Setze Besitzername zu: '%s'", string);


    Kannst es ja mal so versuchen, und schauen was im Log steht. Wenn der Name drin steht, dann sollte auch die Nachricht klappen.
    Wenn kein Name drin steht, dann ist der Spieler entweder nicht online, oder getPlayerName gibt nichts zurück.