Jump to content

Rozdělení admin systému na levely


tbx

Recommended Posts

Takže si ukážeme jak udělat admin system rozdělený na levely. Našel sem tady jen od empise a to bylo nejaky divný :-D.

 

takže do newu

new alevel[MAX_PLAYERS];//timhle si udelame definici pro admina.

 

dále nejakm do modu (nejlepe nad OnPlayerComand) HLAVNE NE NEKAM DO PUBLICU !

dcmd_alevel(playerid,params[])
{
new id=strval(params);//nadefinujeme si ID jako params
new alvl = chrfind(' ',params) + 1;//nadefinujeme si admin level jako 2. params(chrvind
new alstr[200];//nazev stringu
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, COLOR_BILA, "[ ! ] Zvolené id není online");//kdyz neni id online
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_BILA, "[ ! ] Nejsi RCON admin.");//kdyz hrac nen ircon admin
if(!strlen(params)) return SendClientMessage(playerid, COLOR_BILA, "[ ! ] Neudal jsi ID !");//kdyz nevyplni ID hrace
if(!strlen(params[alvl])) return SendClientMessage(playerid, COLOR_BILA, "[ ! ] Nezvolil jsi admin level!");//kdyz nezadal admin level
format(alstr, 200, "Admin %s nastavil hráči %s admin level %d", PlayerName(playerid), PlayerName(id), alvl);//sformatuje zpravu
SendClientMessageToAll(COLOR_BILA, alstr);//posle zpravu
alevel[id] = alvl;//nastaví admin level.
return 1;//navrati hodnotu
}

 

dale do public OnPlayerCommandText(playerid, cmdtext[])

dcmd(alevel, 6, cmdtext);

 

podminka pro admin level je

if(alevel[playerid] != 2) return SCM(playerid,COLOR_BILA, "Nemáš admin level 2");//pokud nema admin level 2

if(alevel[playerid] !> 0) return SCM(playerid,COLOR_BILA, "Nemáš admin level 2");//pokud nema admin level 1 nebo 2

 

a ted si jeste stockneme chrfind

nekam do modu

		chrfind(n,h[],s=0)
{
  new l=strlen(h);
  while(s   {
     if(h[s]==n)
     return s;s++;
  }
  return -1;
}

 

 

tak to by jsme meli :-) a jeste ukládání. pokud máte registraci tady z fora(prez DUDB

do /login

	alevel[playerid] = dUserINT(PlayerName(playerid)).("aLevel ");

do disconnectu

 dUserSetINT(PlayerName(playerid)).("aLevel ",alevel[playerid]);

 

ukladani a nacitani sem psal z hlavy kdyztak si alevel zmente na alvl nwm :-) tak to je vše .

 

a jeste jeste bych se chtel zeptat

jak udelam ze kdyz nezada cisla tak mu to napise neco

a jak udelam ze kdyz nezada 0/1/2 tak mu to taky neco vypise :-)

 

to je vse :-) admin level si mezete dat klidne az do treba 100 nebo 200 :-D je to jedno ;)

Link to comment
Share on other sites

  • 2 weeks later...
Takže si ukážeme jak udělat admin system rozdělený na levely. Našel sem tady jen od empise a to bylo nejaky divný :-D.

 

takže do newu

new alevel[MAX_PLAYERS];//timhle si udelame definici pro admina.

 

dále nejakm do modu (nejlepe nad OnPlayerComand) HLAVNE NE NEKAM DO PUBLICU !

dcmd_alevel(playerid,params[])
{
new id=strval(params);//nadefinujeme si ID jako params
new alvl = chrfind(' ',params) + 1;//nadefinujeme si admin level jako 2. params(chrvind
new alstr[200];//nazev stringu
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, COLOR_BILA, "[ ! ] Zvolené id není online");//kdyz neni id online
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_BILA, "[ ! ] Nejsi RCON admin.");//kdyz hrac nen ircon admin
if(!strlen(params)) return SendClientMessage(playerid, COLOR_BILA, "[ ! ] Neudal jsi ID !");//kdyz nevyplni ID hrace
if(!strlen(params[alvl])) return SendClientMessage(playerid, COLOR_BILA, "[ ! ] Nezvolil jsi admin level!");//kdyz nezadal admin level
format(alstr, 200, "Admin %s nastavil hráči %s admin level %d", PlayerName(playerid), PlayerName(id), alvl);//sformatuje zpravu
SendClientMessageToAll(COLOR_BILA, alstr);//posle zpravu
alevel[id] = alvl;//nastaví admin level.
return 1;//navrati hodnotu
}

 

dale do public OnPlayerCommandText(playerid, cmdtext[])

dcmd(alevel, 6, cmdtext);

 

podminka pro admin level je

if(alevel[playerid] != 2) return SCM(playerid,COLOR_BILA, "Nemáš admin level 2");//pokud nema admin level 2

if(alevel[playerid] !> 0) return SCM(playerid,COLOR_BILA, "Nemáš admin level 2");//pokud nema admin level 1 nebo 2

 

a ted si jeste stockneme chrfind

nekam do modu

		chrfind(n,h[],s=0)
{
  new l=strlen(h);
  while(s   {
     if(h[s]==n)
     return s;s++;
  }
  return -1;
}

 

 

tak to by jsme meli :-) a jeste ukládání. pokud máte registraci tady z fora(prez DUDB

do /login

	alevel[playerid] = dUserINT(PlayerName(playerid)).("aLevel ");

do disconnectu

 dUserSetINT(PlayerName(playerid)).("aLevel ",alevel[playerid]);

 

ukladani a nacitani sem psal z hlavy kdyztak si alevel zmente na alvl nwm :-) tak to je vše .

 

a jeste jeste bych se chtel zeptat

jak udelam ze kdyz nezada cisla tak mu to napise neco

a jak udelam ze kdyz nezada 0/1/2 tak mu to taky neco vypise :-)

 

to je vse :-) admin level si mezete dat klidne az do treba 100 nebo 200 :-D je to jedno ;)

 

Můžu se zeptat na ten první kód.....kam ho mám vložit přesně???

 

Já koukám k sobě do toho a mám tam 2x NEW

 

 

#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

#pragma tabsize 0

//Definice ------------------------------------------------------------------------------------------

#define CERVENA 0xE10000AA

#define ZLUTA 0xFFFF00AA

#define ZELENA 0x33AA33AA

#define BILA 0xFFFFFFAA

#define MODRA 0x0000BBAA

#define ZLATA 0xB8860BAA

#define ORANZOVA 0xFF9900AA

//----------------------------------------------------------------------------------------------------

#define VERZE_SCRIPTU "1.0"

#define SPODNI_CARA "|====| AdminScript |====================================| 1.0 |==========|"

//----------------------------------------------------------------------------------------------------

stock PlayerName(playerid)

{

new name[255];

GetPlayerName(playerid, name, 255);

return name;

}

stock PlayerIp(playerid)

{

new p[16];

GetPlayerIp(playerid,p,16);

return p;

}

stock Hlaska(playerid, CZ[])

{

if(IsPlayerConnected(playerid))

{

SendClientMessage(playerid, CERVENA , CZ);

}

return 1;

}

 

//Základní publicy -----------------------------------------------------------------------------------

public OnFilterScriptInit()

{

print("\n--- Adminiscript by pawno.cz startuje... ---\n\n");

return true;

}

 

public OnFilterScriptExit()

{

print("\n--- Adminiscript by pawno.cz se vypina... ---\n\n");

return true;

}

 

//Naše příkazy ve tvaru dcmd_příkaz -------------------------------------------------------------------

dcmd_info(playerid, params[])

{

//protoze prikaz nema zadne parametry, tak pouzijeme tohle:

#pragma unused params

 

SendClientMessage(playerid, CERVENA, "|====| AdminScript |===============| ABOUT |=========================|");

SendClientMessage(playerid, ZELENA, "Adminscript by pawno.cz. info: http://www.adminscript.pawno.cz" onclick="window.open(this.href);return false;");

SendClientMessage(playerid, ZELENA, "Vytvořil -vaše jméno-");

 

SendClientMessage(playerid, CERVENA, SPODNI_CARA); //spodni cast, kterou jsme si definovali uplne nahore

return 1;

}

 

//DCMD -------------------------------------------------------------------------------------------------

public OnPlayerCommandText(playerid, cmdtext[])

{

dcmd(info, 4,cmdtext);

return 0;

}

 

 

Tak kam to teda mám vložit

Link to comment
Share on other sites

Achjo tohle je fakt uz hrozny

#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
#pragma tabsize 0
//Definice ------------------------------------------------------------------------------------------
#define CERVENA 0xE10000AA
#define ZLUTA 0xFFFF00AA
#define ZELENA 0x33AA33AA
#define BILA 0xFFFFFFAA
#define MODRA 0x0000BBAA
#define ZLATA 0xB8860BAA
#define ORANZOVA 0xFF9900AA
//----------------------------------------------------------------------------------------------------
#define VERZE_SCRIPTU "1.0"
#define SPODNI_CARA "|====| AdminScript |====================================| 1.0 |==========|"
//----------------------------------------------------------------------------------------------------
//---
new alevel[MAX_PLAYERS];//timhle si udelame definici pro admina. TREBA
//---
stock PlayerName(playerid)
{
new name[255];
GetPlayerName(playerid, name, 255);
return name;
}
stock PlayerIp(playerid)
{
new p[16];
GetPlayerIp(playerid,p,16);
return p;
}
stock Hlaska(playerid, CZ[])
{
if(IsPlayerConnected(playerid))
{
SendClientMessage(playerid, CERVENA , CZ);
}
return 1;
}

//Základní publicy -----------------------------------------------------------------------------------
public OnFilterScriptInit()
{
print("\n--- Adminiscript by pawno.cz startuje... ---\n\n");
return true;
}

public OnFilterScriptExit()
{
print("\n--- Adminiscript by pawno.cz se vypina... ---\n\n");
return true;
}

//Naše příkazy ve tvaru dcmd_příkaz -------------------------------------------------------------------
dcmd_info(playerid, params[])
{
//protoze prikaz nema zadne parametry, tak pouzijeme tohle:
#pragma unused params

SendClientMessage(playerid, CERVENA, "|====| AdminScript |===============| ABOUT |=========================|");
SendClientMessage(playerid, ZELENA, "Adminscript by pawno.cz. info: http://www.adminscript.pawno.cz" onclick="window.open(this.href);return false;");
SendClientMessage(playerid, ZELENA, "Vytvořil -vaše jméno-");

SendClientMessage(playerid, CERVENA, SPODNI_CARA); //spodni cast, kterou jsme si definovali uplne nahore
return 1;
}
dcmd_alevel(playerid,params[])
{
new id=strval(params);//nadefinujeme si ID jako params
new alvl = chrfind(' ',params) + 1;//nadefinujeme si admin level jako 2. params(chrvind
new alstr[200];//nazev stringu
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, COLOR_BILA, "[ ! ] Zvolené id není online");//kdyz neni id online
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_BILA, "[ ! ] Nejsi RCON admin.");//kdyz hrac nen ircon admin
if(!strlen(params)) return SendClientMessage(playerid, COLOR_BILA, "[ ! ] Neudal jsi ID !");//kdyz nevyplni ID hrace
if(!strlen(params[alvl])) return SendClientMessage(playerid, COLOR_BILA, "[ ! ] Nezvolil jsi admin level!");//kdyz nezadal admin level
format(alstr, 200, "Admin %s nastavil hráči %s admin level %d", PlayerName(playerid), PlayerName(id), alvl);//sformatuje zpravu
SendClientMessageToAll(COLOR_BILA, alstr);//posle zpravu
alevel[id] = alvl;//nastaví admin level.
return 1;//navrati hodnotu
}

//DCMD -------------------------------------------------------------------------------------------------
public OnPlayerCommandText(playerid, cmdtext[])
{
dcmd(info, 4,cmdtext);
dcmd(alevel, 6,cmdtext);
return 0;
}

Treba takhle...dal uz snad vis ne ? :klidek:

Link to comment
Share on other sites

no vim ae stejne je to vsecko knicemu. Ja to nechapu.....ten program PAWNO je pekne nahovno.

 

Kdyz tam neco udelam a dam F5 tak to ukaze takovou tabulku a v ni jsou same ERRORY.

 

Vubec nevim co s tim.....a to je u kazdyho PAWN kodu.....vzdy tam neco pridam a uz to nejde

 

Kdyz tam budou tyhle errory furt tak se nikam dal NEDOSTANU tak mi poradte NEKDO co s tim mam delat. Jinak se budu moct na to vykaslat.... Ja jinak nevim co s tim....sem zacatecnik PAWNU a tezko s tim neco udelam

Link to comment
Share on other sites

xplosiv: A to si myslíš že otočíš kouzelným prstýnkem a tadá, máme tu script přesně ten co chceš? Jestli se nejseš schopný začít sám učit, a opravovat si chyby, říkám ti, že pawno pro tebe není. Nestačí do kodu napsat : registrace a bude tam registrace. Pochop to, že pawno ti nedělá errory naschvál. Za ty errory nemůže pawno, ale ty sám. Bud rád že ti pawno ještě ty errory vypíše páč bez nich by jsi byl pěkně nahranej :)

Link to comment
Share on other sites

  • 2 weeks later...

Zdravím

 

Omlouvám se že opět Spamuju :) Měl bych vážný problém

 

Vše jsem udělal úplně stejně podle TuTu

 

no jednu chybu sem si dokázal opravit,ale s tim ostatním jsem nějak mimo...

 

mám tam tyto errory

 

 

C:\Users\Xplosiv\Documents\Xtreme\Pawno\testscr.pwn(198) : error 017: undefined symbol "SCM"

C:\Users\Xplosiv\Documents\Xtreme\Pawno\testscr.pwn(200) : error 001: expected token: ")", but found "!"

C:\Users\Xplosiv\Documents\Xtreme\Pawno\testscr.pwn(200) : error 029: invalid expression, assumed zero

C:\Users\Xplosiv\Documents\Xtreme\Pawno\testscr.pwn(200) : warning 215: expression has no effect

C:\Users\Xplosiv\Documents\Xtreme\Pawno\testscr.pwn(200) : error 001: expected token: ";", but found ")"

C:\Users\Xplosiv\Documents\Xtreme\Pawno\testscr.pwn(200) : fatal error 107: too many error messages on one line

 

Compilation aborted.Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase

 

 

5 Errors.

 

 

Moc by mi pomohlo kdyby ste mi pomohli :) Za každou radu budu moc rááád.

 

Jinak kdyby se někdo ptal co je na řádku 200 tak tam je přesně toto:

 

 

if(alevel[playerid] !> 0) return SCM(playerid,COLOR_BILA, "Nemáš admin level 2");

 

 

Předem moc děkuju :):hehe:

Link to comment
Share on other sites

SCM je zkratka SendClientMessage takze jsou 2 moznosti...


1.

Dej si nahoru do modu ( Filter scriptu ) mezi definice

#define SCM SendClientMessage


2.

Místo

if(alevel[playerid] !> 0) return SCM(playerid,COLOR_BILA, "Nemáš admin level 2");

si dej

if(alevel[playerid] !> 0) return SendClientMessage(playerid,COLOR_BILA, "Nemáš admin level 2");


A to je vsechno :klidek:

 




Souhlasim tohle

!>

Sem jeste nikdy nevidel :d Ale jestli to faka tak proc to nepouzivat ? :d

Link to comment
Share on other sites

To je jako jestli neni vetsi :d Proste kdyz tam je napr

if(ALevel[playerid] !> 3) return ...

A to je stejna funkce jako

if(ALevel[playerid] < 4) return ...

Je to skoro stejny no :d

Link to comment
Share on other sites

nene ,jen jsem na to nemohl přijít :)

 

Na definice k barvám už se taky neptám "lol" a ani k tomu kam mám dát kódy :d

 

Přišel jsem na to :) jen na nějaký věci který nedokážu vyřešit,tak se ptám chytřejších :)

Link to comment
Share on other sites

  • 10 months later...
Sry ze otvírám starej topic ale jak přidám další LVL nějak semito nedaří skoušelsem vše díky.

 

OMG!Skoro 2 roky starej topic a ty ho otviras.

Neumis vubec pawn a uz se chces poustet do adminscriptu :lol:

Link to comment
Share on other sites

  • 3 months later...

Sry za otvaranie stareho topicu. Mohol by mi pls niekto vysvetlit k comu je v tom toto

chrfind(n,h[],s=0)

{

new l=strlen(h);

while(s

{

if(h==n)

return s;s++;

}

return -1;

}

Aku to ma vlastne funkciu

Link to comment
Share on other sites

  • 4 weeks later...

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