Skocz do zawartości

  • Zaloguj korzystając z Facebooka Zaloguj korzystając z Twittera Zaloguj przez Steam Zaloguj poprzez Google      Logowanie »   
  • Rejestracja

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
Modyfikacja

Najwięcej fragów w pluginie rangi

modyfikacja

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

#1 Midi

    Początkujący

  • Użytkownik

Reputacja: 2
Nowy

  • Postów:12
  • Imię:Łukasz
  • Lokalizacja:B-stok
Offline

Napisano 03.07.2014 01:38

Witam, korzystam z pluginu rangi by R3X. Chciałbym aby ktoś przerobił lekko kod by na sayu co 2 minuty wyskakiwała następujący tekst: 

[Nazwa-sieci.pl] Najwięcej fragów "liczba fragów" posiada gracz o nicku "Nick gracza" z rangą "nazwa rangi którą posiada" 

 

Jeżeli jeszcze jest taka możliwość, to bardzo proszę o dodanie prefixów przed nickiem osób piszących na sayu.

 

Jak ktoś nie ma czasu, to prefixy może pominąć. 

#include <amxmodx>
#include <amxmisc>
#include <csx>

#define PLUGIN "Rangi"
#define VERSION "1.0"
#define AUTHOR "R3X"

// User stats parms id
#define STATS_KILLS             0
#define STATS_DEATHS            1
#define STATS_HS                2
#define STATS_TKS               3
#define STATS_SHOTS             4
#define STATS_HITS              5
#define STATS_DAMAGE            6

//Max count of levels
#define LEVELS 20
//Max len of ClassName
#define CLASS_LEN 25
#define MAX_NAME_LENGTH         31
#define MAX_BUFFER_LENGTH       2047

#define TASK_SHOWCLASS 2222

//Buffers
new t_sName[MAX_NAME_LENGTH + 1]                    = ""
new g_sBuffer[MAX_BUFFER_LENGTH + 1]                = ""

new giXP[LEVELS+1];
new gszClass[LEVELS+1][CLASS_LEN];
new giPointer=1;

new gcvarMaxName;
new gcvarType, gcvarTop, gcvarList;

new gmsgSayText;

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR);
	register_dictionary("statsx.txt");
	
	register_clcmd("say /top10", "cmdTop10", 0, "- wyswietla range i statystyki");
	register_clcmd("say /rank", "cmdRank", 0, "- wyswietla range i statystyki");
	register_clcmd("say /rangi", "cmdHelp", 0, "- wyswietla liste rang");
	
	register_clcmd("say_team /top10", "cmdTop10", 0, "- wyswietla range i statystyki");
	register_clcmd("say_team /rank", "cmdRank", 0, "- wyswietla range i statystyki");
	register_clcmd("say_team /rangi", "cmdHelp", 0, "- wyswietla liste rang");
	
	gcvarMaxName = 	register_cvar("rangi_maxname", "Reszta jest milczeniem");
	gcvarType = 	register_cvar("rangi_hud","0");
	gcvarTop = 	register_cvar("rangi_top10","1");
	gcvarList = 	register_cvar("rangi_list","1");
	
	gmsgSayText = 	get_user_msgid("SayText"); 
}
//CONFIG
public plugin_cfg(){
	new szFile[128];
	get_configsdir(szFile, 127);
	add(szFile, 127, "/rangi.ini");
	if(!file_exists(szFile))
		return set_fail_state("Nie znalaziono pliku ranga.ini w folderze configs/");
	new szLine[96], iLen=0, szClass[CLASS_LEN], szXP[16];
	
	for(new i=0;read_file(szFile, i, szLine, 95, iLen);i++,szClass[0]=szXP[0]='^0'){
		if( giPointer > LEVELS) break;
		
		if(iLen==0) continue;
		trim(szLine);
		if(szLine[0]=='^0' || szLine[0]==';') continue;
		
		parse(szLine, szClass, CLASS_LEN-1, szXP, 15);
		if(szClass[0] && szXP[0]){
			giXP[giPointer]=str_to_num(szXP);
			copy(gszClass[giPointer], CLASS_LEN-1, szClass)
			giPointer++;
		}
	}
	return PLUGIN_CONTINUE;
}

//COMMANDS
public cmdTop10(id){
	if(get_pcvar_num(gcvarTop) <= 0){
		print_colored(id, "* ^x04Top10^x01 jest wylaczone");
		return PLUGIN_HANDLED;
	}
	format_top10(g_sBuffer)
	show_motd(id, g_sBuffer, "Top 10")
	return PLUGIN_CONTINUE;
}
public cmdRank(id)
{   
	static stats[8], body[8], rankpos, rankmax;
	get_user_stats(id, stats, body);
   
	rankpos = get_user_stats(id, stats, body);
	rankmax = get_statsnum();
   
	print_colored(id, "* Twoja ranga to^x04 %s^x01, zajmujesz^x03 %d^x01 pozycje z^x03 %d", get_rankname(stats[0]), rankpos, rankmax);
	print_colored(id, "* Posiadasz^x03 %d^x01 zabojstw,^x03 %d^x01 smierci oraz^x03 %d^x01 headshot'ow, zadajac^x03 %d^x01 obrazen.", stats[STATS_KILLS ], stats[STATS_DEATHS], stats[STATS_HS], stats[STATS_DAMAGE]);
   
	return PLUGIN_HANDLED;
} 
public cmdHelp(id){
	if(get_pcvar_num(gcvarList) <= 0){
		print_colored(id, "* ^x04Lista rang^x01 jest niedostepna");
		return PLUGIN_HANDLED;
	}
	static sBuffer[MAX_BUFFER_LENGTH+1];
	new iLen;
	iLen = formatex(sBuffer, MAX_BUFFER_LENGTH, "<body bgcolor=#000000><font color=#FFB000><pre>")
	iLen += formatex(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "#id  Nazwa  Prog^n");
	if(giPointer > 1)
		iLen += formatex(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%02d %-22.22s < %d^n", 1, gszClass[1], giXP[1]);
	for(new i=2;i<giPointer;i++){
		iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%02d %-22.22s %d-%d^n", i, gszClass[i], giXP[i-1]+1,giXP[i]);
	}
	new szMaxName[CLASS_LEN];
	get_pcvar_string(gcvarMaxName, szMaxName, CLASS_LEN-1);
	iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "* %s > %d", szMaxName, giXP[giPointer-1]);
	show_motd(id, sBuffer, "Rangi");
	return PLUGIN_HANDLED;
}

//FORWARDS
public client_connect(id)
{
	if(is_user_bot(id) || get_pcvar_num(gcvarType)==0)
		return;
   
	set_task(1.0,"taskDisplayRank",TASK_SHOWCLASS+id,_,_,"b");
}

public client_disconnect(id)
	if(task_exists(TASK_SHOWCLASS+id))
		remove_task(TASK_SHOWCLASS+id)
   
//TASKS
public taskDisplayRank(id){
	id-=TASK_SHOWCLASS;
	static stats[8], body[8];
	get_user_stats(id, stats, body);
	
	set_hudmessage(255, 255, 255, 0.15, 0.55);
	show_hudmessage(id, "Ranga: %s^nZabojstw: %d",get_rankname(stats[STATS_KILLS ]), stats[STATS_KILLS ]);
}

//CLASS
get_lvl_by_exp(iXP){
	new i;
	for(i=1;i<=giPointer;i++){
		if(giXP[i]>=iXP)
		break;
	}
	if(i > giPointer)
		return -1;
	return i;
}
get_rankname(frags){ 
	 static szClass[CLASS_LEN];
	 new iLvl=get_lvl_by_exp(frags);
	 if(iLvl>=0)
	 	copy(szClass,CLASS_LEN-1, gszClass[iLvl]);
	 else
		get_pcvar_string(gcvarMaxName, szClass, CLASS_LEN-1);
	 return szClass;
}

//RANK
// Stats formulas
Float:effec(izStats[8])
{
	if (!izStats[STATS_KILLS])
		return (0.0)
	
	return (100.0 * float(izStats[STATS_KILLS]) / float(izStats[STATS_KILLS] + izStats[STATS_DEATHS]))
}

Float:accuracy(izStats[8])
{
	if (!izStats[STATS_SHOTS])
		return (0.0)
	
	return (100.0 * float(izStats[STATS_HITS]) / float(izStats[STATS_SHOTS]))
}

// Get and format top 10
format_top10(sBuffer[MAX_BUFFER_LENGTH + 1])
{
	new iMax = get_statsnum()
	new izStats[8], izBody[8]
	new iLen = 0

	if (iMax > 10)
		iMax = 10;

	new lKills[16], lDeaths[16], lHits[16], lShots[16], lEff[16], lAcc[16]
	
	format(lKills, 15, "%L", LANG_SERVER, "KILLS")
	format(lDeaths, 15, "%L", LANG_SERVER, "DEATHS")
	format(lHits, 15, "%L", LANG_SERVER, "HITS")
	format(lShots, 15, "%L", LANG_SERVER, "SHOTS")
	format(lEff, 15, "%L", LANG_SERVER, "EFF")
	format(lAcc, 15, "%L", LANG_SERVER, "ACC")
	
	ucfirst(lEff)
	ucfirst(lAcc)

	iLen = format(sBuffer, MAX_BUFFER_LENGTH, "<body bgcolor=#000000><font color=#FFB000><pre>")
	iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%2s %-22.22s %6s %6s %6s %6s %4s %4s %4s^n", "#", "Nick", "Level", lKills, lDeaths, lHits, lShots, "HS", lEff, lAcc)
	
	for (new i = 0; i < iMax && MAX_BUFFER_LENGTH - iLen > 0; i++)
	{
		get_stats(i, izStats, izBody, t_sName, MAX_NAME_LENGTH)
		replace_all(t_sName, MAX_NAME_LENGTH, "<", "[")
		replace_all(t_sName, MAX_NAME_LENGTH, ">", "]")
		iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%2d %-22.22s %-22.22s %6d %6d %6d %6d %4d %3.0f%% %3.0f%%^n", i + 1, t_sName,get_rankname(izStats[STATS_KILLS]), izStats[STATS_KILLS], 
						izStats[STATS_DEATHS], izStats[STATS_HITS], izStats[STATS_SHOTS], izStats[STATS_HS], effec(izStats), accuracy(izStats))
	}
}
//STOCKS
stock print_colored(id, const text[], any:...)
{
    static szMessage[192];
    szMessage[0]='^x01';
    vformat(szMessage[1], 190, text, 3);
 
    if(id==0)
    {
        new plist[32], playernum;
        get_players(plist, playernum);
        for(new i = 0; i < playernum; i++)
        {
            id = plist[i];
            message_begin(MSG_ONE, gmsgSayText, {0,0,0}, id);
            write_byte(id);
            write_string(szMessage);
            message_end();
        }
    }
    else
    {
        message_begin(MSG_ONE, gmsgSayText, {0,0,0}, id);
        write_byte(id);
        write_string(szMessage);
        message_end();
    }
} 


Użytkownik Midi edytował ten post 03.07.2014 01:38

  • +
  • -
  • 0

#2 ka.linux

    Zaawansowany

  • Użytkownik

Reputacja: 46
Pomocny

  • Postów:78
  • GG:
  • Imię:Marek
  • Lokalizacja:Konin
Offline

Napisano 04.07.2014 11:18

Nie testowałem, ale sprawdź nie obiecuję że będzie działać :)

#include <amxmodx>
#include <amxmisc>
#include <csx>

#define PLUGIN "Rangi"
#define VERSION "1.0"
#define AUTHOR "R3X"

// User stats parms id
#define STATS_KILLS             0
#define STATS_DEATHS            1
#define STATS_HS                2
#define STATS_TKS               3
#define STATS_SHOTS             4
#define STATS_HITS              5
#define STATS_DAMAGE            6

//Max count of levels
#define LEVELS 20
//Max len of ClassName
#define CLASS_LEN 25
#define MAX_NAME_LENGTH         31
#define MAX_BUFFER_LENGTH       2047

#define TASK_SHOWCLASS 2222

//Buffers
new t_sName[MAX_NAME_LENGTH + 1]                    = ""
new g_sBuffer[MAX_BUFFER_LENGTH + 1]                = ""

new giXP[LEVELS+1];
new gszClass[LEVELS+1][CLASS_LEN];
new giPointer=1;

new gcvarMaxName;
new gcvarType, gcvarTop, gcvarList;

new gmsgSayText;
new statsm;

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR);
    register_dictionary("statsx.txt");
    
    register_clcmd("say /top10", "cmdTop10", 0, "- wyswietla range i statystyki");
    register_clcmd("say /rank", "cmdRank", 0, "- wyswietla range i statystyki");
    register_clcmd("say /rangi", "cmdHelp", 0, "- wyswietla liste rang");
    
    register_clcmd("say_team /top10", "cmdTop10", 0, "- wyswietla range i statystyki");
    register_clcmd("say_team /rank", "cmdRank", 0, "- wyswietla range i statystyki");
    register_clcmd("say_team /rangi", "cmdHelp", 0, "- wyswietla liste rang");
    
    gcvarMaxName =     register_cvar("rangi_maxname", "Reszta jest milczeniem");
    gcvarType =     register_cvar("rangi_hud","0");
    gcvarTop =     register_cvar("rangi_top10","1");
    gcvarList =     register_cvar("rangi_list","1");
    
    gmsgSayText =     get_user_msgid("SayText");
    set_task(2.0, "najlepszy");
}
//CONFIG
public plugin_cfg(){
    new szFile[128];
    get_configsdir(szFile, 127);
    add(szFile, 127, "/rangi.ini");
    if(!file_exists(szFile))
        return set_fail_state("Nie znalaziono pliku ranga.ini w folderze configs/");
    new szLine[96], iLen=0, szClass[CLASS_LEN], szXP[16];
    
    for(new i=0;read_file(szFile, i, szLine, 95, iLen);i++,szClass[0]=szXP[0]='^0'){
        if( giPointer > LEVELS) break;
        
        if(iLen==0) continue;
        trim(szLine);
        if(szLine[0]=='^0' || szLine[0]==';') continue;
        
        parse(szLine, szClass, CLASS_LEN-1, szXP, 15);
        if(szClass[0] && szXP[0]){
            giXP[giPointer]=str_to_num(szXP);
            copy(gszClass[giPointer], CLASS_LEN-1, szClass)
            giPointer++;
        }
    }
    return PLUGIN_CONTINUE;
}

//COMMANDS
public cmdTop10(id){
    if(get_pcvar_num(gcvarTop) <= 0){
        print_colored(id, "* ^x04Top10^x01 jest wylaczone");
        return PLUGIN_HANDLED;
    }
    format_top10(g_sBuffer)
    show_motd(id, g_sBuffer, "Top 10")
    return PLUGIN_CONTINUE;
}
public cmdRank(id)
{   
    static stats[8], body[8], rankpos, rankmax;
    get_user_stats(id, stats, body);
   
    rankpos = get_user_stats(id, stats, body);
    rankmax = get_statsnum();
   
    print_colored(id, "* Twoja ranga to^x04 %s^x01, zajmujesz^x03 %d^x01 pozycje z^x03 %d", get_rankname(stats[0]), rankpos, rankmax);
    print_colored(id, "* Posiadasz^x03 %d^x01 zabojstw,^x03 %d^x01 smierci oraz^x03 %d^x01 headshot'ow, zadajac^x03 %d^x01 obrazen.", stats[STATS_KILLS ], stats[STATS_DEATHS], stats[STATS_HS], stats[STATS_DAMAGE]);
   
    return PLUGIN_HANDLED;
}
public cmdHelp(id){
    if(get_pcvar_num(gcvarList) <= 0){
        print_colored(id, "* ^x04Lista rang^x01 jest niedostepna");
        return PLUGIN_HANDLED;
    }
    static sBuffer[MAX_BUFFER_LENGTH+1];
    new iLen;
    iLen = formatex(sBuffer, MAX_BUFFER_LENGTH, "<body bgcolor=#000000><font color=#FFB000><pre>")
    iLen += formatex(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "#id  Nazwa  Prog^n");
    if(giPointer > 1)
        iLen += formatex(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%02d %-22.22s < %d^n", 1, gszClass[1], giXP[1]);
    for(new i=2;i<giPointer;i++){
        iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%02d %-22.22s %d-%d^n", i, gszClass[i], giXP[i-1]+1,giXP[i]);
    }
    new szMaxName[CLASS_LEN];
    get_pcvar_string(gcvarMaxName, szMaxName, CLASS_LEN-1);
    iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "* %s > %d", szMaxName, giXP[giPointer-1]);
    show_motd(id, sBuffer, "Rangi");
    return PLUGIN_HANDLED;
}

//FORWARDS
public client_connect(id)
{
    if(is_user_bot(id) || get_pcvar_num(gcvarType)==0)
        return;
   
    set_task(1.0,"taskDisplayRank",TASK_SHOWCLASS+id,_,_,"b");
}

public client_disconnect(id)
    if(task_exists(TASK_SHOWCLASS+id))
        remove_task(TASK_SHOWCLASS+id)
   
//TASKS
public taskDisplayRank(id){
    id-=TASK_SHOWCLASS;
    static stats[8], body[8];
    get_user_stats(id, stats, body);
    
    set_hudmessage(255, 255, 255, 0.15, 0.55);
    show_hudmessage(id, "Ranga: %s^nZabojstw: %d",get_rankname(stats[STATS_KILLS ]), stats[STATS_KILLS ]);
}

//CLASS
get_lvl_by_exp(iXP){
    new i;
    for(i=1;i<=giPointer;i++){
        if(giXP[i]>=iXP)
        break;
    }
    if(i > giPointer)
        return -1;
    return i;
}
get_rankname(frags){
     static szClass[CLASS_LEN];
     new iLvl=get_lvl_by_exp(frags);
     if(iLvl>=0)
         copy(szClass,CLASS_LEN-1, gszClass[iLvl]);
     else
        get_pcvar_string(gcvarMaxName, szClass, CLASS_LEN-1);
     return szClass;
}

//RANK
// Stats formulas
Float:effec(izStats[8])
{
    if (!izStats[STATS_KILLS])
        return (0.0)
    
    return (100.0 * float(izStats[STATS_KILLS]) / float(izStats[STATS_KILLS] + izStats[STATS_DEATHS]))
}

Float:accuracy(izStats[8])
{
    if (!izStats[STATS_SHOTS])
        return (0.0)
    
    return (100.0 * float(izStats[STATS_HITS]) / float(izStats[STATS_SHOTS]))
}

// Get and format top 10
format_top10(sBuffer[MAX_BUFFER_LENGTH + 1])
{
    new iMax = get_statsnum()
    new izStats[8], izBody[8]
    new iLen = 0

    if (iMax > 10)
        iMax = 10;

    new lKills[16], lDeaths[16], lHits[16], lShots[16], lEff[16], lAcc[16]
    
    format(lKills, 15, "%L", LANG_SERVER, "KILLS")
    format(lDeaths, 15, "%L", LANG_SERVER, "DEATHS")
    format(lHits, 15, "%L", LANG_SERVER, "HITS")
    format(lShots, 15, "%L", LANG_SERVER, "SHOTS")
    format(lEff, 15, "%L", LANG_SERVER, "EFF")
    format(lAcc, 15, "%L", LANG_SERVER, "ACC")
    
    ucfirst(lEff)
    ucfirst(lAcc)

    iLen = format(sBuffer, MAX_BUFFER_LENGTH, "<body bgcolor=#000000><font color=#FFB000><pre>")
    iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%2s %-22.22s %6s %6s %6s %6s %4s %4s %4s^n", "#", "Nick", "Level", lKills, lDeaths, lHits, lShots, "HS", lEff, lAcc)
    
    for (new i = 0; i < iMax && MAX_BUFFER_LENGTH - iLen > 0; i++)
    {
        get_stats(i, izStats, izBody, t_sName, MAX_NAME_LENGTH)
        replace_all(t_sName, MAX_NAME_LENGTH, "<", "[")
        replace_all(t_sName, MAX_NAME_LENGTH, ">", "]")
        iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%2d %-22.22s %-22.22s %6d %6d %6d %6d %4d %3.0f%% %3.0f%%^n", i + 1, t_sName,get_rankname(izStats[STATS_KILLS]), izStats[STATS_KILLS],
                        izStats[STATS_DEATHS], izStats[STATS_HITS], izStats[STATS_SHOTS], izStats[STATS_HS], effec(izStats), accuracy(izStats))
    }
}
//STOCKS
stock print_colored(id, const text[], any:...)
{
    static szMessage[192];
    szMessage[0]='^x01';
    vformat(szMessage[1], 190, text, 3);
 
    if(id==0)
    {
        new plist[32], playernum;
        get_players(plist, playernum);
        for(new i = 0; i < playernum; i++)
        {
            id = plist[i];
            message_begin(MSG_ONE, gmsgSayText, {0,0,0}, id);
            write_byte(id);
            write_string(szMessage);
            message_end();
        }
    }
    else
    {
        message_begin(MSG_ONE, gmsgSayText, {0,0,0}, id);
        write_byte(id);
        write_string(szMessage);
        message_end();
    }
}
public najlepszy()
{
    new Stats[8], Body [8], Name[31];
    get_stats(statsm, Stats, Body, Name, 31);
    statsm++;
    
    print_colored(0, "* [Twoja-Siec] Najwiecej fragow %d posiada %s z ranga %s", Stats[0], Name, get_rankname(Stats[0]));

    return PLUGIN_CONTINUE
}
 

  • +
  • -
  • 1

POMAGAM PŁATNIE NA PROŚBĘ!


#3 Midi

    Początkujący

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:12
  • Imię:Łukasz
  • Lokalizacja:B-stok
Offline

Napisano 04.07.2014 12:26

Grając na serwerze testowym, przez 15 minut nic nie wyskoczyło, a ja chciałem by co 2 minuty wyskakiwało. + za chęci i za to, że jako pierwszy odważyłeś się mi pomóc.


  • +
  • -
  • 0

#4 CheQ

    Nie wiem, nie znam się, nie orientuję się, zarobiony jestem.

  • Junior Admin

Reputacja: 1984
Godlike

  • Postów:5534
  • Imię:Adaś
  • Lokalizacja:Glinianka
Offline

Napisano 17.07.2014 07:08

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Temat zamknięty na prośbę użytkownika.


Z pozdrowieniami,
Zespół AMXX.PL
  • +
  • -
  • 0

b_560_95_1.png






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

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

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