Knife Models [XP System & Skills Support]

Одобрените от нас плъгини. Моля, докладвайте ако забележите бъг с някой от плъгините в този раздел.
Потребителски аватар

Автор на темата
OciXCrom TM
Администратор
Администратор
Мнения: 5041
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 56 пъти
Получена благодарност: 470 пъти
Години: 21
Контакти:

Knife Models [XP System Support]

Мнение от OciXCrom TM » 13 юли 2018, 15:42

Изображение
  • Добавена опция скиновете да изискват определено количество XP.

Потребителски аватар

onixsone SK8
Foreigner
Foreigner
Мнения: 19
Регистриран: 10 юли 2018, 09:13
Се отблагодари: 2 пъти

Knife Models [XP System Support]

Мнение от onixsone SK8 » 20 юли 2018, 13:57

Hello @ocixcrom,

So I've been using this plugin a while ago, in its version 2.0 without support for the rank system.

So I decided to upgrade to this latest version since I'm using your rank system on my server.

After changing to this new version my models stopped working, the skins no longer appear when changing from gun to knife.

With the previous version they appear normally.

Here are the errors I have after debugging:

L 07/20/2018 - 07:27:31: Start of error session.
L 07/20/2018 - 07:27:31: Info (map "de_dust2") (file "addons/amxmodx/logs/error_20180720.log")
L 07/20/2018 - 07:27:31: [AMXX] Displaying debug trace (plugin "knife_models.amxx", version "2.5")
L 07/20/2018 - 07:27:31: [AMXX] Run time error 4: index out of bounds
L 07/20/2018 - 07:27:31: [AMXX] [0] knife_models.sma::RefreshKnifeModel (line 410)
L 07/20/2018 - 07:27:31: [AMXX] [1] knife_models.sma::OnSelectKnife (line 406)

Потребителски аватар

Автор на темата
OciXCrom TM
Администратор
Администратор
Мнения: 5041
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 56 пъти
Получена благодарност: 470 пъти
Години: 21
Контакти:

Knife Models [XP System Support]

Мнение от OciXCrom TM » 21 юли 2018, 00:11

Can you please post your KnifeModels.ini file?

Потребителски аватар

onixsone SK8
Foreigner
Foreigner
Мнения: 19
Регистриран: 10 юли 2018, 09:13
Се отблагодари: 2 пъти

Knife Models [XP System Support]

Мнение от onixsone SK8 » 21 юли 2018, 01:20

Yes of course!

;# Leia isto antes de fazer qualquer coisa.
;# Você pode adicionar uma faca seguindo este exemplo:
;
;# [Nome da faca]
;# V_MODEL = localização do modelo v_
;# P_MODEL = localização do p_ modelo
;
;# Você não precisa adicionar um modelo p_ ou v_ se a faca não tiver um.
;# Você também pode adicionar alguns dos parâmetros abaixo:
;
;# FLAG = se você quiser que a faca seja para usuários VIP / admins, insira a bandeira aqui
;# DEPLOY_SOUND = som quando você implanta a faca
;# HIT_SOUND = som quando você bate em um jogador
;# HITWALL_SOUND = som quando você bate em uma parede
;# SLASH_SOUND = som quando você balança a faca
;# STAB_SOUND = som quando você stab um jogador
;
;# LEVEL = nível exigido do sistema de classificação para usar a faca
;# SHOW_RANK = se definido como 1, o nome da classificação será exibido em vez do número do nível no menu
;# XP = quantidade de XP necessária do sistema de classificação para usar a faca

[Modelo Padrao]
V_MODEL = models/v_knife.mdl
P_MODEL = models/p_knife.mdl

[Karambit Night]
V_MODEL = models/MTR/knifes/v_karambit_night.mdl
P_MODEL = models/MTR/knifes/p_karambit_night.mdl

[Butterfly Night]
V_MODEL = models/MTR/knifes/v_butterfly_night.mdl
P_MODEL = models/MTR/knifes/p_butterfly_night.mdl

[Blade Master CT]
V_MODEL = models/MTR/knifes/v_blade.mdl
P_MODEL = models/MTR/knifes/p_blade.mdl
FLAG = b
DEPLOY_SOUND = MTR_AS/rune_blade/deploy.wav
HIT_SOUND = MTR_AS/rune_blade/hit.wav
HITWALL_SOUND = MTR_AS/rune_blade/hitwall.wav
SLASH_SOUND = MTR_AS/rune_blade/slash.wav
STAB_SOUND = MTR_AS/rune_blade/stab.wav

[Blade Master TR]
V_MODEL = models/MTR/knifes/v_blade_t.mdl
P_MODEL = models/MTR/knifes/p_blade_t.mdl
FLAG = b
DEPLOY_SOUND = MTR_AS/rune_blade/deploy.wav
HIT_SOUND = MTR_AS/rune_blade/hit.wav
HITWALL_SOUND = MTR_AS/rune_blade/hitwall.wav
SLASH_SOUND = MTR_AS/rune_blade/slash.wav
STAB_SOUND = MTR_AS/rune_blade/stab.wav

[Storm War Hammer CT]
V_MODEL = models/MTR/knifes/v_hammer.mdl
P_MODEL = models/MTR/knifes/p_hammer.mdl
FLAG = b
DEPLOY_SOUND = MTR_AS/storm_hammer/deploy.wav
HIT_SOUND = MTR_AS/storm_hammer/hit.wav
HITWALL_SOUND = MTR_AS/storm_hammer/hitwall.wav
SLASH_SOUND = MTR_AS/storm_hammer/slash.wav
STAB_SOUND = MTR_AS/storm_hammer/stab.wav

[Storm War Hammer TR]
V_MODEL = models/MTR/knifes/v_hammer_t.mdl
P_MODEL = models/MTR/knifes/p_hammer_t.mdl
FLAG = b
DEPLOY_SOUND = MTR_AS/storm_hammer/deploy.wav
HIT_SOUND = MTR_AS/storm_hammer/hit.wav
HITWALL_SOUND = MTR_AS/storm_hammer/hitwall.wav
SLASH_SOUND = MTR_AS/storm_hammer/slash.wav
STAB_SOUND = MTR_AS/storm_hammer/stab.wav

Потребителски аватар

Автор на темата
OciXCrom TM
Администратор
Администратор
Мнения: 5041
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 56 пъти
Получена благодарност: 470 пъти
Години: 21
Контакти:

Knife Models [XP System Support]

Мнение от OciXCrom TM » 21 юли 2018, 23:22

That's strange. I tested the plugin with your .ini file and it works just fine. Maybe you missed something when updating it? Try redownloading all files again (except the .ini file, so you don't lose your changes) and recompile. If it's still not working, try it with this .sma file:

Код: Избери всички

#include <amxmodx>
#include <amxmisc>
#include <cromchat>
#include <fakemeta>
#include <hamsandwich>
#include <nvault>

native crxranks_get_max_levels()
native crxranks_get_rank_by_level(level, buffer[], len)
native crxranks_get_user_level(id)
native crxranks_get_user_xp(id)

new const g_szNatives[][] =
{
	"crxranks_get_max_levels",
	"crxranks_get_rank_by_level",
	"crxranks_get_user_level",
	"crxranks_get_user_xp"
}

#if defined client_disconnected
	#define client_disconnect client_disconnected
#endif

#define PLUGIN_VERSION "2.5-cur"
#define DEFAULT_V "models/v_knife.mdl"
#define DEFAULT_P "models/p_knife.mdl"
#define DELAY_ON_CONNECT 2.5
#define MAX_SOUND_LENGTH 128
#define MAX_AUTHID_LENGTH 35

#if !defined MAX_NAME_LENGTH
	#define MAX_NAME_LENGTH 32
#endif

#if !defined MAX_PLAYERS
	#define MAX_PLAYERS 32
#endif

enum
{
	SOUND_NONE = 0,
	SOUND_DEPLOY,
	SOUND_HIT,
	SOUND_HITWALL,
	SOUND_SLASH,
	SOUND_STAB
}

enum _:Knives
{
	NAME[MAX_NAME_LENGTH],
	V_MODEL[MAX_SOUND_LENGTH],
	P_MODEL[MAX_SOUND_LENGTH],
	DEPLOY_SOUND[MAX_SOUND_LENGTH],
	HIT_SOUND[MAX_SOUND_LENGTH],
	HITWALL_SOUND[MAX_SOUND_LENGTH],
	SLASH_SOUND[MAX_SOUND_LENGTH],
	STAB_SOUND[MAX_SOUND_LENGTH],
	SELECT_SOUND[MAX_SOUND_LENGTH],
	FLAG,
	LEVEL,
	bool:SHOW_RANK,
	bool:HAS_CUSTOM_SOUND,
	XP
}

new Array:g_aKnives,
	bool:g_bFirstTime[MAX_PLAYERS + 1],
	bool:g_bRankSystem,
	bool:g_bGetLevel,
	bool:g_bGetXP,
	g_eKnife[MAX_PLAYERS + 1][Knives],
	g_szAuth[MAX_PLAYERS + 1][MAX_AUTHID_LENGTH],
	g_iKnife[MAX_PLAYERS + 1],
	g_iCallback,
	g_pAtSpawn,
	g_pSaveChoice,
	g_iSaveChoice,
	g_iKnivesNum,
	g_iVault

public plugin_init()
{
	register_plugin("Knife Models", PLUGIN_VERSION, "OciXCrom")
	register_cvar("CRXKnifeModels", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
	
	if(!g_iKnivesNum)
		set_fail_state("No knives found in the configuration file.")
	
	register_dictionary("KnifeModels.txt")
	
	RegisterHam(Ham_Spawn, "player", "OnPlayerSpawn", 1)
	register_forward(FM_EmitSound,	"OnEmitSound")
	register_event("CurWeapon", "OnSelectKnife", "be", "1=1", "2=29")
	
	register_clcmd("say /knife", "ShowMenu")
	register_clcmd("say_team /knife", "ShowMenu")
	
	g_iCallback = menu_makecallback("CheckKnifeAccess")
	g_pAtSpawn = register_cvar("km_open_at_spawn", "0")
	g_pSaveChoice = register_cvar("km_save_choice", "0")
}

public plugin_precache()
{
	if(LibraryExists("crxranks", LibType_Library))
		g_bRankSystem = true
		
	g_aKnives = ArrayCreate(Knives)
	ReadFile()
}

public plugin_cfg()
{
	g_iSaveChoice = get_pcvar_num(g_pSaveChoice)
	
	if(g_iSaveChoice)
		g_iVault = nvault_open("KnifeModels")
}

public plugin_natives()
	set_native_filter("native_filter")
	
public native_filter(const szNative[], id, iTrap)
{
	if(!iTrap)
	{
		static i
		
		for(i = 0; i < sizeof(g_szNatives); i++)
		{
			if(equal(szNative, g_szNatives[i]))
				return PLUGIN_HANDLED
		}
	}
	
	return PLUGIN_CONTINUE
}
	
public plugin_end()
{
	ArrayDestroy(g_aKnives)
	
	if(g_iSaveChoice)
		nvault_close(g_iVault)
}

ReadFile()
{
	new szConfigsName[256], szFilename[256]
	get_configsdir(szConfigsName, charsmax(szConfigsName))
	formatex(szFilename, charsmax(szFilename), "%s/KnifeModels.ini", szConfigsName)
	new iFilePointer = fopen(szFilename, "rt")
	
	if(iFilePointer)
	{
		new szData[160], szKey[32], szValue[128], iMaxLevels
		new eKnife[Knives], bool:bCustom
		
		if(g_bRankSystem)
			iMaxLevels = crxranks_get_max_levels()
		
		while(!feof(iFilePointer))
		{
			fgets(iFilePointer, szData, charsmax(szData))
			trim(szData)
			
			switch(szData[0])
			{
				case EOS, '#', ';': continue
				case '[':
				{
					if(szData[strlen(szData) - 1] == ']')
					{
						if(g_iKnivesNum)
							PushKnife(eKnife)
							
						g_iKnivesNum++
						replace(szData, charsmax(szData), "[", "")
						replace(szData, charsmax(szData), "]", "")
						copy(eKnife[NAME], charsmax(eKnife[NAME]), szData)
						
						eKnife[V_MODEL][0] = EOS
						eKnife[P_MODEL][0] = EOS
						eKnife[DEPLOY_SOUND][0] = EOS
						eKnife[HIT_SOUND][0] = EOS
						eKnife[HITWALL_SOUND][0] = EOS
						eKnife[SLASH_SOUND][0] = EOS
						eKnife[STAB_SOUND][0] = EOS
						eKnife[SELECT_SOUND][0] = EOS
						eKnife[FLAG] = ADMIN_ALL
						eKnife[HAS_CUSTOM_SOUND] = false
						
						if(g_bRankSystem)
						{
							eKnife[LEVEL] = 0
							eKnife[SHOW_RANK] = false
							eKnife[XP] = 0
						}
					}
					else continue
				}
				default:
				{
					strtok(szData, szKey, charsmax(szKey), szValue, charsmax(szValue), '=')
					trim(szKey); trim(szValue)
					bCustom = true
					
					if(equal(szKey, "FLAG"))
						eKnife[FLAG] = read_flags(szValue)
					else if(equal(szKey, "LEVEL") && g_bRankSystem)
					{
						eKnife[LEVEL] = clamp(str_to_num(szValue), 0, iMaxLevels)
						
						if(!g_bGetLevel)
							g_bGetLevel = true
					}
					else if(equal(szKey, "SHOW_RANK") && g_bRankSystem)
						eKnife[SHOW_RANK] = _:clamp(str_to_num(szValue), false, true)
					else if(equal(szKey, "XP") && g_bRankSystem)
					{
						eKnife[XP] = _:clamp(str_to_num(szValue), 0)
						
						if(!g_bGetXP)
							g_bGetXP = true
					}
					else if(equal(szKey, "V_MODEL"))
						copy(eKnife[V_MODEL], charsmax(eKnife[V_MODEL]), szValue)
					else if(equal(szKey, "P_MODEL"))
						copy(eKnife[P_MODEL], charsmax(eKnife[P_MODEL]), szValue)
					else if(equal(szKey, "DEPLOY_SOUND"))
						copy(eKnife[DEPLOY_SOUND], charsmax(eKnife[DEPLOY_SOUND]), szValue)
					else if(equal(szKey, "HIT_SOUND"))
						copy(eKnife[HIT_SOUND], charsmax(eKnife[HIT_SOUND]), szValue)
					else if(equal(szKey, "HITWALL_SOUND"))
						copy(eKnife[HITWALL_SOUND], charsmax(eKnife[HITWALL_SOUND]), szValue)
					else if(equal(szKey, "SLASH_SOUND"))
						copy(eKnife[SLASH_SOUND], charsmax(eKnife[SLASH_SOUND]), szValue)
					else if(equal(szKey, "STAB_SOUND"))
						copy(eKnife[STAB_SOUND], charsmax(eKnife[STAB_SOUND]), szValue)
					else if(equal(szKey, "SELECT_SOUND"))
					{
						bCustom = false
						copy(eKnife[SELECT_SOUND], charsmax(eKnife[SELECT_SOUND]), szValue)
					}
					else continue
					
					static const szModelArg[] = "_MODEL"
					static const szSoundArg[] = "_SOUND"
					
					if(contain(szKey, szModelArg) != -1)
						precache_model(szValue)
					else if(contain(szKey, szSoundArg) != -1)
					{
						precache_sound(szValue)
						
						if(bCustom)
							eKnife[HAS_CUSTOM_SOUND] = true
					}
				}
			}
		}
		
		if(g_iKnivesNum)
			PushKnife(eKnife)
		
		fclose(iFilePointer)
	}
}

public client_authorized(id)
{
	g_bFirstTime[id] = true
	ArrayGetArray(g_aKnives, 0, g_eKnife[id])
	g_iKnife[id] = 0
	
	if(g_iSaveChoice)
	{
		get_user_authid(id, g_szAuth[id], charsmax(g_szAuth[]))
		set_task(DELAY_ON_CONNECT, "LoadData", id)
	}
}

public client_disconnect(id)
{
	if(g_iSaveChoice)
		UseVault(id, true)
}

public OnEmitSound(id, iChannel, const szSample[])
{
	if(!is_user_connected(id) || !g_eKnife[id][HAS_CUSTOM_SOUND] || !IsKnifeSound(szSample))
		return FMRES_IGNORED
	
	switch(DetectKnifeSound(szSample))
	{
		case SOUND_DEPLOY: 		if(g_eKnife[id][DEPLOY_SOUND][0]) 		{ PlayKnifeSound(id, g_eKnife[id][DEPLOY_SOUND][0]); 	return FMRES_SUPERCEDE; }
		case SOUND_HIT: 		if(g_eKnife[id][HIT_SOUND][0]) 			{ PlayKnifeSound(id, g_eKnife[id][HIT_SOUND][0]); 		return FMRES_SUPERCEDE; }
		case SOUND_HITWALL:		if(g_eKnife[id][HITWALL_SOUND][0]) 		{ PlayKnifeSound(id, g_eKnife[id][HITWALL_SOUND][0]); 	return FMRES_SUPERCEDE; }
		case SOUND_SLASH: 		if(g_eKnife[id][SLASH_SOUND][0]) 		{ PlayKnifeSound(id, g_eKnife[id][SLASH_SOUND][0]);		return FMRES_SUPERCEDE; }
		case SOUND_STAB: 		if(g_eKnife[id][STAB_SOUND][0]) 		{ PlayKnifeSound(id, g_eKnife[id][STAB_SOUND][0]); 		return FMRES_SUPERCEDE; }
	}
	
	return FMRES_IGNORED
}

public ShowMenu(id)
{
	static eKnife[Knives]
	new szTitle[128], szItem[128], iLevel, iXP
	formatex(szTitle, charsmax(szTitle), "%L", id, "KM_MENU_TITLE")

	if(g_bGetLevel)
		iLevel = crxranks_get_user_level(id)
	
	if(g_bGetXP)
		iXP = crxranks_get_user_xp(id)
		
	new iMenu = menu_create(szTitle, "MenuHandler")
	
	for(new iFlags = get_user_flags(id), i; i < g_iKnivesNum; i++)
	{
		ArrayGetArray(g_aKnives, i, eKnife)
		copy(szItem, charsmax(szItem), eKnife[NAME])
		
		if(g_bRankSystem)
		{
			if(eKnife[LEVEL] && iLevel < eKnife[LEVEL])
			{
				if(eKnife[SHOW_RANK])
				{
					static szRank[32]
					crxranks_get_rank_by_level(eKnife[LEVEL], szRank, charsmax(szRank))
					format(szItem, charsmax(szItem), "%s %L", szItem, id, "KM_MENU_RANK", szRank)
				}
				else
					format(szItem, charsmax(szItem), "%s %L", szItem, id, "KM_MENU_LEVEL", eKnife[LEVEL])
			}
			
			if(eKnife[XP] && iXP < eKnife[XP])
				format(szItem, charsmax(szItem), "%s %L", szItem, id, "KM_MENU_XP", eKnife[XP])
		}
		
		if(eKnife[FLAG] != ADMIN_ALL && !(iFlags & eKnife[FLAG]))
			format(szItem, charsmax(szItem), "%s %L", szItem, id, "KM_MENU_VIP_ONLY")
			
		if(g_iKnife[id] == i)
			format(szItem, charsmax(szItem), "%s %L", szItem, id, "KM_MENU_SELECTED")
		
		menu_additem(iMenu, szItem, eKnife[NAME], eKnife[FLAG], g_iCallback)
	}
	
	if(menu_pages(iMenu) > 1)
	{
		formatex(szItem, charsmax(szItem), "%s%L", szTitle, id, "KM_MENU_TITLE_PAGE")
		menu_setprop(iMenu, MPROP_TITLE, szItem)
	}
		
	menu_display(id, iMenu)
	return PLUGIN_HANDLED
}

public MenuHandler(id, iMenu, iItem)
{
	if(iItem != MENU_EXIT)
	{
		g_iKnife[id] = iItem
		ArrayGetArray(g_aKnives, iItem, g_eKnife[id])
		
		if(is_user_alive(id) && get_user_weapon(id) == CSW_KNIFE)
			RefreshKnifeModel(id)
		
		new szName[MAX_NAME_LENGTH], iUnused
		menu_item_getinfo(iMenu, iItem, iUnused, szName, charsmax(szName), .callback = iUnused)
		CC_SendMessage(id, "%L %L", id, "KM_CHAT_PREFIX", id, "KM_CHAT_SELECTED", szName)
		
		if(g_eKnife[id][SELECT_SOUND][0])
			PlayKnifeSound(id, g_eKnife[id][SELECT_SOUND])
	}
	
	menu_destroy(iMenu)
	return PLUGIN_HANDLED
}

public LoadData(id)
	UseVault(id, false)

public CheckKnifeAccess(id, iMenu, iItem)
	return ((g_iKnife[id] == iItem) || !HasKnifeAccess(id, iItem)) ? ITEM_DISABLED : ITEM_ENABLED

public OnPlayerSpawn(id)
{
	if(is_user_alive(id) && get_pcvar_num(g_pAtSpawn) && !g_iKnife[id] && g_bFirstTime[id])
	{
		g_bFirstTime[id] = false
		ShowMenu(id)
	}
}

public OnSelectKnife(id)
	RefreshKnifeModel(id)

RefreshKnifeModel(const id)
{
	set_pev(id, pev_viewmodel2, g_eKnife[id][V_MODEL])
	set_pev(id, pev_weaponmodel2, g_eKnife[id][P_MODEL])
}

PushKnife(eKnife[Knives])
{
	if(!eKnife[V_MODEL][0])
		copy(eKnife[V_MODEL], charsmax(eKnife[V_MODEL]), DEFAULT_V)
		
	if(!eKnife[P_MODEL][0])
		copy(eKnife[P_MODEL], charsmax(eKnife[P_MODEL]), DEFAULT_P)
		
	ArrayPushArray(g_aKnives, eKnife)
}

bool:HasKnifeAccess(const id, const iKnife)
{		
	static eKnife[Knives]
	ArrayGetArray(g_aKnives, iKnife, eKnife)
	
	if(g_bRankSystem)
	{
		if(eKnife[LEVEL] && crxranks_get_user_level(id) < eKnife[LEVEL])
			return false
			
		if(eKnife[XP] && crxranks_get_user_xp(id) < eKnife[XP])
			return false
	}
		
	if(eKnife[FLAG] != ADMIN_ALL && !(get_user_flags(id) & eKnife[FLAG]))
		return false
		
	return true
}

bool:IsKnifeSound(const szSample[])
	return bool:equal(szSample[8], "kni", 3)

DetectKnifeSound(const szSample[])
{
	static iSound
	iSound = SOUND_NONE
	
	if(equal(szSample, "weapons/knife_deploy1.wav"))
		iSound = SOUND_DEPLOY
	else if(equal(szSample[14], "hit", 3))
		iSound = szSample[17] == 'w' ? SOUND_HITWALL : SOUND_HIT
	else if(equal(szSample[14], "sla", 3))
		iSound = SOUND_SLASH
	else if(equal(szSample[14], "sta", 3))
		iSound = SOUND_STAB
		
	return iSound
}

UseVault(const id, const bool:bSave)
{
	if(bSave)
	{
		static szData[4]
		num_to_str(g_iKnife[id], szData, charsmax(szData))
		nvault_set(g_iVault, g_szAuth[id], szData)
	}
	else
	{
		static iKnife
		iKnife = nvault_get(g_iVault, g_szAuth[id])
		
		if(iKnife > g_iKnivesNum)
			iKnife = 0
		
		if(iKnife && HasKnifeAccess(id, iKnife))
		{
			g_iKnife[id] = iKnife
			
			if(is_user_alive(id) && get_user_weapon(id) == CSW_KNIFE)
				RefreshKnifeModel(id)
		}
	}
}

PlayKnifeSound(const id, const szSound[])
	engfunc(EngFunc_EmitSound, id, CHAN_AUTO, szSound, 1.0, ATTN_NORM, 0, PITCH_NORM)

Потребителски аватар

cgozzie Dubstep
Потребител
Потребител
Мнения: 926
Регистриран: 13 окт 2016, 22:10
Местоположение: Варна
Се отблагодари: 67 пъти
Получена благодарност: 10 пъти
Контакти:

Knife Models [XP System Support]

Мнение от cgozzie Dubstep » 31 юли 2018, 13:25

Здравей използвам го към ранк системата всичко си работи избирам ножа скина се появава,след това примерно сменям на оръжие и се връщтам на ножа и скина го няма,показва ми дефаутния нож.

Ето как съм почнал да ги нареждам пример.

Код: Избери всички

[Default]
V_MODEL = models/v_knife.mdl
P_MODEL = models/p_knife.mdl


[Fade]
V_MODEL = models/Newborn/v_fade.mdl
P_MODEL = models/Newborn/p_fade.mdl
FLAG = 
LEVEL = 1
SHOW_RANK = 1
XP = 0

[Noble Gold Blade]
V_MODEL = models/knife/v_noble_gold_blade.mdl
P_MODEL = models/knife/p_noble_gold_blade.mdl
FLAG = 
LEVEL = 13
SHOW_RANK = 1
XP = 4000
DEPLOY_SOUND = knife1/knife_deploy1.wav
HIT_SOUND = knife1/knife_hit1.wav
HITWALL_SOUND = knife1/knife_hitwall1.wav
SLASH_SOUND = knife1/knife_slash1.wav
STAB_SOUND = knife1/knife_stab.wav
Добавено преди 1 час 5 минути 27 секунди:
Друго исках да те питам,сега ще си ги подредя 30 ножа според ранка.Но виждам че дори и минат вече ранк пак може да си го избере,може ли да го направиш така че вече изминал ранк ножовете да не се избират.Искам да може само текущтия ранк който е да си вземе ножа.

Потребителски аватар

Автор на темата
OciXCrom TM
Администратор
Администратор
Мнения: 5041
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 56 пъти
Получена благодарност: 470 пъти
Години: 21
Контакти:

Knife Models [XP System Support]

Мнение от OciXCrom TM » 31 юли 2018, 15:41

Това със смяната на оръжие е оправено. Добавих и защита сървърът да не крашне ако даден модел от .ini файла не съществува.

Не виждам какъв е смисълът да загубиш скина като получиш ново ниво - това е по-скоро минус за играчите, отколкото нещо добро. Няма да усложнявам кода с подобно нещо.

Потребителски аватар

cgozzie Dubstep
Потребител
Потребител
Мнения: 926
Регистриран: 13 окт 2016, 22:10
Местоположение: Варна
Се отблагодари: 67 пъти
Получена благодарност: 10 пъти
Контакти:

Knife Models [XP System Support]

Мнение от cgozzie Dubstep » 31 юли 2018, 17:03

Да прав си съгласна съм с теб.Архива обновен ли е вече да го дръпна.Сега друго става влизам избирам си нож според ранка ок,излизам пак влизам и не ми го е запазил.Задала съм тези кварове.

km_open_at_spawn "0" -- дали менюто да се отваря при прераждане, ако играчът не е избрал нож
km_save_choice "1" -- дали избраният нож да се запазва по SteamID след излизане от съръвра

Потребителски аватар

Автор на темата
OciXCrom TM
Администратор
Администратор
Мнения: 5041
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 56 пъти
Получена благодарност: 470 пъти
Години: 21
Контакти:

Knife Models [XP System Support]

Мнение от OciXCrom TM » 31 юли 2018, 21:37

Или не си задала квара както трябва, или не си обновила плъгина. Провери с amx_cvar дали стойността на квара е 1, както и с amx_plugins дали версията на плъгина е 2.5.4. Опитай да преместиш плъгина под ранк системата в plugins.ini.

Потребителски аватар

onixsone SK8
Foreigner
Foreigner
Мнения: 19
Регистриран: 10 юли 2018, 09:13
Се отблагодари: 2 пъти

Knife Models [XP System Support]

Мнение от onixsone SK8 » 01 авг 2018, 02:12

Hello @ocixcrom

This font you posted works fine for me now, I have kept it for a few days and I no longer have any error log and the skins have worked fine, thanks for that fix!

Потребителски аватар

Maverick
Рекламатор
Рекламатор
Мнения: 227
Регистриран: 22 окт 2016, 17:05
Местоположение: 93.123.18.81:27017
Се отблагодари: 15 пъти
Получена благодарност: 7 пъти
Контакти:

Knife Models [XP System Support]

Мнение от Maverick » 18 авг 2018, 10:06

Може би не го ползвам правилно или просто се бъгва при мен но при мен не работи много добре.
Ето така ми е в KnifeModels.ini

Код: Избери всички

[Default]
V_MODEL = models/v_knife.mdl

[Butterfly]
V_MODEL = models/butterfly.mdl
FLAG = b

[Karambit]
V_MODEL = models/karambit.mdl
FLAG = b
И изписва това също
20180818092419_1.jpg
20180818092419_1.jpg (263.07 KиБ) Видяна 771 пъти
20180818092419_1.jpg
20180818092419_1.jpg (263.07 KиБ) Видяна 771 пъти
20180818092419_1.jpg
20180818092419_1.jpg (263.07 KиБ) Видяна 771 пъти
20180818092419_1.jpg
20180818092419_1.jpg (263.07 KиБ) Видяна 771 пъти
И не се запаметяват като съм избрал нож, след reconnect пак съм си с нормалният нож.
amxx.cfg

Код: Избери всички

km_open_at_spawn "0"
km_save_choice "1"
Не използвам ранк системата.
Всички файлове съм ги обновил.
Прикачени файлове
20180818092425_1.jpg
20180818092425_1.jpg (247.02 KиБ) Видяна 771 пъти
20180818092425_1.jpg
20180818092425_1.jpg (247.02 KиБ) Видяна 771 пъти

Потребителски аватар

TheRedShoko ReShoko
Модератор
Модератор
Мнения: 990
Регистриран: 06 окт 2016, 07:42
Местоположение: Бургас
Се отблагодари: 4 пъти
Получена благодарност: 53 пъти

Knife Models [XP System Support]

Мнение от TheRedShoko ReShoko » 18 авг 2018, 10:25

Липсва ти lang файла, затова ти изписва ML_NOTFOUND.

Потребителски аватар

Maverick
Рекламатор
Рекламатор
Мнения: 227
Регистриран: 22 окт 2016, 17:05
Местоположение: 93.123.18.81:27017
Се отблагодари: 15 пъти
Получена благодарност: 7 пъти
Контакти:

Knife Models [XP System Support]

Мнение от Maverick » 18 авг 2018, 10:45

Тука си е
Изображение
Явно нещо не го засича. То аз си имах старият файл но го обнових с последният.

Отговори

Върни се в “Одобрени плъгини”

Кой е на линия

Потребители, разглеждащи този форум: Няма регистрирани потребители и 1 гост