Hi,
wie kann ich so ein Textdraw erstellen? Kann mir jemand das erklären und ein Beispiel machen?
Also man soll sehen wie viel Kills man insgesamt hat und wie viel Deaths man insgesamt hat. Und wenn man einen killt so die Kill Anzeige 1 höher gehen wenn man gekillt wird soll die Dathanzeige 1 höher gehen!
Kann mir jemand sowas erstellen?
So kann es ungefähr aussehen
MfG ~Luka~
deaths,kills Textdraw
- Markus
- Geschlossen
- Erledigt
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
-
-
//ganz nach oben:
new kills[MAX_PLAYERS], tode[MAX_PLAYERS], Text:ja[MAX_PLAYERS];
//OnPlayerDewath:
tode[playerid]++;
new s[30];
format(s,sizeof(s),"Tode: %d~n~Kills: %d",tode[playerid],kills[playerid]);
TextDrawHideForPlayer(playerid,ja[playerid]);
ja[playerid]=TextDrawCreate(x,y,s);
TextDrawShowForPlayer(playerid,ja[playerid]);
if(killerid!=INVALID_PLAYER_ID) {
kills[killerid]++;
format(s,sizeof(s),"Tode: %d~n~Kills: %d",tode[killerid],kills[killerid]);
TextDrawHideForPlayer(killerid,ja[killerid]);
ja[killerid]=TextDrawCreate(x,y,s);
TextDrawShowForPlayer(killerid,ja[killerid]); } -
Hi,
ich habe es jetzt so gemacht:
//ganz nach oben:
new kills[MAX_PLAYERS], tode[MAX_PLAYERS], Text:ja[MAX_PLAYERS];
//OnPlayerDewath:
tode[playerid]++;
new s[30];
format(s,sizeof(s),"Tode: %d~n~Kills: %d",tode[playerid],kills[playerid]);
TextDrawHideForPlayer(playerid,ja[playerid]);
ja[playerid]=TextDrawCreate(x,y,s); // HIER KOMMEN DOCH DIE TEXTDRAW COORDS REIN oder, also da wo das Textdraw sein soll
TextDrawShowForPlayer(playerid,ja[playerid]);
if(killerid!=INVALID_PLAYER_ID) {
kills[killerid]++;
format(s,sizeof(s),"Tode: %d~n~Kills: %d",tode[killerid],kills[killerid]);
TextDrawHideForPlayer(killerid,ja[killerid]);
ja[killerid]=TextDrawCreate(x,y,s); // HIER KOMMEN DOCH DIE TEXTDRAW COORDS REIN oder, also da wo das Textdraw sein soll
TextDrawShowForPlayer(killerid,ja[killerid]); }So aber wenn ich jetzt sterbe gibt es einen server-crash
MfG
-
Hast du bei x und y auch was eingetragen?
Ja, da kommen die Cords hin -
Hi,
also ich habe es jetzt so der Server crahst auch net mehr.
Aber das Textdraw wird niciht angezeigt!
Ich will das es die ganze Zeit angzeigt wird wie geht das?
So sieht es gerade aus:Das steht oben:
new kills[MAX_PLAYERS], tode[MAX_PLAYERS], Text:ja[MAX_PLAYERS];und das bei onplayerdeath:
tode[playerid]++;
new s[30];
format(s,sizeof(s),"Tode: %d~n~Kills: %d",tode[playerid],kills[playerid]);
TextDrawHideForPlayer(playerid,ja[playerid]);
ja[playerid]=TextDrawCreate(307.00,455.00,s);
TextDrawShowForPlayer(playerid,ja[playerid]);
if(killerid!=INVALID_PLAYER_ID) {
kills[killerid]++;
format(s,sizeof(s),"Tode: %d~n~Kills: %d",tode[killerid],kills[killerid]);
TextDrawHideForPlayer(killerid,ja[killerid]);
ja[killerid]=TextDrawCreate(364.00,455.00,s);
TextDrawShowForPlayer(killerid,ja[killerid]); }was muss man jetzt machen damit es ständig angezeigt wird?
MfG
-
Hi,
geht es auch vllt so:Das nach oben:
new kills[MAX_PLAYERS], tode[MAX_PLAYERS], Text:ja[MAX_PLAYERS];
forward todeupdate();
forward killupdate();
dann die timer:
SetTimer("todeupdate",5000,1);
SetTimer("killupdate",5000,1);
Dann die neuen publics
public todeupdate();
{
tode[playerid]++;
new s[30];
format(s,sizeof(s),"Tode: %d~n~Kills: %d",tode[playerid],kills[playerid]);
TextDrawHideForPlayer(playerid,ja[playerid]);
ja[playerid]=TextDrawCreate(307.00,455.00,s);
TextDrawShowForPlayer(playerid,ja[playerid]);
if(killerid!=INVALID_PLAYER_ID)
return 1;
}
das killupdate:
public killupdate();
{
kills[killerid]++;
format(s,sizeof(s),"Tode: %d~n~Kills: %d",tode[killerid],kills[killerid]);
TextDrawHideForPlayer(killerid,ja[killerid]);
ja[killerid]=TextDrawCreate(364.00,455.00,s);
TextDrawShowForPlayer(killerid,ja[killerid]);
return 1;
}Könnte es so vllt gehen? Ich weiß es leider nicht genau!
Also ich will das die Anzeige die ganze Zeit angezeigt wird und die Kills und Deaths von sich da stehen!
Hoffe was ich da gemacht habe geht in die richtige richtung. Bitte verbesset es mir wenn es net so richtig ist^^MfG ~Luka~
-
Was soll das bewirken?
public todeupdate();
{
tode[playerid]++;
new s[30];
format(s,sizeof(s),"Tode: %d~n~Kills: %d",tode[playerid],kills[playerid]);
TextDrawHideForPlayer(playerid,ja[playerid]);
ja[playerid]=TextDrawCreate(307.00,455.00,s);
TextDrawShowForPlayer(playerid,ja[playerid]);
if(killerid!=INVALID_PLAYER_ID)
return 1;
}
Dadurch würde,wenn der Timer eintrifft tode[playerid] plus 1 gemacht werden,was gar keinen Sinn gäbe .
Mach das mit dem Textdraw bei "OnGameModInt"
Dann bei "OnPlayerDeath" wie Keks schon gesagt hat die Variablen +1 jeweils und statt ein neues zu erstelllen verwende "TextDrawSetString" .
Klappt bei mir wunderbar -
Hi,
ich kriegs net hin habe alles versucht kann jemand mir ein beispiel ,amchen wie es geht?MfG ~Luka~
-
Ihr solltet den Textdraw nicht immer unter todeupdate(); neu erstellen,sondern einmalig beim Connecten / OnGameModeIniti und bei todeupdate(); updaten mit TextDrawSetString(...)
//Edit: Mh,hat Kayer ja schon gesagt
-
Hi,
leider verstehe ich nicht so ganz was ihr da sagt,
leider mache ich so ein TExtdraw zum ersten mal deswegen verstehe ich es nicht also kann mir jemand ein Beispiel machen und evt vllt was dazu erklären damit ich es endlich alleine kann!
Ich wäre euch sehr dankbar!MfG ~Luka~
-
-
Hi,
ich habe es jetzt selber versucht wen ndas auch falsch ist verstehe ich nichts also dann helft ihr mir bitte und berichtigt es mir das wäre sehr nett!
mmh also is tdas wie folgt richtig?:das oben:
new dkills[MAX_PLAYERS], ddeaths[MAX_PLAYERS];
new Text:kills;
new Text:deaths;forward updatekills();
forward updatedeaths();Bei OnGameModeInit:
// DIE TIMER-------------------------------------------------
SetTimer("updatekills",1000,1);
SetTimer("updatedeaths",1000,1);// KILLS--------------------------------------------------------
kills = TextDrawCreate(x , y,"Kills: ");
TextDrawAlignment(kills,0);
TextDrawBackgroundColor(kills,0x000000ff);
TextDrawFont(kills,3);
TextDrawLetterSize(kills,0.599999,3.599998);
TextDrawColor(kills,0xffffffff);
// DEATHS---------------------------------------------------------
deaths = TextDrawCreate(x, y,"Deaths: ");
TextDrawAlignment(deaths,0);
TextDrawBackgroundColor(deaths,0x000000ff);
TextDrawFont(deaths,3);
TextDrawLetterSize(deaths,0.599999,3.599998);
TextDrawColor(deaths,0xffffffff);;dann die updates:
// KILLS PUBLIC
public updatekills();
{
kills[killerid]++;
format(s,sizeof(s),"Kills: %d",dkills[killerid]);
return 1;
}
// DEATHS UPDATE
public deathsupdate();
{
kills[killerid]++;
format(s,sizeof(s),"Deaths: %d",ddeaths[playerid]);
return 1;
}Würde es so funzen? Oder habe ich wieder einen fehler ich verstehe das net so richtig? Naja wenn es falsch ist bitte macht mir ein beispiel bitte damit ich es endlich verstehe!
MfG ~Luka~
-
edit:
Bei OnplayerConnect muss noch das hin oder?
TextDrawShowForPlayer(playerid,Kills);
TextDrawShowForPlayer(playerid,Deaths);und bei OnPlayerDisconnect muss doch noc hdas hin oder?
TextDrawHideForPlayer(playerid,Kills);
TextDrawHideForPlayer(playerid,Deaths);Hoffe mir kann eienr das richtige Beispiel amchen ich kriege es gerade nicht auf die Reihe!
MfG ~Luka~
-
Die beiden Funktionen kommen dahin,wo bzw. wann sie auch angezeigt werden sollen...
if(strcmp(cmdtext,"/textdraw",true)==0)
{
TextDrawShowForPlayer(playerid,Text:Kills);
TextDrawShowForPlayer(playerid,Text:Deaths);
return 1;
}
...als Beispiel.Daher können sie bei OnPlayerConnect (bzw. -Disconnect) , in einem Command, bei OnPlayerEnterVehicle etc. stehen.
Was genau dein Problem ist,kann ich nicht herauslesen.
Wenn du nicht weiß wie Variablen funktionieren, guck im Bereich "Tutorial" auf eine der letzen Seiten. Dort wirst du einen von Yoda verfassten Thread finden, der deine Fragen lösen sollte.
Die weiteren TextDrawFunktionen findest du auf >>> http://www.sa-mp.com <<< .
Ich hab dir bereits erklärt,dass dies keinen Sinn gibt. Wenn du selbst durch meine Erklärung nicht verstehst wieso,gucke dir das Tutorial an (oben genannt!).
public deathsupdate();
{
kills[killerid]++; // Das würde, wenn der Timer abgelaufen ist, Kills + 1 machen. Sinn ?
format(s,sizeof(s),"Deaths: %d",ddeaths[playerid]); // Das bereitet und definiert nur seinen String,jedoch wird damit nichts getan.Sinn?
return 1;
}
Das Prinzip wäre,dass du bein OnPlayerDeath kills[killerid] und deaths[playerid] + 1 machst, und dann es neu Anzeigen lasst durch - wie ich schon mal gesagt habe - TextDrawSetString .---------------------------------------------------------------------------------------------------------
Threadpushing,(Spamm) und Doppelpost's ( Man beachte die Erstllungsdaten: Heute, 15:45 - Gestern, 21:26 - 12:35 ).Edit hätte vollkommen ausgereicht,denke ich.
Zitat von Breadfish:" Offensichtlich ist den Usern die das benutzen ja bewusst dass gegen Forenregeln verstoßen wird, trotzdem wird es getan.
Zukünftig gibts dafür Warnungen." -
Also ich hab mit jetzt die Arbeit gemacht und das alles hier in einer funktionierenden Version hochgeladen: breadfish.de/wcf/attachment/596/
Füg es in deinen GM ein -
Hi Marcell,
ich bin dir serh dankbar aber es gibt ein Problem wenn ich gekillt werde kommt bei mir + 1 death ist ja richtig weil ich gekillt wurde aber der der mich gekillt hat bekommt auch 1 death warum?
kanns tdu das noch ändern bitteMfG
-
Das kann eig nicht sein...
public OnPlayerDeath(playerid, killerid, reason)
{
dkills[killerid]++;
ddeaths[playerid]++;
return 1;
}
Die KillerID bekommt einen Kill dazu und die PlayerID(der gekillte) bekommt einen Tod dazu...Ich seh den Fehler nicht.
Bist du sicher, dass zu alles andere rausgemacht hast? -
puh,
adde mich mal in icq dann kannst du ja mal schauenmeine: 369-263-543
mmh ich bin mir sicher das ich keinen fehler gemacht habe!
mfg ~luka~
-
breadfish.de
Hat das Thema geschlossen.