Jump to content

Ukládání statistik


chytrak

Recommended Posts

Dnes si ukazeme , o neco tezsi tut nez jsme zvykly, ale doufam ze to dokazete

 

Nejdrive si stahneme includy ktere sou v priloze a rozbalime je do slozky include,

ktera je tam kde mate exe soubor pawna, obvykle

pawno\include

 

nahoru do moud pod #include

dame

 

#include 
#include 

 

Nadefinujeme si soubor kde se budou statistiky ukladat

#define Statistika "Statistika.cfg" // nadefinuje config s jmenem statistika.cfg, 
//ktery se bude ukladat do slozky script files.

 

Do public OnGameModeInit() kdyz delate mod,

nebo do public OnFilterScriptInit() pokud delate filter script

 

if(!dini_Exists("Stastika.cfg"))
{// pokud soubor, statistika.cfg neexistuje
dini_Create("Statistika.cfg"); // tak se vytvori novy
print("Soubor Statistika.cfg nebyl nalezen, byl vytvoren novy");
// zprava o novem souboru
}

 

Nyni funkce na zapisovani statistiky,kterou vlozime nad main

stock DiniInt(stats[]) // Prikazem DiniInt("Jmeno satistiky napr Join");
{
dini_IntSet(Statistika, stats, strval(dini_Get(Statistika,stats))+1);
       //funkce zapsani do statistiky, thx Andre9977 from forum.sa-mp.com
}

Čtení

strval(dini_Get(Statistika,"Jmeno ulozene statistiky")

 

Je mozne ze v modu nemate v modu pouzit strtok

a mod vam bude hazet warning:

warning 203: symbol is never used: "strtok"

 

tento warning neni nijak dulezity ale pokud vam vadi dejte si pod

posledni #define radek

#pragma unused strtok

 

 

Příklad

 

#include

#include

 

 

#define Statistika "statistika.cfg" // nadefinuje config s jmenem statistika.cfg,

//ktery se bude ukladat do slozky script files.

#define COLOR_BLUE 0x4169FFAA

#pragma unused strtok

#pragma tabsize 0

 

stock DiniInt(stats[]) // Prikazem DiniInt("Jmeno satistiky napr Join");

{

dini_IntSet(Statistika, stats, strval(dini_Get(Statistika,stats))+1);

//funkce zapsani do statistiky, thx Andre9977 from forum.sa-mp.com

}

 

public OnGameModeInit()

{

if(!dini_Exists("stastika.cfg"))

{// pokud soubor, statistika.cfg neexistuje

dini_Create("statistika.cfg"); // tak se vytvori novy

print("Soubor Statistika.cfg nebyl nalezen, byl vytvoren novy");

// zprava o novem souboru

}

return 1;

}

 

public OnPlayerConnect(playerid)

{

DiniInt("Join");

return 1;

}

 

public OnPlayerCommandText(playerid, cmdtext[])

{

if (strcmp("/kolik", cmdtext, true, 10) == 0)

{

new string[256];

format(string, sizeof(string), "Na serveu bylo %d lidi.",strval(dini_Get(Statistika,"Join")));

SendClientMessage(playerid, COLOR_BLUE, string);

return 1;

}

return 0;

}

 

Poznamka pri ceti ze statistiky

Se pouziva dial pro cislice

a string pro text, to znamena ze, kdyz budete cist cislo pouzijete promenou

%d a kdyz text tak %s

  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

jj to by chtělo zkusit přidat do anti hacku nebo floodovani serveru tím že to tam dát a každou chvíli by to vypisovalo ty statistiky na server a tím by se zjistilo jestli je tam flooder nebo ne a dat podmínku že to statistky to join tak kdyby přesáhlo třeba 20 za 5 vteřin tak by to zpustilo anti flood ale je to taky good zapisování statistik :idea: :idea: :idea:

Link to comment
Share on other sites

  • 4 weeks later...
  • 1 year later...

Sorrac ze pisem zase do stareho topicu ale necel sm vytvarat ZASE novy takze sa cem opytat ako spravim aby sa mi ukladal VIp ked dakomu nastavim VIP tymto scriptom:

#include 
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
#define COLOR_RED 0xFF0000FF
#define COLOR_WHITE 0xAAAAAAFF
#define COLOR_SYSTEM 0x00FF44FF
#define COLOR_YELLOW 0xFFFF00AA 
stock PlayerName(playerid) { new temp[MAX_PLAYER_NAME]; GetPlayerName(playerid,temp,sizeof(temp)); return temp; }
new Vip[MAX_PLAYERS];

public OnPlayerCommandText(playerid, cmdtext[])
{
dcmd(unsetvip,8,cmdtext);
dcmd(setvip,6,cmdtext);
return 0;
}
dcmd_setvip(playerid,params[])
{
new id = strval(params);
new string[256];
if (!strlen(params)) return SendClientMessage(playerid, COLOR_RED, "Použi: /setvip id");
else if(!IsPlayerConnected(id)) return SendClientMessage(playerid, COLOR_RED, "Toto id není pripojené!");
else if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "Nesi Rcon Admin"); // To si změnte na proměnu svého povolání;
else {
{
format(string, sizeof(string), "Hl.Admin %s dal Vip Učet hračovi %s !", PlayerName(playerid), PlayerName(id));
SendClientMessageToAll(COLOR_YELLOW, string);
Vip[playerid] = 1;
}
}
return 1;
}

dcmd_unsetvip(playerid,params[])
{
new id = strval(params);
new string[256];
if (!strlen(params)) return SendClientMessage(playerid, COLOR_WHITE, "Použi: /unsetvip id");
else if(!IsPlayerConnected(id)) return SendClientMessage(playerid, COLOR_WHITE, "Toto id není pripojené!");
else if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_WHITE, "Nesi Rcon Admin");
else {
{
format(string, sizeof(string), "Hl.Admin %s odobral Vip Učet hračovi %s !", PlayerName(playerid), PlayerName(id));
SendClientMessageToAll(COLOR_SYSTEM, string);
Vip[playerid] = 0;
}
}
return 1;
}

nech sa to uklada napr do Scriptfiles/"Hracov nik" :d da sa to vobc spravit?? s jr to filterscript do modu to pridat nemozem lebo nemam .pwn...

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...