ocmd:contractlist(playerid,params[])
{
if(SpielerInfo[playerid][Fraktion] == 4)
{
for(new i=0; i<GetMaxPlayers(); i++)
{
if(SpielerInfo[i][Fraktion] == 4)
{
new string[600];
new targetid;
if(IsPlayerConnected(i))
{
if(SpielerInfo[i][Fraktion] == 4)
{
format(string,sizeof(string),"%s %i$\n%s %i$\n%s %i$\n%s %i$\n%s %i$\n%s %i$\n%s %i$\n%s %i$\n%s %i$\n",SpielerName(targetid),SpielerInfo[targetid][Kopfgeld]);
ShowPlayerDialog(playerid,DIALOG_Contract,DIALOG_STYLE_MSGBOX,"Contractliste",string,"0K","");
}
}
}
}
}
return 1;
}
Sobald ich hier im Spiel /Contractlist eingebe, wird nur mein Name angezeigt also Bomber - %s %i$ Obwohl ich nicht contracted bin, in der Datenbank jedoch, werden die Leute angezeigt, die Contracted auf 1 haben und Kopfgeld steht auch dahinter, jemand ne Idee? :s
Frage zum Contractlist Dialog
- BOMBER
- Geschlossen
- Erledigt
-
-
Lass mich raten du hast id 0 daher ist es auch klar die weisst der variabel targetid nix zu also bleibt die lieber variabel auch null
daher könnte ich mir dies auch so denken das nur dein name angeziegt wird und mal ehrlich was willst du mit deinem command erreichen
du frägst hier zweimal if(SpielerInfo[i][Fraktion] == 4) ohne grund auch wenn das nur für dne spieler angeziegt wird auch die gesammt for schleife ist wie du sie gerade benutzt zweck los -
Mal zum Grundsinn dieser Funktion..
Ich verstehe nicht, warum du zweimal direkt hintereinander dasselbe abfragst..
if(SpielerInfo[i][Fraktion] == 4)//Zeile 7
und
if(SpielerInfo[i][Fraktion] == 4)//Zeile 13Auch der tiefere Sinn dieser Formattierungs-Zeile entzieht sich meines Verständnisses:
format(string,sizeof(string),"%s %i$\n%s %i$\n%s %i$\n%s %i$\n%s %i$\n%s %i$\n%s %i$\n%s %i$\n%s %i$\n",SpielerName(i),SpielerInfo[i][Kopfgeld]);
Womit sollen denn diese ganzen Parameter befüllt werden, wenn du nur den Spielernamen und sein Kopfgeld einsetzt ?Ich hätte mir jetzt aus meiner gezaubert, dass du eine Liste mit allen Spielern haben möchtest, die ein Kopfgeld haben, oder ?
Dann machen wir das wie folgt:
ocmd:contractlist(playerid,params[])
{
if(SpielerInfo[playerid][Fraktion] == 4)
{
new string[600];
for(new i=0; i<GetMaxPlayers(); i++)
{
if(!IsPlayerConnected(i)) continue;
if(SpielerInfo[i][Kopfgeld]>0){format(string,sizeof(string),"%s\n%s %i$",string,SpielerName(i),SpielerInfo[i][Kopfgeld]);}//Wir nehmen den bisherigen String und fügen die nächste Zeile an..
}
ShowPlayerDialog(playerid,DIALOG_Contract,DIALOG_STYLE_MSGBOX,"Contractliste",string,"0K","");//Wir senden den Dialog EINMAL!!!!
//Vielleicht ist es als Liste übersichtlicher =)
}
return 1;
} -
Also der Dialog soll nur gefüllt werden, wenn jemand Online kommt, der auf der Contractliste von der Hitman Fraktion steht. - Aber wenn ich connecte stehe ich automatisch drauf mit 0$
-
ich hab ja bereits den quellcode für einen Abfrage command dazu geschrieben..
Das mit dem Erstellen der Liste beim Connect ist schwachsinn, da sich die Liste bis dato dauerhaft ändern kann.. -
Danke, ich werds später mal ausprobieren. //Closed
-
breadfish.de
Hat das Thema geschlossen.