Jump to content
  • 0

pomoc Timer po druhém vykonání odečítá do nekonečna.


snake3321

Dotaz

Dobrý den, dnes jsem si dělal lehký script na sebevraždu a přidal jsem do toho i timer aby toho hráči nevyužívaly před smrtí. Chyba je ovšem v tom, že poprvé hráč napíše /kill - vše funguje jak má ale co to napíše po druhý tak se před čislo napíše "-" jakoby mínus a začne to odečítat do nekonečna. Nevíte co s tím? Předem díky. Pawno zde:

 

//Includes
#include <a_samp>
#include <zcmd>
//New
new Text:Textdraw0;
new Text:Textdraw1;
new Text:Textdraw2;
new Text:Textdraw3;
new MyTimer[MAX_PLAYERS];
new Count=5;
//Defines
#define COLOR_RED 0xFF0000AA
#define COLOR_YELLOW 0xFFFF00AA
//etc...
forward killtimer(playerid);
//Scripting
public killtimer(playerid)
{
Count--;
if(Count == 0)
{
   SendClientMessage(playerid, COLOR_RED, "Sebevrazda byla uspesna!");
   SetPlayerHealth(playerid, 0);
   KillTimer(MyTimer[playerid]);
   return 1;
}
new string[128];
format(string, sizeof(string), "Zemres za: %d", Count);
SendClientMessage(playerid, COLOR_YELLOW, string);
return 1;
}
 
CMD:kill(playerid, params[])
{
    Textdraw0 = TextDrawCreate(157.500000, 162.655532, "usebox");
TextDrawLetterSize(Textdraw0, 0.000000, 5.036418);
TextDrawTextSize(Textdraw0, 15.000000, 0.000000);
TextDrawAlignment(Textdraw0, 1);
TextDrawColor(Textdraw0, 0);
TextDrawUseBox(Textdraw0, true);
TextDrawBoxColor(Textdraw0, 102);
TextDrawSetShadow(Textdraw0, 0);
TextDrawSetOutline(Textdraw0, 0);
TextDrawFont(Textdraw0, 0);
 
Textdraw1 = TextDrawCreate(19.500000, 162.399978, "Sebevrazda bude");
TextDrawLetterSize(Textdraw1, 0.449999, 1.600000);
TextDrawAlignment(Textdraw1, 1);
TextDrawColor(Textdraw1, -1);
TextDrawSetShadow(Textdraw1, 0);
TextDrawSetOutline(Textdraw1, 1);
TextDrawBackgroundColor(Textdraw1, 51);
TextDrawFont(Textdraw1, 1);
TextDrawSetProportional(Textdraw1, 1);
 
Textdraw2 = TextDrawCreate(19.500000, 177.333328, "spachana za 5");
TextDrawLetterSize(Textdraw2, 0.449999, 1.600000);
TextDrawAlignment(Textdraw2, 1);
TextDrawColor(Textdraw2, -1);
TextDrawSetShadow(Textdraw2, 0);
TextDrawSetOutline(Textdraw2, 1);
TextDrawBackgroundColor(Textdraw2, 51);
TextDrawFont(Textdraw2, 1);
TextDrawSetProportional(Textdraw2, 1);
 
Textdraw3 = TextDrawCreate(19.500000, 192.888885, "vterin.");
TextDrawLetterSize(Textdraw3, 0.449999, 1.600000);
TextDrawAlignment(Textdraw3, 1);
TextDrawColor(Textdraw3, -1);
TextDrawSetShadow(Textdraw3, 0);
TextDrawSetOutline(Textdraw3, 1);
TextDrawBackgroundColor(Textdraw3, 51);
TextDrawFont(Textdraw3, 1);
TextDrawSetProportional(Textdraw3, 1);
 
TextDrawShowForPlayer(playerid, Textdraw0);
TextDrawShowForPlayer(playerid, Textdraw1);
TextDrawShowForPlayer(playerid, Textdraw2);
TextDrawShowForPlayer(playerid, Textdraw3);
 
SendClientMessage(playerid, COLOR_YELLOW, "Zemres za 5 vterin.");
KillTimer(MyTimer[playerid]);
MyTimer[playerid] = SetTimerEx("killtimer", 1000, 1, "i", playerid);
GameTextForPlayer(playerid, "~w~Umiras!", 5000, 4);
return 1;
}
 
public OnPlayerDeath(playerid, killerid, reason)
{
TextDrawHideForPlayer(playerid, Textdraw0);
TextDrawHideForPlayer(playerid, Textdraw1);
TextDrawHideForPlayer(playerid, Textdraw2);
TextDrawHideForPlayer(playerid, Textdraw3);
return 1;
}
Link to comment
Share on other sites

2 odpovědí na tuto otázku

Recommended Posts

  • 0

//Includes

#include <a_samp>

#include <zcmd>

//New

new Text:Textdraw0;

new Text:Textdraw1;

new Text:Textdraw2;

new Text:Textdraw3;

new MyTimer[MAX_PLAYERS];

new Count=5;

//Defines

#define COLOR_RED 0xFF0000AA

#define COLOR_YELLOW 0xFFFF00AA

//etc...

forward killtimer(playerid);

//Scripting

public killtimer(playerid)

{

Count--;

if(Count == 0)

{

   SendClientMessage(playerid, COLOR_RED, "Sebevrazda byla uspesna!");

   SetPlayerHealth(playerid, 0);

   KillTimer(MyTimer[playerid]);

Count = 5;

   return 1;

}

new string[128];

format(string, sizeof(string), "Zemres za: %d", Count);

SendClientMessage(playerid, COLOR_YELLOW, string);

return 1;

}

 

CMD:kill(playerid, params[])

{

    Textdraw0 = TextDrawCreate(157.500000, 162.655532, "usebox");

TextDrawLetterSize(Textdraw0, 0.000000, 5.036418);

TextDrawTextSize(Textdraw0, 15.000000, 0.000000);

TextDrawAlignment(Textdraw0, 1);

TextDrawColor(Textdraw0, 0);

TextDrawUseBox(Textdraw0, true);

TextDrawBoxColor(Textdraw0, 102);

TextDrawSetShadow(Textdraw0, 0);

TextDrawSetOutline(Textdraw0, 0);

TextDrawFont(Textdraw0, 0);

 

Textdraw1 = TextDrawCreate(19.500000, 162.399978, "Sebevrazda bude");

TextDrawLetterSize(Textdraw1, 0.449999, 1.600000);

TextDrawAlignment(Textdraw1, 1);

TextDrawColor(Textdraw1, -1);

TextDrawSetShadow(Textdraw1, 0);

TextDrawSetOutline(Textdraw1, 1);

TextDrawBackgroundColor(Textdraw1, 51);

TextDrawFont(Textdraw1, 1);

TextDrawSetProportional(Textdraw1, 1);

 

Textdraw2 = TextDrawCreate(19.500000, 177.333328, "spachana za 5");

TextDrawLetterSize(Textdraw2, 0.449999, 1.600000);

TextDrawAlignment(Textdraw2, 1);

TextDrawColor(Textdraw2, -1);

TextDrawSetShadow(Textdraw2, 0);

TextDrawSetOutline(Textdraw2, 1);

TextDrawBackgroundColor(Textdraw2, 51);

TextDrawFont(Textdraw2, 1);

TextDrawSetProportional(Textdraw2, 1);

 

Textdraw3 = TextDrawCreate(19.500000, 192.888885, "vterin.");

TextDrawLetterSize(Textdraw3, 0.449999, 1.600000);

TextDrawAlignment(Textdraw3, 1);

TextDrawColor(Textdraw3, -1);

TextDrawSetShadow(Textdraw3, 0);

TextDrawSetOutline(Textdraw3, 1);

TextDrawBackgroundColor(Textdraw3, 51);

TextDrawFont(Textdraw3, 1);

TextDrawSetProportional(Textdraw3, 1);

 

TextDrawShowForPlayer(playerid, Textdraw0);

TextDrawShowForPlayer(playerid, Textdraw1);

TextDrawShowForPlayer(playerid, Textdraw2);

TextDrawShowForPlayer(playerid, Textdraw3);

 

SendClientMessage(playerid, COLOR_YELLOW, "Zemres za 5 vterin.");

KillTimer(MyTimer[playerid]);

MyTimer[playerid] = SetTimerEx("killtimer", 1000, 1, "i", playerid);

GameTextForPlayer(playerid, "~w~Umiras!", 5000, 4);

return 1;

}

 

public OnPlayerDeath(playerid, killerid, reason)

{

TextDrawHideForPlayer(playerid, Textdraw0);

TextDrawHideForPlayer(playerid, Textdraw1);

TextDrawHideForPlayer(playerid, Textdraw2);

TextDrawHideForPlayer(playerid, Textdraw3);

return 1;

}

Link to comment
Share on other sites

  • 0
  • Administrátor

Předně bych proměnou count přidělil každému hráči zvlášt protože další problém by nastal v případě že se zasebevreaždí 2 a vice současně. 

A inicializoval bych jí v příkazu kill ne v hlavičce

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...