Scydo 397 Odesláno: 2. Březen, 2017 Share Odesláno: 2. Březen, 2017 (upraveno) DYMAMIC GROUPS SYSTEMnení potřeba žádný jiný include! VÝHODAZdravím vás u include z nacistické dílny. Největší výhoda je, že include nemá řádné zásadní možné zpracování(například ukládání údajů). Uživatel tak má naprostý přehled, nemusí se vrtat v několika funkcích o desítkách parametrů, takže může kreativně vytvářet spousty systémů, jak AdminSystém či VipSystém.SEZNAM FUNKCÍ IsGroupExist GetGroupID GetFreeGroup GetGroupCount GetGroupIdef GetGroupName GetGroupObjName GroupInConsoleCheck CreateGroup SetPlayerGroup SetMainGroup bool:GetPlayerGroup RemovePlayerGroup GetPlayerGroupEx VYSVĚTLENÍ FUNKCÍCreateGroupParametry (sGroup[], sObjName[], Idef)Základní funkce. Vytváří skupinu. Nejdůležitější pro uživatele je parametr sGroup. Pracuje se s ním stejně jako s id, akorát slovně. Parametr sObjName značí jméno pak ve hře. Idef je spíše jen číslo, ale může se brát i jako level či pořadí.Použití: public OnFilterScriptInit() { CreateGroup("vip", "{FFFF00}VIP", 1); CreateGroup("premium", "{00FF00}Premium", 1); CreateGroup("helper", "{0000FF}Pomocník", 2); CreateGroup("admins", "{FF0000}Administrátor", 3); return 1; } GetGroupIDParametry (sGroup[])Systémová funkce - Zjistí ID skupiny a vrátí jí. Pokud jí nenajde, vrátí -1.Použití: public OnFilterScriptInit() { /* Globál = id 0 */ CreateGroup("vip", "{FFFF00}VIP", 1); /* VIP = id 1 */ CreateGroup("premium", "{00FF00}Premium", 1); /* Premium = id 2 */ new premium_id = GetGroupID("premium"); /* Vrátí 2 */ GetFreeGroupParametry (Žádne parametry)Systémová funkce - Zjistí ID volného slotu pro skupinu a vrátí jí.Použití: new freeid = GetFreeGroup(); /* Vrátí 1 */ CreateGroup("vip", "{FFFF00}VIP", 1); CreateGroup("premium", "{00FF00}Premium", 2); new freeid2 = GetFreeGroup(); /* Vrátí 3 */ GetGroupCountParametry (Žádne parametry)Systémová funkce - Zjistí počet uživatelem vytvořených skupin a vrátí tento počet.Použití: CreateGroup("vip", "{FFFF00}VIP", 1); CreateGroup("premium", "{00FF00}Premium", 1); CreateGroup("helper", "{0000FF}Pomocník", 2); CreateGroup("admins", "{FF0000}Administrátor", 3); new count = GetGroupCount(); /* Vrátí 4 */ GroupInConsoleCheckParametry (Žádne parametry)Použití: public OnFilterScriptInit() { CreateGroup("vip", "{FFFF00}VIP", 1); CreateGroup("helper", "{00FF00}Helper", 2); CreateGroup("admin", "{FF0000}Admin", 3); CreateGroup("owner", "{FF0000}Owner", 4); GroupInConsoleCheck(); return 1; } IsGroupExistParametry (sGroup[])Zjistí, zda daná skupina existuje. Jesltiže ano, vrátí true, jinak vrátí false.Použití: if (IsGroupExist("admins")) print("Admine existuji !"); GetGroupNameParametry (iGroup_ID)Vrátí zjištěné jméno skupiny z id.Použití: public OnFilterScriptInit() { CreateGroup("skupina1", "Skupina1", 0); CreateGroup("skupina2", "Skupina2", 0); new grpid = GetGroupName(2); /* Vrátí "skupina2" */ SetMainGroupParametry (sGroup[], sObjName[])Podobně jako CreateGroup, akorát nastaví globální/hlavní skupinu, kterou bude mít defaultně každý hráč.Použití: public OnFilterScriptInit() { SetMainGroup("players", "Hráč"); GetGroupIdefParametry (sGroup[])Vrátí idef číslo dané skupiny.Použití: CreateGroup("admins", "Admins", 3); new sString[34 + 1]; format(sString, sizeof(sString), "Administrátoři mají nyní level %i", GetGroupIdef("admins")); SendClientMessage(playerid, -1, sString); /* Administrátoři mají nyní level 3 */ GetGroupObjNameParametry (sGroup[])Vrátí jméno ve hře dané skupiny.Použití: CreateGroup("admins", "Admins", 3); new sString[20 + 1]; format(sString, sizeof(sString), "%s má level %i", GetGroupObjName("admins"), GetGroupIdef("admins")); SendClientMessage(playerid, -1, sString); /* Admins mají nyní level 3 */ SetPlayerGroupParametry (playerid, sGroup[])Nastaví hráči danou skupinu.Použití: public OnFilterScriptInit() { CreateGroup("vip", "{FFFF00}VIP", 1); return 1; } public OnPlayerSpawn(playerid) { if (Zazrak[playerid]) SetPlayerGroup(playerid, "vip"); return 1; } GetPlayerGroupParametry (playerid, sGroup[])Zjistí zda hráč je v dané skupině. Jestliže je, vrátí true, jinak vrátí falsePoužití public OnFilterScriptInit() { CreateGroup("admins", "{FF0000}Admins", 1); return 1; CMD:hp(playerid, params[]) { if (!GetPlayerGroup(playerid, "admins")) return SendClientMessage(playerid, -1, "Nemáš dostatečné oprávnění !"); GetPlayerGroupExParametry (playerid)Vrátí id skupiny, ve které se hráč nachází.RemovePlayerGroupParametry (playerid)Odstraní skupinu danému hráči.Použití RemovePlayerGroup(playerid, "admins"); UKÁZKYNĚKOLIK UKÁZEK POUŽITÍJEDNODUCHÉ NASTAVENÍ SKUPIN VE HŘE /* i-zcmd ! */ CMD:setlvl(...) { /* Some code */ new iId, iLevel if (sscanf(..., "ii", iId, iLevel)...) return SendClientMessage(...); SetPlayerGroup(playerid, GetGroupName(iLevel)); /* Some code */ } CMD:setowner(...) { /* Some code */ return SetPlayerGroup(playerid, "owners"); } JEDNODUCHÁ KONTROLA SKUPINY/IDEFU HRÁČE if (!GetPlayerGroup(playerid, "admins")) return SendClientMessage(playerid, -1, "Nemáš dostatečné oprávnění !"); /* NEBO */ if (GetGroupIdef(GetGroupName(GetPlayerGroupEx(playerid))) < 3) return SendClientMessage(playerid, -1, "Nemáš dostatečné oprávnění !"); TITUL V CHATĚ PRO VŠECHNY HRÁČE public OnFilterScriptInit() { SetMainGroup("players", "{575454}Hráč"); return 1; } public OnPlayerText(...) { if (GetPlayerGroup(playerid, "players")) { new sString[144 + 1]; format(sString, sizeof(sString), "%s {FFFFFF}[ %s {FFFFFF}]: %s", PlayerName(playerid), GetGroupObjName("players"), text); SendClientMessageToAll(GetPlayerColor(playerid), sString); return 0; } TITUL VŠECH SKUPIN V CHATĚ public OnFilterScriptInit() { SetMainGroup("players", "{575454}Hráč"); CreateGroup("helper", "{00FF00}Helper", 3); CreateGroup("admin", "{FF0000}Admin", 4); } public OnPlayerText(...) { /* Some code */ new sString[144 + 1]; format(sString, sizeof(sString), "%s{FFFFFF}[ %s {FFFFFF}]: %s", PlayerName(playerid), GetGroupName(GetPlayerGroupEx(playerid)), text); SendClientMessageToAll(GetPlayerColor(playerid), sString); return 0; }/* Some code */ JEDNODUCHÝ VIP SYSTÉM if (/* Vypršel čas */) RemovePlayerGroup(playerid); /* Some code */ SetPlayerGroup(playerid, "vips"); /* Some code */ if (!GetPlayerGroup(playerid, "vips")) return SendClientMessage(/* Nejsi VIP */ DOWNLOADStačí include vložit do složky pawno/includePawno PastebinEnjoy. Edited 2. Březen, 2017 by vEnd 3 Link to comment Share on other sites More sharing options...
Administrátor Ewwe 434 Odesláno: 2. Březen, 2017 Administrátor Share Odesláno: 2. Březen, 2017 we have y_groups 1 Link to comment Share on other sites More sharing options...
JappinQo 5 Odesláno: 2. Březen, 2017 Share Odesláno: 2. Březen, 2017 Strašne dobre kámo Link to comment Share on other sites More sharing options...
Scydo 397 Odesláno: 2. Březen, 2017 Author Share Odesláno: 2. Březen, 2017 we have y_groups To sice máme, ale s tím i celou knihovnu. Link to comment Share on other sites More sharing options...
Administrátor Ewwe 434 Odesláno: 2. Březen, 2017 Administrátor Share Odesláno: 2. Březen, 2017 To sice máme, ale s tím i celou knihovnu. a to je spatne ? Link to comment Share on other sites More sharing options...
Globální moderátor HighPrint 177 Odesláno: 2. Březen, 2017 Globální moderátor Share Odesláno: 2. Březen, 2017 Tím asi myslí, že nepoužiješ jeřáb na přesunutí počítače 2 Link to comment Share on other sites More sharing options...
Scydo 397 Odesláno: 2. Březen, 2017 Author Share Odesláno: 2. Březen, 2017 Tím asi myslí, že nepoužiješ jeřáb na přesunutí počítače Vskutku a to je spatne ? Ne, ale chtěl jsem vytvořit samostatný include. Bez knihovny. Link to comment Share on other sites More sharing options...
Hlavní moderátor vEnd 279 Odesláno: 2. Březen, 2017 Hlavní moderátor Share Odesláno: 2. Březen, 2017 Tak gratuluji, ten kód je přesně to, co jsi z něho chtěl mít – mindf*ck. Když se odvrátím od Scydovských zhovadilostí typu then*, (!true), do-while (ten bych tam nedával), pvar0 apod., tak se dá říct, že je to poměrně čistá práce. Jasně, máš tam neošetřeno tohle: stock GetFreeGroup() return (GetGroupCount() + 1); Ale to už je třeba touto dobou opravené (jinak Bůh s těmi, co vytvoří hodně skupin). Taky by některé věci šly udělat lépe (zjišťování hráčovy skupiny pomocí porovnávání řetězců, více skupin pro hráče apod.), ale budiž. Za kód máš -∞/10, za script 6/10. P. S. Jinak co musím uznat, tak je to jedna z těch hezčích prezentací na fóru, fakt že jo. Žádné křiklavé barvy, Comic Sans (HighPrinte, ahoj ) a nestrukturované úseky. Link to comment Share on other sites More sharing options...
DarkDragon_CZE69 17 Odesláno: 3. Březen, 2017 Share Odesláno: 3. Březen, 2017 (upraveno) Pěkný, hezky zpracovaná prezentace. Dobrá práce bratře nacisto Edited 3. Březen, 2017 by Stringer_CZE Link to comment Share on other sites More sharing options...
Pán Podnikateľ 52 Odesláno: 3. Březen, 2017 Share Odesláno: 3. Březen, 2017 Dobrý deň. Podľa môjho názoru, je to veľmi pekná práca. Konečne niekto uvažuje, aj nad tím, že YSI je nepotrebné, a keď chce niekto iba mlieko, nezoberie si predsa celú kravu. Link to comment Share on other sites More sharing options...
Administrátor Ewwe 434 Odesláno: 3. Březen, 2017 Administrátor Share Odesláno: 3. Březen, 2017 Dobrý deň. Podľa môjho názoru, je to veľmi pekná práca. Konečne niekto uvažuje, aj nad tím, že YSI je nepotrebné, a keď chce niekto iba mlieko, nezoberie si predsa celú kravu. Pawneři se dělí na : 1. Ti kteří mají rádi YSI 2. Ti kteří s YSI neumí 3 Link to comment Share on other sites More sharing options...
Scydo 397 Odesláno: 3. Březen, 2017 Author Share Odesláno: 3. Březen, 2017 Pěkný, hezky zpracovaná prezentace. Dobrá práce bratře nacisto Díky. Nechť žije říše. Dobrý deň. Podľa môjho názoru, je to veľmi pekná práca. Konečne niekto uvažuje, aj nad tím, že YSI je nepotrebné, a keď chce niekto iba mlieko, nezoberie si predsa celú kravu. Ale já neříkám, že je YSI nepotřebné nebo blbné. YSI je úžasné. Jenom jsem udělal jednu z jeho vymožeností, bez použití knihovny. Link to comment Share on other sites More sharing options...
Hlavní moderátor vEnd 279 Odesláno: 3. Březen, 2017 Hlavní moderátor Share Odesláno: 3. Březen, 2017 Pawneři se dělí na : 1. Ti kteří mají rádi YSI 2. Ti kteří s YSI neumí To mi tak hlavou proběhla vzpomínka, jak jsi jednoho dne nadával v chatu, jak ti něco s YSI nefunguje. Link to comment Share on other sites More sharing options...
Tanga 131 Odesláno: 3. Březen, 2017 Share Odesláno: 3. Březen, 2017 strasny kodCitatelnost 0, rozsiritelnost 0, pomenovanie premennych a funkcii 0, ziadne komentare ktore by pripadne vysvetlili kod, makra definovane v strede suboruako spominal vend, slaba bezpecnost, napr. ak si vytvorim grupu s nazvom ako uz grupa existuje, tak sa nijak nedozviem ze sa daco buglo ne? Vzdy by mi bralo pri vyhladavani ptm tu prvu grupu s rovnakym nazvom.Btw ak vytvorim nejaku grupu este pred main grupou, tak ta main grupa ju prepise nie, kedze pouziva staticky format(GInfo[0][sGroupName], MAX_GROUP_NAME_LEN, sGroup); format(GInfo[0][sGroupObj], MAX_GROUP_NAME_OBJ_LEN, sObjName); musis potom pri GetGroupCount() zacat od indexu 1, nie 0 ak sa nemylim Inak uzitocnost 7, napad zaujimavy 6 a za aktivitu na fore 11/10.Takze tak no, kod mohol byt lepsi, ale inak celkovo je to v pohode, 7/10. 1 Link to comment Share on other sites More sharing options...
Administrátor Ewwe 434 Odesláno: 3. Březen, 2017 Administrátor Share Odesláno: 3. Březen, 2017 To mi tak hlavou proběhla vzpomínka, jak jsi jednoho dne nadával v chatu, jak ti něco s YSI nefunguje. Pšt Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now