Za /setadmin

Započeo Simić, Jul 11, 2019, 20:14:32 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Problem(error/warning): Imate slike
Deo skripte: [ pawn ]CMD:postaviadmina(playerid,params[])
{
   if(IsPlayerAdmin(playerid))
   {
      new targetid,level;
      if(sscanf(params,"ud",targetid,level)) return SCM(playerid,-1,"/postaviadmina [ID igraca/Deo imena] [Admin Level]");
      if(!IsPlayerConnected(targetid)) return SCM(playerid,-1,"Igrac nije na serveru!");
      if(level >5 || level <1) return SCM(playerid,-1,"Najveci admin level je 5, a najmanji 1!");
      new str[100],str1[100];
      format(str,sizeof(str),"Postavili ste admin level %s igracu %d!",level,GetName(targetid));
      format(str1,sizeof(str1),"Admin %s te je promovisao na admin level %d!"),GetName(targetid),level;
      SCM(playerid,-1,str);
      SCM(targetid,-1,str1);
      PlayerInfo[targetid][pAdmin] = level;
   }
   else
   {
       SCM(playerid,-1,"Niste ovlasceni da koristite ovu komandu!");
   }
   return 1;
}[ /pawn ]
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): Jednostavno mi ne pise ko je dao Admina i koji level
Slika/video ingame problema(obavezno ako je ingame problem): https://imgur.com/3CtxJNp

[pawn]CMD:postaviadmina(playerid,params[]) {
   
   if(IsPlayerAdmin(playerid))
   {
      new targetid,level;
      if(sscanf(params,"ud",targetid,level)) return SCM(playerid,-1,"/postaviadmina [ID igraca/Deo imena] [Admin Level]");
      if(!IsPlayerConnected(targetid)) return SCM(playerid,-1,"Igrac nije na serveru!");
      if(level >5 || level <1) return SCM(playerid,-1,"Najveci admin level je 5, a najmanji 1!");
      new str[100],str1[100];
      format(str,sizeof(str),"Postavili ste admin level %d igracu %s!",level,GetName(playerid));
      format(str1,sizeof(str1),"Admin %s te je promovisao na admin level %d!",GetName(playerid),level);
      SCM(playerid,-1,str);
      SCM(targetid,-1,str1);
      PlayerInfo[targetid][pAdmin] = level;
   }
   else
   {
       SCM(playerid,-1,"Niste ovlasceni da koristite ovu komandu!");
   }
   return 1;
}[/pawn]
Poslednja Izmena: Jul 11, 2019, 20:23:00 POSLE PODNE od anderson87
• G A M E M O D E •
• F I L T E R S C R I P T •
• T U T O R I A L •


Citat
You are what you believe yoursefl to be.

Citat: anderson87 poslato Jul 11, 2019, 20:21:58 POSLE PODNE
[pawn]CMD:postaviadmina(playerid,params[]) {
   
   if(IsPlayerAdmin(playerid))
   {
      new targetid,level;
      if(sscanf(params,"ud",targetid,level)) return SCM(playerid,-1,"/postaviadmina [ID igraca/Deo imena] [Admin Level]");
      if(!IsPlayerConnected(targetid)) return SCM(playerid,-1,"Igrac nije na serveru!");
      if(level >5 || level <1) return SCM(playerid,-1,"Najveci admin level je 5, a najmanji 1!");
      new str[100],str1[100];
      format(str,sizeof(str),"Postavili ste admin level %d igracu %s!",level,GetName(playerid));
      format(str1,sizeof(str1),"Admin %s te je promovisao na admin level %d!",GetName(playerid),level);
      SCM(playerid,-1,str);
      SCM(targetid,-1,str1);
      PlayerInfo[targetid][pAdmin] = level;
   }
   else
   {
       SCM(playerid,-1,"Niste ovlasceni da koristite ovu komandu!");
   }
   return 1;
}[/pawn]
https://imgur.com/uDH8SxC
Opet mi ne pise koji je admin dao i kom igracu

[pawn]CMD:postaviadmina(playerid,params[])
{
   if(IsPlayerAdmin(playerid))
   {
      new targetid,level;
      if(sscanf(params,"ud",targetid,level)) return SCM(playerid,-1,"/postaviadmina [ID igraca/Deo imena] [Admin Level]");
      if(!IsPlayerConnected(targetid)) return SCM(playerid,-1,"Igrac nije na serveru!");
      if(level >5 || level <1) return SCM(playerid,-1,"Najveci admin level je 5, a najmanji 1!");

      new str[100];
      format(str,sizeof(str), "Postavili ste admin level %d igracu %s!", level, GetName(targetid));
      SCM(playerid,-1,str);

      format(str,sizeof(str),"Admin %s te je promovisao na admin level %d!", GetName(playerid), level);
      SCM(targetid,-1,str);

      PlayerInfo[targetid][pAdmin] = level;
   }
   else
   {
       SCM(playerid,-1,"Niste ovlasceni da koristite ovu komandu!");
   }
   return 1;
}[/pawn]

I zamijeni svoju GetName funkciju sa ovom
[pawn]
stock GetName(id)
{
   new name[MAX_PLAYER_NAME];
   GetPlayerName(id, name, sizeof(name));
   return name;
}
[/pawn]
Poslednja Izmena: Jul 11, 2019, 20:59:45 POSLE PODNE od mumitza.


Ovako brate, u skriptanju postoje formati, svaki format ima svoje znacenje.
%i Integer (whole number)
%d Integer (whole number).
%s String
%f Floating-point number (Float: tag)
%c ASCII character
%x Hexadecimal number
%b Binary number
%% Literal '%'
%q Escape a text for SQLite. (Added in 0.3.7 R2)

A tvoja greska je u ovoj liniji:
[pawn]format(str,sizeof(str), "Postavili ste admin level %d igracu %s!", level, GetName(targetid));[/pawn]
Sad ce ti verovatno jasnije biti sta si pogresio ako si procitao tabelu iznad. %d koristis za brojeve a %s za stringove. Znaci, pravilno bi trebalo biti ovako:
[pawn]format(str,sizeof(str), "Postavili ste admin level %s igracu %d!", level, GetName(targetid));[/pawn]
Cak imas gresku i ovoj liniji:
[pawn] format(str1,sizeof(str1),"Admin %s te je promovisao na admin level %d!"),GetName(targetid),level;[/pawn]
Koristis 'targetid' u GetName za admina. Znaci igracu ce izaci poruka da je Admin zapravo on. Nisi ni dovrsio liniju kako treba. Pravilno bi trebalo ovako biti:
[pawn] format(str1,sizeof(str1),"Admin %s te je promovisao na admin level %d!",GetName(playerid),level);[/pawn]
I nemas potrebe definisati dva stringa, jer gubis memoriju dzaba. To mozes u jednom stringu raditi.
Poslednja Izmena: Jul 11, 2019, 23:18:13 POSLE PODNE od Vasic
• Website: www.vasic.dev
Web Development & Cyber Security