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

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: Zsoma - 2010. május 26. - 17:20:33

Cím: Admin script
Írta: Zsoma - 2010. május 26. - 17:20:33
Hello
Elkedzted az admin scriptet is a modomban és a wikin találtasm egy jo kis alapot..
amivel adminjogot osztok ki:
ime:
 
new cmd[256], idx;
cmd = strtok(cmdtext, idx);
if(strcmp(cmd, \"/makeadmin\", true) == 0)
{
       new string[128];
       new tmp[256];
       new player[MAX_PLAYER_NAME], giveplayer[MAX_PLAYER_NAME];
       new giveplayerid;
       if (IsPlayerAdmin(playerid))
       {
               tmp = strtok(cmdtext, idx);
               if(!strlen(tmp))
               {
                       SendClientMessage(playerid, ORANGE, \"USAGE: /makeadmin [playerid] [level]\");
                       SendClientMessage(playerid, ORANGE, \"FUNCTION: Player will be an admin.\");
                       return 1;
               }
               giveplayerid = ReturnUser(tmp);
               tmp = strtok(cmdtext, idx);
               new level = strval(tmp);
               if(giveplayerid != INVALID_PLAYER_ID)
               {
                       GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
                       GetPlayerName(playerid, player, sizeof(player));
                       PlayerInfo[giveplayerid][AdminLevel] = level;
                       printf(\"Admin %s made %s a level %d admin.\", player, giveplayer, level);
                       format(string, sizeof(string), \"You are now an administrator level %d thanks to %s.\", level,  player);
                       SendClientMessage(giveplayerid, 0x00C2ECFF, string);
                       format(string, sizeof(string), \"You have given %s level %d admin.\",  giveplayer,PlayerInfo[giveplayerid][AdminLevel]);
                               SendClientMessage(playerid, 0x00C2ECFF, string);
               }
               else if(giveplayerid == INVALID_PLAYER_ID)
               {
                       format(string, sizeof(string), \"%i is not an active player.\", giveplayerid);
                       SendClientMessage(playerid, 0xE60000FF, string);
               }
       }
       else
       {
           SendClientMessage(playerid, 0xE60000FF, \"You are not a lead admin!\");
       }
       return 1;
}

 
sikeresen be van épitve, kaptam pár errort de kijavitottam...
ezekkkel az errorokkal nemtudok mit tenni. lécci segitsetek!
megkösznném ::| ;) :)
 
C:\\Users\\Zsombi\\Desktop\\Szerver\\gamemodes\\rpg.pwn(1486) : warning 219: local variable \"tmp\" shadows a variable at a preceding level
C:\\Users\\Zsombi\\Desktop\\Szerver\\gamemodes\\rpg.pwn(1498) : error 017: undefined symbol \"ReturnUser\"
Pawn compiler 3.2.3664           Copyright (c) 1997-2006, ITB CompuPhase
 
1 Error.
Cím: Admin script
Írta: Iceaac - 2010. május 26. - 18:08:22
1. A \"tmp\" karakterlánc már létezik, felesleges újra létrehozni.
2. A wikirol tedd be a \"ReturnUser\"-t, mert hiányzik.
Cím: Admin script
Írta: Zsoma - 2010. május 26. - 18:57:42
tökéletes, de van egy looosed identitation.. nemjövök rá mért..
 
   if(strcmp(cmd, \"/makeadmin\", true) == 0)
{
       new string[128];
          new player[MAX_PLAYER_NAME], giveplayer[MAX_PLAYER_NAME];
          new giveplayerid;
giveplayerid = ReturnUser(tmp);
      new level = strval(tmp);
          if (IsPlayerAdmin(playerid))
          {
           if(!strlen(tmp))
            {
               SendClientMessage(playerid, COLOR_WHITE, \"Tipp: Használat: /makeadmin [playerid] [level]\");
              return 1;
        }
   if(giveplayerid!= INVALID_PLAYER_ID)

             GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
             GetPlayerName(playerid, player, sizeof(player));
             PlayerInfo[giveplayerid][Adminszint] = level;
             format(string, sizeof(string), \"You are now an administrator level %d thanks to %s.\", level,  player);
             SendClientMessage(giveplayerid, 0x00C2ECFF, string);
             format(string, sizeof(string), \"You have given %s level %d admin.\",  giveplayer,PlayerInfo[giveplayerid][Adminszint]);
             SendClientMessage(playerid, 0x00C2ECFF, string);
      }
else if(giveplayerid == INVALID_PLAYER_ID)
        {
            format(string, sizeof(string), \"%i is not an active player.\", giveplayerid);
            SendClientMessage(playerid, 0xE60000FF, string);
         }
          }
     return 1;
}
Cím: Admin script
Írta: Iceaac - 2010. május 26. - 19:07:07
Tess kicsit egyszerusítettem is.
 
   if(!strcmp(cmd, \"/makeadmin\", true))
{
       new string[128], player[MAX_PLAYER_NAME], giveplayer[MAX_PLAYER_NAME];
          new giveplayerid = ReturnUser(tmp), level = strval(tmp);
          if (!IsPlayerAdmin(playerid)) return AendClientMessage(playerid, COLOR_WHITE, \" Nem vagy RCON admin!\");
        if(!strlen(tmp) return SendClientMessage(playerid, COLOR_WHITE, \"Tipp: Használat: /makeadmin [playerid] [level]\");
if(giveplayerid!= INVALID_PLAYER_ID)
{
             GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
             GetPlayerName(playerid, player, sizeof(player));
             PlayerInfo[giveplayerid][Adminszint] = level;
             format(string, sizeof(string), \"You are now an administrator level %d thanks to %s.\", level,  player);
             SendClientMessage(giveplayerid, 0x00C2ECFF, string);
             format(string, sizeof(string), \"You have given %s level %d admin.\",  giveplayer,PlayerInfo[giveplayerid][Adminszint]);
             SendClientMessage(playerid, 0x00C2ECFF, string);
      }
    else if(giveplayerid == INVALID_PLAYER_ID)
        {
            format(string, sizeof(string), \"%i is not an active player.\", giveplayerid);
            SendClientMessage(playerid, 0xE60000FF, string);
         }
return 1;
}
Cím: Admin script
Írta: Zsoma - 2010. május 26. - 19:43:41
pawno lefut de mindig aztirja ki h pl /makeadmin 0 vagyis sajátmagam h 432455unnamed player pirossal.. ez mér tvan?
szerk.: ja még egy kérés segitség
regisztrácionál ugye dinis reg rendszer, szal regnél csinál a svriptfiles/usersmappába egy játékos bevével ellátott ini file.t
namost abba vannak dolgok pl money meg adminszint egyenlöre ezek...
de AZT h lehet megcsinálni (és most ne nézz hülyének h iet kérek, de ezzel megtanullnám) hogy aZt h leeht h beirom h
/blabla és akkor abba a dini ileba amit megcsinál regnél abba beleirjon vmit pl h blalba..
és elmentse
azt h leeht? nagyon megköszönném :)
Cím: Admin script
Írta: Iceaac - 2010. május 26. - 20:29:43
1: Talán így, de egyáltalán nem tuti:
 
   if(!strcmp(cmd, \"/makeadmin\", true))
{
       new string[128], player[MAX_PLAYER_NAME], giveplayer[MAX_PLAYER_NAME];
          new giveplayerid = ReturnUser(tmp), level = strval(tmp);
          if (!IsPlayerAdmin(playerid)) return AendClientMessage(playerid, COLOR_WHITE, \" Nem vagy RCON admin!\");
        if(!strlen(tmp) return SendClientMessage(playerid, COLOR_WHITE, \"Tipp: Használat: /makeadmin [playerid] [level]\");
if(IsPlayerConnected(giveplayerid))
{
             GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
             GetPlayerName(playerid, player, sizeof(player));
             PlayerInfo[giveplayerid][Adminszint] = level;
             format(string, sizeof(string), \"You are now an administrator level %d thanks to %s.\", level,  player);
             SendClientMessage(giveplayerid, 0x00C2ECFF, string);
             format(string, sizeof(string), \"You have given %s level %d admin.\",  giveplayer,PlayerInfo[giveplayerid][Adminszint]);
             SendClientMessage(playerid, 0x00C2ECFF, string);
      }
    else if(!IsPlayerConnected(giveplayerid))
        {
            format(string, sizeof(string), \"%i is not an active player.\", giveplayerid);
            SendClientMessage(playerid, 0xE60000FF, string);
         }
return 1;
}

 
2: Nem értem, próbáld megfogalmazni jobban pls.
Cím: Admin script
Írta: Zsoma - 2010. május 26. - 20:53:48
ok bocs csak ittam xD
Na...
reg rendszerem dini alapú.
és olyat szeretnék (gyakorlásnak)
HOGY beirom h /blabla
és kiirja abba az ini fileba amit elmentett fiokomként a regnél. abba a fileba amibe elmentette a jelszot regnél stb...
érted? :D
Cím: Admin script
Írta: Csabesz - 2010. május 26. - 20:55:33
Holnap megírom sscanf használatával.  :D
Persze ha valaki meg nem eloz...  :P
Cím: Admin script
Írta: Zsoma - 2010. május 26. - 21:08:11
Idézetet írta: Csabesz date=1274900133\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"1776\" data-ipsquote-contentclass=\"forums_Topic
Holnap megírom sscanf használatával.  :D
Persze ha valaki meg nem eloz...  :P
 
köszi :D
Cím: Admin script
Írta: Iceaac - 2010. május 26. - 21:29:36
Tehát amit te beírsz azt írja be a fájlba? Lehet (biztos, mert Csabesz érti), hogy velem van a gond..  ;D :dead:
Cím: Admin script
Írta: Zsoma - 2010. május 26. - 21:40:21
nemnem :D teveled semmi :D
lehet h megártott nekem a sok sör :D:D
na hát végülis igen..
nempont azt hanem pl h 1 vagy h 2.. érted?:D
Cím: Admin script
Írta: TengeriMalac - 2010. május 27. - 08:23:35
Úgy érti sztem
Minden egy Note script nem?
Cím: Admin script
Írta: hpeter94 - 2010. május 27. - 16:28:55
note script? az nekme is kell :P
Cím: Admin script
Írta: krisk - 2010. május 27. - 16:46:58
http://hun-sa-mp-forum.atw.hu/index.php?topic=4560.0 <-- itt a jegyzettömb script
Cím: Admin script
Írta: Zsoma - 2010. május 27. - 16:53:47
köszi  ;) :D
Cím: Admin script
Írta: Csabesz - 2010. május 27. - 18:12:14
Na megcsináltam sccanf használatával, de egy kicsit átalakítottam. ( egyszerusítettem )  ;)
 

CMD:makeadmin ( playerid, params[ ] )
{
   new string[ 128 ],
   level, giveplayerid,
   player[ MAX_PLAYER_NAME ],
   giveplayer[ MAX_PLAYER_NAME ];
   if ( !IsPlayerAdmin ( playerid ) ) return SendClientMessage ( playerid, COLOR_WHITE, \" Nem vagy RCON admin!\" );
   if ( sscanf ( params, \"un\", giveplayerid, level ) ) return SendClientMessage ( playerid, COLOR_WHITE, \"Tipp: Használat: /makeadmin [playerid] [level]\" );
   if ( !IsPlayerConnected ( giveplayerid ) ) return format ( string, sizeof ( string ), \"%i is not an active player.\", giveplayer ), SendClientMessage ( playerid, 0xE60000FF, string );
   {
       GetPlayerName ( giveplayerid, giveplayer, sizeof ( giveplayer ) );
       GetPlayerName ( playerid, player, sizeof ( player ) );
       format ( string, sizeof ( string ), \"Admin %s adott neked %d admin szintet.\", player, level );
       SendClientMessage ( giveplayerid, 0x00C2ECFF, string );
       format ( string, sizeof ( string ), \"Te adtál %s-nak %d admin szintet.\",  giveplayer, level );
       SendClientMessage ( playerid, 0x00C2ECFF, string );
       PlayerInfo [ giveplayerid ] [ Adminszint ] = level;
   }
   return 1;
}

 


U.I.: sccanf és zcmd használtam, csak mert nekem már az szimpatikusabb mint a hagyományos megoldás.  :D


       Nem Teszteltem (
! ), ezért lehet, hogy nem lesz tökéletes.  :-[

Cím: Admin script
Írta: Zsoma - 2010. május 27. - 18:57:01
hibás kicsikét  ;D
mert beirom simán h /makeadmin akkor aztirja ki h  te attál zsomának 0ás adminszintet stb..
de ha beirom h /makeadmin 0 2 akk kiijr a h használata xD
pls segits :D
Cím: Admin script
Írta: Csabesz - 2010. május 27. - 19:16:05
Csak mikor vizsgálom a bevitt adatott, akkor véletlenül írtam egy \'!\' jelet.
Ez a sor:
 
if ( !sscanf ( params, \"un\", giveplayerid, level ) ) return SendClientMessage ( playerid, COLOR_WHITE, \"Tipp: Használat: /makeadmin [playerid] [level]\" );

 
Helyett:
 

if ( sscanf ( params, \"un\", giveplayerid, level ) ) return SendClientMessage ( playerid, COLOR_WHITE, \"Tipp: Használat: /makeadmin [playerid] [level]\" );

 
Elég régen nyitottam már meg a pawno-t...  :D
Cím: Admin script
Írta: Zsoma - 2010. május 27. - 20:11:25
C:\\Users\\Zsombi\\Desktop\\szero\\gamemodes\\rpg.pwn(1850) : warning 203: symbol is never used: \"IsNumeric\"
C:\\Users\\Zsombi\\Desktop\\szero\\gamemodes\\rpg.pwn(1850) : warning 203: symbol is never used: \"ReturnUser\"
Pawn compiler 3.2.3664           Copyright (c) 1997-2006, ITB CompuPhase
 
2 Warnings.

 
 :\'(
Cím: Admin script
Írta: Iceaac - 2010. május 27. - 20:16:01
A szkriptben nem használtad a ReturnUser és az IsNumeric funkciót. Ez nem baj és semmit sem fog zavarni a módban. Ha el akarod tüntetni, kommentbe tedd át ezeket a funkciókat amíg nem használod.
Cím: Admin script
Írta: Zsoma - 2010. május 27. - 20:18:37
de az a poén h a szeron nem találhato ien h  IsNumeric pl xD  :amazed: :angel:
szerk.: am jo csak ha beirom h /makeadmin 0 12 akkor aztirja ki h adtál ennek és ennek NULLÁS admin rangot :D
.. ez az egyik gondom a másik meg h h leeht azt megoldani h  EZT h adok rangot vkinek elmenti a megadott fájlba? pl van egy mappa a scriptfilesban users néven benne játékos nevekkel akik regeltek. és h pl ha magamnak adok 23es rangot adminrangot akkor azt elmenti az én fileomba..
lécci help :angel: :angry: :laugh:
Cím: Admin script
Írta: Iceaac - 2010. május 27. - 20:43:58
dini_Int(fájl, \"AdminLVL\", level);

 
Az IsNumeric sztem dini.incben van benne.
Cím: Admin script
Írta: Zsoma - 2010. május 27. - 20:53:32
kifejtenéd pls bövebben h hogy épitsem bele ezt a dinit?  :dodge: ::|
ha nem tul nagy kérés  :D
pl h leirod h hova rakjam a parancsba v vmi :)
szerk.: undefined symbol file..?