Posts: 226
Threads: 39
Joined: Sep 2012
Reputation:
0
Hola. Realicй un sistema de daсo de armas, que tambiйn indica cuando se disparу cada una con por ejemplo un mensaje '%s disparу con SPAS-12'.
Estб bien, esto ya estб hecho, pero el tema es el mensaje para cada disparo, y si se habla de varios disparos como se podrнan efectuar desde una ametralladora, se floodea todo el chat.
Es posible desarrollar algъn script que detecte sуlamente un disparo de los tantos que se podrнan hacer en un tiempo determinado?
No sй si me explico, pero supongamos que yo tengo un Desert. Entonces yo disparo 6 veces, y el mensaje que sale es este:
jwalker ha disparado con Desert.
jwalker ha disparado con Desert.
jwalker ha disparado con Desert.
jwalker ha disparado con Desert.
jwalker ha disparado con Desert.
jwalker ha disparado con Desert.
їCуmo podrнa hacer para que en vez de esos seis salga solamente uno?
Posts: 4,930
Threads: 467
Joined: Dec 2010
con una restricciуn y Gettime.
puedes usar esto.
Posts: 1,642
Threads: 35
Joined: Nov 2011
Reputation:
0
23.01.2015, 06:38
(
Последний раз редактировалось Zume; 23.01.2015 в 08:42.
)
para quй va a usar eso? le dijiste bien las cosas y es usar gettime en OnPlayerWeaponShot cual al disparar cuando el gettime, incluyendo eso sуlo ocuparб memoria y molestias que no necesita.. de hecho yo tenнa esto en mi servidor, asн, sin mбs de 3 lineas.
Posts: 4,930
Threads: 467
Joined: Dec 2010
Quote:
Originally Posted by _Zume
para quй va a usar eso? le dijiste bien las cosas y es usar gettime en OnPlayerWeaponShot cual al disparar cuando el gettime, incluyendo eso sуlo ocuparб memoria y molestias que no necesita.. de hecho yo tenнa esto en mi servidor, asн, sin mбs de 3 lineas.
|
de hecho se lo dije para que se basa por si no sabe aplicar el mйtodo que le dije.
para que resaltas lo de tu servidor?, era innecesario. -.-
Posts: 226
Threads: 39
Joined: Sep 2012
Reputation:
0
Algъn pequeсo ejemplo de como se aplicarнa?
Posts: 4,930
Threads: 467
Joined: Dec 2010
pawn Код:
#include <a_samp>
new NO_Repetir[MAX_PLAYERS];
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ){
if(playerid != INVALID_PLAYER_ID){
if(hittype==BULLET_HIT_TYPE_PLAYER){
#define SEGUNDO_NO_REPETIR ( 30 ) //30 segundos
if( NO_Repetir[playerid] < gettime() ){
NO_Repetir[playerid] = gettime() + SEGUNDO_NO_REPETIR;
// tu funcion
}
}
}
return true;
}
pawn Код:
#include <a_samp>
#include <SetTimerCMD_V3>
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ){
if(playerid != INVALID_PLAYER_ID){
if(hittype==BULLET_HIT_TYPE_PLAYER){
#define SEGUNDO_NO_REPETIR ( 30 ) //30 segundos
#define SLOT_FUNCTION ( 0 )
if( !GetTimerCMD(playerid,SLOT_FUNCTION) ){
SetTimerCMD(playerid,SLOT_FUNCTION,SEGUNDO_NO_REPETIR);
// tu funcion
}
}
}
return true;
}
Posts: 4,930
Threads: 467
Joined: Dec 2010
Quote:
Originally Posted by DesingMyCry
El uso de SetTimer o SetTimerEx en una callback que se puede llamar mas de 100 veces por segundo, es totalmente innecesario.
pawn Код:
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ) { static deteccion[MAX_PLAYERS];
if(playerid != INVALID_PLAYER_ID) { if(hittype == BULLET_HIT_TYPE_PLAYER) { if(weaponid != deteccion[playerid]) { // Enviar el mensaje una vez } deteccion[playerid] = weaponid; } } return true; }
|
no se esta utilizando ni SetTimer ni SetTimerEx. -.-