SA-MP Forums Archive
Problem on death. - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: Problem on death. (/showthread.php?tid=582773)



Problem on death. - GabiXx - 23.07.2015

I use this system for register and login.
PHP код:
#include <YSI\y_ini>
#include <a_samp>
#define DIALOG_REGISTER 1
#define DIALOG_LOGIN 2
#define DIALOG_SUCCESS_1 3
#define DIALOG_SUCCESS_2 4
#define COL_WHITE "{FFFFFF}"
#define COL_RED "{F81414}"
#define COL_GREEN "{00FF22}"
#define COL_LIGHTBLUE "{00CED1}"
public OnGameModeInit()
{
   
SetGameModeText("Cel mai mod");
   
AddStaticVehicle(411,1226.5582,-1867.9752,13.5469,1.1376, -1, -1);
   return 
1;
}
public 
OnPlayerSpawn(playerid)
{
   
GivePlayerMoney(playerid50000);
   return 
1;
}
enum pInfo
{
    
pPass,
    
pCash,
    
pAdmin,
    
pKills,
    
pDeaths
}
new 
PlayerInfo[MAX_PLAYERS][pInfo];
forward LoadUser_data(playerid,name[],value[]);
public 
LoadUser_data(playerid,name[],value[])
{
    
INI_Int("Password",PlayerInfo[playerid][pPass]);
    
INI_Int("Cash",PlayerInfo[playerid][pCash]);
    
INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
    
INI_Int("Kills",PlayerInfo[playerid][pKills]);
    
INI_Int("Deaths",PlayerInfo[playerid][pDeaths]);
    return 
1;
}
stock UserPath(playerid)
{
    new 
string[128],playername[MAX_PLAYER_NAME];
    
GetPlayerName(playerid,playername,sizeof(playername));
    
format(string,sizeof(string),playername);
    return 
string;
}
stock udb_hash(buf[]) {
    new 
length=strlen(buf);
    new 
s1 1;
    new 
s2 0;
    new 
n;
    for (
n=0n<lengthn++)
    {
       
s1 = (s1 buf[n]) % 65521;
       
s2 = (s2 s1)     % 65521;
    }
    return (
s2 << 16) + s1;
}
public 
OnPlayerConnect(playerid)
{
    if(
fexist(UserPath(playerid)))
    {
        
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra true, .extra playerid);
        
ShowPlayerDialog(playeridDIALOG_LOGINDIALOG_STYLE_INPUT,""COL_WHITE"Login",""COL_WHITE"Type your password below to login.","Login","Quit");
    }
    else
    {
        
ShowPlayerDialog(playeridDIALOG_REGISTERDIALOG_STYLE_INPUT,""COL_WHITE"Registering...",""COL_WHITE"Type your password below to register a new account.","Register","Quit");
    }
    return 
1;
}
public 
OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    switch( 
dialogid )
    {
        case 
DIALOG_REGISTER:
        {
            if (!
response) return Kick(playerid);
            if(
response)
            {
                if(!
strlen(inputtext)) return ShowPlayerDialog(playeridDIALOG_REGISTERDIALOG_STYLE_INPUT""COL_WHITE"Registering...",""COL_RED"You have entered an invalid password.\n"COL_WHITE"Type your password below to register a new account.","Register","Quit");
                new 
INI:File INI_Open(UserPath(playerid));
                
INI_SetTag(File,"data");
                
INI_WriteInt(File,"Password",udb_hash(inputtext));
                
INI_WriteInt(File,"Cash",0);
                
INI_WriteInt(File,"Admin",0);
                
INI_WriteInt(File,"Kills",0);
                
INI_WriteInt(File,"Deaths",0);
                
INI_Close(File);
                
SetSpawnInfo(playerid,0,0,1214.8846,-1821.6281,13.5943,179.1360,0,0,0,0,0,0);
                
SpawnPlayer(playerid);
                
ShowPlayerDialog(playeridDIALOG_SUCCESS_1DIALOG_STYLE_MSGBOX,""COL_WHITE"Success!",""COL_GREEN"Distractie placuta! Have fun!","Ok","");
            }
        }
        case 
DIALOG_LOGIN:
        {
            if ( !
response ) return Kick playerid );
            if( 
response )
            {
                if(
udb_hash(inputtext) == PlayerInfo[playerid][pPass])
                {
                    
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra true, .extra playerid);
                    
SetSpawnInfo(playerid,0,0,1214.8846,-1821.6281,13.5943,179.1360,0,0,0,0,0,0);
                    
SpawnPlayer(playerid);
                    
ShowPlayerDialog(playeridDIALOG_SUCCESS_2DIALOG_STYLE_MSGBOX,""COL_WHITE"Success!",""COL_GREEN"You have successfully logged in!","Ok","");
                }
                else
                {
                    
ShowPlayerDialog(playeridDIALOG_LOGINDIALOG_STYLE_INPUT,""COL_WHITE"Login",""COL_RED"You have entered an incorrect password.\n"COL_WHITE"Type your password below to login.","Login","Quit");
                }
                return 
1;
            }
        }
    }
    return 
1;
}
public 
OnPlayerDisconnect(playeridreason)
{
    new 
INI:File INI_Open(UserPath(playerid));
    
INI_SetTag(File,"data");
    
INI_WriteInt(File,"Cash",GetPlayerMoney(playerid));
    
INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
    
INI_WriteInt(File,"Kills",PlayerInfo[playerid][pKills]);
    
INI_WriteInt(File,"Deaths",PlayerInfo[playerid][pDeaths]);
    
INI_Close(File);
    return 
1;
}
public 
OnPlayerDeath(playeridkilleridreason)
{
   
SetSpawnInfo(playerid,0,0,1214.8846,-1821.6281,13.5943,179.1360,0,0,0,0,0,0);
   
SpawnPlayer(playerid);
   return 
1;

When player die, he get a lot of money. I just want when player connect first time to get 50.000$.
Please help.


Re: Problem on death. - SpikY_ - 23.07.2015

Remove this from Onplayerspawn
Код:
GivePlayerMoney(playerid, 50000);
and add it under onPlayerconnect


Re: Problem on death. - Mariciuc223 - 23.07.2015

theoretical, the player get those money when he spawn , not he die

Код HTML:
#include <YSI\y_ini>
#include <a_samp>

#define DIALOG_REGISTER 1
#define DIALOG_LOGIN 2
#define DIALOG_SUCCESS_1 3
#define DIALOG_SUCCESS_2 4

#define COL_WHITE "{FFFFFF}"
#define COL_RED "{F81414}"
#define COL_GREEN "{00FF22}"
#define COL_LIGHTBLUE "{00CED1}"

public OnGameModeInit()
{
   SetGameModeText("Cel mai mod");
   AddStaticVehicle(411,1226.5582,-1867.9752,13.5469,1.1376, -1, -1);
   return 1;
}

enum pInfo
{
    pPass,
    pMoney,
    pAdmin,
    pKills,
    pDeaths
}
new PlayerInfo[MAX_PLAYERS][pInfo];

forward LoadUser_data(playerid,name[],value[]);
public LoadUser_data(playerid,name[],value[])
{
    INI_Int("Password",PlayerInfo[playerid][pPass]);
    INI_Int("Money",PlayerInfo[playerid][pMoney]);
    INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
    INI_Int("Kills",PlayerInfo[playerid][pKills]);
    INI_Int("Deaths",PlayerInfo[playerid][pDeaths]);
    return 1;
}

stock UserPath(playerid)
{
    new string[128],playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof(playername));
    format(string,sizeof(string),playername);
    return string;
}

stock udb_hash(buf[]) {
    new length=strlen(buf);
    new s1 = 1;
    new s2 = 0;
    new n;
    for (n=0; n<length; n++)
    {
       s1 = (s1 + buf[n]) % 65521;
       s2 = (s2 + s1)     % 65521;
    }
    return (s2 << 16) + s1;
}

public OnPlayerConnect(playerid)
{
    if(fexist(UserPath(playerid)))
    {
        INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
        ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_WHITE"Login",""COL_WHITE"Type your password below to login.","Login","Quit");
    }
    else
    {
        ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,""COL_WHITE"Registering...",""COL_WHITE"Type your password below to register a new account.","Register","Quit");
    }
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch( dialogid )
    {
        case DIALOG_REGISTER:
        {
            if (!response) return Kick(playerid);
            if(response)
            {
                if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""COL_WHITE"Registering...",""COL_RED"You have entered an invalid password.\n"COL_WHITE"Type your password below to register a new account.","Register","Quit");
                new INI:File = INI_Open(UserPath(playerid));
                INI_SetTag(File,"data");
                INI_WriteInt(File,"Password",udb_hash(inputtext));
                INI_WriteInt(File,"Cash",0);
                INI_WriteInt(File,"Admin",0);
                INI_WriteInt(File,"Money", 50000);
                INI_WriteInt(File,"Kills",0);
                INI_WriteInt(File,"Deaths",0);
                INI_Close(File);

                SetSpawnInfo(playerid,0,0,1214.8846,-1821.6281,13.5943,179.1360,0,0,0,0,0,0);
                SpawnPlayer(playerid);
                ShowPlayerDialog(playerid, DIALOG_SUCCESS_1, DIALOG_STYLE_MSGBOX,""COL_WHITE"Success!",""COL_GREEN"Distractie placuta! Have fun!","Ok","");

                GivePlayerMoney(playerid, 50000);
            }
        }

        case DIALOG_LOGIN:
        {
            if ( !response ) return Kick ( playerid );
            if( response )
            {
                if(udb_hash(inputtext) == PlayerInfo[playerid][pPass])
                {
                    INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
                    SetSpawnInfo(playerid,0,0,1214.8846,-1821.6281,13.5943,179.1360,0,0,0,0,0,0);
                    SpawnPlayer(playerid);
                    ResetPlayerMoney(playerid);
                    GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
                    ShowPlayerDialog(playerid, DIALOG_SUCCESS_2, DIALOG_STYLE_MSGBOX,""COL_WHITE"Success!",""COL_GREEN"You have successfully logged in!","Ok","");
                }
                else
                {
                    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_WHITE"Login",""COL_RED"You have entered an incorrect password.\n"COL_WHITE"Type your password below to login.","Login","Quit");
                }
                return 1;
            }
        }
    }
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    new INI:File = INI_Open(UserPath(playerid));
    INI_SetTag(File,"data");
    INI_WriteInt(File,"Cash",GetPlayerMoney(playerid));
    INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
    INI_WriteInt(File,"Money", PlayerInfo[playerid][pMoney]);
    INI_WriteInt(File,"Kills",PlayerInfo[playerid][pKills]);
    INI_WriteInt(File,"Deaths",PlayerInfo[playerid][pDeaths]);
    INI_Close(File);
    return 1;
}
Vezi daca merge ) | See if it work !


Re: Problem on death. - GabiXx - 23.07.2015

Acum nu mai primesti deloc bani cand te conectezi.


Re: Problem on death. - GabiXx - 23.07.2015

Spiky, if i do what you say, the player get money when register, but when he left and relog, he get still 0$. And when a player die, he are respawned imeadiatly, don't see how he die.


Re: Problem on death. - BladeFire - 23.07.2015

INI_WriteInt(File,"Cash",50000);

Put that OnDialogResponse, Under DIALOG_REGISTER.


Re: Problem on death. - TenTen - 23.07.2015

Код:
#include <YSI\y_ini> 
#include <a_samp> 

#define DIALOG_REGISTER 1 
#define DIALOG_LOGIN 2 
#define DIALOG_SUCCESS_1 3 
#define DIALOG_SUCCESS_2 4 

#define COL_WHITE "{FFFFFF}" 
#define COL_RED "{F81414}" 
#define COL_GREEN "{00FF22}" 
#define COL_LIGHTBLUE "{00CED1}" 

public OnGameModeInit() 
{ 
   SetGameModeText("Cel mai mod"); 
   AddStaticVehicle(411,1226.5582,-1867.9752,13.5469,1.1376, -1, -1); 
   return 1; 
} 

public OnPlayerSpawn(playerid) 
{ 
   GivePlayerMoney(playerid, 50000); 
   return 1; 
} 

enum pInfo 
{ 
    pPass, 
    pCash, 
    pAdmin, 
    pKills, 
    pDeaths 
} 
new PlayerInfo[MAX_PLAYERS][pInfo]; 

forward LoadUser_data(playerid,name[],value[]); 
public LoadUser_data(playerid,name[],value[]) 
{ 
    INI_Int("Password",PlayerInfo[playerid][pPass]); 
    INI_Int("Cash",PlayerInfo[playerid][pCash]); 
    INI_Int("Admin",PlayerInfo[playerid][pAdmin]); 
    INI_Int("Kills",PlayerInfo[playerid][pKills]); 
    INI_Int("Deaths",PlayerInfo[playerid][pDeaths]); 
    return 1; 
} 

stock UserPath(playerid) 
{ 
    new string[128],playername[MAX_PLAYER_NAME]; 
    GetPlayerName(playerid,playername,sizeof(playername)); 
    format(string,sizeof(string),playername); 
    return string; 
} 

stock udb_hash(buf[]) { 
    new length=strlen(buf); 
    new s1 = 1; 
    new s2 = 0; 
    new n; 
    for (n=0; n<length; n++) 
    { 
       s1 = (s1 + buf[n]) % 65521; 
       s2 = (s2 + s1)     % 65521; 
    } 
    return (s2 << 16) + s1; 
} 

public OnPlayerConnect(playerid) 
{ 
    if(fexist(UserPath(playerid))) 
    { 
        INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid); 
        ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_WHITE"Login",""COL_WHITE"Type your password below to login.","Login","Quit"); 
    } 
    else 
    { 
        ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,""COL_WHITE"Registering...",""COL_WHITE"Type your password below to register a new account.","Register","Quit"); 
    } 
    return 1; 
} 

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) 
{ 
    switch( dialogid ) 
    { 
        case DIALOG_REGISTER: 
        { 
            if (!response) return Kick(playerid); 
            if(response) 
            { 
                if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""COL_WHITE"Registering...",""COL_RED"You have entered an invalid password.\n"COL_WHITE"Type your password below to register a new account.","Register","Quit"); 
                new INI:File = INI_Open(UserPath(playerid)); 
                INI_SetTag(File,"data"); 
                INI_WriteInt(File,"Password",udb_hash(inputtext)); 
                INI_WriteInt(File,"Cash",0); 
                INI_WriteInt(File,"Admin",0); 
                INI_WriteInt(File,"Kills",0); 
                INI_WriteInt(File,"Deaths",0); 
                INI_Close(File); 
                SetSpawnInfo(playerid,0,0,1214.8846,-1821.6281,13.5943,179.1360,0,0,0,0,0,0); 
                SpawnPlayer(playerid); 
                GivePlayerMoney(playerid, 50000);
                ShowPlayerDialog(playerid, DIALOG_SUCCESS_1, DIALOG_STYLE_MSGBOX,""COL_WHITE"Success!",""COL_GREEN"Distractie placuta! Have fun!","Ok",""); 
            } 
        } 

        case DIALOG_LOGIN: 
        { 
            if ( !response ) return Kick ( playerid ); 
            if( response ) 
            { 
                if(udb_hash(inputtext) == PlayerInfo[playerid][pPass]) 
                { 
                    INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid); 
                    SetSpawnInfo(playerid,0,0,1214.8846,-1821.6281,13.5943,179.1360,0,0,0,0,0,0); 
                    SpawnPlayer(playerid); 
                    ShowPlayerDialog(playerid, DIALOG_SUCCESS_2, DIALOG_STYLE_MSGBOX,""COL_WHITE"Success!",""COL_GREEN"You have successfully logged in!","Ok",""); 
                } 
                else 
                { 
                    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_WHITE"Login",""COL_RED"You have entered an incorrect password.\n"COL_WHITE"Type your password below to login.","Login","Quit"); 
                } 
                return 1; 
            } 
        } 
    } 
    return 1; 
} 

public OnPlayerDisconnect(playerid, reason) 
{ 
    new INI:File = INI_Open(UserPath(playerid)); 
    INI_SetTag(File,"data"); 
    INI_WriteInt(File,"Cash",GetPlayerMoney(playerid)); 
    INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]); 
    INI_WriteInt(File,"Kills",PlayerInfo[playerid][pKills]); 
    INI_WriteInt(File,"Deaths",PlayerInfo[playerid][pDeaths]); 
    INI_Close(File); 
    return 1; 
} 

public OnPlayerDeath(playerid, killerid, reason) 
{ 
   SetSpawnInfo(playerid,0,0,1214.8846,-1821.6281,13.5943,179.1360,0,0,0,0,0,0); 
   SpawnPlayer(playerid); 
   return 1; 
}
and remove giveplayermoney from OnPlayerSpawn


Re: Problem on death. - GabiXx - 23.07.2015

BladeFire, doesn't work.
TenTen if i do what you said i get again the problem when player die, get money.