Hey,
Ich hab eine Frage. Ich will wenn ich sterbe, dass beim Textdraw dann der Tod auf 1 gestellt wird, was leider bei mir nicht funktioniert:
ocmd:deagle(playerid,params[])
{
if(onDeagle[playerid] == 0)
{
onDeagle[playerid] = 1;
new string[128];
format(string,sizeof(string),"Du betretest die Arena: Deagle.");
SendClientMessage(playerid,0x00D400FF,string);
SetPlayerPos(playerid,2169.461181,1618.798339,999.976562);
SetPlayerInterior(playerid,1);
ResetPlayerWeapons(playerid);
GivePlayerWeapon(playerid,24,500);
NODM[playerid] = 0;
PlayerTextDrawShow(playerid,deagle0[playerid]);
PlayerTextDrawShow(playerid,deagle1[playerid]);
PlayerTextDrawShow(playerid,deagle2[playerid]);
PlayerTextDrawShow(playerid,deagle3[playerid]);
PlayerTextDrawShow(playerid,deagle4[playerid]);
new string2[128];
format(string2,sizeof(string2),"Kills: %i",DKill[playerid]);
PlayerTextDrawSetString(playerid, deagle2[playerid], string2);
new string3[128];
format(string3,sizeof(string3),"Tode: %i",DDeath[playerid]);
PlayerTextDrawSetString(playerid, deagle3[playerid], string3);
return 1;
}
else
{
SCM(p,ROT,"[ANTI-ARENA]: Du bist schon in einer Arena. Benutze /l.");
return 1;
}
}
if(onDeagle[playerid] == 1)
{
DKill[killerid] ++;
DDeath[playerid] ++;
return 1;
}
Death wird nicht hoch gezählt
- Scriptborn
- Geschlossen
- Erledigt
-
-
Zeig uns bitte dein ganzes onplayerDeath
-
Zeig uns bitte dein ganzes onplayerDeath
public OnPlayerDeath(playerid, killerid, reason)
{
if(onDeagle[playerid] == 1)
{
DKill[killerid] ++;
DDeath[playerid] ++;
return 1;
}
return 1;
}Hier
-
Ich sehe hier keinen Fehler.
Wobei ich nicht verstehe warum du die Tode etc. nur hochzählst wenn er in Deagle ist?
public OnPlayerDeath(playerid, killerid, reason)
{
if(onDeagle[playerid] == 1)
{DKill[killerid] ++;
DDeath[playerid] ++;
new string[128];
format(string,sizeof(string),"Kills: %i",DKill[playerid]);
PlayerTextDrawSetString(playerid, deagle2[playerid], string);
format(string,sizeof(string),"Tode: %i",DDeath[playerid]);
PlayerTextDrawSetString(playerid, deagle3[playerid], string);
return 1;
}
} -
Du updatest die Textdraws nicht, deswegen werden die dann auch nicht hochgezählt
-
Weil er die nur vom Deagle her zählt. wenn es dann funktioniert, werde ich es ja beim /dm machen.
Damit er eine übersicht hat wie viele er getötet hat und wie viel er gestorben ist.//EDIT
Wie update ich die Textdraws? -
public OnPlayerDeath(playerid, killerid, reason)
{
if(onDeagle[playerid] == 1)
{
DKill[killerid] ++;
DDeath[playerid] ++;
new string[128];
format(string,sizeof(string),"Kills: %i",DKill[playerid]);
PlayerTextDrawSetString(playerid, deagle2[playerid], string);
format(string,sizeof(string),"Tode: %i",DDeath[playerid]);
PlayerTextDrawSetString(playerid, deagle3[playerid], string);
return 1;
}
} -
Weil er die nur vom Deagle her zählt. wenn es dann funktioniert, werde ich es ja beim /dm machen.
Damit er eine übersicht hat wie viele er getötet hat und wie viel er gestorben ist.//EDIT
Wie update ich die Textdraws?
Du setzt nen Timer oder nen PlayerTimer und updatest den Textdraw..//E
Sollte so klappen:
//Ganz oben
forward DeagleTimer(playerid);ocmd:deagle(playerid,params[])
{
if(onDeagle[playerid] == 0)
{
onDeagle[playerid] = 1;
new string[128];
format(string,sizeof(string),"Du betretest die Arena: Deagle.");
SendClientMessage(playerid,0x00D400FF,string);
SetPlayerPos(playerid,2169.461181,1618.798339,999.976562);
SetPlayerInterior(playerid,1);
ResetPlayerWeapons(playerid);
GivePlayerWeapon(playerid,24,500);
NODM[playerid] = 0;
PlayerTextDrawShow(playerid,deagle0[playerid]);
PlayerTextDrawShow(playerid,deagle1[playerid]);
PlayerTextDrawShow(playerid,deagle2[playerid]);
PlayerTextDrawShow(playerid,deagle3[playerid]);
PlayerTextDrawShow(playerid,deagle4[playerid]);
new string[128];
format(string,sizeof(string),"Kills: %i",DKill[playerid]);
PlayerTextDrawSetString(playerid, deagle2[playerid], string);
format(string,sizeof(string),"Tode: %i",DDeath[playerid]);
PlayerTextDrawSetString(playerid, deagle3[playerid], string);
return SetTimerEx("DeagleTimer",888*SEKUNDEN,true,"i",playerid);
}
else
{
SCM(p,ROT,"[ANTI-ARENA]: Du bist schon in einer Arena. Benutze /l.");
return 1;
}
}public DeagleTimer(playerid)
{
PlayerTextDrawHideForPlayer(playerid,deagle2[playerid]);
PlayerTextDrawHideForPlayer(playerid,deagle3[playerid]);
new string[64]; format(string,sizeof(string),"Kills: %i",DKill[playerid]);
PlayerTextDrawSetString(playerid, deagle2[playerid],string);
format(string,sizeof(string),"Tode: %i",DDeath[playerid]);
return PlayerTextDrawSetString(playerid, deagle3[playerid],string);
} -
Wie stirbst du denn ? Selbstmord oder wirst du erschossen ?
Bei Selbstmord, hast du nämlich einen Fehler drin. Den haben "leider" neben dir auch sehr viele Andere:DKill[killerid] ++;
DDeath[playerid] ++;
Bei Selbstmord o.Ä. , ist killerid INVALID_PLAYER_ID bzw 65535.
Macht:
DKill[65535]++; // Error, index out of bounce. Hier stoppt der Code die weitere Ausführung von OnPlayerDeath
Wenn man killerid als Index verwendet sollte man sicher sein,dass killerid nicht INVALID_PLAYER_ID ist.
Siehe auch Wiki Beispiel. -
NEIN!
nicht in einem timer das ist unnötig!public OnPlayerDeath(playerid, killerid, reason)
{
if(onDeagle[playerid] == 1)
{
DKill[killerid] ++;
DDeath[playerid] ++;
new string[128];
format(string,sizeof(string),"Kills: %i",DKill[killerid]);
PlayerTextDrawSetString(playerid, deagle2[killerid], string);format(string,sizeof(string),"Tode: %i",DDeath[playerid]);
PlayerTextDrawSetString(playerid, deagle3[playerid], string);
return 1;
}
return 1;
}Mach es so so Updatet es sich immer wenn der jenige Stirbt!
-
breadfish.de
Hat das Thema geschlossen.