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: Mokus - 2013. Augusztus 02. - 10:32:45

Cím: Fegyvermentés enum
Írta: Mokus - 2013. Augusztus 02. - 10:32:45
Sziasztok valaki leírná nekem hogyan tudok fegyvereket is menteni enumba?Arról lenne szó hogy kilépéskor menti a fájlba külön-külön a lõszereket.
PL:
 

AK=1000
M4=500

 
és belépéskor innen tölti vissza és oda adja fegyvereket az elmentett lõszerrel.
Köszönöm elõre is :)
Cím: Fegyvermentés enum
Írta: dipsnark - 2013. Augusztus 02. - 12:19:53
Szia!
Van egy ilyen függvény:
 
GetPlayerWeaponData(playerid, slot, &weapons, &ammo)

 
Létrehozol változókat(vagy egy tömböt) a fegyver mentéséhez.
 
new fegyverek[13][2]

 
A 13 a slotokat jelöli, a 2 pedig a fegyver típusát.
 
for(new i=0;i<13;i++)
{
GetPlayerWeaponData(playerid, i, fegyverek[0], fegyverek[1]);
}

 
Itt lekérted egy for ciklussal a játékos fegyvereit a tömbbe. Egy példa:
fegyverek[5][0] = Itt a 0. cella egyenlõ vagy 30-al vagy 31-el, mivel az 5. slot az AK vagy az M4-nek van.
fegyverek[5][1] = Itt az 1. cellában van a lõszer eltárolva.
Ezt a tömböt lemented ahogyan menteni szeretsz(ha szeretnéd tudok írni MySQL példát).
Betöltés:
Nagyon egyszerû. Lekéred a lementett értékeket adatbetöltésnél változókba vagy tömbbe. Ezután mikor a játékos lespawnolt:
 
ResetPlayerWeapons(playerid);
GivePlayerWeapon(playerid, fegyverid, loszer);

 
Értelemszerûen a fegyerid-t és a lõszert a saját változóiddal helyettesítsd. A ResetPlayerWeapons lehet, hogy elhagyható, én beleraktam az enyémbe, mivel random kapott néha a játékos lõszereket(máig nem tudom miért, de ez megoldotta)
Cím: Fegyvermentés enum
Írta: BoOy - 2013. Augusztus 02. - 18:20:07
#include <a_samp>
#include <zcmd>
#include <dini>
public OnFilterScriptInit()
{
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
CMD:elment(playerid)
{
new name[MAX_PLAYER_NAME],string[128],string2[128];
new weapon[13][2];
GetPlayerName(playerid,name,sizeof(name));
format(string,sizeof(string),\"%s.ini\",name);
if(!dini_Exists(string))
{
    dini_Create(string);
for(new i;i<13;i++)
{
   GetPlayerWeaponData(playerid, i, weapon[0], weapon[1]);
    format(string2,sizeof(string2),\"%d\",weapon[0]);
   dini_IntSet(string,string2,weapon[1]);
}
}
else
{
for(new i;i<13;i++)
{
   GetPlayerWeaponData(playerid, i, weapon[0], weapon[1]);
    format(string2,sizeof(string2),\"%d\",weapon[0]);
   dini_IntSet(string,string2,weapon[1]);
}
}
}
CMD:betolt(playerid)
{
new name[MAX_PLAYER_NAME],string[128],string2[12];
new Loszer[100];
GetPlayerName(playerid,name,sizeof(name));
format(string,sizeof(string),\"%s.ini\",name);
if(dini_Exists(string))
{
for(new i;i<100;i++)
{
    format(string2,sizeof(string2),\"%d\",i);
   Loszer = dini_Int(string,string2);
   if(Loszer == 0) continue;
   GivePlayerWeapon(playerid,i,Loszer);
}
}
}

 
Úgy lesz a fájba hogy ID=Loszer vagyis pl.:
12=4543