Irgendwie bringst du da den Index für VehicleInfo ständig durcheinander.
Mal nutzt du FrakFahrzeugInfo[vehicleid][frakfahrzeug_VehicleID] und mal nur die vehicleid...
Was willst du denn jetzt nutzen?
Kein wunder dass da nichts funktioniert 
Und der String ist auch am Anfang leer, du kannst kein leeres 3DTextLabel erstellen :c
ocmd:fk1(playerid,params[])
{
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)return SendErrorMessage(playerid,"Du bist nicht der Fahrer eines Fahrzeuges");
new v = GetPlayerVehicleID(playerid),frakVeh = FrakFahrzeugInfo[v][frakfahrzeug_VehicleID];
if(IsNull(params))
{
//Hier hat er nur /fk eingegeben...
if(VehicleInfo[frakVeh][KennungObj] != Text3D:0) Delete3DTextLabel(VehicleInfo[frakVeh][KennungObj]); //Falls es bereits existiert, check ob du es auf 0 oder INVALID gesetzt hast...das solltest du anpassen
else SendInfoMessage(playerid,"/fk [Kennung]"); //Wenn es nicht existiert, gibts auch nichts zu zerstören und die Nachricht kommt
return 1;
}
new string[200],Float:pos[3];
format(VehicleInfo[v][KennungZahl],50, params);
VehicleInfo[frakVeh][KennungObj] = Create3DTextLabel(params, WEISS, 0, 0, 0, 10,-1,0);
GetVehicleModelInfo(GetVehicleModel(frakVeh), VEHICLE_MODEL_INFO_SIZE, pos[0], pos[1], pos[2]);
Attach3DTextLabelToVehicle(VehicleInfo[frakVeh][KennungObj],frakveh, -pos[0]/2.23, -pos[1]/2.23, 0.1);
format(string,sizeof(string),"%s-%s",VehicleInfo[v][Kennung],VehicleInfo[v][KennungZahl]);
Update3DTextLabelText(VehicleInfo[frakVeh][KennungObj], WEISS, string);
return 1;
}
Alles anzeigen
Soo könntest du es z.B. machen..
Aber ich weiß nicht genau, was genau du machen willst bzw welche Indizes richtig sind, da ich deinen Code nicht kenne 