Přejít na obsah

Zakladní Admin Systém [Základ]



  • Pokud chcete odpovědět, přihlaste se
4 odpovědí

#1
WaterSmoke

WaterSmoke

    Jonny Sindacco

  • Uživatel
  • Příspěvků: 2
  • Je tu celkem: 21h 45m 23s

Takže ahoj,

Ukážu vám jednoduchý základ admin systému :d vše jsem dělal já až na příkaz ten do 35% sem dělal já sám xD

Pusťme se do toho :-)

#include <a_samp>//zakladní include
#include <dini>//ukladací include
#include <izcmd>//přikazový include

#define MAX_PLAYERS_EX 100 //zadejte si počet slotů které máte na serveru
new al[MAX_PLAYERS_EX]; //podmínka kterou vzniká celý admin systém

//========tak a pustíme se do práce========//
//========1 věc ukladání========//
stock SaveLevel(playerid)//ukladání admin levelu zapotřebí include dini
{
	new cesta[64];
	format(cesta, sizeof(cesta),"WS/%s.cfg", Meno(playerid));// 'WS' je složka kterou máte vytvořenou ve scriptfiles jestli nemáte  vytvořte jí
	if(!fexist(cesta)) dini_Create(cesta);
	{
		dini_IntSet(cesta, "ALevel", al[playerid]);//uložíme
	}
	return 1;
}

public OnPlayerDisconnect(playerid,reason)//když se hráč odpojí ze hry (/q)
{
	SaveLevel(playerid);//uloží mu to admin level
	return 1;
}
//========2.načitání========//

stock LoadLevel(playerid)//načitání admin levelu zapotřebí include dini
{
	new cesta[64];
	format(cesta, sizeof(cesta),"WS/%s.cfg", Meno(playerid));
	if(fexist(cesta))
	{
		al[playerid] = dini_Int(cesta,"ALevel");//načteme
	}
 	if(!fexist(cesta)) fremove(cesta);
	return 1;
}

public OnPlayerConnect(playerid)//když se hráč připojí
{
	LoadLevel(playerid);//načte mu to uložený admin level
        return 1;
}
//========3.Admin přikaz========//
CMD:vyhra(playerid,params[])//výhra přikaz
{//zacatek
 	if(al[playerid] < 3) return  SendClientMessage(playerid,  -1, "{ff0066}[ ES ] {ffffff}Musíš mít {00ccff}Dostatečný Level.");//když hráč má admin level stejný jak 3 a nebo i 3+ admin level např lvl 4 může použit příkaz
	if(!strlen(params)||!IsNumeric(params)) return SendClientMessage(playerid,-1,"{ff0000}[ ES ] Použití: {ffffff}/Vyhra [ ID ]"); //použití = když hráč zadal např.: /vyhra 0 500000 vyjede mu tato zpráva že je špatně příkaz
 	new string[1000];//[1000] = délka písma jinak string je použít pro format a pro zprávu všem může být použit i na jiné věci než je sendclientmessagetoall
	new CMD_ID = strval(params);//definice id zvoleného hráče
	if(!IsPlayerConnected(CMD_ID)) return SendClientMessage(playerid,-1,"{ff0066}[ ES ] {ffffff}Tento Hráč neni pripojený.");//když hráč není připojený
	format(string,sizeof(string),"{ff0000}Eventér {ffffff}%s {ff0000}udělil výhru hráčovi {ffffff}%s [{ff0000} 7.000.000{ffffff}]",Meno(playerid),Meno(CMD_ID));//format který použijeme níze pro zprávu všem
	SendClientMessageToAll(0x0000FFFF,string);//zpráva do chatu pro všechny barva, format který jsme použili víš
	GivePlayerMoney(CMD_ID, 7000000);//zakladní samp funcke pro davání pěněz POZOR!! ve rze 8 a nižší verze nejde
	return CMD_SUCCESS;//samotný return
}//konec


//=======potřebné věci=====//
stock IsNumeric(const string[])
{
   new length=strlen(string);
   if (length==0) return false;
   for (new i = 0; i < length; i++)
   {
      if ((string[i] > '9' || string[i] < '0' && string[i]!='-' && string[i]!='+')|| (string[i]=='-' && i!=0)|| (string[i]=='+' && i!=0)) return false;
   }
   if (length==1 && (string[0]=='-' || string[0]=='+')) return false;
   return true;
}

stock Meno(playerid)
{
   new pName[MAX_PLAYER_NAME];
   if(IsPlayerConnected(playerid))
   {
         GetPlayerName(playerid, pName, sizeof(pName));
   }
   return pName;
}
//=======KONEC=====//

Includy máte v attachments xD

Přiložené soubory


  • 0

#2
vEnd

vEnd

    Programátor apod.

  • Globální moderátor
  • Příspěvků: 421
  • Je tu celkem: 33d 12h 43m 22s

Vyčerpávající návod, ale mám k němu několik výhrad:

1. Nesplňuješ kritéria pro ověřený návod. V praxi to znamená, že skončí mezi neověřenými, takže je malá šance, že si to někdo přečte. Abys zjistil, co nesplňuješ, rozklikni a přečti si tohle.

 

2. Máš tam chyby, jak v kódu, tak ve vysvětlovací části.

new al[MAX_PLAYERS_EX]; //podmínka kterou vzniká celý admin systém

Tohle určitě není podmínka.

 

if(!fexist(cesta)) dini_Create(cesta); { dini_IntSet(cesta, "ALevel", al[playerid]);//uložíme }

Nějak jsi opomněl na else, bez toho se ti to v blocích pod if vykoná vždy - neumíš větvit script.

 

if(!fexist(cesta)) fremove(cesta);

Odstraňuješ něco, co neexistuje. To nedává smysl, ne?

 

new string[1000];

Použít velikost 1000 na zprávu, která odešle ledatak 144 znaků, to je zbytečné zahlcování paměti.

 

 

Hele no, nevím, možná by ses měl sám podívat na pár místních návodů, než je sám začneš tvořit. Chybí ti elementární znalosti.


  • 0

96b259ac47244701b5097887d9439120.png

I always enjoy meeting people more chemically imbalanced than myself. -Trevor Philips
Roses are gay, violets are gayer, fuck the poem and listen to Slayer.

Roses are red. Violets are blue. When I Listen to Metallica My neighbors do too!

Unix is user friendly. It just happens to be very selective about who it decides to make friends with.

What's the object-oriented way to become wealthy? Inheritance.


#3
WaterSmoke

WaterSmoke

    Jonny Sindacco

  • Uživatel
  • Příspěvků: 2
  • Je tu celkem: 21h 45m 23s

máš pravdu mělo by tam být else :d
za2 ještě v onplayerconnect nad tím LoadLeve(playerid); by mělo být al[playerid] = 0;


  • 0

#4
SkiBig18

SkiBig18

    Expert ve satanistickém díle YSI4

  • Uživatel
  • Příspěvků: 1 253
  • Je tu celkem: 10d 12h 48m 2s
No tak to vezmeme šupem:

1. dini... k tomu snad mám jenom otázku proč? Máš tam skvělý include na příkazy s parametry, velice rychlý a pak to celé poděláš tímhle. Lidi závislí na funkčnosti a rychlosti(jako např já) by tě za tohle zlynčovali, že mícháš dobré a blbé.
2. fce IsNumeric(která ti vrací true/false v případě, že daný řetězec je číslo) je docela užitečná fce, hodila by se vysvětlit a hlavně připsat, od koho je. Využíváš věci ze zdrojů jiných, než tvoje vlastní.
3. a u té fce Meno bych řekl, že je zbytečné zjišťovat, zda je hráč připojený. Voláš jí buď v příkazu, kde už kontroluješ id hráče a nebo v callbacku při připojování(ještě je ve fci vlastně), kde jsem zatím neslyšel, že by se připojilo něco jiného, než hráč s id.

4. Mimochodem, tohle nejsou základy admin systémů. To už je rovnou konkrétní tvorba admin příkazů. Pod základy si představím například proměnnou, u které vysvětlíš, že je to jen proměnná a ne už zázračně ten adminlevel, jak si všichni myslí, nebo co se hodí/musí využít za includy na to...

  • 0

#5
w.endelin

w.endelin

    Marc Wayne "B-Dup"

  • Uživatel
  • Příspěvků: 387
  • Je tu celkem: 1d 22h 29m 26s

Takže ahoj,

Ukážu vám jednoduchý základ admin systému :d vše jsem dělal já až na příkaz ten do 35% sem dělal já sám xD

Pusťme se do toho :-)

Spoiler

Includy máte v attachments xD

 

Přijde mi to spíše jako script, než návod, co si z toho nováček vezme? C+V? Děláš návod na něco, co sám nechápeš, bože proč? 


  • 1

San Francisco and near Villages Life   v1-0
- WIP, more info comming soon






Také označeno jedním nebo více klíčovými slovy: Návod

0 uživatelů si prohlíží toto fórum

0 uživatelů, 0 návštěvníků 0 anonymních uživatelů

© 2015 IPS, Inc.

TOPlist

Zajímat Vás mohou ještě aktuální zprávy. sleviště, slevy dnes Herbalife je skvělou cestou pro dobré zdraví. Je libo dětský web?