Здравейте, имам идентичен плъгин, който обаче запазва една единствена стойност и не ползвам parse, а str_to_num() при Load() и num_to_str() при client_disconnected() и там абсолютно никога (10 год.) не е правило проблеми или анулирания.
Ако искам да запазя повече параметри обаче, се получава анулиране на запазените стойности и това е нежелано, не мога да го хвана при какви обстоятелства се получава, при retry сейва ако съм правил промени, т.е. ако примерно клиента избира "1 0 0" или "1 1 1" и т.н.; при смяна на мап ту сейва, ту анулира всичките 3 на 0; по подразбиране са "1 1 0" и някой дори и да не го промени е възможно да му се анулират...
5 мапа подред сейва на 6тия ще анулира на произволно на някого (тест с 3ма в игра и някой остава с дефаулт, някой променя, нерелевантно от това се получава анулиране на 10тия retry (даже не винаги) или на 7мия мап примерно..)
Глобалните масиви могат да имат само 2 стойности, или 0 или 1.
Код за потвърждение: Избери целия код
#include <amxmodx>
#include <fvault>
#include <zpclass>
new const g_vault[] = "personal"
new g_cdown[33], g_usnd[33], g_wide[33]
public plugin_init()
register_plugin("save personaliz.", "1.0", "h3LLm0sS")
public client_putinserver(id)
{
//set_task(0.1, "Load", id)
Load(id)
//set_task(300.0, "Save", id, _, _, "b")
}
public Load(id)
{
if(is_user_hltv(id) || is_user_bot(id) || !is_user_connected(id))
return
new data[6], name[32]
get_user_name(id, name, charsmax(name))
if(fvault_get_data(g_vault, name, data, charsmax(data)))
{
new tempvar1[10], tempvar2[10], tempvar3[10]
parse(data, tempvar1, charsmax(tempvar1), tempvar2, charsmax(tempvar2), tempvar3, charsmax(tempvar3))
g_cdown[id]=str_to_num(tempvar1)
g_usnd[id]=str_to_num(tempvar2)
g_wide[id]=str_to_num(tempvar3)
setdata(id)
}
}
public client_disconnected(id)
{
getdata(id)
new data[6], name[32]
get_user_name(id, name, charsmax(name))
formatex(data, charsmax(data), "%d %d %d", g_cdown[id], g_usnd[id], g_wide[id])
fvault_set_data(g_vault, name, data)
}
public getdata(id)
{
g_cdown[id]=zp_get_cdown1(id)
g_usnd[id]=zp_get_usound(id)
g_wide[id]=zp_get_fov(id)
}
public setdata(id)
{
if(!g_cdown[id])
zp_toggle_cdown1(id)
if(!g_usnd[id])
zp_ultimate_toggle(id)
if(g_wide[id])
zp_human_fov(id)
}