Skripta koju koristim: Srbija Gaming
Detaljan opis problema: Napravio sam komandu za menjanje igracevog imena , i sve super radi , promeni igracu ime i sve to ali kada taj igrac ode relog i udje sa tim jednim imenom server ga kikuje i obrise mu acc. Kako da napravim da ga ne kikuje server zbog nonRP imena. Ima provera RP imena pod onplayerconnect
Dio skripte:
Komanda :
YCMD:promeniname(playerid, params[],help)
{
if(UlogovanProvera[playerid] == 0) return SCM(playerid,-1,""SERVERPLAVA"(MGRP) "C_BELA"Moras biti prijavljen.");
if (PI[playerid][Admin] >= 6)
{
new pplayerid;
new ime[32];
if(AdminDuty[playerid] == 0) return Error(playerid, "Morate biti na Admin duznosti.");
if(sscanf(params, "us[32]", pplayerid, ime)) return Koristi(playerid, "/promeniname [ID igraca/Deo imena] [Novo ime]");
if(!IsPlayerConnected(pplayerid)) return Error(playerid, "Taj igrac nije na serveru.");
// if(PI[pplayerid][Admin] >= 6) return Error(playerid, "Ne mozete to koristiti na vlasnika.");
new status[20];
if(PI[playerid][Admin] >= 1) format(status, sizeof(status), "Admin");
format(nellys, sizeof(nellys), ""C_CRVENA"![WARNING]: "C_ZUTA"%s %s je promenio ime igraca "C_CRVENA"%s "C_ZUTA" u ime "C_CRVENA"''%s''", status, Ime_Igraca(playerid), Ime_Igraca(pplayerid), ime);
StaffPoruka(COLOR_YELLOW, nellys);
ServerS[sNames] ++;
format(logstring, sizeof logstring, "| Igrac: %s | Admin: %s | Novo Ime: %s", Ime_Igraca(playerid),Ime_Igraca(pplayerid), ime);
UpisiLog(FILE_PREIMENOVANI, logstring);
SetPlayerName(pplayerid, ime);
//StatusKonekta(pplayerid, 2);
SacuvajServerStats();
}
else
{
Ovlascenje(playerid);
}
return 1;
}
Provera RP Imena :
stock ProveraRPImena(playerid)
{
new pname[MAX_PLAYER_NAME],underline=0;
GetPlayerName(playerid, pname, sizeof(pname));
/////////////////////////////////////////////////////////
if(strfind(pname,"Vaske",true) != (-1)) return 1;
else if(strfind(pname,"Vuk",true) != (-1)) return 1;
else if(strfind(pname,"Admin",true) != (-1)) return 1;
else if(strfind(pname,"Admin",true) != (-1)) return 1;
else if(strfind(pname,"Admin",true) != (-1)) return 1;
else if(strfind(pname,"Admin",true) != (-1)) return 1;
else if(strfind(pname,"Admin",true) != (-1)) return 1;
/////////////////////////////////////////////////////////
else if(strfind(pname,"[",true) != (-1)) return 0;
else if(strfind(pname,"]",true) != (-1)) return 0;
else if(strfind(pname,"$",true) != (-1)) return 0;
else if(strfind(pname,"(",true) != (-1)) return 0;
else if(strfind(pname,")",true) != (-1)) return 0;
else if(strfind(pname,"=",true) != (-1)) return 0;
else if(strfind(pname,"[member=1996][/member]",true) != (-1)) return 0;
else if(strfind(pname,"1",true) != (-1)) return 0;
else if(strfind(pname,"2",true) != (-1)) return 0;
else if(strfind(pname,"3",true) != (-1)) return 0;
else if(strfind(pname,"4",true) != (-1)) return 0;
else if(strfind(pname,"5",true) != (-1)) return 0;
else if(strfind(pname,"6",true) != (-1)) return 0;
else if(strfind(pname,"7",true) != (-1)) return 0;
else if(strfind(pname,"8",true) != (-1)) return 0;
else if(strfind(pname,"9",true) != (-1)) return 0;
else if(strfind(pname,".",true) != (-1)) return 0;
else if(strfind(pname,",",true) != (-1)) return 0;
else if(strfind(pname,"-",true) != (-1)) return 0;
new maxname = strlen(pname);
for(new i=0; i<maxname; i++)
{
if(pname[i] == '_') underline ++;
}
if(underline != 1) return 0;
pname[0] = toupper(pname[0]);
for(new x=1; x<maxname; x++)
{
if(pname[x] == '_') pname[x+1] = toupper(pname[x+1]);
else if(pname[x] != '_' && pname[x-1] != '_') pname[x] = tolower(pname[x]);
}
return 1;
}
i onplayerconnect
if(!ProveraRPImena(playerid))
{
StatusKonekta(playerid, 2);
return 1;
}
Neke slike/video za lakse dobivanje pomoci(neobavezno): /
Koliko ja vidim igracu "vaske" je sklonjena provera. Ako zelis da jos nekom sklonis proveru rp imena samo kopiraj tu liniju i izmeni .
Ne zelim da svaki put kada nekom promenim ime moram da compilujem mod i da ubacuje na control panel , zelim da napravim nesto da ne moram da radim to svakog puta
Stavi provjeru na registraciji, ne na onplayerconnect.
evo ti moje nesto izvorno pretvori ga [pawn]CMD:specijalnoime( playerid, params[] ) {
if( PlayerInfo[ playerid ][ pAdmin ] < 7 ) return GRESKA( playerid, ""col_chating"You are not authorized.");
if( !HiacDuty[ playerid ] ) return GRESKA( playerid, "Da bi koristili ovu komandu morate biti HIAC na duznosti" );
new id, novoime[ 32 ], newname[ 40 ];
new year, month, day;
if( sscanf( params, "us[32]", id, novoime ) ) return SendUsageMessage( playerid, "/specijalnoime [ ID ] [ Ime_Prezime ]");
format( newname, sizeof( newname ), "Korisnici/%s.ini", novoime );
if( id == IPI ) return GRESKA( playerid, "Pogresan ID." );
if( fexist( newname ) ) return GRESKA( playerid, "Novo ime vec postoji u bazi podataka!" );
getdate( year, month, day );
format( globalstring, sizeof( globalstring ), "RENAME | Hiac %s je promenio ime igracu %s u %s (%d-%d-%d)", ImeIgraca( playerid ), ImeIgraca( id ), novoime, month, day, year );
printf( "%s", globalstring );
format( globalstring, sizeof( globalstring ), "RENAME | Hiac %s je promenio ime igracu %s u %s .", ImeIgraca( playerid ), ImeIgraca( id ), novoime );
HiacPoruka( CRVENA, globalstring );
SavePlayer( id );
RenamePlayer( ImeIgraca( id ), novoime, id );
SendInfoMessage( id, "Hiac %s vam je promenio ime u %s.", ImeIgraca( playerid ), ImeIgraca( id ) );
format( globalstring, sizeof( globalstring ), "Prijavite se ponovno sa imenom: %s", novoime );
Kickovanje( id, globalstring );
return 1;
}[/pawn]
Moras sacuvati to ime igraca u fajlu korsinika