Jump to content
  • 0

pomoc Vip SYSTEM + Mod SYSTEM


Deejva

Dotaz

Ahoj, stáhl jsem si vip od Domm: http://pawno.cz/topi...ystem-pawn-php/

Poté jsem chtěl přidat do stejného FS na stejný spůsob moderátora, ale vždy, když si ho dam a vypnu a zapnu server a připojim se, moderátora nemam, je někde chyba v načítání, ale nevim kde.. jinak když se nevypne server tak to jde normálně .. a VIP se ukládá, jen ten moderátor nejse, tady je kod :)

 

DEFINE, NEW, FORWARDY

 

new VIP[MAX_PLAYERS];
new MOD[MAX_PLAYERS];

#define CheckTime 60000 //čas update VIP v MS
#define VIP_F "VIP/%s.txt" //cesta k VIP Souboru
#define MOD_F "Moderatori/%s.txt"
#define DIALOG_VIP 10 //Dialog s popisem VIP Scriptu
#define DIALOG_VIPS 11 //Dialog s VIP Hracema
#define DIALOG_MODS 12

#define F_CERVENA 0xFF0000AA

#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

forward CheckVIP(playerid);
forward CheckMOD(playerid);

 

PUBLICI K FORWARDŮM

 

public CheckVIP(playerid)
{
new file[128];
format(file,sizeof(file),VIP_F,PlayerName(playerid));
if(VIP[playerid] == 0){
if(fexist(file)){
VIP[playerid] =1;
new str[100];
format(str, 100, "Hráč %s dostal VIP!",PlayerName(playerid));
SendClientMessageToAll(F_CERVENA, str);
}
}
else if(VIP[playerid] == 1){
if(!fexist(file)){
VIP[playerid] =0;
new str[100];
format(str, 100, "Hráči %s bylo odebráno VIP!",PlayerName(playerid));
SendClientMessageToAll(F_CERVENA, str);
}
}
return 1;
}

public CheckMOD(playerid)
{
new soubor[128];
format(soubor,sizeof(soubor),MOD_F,PlayerName(playerid));
if(MOD[playerid] == 0){
if(fexist(soubor)){
MOD[playerid] =1;
new string[100];
format(string, 100, "Hráč %s se stal moderátorem!",PlayerName(playerid));
SendClientMessageToAll(F_CERVENA, string);
}
}
 else if(MOD[playerid] == 1){
if(!fexist(soubor)){
MOD[playerid] =0;
new string[100];
format(string, 100, "Hráči %s byl odebrán moderátorský účet!",PlayerName(playerid));
SendClientMessageToAll(F_CERVENA, string);
}
}

return 1;
}

 

 

 

ONPLAYERCONNECT

 

public OnPlayerConnect(playerid)
{
new file[100];
format(file,sizeof(file),VIP_F,PlayerName(playerid));
if(fexist(file)) return VIP[playerid] =1;
else if(!fexist(file)) return VIP[playerid] =0;
SetTimerEx("CheckVIP",CheckTime,true,"i",playerid);

new soubor[100];
format(soubor,sizeof(soubor),MOD_F,PlayerName(playerid));
if(fexist(soubor)) return MOD[playerid] =1;
else if(!fexist(soubor)) return MOD[playerid] =0;
SetTimerEx("CheckMOD",CheckTime,true,"i",playerid);
return 1;
}

 

ONPLAYERTEXT

 

public OnPlayerText(playerid, text[])
{
if(MOD[playerid] == 1){
new string[128];
format(string, 128, "{00B600}[Moderátor] %s: {97EE00}%s",PlayerName(playerid), text);
SendClientMessageToAll(GetPlayerColor(playerid), string);
return 0;
}

else if(VIP[playerid] == 1){
new str[128];
format(str, 128, "{0000FF}[VIP] %s: {00DEFF}%s",PlayerName(playerid), text);
SendClientMessageToAll(GetPlayerColor(playerid), str);
return 0;
}



return 1;
}

 

ONPLAYERCOMMANDTEXT

 

public OnPlayerCommandText(playerid, cmdtext[])
{
dcmd(vips, 4, cmdtext);
dcmd(setvip, 6, cmdtext);
dcmd(setmod, 6, cmdtext);
dcmd(moderatori, 10, cmdtext);
dcmd(vheal, 5, cmdtext);
dcmd(mhelp, 5, cmdtext);
return 0;
}

 

PŘÍKAZY

 

dcmd_setvip(playerid, params[])
{
new ID = strval(params);
if(!IsPlayerAdmin(playerid)) return false; //SendClientMessage(playerid, F_CERVENA,"[ ! ] {ffffff}Nejsi přihlášen přes {ff0000}RCON{ffffff}!");
if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, -1,"Toto ID neni připojeno!");
if(VIP[iD] == 0)
{
		 VIP[playerid] =1;
		 new str[100];
		 format(str, 100, "Hráč %s dostal VIP!",PlayerName(ID));
		 SendClientMessageToAll(F_CERVENA, str);
		 new file[100];
		format(file,sizeof(file),VIP_F,PlayerName(ID));
		 dini_Create(file);
}
else if(VIP[iD] == 1)
{
  		 VIP[playerid] =0;
		 new str[100];
		 format(str, 100, "Hráči %s bylo odebráno VIP!",PlayerName(ID));
		 SendClientMessageToAll(F_CERVENA, str);
		 new file[100];
		format(file,sizeof(file),VIP_F,PlayerName(ID));
		 dini_Remove(file);
}
return 1;
}

dcmd_setmod(playerid, params[])
{
new ID = strval(params);
if(!IsPlayerAdmin(playerid)) return false; //SendClientMessage(playerid, F_CERVENA,"[ ! ] {ffffff}Nejsi přihlášen přes {ff0000}RCON{ffffff}!");
if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, -1,"Toto ID neni připojeno!");
if(MOD[iD] == 0)
{
		 MOD[playerid] =1;
		 new str[100];
		 format(str, 100, "Hráč %s dostal moderátorský účet!",PlayerName(ID));
		 SendClientMessageToAll(F_CERVENA, str);
		 new soubor[100];
		format(soubor,sizeof(soubor),MOD_F,PlayerName(ID));
		 dini_Create(soubor);
}
else if(MOD[iD] == 1)
{
  		 MOD[playerid] =0;
		 new str[100];
		 format(str, 100, "Hráči %s bylo odebráno VIP!",PlayerName(ID));
		 SendClientMessageToAll(F_CERVENA, str);
		 new soubor[100];
		format(soubor,sizeof(soubor),MOD_F,PlayerName(ID));
		 dini_Remove(soubor);
}
return 1;
}

dcmd_vheal(playerid, params[])
{
#pragma unused params
if(MOD[playerid] == 0) return false;
SetPlayerHealth(playerid, 100);
return 1;
}

dcmd_mhelp(playerid,params[])
{
#pragma unused params
if(MOD[playerid] == 0) return false;
SendClientMessage(playerid,-1,"Příkazy pro moderátora: /vheal");
return 1;
}


dcmd_vips(playerid, params[])
{
#pragma unused params
new str[2000];
ShowPlayerDialog(playerid,DIALOG_VIPS,DIALOG_STYLE_MSGBOX,"VIP","Žádné VIP není online!","Ok","");
for (new i; i<MAX_PLAYERS; i++)
{
if(VIP[i] == 1)
{
format(str,sizeof(str), "{FFFFFF}%s %s -> {0000FF}VIP{FFFFFF}\r\n\n",str,PlayerName(i));
}}
ShowPlayerDialog(playerid,DIALOG_VIPS,DIALOG_STYLE_MSGBOX,"Online VIP",str,"Ok","");
return 1;
}

dcmd_moderatori(playerid, params[])
{
#pragma unused params
new str[2000];
ShowPlayerDialog(playerid,DIALOG_MODS,DIALOG_STYLE_MSGBOX,"Moderátoři","Žádný moderátor není online!","Ok","");
for (new i; i<MAX_PLAYERS; i++)
{
if(MOD[i] == 1)
{
format(str,sizeof(str), "{FFFFFF}%s %s -> {0000FF}Moderátor{FFFFFF}\r\n\n",str,PlayerName(i));
}}
ShowPlayerDialog(playerid,DIALOG_MODS,DIALOG_STYLE_MSGBOX,"Online VIP",str,"Ok","");
return 1;
}

 

STOCK

 

 

stock PlayerName(playerid)
{
new name[255];
GetPlayerName(playerid, name, 255);
return name;
}

 

Vím že by to do toho šlo zapojit i jednodušeji, ale učím se a chci to udělat tak, aby to bylo nejjdnodušší pro mě :)

Díky za rady ;)

Link to comment
Share on other sites

22 odpovědí na tuto otázku

Recommended Posts

  • 0
  • Administrátor

Zkus tohle a rekni co ti to hodi do logu kdyz soubor exituje (přesvěč se)

stock CheckMOD( playerid )

{

new file[40];

format(file,sizeof(file),MOD_F,PlayerName(playerid));

if( fexist( file ) )

{

MOD[playerid] =1;

printf("%s je moderátor",PlayerName( playerid ) );

}else{

MOD[playerid] =0;

printf("%s není moderátor",PlayerName( playerid ) );

}

}

Link to comment
Share on other sites

  • 0

Allready defined, takže ten public mam prozatim smazat ? a nějakou funkci do onplayerconnect aby se to vyvolalo ? nebo nic ? :d

 

A vím že moderátor nejsem, nepíšu jako [Moderátor], nejsem v /moderatori a nejde mi /vheal (jen pro moderátora)

Link to comment
Share on other sites

  • 0

Funkce se nevyvolá, zkusil jsem do příkazu dát CheckMOD( playerid );, pořád nic :/ .. nic se nenapíše do logu

 

Už, nemam ho, napíšu příkaz, do logu Deejva je moderátor a hodí mi to moderátora, ale předtim nejsem

Link to comment
Share on other sites

  • 0
  • Administrátor

Za prvné říkal jsem zakomentuj public... ty zakomentujes stock... Jinak to funguje uplne normalne bez jakýhokoliv zásahu z mojí strany...

Link to comment
Share on other sites

  • 0
  • Administrátor

Už to říkám snad po 10.. To co jsi poslal jsem zkompiloval vrazil na server a vsechno funguje i po restartu musíš mít chybu někde u sebe nevím.... zkus zkontrolovat chmod toho texťáku....

Link to comment
Share on other sites

  • 0

Někde tam musí být chyba, protože VIP jde normálně

 

Když jsem z onplayerconnect dal to načítání moderátora do onplayerspawn tak to jde, takže je chyba někde v tom, jak je to za sebou zapsaný .. a chci tam přidat ještě 2 takže to potřebuju zpravit

 

Ach jo :/ nějak je za sebou špatně napsaný ten format

 

OMG NEJDE TO :d

 

Když je jedno v connectu a jedno v spawnu tak to jde, ale když jsou obě v jednom tak ne, někde je chyba v tom jak je to za sebou napsaný ... a nemžu to mít zvlášť .. potřebuju ještě přidat admine aj.

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...