Иконка ресурса
Сообщения
2,587
Реакции
1,344
Re: [Shop] Skins v2.0.0

Скачал, скомпилировал, видно у тебя нет инклюда smartdm, держи
 

Вложения

  • smartdm.rar
    1.5 КБ · Просмотры: 85

LEBRON_SKILL

Участник
Сообщения
9
Реакции
0
Скачал, скомпилировал, видно у тебя нет инклюда smartdm, держи

да спасибо так и было все ошибки нет! спасибо большое + поставил:)

Добавлено через 13 часов 52 минуты
Блин ребят ну помогите уже 2 дня воюю с ним не в какую! по консоли шли ошибки я их устранил дело было в файлике setting был сохранен не в том формате, по консоле больше ошибок нет вроде. помогите готов заплатить! у меня установлен так же плагин sm_skinchooser может быть дело в нем?! помогите кому не сложно
 
Последнее редактирование:

novichek

Участник
Сообщения
631
Реакции
21
Re: [Shop] Skins v2.0.0

Всем привет! кому не жалко скинить этот плагин с рабочими скинами пожалуста. Заране спасибо.
 

ddrilook

Участник
Сообщения
1
Реакции
0
Re: [Shop] Skins v2.0.0

Народ в чем ошибка?
Скины или прозрачные или не идут?



"Skins"
{
"Скины" // Идентификатор в бд
{
"name" "Crysis" // Название скинов
"ModelT" "models/player/shop/t/Crysis/ct_gign.mdl" // Путь до модели террориста
"ModelCT" "models/player/shop/ct/Crysis/ct_gign.mdl" // Путь до модели спецназа
"price" "10000" // Цена
"sell_price" "5000" // Продаваемая цена или -1, чтобы сделать не продаваемым.
}
}
 

Greebok

Участник
Сообщения
3
Реакции
0
Re: [Shop] Skins v2.0.0

Не получается(Ставлю скины вместо скинов Error.Объясните как писать путь в skins_downloads и путь в skins пожалуйста.И вообще ставить только mdl файл или все файлы скина?
 

rasal

Участник
Сообщения
120
Реакции
14
Re: [Shop] Skins v2.0.0

Не получается(Ставлю скины вместо скинов Error.Объясните как писать путь в skins_downloads и путь в skins пожалуйста.И вообще ставить только mdl файл или все файлы скина?

какой путь skins_downloads, он должен так вот находиться cstrike/*.* папка models и materials.

cstrike/models/player/natalya/police/chp_female_jacket.mdl вот так вот должно выглядит. И не забыди сервер перезапустить
 

Konstantin

Участник
Сообщения
1,775
Реакции
759
Re: [Shop] Skins v2.0.0

Не получается(Ставлю скины вместо скинов Error.Объясните как писать путь в skins_downloads и путь в skins пожалуйста.И вообще ставить только mdl файл или все файлы скина?

Покажи пример скина, и я покажу тебе правильный путь.

Оффтоп
 

Greebok

Участник
Сообщения
3
Реакции
0
Re: [Shop] Skins v2.0.0

Покажи пример скина, и я покажу тебе правильный путь.

Оффтоп

Извини что ты имел ввиду?
Ладно,у меня в архиве скина 2 папки materials/models/slow/"Название скина"/vft и vmt файлы, и models/player/ct_urban.mdl,ct_urban.phy,ct_urban.vvd и так далее.Если скины не такие дай плз ссылку на норм скины для Shop.На сервере папка для скинов в models/player/kzjp/"Папка скина указанного в файле skins.txt"/t или ct/скин
 

Konstantin

Участник
Сообщения
1,775
Реакции
759
Re: [Shop] Skins v2.0.0

Greebok, Например, скин.

skins.txt:
PHP:
"Niko Bellic"
	{
		"ModelT"		"models/player/slow/niko_bellic/slow.mdl"
		"ModelCT"		"models/player/slow/niko_bellic/slow.mdl"
		"price"			"3000"
		"sell_price"	"1000"
	}
skins_download.txt:
PHP:
// Niko Bellic
materials/models/player/slow/niko_bellic
models/player/slow/niko_bellic

P.S. У меня версия 1.8.6
 

Greebok

Участник
Сообщения
3
Реакции
0
Re: [Shop] Skins v2.0.0

Greebok, Например, скин.

skins.txt:
PHP:
"Niko Bellic"
	{
		"ModelT"		"models/player/slow/niko_bellic/slow.mdl"
		"ModelCT"		"models/player/slow/niko_bellic/slow.mdl"
		"price"			"3000"
		"sell_price"	"1000"
	}
skins_download.txt:
PHP:
// Niko Bellic
materials/models/player/slow/niko_bellic
models/player/slow/niko_bellic

P.S. У меня версия 1.8.6
Спасибо,кстати ты экстрасенс я именно этот скин и ставил)
 

Belle_Reve

Участник
Сообщения
6
Реакции
0
Re: [Shop] Skins v2.0.0

Доброго времени суток.
Дорогие друзья, не могли бы вы подсказать, что не так.
Ставлю скины, у меня они все видны, у человека который зашёл ко мне на сервере, они все чёрно-фиолетовые клетчатые.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
Re: [Shop] Skins v2.0.0

Belle_Reve, материалы (текстуры) не скачались
 

Belle_Reve

Участник
Сообщения
6
Реакции
0
Re: [Shop] Skins v2.0.0

Belle_Reve, материалы (текстуры) не скачались

Я его спрашивал, посмотри файлы, все файлы по путям у него лежат.

Добавлено через 55 минут
Так ты создай skins_downloads.txt и скинь его в папку addons/sourcemod/configs/shop/

Прописывай в нем так

//skin #1
materials\models\player\techknow\scream\scream.vmt
materials\models\player\techknow\scream\scream.vtf
materials\models\player\techknow\scream\scream_n.vtf

models\player\techknow\scream\scream.dx80.vtx
models\player\techknow\scream\scream.dx90.vtx
models\player\techknow\scream\scream.mdl
models\player\techknow\scream\scream.phy
models\player\techknow\scream\scream.sw.vtx
models\player\techknow\scream\scream.vvd

У меня всё стоит нормально.
Возможно такое, что его клиент блокирует эти модели и отказывается их показывать?
 
Последнее редактирование:

Belle_Reve

Участник
Сообщения
6
Реакции
0
Re: [Shop] Skins v2.0.0

Друзья, как исправить эту ошибку?
2f45b09d3e6d.jpg
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
Re: [Shop] Skins v2.0.0

Belle_Reve, код где?
 

Belle_Reve

Участник
Сообщения
6
Реакции
0
Re: [Shop] Skins v2.0.0


Я очень сильно извеняюсь, но я совсем не давно этим начал заниматься. Не мог бы подсказать, по конкретнее, что мне ещё надо выложить, для того, что бы мне онли помочь, и я не примерно всё выложу
 

rasal

Участник
Сообщения
120
Реакции
14
Re: [Shop] Skins v2.0.0

Друзья, как исправить эту ошибку?
2f45b09d3e6d.jpg


А зачем тебе компилировать скрипт плагина? Если по путям бы лежали, то нормально бы все было. Значит куда то не туды закинул. Или на загрузку не правильно поставил. Если все нормально, на что я очень сомневаюсь, значит перезагрузить сервер и, выйти из клиента и заново в него войти.

А вот те веши которые должны быть на сервер чтобы откомпилировать скрипт.
#include <sourcemod>
#include <sdktools>
#include <smartdm>
#include <shop>
 

golova209

Думать – самая трудная работа
Сообщения
251
Реакции
72
Re: [Shop] Skins v2.0.0

А зачем тебе компилировать скрипт плагина? Если по путям бы лежали, то нормально бы все было. Значит куда то не туды закинул. Или на загрузку не правильно поставил. Если все нормально, на что я очень сомневаюсь, значит перезагрузить сервер и, выйти из клиента и заново в него войти.

А вот те веши которые должны быть на сервер чтобы откомпилировать скрипт.
#include <sourcemod>
#include <sdktools>
#include <smartdm>
#include <shop>

Там нет ни слова об include. При чём тут загрузка?При чём тут клиент?
 

FrozDark

Участник
Сообщения
1,769
Реакции
2,050
Re: [Shop] Skins v2.0.0

мы так не сможем помочь, нужно прикрепить исходник
 

Belle_Reve

Участник
Сообщения
6
Реакции
0
Re: [Shop] Skins v2.0.0

мы так не сможем помочь, нужно прикрепить исходник
Вот исходник, я убрал описание "Поменяй модельку!" и ок не компилируется. Искал переменную не нашёл.
C-подобный:
#pragma semicolon 1

#include <sourcemod>
#include <sdktools>
#include <smartdm>
#include <shop>

#define PLUGIN_VERSION "2.0.0"

#define CATEGORY	"skins"

new Handle:kv;
new selected_id[MAXPLAYERS+1];

new Handle:hArrayModels;

public Plugin:myinfo =
{
	name = "[Shop] Skins",
	author = "FrozDark",
	description = "Adds ability to buy skins",
	version = SHOP_VERSION,
	url = "www.hlmod.ru"
}

public OnPluginStart()
{
	HookEvent("player_spawn", Event_PlayerSpawn);
	HookEvent("player_team", Event_PlayerSpawn);
	
	hArrayModels = CreateArray(ByteCountToCells(PLATFORM_MAX_PATH));
	
	if (Shop_IsConnected()) Shop_OnConnected();
}

public OnPluginEnd()
{
	Shop_UnregisterMe();
}

public OnMapStart()
{
	decl String:buffer[PLATFORM_MAX_PATH];
	for (new i = 0; i < GetArraySize(hArrayModels); i++)
	{
		GetArrayString(hArrayModels, i, buffer, sizeof(buffer));
		PrecacheModel(buffer, true);
	}
	
	Shop_GetCfgFile(buffer, sizeof(buffer), "skins_downloads.txt");
	
	if (!File_ReadDownloadList(buffer))
	{
		PrintToServer("File not exists %s", buffer);
	}
}

public OnClientDisconnect_Post(client)
{
	selected_id[client] = 0;
}

public Shop_OnConnected()
{
	Shop_RegisterCategory(CATEGORY, "Скины", OnCategoryRegistered);
}

public OnCategoryRegistered(const String:category[], const String:name[], const String:description[])
{
	decl String:_buffer[PLATFORM_MAX_PATH];
	Shop_GetCfgFile(_buffer, sizeof(_buffer), "skins.txt");
	
	if (kv != INVALID_HANDLE) CloseHandle(kv);
	
	kv = CreateKeyValues("Skins");
	
	if (!FileToKeyValues(kv, _buffer))
	{
		ThrowError("\"%s\" not parsed", _buffer);
	}
	
	ClearArray(hArrayModels);
	
	KvRewind(kv);
	decl String:item[64], String:item_name[64], String:desc[64];
	if (KvGotoFirstSubKey(kv))
	{
		do
		{
			if (!KvGetSectionName(kv, item, sizeof(item))) continue;
			
			KvGetString(kv, "ModelT", _buffer, sizeof(_buffer));
			new bool:result = false;
			if (_buffer[0])
			{
				PrecacheModel(_buffer);
				if (FindStringInArray(hArrayModels, _buffer) == -1)
				{
					PushArrayString(hArrayModels, _buffer);
				}
				result = true;
			}
			
			
			KvGetString(kv, "ModelCT", _buffer, sizeof(_buffer));
			if (_buffer[0])
			{
				PrecacheModel(_buffer, true);
				if (FindStringInArray(hArrayModels, _buffer) == -1)
				{
					PushArrayString(hArrayModels, _buffer);
				}
			}
			else if (!result) continue;
			
			if (Shop_StartItem(CATEGORY, item))
			{
				KvGetString(kv, "name", item_name, sizeof(item_name), item);
				KvGetString(kv, "description", desc, sizeof(desc));
				Shop_SetItemInfo(item_name, desc, KvGetNum(kv, "price", 5000), KvGetNum(kv, "sell_price", 2500), Item_Togglable, KvGetNum(kv, "duration", 604800));
				Shop_SetItemCallbacks(OnEquipItem);
				Shop_SetItemCustomInfo("level", KvGetNum(kv, "level", 0));
				Shop_EndItem();
			}
		}
		while (KvGotoNextKey(kv));
	}
	
	KvRewind(kv);
}

public ShopAction:OnEquipItem(client, const String:category[], const String:item[], itemID, bool:toggledOn)
{
	if (toggledOn)
	{
		selected_id[client] = 0;
		
		return Shop_ToggleOff;
	}
	
	Shop_ToggleCategoryOff(client, category);
	
	selected_id[client] = itemID;
	
	ProcessPlayer(client);
	
	return Shop_ToggleOn;
}

public Event_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
{
	new client = GetClientOfUserId(GetEventInt(event, "userid"));
	ProcessPlayer(client);
}

ProcessPlayer(client)
{
	if (!client || !selected_id[client] || IsFakeClient(client) || !IsPlayerAlive(client))
	{
		return;
	}
	
	CreateTimer(0.0, Timer_SetClientModel, client, TIMER_FLAG_NO_MAPCHANGE);
}

public Action:Timer_SetClientModel(Handle:timer, any:client)
{
	decl String:buffer[PLATFORM_MAX_PATH];
	
	Shop_GetItemById(CATEGORY, selected_id[client], buffer, sizeof(buffer));
	
	KvRewind(kv);
	if (!KvJumpToKey(kv, buffer, false))
	{
		LogError("It seems that registered item \"%s\" not exists in the settings", buffer);
		return;
	}
	
	switch (GetClientTeam(client))
	{
		case 2 :
		{
			KvGetString(kv, "ModelT", buffer, sizeof(buffer));
		}
		case 3 :
		{
			KvGetString(kv, "ModelCT", buffer, sizeof(buffer));
		}
		default :
		{
			buffer[0] = '\0';
		}
	}
	if (buffer[0] && IsModelFile(buffer))
	{
		SetEntityModel(client, buffer);
		
		KvGetString(kv, "color", buffer, sizeof(buffer));
		if (strlen(buffer) > 7)
		{
			decl color[4];
			KvGetColor(kv, "color", color[0], color[1], color[2], color[3]);
			SetEntityRenderMode(client, RENDER_TRANSCOLOR);
			SetEntityRenderColor(client, color[0], color[1], color[2], color[3]);
		}
	}
	
	KvRewind(kv);
}

bool:IsModelFile(const String:model[])
{
	decl String:buf[4];
	File_GetExtension(model, buf, sizeof(buf));
	
	return !strcmp(buf, "mdl", false);
}

new String:_smlib_empty_twodimstring_array[][] = { { '\0' } };
stock File_AddToDownloadsTable(const String:path[], bool:recursive=true, const String:ignoreExts[][]=_smlib_empty_twodimstring_array, size=0)
{
	if (path[0] == '\0') {
		return;
	}

	if (FileExists(path)) {
		
		decl String:fileExtension[4];
		File_GetExtension(path, fileExtension, sizeof(fileExtension));
		
		if (StrEqual(fileExtension, "bz2", false) || StrEqual(fileExtension, "ztmp", false)) {
			return;
		}
		
		if (Array_FindString(ignoreExts, size, fileExtension) != -1) {
			return;
		}

		AddFileToDownloadsTable(path);
		
		if (StrEqual(fileExtension, "mdl", false))
		{
			PrecacheModel(path, true);
		}
	}
	
	else if (recursive && DirExists(path)) {

		decl String:dirEntry[PLATFORM_MAX_PATH];
		new Handle:__dir = OpenDirectory(path);

		while (ReadDirEntry(__dir, dirEntry, sizeof(dirEntry))) {

			if (StrEqual(dirEntry, ".") || StrEqual(dirEntry, "..")) {
				continue;
			}
			
			Format(dirEntry, sizeof(dirEntry), "%s/%s", path, dirEntry);
			File_AddToDownloadsTable(dirEntry, recursive, ignoreExts, size);
		}
		
		CloseHandle(__dir);
	}
	else if (FindCharInString(path, '*', true)) {
		
		new String:fileExtension[4];
		File_GetExtension(path, fileExtension, sizeof(fileExtension));

		if (StrEqual(fileExtension, "*")) {

			decl
				String:dirName[PLATFORM_MAX_PATH],
				String:fileName[PLATFORM_MAX_PATH],
				String:dirEntry[PLATFORM_MAX_PATH];

			File_GetDirName(path, dirName, sizeof(dirName));
			File_GetFileName(path, fileName, sizeof(fileName));
			StrCat(fileName, sizeof(fileName), ".");

			new Handle:__dir = OpenDirectory(dirName);
			while (ReadDirEntry(__dir, dirEntry, sizeof(dirEntry))) {

				if (StrEqual(dirEntry, ".") || StrEqual(dirEntry, "..")) {
					continue;
				}

				if (strncmp(dirEntry, fileName, strlen(fileName)) == 0) {
					Format(dirEntry, sizeof(dirEntry), "%s/%s", dirName, dirEntry);
					File_AddToDownloadsTable(dirEntry, recursive, ignoreExts, size);
				}
			}

			CloseHandle(__dir);
		}
	}

	return;
}

stock bool:File_ReadDownloadList(const String:path[])
{
	new Handle:file = OpenFile(path, "r");
	
	if (file  == INVALID_HANDLE) {
		return false;
	}

	new String:buffer[PLATFORM_MAX_PATH];
	while (!IsEndOfFile(file)) {
		ReadFileLine(file, buffer, sizeof(buffer));
		
		new pos;
		pos = StrContains(buffer, "//");
		if (pos != -1) {
			buffer[pos] = '\0';
		}
		
		pos = StrContains(buffer, "#");
		if (pos != -1) {
			buffer[pos] = '\0';
		}

		pos = StrContains(buffer, ";");
		if (pos != -1) {
			buffer[pos] = '\0';
		}
		
		TrimString(buffer);
		
		if (buffer[0] == '\0') {
			continue;
		}

		File_AddToDownloadsTable(buffer);
	}

	CloseHandle(file);
	
	return true;
}

stock File_GetExtension(const String:path[], String:buffer[], size)
{
	new extpos = FindCharInString(path, '.', true);
	
	if (extpos == -1)
	{
		buffer[0] = '\0';
		return;
	}

	strcopy(buffer, size, path[++extpos]);
}

stock Math_GetRandomInt(min, max)
{
	new random = GetURandomInt();
	
	if (random == 0)
		random++;

	return RoundToCeil(float(random) / (float(2147483647) / float(max - min + 1))) + min - 1;
}

stock Array_FindString(const String:array[][], size, const String:str[], bool:caseSensitive=true, start=0)
{
	if (start < 0) {
		start = 0;
	}

	for (new i=start; i < size; i++) {

		if (StrEqual(array[i], str, caseSensitive)) {
			return i;
		}
	}
	
	return -1;
}

stock bool:File_GetFileName(const String:path[], String:buffer[], size)
{	
	if (path[0] == '\0') {
		buffer[0] = '\0';
		return;
	}
	
	File_GetBaseName(path, buffer, size);
	
	new pos_ext = FindCharInString(buffer, '.', true);

	if (pos_ext != -1) {
		buffer[pos_ext] = '\0';
	}
}

stock bool:File_GetDirName(const String:path[], String:buffer[], size)
{	
	if (path[0] == '\0') {
		buffer[0] = '\0';
		return;
	}
	
	new pos_start = FindCharInString(path, '/', true);
	
	if (pos_start == -1) {
		pos_start = FindCharInString(path, '\\', true);
		
		if (pos_start == -1) {
			buffer[0] = '\0';
			return;
		}
	}
	
	strcopy(buffer, size, path);
	buffer[pos_start] = '\0';
}

stock bool:File_GetBaseName(const String:path[], String:buffer[], size)
{	
	if (path[0] == '\0') {
		buffer[0] = '\0';
		return;
	}
	
	new pos_start = FindCharInString(path, '/', true);
	
	if (pos_start == -1) {
		pos_start = FindCharInString(path, '\\', true);
	}
	
	pos_start++;
	
	strcopy(buffer, size, path[pos_start]);
}
 
Сверху Снизу