[Pedido] Comando /checarferimentos
#2

PHP код:
#define MAX_DAMAGE_STRING_LEN 500
public OnPlayerTakeDamage(playeridissueridFloatamountweaponidbodypart) {
    if(
issuerid != INVALID_PLAYER_ID) {
        static
            
hora,
            
minuto,
            
segundo,
            
Floatcolete,
            
weaponName[24],
            
infoString[128],
            
attackerName[MAX_PLAYER_NAME],
            
damageString[MAX_DAMAGE_STRING_LEN];
        
gettime(horaminutosegundo);
        
GetPlayerArmour(playeridcolete);
        
GetPlayerName(issueridattackerNamesizeof (attackerName));
        
GetWeaponName(weaponidweaponNamesizeof (weaponName));
        
format(infoStringsizeof(infoString), "%s - %.2f dmg de uma %s na(o) %s (Colete: %s) - %02d:%02d:%02d \n"attackerNameamountweaponNameGetBodyPartName(bodypart), colete ? ("Sim") : ("Nгo"), horaminutosegundo);
        
GetPVarString(playerid"damageInfo"damageStringMAX_DAMAGE_STRING_LEN);
        
strcat(damageStringinfoString);
        
SetPVarString(playerid"damageInfo"damageString);
    }
    return 
1;
}
GetBodyPartName(bodypart) {
    static 
data[20];
    switch ( 
bodypart ) {
        case 
3data "Torso";
        case 
4data "Peito";
        case 
5data "Braзo Esquerdo";
        case 
6data "Braзo Direito";
        case 
7data "Perna Esquerda";
        case 
8data "Perna Direita";
        case 
9data "Cabeзa";
        default: 
data "Indefinido";
    }
    return 
data;
}
public 
OnPlayerSpawn(playerid) {
    
DeletePVar(playerid"damageInfo"); // quando o jogador "spawnar" as informaзхes serгo resetadas
    
return 1;
}
CMD:checarferimentos(playerid) {
    static 
damageString[MAX_DAMAGE_STRING_LEN];
    
GetPVarString(playerid"damageInfo"damageStringMAX_DAMAGE_STRING_LEN);
    
ShowPlayerDialog(playerid9999DIALOG_STYLE_MSGBOX"Informaзхes de dano sofrido"damageString"Fechar""");
    return 
1;

Fiz de uma maneira mais geral, mostra o dano sofrido por qualquer jogador, й possнvel aprimorar, usando /checarferimentos [id do jogador], nгo й algo muito trabalhoso.

#edit

Abaixo o mesmo sistema porйm um pouco mais completo, agora й possнvel ver o histуrico indivнdual:
PHP код:
#define MAX_DAMAGE_STRING_LEN 500
public OnPlayerTakeDamage(playeridissueridFloatamountweaponidbodypart) {
    if(
issuerid != INVALID_PLAYER_ID) {
        static
            
hora,
            
minuto,
            
segundo,
            
Floatcolete,
            
weaponName[24],
            
infoString[128],
            
attackerName[MAX_PLAYER_NAME],
            
damageString[MAX_DAMAGE_STRING_LEN];
        
gettime(horaminutosegundo);
        
GetPlayerArmour(playeridcolete);
        
GetPlayerName(issueridattackerNamesizeof (attackerName));
        
GetWeaponName(weaponidweaponNamesizeof (weaponName));
        
format(infoStringsizeof(infoString), "%.2f dmg de uma %s na(o) %s (Colete: %s) - %02d:%02d:%02d \n"amountweaponNameGetBodyPartName(bodypart), colete ? ("Sim") : ("Nгo"), horaminutosegundo);
        
GetPVarString(playeridattackerNamedamageStringMAX_DAMAGE_STRING_LEN);
        
strcat(damageStringinfoString);
        
SetPVarString(playeridattackerNamedamageString);
    }
    return 
1;
}
GetBodyPartName(bodypart) {
    static 
data[15];
    switch ( 
bodypart ) {
        case 
3data "Torso";
        case 
4data "Peito";
        case 
5data "Braзo Esquerdo";
        case 
6data "Braзo Direito";
        case 
7data "Perna Esquerda";
        case 
8data "Perna Direita";
        case 
9data "Cabeзa";
        default: 
data "Indefinido";
    }
    return 
data;
}
ResetDamageInfo(playerid) {
    static 
iname[24];
    for ( 
GetPlayerPoolSize(); >= 0; --) {
        if ( 
IsPlayerConnected(i) ) {
            
GetPlayerName(iname24);
            
DeletePVar(playeridname);
        }
    }
    return 
1;
}
CMD:checarferimentos(playeridparams[]) {
    if ( 
isnull(params) )
        return 
SendClientMessage(playerid, -1"Use /checarferimentos [id]");
    static 
idname[24], damageString[MAX_DAMAGE_STRING_LEN];
    
id strval(params);
    if ( 
id == playerid )
        return 
SendClientMessage(playerid, -1"Vocк nгo pode informar seu prуprio ID!");
    if ( 
GetPlayerName(idname24) == )
        return 
SendClientMessage(playerid, -1"Jogador invбlido!");
    
GetPVarString(playeridnamedamageStringMAX_DAMAGE_STRING_LEN);
    
ShowPlayerDialog(playerid9999DIALOG_STYLE_MSGBOXnamedamageString"Fechar""");
    return 
1;

Diferente do primeiro exemplo, no segundo criei uma funзгo que reseta todas essas estatнsticas ResetDamageInfo(), cabe vocк decidir o melhor uso para ela, seja quando ele morrer, dar spawn, etc.
Reply


Messages In This Thread
Comando /checarferimentos - by RIPOrkut - 13.07.2015, 02:16
Re: Comando /checarferimentos - by Gii - 13.07.2015, 02:47
Re: Comando /checarferimentos - by RIPOrkut - 13.07.2015, 03:02

Forum Jump:


Users browsing this thread: 1 Guest(s)