ShowPlayerDialog Server closed the connection
#1

PHP код:
CMD:danni(playeridparams[])
{
    new 
    
idFloatpPos[3];
    if(
sscanf(params"u"id)) return SCM(playerid0xFF6347FF"UTILIZZA: {FFFFFF}/danni [playerid/Nome]");
    if(!
IsPlayerConnected(id)) return SCM(playerid0xFF6347FF"L'ID specificato non и stato trovato.");
    
    
GetPlayerPos(playeridpPos[0], pPos[1], pPos[2]);
    if(
IsPlayerInRangeOfPoint(playerid7.0pPos[0], pPos[1], pPos[2]))
    {
        
ShowPlayerDamages(idplayerid);
    }
    else return 
SCM(playerid0xB8BAC6FF"Sei troppo lontano.");
    return 
1;

this is define:
PHP код:
#define        DIALOG_DAMAGE        1 
What it's suppose to do is show a list of damage, and then you can press "Done", press "ESC", and it shows Server closed the connection.. as if they got kicked.
Reply
#2

Where's the showplayerdialog code?
And send the ondialogresponse code.
Reply
#3

I just download this script, in the script don't exist the "ondialogresponse" IDK....

this is the filterscript:

PHP код:
//=====================INCLUDES=====================
#include     <a_samp>
#include    <zcmd>
#include    <sscanf2>
//=====================DIALOGS======================
#define        DIALOG_DAMAGE        1
//==================CONTROL PANEL===================
#define     FILTERSCRIPT
#define        MAX_DAMAGES            1000
#define        SCM                    SendClientMessage
#define        FORMAT:%0(%1)        format(%0, sizeof(%0), %1)
#define        BODY_PART_TORSO     3
#define     BODY_PART_GROIN     4
#define     BODY_PART_RIGHT_ARM 5
#define     BODY_PART_LEFT_ARM     6
#define         BODY_PART_RIGHT_LEG 7
#define     BODY_PART_LEFT_LEG     8
#define     BODY_PART_HEAD         9
//===================ENUMERATORS====================
enum dmgInfo
{
    
dmgDamage,
    
dmgWeapon,
    
dmgBodypart,
    
dmgKevlarhit,
    
dmgSeconds,
}
new 
DamageInfo[MAX_PLAYERS][MAX_DAMAGES][dmgInfo];
public 
OnFilterScriptInit()
{
    print(
"\n ==================================");
    print(
" |                                |");
    print(
" |          Damage System         |");
    print(
" |           By Hreesang          |");
    print(
" |                                |");
    print(
" ==================================\n");
    return 
1;
}
public 
OnFilterScriptExit()
{
    return 
1;
}
stock ResetPlayerDamages(playerid)
{
    for(new 
id 0id MAX_DAMAGESid++)
    {
        if(
DamageInfo[playerid][id][dmgDamage] != 0)
        {
            
DamageInfo[playerid][id][dmgDamage] = 0;
            
DamageInfo[playerid][id][dmgWeapon] = 0;
            
DamageInfo[playerid][id][dmgBodypart] = 0;
            
DamageInfo[playerid][id][dmgKevlarhit] = 0;
            
DamageInfo[playerid][id][dmgSeconds] = 0;
        }
    }
    return 
1;
}
public 
OnPlayerConnect(playerid)
{
    
ResetPlayerDamages(playerid);
    return 
1;
}
public 
OnPlayerDeath(playeridkilleridreason)
{
    
ResetPlayerDamages(playerid);
    return 
1;
}
stock ShowPlayerDamages(playeridtoid)
{
    new 
    
str[1000], str1[500], count 0name[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnamesizeof(name));
    for(new 
id 0id MAX_DAMAGESid++)
    {
        if(
DamageInfo[playerid][id][dmgDamage] != 0count++;
    }
    if(
count == 0) return ShowPlayerDialog(toidDIALOG_DAMAGEDIALOG_STYLE_LISTname"Non hai subito nessun danno...""Chiudi""");
    else if(
count 0)
    {
        for(new 
id 0id MAX_DAMAGESid++)
        {
            if(
DamageInfo[playerid][id][dmgDamage] != 0)
            {
                
FORMAT:str1("%d danno da %s al %s (Kevlarhit: %d) %d s fa\n"DamageInfo[playerid][id][dmgDamage], GetWeaponNameEx(DamageInfo[playerid][id][dmgWeapon]), GetBodypartName(DamageInfo[playerid][id][dmgBodypart]), DamageInfo[playerid][id][dmgKevlarhit], gettime() - DamageInfo[playerid][id][dmgSeconds]);
                
strcat(strstr1);
            }
        }
        
ShowPlayerDialog(toidDIALOG_DAMAGEDIALOG_STYLE_LISTnamestr"Chiudi""");
    }
    return 
1;
}
stock GetName(playerid)
{
    new 
name;
    
GetPlayerName(playeridnamesizeof(name));
    return 
name;
}
CMD:danni(playeridparams[])
{
    new 
    
idFloatpPos[3];
    if(
sscanf(params"u"id)) return SCM(playerid0xFF6347FF"UTILIZZA: {FFFFFF}/danni [playerid/Nome]");
    if(!
IsPlayerConnected(id)) return SCM(playerid0xFF6347FF"L'ID specificato non и stato trovato.");
    
    
GetPlayerPos(playeridpPos[0], pPos[1], pPos[2]);
    if(
IsPlayerInRangeOfPoint(playerid7.0pPos[0], pPos[1], pPos[2]))
    {
        
ShowPlayerDamages(idplayerid);
    }
    else return 
SCM(playerid0xB8BAC6FF"Sei troppo lontano.");
    return 
1;
}
public 
OnPlayerTakeDamage(playeridissueridFloatamountweaponidbodypart)
{
    if(
IsPlayerConnected(playerid))
    {
        new 
        
idFloatpHPFloatpArm;
        
GetPlayerHealth(playeridpHP);
        
GetPlayerArmour(playeridpArm);
        for(new 
0MAX_DAMAGESi++)
        {
            if(!
DamageInfo[playerid][i][dmgDamage])
            {
                
id i;
                break;
            }
        }
        
        
DamageInfo[playerid][id][dmgDamage] = floatround(amountfloatround_round);
        
DamageInfo[playerid][id][dmgWeapon] = weaponid;
        
DamageInfo[playerid][id][dmgBodypart] = bodypart;
        if(
pArm 0DamageInfo[playerid][id][dmgKevlarhit] = 1;
        else if(
pArm 1DamageInfo[playerid][id][dmgKevlarhit] = 0;
        
DamageInfo[playerid][id][dmgSeconds] = gettime();
    }
    return 
1;
}
stock GetWeaponNameEx(weaponid)
{
    new 
weaponname[60];
    
GetWeaponName(weaponidweaponnamesizeof(weaponname));
    return 
weaponname;
}
stock GetBodypartName(bodypart)
{
    new 
bodyname[60];
    switch(
bodypart)
    {
        case 
BODY_PART_TORSOFORMAT:bodyname("TORSO");
        case 
BODY_PART_GROINFORMAT:bodyname("INGUINE");
        case 
BODY_PART_RIGHT_ARMFORMAT:bodyname("BRACCIO DESTRO");
        case 
BODY_PART_LEFT_ARMFORMAT:bodyname("BRACCIO SINISTRO");
        case 
BODY_PART_RIGHT_LEGFORMAT:bodyname("GAMBA DESTRA");
        case 
BODY_PART_LEFT_LEGFORMAT:bodyname("GAMBA SINISTRA");
        case 
BODY_PART_HEADFORMAT:bodyname("TESTA");
    }
    return 
bodyname;

Reply
#4

pawn Код:
case DIALOG_DAMAGE:
{
if (!response) return 1;
}
Incolla questo codice in OnDialogResponse. E' inutile creare una dialog se poi (anche se non c'и nessuna opzione da selezionare), non viene aggiunta li.

Comunque, il problema de "server closed connection" и perchи probabilmente l'id della dialog (in questo caso 1), va in conflitto con altre dialog. Ti do un consiglio, invece di fare #define DIALOG_DAMAGE 1, usa un enum:

pawn Код:
enum
{
        DIALOG_UNUSED,
    DIALOG_DAMAGE
};
Se ci fai caso non ho specificato l'ID dei dialog perchи non ce n'и bisogno. Inoltre, puoi usare DIALOG_UNUSED for mostrare informazioni (in questo caso i danni), oppure per mostrare le stats di un player etc etc, tutto con DIALOG_UNUSED. Senza creare dialogs inutili.

Ricordati di aggiungere in OnDialogResponse questo:

pawn Код:
case DIALOG_UNUSED: return 1;
Se c'и altro chiedi pure.
Reply
#5

La butto lм, controlla se i dialoghi nel filterscript sono definiti con lo stesso ID dei dialoghi nella gamemode. In questo caso io credo che sia il dialogo LOGIN, dove di solito se un utente non "risponde" viene kickato, che DIALOG_DAMAGE siano stati definiti con lo stesso ID, in questo caso 1. щ
Potrebbe darsi che vengano chiamati 2 dialoghi nello stesso momento, un dialogo della gamemode e uno del filterscript.

Oh quasi dimenticavo, ciao ragazzi
Reply
#6

v1k1nG infatti и quello che ho detto io. Molto probabilmente ci sarа un conflitto tra i vari ID dei dialogs. P.S. Ciao! Entra nel mio server discord se vuoi.
Reply
#7

How about you two speak english? Because there might be other people who will need help with that and they won't understand shit.
Reply
#8

O cavoli, scusami KinderClans non ho letto tutto il tuo post.. effettivamente la risposta sta giа lм

Sм, darт un'occhiata al tuo Discord
Reply
#9

Ciao ragazzi grazie mille per avermi risposto, proverт come mi avete consigliato
Comunque sono un novellino nel mondo dello script e pian piano sto imparando, per esempio so riuscito a sbuggare l'anticheat di una gm scaricata (con cosa basilari) e creare dei sistemi.
Purtroppo avendo scaricato questo filterscript non pensavo esistessero questi problemi, comunque ragazzi ho visto che ve ne intendete.. ma per caso qualcuno di voi avrebbe possibilitа di creare una gm RP (ovviamente a pagamento)
Reply
#10

Io la sto creando da 0. Per me non ci sono problemi, posso creartela anche io. Ne sto facendo una da me proprio da ZERO assoluto. Controlla il mio discord e contattami li che parliamo.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)