Ok, es geht nun, aber jetzt kommt immer nur der rang 0 ich brauche nur den befehle ein zugeben und es kommt schon die nachricht aber mit rang 0 wenn ich mit parameter mache kommt auch nur mich rang 0
ocmd:rangaendern(playerid,params[])
{
new pID,F_Rang,gemacht[200],gekriegt[200],name3[MAX_PLAYER_NAME],rtext[90];
GetPlayerName(pID,name3,sizeof(name3));
if(sInfo[playerid][Rang]==6)//return SendClientMessage(playerid,COLOR_RED,"Dein Rang ist zu niedrig");
if(sscanf(params,"ui",pID,F_Rang))//return SendClientMessage(playerid,COLOR_RED,"INFO: /rangaendern [PlayerID] [Rang 0-5]");
if(sInfo[playerid][Fraktion]==1)
{
if(sInfo[playerid][Rang] == 1) { rtext = "Auszubilder"; }
else if(sInfo[playerid][Rang] == 2) { rtext = "Officer"; }
else if(sInfo[playerid][Rang] == 3) { rtext = "Bike - Officer"; }
else if(sInfo[playerid][Rang] == 4) { rtext = "Komissar"; }
else if(sInfo[playerid][Rang] == 5) { rtext = "Stelv. Oberkomissar"; }
else if(sInfo[playerid][Rang] == 6) { rtext = "Oberkomissar"; }
sInfo[playerid][Rang]=F_Rang;
}
format(gemacht,sizeof(gemacht),"Dein Leader: %s hat dein Rang zu %i geändert.",PlayerName(playerid),F_Rang);
SendClientMessage(pID,Blau,gemacht);
format(gekriegt,sizeof(gekriegt),"Du hast %s den Rang zu %i geändert.",name3,F_Rang);
SendClientMessage(playerid,Blau,gekriegt);
savePlayer(pID);
//printf("%d",sInfo[playerid][Rang]);
return 1;
}
Fraktion Rang ändern Problem!
- Maurice.
- Geschlossen
- Erledigt
-
-
ocmd:rangaendern(playerid,params[])
{
new pID,F_Rang,gemacht[200],gekriegt[200],rtext[90];
if(sInfo[playerid][Rang]!=6) return SendClientMessage(playerid,COLOR_RED,"Dein Rang ist zu niedrig");
if(sscanf(params,"ui",pID,F_Rang)) return SendClientMessage(playerid,COLOR_RED,"INFO: /rangaendern [PlayerID] [Rang 0-6]");
if(sInfo[playerid][Fraktion]==1)
{
sInfo[playerid][Rang]=F_Rang;
if(sInfo[playerid][Rang] == 1) { rtext = "Auszubildenderr"; }
else if(sInfo[playerid][Rang] == 2) { rtext = "Officer"; }
else if(sInfo[playerid][Rang] == 3) { rtext = "Bike-Officer"; }
else if(sInfo[playerid][Rang] == 4) { rtext = "Kommissar"; }
else if(sInfo[playerid][Rang] == 5) { rtext = "Stellv. Oberkommissar"; }
else if(sInfo[playerid][Rang] == 6) { rtext = "Oberkommissar"; }
}
format(gemacht,sizeof(gemacht),"Dein Leader: %s hat deinen Rang zu %i geändert.",PlayerName(playerid),F_Rang);
SendClientMessage(pID,Blau,gemacht);
format(gekriegt,sizeof(gekriegt),"Du hast %s den Rang zu %i geändert.",PlayerName(pID),F_Rang);
SendClientMessage(playerid,Blau,gekriegt);
savePlayer(pID);
printf("%d",sInfo[playerid][Rang]);
return 1;
}Probiers so.
-
Ich habe dir deine Version mal etwas korrigiert, allerdings würde ich hier das Design mal überarbeiten damit es später nicht zu Redundanzen kommt. (Das heißt dass du dir Funktionen für Rangnamen schreiben solltest u.ä., später möchtest du die nämlich sicherlich mal abfragen)
Auch würde ich dir empfehlen mal von dem return wegzukommen wenn du nicht weißt wie man es benutzt. Grundlagen eventuell nochmal anschauen.
if(sInfo[playerid][Rang] == 6) return SendClient.... // Wenn der Spieler den Rang 6 hat soll die Funktion mit einer SendClientMessage beendet werden, demzufolge würden alle Spieler die Rang 6 haben diese Meldung bekommen. Das ist sicherlich nicht das, was du möchtest.
Korrigierte Version:
ocmd:rangaendern(playerid,params[])
{
new pID,F_Rang,gemacht[200],gekriegt[200],rtext[90];
if(sInfo[playerid][Rang] != 6) return SendClientMessage(playerid,COLOR_RED,"Dein Rang ist zu niedrig");
if(sscanf(params,"ud",pID,F_Rang)) return SendClientMessage(playerid,COLOR_RED,"INFO: /rangaendern [PlayerID] [Rang 0-5]");
sInfo[playerid][Rang]=F_Rang;
switch(sInfo[playerid][Fraktion])
{
case 1:
{
switch(F_Rang)
{
case 1: { rtext = "Auszubilder"; }
case 2: { rtext = "Officer"; }
case 3: { rtext = "Bike - Officer"; }
case 4: { rtext = "Komissar"; }
case 5: { rtext = "Stelv. Oberkomissar"; }
case 6: { rtext = "Oberkomissar"; }
}
}
}
format(gemacht,sizeof(gemacht),"Dein Leader: %s hat dein Rang zu %i geändert.",PlayerName(playerid),F_Rang);
SendClientMessage(pID,Blau,gemacht);
format(gekriegt,sizeof(gekriegt),"Du hast %s den Rang zu %i geändert.", PlayerName(pID), F_Rang);
SendClientMessage(playerid,Blau,gekriegt);
savePlayer(pID);
//printf("%d",sInfo[playerid][Rang]);
return 1;
}stock PlayerName(playerid)
{
new Name[MAX_PLAYER_NAME];
GetPlayerName(playerid, Name, sizeof(Name));
return Name;
}Flüchtigkeitsfehler könnten dabei sein, hab das jetzt in VS getippt aber das kannst du sicherlich beheben.
-
danke, klappt nun
-
breadfish.de
Hat das Thema geschlossen.