Beitrag von Shayden ()
Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Gelöst ().
Also als erstes solltest du noch prüfen ob pID überhaupt connected ist...wenn das nichts hilft, nutze mal crashdetect und schau, was die Fehlermeldung so sagt
SendClientMessage(pID,COLOR_GREY,"Der Spieler %s möchte dir eine Reparatur anbieten.");
Zu
new str[145];
GetPlayerName(playerid, name, MAX_PLAYER_NAME);
format(str, sizeof(str), "Der Spieler %s möchte dir eine Reparatur anbieten.", str);
SendClientMessage(pID,COLOR_GREY,str);
Gleiches Prinzip für diese Nachricht:
SendClientMessage(playerid,COLOR_GREY,"Du hast %s eine Reparatur anfrage gesendet!");
Also ich habe anscheinend GetPlayerName vergessen..
Allerdings crasht es jetzt wenn ich /accept eingebe
Code:
ocmd:accept(playerid, params[])
{
new item[64];
if(sscanf(params,"s[64]",item))return SendClientMessage(playerid, COLOR_RED, "INFO: /accept [reparatur]");
if(!strcmp(item, "reparatur", false))
{
if(GetPVarInt(playerid, "repid") == 0)return SendClientMessage(playerid, COLOR_GREY, "Dir wurde keine Reparatur anfrage gesendet!");
sSpieler[playerid][pRepaf] = 0;
SetPVarInt(playerid, "repid", 0);
if(IsPlayerInAnyVehicle(playerid))
{
new vID;
RepairVehicle(vID);
}
return 1;
}
return 1;
}
ocmd:repairv(playerid, params[])
{
new pID;
if(sscanf(params,"u",pID))
{
return SendClientMessage(playerid,COLOR_GREY,"Verwendung : {EB0000} /repairv [ID]");
}
if(IsPlayerConnected(pID))
{
if(IsPlayerInRangeOfPoint(playerid,8.0,204.2520,-229.7880,1.7790))
{
if(IsPlayerInRangeOfPoint(pID,8.0,204.2520,-229.7880,1.7790))
{
if(IsPlayerInAnyVehicle(pID))
{
if(sSpieler[pID][pGeld] >= 5000)
{
if(sSpieler[playerid][pFraktion] == 5)
{
new str[145];
new name[64];
GetPlayerName(playerid, name, MAX_PLAYER_NAME);
format(str, sizeof(str), "Der Spieler %s möchte dir eine Reparatur anbieten.", name);
SendClientMessage(pID,COLOR_GREY,str);
SendClientMessage(pID,COLOR_GREY,"Tippe einfach /accept reparatur ein um diese zu akzeptieren!");
sSpieler[playerid][pRepaf] = 1;
SendClientMessage(playerid,COLOR_GREY,"Du hast %s eine Reparatur anfrage gesendet!");
SetPVarInt(pID, "repid", 1);
printf("Spieler ID %i ist Connectet!", pID);
}
else
{
SendClientMessage(playerid,COLOR_GREY,"Du bist kein {EB0000}Mechanikerr.");
return 1;
}
}
else
{
SendClientMessage(playerid,COLOR_GREY,"Der Spieler hat keine {EB0000}5000$");
return 1;
}
}
else
{
SendClientMessage(playerid,COLOR_GREY,"Der Spieler ist in keinem {EB0000}Fahrzeug!");
return 1;
}
}
else
{
SendClientMessage(playerid,COLOR_GREY,"Dieser Spieler ist nicht am {EB0000}Repairpoint");
return 1;
}
}
}
else
{
SendClientMessage(playerid,COLOR_GREY,"Du bist nicht am {EB0000}Repairpoint");
return 1;
}
return 1;
}
Also ich habe anscheinend GetPlayerName vergessen..
Unter anderem. Vor allem aber hat das format gefehlt, daher der Absturz, da Platzhalter (%s, %d, ...) nicht in SendClientMessage möglich sind.
Hier fehlt nach wie vor das format:
SendClientMessage(playerid,COLOR_GREY,"Du hast %s eine Reparatur anfrage gesendet!");
Passe das an zu:
GetPlayerName(pID, name, MAX_PLAYER_NAME);
format(str, sizeof(str), "Du hast %s eine Reparatur anfrage gesendet!", name);
SendClientMessage(playerid,COLOR_GREY,str);