Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Problem z player_models


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
5 odpowiedzi w tym temacie

#1 Nelkaa

    Życzliwy

  • Girl

Reputacja: 10
Początkujący

  • Postów:25
  • GG:
  • Imię:Amelia
  • Lokalizacja:Poznań
Offline

Napisano 13.05.2016 19:36

Wgrałam nowe modele dla ct oraz tt. Ładują się jak się wchodzi na serwer, ale gdy się wejdzie to ich nie ma.. Są podstawowe modele..

 

Players_models.ini :

; zamien domyslny skin
;"domyslnanazwa" "nowanazwa"
"arctic" "nelkatt"
"guerilla" "nelkatt"
"leet" "nelkatt"
"terror" "nelkatt"
"urban" "nelkact"
"gign" "nelkact"
"gsg9" "nelkact"
"sas" "nelkact"

; ustaw skin na SeamID albo dla botów
;"STEAM_0:1:23456789" "terrorist_model" "ct_model"
;"BOT" "terrorist_model" "ct_model"

Player_models.sma :

/*	Formatright © 2009, ConnorMcLeod

	Players Models is free software;
	you can redistribute it and/or modify it under the terms of the
	GNU General Public License as published by the Free Software Foundation.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with Players Models; if not, write to the
	Free Software Foundation, Inc., 59 Temple Place - Suite 330,
	Boston, MA 02111-1307, USA.
*/

// #define SET_MODELINDEX

#include <amxmodx>
#include <fakemeta>

#pragma semicolon 1

#define VERSION "1.3.0"

#define SetUserModeled(%1)		g_bModeled |= 1<<(%1 & 31)
#define SetUserNotModeled(%1)		g_bModeled &= ~( 1<<(%1 & 31) )
#define IsUserModeled(%1)		( g_bModeled &  1<<(%1 & 31) )

#define SetUserConnected(%1)		g_bConnected |= 1<<(%1 & 31)
#define SetUserNotConnected(%1)		g_bConnected &= ~( 1<<(%1 & 31) )
#define IsUserConnected(%1)		( g_bConnected &  1<<(%1 & 31) )

#define MAX_MODEL_LENGTH	16
#define MAX_AUTHID_LENGTH 25

#define MAX_PLAYERS	32

#define ClCorpse_ModelName 1
#define ClCorpse_PlayerID 12

#define m_iTeam 114
#define g_ulModelIndexPlayer 491
#define fm_cs_get_user_team_index(%1)	get_pdata_int(%1, m_iTeam)

new const MODEL[] = "model";
new g_bModeled;
new g_szCurrentModel[MAX_PLAYERS+1][MAX_MODEL_LENGTH];

new Trie:g_tTeamModels[2];
new Trie:g_tModelIndexes;
new Trie:g_tDefaultModels;

new g_szAuthid[MAX_PLAYERS+1][MAX_AUTHID_LENGTH];
new g_bPersonalModel[MAX_PLAYERS+1];

new g_bConnected;

public plugin_init()
{
	register_plugin("Players Models", VERSION, "ConnorMcLeod");

	register_forward(FM_SetClientKeyValue, "SetClientKeyValue");
	register_message(get_user_msgid("ClCorpse"), "Message_ClCorpse");
}

public plugin_precache()
{
	new szConfigFile[128];
	get_localinfo("amxx_configsdir", szConfigFile, charsmax(szConfigFile));
	format(szConfigFile, charsmax(szConfigFile), "%s/players_models.ini", szConfigFile);

	new iFile = fopen(szConfigFile, "rt");
	if( iFile )
	{
		new const szDefaultModels[][] = {"", "urban", "terror", "leet", "arctic", "gsg9", 
					"gign", "sas", "guerilla", "vip", "militia", "spetsnaz" };
		new Trie:tDefaultModels = TrieCreate();
		for(new i=1; i<sizeof(szDefaultModels); i++)
		{
			TrieSetCell(tDefaultModels, szDefaultModels[i], i);
		}

		g_tModelIndexes = TrieCreate();

		g_tTeamModels[0] = TrieCreate();
		g_tTeamModels[1] = TrieCreate();

		g_tDefaultModels = TrieCreate();

		new szDatas[70], szRest[40], szKey[MAX_AUTHID_LENGTH], szModel1[MAX_MODEL_LENGTH], szModel2[MAX_MODEL_LENGTH], iVal;
		while( !feof(iFile) )
		{
			fgets(iFile, szDatas, charsmax(szDatas));
			trim(szDatas);
			if(!szDatas[0] || szDatas[0] == ';' || szDatas[0] == '#' || (szDatas[0] == '/' && szDatas[1] == '/'))
			{
				continue;
			}

			strbreak(szDatas, szKey, charsmax(szKey), szRest, charsmax(szRest));

			if( TrieGetCell(tDefaultModels, szKey, iVal) )
			{
				parse(szRest, szModel1, charsmax(szModel1));
				if( szModel1[0] && PrecachePlayerModel(szModel1) )
				{
					TrieSetString(g_tDefaultModels, szKey, szModel1);
				}
			}
			else if( equal(szKey, "STEAM_", 6) || equal(szKey, "BOT") )
			{
				parse(szRest, szModel1, charsmax(szModel1), szModel2, charsmax(szModel2));
				if( szModel1[0] && PrecachePlayerModel(szModel1) )
				{
					TrieSetString(g_tTeamModels[1], szKey, szModel1);
				}
				if( szModel2[0] && PrecachePlayerModel(szModel2) )
				{
					TrieSetString(g_tTeamModels[0], szKey, szModel2);
				}
			}
		}
		TrieDestroy(tDefaultModels);
		fclose( iFile );
	}
}

PrecachePlayerModel( const szModel[] )
{
	if( TrieKeyExists(g_tModelIndexes, szModel) )
	{
		return 1;
	}

	new szFileToPrecache[64];
	formatex(szFileToPrecache, charsmax(szFileToPrecache), "models/player/%s/%s.mdl", szModel, szModel);
	if( !file_exists( szFileToPrecache ) )
	{
		return 0;
	}

	TrieSetCell(g_tModelIndexes, szModel, precache_model(szFileToPrecache));

	formatex(szFileToPrecache, charsmax(szFileToPrecache), "models/player/%s/%st.mdl", szModel, szModel);
	if( file_exists( szFileToPrecache ) )
	{
		precache_model(szFileToPrecache);
		return 1;
	}
	formatex(szFileToPrecache, charsmax(szFileToPrecache), "models/player/%s/%sT.mdl", szModel, szModel);
	if( file_exists( szFileToPrecache ) )
	{
		precache_model(szFileToPrecache);
		return 1;
	}

	return 1;
}

public plugin_end()
{
	TrieDestroy(g_tTeamModels[0]);
	TrieDestroy(g_tTeamModels[1]);
	TrieDestroy(g_tModelIndexes);
	TrieDestroy(g_tDefaultModels);
}

public client_authorized( id )
{
	get_user_authid(id, g_szAuthid[id], MAX_AUTHID_LENGTH-1);

	for(new i=1; i<=2; i++)
	{
		if( TrieKeyExists(g_tTeamModels[2-i], g_szAuthid[id]) )
		{
			g_bPersonalModel[id] |= i;
		}
		else
		{
			g_bPersonalModel[id] &= ~i;
		}
	}
}

public client_putinserver(id)
{
	if( !is_user_hltv(id) )
	{
		SetUserConnected(id);
	}
}

public client_disconnect(id)
{
	g_bPersonalModel[id] = 0;
	SetUserNotModeled(id);
	SetUserNotConnected(id);
}

public SetClientKeyValue(id, const szInfoBuffer[], const szKey[], const szValue[])
{
	if( equal(szKey, MODEL) && IsUserConnected(id) )
	{
		new iTeam = fm_cs_get_user_team_index(id);
		if( 1 <= iTeam <= 2 )
		{
			new szSupposedModel[MAX_MODEL_LENGTH];

			if( g_bPersonalModel[id] & iTeam )
			{
				TrieGetString(g_tTeamModels[2-iTeam], g_szAuthid[id], szSupposedModel, charsmax(szSupposedModel));
			}
			else
			{
				TrieGetString(g_tDefaultModels, szValue, szSupposedModel, charsmax(szSupposedModel));
			}

			if( szSupposedModel[0] )
			{
				if(	!IsUserModeled(id)
				||	!equal(g_szCurrentModel[id], szSupposedModel)
				||	!equal(szValue, szSupposedModel)	)
				{
					copy(g_szCurrentModel[id], MAX_MODEL_LENGTH-1, szSupposedModel);
					SetUserModeled(id);
					set_user_info(id, MODEL, szSupposedModel);
				#if defined SET_MODELINDEX
					new iModelIndex;
					TrieGetCell(g_tModelIndexes, szSupposedModel, iModelIndex);
				//	set_pev(id, pev_modelindex, iModelIndex); // is this needed ?
					set_pdata_int(id, g_ulModelIndexPlayer, iModelIndex);
				#endif
					return FMRES_SUPERCEDE;
				}
			}

			if( IsUserModeled(id) )
			{
				SetUserNotModeled(id);
				g_szCurrentModel[id][0] = 0;
			}
		}
	}
	return FMRES_IGNORED;
}

public Message_ClCorpse()
{
	new id = get_msg_arg_int(ClCorpse_PlayerID);
	if( IsUserModeled(id) )
	{
		set_msg_arg_string(ClCorpse_ModelName, g_szCurrentModel[id]);
	}
}

  • +
  • -
  • 0

#2 BociKV11

    Pomocny

  • Użytkownik

Reputacja: 16
Początkujący

  • Postów:51
Offline

Napisano 13.05.2016 20:06

Bardzo łatwe dlatego że mam że napisane każdy model ma mieć osobny folder NP 

 

"arctic" "nelkatt1"
"guerilla" "nelkatt2"
"leet" "nelkatt3"
"terror" "nelkatt4"
"urban" "nelkact5"
"gign" "nelkact6"
"gsg9" "nelkact7"
"sas" "nelkact8"

 

zmien w chyba models.ini na to i zmień nazwę  folderów i to na tyle będzie 


  • +
  • -
  • 1

#3 Nelkaa

    Życzliwy

  • Autor tematu
  • Girl

Reputacja: 10
Początkujący

  • Postów:25
  • GG:
  • Imię:Amelia
  • Lokalizacja:Poznań
Offline

Napisano 13.05.2016 20:14

wczesniej mi działało jak miałam tak napisane... Ale ok.. Zrobię tak jak napisałeś i zedytuje odpowiedz jakby nie dizlalalo


  • +
  • -
  • 0

#4 Robiin

    Godlike

  • Support Team

Reputacja: 1 107
Super Hero

  • Postów:2 051
  • Imię:Robert
  • Lokalizacja:Wrocław
Offline

Napisano 13.05.2016 20:40

Bardzo łatwe dlatego że mam że napisane każdy model ma mieć osobny folder NP 

 

"arctic" "nelkatt1"
"guerilla" "nelkatt2"
"leet" "nelkatt3"
"terror" "nelkatt4"
"urban" "nelkact5"
"gign" "nelkact6"
"gsg9" "nelkact7"
"sas" "nelkact8"

 

zmien w chyba models.ini na to i zmień nazwę  folderów i to na tyle będzie 

 

Dokładnie.

 

 

wczesniej mi działało jak miałam tak napisane... Ale ok.. Zrobię tak jak napisałeś i zedytuje odpowiedz jakby nie dizlalalo

 

cstrike/models/nazwa_modelu/nazwa_modelu.mdl

 

Tak być musi, chyba że masz 

 

cstrike/models/nazwa_modelu.mdl

 

w pluginie.


  • +
  • -
  • 0

Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów za zero.


#5 Master Yoga

    Support Team | Mocarz

  • Support Team

Reputacja: 136
Zaawansowany

  • Postów:275
  • Lokalizacja:Magistrala Adresowa
Offline

Napisano 13.05.2016 22:09

Dokładnie.
 



wczesniej mi działało jak miałam tak napisane... Ale ok.. Zrobię tak jak napisałeś i zedytuje odpowiedz jakby nie dizlalalo
[/quote]
 
cstrike/models/nazwa_modelu/nazwa_modelu.mdl
 
Tak być musi, chyba że masz 
 
cstrike/models/nazwa_modelu.mdl
 
w pluginie.
[/quote]
[/quote]
[/quote]
[/quote]

A skąd...

Tak tylko się przyjęło. Nie ma żadnego formalnego wymogu tworzenia osobnych folderów dla poszczególnych modeli.

Choć z tego co pamiętam istnieję funkcja w amxx która zmienia model gracza poprzez nie podanie ścieżki modelu, a nazwy folderu.


Użytkownik Master Yoga edytował ten post 13.05.2016 22:12

  • +
  • -
  • 0

HTML ★ CSS ★ JAVASCRIPT ★ AJAX ★ JQUERY ★ PHP ★ C++ ★ PAWN ★ SQL ★ Objective-C++


MKW0tb8.pngMKW0tb8.pngMKW0tb8.png


#6 Nelkaa

    Życzliwy

  • Autor tematu
  • Girl

Reputacja: 10
Początkujący

  • Postów:25
  • GG:
  • Imię:Amelia
  • Lokalizacja:Poznań
Offline

Napisano 13.05.2016 22:12

Bocik już pomogl :D


  • +
  • -
  • 1




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych