Skocz do zawartości
ASzaz

Plugin na respawn - problem z clientem

Rekomendowane odpowiedzi

Spoiler
#pragma semicolon 1

#define DEBUG

#define PLUGIN_AUTHOR "ASzaz"
#define PLUGIN_VERSION "0.1"

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

#pragma newdecls required

int vip[MAXPLAYERS + 1]; 
int respy[MAXPLAYERS + 1];
int client2[MAXPLAYERS +1];
bool alive[MAXPLAYERS + 1];


public Plugin myinfo = 
{
	name = "Respawn - MG course",
	author = PLUGIN_AUTHOR,
	description = "Respi graczy",
	version = PLUGIN_VERSION,
	url = "sdfsd"
};

public void OnPluginStart()
{
	RegConsoleCmd("sm_respawn", CommandRespawn);
	RegConsoleCmd("sm_ile", CommandRespawns);
	HookEvent("round_start", EventRunda);
}

public void OnClientPostAdminCheck(int client)
{
    vip[client] = GetUserFlagBits(client);
    
 	if (vip[client] == 0)
 		respy[client] = 5;
 	else 
 		respy[client] = 8;
}


public Action CommandRespawns (int client, int args)
{	
	if (vip[client] == 0)
	PrintToChat(client, "Zostało Ci: %i respów! Kup VIP aby mieć ich 8", respy[client]);
	else 
	PrintToChat(client, "Jako VIP masz jeszcze: %i respów", respy[client]);
	
}

public Action CommandRespawn (int client, int args)
{
	if (respy[client] > 0)
    	{	
    		alive[client] = IsPlayerAlive(client);
    		
    		if (alive[client] == false)
    		
    		{
    			CS_RespawnPlayer(client);
    			respy[client]--;
    		}
    		else 
    		
    		{	
    			PrintToChat(client, "////////////////////////////////////////////////////////");
    			PrintToChat(client, "Tylko martwa osoba może użyć tej komendy!");
    			PrintToChat(client, "Aby zresetować czas wpisz !r !s lub !restart");
    			PrintToChat(client, "////////////////////////////////////////////////////////");
    		}
    		
			
    		
    	}
    else 
   		if (vip[client]==0)
   			PrintToChat(client, "Brak respów! Kup VIP'a aby mieć 3 dodatkowe!");
   			
		else 
    		PrintToChat(client, "Skończyły Ci się respy.");

}


public Action EventRunda(Event event, const char[] name, bool dontBroadcast)
{
	if (vip[client] == 0)
 		respy[client] = 5;
 	else 
 		respy[client] = 8;
}

Witam!

Mam kilka pytań co do powyższego pluginu ~~ oczywiście nie działa resetowanie na EventRunda - nie wiem co uczynić aby respy które indexuję do clienta w reszcie pluginu przypisać do niego mimo braku zmiennej w tym evencie.

 

public Action EventRunda(Event event, const char[] name, bool dontBroadcast)
{
	if (vip[client] == 0)
 		respy[client] = 5;
 	else 
 		respy[client] = 8;
}

 GetUserFlagBits - z tego co wiem to podaje nam to flagę clienta. Moje pytanie jest następujące, jaką wartość zwróci te polecenie dla flagi Custom1/2/3 itp 

 

Errory z konsoli :

Spoiler

respawn.sp(92) : error 017: undefined symbol "client"

respawn.sp(93) : error 017: undefined symbol "client"

respawn.sp(95) : error 017: undefined symbol "client"

 

Z góry dziękuję 😅

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Nie sprawdzałem, ale powinno działać

#pragma semicolon 1

#define DEBUG

#define PLUGIN_AUTHOR "ASzaz edit. PyNiO"
#define PLUGIN_VERSION "0.2"

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

int g_iRespawn[MAXPLAYERS + 1];


public Plugin myinfo = 
{
	name = "Respawn - MG course", 
	author = PLUGIN_AUTHOR, 
	description = "Respi graczy", 
	version = PLUGIN_VERSION, 
	url = "sdfsd"
};

public void OnPluginStart()
{
	RegConsoleCmd("sm_respawn", CommandRespawn);
	RegConsoleCmd("sm_ile", CommandRespawns);
	HookEvent("round_start", EventRunda);
}

public void OnClientPostAdminCheck(int client)
{
	if (IsPlayerGenericAdmin(client))
		g_iRespawn[client] = 8;
	else
		g_iRespawn[client] = 5;
}


public Action CommandRespawns(int client, int args)
{
	if (!IsPlayerGenericAdmin(client))
		PrintToChat(client, "Zostało Ci: %i respów! Kup VIP aby mieć ich 8", g_iRespawn[client]);
	else
		PrintToChat(client, "Jako VIP masz jeszcze: %i respów", g_iRespawn[client]);
	
}

public Action CommandRespawn(int client, int args)
{
	if (IsPlayerAlive(client))
	{
		if (g_iRespawn[client] > 0)
		{
			CS_RespawnPlayer(client);
			g_iRespawn[client]--;
		}
		else
		{
			if (!IsPlayerGenericAdmin(client))
				PrintToChat(client, "Brak respów! Kup VIP'a aby mieć 3 dodatkowe!");
			else
				PrintToChat(client, "Skończyły Ci się respy.");
		}
	}
	else
	{
		PrintToChat(client, "////////////////////////////////////////////////////////");
		PrintToChat(client, "Tylko martwa osoba może użyć tej komendy!");
		PrintToChat(client, "Aby zresetować czas wpisz !r !s lub !restart");
		PrintToChat(client, "////////////////////////////////////////////////////////");
	}
}


public Action EventRunda(Event event, const char[] name, bool dontBroadcast)
{
	for (int client = 1; client < MaxClients; client++)
	{
		if (IsValidPlayer(client))
		{
			if (IsPlayerGenericAdmin(client))
				g_iRespawn[client] = 8;
			else
				g_iRespawn[client] = 5;
		}
	}
}

stock bool IsValidPlayer(client)
{
	if (client >= 1 && client <= MaxClients && IsClientConnected(client) && !IsFakeClient(client) && IsClientInGame(client))
		return true;
	
	return false;
}

stock bool IsPlayerGenericAdmin(client)
{
	if (CheckCommandAccess(client, "generic_admin", ADMFLAG_CUSTOM1, false))
	{
		return true;
	}
	
	return false;
}

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Spoiler
public Action CommandRespawn(int client, int args)
{
	if (IsPlayerAlive(client))
	{
		if (g_iRespawn[client] > 0)
		{
			CS_RespawnPlayer(client);
			g_iRespawn[client]--;
		}
		else
		{
			if (!IsPlayerGenericAdmin(client))
				PrintToChat(client, "Brak respów! Kup VIP'a aby mieć 3 dodatkowe!");
			else
				PrintToChat(client, "Skończyły Ci się respy.");
		}
	}
	else
	{
		PrintToChat(client, "////////////////////////////////////////////////////////");
		PrintToChat(client, "Tylko martwa osoba może użyć tej komendy!");
		PrintToChat(client, "Aby zresetować czas wpisz !r !s lub !restart");
		PrintToChat(client, "////////////////////////////////////////////////////////");
	}
}

na to :

public Action CommandRespawn(int client, int args)
{
	if (IsPlayerAlive(client))
	{
		PrintToChat(client, "////////////////////////////////////////////////////////");
		PrintToChat(client, "Tylko martwa osoba może użyć tej komendy!");
		PrintToChat(client, "Aby zresetować czas wpisz !r !s lub !restart");
		PrintToChat(client, "////////////////////////////////////////////////////////");
	}
	else
	{
		if (g_iRespawn[client] > 0)
		{
			CS_RespawnPlayer(client);
			g_iRespawn[client]--;
		}
		else
		{
			if (!IsPlayerGenericAdmin(client))
				PrintToChat(client, "Brak respów! Kup VIP'a aby mieć 3 dodatkowe!");
			else
				PrintToChat(client, "Skończyły Ci się respy.");
		}
		
	}

 

Po zamianie tego co było w if na to co było w else jest wszystko w porzadku, bardzo dziękuję 😄.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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ć obrazków. Dodaj lub załącz obrazki z adresu URL.


×
×
  • Dodaj nową pozycję...