[Duda] KillStreak -
Loox - 28.01.2013
Bueno, querнa hacer un killstreak en textdraw, pero tengo algunas dudas, veamos:
En OnPlayerDeath actualmente lo hice asн:
Код:
new kil[200],n[24];
GetPlayerName(killerid, n, 24);
if(kills[killerid] == 2)
{
format(kil,200,"~b~%s ~w~double kill",n,kills[killerid]);
GameTextForAll(kil, 3000, 5);
GivePlayerMoney(killerid, 1000);
}
if(kills[killerid] == 3)
{
format(kil,200,"~b~%s ~w~tres kills",n,kills[killerid]);
GameTextForAll(kil, 3000, 5);
GivePlayerMoney(killerid, 1500);
}
if(kills[killerid] >= 4)
{
format(kil,200,"~b~%s ~w~cuatro kills",n,kills[killerid]);
GameTextForAll(kil, 3000, 5);
GivePlayerMoney(killerid, 2000);
}
return 1;
}
Y tengo este textdraw:
Код:
Textdraw0 = TextDrawCreate(252.000000, 339.000000, "NombrePlayer triple kill");
TextDrawBackgroundColor(Textdraw0, 255);
TextDrawFont(Textdraw0, 2);
TextDrawLetterSize(Textdraw0, 0.250000, 1.000000);
TextDrawColor(Textdraw0, -1);
TextDrawSetOutline(Textdraw0, 0);
TextDrawSetProportional(Textdraw0, 1);
TextDrawSetShadow(Textdraw0, 1);
Lo que quiero hacer es que aparezca un textdraw cuando un jugador hago doble kill, triple kill, etc, pero necesito saber cуmo hacer para que si dos jugadores hacen doble kill a la vez aparezcan los dos textdraws y luego se quiten.
Tipo asн:
Player1 double kill.
Player2 double kill.
Player3 triple kill.
Respuesta: [Duda] KillStreak -
JustBored - 28.01.2013
Por lo que entendн si 2 jugadores hacen doble kill a la vez tendrнas que agregar una variable, un timer y un public para ejecutar la funciуn del TextDraw.
Respuesta: [Duda] KillStreak -
juank - 29.01.2013
Desde mi opiniуn no serнa correcto hacer eso ya que te podrнa llenar la pantalla de
texto...texto....texto.....texto Sн, pepito hizo doble kill todo sabrбn con el textdraw, pero hubo otros que hicieron triple kill, una muerte, cuatro muerte ((Ejemplo)).
Como dice arriba, serнa poner que por cada reconocimiento de muerte ponga en cola el textdraw y los cumpla por el timer.
Respuesta: [Duda] KillStreak -
Loox - 29.01.2013
їMe puedes dar algъn ejemplo?
Respuesta: [Duda] KillStreak -
[DOG]irinel1996 - 29.01.2013
No sй los demбs pero mi tйcnica serнa esta:
pawn Код:
new
Text:ks_A,
Text:ks_B,
Text:ks_C,
ks_gTimer[3],
ks_gUltimoActualizado
;
public OnGameModeInit() {
//---Aquн tus TextDraws globales.
ks_A = TextDrawCreate(.................);
ks_B = TextDrawCreate(.................);
ks_C = TextDrawCreate(.................);
return 1;
}
/* Luego siguiendo tu modelo en OnPlayerDeath */
new
cadena[128],
nombre[MAX_PLAYER_NAME]
;
GetPlayerName(killerid, n, 24);
if(kills[killerid] >= 2) {
ks_gUltimoActualizado++;
format(cadena, 128,
"~b~%s ~w~%s",
nombre,
TextoBaja(kills[killerid])
);
switch(ks_gUltimoActualizado) {
case 1: {
KillTimer(ks_gTimer[0]);
TextDrawSetString(A, cadena); //Lo ponemos en el primer TextDraw el mensaje.
TextDrawShowForAll(A); //Lo mostramos a todo el mundo.
ks_gTimer[0] = SetTimerEx("EsconderNotificacion", 2000, false, "i", 0);
}
case 2: {
KillTimer(ks_gTimer[1]);
TextDrawSetString(B, cadena); //Lo ponemos en el segundo TextDraw el mensaje.
TextDrawShowForAll(B); //Lo mostramos a todo el mundo.
ks_gTimer[1] = SetTimerEx("EsconderNotificacion", 2000, false, "i", 1);
}
case 3: {
KillTimer(ks_gTimer[2]);
TextDrawSetString(C, cadena); //Lo ponemos en el tercer TextDraw el mensaje.
TextDrawShowForAll(C); //Lo mostramos a todo el mundo.
ks_gTimer[2] = SetTimerEx("EsconderNotificacion", 2000, false, "i", 2);
ks_gUltimoActualizado = 0;
/* Ponemos la variable en 0, ya que cuando lleguemos al TextDraw C no habrб mбs sitio y vuelve a empezar desde el TextDraw A */
}
}
}
/* Funciуn para esconder el mensaje despuйs de dos segundos */
forward EsconderNotificacion(numero);
public EsconderNotificacion(numero) {
switch(numero) {
case 0: TextDrawHideForAll(A);
case 1: TextDrawHideForAll(B);
case 2: TextDrawHideForAll(C);
}
return 1;
}
/* Esta funciуn para facilitar un poco las cosas */
stock TextoBaja(numero) {
new msg[100];
switch(numero) {
case 2: msg = "Racha de dos bajas";
case 3: msg = "Racha de tres bajas";
case 4: msg = "Racha de cuatro bajas";
/* Puedes poner todos los 'case' que quieras. */
}
return msg;
}
Deberнa funcionar, no lo he probado, si tienes alguna duda, Ўpregunta!
Saludos.
Respuesta: [Duda] KillStreak -
Glimma - 29.01.2013
Quote:
Originally Posted by [DOG]irinel1996
No sй los demбs pero mi tйcnica serнa esta:
pawn Код:
new Text:ks_A, Text:ks_B, Text:ks_C, ks_gTimer[3], ks_gUltimoActualizado ;
public OnGameModeInit() { //---Aquн tus TextDraws globales. ks_A = TextDrawCreate(.................); ks_B = TextDrawCreate(.................); ks_C = TextDrawCreate(.................); return 1; }
/* Luego siguiendo tu modelo en OnPlayerDeath */ new cadena[128], nombre[MAX_PLAYER_NAME] ; GetPlayerName(killerid, n, 24); if(kills[killerid] >= 2) { ks_gUltimoActualizado++;
format(cadena, 128, "~b~%s ~w~%s", nombre, TextoBaja(kills[killerid]) ); switch(ks_gUltimoActualizado) { case 1: { KillTimer(ks_gTimer[0]); TextDrawSetString(A, cadena); //Lo ponemos en el primer TextDraw el mensaje. TextDrawShowForAll(A); //Lo mostramos a todo el mundo. ks_gTimer[0] = SetTimerEx("EsconderNotificacion", 2000, false, "i", 0); } case 2: { KillTimer(ks_gTimer[1]); TextDrawSetString(B, cadena); //Lo ponemos en el segundo TextDraw el mensaje. TextDrawShowForAll(B); //Lo mostramos a todo el mundo. ks_gTimer[1] = SetTimerEx("EsconderNotificacion", 2000, false, "i", 1); } case 3: { KillTimer(ks_gTimer[2]); TextDrawSetString(C, cadena); //Lo ponemos en el tercer TextDraw el mensaje. TextDrawShowForAll(C); //Lo mostramos a todo el mundo. ks_gTimer[2] = SetTimerEx("EsconderNotificacion", 2000, false, "i", 2); ks_gUltimoActualizado = 0; /* Ponemos la variable en 0, ya que cuando lleguemos al TextDraw C no habrб mбs sitio y vuelve a empezar desde el TextDraw A */ } } }
/* Funciуn para esconder el mensaje despuйs de dos segundos */ forward EsconderNotificacion(numero); public EsconderNotificacion(numero) { switch(numero) { case 0: TextDrawHideForAll(A); case 1: TextDrawHideForAll(B); case 2: TextDrawHideForAll(C); } return 1; }
/* Esta funciуn para facilitar un poco las cosas */ stock TextoBaja(numero) { new msg[100]; switch(numero) { case 2: msg = "Racha de dos bajas"; case 3: msg = "Racha de tres bajas"; case 4: msg = "Racha de cuatro bajas"; /* Puedes poner todos los 'case' que quieras. */ } return msg; }
Deberнa funcionar, no lo he probado, si tienes alguna duda, Ўpregunta!
Saludos.
|
Quedу bien armado.