Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
CS:GO

Ograniczanie działania pluginu

cs:go

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
8 odpowiedzi w tym temacie

#1 Barto_12_SAS

    mów mi Paja

  • Użytkownik

Reputacja: 44
Pomocny

  • Postów:433
  • GG:
  • Imię:Bartosz
  • Lokalizacja:Dąbrowa
Offline

Napisano 21.06.2015 11:18

Witam chciałem sobie przerobić te pluginy:

http://amxx.pl/topic...artowego-życia/

http://amxx.pl/topic/65076-roundmoney/

http://amxx.pl/topic...egeneracja-hp/ 

aby działały w zależności od tego jaki admin jest aktualnie w grze i tylko dla drużyny, w której się znajduje. Z SM jestem zielony i proszę o jakieś wskazówki, czy chociażby funkcje dodawania flag do pluginu. 


  • +
  • -
  • 0

www.BartoIT.pl

:plus: - klikasz to, a dzięki temu rozwijam ten profil
Odwiedź strefę pobierania i pobierz wersję testową alfa Counter Strike: Global terror MOD


#2 Linux'

    Pan Pomocny

  • Power User

Reputacja: 549
Wszechwiedzący

  • Postów:1 501
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:AmxMod i SourceMod
Offline

Napisano 29.06.2015 16:14

Najlepiej bedzie scalic wszystkie pluginy w jeden. Nie testowalem ale powinno dzialac gdy jest na serwerze admin.

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

new maksymalne_zdrowie = 130;
new dodatkowe_dolary = 5000;
new jestem_melepeta = 0;

public OnPluginStart()
{
    CreateConVar("Modificy Player", "1.0", "Linux`");
    HookEvent("round_start", UchwycRunde);
    HookEvent("round_end", UchwycRunde);
    HookEvent("player_spawn", Odrodzenie);
}
public OnClientAuthorized(client)
{
    if(GetUserFlagBits(client) & ADMFLAG_BAN)
        jestem_melepeta = 1;
}
public OnClientDisconnect(client)
{
    if(GetUserFlagBits(client) & ADMFLAG_BAN)
        jestem_melepeta = 0;
}
public Action:UchwycRunde(Handle:event_round, const String:name[], bool:dontBroadcast)
{
    if(jestem_melepeta)
        return;

    for(new i = 1, max = GetMaxClients(); i <= max; ++ i)
    {
        if(IsClientInGame(i))
            SetEntData(i, FindSendPropOffs("CCSPlayer", "m_iAccount"), GetEntData(i, FindSendPropOffs("CCSPlayer", "m_iAccount"))+dodatkowe_dolary);
    }
}
public Action:Odrodzenie(Handle:event_spawn, const String:name[], bool:dontBroadcast)
{
    new client = GetClientOfUserId(GetEventInt(event_spawn, "userid"));
    if(jestem_melepeta || !IsValidClient(client))
        return;

    if(IsPlayerAlive(client))
        SetEntData(client, FindDataMapOffs(client, "m_iHealth"), maksymalne_zdrowie);
}
stock bool:IsValidClient(client)
{
    if(client >= 1 && client <= MaxClients && IsClientInGame(client))
        return true;

    return false;
}

To bedzie cos na ten ksztalt. Jak chcesz wykryc jaki dokladniej ma byc admin by wylaczal te pluginy to musisz ustawic inna flage, taka ktora przypiszesz tylko dla wybranej osoby. A co do dzialania pluginu gdy w druzynie jest admin, chyba najlepszym wyjsciem bedzie dodanie stocka sprawdzajacego czy w druzynie jest admin przed wykonaniem funkcji. Teraz sie spiesze, moze pozniej cos wyskrobie.

 


  • +
  • -
  • 0

b35020692_qesnxqa.png


#3 Barto_12_SAS

    mów mi Paja

  • Autor tematu
  • Użytkownik

Reputacja: 44
Pomocny

  • Postów:433
  • GG:
  • Imię:Bartosz
  • Lokalizacja:Dąbrowa
Offline

Napisano 01.07.2015 22:26

Postaram się przetestować to jak najszybciej. 

 

Ta linijka 

new client = GetClientOfUserId(GetEventInt(event_spawn, "userid"));

Sprawdza, w której drużynie jest admin i wspiera tylko tą regeneracją? 


  • +
  • -
  • 0

www.BartoIT.pl

:plus: - klikasz to, a dzięki temu rozwijam ten profil
Odwiedź strefę pobierania i pobierz wersję testową alfa Counter Strike: Global terror MOD


#4 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 02.07.2015 06:40

Nie, ta linijka pobiera id gracza.
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#5 Linux'

    Pan Pomocny

  • Power User

Reputacja: 549
Wszechwiedzący

  • Postów:1 501
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:AmxMod i SourceMod
Offline

Napisano 03.07.2015 10:24

Sprawdz teraz. Troche poprawilem kod, wczesniej jak bylo na serwerze kilku adminow to przy wyjsciu jednego funkcje przestawaly dzialac.

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

new maksymalne_zdrowie = 130;
new dodatkowe_dolary = 5000;

public OnPluginStart()
{
	CreateConVar("Modificy Player", "1.0", "Linux`");
	HookEvent("round_start", UchwycRunde);
	HookEvent("round_end", UchwycRunde);
	HookEvent("player_spawn", Odrodzenie);
}
public Action:UchwycRunde(Handle:event_round, const String:name[], bool:dontBroadcast)
{
	new client = GetClientOfUserId(GetEventInt(event_round, "userid"));
	if(!IsValidClient(client) || !IsValidTeamAdmin(client))
		return;

	SetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"), GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"))+dodatkowe_dolary);
}
public Action:Odrodzenie(Handle:event_spawn, const String:name[], bool:dontBroadcast)
{
	new client = GetClientOfUserId(GetEventInt(event_spawn, "userid"));
	if(!IsValidClient(client) || !IsValidTeamAdmin(client))
		return;

	if(IsPlayerAlive(client))
		SetEntData(client, FindDataMapOffs(client, "m_iHealth"), maksymalne_zdrowie);
}
public bool:IsValidClient(client)
{
	if(client >= 1 && client <= MaxClients && IsClientInGame(client))
		return true;

	return false;
}
public bool:IsValidTeamAdmin(client)
{
	for(new i = 1, max = GetMaxClients(); i <= max; ++ i)
	{
		if(IsClientInGame(i) && GetClientTeam(client) == GetClientTeam(i) && GetUserFlagBits(i) & ADMFLAG_BAN)
			return true;
	}

	return false;
}

I teraz jak chcesz zrobic by funkcja wykonywala sie tylko dla graczy ktorzy sa w jednej druzynie z adminem dodajesz na poczatku publicu sprawdzanie czy gracz jest podlaczony i czy jest admin w druzynie:

if(!IsValidClient(client) || !IsValidTeamAdmin(client))
	return;


  • +
  • -
  • 0

b35020692_qesnxqa.png


#6 Barto_12_SAS

    mów mi Paja

  • Autor tematu
  • Użytkownik

Reputacja: 44
Pomocny

  • Postów:433
  • GG:
  • Imię:Bartosz
  • Lokalizacja:Dąbrowa
Offline

Napisano 03.07.2015 20:05

Czy jak tak przerobię 

if(IsPlayerAlive(client) & GetUserFlagBits(client) & ADMFLAG_BAN)
		SetEntData(client, FindDataMapOffs(client, "m_iHealth"), maksymalne_zdrowie);
	else 
		SetEntData(client, FindDataMapOffs(client, "m_iHealth"), (maksymalne_zdrowie-20));

to góra zadziała tylko dla admina a reszta dla drużyny? Kompilator zwrócił w pierwszej linijce "warning 213: tag mismatch"


  • +
  • -
  • 0

www.BartoIT.pl

:plus: - klikasz to, a dzięki temu rozwijam ten profil
Odwiedź strefę pobierania i pobierz wersję testową alfa Counter Strike: Global terror MOD


#7 Linux'

    Pan Pomocny

  • Power User

Reputacja: 549
Wszechwiedzący

  • Postów:1 501
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:AmxMod i SourceMod
Offline

Napisano 03.07.2015 20:08

Czy jak tak przerobię 

if(IsPlayerAlive(client) & GetUserFlagBits(client) & ADMFLAG_BAN)
		SetEntData(client, FindDataMapOffs(client, "m_iHealth"), maksymalne_zdrowie);
	else 
		SetEntData(client, FindDataMapOffs(client, "m_iHealth"), (maksymalne_zdrowie-20));

to góra zadziała tylko dla admina a reszta dla drużyny? Kompilator zwrócił w pierwszej linijce "warning 213: tag mismatch"

 

 

To tak nie dziala :crazy: . Jeszcze sie musisz wiele nauczyc, wzoruj sie na tym co ci napisalem. A najlepiej to napisz jaki chcesz uzyskac efekt koncowy.


  • +
  • -
  • 0

b35020692_qesnxqa.png


#8 Barto_12_SAS

    mów mi Paja

  • Autor tematu
  • Użytkownik

Reputacja: 44
Pomocny

  • Postów:433
  • GG:
  • Imię:Bartosz
  • Lokalizacja:Dąbrowa
Offline

Napisano 03.07.2015 20:52

Chciałbym, aby admin dostał np. 125 hp, a jego drużyna 105. Natomiast dodatkową gotówkę tylko dla administratora. 

A i chyba nie łączyłeś do tego tej regeneracji hp? 

Nie bardzo mam teraz czas na SM, więc na razie muszę metodą prób i błędów :/


  • +
  • -
  • 0

www.BartoIT.pl

:plus: - klikasz to, a dzięki temu rozwijam ten profil
Odwiedź strefę pobierania i pobierz wersję testową alfa Counter Strike: Global terror MOD


#9 Linux'

    Pan Pomocny

  • Power User

Reputacja: 549
Wszechwiedzący

  • Postów:1 501
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:AmxMod i SourceMod
Offline

Napisano 04.07.2015 09:08

Chciałbym, aby admin dostał np. 125 hp, a jego drużyna 105. Natomiast dodatkową gotówkę tylko dla administratora. 

A i chyba nie łączyłeś do tego tej regeneracji hp? 

Nie bardzo mam teraz czas na SM, więc na razie muszę metodą prób i błędów :/

 

 

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

new maksymalne_zdrowie = 105;
new dodatkowe_dolary = 5000;

public OnPluginStart()
{
	CreateConVar("Modificy Player", "1.0", "Linux`");
	HookEvent("round_start", UchwycRunde);
	HookEvent("round_end", UchwycRunde);
	HookEvent("player_spawn", Odrodzenie);
}
public Action:UchwycRunde(Handle:event_round, const String:name[], bool:dontBroadcast)
{
	new client = GetClientOfUserId(GetEventInt(event_round, "userid"));
	if(!IsValidClient(client) || !(GetUserFlagBits(client) & ADMFLAG_BAN))
		return;

	SetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"), GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"))+dodatkowe_dolary);
}
public Action:Odrodzenie(Handle:event_spawn, const String:name[], bool:dontBroadcast)
{
	new client = GetClientOfUserId(GetEventInt(event_spawn, "userid"));
	if(!IsValidClient(client) || !IsValidTeamAdmin(client))
		return;

	if(IsPlayerAlive(client))
		SetEntData(client, FindDataMapOffs(client, "m_iHealth"), (GetUserFlagBits(client) & ADMFLAG_BAN)? maksymalne_zdrowie+20: maksymalne_zdrowie);
}
public bool:IsValidClient(client)
{
	if(client >= 1 && client <= MaxClients && IsClientInGame(client))
		return true;

	return false;
}
public bool:IsValidTeamAdmin(client)
{
	for(new i = 1, max = GetMaxClients(); i <= max; ++ i)
	{
		if(IsClientInGame(i) && GetClientTeam(client) == GetClientTeam(i) && GetUserFlagBits(i) & ADMFLAG_BAN)
			return true;
	}

	return false;
}

Regeneracji nie dodawalem, bo tak jak mowie to jest to taki pierwowzor. Pomagam ludziom ale nie robie tego za nich. Juz wiesz o co chodzi, jak chcesz regeneracje to sobie dodaj wzorujac sie na tym co wyzej. Masz rece, nozki to sobie radz...


  • +
  • -
  • 0

b35020692_qesnxqa.png






Również z jednym lub większą ilością słów kluczowych: cs:go

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych