tach, wollte fragen wie man die waffen einfach abspeichert.
edfinieren tu ich sie selbst.
bin mal uff leute, hoffe jemand antwortet. danke.
MfG
tach, wollte fragen wie man die waffen einfach abspeichert.
edfinieren tu ich sie selbst.
bin mal uff leute, hoffe jemand antwortet. danke.
MfG
Oben:
Bei OnPlayerConnect(playerid):
Bei SetPlayerSpawn:
Bei OnPlayerDisconnect(playerid, reason):
Unten:
// Waffen beim Login
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
SaveWaffen(playerid)
{
new i, path[50], string[128], Waffe, Munition;
path = GetPlayerFormattedName(playerid);
if (!dini_Exists(path)) dini_Create(path);
for (i=0; i<13; i++)
{
GetPlayerWeaponData(playerid,i,Waffe,Munition);
format(string,sizeof(string),"Waffe - %d",i);
dini_IntSet(path,string,Waffe);
format(string,sizeof(string),"Munition - %d",i);
dini_IntSet(path,string,Munition == 65535 ? 0 : Munition);
}
}
forward LoadWaffen(playerid);
public LoadWaffen(playerid)
{
new i, path[50], string[128], Waffe, Munition;
path = GetPlayerFormattedName(playerid);
ResetPlayerWeapons(playerid);
for (i=0; i<13; i++)
{
format(string,sizeof(string),"Waffe - %d",i);
Waffe = dini_Int(path,string);
format(string,sizeof(string),"Munition - %d",i);
Munition = dini_Int(path,string);
GivePlayerWeapon(playerid,Waffe,Munition);
}
HatWaffen[playerid] = true;
}
GetPlayerFormattedName(playerid)
{
new name[24], full[50];
GetPlayerName(playerid,name,sizeof(name));
format(full,sizeof(full),"Waffen/%s.txt",name);
return full;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Alles anzeigen
hm, ich wollte es eher meiner regyster system anpassen, keine neue datei erstellen.
trotzdem schonmal Danke.
Im übringem, benutze ich jake's Regyster System (zombie.modder's "new" Regyster system, seite 8 oder so.)
wie müsste ich es dann umbauen?
denn momentan wird das adminleve, die tote, die morde & das geld gespeichert.
sry, ich habe noch nie eine neue variable ins regy sys eingefügt^^
Ich hätte es wie die anderen gemacht und GetPlayerWeapon
gemacht
ok ich versuchs mal
wenn es nicht funktioniert melde ich mich mit einem "//EDIT:".
also kurzes EDIT,
wie kann ich alle slots auswählen?
sodas man mit "GetPlayerWeaponData(playerid," alle slots etc.
auswählen kann. ich möchte jetzt nicht 10tausend zeilen nur für die waffen machen. (die slots xD)
danke schonmal!
so sollte es gehen oder? habs ausm wiki:
[...]
format(var, 32, "Tode=%d\n",PlayerInfo[playerid][pDeaths]);fwrite(hFile, var);
new weapons[13][2];
for (new i = 0; i < 13; i++)
{
PlayerInfo[playerid][pWeapons] = GetPlayerWeaponData(playerid, i, weapons[i][0], weapons[i][1]);
}
format(var, 32, "Waffen=%d\n",PlayerInfo[playerid][pWeapons]);fwrite(hFile, var);
[...]
danke >_>
wie würdest du es machen?
bitte helf' mir.
so, bin jetzt mit dem definieren (bis auf das "GETPLAYERWEAPONS (ich weiß gibt es nicht ^.^)" komplett fertig.
bitte jetzt um hilfe.
ich würds in eine sql datenbank schreiben xD
och nee nicht wieder wieder MYSQL.
SAMPKILLER wollte es mir mal beibringen.
nein, aber danke^^
(Danke, aber nein Oo)
also wie würdest du die waffen (komplette waffen + ammo) aufrüfen also "GETTEN" oder "BEKOMMEN"?
mit getplayerweapon liest du aus welche waffen er bei sich trägt und mit giveplayerweapon gibst du ihm die waffen dann wieder.
ich habe GetPlayerWeapon(s) nicht.
holy macarony what da hell?
kein error.
trotzdem steht es nicht bei der a_player.inc oder wie die heißt.
sry^^
so ...
also ich habe
public OnPlayerUpdate(playerid)
{
if(IsPlayerConnected(playerid))
{
if(gPlayerLogged[playerid])
{
new string3[32];
new pname3[MAX_PLAYER_NAME];
GetPlayerName(playerid, pname3, sizeof(pname3));
format(string3, sizeof(string3), "/Spieler/%s.ini", pname3);
new File: hFile = fopen(string3, io_write);
if (hFile)
{
new var[32];
format(var, 32, "Passwort=%s\n", PlayerInfo[playerid][pPassword]);fwrite(hFile, var);
format(var, 32, "Adminlevel=%d\n", PlayerInfo[playerid][pAdmin]);fwrite(hFile, var);
PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);
format(var, 32, "Morde=%d\n",PlayerInfo[playerid][pKills]);fwrite(hFile, var);
format(var, 32, "Tode=%d\n",PlayerInfo[playerid][pDeaths]);fwrite(hFile, var);
format(var, 32, "Waffen=%d\n",PlayerInfo[playerid][pWeapons]);fwrite(hFile, var);
format(var, 32, "Geld=%d\n",PlayerInfo[playerid][pCash]);fwrite(hFile, var);
fclose(hFile);
}
}
}
return 1;
}
,
public Einloggen(playerid,password[])
{
new name2[MAX_PLAYER_NAME];
new string2[64];
GetPlayerName(playerid, name2, sizeof(name2));
format(string2, sizeof(string2), "/Spieler/%s.ini", name2);
new File: UserFile = fopen(string2, io_read);
if (UserFile)
{
new PassData[256];
new valtmp[256], keytmp[256];
fread( UserFile , PassData , sizeof( PassData ) );
keytmp = ini_GetKey( PassData );
if( strcmp( keytmp , "Passwort" , true ) == 0 )
{
valtmp = ini_GetValue( PassData );
strmid(PlayerInfo[playerid][pPassword], valtmp, 0, strlen(valtmp)-1, 255);
}
if (strcmp(PlayerInfo[playerid][pPassword], password, true) == 0)
{
new key[ 256 ],val[ 256 ];
new Data[ 256 ];
while ( fread( UserFile , Data , sizeof( Data ) ) )
{
key = ini_GetKey( Data );
if( strcmp( key , "Adminlevel" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pAdmin] = strval( val ); }
if( strcmp( key , "Morde" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pKills] = strval( val ); }
if( strcmp( key , "Tode" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pDeaths] = strval( val ); }
if( strcmp( key , "Waffen" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pWeapons] = strval( val ); }
if( strcmp( key , "Geld" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pCash] = strval( val ); }
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid,PlayerInfo[playerid][pCash]);
}
fclose(UserFile);
gPlayerLogged[playerid] = 1;
gPlayerAccount[playerid] = 1;
GetPlayerName(playerid, name2, sizeof(name2));
format(string2, sizeof(string2), "Welcome %s, you have successful logged in!", name2);
SendClientMessage(playerid, COLOR_GOLD,string2);
SpawnPlayer(playerid);
}
else
{
SendClientMessage(playerid, RED, "The password is wrong!");
fclose(UserFile);
}
}
return 1;
}
,
if (strcmp(cmd, "/Register", true)==0)
{
new string[128];
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GOLD, "USE: /Register [PASSWORD]");
return 1;
}
if (gPlayerAccount[playerid] == 1)
{
SendClientMessage(playerid, RED, "Your Account is already exist!");
return 1;
}
strmid(PlayerInfo[playerid][pPassword], tmp, 0, strlen(cmdtext), 255);
Encrypt(PlayerInfo[playerid][pPassword]);
GetPlayerName(playerid, playername, sizeof(playername));
format(string, sizeof(string), "/Spieler/%s.ini", playername);
new File: file = fopen(string, io_read);
if (file)
{
SendClientMessage(playerid, RED, "Your Account is already exist!");
fclose(file);
return 1;
}
new File:hFile;
hFile = fopen(string, io_append);
new var[32];//
format(var, 32, "Passwort=%s\n", PlayerInfo[playerid][pPassword]);fwrite(hFile, var);
format(var, 32, "Morde=%d\n",PlayerInfo[playerid][pKills]);fwrite(hFile, var);
format(var, 32, "Tode=%d\n",PlayerInfo[playerid][pDeaths]);fwrite(hFile, var);
new weaponid;
weaponid = GetPlayerWeapon(playerid);
format(var, 32, "Waffen=%d\n",PlayerInfo[playerid][pWeapons]);fwrite(hFile, var);
PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);
format(var, 32, "Geld=%d\n",PlayerInfo[playerid][pCash]);fwrite(hFile, var);
fclose(hFile);
Einloggen(playerid,PlayerInfo[playerid][pPassword]);
return 1;
}
also wie lade ich nun die waffen?
ist das auch richtig? XD
//EDIT: Sry leute, der pawn code verschiebt sich immer xD
Stas wieso machst du ein timer?
if (!HatWaffen[playerid])SetTimerEx("LoadWaffen",250,false,"i",playerid);
ein einfacher funktionsaufruf würde doch reichen oder nicht?
Weil das bei mir später als eine andere Funktion geladen werden soll.
also kann mir niemand helfen?
Speicher die Waffen einfach mit ins Profil ab?
Deagle=Muni;
MP5=Muni; etc .. so wie die anderen Stats
//============================//ICH MACHE DAFÜR NEN NEUEN TREAD, DAS HAT DAMIT NICHT VIEL ZU TUN^^//===========================//