Spawn Weapons?
#1

How can i make weapons save so they save forever, but on each login they lose 60 ammo, Thanks!
Reply
#2

Just create variables that store the weapon and the ammo.
When player logs in, give him the weapon, with the ammo stored inside the variable -60

You got what I mean?
Reply
#3

No, not really, could you throw me a basic code together?
Reply
#4

What file reading and writing are you using?
Reply
#5

<sscanf>
<YSI\y_ini>
<Zcmd>
Reply
#6

Do you have register/login system in your script?
Reply
#7

yes, i do
Reply
#8

Show it.
Reply
#9

PHP код:
#define DIALOG_REGISTER 1
#define DIALOG_LOGIN 2
#define DIALOG_SUCCESS_1 3
#define DIALOG_SUCCESS_2 4 
PHP код:
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),PATH,playername);
    return 
string;
}
/*Credits to Dracoblue*/
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;

[php]
PHP код:
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 
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;

PHP код:
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(playerid001958.331343.1215.36269.15000000);
                
SpawnPlayer(playerid);
                
ShowPlayerDialog(playeridDIALOG_SUCCESS_1DIALOG_STYLE_MSGBOX,""COL_WHITE"Success!",""COL_GREEN"Great! Your Y_INI system works perfectly. Relog to save your stats!","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);
                
GivePlayerMoney(playeridPlayerInfo[playerid][pCash]);
                
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;

I Use this --> https://sampforum.blast.hk/showthread.php?tid=273088
Reply
#10

pawn Код:
enum pInfo
{
    pPass,
    pCash,
    pAdmin,
    pKills,
    pDeaths,
    pWeap[12],
    pAmmo[12]
}
new PlayerInfo[MAX_PLAYERS][pInfo];
pawn Код:
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]);
    INI_Int("Weap1",PlayerInfo[playerid][pWeap][0]);
    INI_Int("Weap2",PlayerInfo[playerid][pWeap][1]);
    INI_Int("Weap3",PlayerInfo[playerid][pWeap][2]);
    INI_Int("Weap4",PlayerInfo[playerid][pWeap][3]);
    INI_Int("Weap5",PlayerInfo[playerid][pWeap][4]);
    INI_Int("Weap6",PlayerInfo[playerid][pWeap][5]);
    INI_Int("Weap7",PlayerInfo[playerid][pWeap][6]);
    INI_Int("Weap8",PlayerInfo[playerid][pWeap][7]);
    INI_Int("Weap9",PlayerInfo[playerid][pWeap][8]);
    INI_Int("Weap10",PlayerInfo[playerid][pWeap][9]);
    INI_Int("Weap11",PlayerInfo[playerid][pWeap][10]);
    INI_Int("Weap12",PlayerInfo[playerid][pWeap][11]);
    INI_Int("Ammo1",PlayerInfo[playerid][pAmmo][0]);
    INI_Int("Ammo2",PlayerInfo[playerid][pAmmo][1]);
    INI_Int("Ammo3",PlayerInfo[playerid][pAmmo][2]);
    INI_Int("Ammo4",PlayerInfo[playerid][pAmmo][3]);
    INI_Int("Ammo5",PlayerInfo[playerid][pAmmo][4]);
    INI_Int("Ammo6",PlayerInfo[playerid][pAmmo][5]);
    INI_Int("Ammo7",PlayerInfo[playerid][pAmmo][6]);
    INI_Int("Ammo8",PlayerInfo[playerid][pAmmo][7]);
    INI_Int("Ammo9",PlayerInfo[playerid][pAmmo][8]);
    INI_Int("Ammo10",PlayerInfo[playerid][pAmmo][9]);
    INI_Int("Ammo11",PlayerInfo[playerid][pAmmo][10]);
    INI_Int("Ammo12",PlayerInfo[playerid][pAmmo][11]);
    return 1;
}
pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
    for(new i=0; i < 12; i++)
    {
        GetPlayerWeaponData(playerid, i, PlayerInfo[playerid][pWeap][i], PlayerInfo[playerid][pAmmo][i]);
    }
   
    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_WriteInt(File,"Weap1",PlayerInfo[playerid][pWeap][0]);
    INI_WriteInt(File,"Weap2",PlayerInfo[playerid][pWeap][1]);
    INI_WriteInt(File,"Weap3",PlayerInfo[playerid][pWeap][2]);
    INI_WriteInt(File,"Weap4",PlayerInfo[playerid][pWeap][3]);
    INI_WriteInt(File,"Weap5",PlayerInfo[playerid][pWeap][4]);
    INI_WriteInt(File,"Weap6",PlayerInfo[playerid][pWeap][5]);
    INI_WriteInt(File,"Weap7",PlayerInfo[playerid][pWeap][6]);
    INI_WriteInt(File,"Weap8",PlayerInfo[playerid][pWeap][7]);
    INI_WriteInt(File,"Weap9",PlayerInfo[playerid][pWeap][8]);
    INI_WriteInt(File,"Weap10",PlayerInfo[playerid][pWeap][9]);
    INI_WriteInt(File,"Weap11",PlayerInfo[playerid][pWeap][10]);
    INI_WriteInt(File,"Weap12",PlayerInfo[playerid][pWeap][11]);
    INI_WriteInt(File,"Ammo1",PlayerInfo[playerid][pAmmo][0]);
    INI_WriteInt(File,"Ammo2",PlayerInfo[playerid][pAmmo][1]);
    INI_WriteInt(File,"Ammo3",PlayerInfo[playerid][pAmmo][2]);
    INI_WriteInt(File,"Ammo4",PlayerInfo[playerid][pAmmo][3]);
    INI_WriteInt(File,"Ammo5",PlayerInfo[playerid][pAmmo][4]);
    INI_WriteInt(File,"Ammo6",PlayerInfo[playerid][pAmmo][5]);
    INI_WriteInt(File,"Ammo7",PlayerInfo[playerid][pAmmo][6]);
    INI_WriteInt(File,"Ammo8",PlayerInfo[playerid][pAmmo][7]);
    INI_WriteInt(File,"Ammo9",PlayerInfo[playerid][pAmmo][8]);
    INI_WriteInt(File,"Ammo10",PlayerInfo[playerid][pAmmo][9]);
    INI_WriteInt(File,"Ammo11",PlayerInfo[playerid][pAmmo][10]);
    INI_WriteInt(File,"Ammo12",PlayerInfo[playerid][pAmmo][11]);
    INI_Close(File);
    return 1;
}
OnPlayerSpawn
pawn Код:
for(new i=0; i < 12; i++)
{
    GivePlayerWeapon(playerid, PlayerInfo[playerid][pWeap][i], PlayerInfo[playerid][pAmmo][i]);
}
login dialog
pawn Код:
if(udb_hash(inputtext) == PlayerInfo[playerid][pPass])
{
    INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
    GivePlayerMoney(playerid, PlayerInfo[playerid][pCash]);
    for(new i=0; i < 12; i++)
    {
        PlayerInfo[playerid][pAmmo][i] -= 60;
        if(PlayerInfo[playerid][pAmmo][i] < 0) PlayerInfo[playerid][pAmmo][i] = 0;
    }
    ShowPlayerDialog(playerid, DIALOG_SUCCESS_2, DIALOG_STYLE_MSGBOX,""COL_WHITE"Success!",""COL_GREEN"You have successfully logged in!","Ok","");
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)