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

Plugin sprawdzający interp wybranego gracza


  • Zamknięty Temat jest zamknięty
10 odpowiedzi w tym temacie

#1 szukam bana

    Nowy

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:5
Offline

Napisano 25.03.2009 13:34

Witam wszystkich!

Otóż urodził mi się w głowie taki pomysł i mam 2 opcje. Chciałbym, aby w miarę możliwości ktoś mi pomógł.

#include <amxmodx>
#define MIN_TIME 1.0

new gcvarMinInterp,gcvarMaxInterp,gcvarPunish,gcvarPunishDelay;
new gcvarShowTut;

#include "colorChat.inl"

public plugin_init(){
	register_plugin("Pokaz interp","1.2","grankee&r3x")
	gcvarMinInterp=	register_cvar("amx_mininterp","0.01",0,0.01);
	gcvarMaxInterp=register_cvar("amx_maxinterp","0.01",0,0.01);
	gcvarPunish=register_cvar("amx_baninterp_punish","0");
	gcvarPunishDelay=register_cvar("amx_baninterp_delay","30.0");
	gcvarShowTut=register_cvar("amx_show_tutorial","1");
	pokaz()
}
public pokaz(){
	new players[32],count
	get_players(players,count)
	for(new i=0;i<count;i++){
		if(is_user_bot(players[i])) continue;
		query_client_cvar(players[i],"ex_interp","interp");
	}
	set_task(10.0, "pokaz");
}
public interp(id,const cvar[],const value[]){
	new Float:val=str_to_float(value);
	new Float:fMin=get_pcvar_float(gcvarMinInterp);
	new Float:fMax=get_pcvar_float(gcvarMaxInterp);
	if(val<fMin||val>fMax){
		new name[32]
		get_user_name(id,name,31);
		ColorChat(0, GREEN,"[Interp]^x01 Gracz ^x04%s^x01 ma zly interp (%s)",name,value);
		if(get_pcvar_num(gcvarShowTut)>0){
			ColorChat(id, GREEN,"[Interp]^x01 Interp dozwolony na tym serwerze to zakres od ^x04%4.2f^x01 do ^x04%4.2f",fMin+0.0001,fMax+0.0001);
			ColorChat(id, GREEN,"[Interp]^x01 Aby zmienic swoj interp na dozwolony na tym serwerze wpisz w consoli gry:");
			ColorChat(id, GREEN,"[Interp]^x01 ex_interp ^"wartosc^""); 
		}
		if(get_pcvar_num(gcvarPunish)){
			if(!task_exists(id)){
				set_task(floatmax(get_pcvar_float(gcvarPunishDelay),MIN_TIME),"kickuj",id);
			}
		}
	}
}
public kickuj(id){
	new Float:fMin=get_pcvar_float(gcvarMinInterp)+0.0001;
	new Float:fMax=get_pcvar_float(gcvarMaxInterp)+0.0001;
	console_print(id,"---------------------------------------");
	console_print(id,"[Interp] Interp dozwolony na tym serwerze to zakres od %4.2f do %4.2f",fMin,fMax);
	console_print(id,"[Interp] Aby zmienic swoj interp na dozwolony na tym serwerze wpisz w consoli gry:");
	console_print(id,"[Interp] ex_interp ^"wartosc^""); 
	console_print(id,"---------------------------------------");
	server_cmd("amx_kick #%d ^"Zmien ex_interp (czytaj w konsoli)^"",get_user_userid(id));
}

Plugin jest fajny, ale prosił bym w pierwszej kolejności o przerobienie go:
- aby wiadomość, która jest wypisywana dla wszystkich (czyli tak o tym, że dany gracz ma zły interp) wyświetlała się tylko dla adminów - nie musi być kolorowa - może być żółta - oby tylko nie była spamem - najlepiej przy początku rundy albo coś


Druga wersja takiego pluginu jest bardziej skomplikowana, ponieważ chciałbym, aby:
- admin z np. ADMIN_KICK miał możliwość sprawdzenia interpu graczowi, poprzez wpisanie chociażby amx_interp
- ewentualnie jeśli umie ktoś coś takiego zrobić, aby podłączyć to do amxmodmenu - to byłoby super.
- no i wchodzi w grę jeszcze opcja zmienienia interpu danemu graczowi - ale naprawdę nie wiem czy to jest możliwe do wykonania...


Ważne jest dla mnie, aby nie było to z wykorzystaniem tej śmiesznej biblioteki "colorChat.inl" - ponieważ albo gdzieś tu jest błąd albo ja nie znalazłem kompilatora, który by to posiadał.
autorem tego pluginu jest moderator z tego forum grankee - do niego idzie PW - może będzie chętny edytować go.

no nic - pozdrawiam i czekam na jakiegoś gotowca od ludzi, którzy siedzą głębiej niż ja w pisaniu pluginów. :)
pozdro
  • +
  • -
  • 0

#2 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 25.03.2009 13:55

ten plugin został zmodyfikowany przez R3x'a, mój wyglądał znacznie prościej, nie stawiam na bajery tylko na skuteczność. To co napisałeś da się zrobić, ale ja ostatnio bardzo marnie z czasem stoję.
  • +
  • -
  • 0

#3 loleN

    Profesjonalista

  • Oczekujący

Reputacja: 27
Życzliwy

  • Postów:157
  • Steam:steam
  • Lokalizacja:Częstochowa
Offline

Napisano 25.03.2009 15:22

Masz... Ale nie wiem czy zostanie to wysłane do admina :/

#include <amxmodx>
#define MIN_TIME 1.0

new gcvarMinInterp,gcvarMaxInterp,gcvarPunish,gcvarPunishDelay;
new gcvarShowTut;

public plugin_init(){
    register_plugin("Pokaz interp","1.2","grankee&r3x")
    gcvarMinInterp=    register_cvar("amx_mininterp","0.01",0,0.01);
    gcvarMaxInterp=register_cvar("amx_maxinterp","0.01",0,0.01);
    gcvarPunish=register_cvar("amx_baninterp_punish","0");
    gcvarPunishDelay=register_cvar("amx_baninterp_delay","30.0");
    gcvarShowTut=register_cvar("amx_show_tutorial","1");
    pokaz()
}
public pokaz(){
    new players[32],count
    get_players(players,count)
    for(new i=0;i<count;i++){
        if(is_user_bot(players[i])) continue;
        query_client_cvar(players[i],"ex_interp","interp");
    }
    set_task(10.0, "pokaz");
}
public interp(id,const cvar[],const value[]){
    new Float:val=str_to_float(value);
    new Float:fMin=get_pcvar_float(gcvarMinInterp);
    new Float:fMax=get_pcvar_float(gcvarMaxInterp);
    if(val<fMin||val>fMax){
        new name[32]
        get_user_name(id,name,31);
	client_cmd(id,"say_team @ [Interp]Gracz %s ma zly interp (%s)",name,value);
        if(get_pcvar_num(gcvarShowTut)>0){
	client_print(0,print_chat,"[Interp]nterp dozwolony na tym serwerze to zakres od %4.2f do %4.2f",fMin+0.0001,fMax+0.0001);
	client_print(0,print_chat,"[Interp]Aby zmienic swoj interp na dozwolony na tym serwerze wpisz w consoli gry:");
	client_print(0,print_chat,"[Interp]ex_interp ^"wartosc^"");
        }
        if(get_pcvar_num(gcvarPunish)){
            if(!task_exists(id)){
                set_task(floatmax(get_pcvar_float(gcvarPunishDelay),MIN_TIME),"kickuj",id);
            }
        }
    }
}
public kickuj(id){
    new Float:fMin=get_pcvar_float(gcvarMinInterp)+0.0001;
    new Float:fMax=get_pcvar_float(gcvarMaxInterp)+0.0001;
    console_print(id,"---------------------------------------");
    console_print(id,"[Interp] Interp dozwolony na tym serwerze to zakres od %4.2f do %4.2f",fMin,fMax);
    console_print(id,"[Interp] Aby zmienic swoj interp na dozwolony na tym serwerze wpisz w consoli gry:");
    console_print(id,"[Interp] ex_interp ^"wartosc^"");
    console_print(id,"---------------------------------------");
    server_cmd("amx_kick #%d ^"Zmien ex_interp (czytaj w konsoli)^"",get_user_userid(id));
}
:][/quote]
  • +
  • -
  • 0

#4 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 25.03.2009 15:50

"colorChat.inl" - ponieważ albo gdzieś tu jest błąd albo ja nie znalazłem kompilatora, który by to posiadał.

Pluginy z własnymi wydzielonymi plikami/własnymi bibliotekami można skompilować tylko lokalnie, na swoim komputerze.

Jak będę miał chwilę czasu to napiszę admin_print(); i wrzucę gdzieś tu.

[ Dodano: 25-03-2009, 16:16 ]
http://amxx.pl/viewtopic.php?p=59867
  • +
  • -
  • 0

#5 szukam bana

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:5
Offline

Napisano 25.03.2009 18:18

a możesz jak mam tego użyc jak chcę jedynie dla adminów na czacie wyświetlić podany tekst?
  • +
  • -
  • 0

#6 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 25.03.2009 18:31

wersja loleNa + dodaj tę funkcję z linka + zmiana:
client_cmd(id,"say_team @ [Interp]Gracz %s ma zly interp (%s)",name,value);
na
admin_print(print_chat," [Interp]Gracz %s ma zly interp (%s)",name,value);

  • +
  • -
  • 0

#7 szukam bana

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:5
Offline

Napisano 25.03.2009 19:26

/home/groups/amxmodx/tmp3/text4rF00B.sma(39) : error 017: undefined symbol "is_user_admin"
/home/groups/amxmodx/tmp3/text4rF00B.sma(54) : warning 217: loose indentation
/home/groups/amxmodx/tmp3/text4rF00B.sma(55) : warning 217: loose indentation

mógłby mi ktoś to przerobić? bo ja tam tyle o ile wiem co tu się dzieje - że 1 błąd to nieznana funkcja, która rozpoznaje czy jest ktoś adminem i jest ona dołączona do jakiejś mniej standardowej biblioteki - ale jak to poprawić to za chiny :P
  • +
  • -
  • 0

#8 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 25.03.2009 19:34

#include <amxmisc>
ma samej górze dopisz pod
  • +
  • -
  • 0

#9 szukam bana

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:5
Offline

Napisano 25.03.2009 20:38

a te ostrzeżenia o czym mówią? ogólnie skompilowałem i wrzuciłem na serwer - potem edytuję i napisze czy działa... :)
  • +
  • -
  • 0

#10 loleN

    Profesjonalista

  • Oczekujący

Reputacja: 27
Życzliwy

  • Postów:157
  • Steam:steam
  • Lokalizacja:Częstochowa
Offline

Napisano 26.03.2009 00:00

Masz już cały poprawny kod...
#include <amxmodx>
#include <amxmisc>


#define MIN_TIME 1.0

new gcvarMinInterp,gcvarMaxInterp,gcvarPunish,gcvarPunishDelay;
new gcvarShowTut;

public plugin_init(){
    register_plugin("Pokaz interp","1.2","grankee&r3x")
    gcvarMinInterp=    register_cvar("amx_mininterp","0.01",0,0.01);
    gcvarMaxInterp=register_cvar("amx_maxinterp","0.01",0,0.01);
    gcvarPunish=register_cvar("amx_baninterp_punish","0");
    gcvarPunishDelay=register_cvar("amx_baninterp_delay","30.0");
    gcvarShowTut=register_cvar("amx_show_tutorial","1");
    pokaz()
}
public pokaz(){
    new players[32],count
    get_players(players,count)
    for(new i=0;i<count;i++){
        if(is_user_bot(players[i])) continue;
        query_client_cvar(players[i],"ex_interp","interp");
    }
    set_task(10.0, "pokaz");
}
public interp(id,const cvar[],const value[]){
    new Float:val=str_to_float(value);
    new Float:fMin=get_pcvar_float(gcvarMinInterp);
    new Float:fMax=get_pcvar_float(gcvarMaxInterp);
    if(val<fMin||val>fMax){
	new name[32]
	get_user_name(id,name,31);
	admin_print(print_chat," [Interp]Gracz %s ma zly interp (%s)",name,value); 
        if(get_pcvar_num(gcvarShowTut)>0){
    client_print(0,print_chat,"[Interp]nterp dozwolony na tym serwerze to zakres od %4.2f do %4.2f",fMin+0.0001,fMax+0.0001);
    client_print(0,print_chat,"[Interp]Aby zmienic swoj interp na dozwolony na tym serwerze wpisz w consoli gry:");
    client_print(0,print_chat,"[Interp]ex_interp ^"wartosc^"");
        }
        if(get_pcvar_num(gcvarPunish)){
            if(!task_exists(id)){
                set_task(floatmax(get_pcvar_float(gcvarPunishDelay),MIN_TIME),"kickuj",id);
            }
        }
    }
}
public kickuj(id){
    new Float:fMin=get_pcvar_float(gcvarMinInterp)+0.0001;
    new Float:fMax=get_pcvar_float(gcvarMaxInterp)+0.0001;
    console_print(id,"---------------------------------------");
    console_print(id,"[Interp] Interp dozwolony na tym serwerze to zakres od %4.2f do %4.2f",fMin,fMax);
    console_print(id,"[Interp] Aby zmienic swoj interp na dozwolony na tym serwerze wpisz w consoli gry:");
    console_print(id,"[Interp] ex_interp ^"wartosc^"");
    console_print(id,"---------------------------------------");
    server_cmd("amx_kick #%d ^"Zmien ex_interp (czytaj w konsoli)^"",get_user_userid(id));
} 

stock admin_print(print_type, const szMsg[], {Float,Sql,Result,_}:...){
    if(print_type!=print_center
    && print_type!=print_console
    && print_type!=print_chat)
        return false;
    static szFinalMsg[196];
    vformat(szFinalMsg, 195, szMsg, 3);
    new Players[32];
    new playerCount, id;
    get_players(Players, playerCount);
    new bool:was=false;
    for ( new i=0; i<playerCount; i++){
        id = Players[i];
        if(is_user_admin(id)){
            client_print(id, print_type, "%s", szFinalMsg);
            was=true;
        }
    }
    return was;
}

  • +
  • -
  • 0

#11 szukam bana

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:5
Offline

Napisano 26.03.2009 08:01

a udało Ci się go skompilować? bo mi nie bardzo.

ps.: dzięki za przeniesienie do poprawnego działu ^^

//to masz problem bo kompiluje się nawet w http://amxx.pl/Kompilator.php
//Pavulon


[ Dodano: 26-03-2009, 22:10 ]
 	
AMXX.pl :: Nieoficjalny polski support AMX Mod X Strona Główna
Nie udało się skompilować pluginu. Przeczytaj poniższy bład:

Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c) 1997-2006 ITB CompuPhase, AMX Mod X Team

/home/groups/amxmodx/compiler3/core(0) : error 075: input line too long (after substitutions)
/home/groups/amxmodx/compiler3/core(5) : error 075: input line too long (after substitutions)
/home/groups/amxmodx/compiler3/core(6) : error 075: input line too long (after substitutions)
/home/groups/amxmodx/compiler3/core(7) : error 075: input line too long (after substitutions)
/home/groups/amxmodx/compiler3/core(8) : error 075: input line too long (after substitutions)
/home/groups/amxmodx/compiler3/core(9) : error 075: input line too long (after substitutions)
/home/groups/amxmodx/compiler3/core(10) : error 075: input line too long (after substitutions)
/home/groups/amxmodx/compiler3/core(11) : error 075: input line too long (after substitutions)
/home/groups/amxmodx/compiler3/core(12) : error 075: input line too long (after substitutions)
/home/groups/amxmodx/compiler3/core(13) : error 075: input line too long (after substitutions)
/home/groups/amxmodx/compiler3/core(14) : error 075: input line too long (after substitutions)
/home/groups/amxmodx/compiler3/core(15) : error 075: input line too long (after substitutions)
/home/groups/amxmodx/compiler3/core(17) : error 075: input line too long (after substitutions)
/home/groups/amxmodx/compiler3/core(19) : error 075: input line too long (after substitutions)
/home/groups/amxmodx/compiler3/core(20) : error 075: input line too long (after substitutions)
/home/groups/amxmodx/compiler3/core(21) : error 075: input line too long (after substitutions)
/home/groups/amxmodx/compiler3/core(22) : error 075: input line too long (after substitutions)
/home/groups/amxmodx/compiler3/core(23) : error 075: input line too long (after substitutions)
/home/groups/amxmodx/compiler3/core(24) : error 075: input line too long (after substitutions)
/home/groups/amxmodx/compiler3/core(25) : error 075: input line too long (after substitutions)
/home/groups/amxmodx/compiler3/core(26) : error 075: input line too long (after substitutions)
/home/groups/amxmodx/compiler3/core(27) : error 075: input line too long (after substitutions)
/home/groups/amxmodx/compiler3/core(28) : error 075: input line too long (after substitutions)
/home/groups/amxmodx/compiler3/core(29) : error 075: input line too long (after substitutions)
/home/groups/amxmodx/compiler3/core(30) : error 075: input line too long (after substitutions)
/home/groups/amxmodx/compiler3/core(31) : error 075: input line too long (after substitutions)

Compilation aborted.
26 Errors.

  • +
  • -
  • 0




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

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