Skocz do zawartości

Rekomendowane odpowiedzi

Cześć, napisałem dzisiaj swój piewszy plugin, nie jest on jakiś mega wymagający. Po wgraniu wywaliło cały serwer.

#include <sourcemod>
#include <multicolors>
#include <cstrike>


public void OnPluginStart() {
    RegConsoleCmd("say", Chat);
}

public Action Chat(int client, int args) {
    char buffer[512];
    GetCmdArgString(buffer, sizeof(buffer));
    StripQuotes(buffer);
    char steamIdBuffer[64];
GetClientAuthId(client, AuthId_Steam2, steamIdBuffer, sizeof(steamIdBuffer));

if (StrEqual(steamIdBuffer, "STEAM_1:1:528777533", true)) {

    CPrintToChatAll("%s%s%N{default} %s", "{green}TAG ", GetClientTeam(client)== CS_TEAM_T ? "{red}" : "{blue}", client, buffer);

    return Plugin_Handled;
}


}

Może ktoś by podpowiedział co robie zle

Sygnatura użytkownika

sygnatura.png.2bb174ebd0d762771c922cae7f9ce73c.png

 

Odnośnik do odpowiedzi
Udostępnij na innych stronach

Samego say nie musisz rejestrować, wystarczy zadeklarować akcję OnChatMessage.

 

#include <sourcemod>
#include <multicolors>
#include <cstrike>

public Action OnChatMessage(&author, Handle recipients, String:name[], String:message[])
{
	if (IsValidPlayer(author))
	{
		char steamIdBuffer[64];
		GetClientAuthId(client, AuthId_SteamID64, steamIdBuffer, sizeof(steamIdBuffer));
		
		if (StrEqual(steamIdBuffer, "STEAM_1:1:528777533", true))
		{
			Format(name, MAXLENGTH_NAME, "�%s", name);
			new MaxMessageLength = MAXLENGTH_MESSAGE - strlen(name) - 5;
			Format(name, MaxMessageLength, " TAG %s", name);
			return Plugin_Changed;
		}
		else
		{
			Format(name, MAXLENGTH_NAME, "�%s", name);
			new MaxMessageLength = MAXLENGTH_MESSAGE - strlen(name) - 5;
			Format(name, MaxMessageLength, " %s", name);
			return Plugin_Changed;
		}
	}
	return Plugin_Continue;
} 

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

To powinno zadziałać.

  • Dobry pomysł!
Odnośnik do odpowiedzi
Udostępnij na innych stronach

Oprócz tego, że white space jest niekoniecznie odpowiedni w paru miejscach i funkcja Chat nie zwraca wartości w przypadku nie wejścia do warunku(naprawiane przy kompilacji), to wszystko jest ok. Nie powinno crashować serwera. Zobacz logi.

Odnośnik do odpowiedzi
Udostępnij na innych stronach
8 godzin temu, PyNiO napisał:

Samego say nie musisz rejestrować, wystarczy zadeklarować akcję OnChatMessage.

 

#include <sourcemod>
#include <multicolors>
#include <cstrike>

public Action OnChatMessage(&author, Handle recipients, String:name[], String:message[])
{
	if (IsValidPlayer(author))
	{
		char steamIdBuffer[64];
		GetClientAuthId(client, AuthId_SteamID64, steamIdBuffer, sizeof(steamIdBuffer));
		
		if (StrEqual(steamIdBuffer, "STEAM_1:1:528777533", true))
		{
			Format(name, MAXLENGTH_NAME, "�%s", name);
			new MaxMessageLength = MAXLENGTH_MESSAGE - strlen(name) - 5;
			Format(name, MaxMessageLength, " TAG %s", name);
			return Plugin_Changed;
		}
		else
		{
			Format(name, MAXLENGTH_NAME, "�%s", name);
			new MaxMessageLength = MAXLENGTH_MESSAGE - strlen(name) - 5;
			Format(name, MaxMessageLength, " %s", name);
			return Plugin_Changed;
		}
	}
	return Plugin_Continue;
} 

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

To powinno zadziałać.

Dlaczego wciąż piszesz w starej składni? 

Sygnatura użytkownika

Pomogłem? Daj lajka! 🤗🥰

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • 4 miesiące temu...
  • Moderator poziom 2

Wiadomość wygenerowana automatycznie

 

Problem został rozwiązany

Jeżeli się z tym nie zgadzasz, raportuj ten post

Sygnatura użytkownika

» Support: https://discord.com/invite/zMXt97R63v

» Steam: https://steamcommunity.com/id/pawelsteam/

» Discord: Paweł#8244

» PluginyCS: https://pluginycs.pl/profile/Pawel

» Przyjmuję zlecenia na paczki oraz pluginy.  «

Odnośnik do odpowiedzi
Udostępnij na innych stronach

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

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
×
×
  • Dodaj nową pozycję...