Skocz do zawartości
kox1906

[Rozwiązane] Zabójstwa i śmierci na czacie/ zabójstwo z kosy

Rekomendowane odpowiedzi

Cześć,

Dałem tu ostatnio temat o pluginie "zabójstwo z noża", który miał wyświetlać na czacie napis "attacker wbil kose pod zebra victim", ale chciałbym go ulepszyć. Po pierwsze chciałbym wypisać na czacie *tylko do clienta*, gdy ktoś go zabije, gdy on kogoś zabije a także wyróżnić, gdy dokonał zabójstwa nożem, lub gdy ktoś na nim dokona zabóstwa nożem komunikatem na czacie "Wbiłeś kosę pod żebra victim"/"attacker wbił Ci kosę pod żebra". Pierwszą część zrobiłem, ale mam takie warningi, nie wiem o co chodzi

// C:\Users\user\Desktop\Source Mode\###s_mode\scripting\serwer_zabojstwa.sp(12) : warning 217: loose indentation
// C:\Users\user\Desktop\Source Mode\###s_mode\scripting\serwer_zabojstwa.sp(13) : warning 217: loose indentation

Oto mój kod:

 ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­     

#include <sourcemod>

#include <multicolors>

 

public void OnPluginStart()

{

    HookEvent("player_death", OnPlayerDeath, EventHookMode_Post);

}

 

public Action OnPlayerDeath(Event event, const char[] name, bool dontBroadcast)

{

    int client = GetClientOfUserId(event.GetInt("userid"));

    int attacker = GetClientOfUserId(event.GetInt("attacker")); 

    CPrintToChat(client, "{lightred} Zabił Cię {darkred}%n", attacker);

    CPrintToChat(attacker, "{lightgreen} Zabiłeś {green} %n", client);

}

­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ ­­ 

 

Bardzo możliwe, że będę tu często rozpoczynał nowe tematy, bo jestem początkujący i chciałbym rozwijać swoje umiejętności i uczyć się pisać coraz bardziej skomplikowane pluginy. Z góry dzięki

 

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Napisano (edytowane)

@kox1906 Spróbuj tak:

 

#include <sourcemod>
#include <multicolors>

 

public void OnPluginStart() {

    HookEvent("player_death", OnPlayerDeath, EventHookMode_Post);

}
public Action OnPlayerDeath(Event event, const char[] name, bool dontBroadcast) {

    int client = GetClientOfUserId(event.GetInt("userid"));

    int attacker = GetClientOfUserId(event.GetInt("attacker")); 

    CPrintToChat(client, "{lightred} Zabił Cię {darkred}%n", attacker);

    CPrintToChat(attacker, "{lightgreen} Zabiłeś {green} %n", client);

}

 

Edytowane przez Zaku

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

@Zaku nie mam pojęcia jak to zrobiłeś i co tam zmieniłeś, ale działa. Jak można tu, na forum tak czytelnie i kolorowo to wszystko napisać

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Problem miałeś w klamrach { }. Zmieniłem ustawienie klamry po public void OnPluginStart() oraz public Action OnPlayerDeath(Event event, const char[] name, bool dontBroadcast)

 

Źle:

zle.thumb.JPG.8a650b9c9bc9ba2db18b4b6a26226298.JPG

 

Dobrze:

dobrze.thumb.JPG.65a5b56d6d80ee2c8be4d475e28624c3.JPG

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Napisano (edytowane)

@Zaku 

Ogólnie to z tego co wiem to taka i taka forma klamerek jest poprawna i nie ma żadnej róznicy w tym. Inne pluginy mam napisane w klamrach jak na sc nr 1. Poza tym teraz odpaliłem serwer na botach i gdy zabijam bota jest napis "Zabiłeś n", gdy ktoś mnie zabije jest napis "zabił Cię n" i mam jeszcze plugin z pierwszego odcinka Magneta !info. Na górze chcę wyświetlać nick clienta, a poniżej jego dane. Zamiast jego nicku jest "n"

EDIT: już wiem o co chodzi z tymi klamrami. Była linijka odstępu

EDIT2: Nie no kurde przecież w moim kodzie nie było odstępu to jednak nie wiem ocb XD

Edytowane przez kox1906

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Napisano (edytowane)

Zrobiłem KOPIUJ + WKLEJ Twojego kodu, co udostępniłeś na forum i są linijki przerwy:

przerwy.thumb.JPG.5a0252a857619dd7bee927f5fdcd1d9e.JPG

 

@kox1906

Wracając do drugiego problemu spróbuj tak:

 

 

 

#include <sourcemod>
#include <multicolors>

 

public void OnPluginStart() {

    HookEvent("player_death", OnPlayerDeath, EventHookMode_Post);

}
public Action OnPlayerDeath(Event event, const char[] name, bool dontBroadcast) {

    int client = GetClientOfUserId(event.GetInt("userid"));

    int attacker = GetClientOfUserId(event.GetInt("attacker")); 

    CPrintToChat(client, "{lightred} Zabił Cię {darkred}%N", attacker);

    CPrintToChat(attacker, "{lightgreen} Zabiłeś {green} %N", client);

}

 

Edytowane przez Zaku

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

@Zaku Nie wiem o co chodzi, ale nadal jest informacja "zabiłeś n", a to dziwne, bo przy innym pluginie, który wita użytkownika, gdy ten wbije na serwer normalnie koloruje i wyświetla "cześć *nick*"

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Napisano (edytowane)
#include <sourcemod>
#include <multicolors>



public void OnPluginStart()
{
	
	HookEvent("player_death", OnPlayerDeath, EventHookMode_Post);
	
}

public Action OnPlayerDeath(Event event, const char[] name, bool dontBroadcast)
{
	int client = GetClientOfUserId(event.GetInt("userid"));
	int attacker = GetClientOfUserId(event.GetInt("attacker"));
	
	char clientname[32], attackername[32];
	
	GetClientName(client, clientname, sizeof(clientname));
	GetClientName(attacker, attackername, sizeof(attackername));
	
	if (IsValidClient(client) && IsValidClient(attacker))
	{
		CPrintToChat(client, "{lightred} Zabił Cię {darkred}%s", attackername);
		CPrintToChat(attacker, "{lightgreen} Zabiłeś {green} %s", clientname);
	}
	
}

//wziete z vipa od Mesharsky
stock bool IsValidClient(int client)
{
	if (client <= 0 || client > MaxClients) {
		return false;
	}
	
	if (!IsClientInGame(client)) {
		return false;
	}
	
	if (IsFakeClient(client)) {
		return false;
	}
	
	return true;
}

spróbuj to i daj znać czy działa

Edytowane przez haooy

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Wiadomość wygenerowana automatycznie

 

Problem został rozwiązany

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

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.

×
×
  • Dodaj nową pozycję...