GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: Tomee - 2011. augusztus 14. - 13:24:30

Cím: Fegyvermentés
Írta: Tomee - 2011. augusztus 14. - 13:24:30
Hello!
Szükségem lenne egy scriptre ami, kilépésnél elmenti a játékos összes fegyverét, majd amikor visszalép akkor megkapja õket.
Cím: Fegyvermentés
Írta: kadaradam - 2011. augusztus 14. - 13:30:04
dudbal:[pawn]#include <a_samp>
#include <dudb>
public OnGameModeInit() SendRconCommand(\"exit\");
public OnPlayerSpawn(playerid) LoadWeapons(playerid);
public OnFilterScriptInit() printf(\"Weaponsave FS loaded!\");
public OnPlayerDisconnect(playerid, reason) SaveWeapons(playerid);
stock LoadWeapons(playerid)
{
    new pname[MAX_PLAYER_NAME];
    if(!GetPlayerName(playerid, pname, MAX_PLAYER_NAME)) return false;
    if(!udb_Exists(pname)) udb_Create(pname, \"\");
    for(new wep[8], amm[6], i; i < 13; i++)
    {
        format(amm, sizeof amm, \"Ammo%d\", i);
        format(wep, sizeof wep, \"Weapon%d\", i);
        GivePlayerWeapon(playerid, dUserINT(pname).(wep), dUserINT(pname).(amm));
    }
    return true;
}
stock SaveWeapons(playerid)
{
    new pname[MAX_PLAYER_NAME];
    if(!GetPlayerName(playerid, pname, MAX_PLAYER_NAME)) return false;
    if(!udb_Exists(pname)) udb_Create(pname, \"\");
    for(new wep[8], amm[6], i, cwep, camm; i < 13; i++)
    {
        format(amm, sizeof amm, \"Ammo%d\", i);
        format(wep, sizeof wep, \"Weapon%d\", i);
        GetPlayerWeaponData(playerid, i, cwep, camm);
        dUserSetINT(pname).(amm, camm);
        dUserSetINT(pname).(wep, cwep);
    }
    return true;
}[/pawn]
Cím: Fegyvermentés
Írta: Tomee - 2011. augusztus 14. - 13:42:35
Lehet én csinálok mindig valamit rosszul, de ez már a 3. amivel próbálkozok és nem megy.
Amikor kilépek nem menti el az adatokat.
És mellette, hogy oldhatnám meg, hogy egy Fegyverek, nevû mappába mentse?
Cím: Fegyvermentés
Írta: kadaradam - 2011. augusztus 14. - 14:12:05
Meg kell adni hogy hova mentse,és honnan töltse be(udb_Create(pname, \"\");),de ha nem jó,itt van egy dinis:
[pawn]#include <a_samp>
#include <dini>
new PlayerWeapons[12][MAX_PLAYERS];
new PlayerAmmo[12][MAX_PLAYERS];
new file[40];
public OnPlayerConnect(playerid)
{
     for(new w=0;w<13;w++)
     {
         PlayerWeapons[w][playerid]=0;
         PlayerAmmo[w][playerid]=0;
     }
format(file,sizeof(file),\"%s.Weapons.txt\",oGetPlayerName(playerid));
if(!dini_Exists(file))
{
   printf(\"no such file \'%s\'? created...\", file);
   dini_Create(file);
}
return 1;
}
public OnPlayerDisconnect(playerid)
{
    for(new weap=0;weap<13;weap++)
    {
        GetPlayerWeaponData(playerid,weap,PlayerWeapons[weap][playerid],PlayerAmmo[weap][playerid]);
        format(file,sizeof(file),\"%s.Weapons.txt\",oGetPlayerName(playerid));
        new slotname[20];
        format(slotname,sizeof(slotname),\"Slot%d\",weap);
   dini_IntSet(file,slotname,PlayerWeapons[weap][playerid]);
        new slotammo[20];
        format(slotammo,sizeof(slotammo),\"AmmoSlot%d\",weap);
   dini_IntSet(file,slotammo,PlayerAmmo[weap][playerid]);
    }
return 1;
}
public OnPlayerSpawn(playerid)
{
    for(new weap=0;weap<13;weap++)
    {
        format(file,sizeof(file),\"%s.Weapons.txt\",oGetPlayerName(playerid));
        new slotname[20];
        format(slotname,sizeof(slotname),\"Slot%d\",weap);
        new slotammo[20];
        format(slotammo,sizeof(slotammo),\"AmmoSlot%d\",weap);
        PlayerWeapons[weap][playerid] = strval(dini_Get(file, slotname));
        PlayerAmmo[weap][playerid] = strval(dini_Get(file, slotammo));
   GivePlayerWeapon(playerid, PlayerWeapons[weap][playerid], PlayerAmmo[weap][playerid]);
    }
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
    for(new i=0;i<13;i++)
    {
        GetPlayerWeaponData(playerid,i,PlayerWeapons[playerid],PlayerAmmo[playerid]);

        format(file,sizeof(file),\"%s.Weapons.txt\",oGetPlayerName(playerid));


        new slotname[20];


        format(slotname,sizeof(slotname),\"Slot%d\",i);


   dini_IntSet(file,slotname,PlayerWeapons
[playerid]);

        new slotammo[20];


        format(slotammo,sizeof(slotammo),\"AmmoSlot%d\",i);


   dini_IntSet(file,slotammo,PlayerAmmo
[playerid]);

    }


return 1;


}


stock oGetPlayerName(playerid)


{


new name[MAX_PLAYER_NAME];


GetPlayerName(playerid,name,sizeof(name));


return name;


}[/pawn]
Cím: Fegyvermentés
Írta: Tomee - 2011. augusztus 16. - 21:23:56
Megoldottam azzal, hogy másodpercenként menti a játékosnál lévõ fegyvereket.
Csak még azt kellene megoldani, hogy  Fegyverek nevû mappába mentse.
Én így csináltam
 
if(!udb_Exists(pname)) udb_Create(pname, \"Fegyverek/\");

 
csak éppen nem jó.
Cím: Fegyvermentés
Írta: Tomee - 2011. augusztus 16. - 22:38:37
Köszönöm.