GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Szkript kérések => A témát indította: BoSS - 2014. Augusztus 06. - 16:11:47

Cím: Admin név
Írta: BoSS - 2014. Augusztus 06. - 16:11:47
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.
Cím: Admin név
Írta: SuBwayer - 2014. Augusztus 06. - 19:27:34
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
Cím: Admin név
Írta: BoSS - 2014. Augusztus 06. - 19:56:08
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
Cím: Admin név
Írta: SuBwayer - 2014. Augusztus 06. - 19:57:43
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.
Cím: Admin név
Írta: BoSS - 2014. Augusztus 06. - 20:04:07
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 ?
Cím: Admin név
Írta: SuBwayer - 2014. Augusztus 06. - 20:07:36
Igen , tudnád használni. De viszont akkor amiket mondtam csináld meg. +Amik megjegyzésben voltak odaírva , azokat is vedd figyelembe.
Cím: Admin név
Írta: BoSS - 2014. Augusztus 06. - 20:13:21
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 ?
Cím: Admin név
Írta: SuBwayer - 2014. Augusztus 06. - 20:20:26
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]
Cím: Admin név
Írta: blackdog476 - 2014. Augusztus 06. - 20:47:04
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.
Cím: Admin név
Írta: SuBwayer - 2014. Augusztus 06. - 20:57:10
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.
Cím: Admin név
Írta: blackdog476 - 2014. Augusztus 06. - 21:43:22
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
Cím: Admin név
Írta: rayle - 2014. Augusztus 06. - 21:54:29
Í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;
}
Cím: Admin név
Írta: SuBwayer - 2014. Augusztus 06. - 22:05:55
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.
Cím: Admin név
Írta: BoSS - 2014. Augusztus 07. - 16:53:02
köszönöm szépen a segítséged! zártam!