[POMOC] - /report CMD

Započeo elemental.
26. Avg. 2011.
1,608
pregleda
14
postova
Samper
5
Kingpin
26. Avg. 2011.
Skripta koju koristim: Noxicus edit, kako vec xD
Detaljan opis problema: Ovako, napravio sam, ono kad posalje /report adminima, da mu pise ono: Vasa prijava je poslana online Administratorima. Vasa prijava glasi: Pa u drugom redu dolje napisem: - %s!. Al mi ne bude tako, evo dole slika.
Dio skripte:


COMMAND:report(playerid, params[])
{
new string;
new sendername;
new idx;
   if(IsPlayerConnected(playerid))
   {

       GetPlayerName(playerid, sendername, sizeof(sendername));
new length = strlen(params);
while ((idx < length) && (params <= ' '))
{
idx++;
}
new offset = idx;
new result;
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = params;
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result))
{
SendClientMessage(playerid, COLOR_GRAD2, "{168BFF}Cyclone komanda | Komanda: {959561} /report ");
return 1;
}
if(Reporter == 1)
{
           SendClientMessage(playerid, COLOR_GREY, "Moras sacekati minutu prije ponovnog slanja reporta.");
    return 1;
}
 if(PlayerInfo >= 1)
{
format(string, sizeof(string), " {FFFF80}Cyclone | {FF4444}Ne mozes pricati jer si utisan! Preostalo vrijeme: {FFFF80}%d sekundi(%d minuta)", PlayerInfo, (PlayerInfo/60)+1);
SCM(playerid, 0xFF4444FF, string);
return 1;
}
format(string, sizeof(string), "Report od %s: {B1B1D8}*%s", sendername, (result));
ABroadCast(0x8080C0FF,string,2);
SendClientMessage(string, sizeof(string), "Tvoja prijava je poslana online {0x33CCFFAA}Adminima / GameMasterima. Vasa prijava glasi:",  (result));
format(string, sizeof(string), "{0xF5DEB3AA}- %s!",  (result));
SendClientMessage(playerid, 0x8080C0FF, string);
Reporter = 1;
SetTimerEx("Report1",60000, false, "i", playerid);

    }
   return 1;
}

Neke slike/video za lakse dobijanje pomoci: Evo slika: Nema mi onog reda Vasa prijava je poslana online Administratorima. Vasa prijava glasi:
Deleted User
Obrisan korisnik
26. Avg. 2011.
      COMMAND:report(playerid, params[])  
      { 
          new string; 
          new sendername; 
          new idx; 
          if(IsPlayerConnected(playerid)) 
          { 
             
              GetPlayerName(playerid, sendername, sizeof(sendername)); 
            new length = strlen(params); 
            while ((idx < length) && (params <= ' ')) 
            { 
                idx++; 
            } 
            new offset = idx; 
            new result; 
            while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) 
            { 
                result[idx - offset] = params; 
                idx++; 
            } 
            result[idx - offset] = EOS; 
            if(!strlen(result)) 
            { 
                SendClientMessage(playerid, COLOR_GRAD2, "{168BFF}Cyclone komanda | Komanda: {959561} /report "); 
                return 1; 
            } 
            if(Reporter == 1) 
            { 
                SendClientMessage(playerid, COLOR_GREY, "Moras sacekati minutu prije ponovnog slanja reporta."); 
              return 1; 
            } 
              if(PlayerInfo >= 1) 
            { 
                  format(string, sizeof(string), " {FFFF80}Cyclone | {FF4444}Ne mozes pricati jer si utisan! Preostalo vrijeme: {FFFF80}%d sekundi(%d minuta)", PlayerInfo, (PlayerInfo/60)+1); 
                SCM(playerid, 0xFF4444FF, string); 
                return 1; 
            } 
            format(string, sizeof(string), "Report od %s: {B1B1D8}*%s", sendername, (result)); 
            ABroadCast(0x8080C0FF,string,2); 
            format(string, sizeof(string), "Tvoja prijava je poslana online {0x33CCFFAA}Adminima / GameMasterima. Vasa prijava glasi: %s!",  (result)); 
            SendClientMessage(playerid, 0x8080C0FF, string); 
            Reporter = 1; 
            SetTimerEx("Report1",60000, false, "i", playerid); 
     
                } 
          return 1; 
      } 

Mislim da si to hteo da uradis. U SCM nemoze ici onako kako si uradio. I da bolje koristi SSCANF jer je lakse napraviti komandu i brza je.
Samper
5
Kingpin
26. Avg. 2011.
Gagi_Corleone wrote on August 26, 2011, 3:29 pm:
       COMMAND:report(playerid, params[])  
       { 
          new string; 
          new sendername; 
          new idx; 
           if(IsPlayerConnected(playerid)) 
           { 
               
               GetPlayerName(playerid, sendername, sizeof(sendername)); 
             new length = strlen(params); 
             while ((idx < length) && (params <= ' ')) 
             { 
                idx++; 
             } 
             new offset = idx; 
             new result; 
             while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) 
             { 
                result[idx - offset] = params; 
                idx++; 
             } 
             result[idx - offset] = EOS; 
             if(!strlen(result)) 
             { 
                SendClientMessage(playerid, COLOR_GRAD2, "{168BFF}Cyclone komanda | Komanda: {959561} /report "); 
                return 1; 
             } 
             if(Reporter == 1) 
             { 
                SendClientMessage(playerid, COLOR_GREY, "Moras sacekati minutu prije ponovnog slanja reporta."); 
              return 1; 
             } 
               if(PlayerInfo >= 1) 
             { 
                   format(string, sizeof(string), " {FFFF80}Cyclone | {FF4444}Ne mozes pricati jer si utisan! Preostalo vrijeme: {FFFF80}%d sekundi(%d minuta)", PlayerInfo, (PlayerInfo/60)+1); 
                SCM(playerid, 0xFF4444FF, string); 
                return 1; 
             } 
             format(string, sizeof(string), "Report od %s: {B1B1D8}*%s", sendername, (result)); 
             ABroadCast(0x8080C0FF,string,2); 
             format(string, sizeof(string), "Tvoja prijava je poslana online {0x33CCFFAA}Adminima / GameMasterima. Vasa prijava glasi: %s!",  (result));   
             SendClientMessage(playerid, 0x8080C0FF, string); 
             Reporter = 1; 
             SetTimerEx("Report1",60000, false, "i", playerid); 
     
                 } 
           return 1; 
       } 

Mislim da si to hteo da uradis. U SCM nemoze ici onako kako si uradio. I da bolje koristi SSCANF jer je lakse napraviti komandu i brza je.


Nisam na to mislio. Mislio sam da bude ovako, npr:

Vasa prijava je poslana online Administratorima. Vasa prijava glasi:

- ID 3 ima cheat ! (( npr ))
Wattana
3
Hustler
26. Avg. 2011.
evo ti moja...

COMMAND:report(playerid, params[])
{
new string;
new sendername;
new idx;
    if(IsPlayerConnected(playerid))
    {

        GetPlayerName(playerid, sendername, sizeof(sendername));
new length = strlen(params);
while ((idx < length) && (params <= ' '))
{
idx++;
}
new offset = idx;
new result;
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = params;
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result))
{
SendClientMessage(playerid, COLOR_GRAD2, "{00C0FF}Koristi:{FFFFFF} /report ");
return 1;
}
if(Reporter == 1)
{
            SendClientMessage(playerid, COLOR_GRAD1, "Moras sacekati minutu prije ponovnog slanja reporta.");
    return 1;
}
  if(PlayerInfo >= 1)
{
format(string, sizeof(string), "  Utisan | Zabranjeno ti je pisanje jos %d sekundi(%d minuta)", PlayerInfo, (PlayerInfo/60)+1);
SCM(playerid, COLOR_YELLOW, string);
return 1;
}
format(string, sizeof(string), "Report od %s[%d]: {B1B1D8}*%s", sendername, playerid, (result));
ABroadCast(COLOR_NEWS,string,1);
format(string, sizeof(string), "*Vas report glasi: {FFFFFF}*%s",  (result));
SendClientMessage(playerid, COLOR_WHITE, string);
            SendClientMessage(playerid, COLOR_YELLOW, "*CroSvera: Hvala na upitu! Admini ce brzo odgovoriti!");
Reporter = 1;
SetTimerEx("Report1",60000, false, "i", playerid);

    }
    return 1;
}
Dude
5
Crime Lord
26. Avg. 2011.
koristite sscanf za parametre, puno je efikasnije i brze...
Samper
5
Kingpin
26. Avg. 2011.
Gagi_Corleone wrote on August 26, 2011, 3:29 pm:
       COMMAND:report(playerid, params[])  
       { 
          new string; 
          new sendername; 
          new idx; 
           if(IsPlayerConnected(playerid)) 
           { 
               
               GetPlayerName(playerid, sendername, sizeof(sendername)); 
             new length = strlen(params); 
             while ((idx < length) && (params <= ' ')) 
             { 
                idx++; 
             } 
             new offset = idx; 
             new result; 
             while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) 
             { 
                result[idx - offset] = params; 
                idx++; 
             } 
             result[idx - offset] = EOS; 
             if(!strlen(result)) 
             { 
                SendClientMessage(playerid, COLOR_GRAD2, "{168BFF}Cyclone komanda | Komanda: {959561} /report "); 
                return 1; 
             } 
             if(Reporter == 1) 
             { 
                SendClientMessage(playerid, COLOR_GREY, "Moras sacekati minutu prije ponovnog slanja reporta."); 
              return 1; 
             } 
               if(PlayerInfo >= 1) 
             { 
                   format(string, sizeof(string), " {FFFF80}Cyclone | {FF4444}Ne mozes pricati jer si utisan! Preostalo vrijeme: {FFFF80}%d sekundi(%d minuta)", PlayerInfo, (PlayerInfo/60)+1); 
                SCM(playerid, 0xFF4444FF, string); 
                return 1; 
             } 
             format(string, sizeof(string), "Report od %s: {B1B1D8}*%s", sendername, (result)); 
             ABroadCast(0x8080C0FF,string,2); 
             format(string, sizeof(string), "Tvoja prijava je poslana online {0x33CCFFAA}Adminima / GameMasterima. Vasa prijava glasi: %s!",  (result));   
             SendClientMessage(playerid, 0x8080C0FF, string); 
             Reporter = 1; 
             SetTimerEx("Report1",60000, false, "i", playerid); 
     
                 } 
           return 1; 
       } 

Mislim da si to hteo da uradis. U SCM nemoze ici onako kako si uradio. I da bolje koristi SSCANF jer je lakse napraviti komandu i brza je.


Ovako bi ja 😉
Deleted User
Obrisan korisnik
26. Avg. 2011.
Dude wrote on August 26, 2011, 3:48 pm:
koristite sscanf za parametre, puno je efikasnije i brze...

Sa tim se slazem ali neki opet idu na to Sto jednostavno kada moze komplikovano.


Evo komanda /report sa sscanf sada sam je pisao:
CMD:report(playerid, params[])
{
new text,string;
    if(sscanf(params, "s", text)) return SendClientMessage(playerid, -1, "Uputstvo: /report ");
if(Reporter == 1) return SendClientMessage(playerid, COLOR_GRAD1, "Moras sacekati minutu prije ponovnog slanja reporta.");
    if(PlayerInfo >= 1)
    {
    format(string, sizeof(string), "  Utisan | Zabranjeno ti je pisanje jos %d sekundi(%d minuta)", PlayerInfo, (PlayerInfo/60)+1);
    SCM(playerid, COLOR_YELLOW, string);
return 1;
    }
        format(string, sizeof(string), "Report od %s[%d]: {B1B1D8}*%s", sendername, playerid, text);
        ABroadCast(COLOR_NEWS,string,1);
        SendClientMessage(playerid, COLOR_WHITE, *Vasa prijava je poslana online Administratorima. Vasa prijava glasi:);
format(string, sizeof(string), "%s", text);
        SendClientMessage(playerid, COLOR_YELLOW, string);
        Reporter = 1;
        SetTimerEx("Report1",60000, false, "i", playerid);
return 1;
}

Mozda ima neka greska posto sam napisao u notepad-u. Pa ti sada vidi sta je tebi jednostavnije.
Deleted User
Obrisan korisnik
26. Avg. 2011.
new text;
if(sscanf(params,"s",text))return SendClientMessage(playerid, 0xFF0000AA, "INFO: /report ");

evo ti linija tj 2 lakse ti je sa ovim
taft
5
Underboss
26. Avg. 2011.
@gagi

Neka ude primjer 50 ljudi na server i neka 25 posalju /report pa onda neka izadu svih 50 i neka udu NOVIH 50 i neka ponovno 25 koristi /report to ti je 50 timera koje ti NE UBIJAS sto znaci da ce ova tvoj komanda kad-tad crashati server! Za ovakve stvari nema potrebe za pravljenje novog timera nego se varijablama spoji na jedan lokalni ili koristi TickCount kako i ja koristim za ovakve stvari npr.


static SomeVar[MAX_PLAYERS char]; // jer vjerojatno neces koristiti za vise od 255 max input

// i onda koristis
if(SomeVar{playerid} != 0 && GetTickCount() - SomeVar{playerid} < Sec(60)) // ako NIJE proslo 60 sekundi (1 minuta)

// i evo ti ovaj Sec() koji sam objavio u korisne skripte i kodove

#define Sec(%0) \
                 ((%0*1000))

Deleted User
Obrisan korisnik
26. Avg. 2011.
Quote from August 26, 2011, 4:06 pm:
@gagi

Neka ude primjer 50 ljudi na server i neka 25 posalju /report pa onda neka izadu svih 50 i neka udu NOVIH 50 i neka ponovno 25 koristi /report to ti je 50 timera koje ti NE UBIJAS sto znaci da ce ova tvoj komanda kad-tad crashati server! Za ovakve stvari nema potrebe za pravljenje novog timera nego se varijablama spoji na jedan lokalni ili koristi TickCount kako i ja koristim za ovakve stvari npr.


static SomeVar[MAX_PLAYERS char]; // jer vjerojatno neces koristiti za vise od 255 max input

// i onda koristis
if(SomeVar{playerid} != 0 && GetTickCount() - SomeVar{playerid} < Sec(60))

// i evo ti ovaj Sec() koji sam objavio u korisne skripte i kodove

#define Sec(%0) \
                  ((%0*1000))


Ja sam njegovu komandu samo prebacio u ZCMD + SSCANF u kojoj je vec bio timer. Ali ovo sto si rekao to stoji i tako i jeste. 😉
Samper
5
Kingpin
26. Avg. 2011.
CycloneRPG.pwn(27185) : error 017: undefined symbol "sendername"

        format(string, sizeof(string), "Report od %s[%d]: {B1B1D8}*%s", sendername, playerid, text);
b3ntleY
5
Underboss
26. Avg. 2011.
Dodaj new sendername; u cmd
Samper
5
Kingpin
26. Avg. 2011.
- Nickâ„¢ wrote on August 26, 2011, 4:13 pm:
Dodaj new sendername; u cmd


Gdje ?

Pod sto da dodam ?
Deleted User
Obrisan korisnik
26. Avg. 2011.
new sendername; 
GetPlayerName(playerid, sendername, sizeof(sendername)); 

To dodas ispod:
new text,string;
Ako si dodao tu moj komandu.

Morate biti prijavljeni da biste odgovorili na ovu temu.

Prijava

© 2026 SmartShark. All rights reserved.

Powered by Momentum|v2026.3.001 Alpha