Skocz do zawartości

Rekomendowane odpowiedzi

Siema, nie jestem jakiś mega zielony w przerabianiu pluginów, ale mam problem. Otóż chciałem przerobić plugin Gloves v 1.0.5 żeby działało to tylko dla VIP'a, wyszło to tak
 

	RegAdminCmd("sm_gloves", CommandGlove, ADMINFLAG_CUSTOM1);
	RegAdminCmd("sm_glove", CommandGlove, ADMINFLAG_CUSTOM1);
	RegAdminCmd("sm_eldiven", CommandGlove, ADMINFLAG_CUSTOM1);
	RegAdminCmd("sm_gllang", CommandGloveLang, ADMINFLAG_CUSTOM1);


Przy kompilacji lokalnej mam taki błąd
 

//// gloves.sp
//
// gloves.sp(53) : error 029: invalid expression, assumed zero
// gloves.sp(53) : error 035: argument type mismatch (argument 3)
// gloves.sp(55) : error 017: undefined symbol "ADMINFLAG_CUSTOM1"
// gloves.sp(56) : error 017: undefined symbol "ADMINFLAG_CUSTOM1"
// gloves.sp(57) : error 017: undefined symbol "ADMINFLAG_CUSTOM1"
// gloves.sp(58) : error 017: undefined symbol "ADMINFLAG_CUSTOM1"
//
// 6 Errors.
//
// Compilation Time: 0,25 sec
// ----------------------------------------


No i oczywiście plugin się nie kompiluje 😕 Co zrobiłem źle

Edytowane przez SprINt3R
Odnośnik do odpowiedzi
Udostępnij na innych stronach
Godzinę temu, szogun napisał:
undefined symbol "ADMINFLAG_CUSTOM1"

Nie ma takiej flagi w sourcemod, sprawdź jak powinna wyglądać poprawnie zdefiniowana flaga

 

 

Po zmianie na ADMFLAG_CUSTOM1 i po próbie kompilacji taki błąd
 

//// gloves.sp
//
// gloves.sp(53) : error 029: invalid expression, assumed zero
// gloves.sp(53) : error 035: argument type mismatch (argument 3)
//
// 2 Errors.
//
// Compilation Time: 0,27 sec
// ----------------------------------------

 

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • 3 tygodnie później...

Proszę:

Spoiler

/*  CS:GO Gloves SourceMod Plugin
 *
 *  Copyright (C) 2017 Kağan 'kgns' Üstüngel
 * 
 * This program 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, either version 3 of the License, or (at your option) 
 * any later version.
 *
 * 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 
 * this program. If not, see http://www.gnu.org/licenses/.
 */

#include <sourcemod>
#include <sdktools>
#include <cstrike>

#pragma semicolon 1
#pragma newdecls required

#include "gloves/globals.sp"
#include "gloves/hooks.sp"
#include "gloves/helpers.sp"
#include "gloves/database.sp"
#include "gloves/config.sp"
#include "gloves/menus.sp"
#include "gloves/natives.sp"

ConVar g_cvVipFlag;

public Plugin myinfo = 
{
	name = "Gloves",
	author = "kgns | oyunhost.net",
	description = "CS:GO Gloves Management",
	version = "1.0.5",
	url = "https://www.oyunhost.net"
};

public void OnPluginStart()
{
	LoadTranslations("gloves.phrases");
	
	g_Cvar_DBConnection = CreateConVar("sm_gloves_db_connection", "storage-local", "Database connection name in databases.cfg to use");
	g_Cvar_TablePrefix = CreateConVar("sm_gloves_table_prefix", "", "Prefix for database table (example: 'xyz_')");
	g_Cvar_ChatPrefix = CreateConVar("sm_gloves_chat_prefix", "[oyunhost.net]", "Prefix for chat messages");
	g_Cvar_EnableFloat = CreateConVar("sm_gloves_enable_float", "1", "Enable/Disable gloves float options");
	g_Cvar_FloatIncrementSize = CreateConVar("sm_gloves_float_increment_size", "0.2", "Increase/Decrease by value for gloves float");
	g_Cvar_EnableWorldModel = CreateConVar("sm_gloves_enable_world_model", "1", "Enable/Disable gloves to be seen by other living players");
	g_cvVipFlag = CreateConVar("vip_flag_gloves", "o", "Flaga którą musi mieć gracz by posiadać VIP'a (Zostaw puste to każdy będzie mieć Vipa).");
	
	AutoExecConfig(true, "gloves");
	
	RegConsoleCmd("sm_gloves", CommandGlove);
	RegConsoleCmd("sm_glove", CommandGlove);
	RegConsoleCmd("sm_eldiven", CommandGlove);
	RegConsoleCmd("sm_gllang", CommandGloveLang);
	
	HookEvent("player_spawn", Event_PlayerSpawn, EventHookMode_Pre);
	
	AddCommandListener(ChatListener, "say");
	AddCommandListener(ChatListener, "say2");
	AddCommandListener(ChatListener, "say_team");
}

public void OnConfigsExecuted()
{
	GetConVarString(g_Cvar_DBConnection, g_DBConnection, sizeof(g_DBConnection));
	GetConVarString(g_Cvar_TablePrefix, g_TablePrefix, sizeof(g_TablePrefix));
	
	if(g_DBConnectionOld[0] != EOS && strcmp(g_DBConnectionOld, g_DBConnection) != 0 && db != null)
	{
		delete db;
		db = null;
	}
	
	if(db == null)
	{
		Database.Connect(SQLConnectCallback, g_DBConnection);
	}
	
	strcopy(g_DBConnectionOld, sizeof(g_DBConnectionOld), g_DBConnection);
	
	g_Cvar_ChatPrefix.GetString(g_ChatPrefix, sizeof(g_ChatPrefix));
	g_iEnableFloat = g_Cvar_EnableFloat.IntValue;
	g_fFloatIncrementSize = g_Cvar_FloatIncrementSize.FloatValue;
	g_iFloatIncrementPercentage = RoundFloat(g_fFloatIncrementSize * 100.0);
	g_iEnableWorldModel = g_Cvar_EnableWorldModel.IntValue;
	ReadConfig();
}

public Action CommandGlove(int client, int args)
{
	if (IsValidClient(client))
	{
		if(!IsPlayerVip(client)) 
		{
			PrintToChat(client, "Komenda tylko dla vipa");
			return Plugin_Handled;
		}
		else
			CreateMainMenu(client).Display(client, MENU_TIME_FOREVER);
	}
	return Plugin_Handled;
}

public Action CommandGloveLang(int client, int args)
{
	if (IsValidClient(client))
	{
		CreateLanguageMenu(client).Display(client, MENU_TIME_FOREVER);
	}
	return Plugin_Handled;
}

public void OnClientPostAdminCheck(int client)
{
	if(IsValidClient(client))
	{
		char steam32[20];
		char temp[20];
		GetClientAuthId(client, AuthId_Steam3, steam32, sizeof(steam32));
		strcopy(temp, sizeof(temp), steam32[5]);
		int index;
		if((index = StrContains(temp, "]")) > -1)
		{
			temp[index] = '\0';
		}
		g_iSteam32[client] = StringToInt(temp);
		GetPlayerData(client);
		QueryClientConVar(client, "cl_language", ConVarCallBack);
	}
}

public void ConVarCallBack(QueryCookie cookie, int client, ConVarQueryResult result, const char[] cvarName, const char[] cvarValue)
{
	if(!g_smLanguageIndex.GetValue(cvarValue, g_iClientLanguage[client]))
	{
		g_iClientLanguage[client] = 0;
	}
}

public void GivePlayerGloves(int client)
{
	int playerTeam = GetClientTeam(client);
	if(g_iGloves[client][playerTeam] != 0)
	{
		int ent = GetEntPropEnt(client, Prop_Send, "m_hMyWearables");
		if(ent != -1)
		{
			AcceptEntityInput(ent, "KillHierarchy");
		}
		FixCustomArms(client);
		ent = CreateEntityByName("wearable_item");
		if(ent != -1)
		{
			SetEntProp(ent, Prop_Send, "m_iItemIDLow", -1);
			
			if(g_iGloves[client][playerTeam] == -1)
			{
				char buffer[20];
				char buffers[2][10];
				GetRandomSkin(client, playerTeam, buffer, sizeof(buffer), g_iGroup[client][playerTeam]);
				ExplodeString(buffer, ";", buffers, 2, 10);
				SetEntProp(ent, Prop_Send, "m_iItemDefinitionIndex", StringToInt(buffers[0]));
				SetEntProp(ent, Prop_Send,  "m_nFallbackPaintKit", StringToInt(buffers[1]));
			}
			else
			{
				SetEntProp(ent, Prop_Send, "m_iItemDefinitionIndex", g_iGroup[client][playerTeam]);
				SetEntProp(ent, Prop_Send,  "m_nFallbackPaintKit", g_iGloves[client][playerTeam]);
			}
			SetEntPropFloat(ent, Prop_Send, "m_flFallbackWear", g_fFloatValue[client][playerTeam]);
			SetEntPropEnt(ent, Prop_Data, "m_hOwnerEntity", client);
			SetEntPropEnt(ent, Prop_Data, "m_hParent", client);
			if(g_iEnableWorldModel) SetEntPropEnt(ent, Prop_Data, "m_hMoveParent", client);
			SetEntProp(ent, Prop_Send, "m_bInitialized", 1);
			
			DispatchSpawn(ent);
			
			SetEntPropEnt(client, Prop_Send, "m_hMyWearables", ent);
			if(g_iEnableWorldModel) SetEntProp(client, Prop_Send, "m_nBody", 1);
		}
	}
}

stock bool IsPlayerVip(int client)
{
	char flag[10];
	g_cvVipFlag.GetString(flag, sizeof(flag));
	
	if (GetUserFlagBits(client) & ReadFlagString(flag) || GetAdminFlag(GetUserAdmin(client), Admin_Root))
		return true;
	return false;
}

 

 

gloves.sp

  • Lubię to!
Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ostatnio przeglądający ten temat (5 użytkowników)

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...