Проблема с сохранением Аммо Паков на Зомби сервере

AMD_Ryzen

Участник
Сообщения
33
Реакции
13
Ошибка
Не сохраняются аммо на разных клиентах игры
AMX Mod X
Amx Mod X version 1.9.0.5294
Билд сервера
Protocol version 48
Exe version 1.6.3.7/Stdio (cstrike)
ReHLDS version: 3.14.0.857-dev
Build date: 19:53:00 Mar 27 2025 (4002)
ReGameDLL
ReGameDLL version: 5.28.0.756-dev
Build date: 19:20:12 Mar 27 2025
Metamod версия
Metamod-r v1.3.0.149, API (5:13)
Metamod-r build: 11:31:13 Apr 23 2024
Metamod плагины
SafeNameAndChat   RUN   -    safenameandchat.dll    v1.1         ini  ANY   ANY  
Reunion RUN - reunion_mm.dll v0.1.0.92c ini Start Never
Rechecker RUN - rechecker_mm.dll v2.5 ini Chlvl ANY
ReAuthCheck RUN - reauthcheck_mm.dll v0.1.6 ini Start Never
VoiceTranscoder RUN - voicetranscoder.dll v2017RC5 ini ANY ANY
AMX Mod X RUN - amxmodx_mm.dll v1.9.0.5294 ini Start ANY
Print Center Fix RUN - printcenterfix_mm.dll v2.0.1 ini ANY ANY
YaPB RUN - yapb.dll v4.5.1170 ini Chlvl ANY
ReSemiclip RUN - resemiclip_mm.dll v2.4.3 ini Chlvl ANY
HitBox Fix RUN - hitbox_fix_mm.dll v1.1.5 ini Start ANY
Hide Cvars RUN - hidecvars_amxx.dll v1.0 pl6 ANY ANY
FakeMeta RUN - fakemeta_amxx.dll v1.9.0.5294 pl6 ANY ANY
whois RUN - whois_amxx.dll v0.2.270 pl6 ANY ANY
Ham Sandwich RUN - hamsandwich_amxx.dll v1.9.0.5294 pl6 ANY ANY
Fun RUN - fun_amxx.dll v1.9.0.5294 pl6 ANY ANY
CStrike RUN - cstrike_amxx.dll v1.9.0.5294 pl6 ANY ANY
Engine RUN - engine_amxx.dll v1.9.0.5294 pl6 ANY ANY
Список плагинов
AMXX BanCfg             0.95        Safety1st         amx_bancfg.amxx  running  
SubnetBan 2.2 Lev subnetban.amxx running
Admin Base 1.9.0.5294 AMXX Dev Team admin.amxx running
Admin Commands 1.9.0.5294 AMXX Dev Team admincmd.amxx running
Menus Front-End 1.9.0.5294 AMXX Dev Team menufront.amxx running
Commands Menu 1.9.0.5294 AMXX Dev Team cmdmenu.amxx running
Players Menu 1.9.0.5294 AMXX Dev Team plmenu.amxx running
Maps Menu 1.9.0.5294 AMXX Dev Team mapsmenu.amxx running
Plugin Menu 1.9.0.5294 AMXX Dev Team pluginmenu.amxx running
Anti Flood 1.9.0.5294 AMXX Dev Team antiflood.amxx running
Admin Votes 1.9.0.5294 AMXX Dev Team adminvote.amxx running
NextMap 1.9.0.5294 AMXX Dev Team nextmap.amxx running
Nextmap Chooser 1.9.0.5294 AMXX Dev Team mapchooser.amxx running
TimeLeft 1.9.0.5294 AMXX Dev Team timeleft.amxx running
Pause Plugins 1.9.0.5294 AMXX Dev Team pausecfg.amxx running
Stats Configuration 1.9.0.5294 AMXX Dev Team statscfg.amxx running
Models Replacement 0.0.2 ConnorMcLeod | V models_replacem running
[ZP] Can Auto Save Amm 0.1.0 ZombArena.Ru zp_save.amxx running
[ZP]knife Menu 2.2 Mr.H zp_addon_knife. running
[ZP] Countdown 1.0 Lacosta zp_countdown.am running
[ZP] Addon: Auto Healt 1.1 Dias ZP_Addon_Auto_H running
[ZP] DHUD Informer 0.0.0.1 Andrei zp_score.amxx running
Block grande info 1.0 neygomon BlockGrenadeInf running
[ZP] Buy Health New 2.0 FINAL xrekuy zp_extra_health running
[ZP] Extra: Anti-Infec 1.0 MeRcyLeZZ zp_extra_human_ running
[ZP] Kill Rewards 1.0 Doomsday zp_kill_reward. running
[ ZP ] Nemesis skill Shurik07 0.1 zp_nemskill.amx running
[ZP]: Zombie Health 1.0 Yakess ZP_Zombie_Healt running
[ZP] LaserMine 2.8.2 SandStriker / Sh zp_lasermine_28 debug
WinTeam Sprite 0.0.8 Some Scripter WinTeam_Sprite. running
[ZP] Addon : No Engine 1.1.0 schmurgel1983 OT6POC.amxx running
[ZP] Survivor HP 1.0 ASSOM zp_addons_survi debug
[ZP] ZP++ Ice Cube 1.0 Dare(Gyiove) zp50_ice_cube.a running
Hide Status Icons on H 0.0 Leo_[BH] hide_hud_status running
The Smartest 1.0 BaHeK The_Smartest.am running
[DF] Plague: Emotions 1.0 DARKFEAL DF_emotions.amx running
[ZP] Addon: Death Spri 1.4 eXcalibur.007 zp_addon_death_ running
[ZP] Core/Engine ZP Dev Team zp50_core.amxx running
[AMXX] Settings API 1.0 MeRcyLeZZ amx_settings_ap running
[CS] Player Models API 1.2 WiLS cs_player_model running
[CS] Teams API 1.2 WiLS cs_teams_api.am running
[CS] MaxSpeed API 1.0 WiLS cs_maxspeed_api running
[CS] Weapon Models API 1.1 WiLS cs_weap_models_ running
[CS] Weapons Restrict 0.4 WiLS cs_weap_restric running
[CS] Ham Hooks for Bot 1.0 WiLS cs_ham_bots_api running
[ZP] Class: Zombie ZP Dev Team zp50_class_zomb running
[ZP] Class: Human ZP Dev Team zp50_class_huma running
[ZP] Class: Nemesis ZP Dev Team zp50_class_neme running
[ZP] Class: Survivor Leo_[BH] & ZP De zp50_class_surv running
[CSO:Ghost Zombie] 1.4 HoRRoR, Fry!,tER cso_zclass_ghos running
[CSO:Shaman Zombie] 0.1 meTaLiCroSS cso_shaman_v1.a running
[ZP] Class: Big 1.0 :) / Slimes zp_class_heavy. debug
[ZP] Class: Human: Cla ZP Dev Team zp50_class_huma running
[ZP] Class: Human: Rap ZP Dev Team zp50_class_huma running
[ZP] Human Armor ZP Dev Team zp50_human_armo running
[ZP] Game Modes Manage ZP Dev Team zp50_gamemodes. running
[ZP] Game Mode: Infect ZP Dev Team zp50_gamemode_i paused
[ZP] Game Mode: Multip ZP Dev Team zp50_gamemode_m paused
[ZP] Game Mode: Swarm ZP Dev Team zp50_gamemode_s running
[ZP] Game Mode: Nemesi ZP Dev Team zp50_gamemode_n paused
[ZP] Game Mode: Surviv ZP Dev Team zp50_gamemode_s paused
[ZP] Game Mode: Plague ZP Dev Team zp50_gamemode_p paused
[ZP] Items Manager ZP Dev Team zp50_items.amxx running
[ZP] Items Manager: Am ZP Dev Team zp50_items_ammo running
[ZP] Item: Weapons ZP Dev Team zp50_item_weapo running
[ZP] Item: Antidote ZP Dev Team zp50_item_antid running
[ZP] Item: Zombie Madn ZP Dev Team zp50_item_zombi running
[ZP] Admin Commands ZP Dev Team zp50_admin_comm running
[ZP] Admin Menus ZP Dev Team zp50_admin_menu running
[ZP] Admin Models ZP Dev Team zp50_admin_mode running
[ZP] Custom Buy Menus ZP Dev Team zp50_buy_menus. running
[ZP] Buyzones ZP Dev Team zp50_buy_zones. running
[ZP] Rewards: Ammo Pac ZP Dev Team zp50_rewards_am running
[ZP] Rewards: Frags & Leo_[BH] & ZP De zp50_rewards_fr running
[ZP] Zombie Features ZP Dev Team zp50_zombie_fea running
[ZP] Zombie Sounds ZP Dev Team zp50_zombie_sou running
[ZP] Zombie Damage ZP Dev Team zp50_zombie_dam running
[ZP] Human Unlimited A ZP Dev Team zp50_human_ammo running
[ZP] Flashlight ZP Dev Team zp50_flashlight running
[ZP] Nightvision Leo_[BH] & ZP De zp50_nightvisio running
[ZP] Leap/Longjump ZP Dev Team zp50_leap.amxx running
[ZP] Pain Shock Free ZP Dev Team zp50_painshockf running
[ZP] Knockback ZP Dev Team zp50_knockback. running
[ZP] Weapon Drop/Strip ZP Dev Team zp50_weapon_dro running
[ZP] Effects: Infect ZP Dev Team zp50_effects_in running
[ZP] Effects: Cure ZP Dev Team zp50_effects_cu running
[ZP] Effects: Lighting ZP Dev Team zp50_effects_li running
[ZP] Ambience Effects ZP Dev Team zp50_ambience_e running
[ZP] Ambience Sonds ZP Dev Team zp50_ambience_s running
[ZP] Main Menu ZP Dev Team zp50_main_menu. running
[ZP] Objective Remover ZP Dev Team zp50_objective_ running
[ZP] Gameplay Fixes ZP Dev Team zp50_gameplay_f running
[ZP] Team Scoring ZP Dev Team zp50_team_scori running
[ZP] HUD Information ZP Dev Team zp50_hud_info.a running
[ZP] Server Browser In ZP Dev Team zp50_serverbrow running
[ZP] Ammo Packs ZP Dev Team zp50_ammopacks. running
[ZP] Grenade: Fire Leo_[BH] & ZP De zp50_grenade_fi running
[ZP] Grenade: Frost Leo_[BH] & ZP De zp50_grenade_fr running
[ZP] Grenade: Flare Leo_[BH] & ZP De zp50_grenade_fl running
[ZP] ZP 4.3 Subplugin ZP Dev Team zp50_zp43_compa running
Исходный код плагина
C-подобный:
#include <amxmodx>
#include <fakemeta>
#include <zombieplague>
#include <nvault>

#define PLUGIN	"[ZP] Can Auto Save Ammo"
#define VERSION	"0.1.0"
#define AUTHOR	"ZombArena.Ru"

new g_save, g_ammo[33], g_ammo_can_save[33]
new cvar_save_in

#define MAX_SAVE 10000 //can save....

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)

	register_event("DeathMsg","event_deathmsg","a")
	register_forward(FM_PlayerPreThink, "fw_PlayerPreThink")

	cvar_save_in = register_cvar("zp_ammo_save_in", "2")			// 0 = name / 1 = ip / 2 = steam id

	g_save = nvault_open("g_ammo_save")
}

// Save Ammo
public zp_user_infected_post(id, infector)
{
	if (g_ammo_can_save[infector])
		Save_Ammo_date(infector)
	
	if (g_ammo_can_save[id])
		Save_Ammo_date(id)
}

public zp_extra_item_selected(id, itemid)
{
	if (g_ammo_can_save[id])
		Save_Ammo_date(id)
}

public event_deathmsg()
{
	new killer = read_data(1)
	new victim = read_data(2)

	if (!killer && !victim)
		return PLUGIN_CONTINUE;

	if (g_ammo_can_save[killer])
		Save_Ammo_date(killer)
			
	if (g_ammo_can_save[victim])
		Save_Ammo_date(victim)

	return PLUGIN_CONTINUE;
}

public fw_PlayerPreThink(id)
{
	if (g_ammo_can_save[id])
	{
		new ammo_packs = zp_get_user_ammo_packs(id)
		g_ammo[id] = ammo_packs
	}

	return FMRES_IGNORED;
}

public client_disconnected(id)
{
	if(g_ammo_can_save[id])
		Save_Ammo_date(id)
}

public client_putinserver(id)
	set_task(2.0, "now_can_save", id)

public now_can_save(id)
{
	Load_Ammo_date(id)
	set_task(0.5, "can_save_true", id)
}

public can_save_true(id)
	g_ammo_can_save[id] = true

public Save_Ammo_date(id)
{
	new vaultkey[64], vaultdata[256]

	switch (get_pcvar_num(cvar_save_in))
	{
		case 0:
		{
			new name[33];
			get_user_name(id,name,32)
			
			format(vaultkey, 63, "%s-/", name)
		}
		case 1:
		{
			new player_ip[33]
			get_user_ip(id, player_ip, 32);

			format(vaultkey, 63, "%s-/", player_ip)
		}
		case 2:
		{
			new AuthID[33];
			get_user_authid(id, AuthID, 32);
			
			formatex(vaultkey, 64, "%s-/", AuthID);
		}
	}

	format(vaultdata, 255, "%i#", g_ammo[id])
	
	nvault_set(g_save, vaultkey, vaultdata)
	return PLUGIN_CONTINUE;
}

public Load_Ammo_date(id)
{
	new vaultkey[64], vaultdata[256]

	switch (get_pcvar_num(cvar_save_in))
	{
		case 0:
		{
			new name[33];
			get_user_name(id,name,32)
			
			format(vaultkey, 63, "%s-/", name)
		}
		case 1:
		{
			new player_ip[33]
			get_user_ip(id, player_ip, 32);

			format(vaultkey, 63, "%s-/", player_ip)
		}
		case 2:
		{
			new AuthID[33];
			get_user_authid(id, AuthID, 32);
			
			formatex(vaultkey, 64, "%s-/", AuthID);
		}
	}

	format(vaultdata, 255, "%i#", g_ammo[id])
	
	nvault_get(g_save, vaultkey, vaultdata, 255)
	replace_all(vaultdata, 255, "#", " ")
	
	new playammo[32]
	parse(vaultdata, playammo, 31)
	g_ammo[id] = str_to_num(playammo)
	
	set_ammo(id)
	
	return PLUGIN_CONTINUE;
}

public set_ammo(id)
{
	if (g_ammo[id] > MAX_SAVE)
	{
		zp_set_user_ammo_packs(id, MAX_SAVE)
		g_ammo[id] = MAX_SAVE
	}
	else
		zp_set_user_ammo_packs(id, g_ammo[id])
	client_print(id, print_chat, "У вас на счету %d аммо [максимально 9999 аммо]", g_ammo[id])
}
Всем доброго времени суток. Недавно столкнулся с такой проблемой. Зашел на сервер с одного клиента игры ( пусть это будет CS №1 ), у меня 500 аммо паков. Зашел с другого клиента игры ( CS №2 ), у меня 500 аммо. Зашел еще с другого клиента ( CS №3 ) и у меня на счету 0 аммо. Потом снова зашел с самого первого клиента ( CS №1 ), но сумма аммо паков так и осталась по нулям. Получается если игрок наигрывал себе аммо паки целый месяц и потом зашел с другой CS, то все его достижения пропали. В чем может быть проблема?
На сервере установлен плагин сохранения аммо паков "[ZP] Can Auto Save Ammo". Исходный код прилагаю.
 
Это не проблема, а обычная механика работы эмулятора Steam, который использует твой сервер. В твоём случае ты используешь ReUnion: он генерирует для каждого нового клиента новый STEAM_ID, если мы говорим про виртуальные STEAM_ID, которые на самом деле даже не существуют. В твоём случае, ты пробуешь зайти с разных пиратских клиентов и ReUnion тебе генерирует каждый раз новые виртуальные STEAM_ID, отсюда и проблема с сохранением данных.

Лучшим решением в этой ситуации -- создать систему регистрации и авторизации, которая будет работать через SQL. Это срезает потерю данных даже если юзер сменит хоть десять клиентов. Его данные будут храниться у тебя на сервере в надёжном месте, а не в автогенераторе виртуальных STEAM_ID алгоритмах.
 
сервер локальный?
возможно дело в настройке reunion
как клиенты определяются в консоли?
 
сервер локальный?
возможно дело в настройке reunion
как клиенты определяются в консоли?
[1] Нет конечно. Сервер в общей паутине, игроки заходят со всего мира.
[2] Какой параметр reunion?
[3] Не понял вопроса...
 

Кто просматривает тему

Назад
Верх