←  Pluginy

AMXX.pl: Support AMX Mod X i SourceMod

»

Load;Save XP

Zablokowany

  • +
  • -
Ortega - zdjęcie Ortega 13.11.2009

Witam. Chciałbym aby ktoś napisał mi funkcję SaveXP i LoadXP do jednego pliku.
Dla kilku danych: wartosc1[id],wartosc2[id],wartosc3[id],wartosc4[id],wartosc5[id]

public SaveXP(id)
{
    ...
} 

public LoadXP(id)
{
	...
}
Odpowiedz

  • +
  • -
Miczu - zdjęcie Miczu 13.11.2009

Jako, ze nie dales dosc informacji by to zrobic (konkretnie po czym ma szukac gracza by zrobic load, co jest istotne tez przy zapisie), daje przyklad z diablo 5.3f:

public SaveXP(id){
	new name[32];     
	get_user_name(id,name,31);
	
	replace_all(name, 31, " ", "'")
	 
	new vaultkey[64],vaultdata[256]
	format(vaultkey,63,"%s-Dbmod",name)
	format(vaultdata,255,"%i#%i#%i#%i#%i#%i#%i#%i",player_class[id],player_<img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/tongue2.gif' class='bbc_emoticon' alt='xP' />[id],player_lvl[id],player_intelligence[id],player_strength[id],player_point[id],player_agility[id],player_dextery[id])
	nvault_set(g_vault,vaultkey,vaultdata)
	return PLUGIN_HANDLED
} 
    
public LoadXP(id){
	new name[32];     
	get_user_name(id,name,31);
	
	replace_all(name, 31, " ", "'")
	 
	new vaultkey[64],vaultdata[256]
	format(vaultkey,63,"%s-Dbmod",name)
	nvault_get(g_vault,vaultkey,vaultdata,255)
	 
	replace_all(vaultdata, 255, "#", " ")
	
	new playerclass[33], playerxp[33],playerlvl[33],playerintelligence[33],playerstrength[33],playerpoint[33],playeragility[33],playerdextery[33]
	 
	parse(vaultdata, playerclass, 32, playerxp, 32, playerlvl, 32, playerintelligence, 32, playerstrength, 32, playerpoint, 32, playeragility, 32, playerdextery, 32)
	 
	player_class[id] = str_to_num(playerclass)
	player_<img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/tongue2.gif' class='bbc_emoticon' alt='xP' />[id] = str_to_num(playerxp)
	player_lvl[id] = str_to_num(playerlvl)
	player_intelligence[id] = str_to_num(playerintelligence)
	player_strength[id] = str_to_num(playerstrength)
	player_point[id] = str_to_num(playerpoint)
	player_agility[id] = str_to_num(playeragility)
	player_dextery[id] = str_to_num(playerdextery)
	
	player_damreduction[id] = (47.3057*(1.0-floatpower( 2.7182, -0.06798*float(player_agility[id])))/100)
		
	return PLUGIN_HANDLED
}
Odpowiedz

  • +
  • -
Ortega - zdjęcie Ortega 14.11.2009

Znaczy ujmę to tak. Pierwotnie miałem:
public SaveXP(id)
{
	new authid[32]; 
	get_user_authid(id,authid,31); 
	
	new vaultkey[64], vaultdata[64]; 
	
	format(vaultkey,63,"MT2-%s-class",authid); 
	format(vaultdata,63,"%d",PlayerClass[id]); 
	set_vaultdata(vaultkey,vaultdata); 
}
i
public LoadXP(id)
{
	new authid[32]; 
	get_user_authid(id,authid,31); 
	
	new vaultkey[64], vaultdata[64]; 
	
	format(vaultkey,63,"MT2-%s-class",authid); 
	get_vaultdata(vaultkey,vaultdata,63); 
	PlayerClass[id] = str_to_num(vaultdata); 
return PLUGIN_HANDLED
}

Przypuśćmy , że chciałem przerobić coś w stylu właśnie diablo , ale nie do końca wyszło.
public SaveXP(id)
{
	new authid[32]; 
	get_user_authid(id,authid,31); 
	
	new vaultkey[64], vaultdata[64]; 
	
	format(vaultkey,63,"MT2-%s-class",authid); 
	format(vaultdata,63,"%d",PlayerClass[id]); 
	set_vaultdata(vaultkey,vaultdata); 
	
	format(vaultkey,63,"MT2-%s-xp",authid); 
	format(vaultdata,63,"%d",PlayerXP[id]); 
	set_vaultdata(vaultkey,vaultdata); 
	
	format(vaultkey,63,"MT2-%s-level",authid); 
	format(vaultdata,63,"%d",PlayerLevel[id]); 
	set_vaultdata(vaultkey,vaultdata);
	
	format(vaultkey,63,"MT2-%s-ability",authid); 
	format(vaultdata,63,"%i#%i#%i#%i#%i",player_hp[id],player_int[id],player_str[id],player_dex[id],player_point[id]); 
	set_vaultdata(vaultkey,vaultdata);
} 

public LoadXP(id)
{
	new authid[32]; 
	get_user_authid(id,authid,31); 
	
	new vaultkey[64], vaultdata[64]; 
	
	format(vaultkey,63,"MT2-%s-class",authid); 
	get_vaultdata(vaultkey,vaultdata,63); 
	PlayerClass[id] = str_to_num(vaultdata); 
	
	format(vaultkey,63,"MT2-%s-xp",authid); 
	get_vaultdata(vaultkey,vaultdata,63); 
	PlayerXP[id] = str_to_num(vaultdata);   
	
	format(vaultkey,63,"MT2-%s-level",authid); 
	get_vaultdata(vaultkey,vaultdata,63);
	PlayerLevel[id] = str_to_num(vaultdata); 
	
	format(vaultkey,63,"MT2-%s-ability",authid); 
	format(vaultdata,63,"%i#%i#%i#%i#%i",player_hp[id],player_int[id],player_str[id],player_dex[id],player_point[id]); 
	
	new playerhp[33],playerint[33],playerstr[33],playerdex[33],playerpoint[33]
	
	parse(vaultdata, playerhp, 32, playerint, 32, playersrt, 32, playerdex, 32,playerpoint, 32)
	
	player_hp[id] = str_to_num(playerhp)
	player_int[id] = str_to_num(playerint)
	player_str[id] = str_to_num(playerstr)
	player_dex[id] = str_to_num(playerdex)
	player_point[id] = str_to_num(playerpoint)
	
	replace_all(vaultdata, 64, "#", " ")
	
	return PLUGIN_HANDLED
}
Odpowiedz

  • +
  • -
Miczu - zdjęcie Miczu 14.11.2009

Nie lepiej wszystkie dane w 1 formacie jak w diablo? Po co pobierac dane sto razy skoro mozna raz...

Poza tym po co format w loadzie? Patrz na przyklad co dalem wyzej ;>
Odpowiedz

  • +
  • -
Ortega - zdjęcie Ortega 14.11.2009

No właśnie dlatego piszę bo chciałem mieć w 1 pliku wszystko.
A co do formatu w loadzie:

public LoadXP(id){
new name[32];
get_user_name(id,name,31);

replace_all(name, 31, " ", "'")

new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s-Dbmod",name)
format(vaultdata,255,"%i#%i#%i#%i#%i#%i#%i#%i",player_class[id],player_xP[id],player_lvl[id],player_intelligence[id],player_strength[id],player_point[id],player_agility[id],player_dextery[id])
nvault_get(g_vault,vaultkey,vaultdata,255)

replace_all(vaultdata, 255, "#", " ")


Dzięki za pomoc poradziłem sobie jakoś ^^
Odpowiedz
Zablokowany