Szerző Téma: Admin név  (Megtekintve 1441 alkalommal)

Nem elérhető BoSS

  • 816
    • Profil megtekintése
Admin név
« Dátum: 2014. Augusztus 06. - 16:11:47 »
0 Show voters
Sziasztok
Szeretnék egy olyan funkciót am eglévõ adminrendszerbe,ami egy parancsal elérhetõvé teszi azt,hogy az adminoknak más nevük legyen,ezt úgy szeretném,hogy csak fõadmin tudja használni ezt a parancsot!
És ha lehet akkor ne zcmd-s legyen hanem a sima,és mentse el az admin nevét ,elõre is köszönöm szépen.

Admin név
« Válasz #1 Dátum: 2014. Augusztus 06. - 19:27:34 »
+1 Show voters
Hali! Megírtam ezt FilterScriptben (( illeszd be nyugodtan a modba )) , annyi hogy muszáj volt zcmd-vel írni , mert az sscanf csak így mûködik. Ja és még 1 , az sscanf-ot be kell rakni a szerverre , és hogy figyelj a megjegyzésekre.
Ha használni akarod pl. SendClientMessage-ben , akkor az pl így nézzen ki:
 

new string[256];
format(string,sizeof(string), \"%s kapott egy kekszet.\", aName[playerid]);
SendClientMessage(playerid, -1, string);

 
A rendszer:
 

#include <a_samp>
#include <sscanf2>
#include <dini>
#include <dudb>
#include <zcmd>
#if defined FILTERSCRIPT
new nev[MAX_PLAYER_NAME];
new aName[MAX_PLAYERS];
stock(SaveAdminName(playerid)
{
new file[128];
format(file, sizeof(file), \"/Karakterek/%s.ini\", nev); //itt írd át a saját dinis elérési útra amit megadtál a register rendszernél , ha nincs ilyen akkor hozz létre egy Karakterek mappát a scriptfiles-ben és írj egy olyan + sort hogy: dini_Create(file);
dini_IntSet(file, \"aName\", aName[playerid]);
}
stock(LoadAdminName(playerid)
{
new file[128];
format(file, sizeof(file), \"/Karakterek/%s.ini\", nev);
aName[playerid] = dini_Int(file, \"aName\");
}
public OnPlayerConnect(playerid)
{
LoadAdminName(playerid);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
SaveAdminName(playerid);
aName[playerid] = -;
return 1;
}
CMD:adminnev(playerid,params[])
{
if(IsPlayerAdmin(playerid));  // így csak rcon adminnak megy , cseréld ki a te admin változódra
{
   new name;
if(sscanf(params,\"s[256]\",name)); return SendClientMessage(playerid, -1, \"Használat: /adminnev [Admin név]\");
aName[playerid] = name;
}
else SendClientMessage(playerid, -1, \"Minimum admin szint: Fõadmin\");
return 1;
}
#endif

Nem elérhető BoSS

  • 816
    • Profil megtekintése
Admin név
« Válasz #2 Dátum: 2014. Augusztus 06. - 19:56:08 »
0 Show voters
Az a gond,hogy a mód nem zcmd-vel dolgozik hanem a régi parancs kezelõvel :/ akkor más hogy nem lehet megoldani zcmd nélkül? :S

Admin név
« Válasz #3 Dátum: 2014. Augusztus 06. - 19:57:43 »
0 Show voters
Sajnos nem lehet megoldani máshogy. Mivel a params csak a zcmd-vel használható. Vagyis 1 van. ha külön ez lesz az aName filterscript. Annyi hogy akkor viszont csak rcon admin tudja használni. De ha nem így akarod , akkor akár ki is lehet bõvíteni arra , hogy még 1 admin bool is legyen , és egy parancs ami átálítja truera , ezzel be tudja kapcsolni az aName-t és onnantól az lesz neki. Ha esetleg kell segítség ebben , írj.
« Utoljára szerkesztve: 2014. Augusztus 06. - 20:00:08 írta SuBwayer »

Nem elérhető BoSS

  • 816
    • Profil megtekintése
Admin név
« Válasz #4 Dátum: 2014. Augusztus 06. - 20:04:07 »
0 Show voters
Akkor ezt szimplán FS-ként tudnám használni így ahogy van,nem ütni ki a módtól,hogy ez zcmd-s az meg nem ?

Admin név
« Válasz #5 Dátum: 2014. Augusztus 06. - 20:07:36 »
0 Show voters
Igen , tudnád használni. De viszont akkor amiket mondtam csináld meg. +Amik megjegyzésben voltak odaírva , azokat is vedd figyelembe.

Nem elérhető BoSS

  • 816
    • Profil megtekintése
Admin név
« Válasz #6 Dátum: 2014. Augusztus 06. - 20:13:21 »
0 Show voters
Idézetet írta: SuBwayer date=1407348456\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"49898\" data-ipsquote-contentclass=\"forums_Topic
Igen , tudnád használni. De viszont akkor amiket mondtam csináld meg. +Amik megjegyzésben voltak odaírva , azokat is vedd figyelembe.
 
És azokat hová kell elhelyeznem ?

Admin név
« Válasz #7 Dátum: 2014. Augusztus 06. - 20:20:26 »
0 Show voters
Leírom kiegészítve. Ezt ha berakod FS-ként mûködnie kell , csak hozd létre a scriptfiles mappában a Karakterek mappát.
Admint a /admin parancsal adhatsz , ez csak arra szolgál hogy az aName-t állítsd. Ez NEM mentõdik el.
[pawn]
#include <a_samp>
#include <sscanf2>
#include <dini>
#include <dudb>
#include <zcmd>
#if defined FILTERSCRIPT
new nev[MAX_PLAYER_NAME];
new aName[MAX_PLAYERS];
new bool:admin;
stock(SaveAdminName(playerid)
{
new file[128];
format(file, sizeof(file), \"/Karakterek/%s.ini\", nev);
dini_Create(file);
dini_IntSet(file, \"aName\", aName[playerid]);
}
stock(LoadAdminName(playerid)
{
new file[128];
format(file, sizeof(file), \"/Karakterek/%s.ini\", nev);
aName[playerid] = dini_Int(file, \"aName\");
}
public OnPlayerConnect(playerid)
{
LoadAdminName(playerid);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
SaveAdminName(playerid);
aName[playerid] = -;
admin[playerid] = false;
return 1;
}
CMD:adminnev(playerid,params[])
{
if(IsPlayerAdmin(playerid) || admin[playerid] = true);
{
       new name;
   if(sscanf(params,\"s[256]\",name)); return SendClientMessage(playerid, -1, \"Használat: /adminnev [Admin név]\");
   aName[playerid] = name;
}
else SendClientMessage(playerid, -1, \"Minimum admin szint: Fõadmin\");
return 1;
}
CMD:admin(playerid,params[])
{
if(IsPlayerAdmin(playerid));
{
       new id;
   if(sscanf(params,\"u\",id)); return SendClientMessage(playerid, -1, \"Használat: /admin [iD]\");
   admin[id] = true;
}
else SendClientMessage(playerid, -1, \"Minimum admin szint: Fõadmin\");
return 1;
}
#endif
[/pawn]

Admin név
« Válasz #8 Dátum: 2014. Augusztus 06. - 20:47:04 »
0 Show voters
Már bocs, de ne legyetek már hülyék... hát hogy ne lehetne már megcsinálni azzal a feldolgozással?? Mivel én soha nem használtam azt, nem is volt rá szükségem így nem tudom megírni neked, viszont azt tudom ajánlani, hogy keress egy hozzáértõt, vagy pedig másolj be egy olyan parancsot a módból, aminek egy darab paramétere van, ès az valamilyen string(szöveg), és írd át. Sok sikert.

Admin név
« Válasz #9 Dátum: 2014. Augusztus 06. - 20:57:10 »
0 Show voters
Már bocs, de ne legyetek már hülyék... hát hogy ne lehetne már megcsinálni azzal a feldolgozással?? Mivel én soha nem használtam azt, nem is volt rá szükségem így nem tudom megírni neked, viszont azt tudom ajánlani, hogy keress egy hozzáértõt, vagy pedig másolj be egy olyan parancsot a módból, aminek egy darab paramétere van, ès az valamilyen string(szöveg), és írd át. Sok sikert.[/quote]
1. Azért nem lehet megcsinálni , mert az sscanf paramétere ott nem mûküdik.
2. Nem bemásoltam.
3. Ez így mûködik... Akárhol akarod használni az admin nevet , az aName változóval 100% osan mûködik.
4. Az az 1 darab paraméter ELÉG.

Admin név
« Válasz #10 Dátum: 2014. Augusztus 06. - 21:43:22 »
0 Show voters
Ahogy látom a szövegértés nem megy.
1: de OTT nagyon de nem SSCANFfal kell megcsinálni. Kérlek amihez nem értessz ne szólj bele!
2: senki nem mondta, hogy azt te bemásoltad
3: hiába, neki nem jó zcmd-s parancsfeldolgozóval.
4: senki nem mondta, hogy nem elég.
2, 4: ezeknél a válaszaidnál nem is neked írtam.
még azt lehet megcsinálni, hogy nem pont ZCMDvel csinálod, hanem mondjuk DCMD-vel, és akkor jó lesz az sscanffal is
« Utoljára szerkesztve: 2014. Augusztus 06. - 21:55:34 írta Dfoglalo »

Nem elérhető rayle

  • 174
    • Profil megtekintése
Admin név
« Válasz #11 Dátum: 2014. Augusztus 06. - 21:54:29 »
0 Show voters
Így van, DCMD -vel a legegyszerûbb, azt tudod használni az alap parancskezelõ mellett.
Egyébként SuBwayer, ezt lefordítottad? Mert én kapásból több hibát is észrevettem rajta.
Írtam egyet, ennek mûködnie kell.
 
#include <a_samp>
#include <Dini>
#define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == \'\\0\') && (dcmd_%1(playerid, \"\"))) || (((%3)[(%2) + 1] == \' \') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
new AdminName[MAX_PLAYERS][24+1];
new str[64];
stock AdminNev(playerid, bool:mentes)
{
    if(mentes) // mentés
    {
        format(str, sizeof str, \"%s.ini\", GetName(playerid));
        if(!dini_Exists(str)) dini_Create(str);
        dini_Set(str, \"AdminName\", AdminName[playerid]);
    }
    else // betöltés
    {
        format(str, sizeof str, \"%s.ini\", GetName(playerid));
        if(!dini_Exists(str)) return 1;
        format(AdminName[playerid], 25, \"%s\", dini_Get(str, \"AdminName\"));
    }
    return 1;
}
public OnPlayerConnect(playerid)
{
    AdminNev(playerid, false);
    return 1;
}
public OnPlayerDisconnect(playerid)
{
    AdminNev(playerid, true);
    format(AdminName[playerid], 25, \"\");
    return 1;
}
dcmd_setaname(playerid, params[])
{
    if(!IsPlayerAdmin(playerid)) return 1;
    if(!strlen(params) || strlen(params) > 24) return 1;
    format(AdminName[playerid], 25, \"%s\", params);
    return 1;
}
dcmd_getaname(playerid, params[])
{
SendClientMessage(playerid, -1, AdminName[playerid]);
#pragma unused params
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
    dcmd(setaname, 8, cmdtext);
    dcmd(getaname, 8, cmdtext);
    return 1;
}
stock GetName(id)
{
    GetPlayerName(id, str, sizeof str);
    return str;
}
« Utoljára szerkesztve: 2014. Augusztus 06. - 21:56:46 írta rayle »

Admin név
« Válasz #12 Dátum: 2014. Augusztus 06. - 22:05:55 »
0 Show voters
Nukerdog , jól van , te is érthetsz félre dolgokat és a 3. -ra adott válaszodhoz a válaszom: Neki a sima és nem a ZCMD parancsfeldolgozóval nem jó.
rayle: Ez egy szép  rendszer! Ment a +! Amúgy igen , leellenõriztem , de nem dobott hibát.
« Utoljára szerkesztve: 2014. Augusztus 06. - 22:08:24 írta SuBwayer »

Nem elérhető BoSS

  • 816
    • Profil megtekintése
Admin név
« Válasz #13 Dátum: 2014. Augusztus 07. - 16:53:02 »
0 Show voters
köszönöm szépen a segítséged! zártam!

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal