[POMOC] - /report CMD

Započeo elemental., Avgust 26, 2011, 17:26:14 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 4 gostiju pregledaju ovu temu.

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[128];
new sendername[MAX_PLAYER_NAME];
new idx;
   if(IsPlayerConnected(playerid))
   {

       GetPlayerName(playerid, sendername, sizeof(sendername));
new length = strlen(params);
while ((idx < length) && (params[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = params[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result))
{
SendClientMessage(playerid, COLOR_GRAD2, "{168BFF}Cyclone komanda | Komanda: {959561} /report [text]");
return 1;
}
if(Reporter[playerid] == 1)
{
           SendClientMessage(playerid, COLOR_GREY, "Moras sacekati minutu prije ponovnog slanja reporta.");
    return 1;
}
 if(PlayerInfo[playerid][pMuted] >= 1)
{
format(string, sizeof(string), " {FFFF80}Cyclone | {FF4444}Ne mozes pricati jer si utisan! Preostalo vrijeme: {FFFF80}%d sekundi(%d minuta)", PlayerInfo[playerid][pMuteTime], (PlayerInfo[playerid][pMuteTime]/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[playerid] = 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:
Poslednja Izmena: Avgust 26, 2011, 17:29:31 POSLE PODNE od [CY:RP & BM] × SpaMaster ×

dragan12

       COMMAND:report(playerid, params[]) 
       { 
          new string[128]; 
          new sendername[MAX_PLAYER_NAME]; 
          new idx; 
           if(IsPlayerConnected(playerid)) 
           { 
               
               GetPlayerName(playerid, sendername, sizeof(sendername)); 
             new length = strlen(params); 
             while ((idx < length) && (params[idx] <= ' ')) 
             { 
                idx++; 
             } 
             new offset = idx; 
             new result[64]; 
             while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) 
             { 
                result[idx - offset] = params[idx]; 
                idx++; 
             } 
             result[idx - offset] = EOS; 
             if(!strlen(result)) 
             { 
                SendClientMessage(playerid, COLOR_GRAD2, "{168BFF}Cyclone komanda | Komanda: {959561} /report [text]"); 
                return 1; 
             } 
             if(Reporter[playerid] == 1) 
             { 
                SendClientMessage(playerid, COLOR_GREY, "Moras sacekati minutu prije ponovnog slanja reporta."); 
              return 1; 
             } 
               if(PlayerInfo[playerid][pMuted] >= 1) 
             { 
                   format(string, sizeof(string), " {FFFF80}Cyclone | {FF4444}Ne mozes pricati jer si utisan! Preostalo vrijeme: {FFFF80}%d sekundi(%d minuta)", PlayerInfo[playerid][pMuteTime], (PlayerInfo[playerid][pMuteTime]/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[playerid] = 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.

Citat: Gagi_Corleone poslato Avgust 26, 2011, 17:29:56 POSLE PODNE
       COMMAND:report(playerid, params[]) 
       { 
          new string[128]; 
          new sendername[MAX_PLAYER_NAME]; 
          new idx; 
           if(IsPlayerConnected(playerid)) 
           { 
               
               GetPlayerName(playerid, sendername, sizeof(sendername)); 
             new length = strlen(params); 
             while ((idx < length) && (params[idx] <= ' ')) 
             { 
                idx++; 
             } 
             new offset = idx; 
             new result[64]; 
             while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) 
             { 
                result[idx - offset] = params[idx]; 
                idx++; 
             } 
             result[idx - offset] = EOS; 
             if(!strlen(result)) 
             { 
                SendClientMessage(playerid, COLOR_GRAD2, "{168BFF}Cyclone komanda | Komanda: {959561} /report [text]"); 
                return 1; 
             } 
             if(Reporter[playerid] == 1) 
             { 
                SendClientMessage(playerid, COLOR_GREY, "Moras sacekati minutu prije ponovnog slanja reporta."); 
              return 1; 
             } 
               if(PlayerInfo[playerid][pMuted] >= 1) 
             { 
                   format(string, sizeof(string), " {FFFF80}Cyclone | {FF4444}Ne mozes pricati jer si utisan! Preostalo vrijeme: {FFFF80}%d sekundi(%d minuta)", PlayerInfo[playerid][pMuteTime], (PlayerInfo[playerid][pMuteTime]/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[playerid] = 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 ))

evo ti moja...

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

        GetPlayerName(playerid, sendername, sizeof(sendername));
new length = strlen(params);
while ((idx < length) && (params[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = params[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result))
{
SendClientMessage(playerid, COLOR_GRAD2, "{00C0FF}Koristi:{FFFFFF} /report [text]");
return 1;
}
if(Reporter[playerid] == 1)
{
            SendClientMessage(playerid, COLOR_GRAD1, "Moras sacekati minutu prije ponovnog slanja reporta.");
    return 1;
}
  if(PlayerInfo[playerid][pMuted] >= 1)
{
format(string, sizeof(string), "  Utisan | Zabranjeno ti je pisanje jos %d sekundi(%d minuta)", PlayerInfo[playerid][pMuteTime], (PlayerInfo[playerid][pMuteTime]/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[playerid] = 1;
SetTimerEx("Report1",60000, false, "i", playerid);

    }
    return 1;
}
â˜... â–,â–ƒâ–...▆▇█ G â–ˆ O â–ˆ F â–ˆ █▇▆â–...â–ƒâ–, â˜...

â–'█▀▀█ █▀▀█ █▀▀ ▀▀█▀▀ █▀▀█ █▀▀█
â–'â–ˆâ–'â–'â–' â–ˆâ–,,â–,,â–ˆ ▀▀█ â–'â–'â–ˆâ–'â–' â–ˆâ–,,â–,,â–€ â–ˆâ–'â–'â–ˆ
â–'â–ˆâ–,,â–,,â–ˆ â–€â–'â–'â–€ ▀▀▀ â–'â–'â–ˆâ–'â–' â–€â–'▀▀ ▀▀▀▀



koristite sscanf za parametre, puno je efikasnije i brze...

Citat: Gagi_Corleone poslato Avgust 26, 2011, 17:29:56 POSLE PODNE
       COMMAND:report(playerid, params[]) 
       { 
          new string[128]; 
          new sendername[MAX_PLAYER_NAME]; 
          new idx; 
           if(IsPlayerConnected(playerid)) 
           { 
               
               GetPlayerName(playerid, sendername, sizeof(sendername)); 
             new length = strlen(params); 
             while ((idx < length) && (params[idx] <= ' ')) 
             { 
                idx++; 
             } 
             new offset = idx; 
             new result[64]; 
             while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) 
             { 
                result[idx - offset] = params[idx]; 
                idx++; 
             } 
             result[idx - offset] = EOS; 
             if(!strlen(result)) 
             { 
                SendClientMessage(playerid, COLOR_GRAD2, "{168BFF}Cyclone komanda | Komanda: {959561} /report [text]"); 
                return 1; 
             } 
             if(Reporter[playerid] == 1) 
             { 
                SendClientMessage(playerid, COLOR_GREY, "Moras sacekati minutu prije ponovnog slanja reporta."); 
              return 1; 
             } 
               if(PlayerInfo[playerid][pMuted] >= 1) 
             { 
                   format(string, sizeof(string), " {FFFF80}Cyclone | {FF4444}Ne mozes pricati jer si utisan! Preostalo vrijeme: {FFFF80}%d sekundi(%d minuta)", PlayerInfo[playerid][pMuteTime], (PlayerInfo[playerid][pMuteTime]/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[playerid] = 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 ;)

dragan12

Citat: Dude poslato Avgust 26, 2011, 17:48:42 POSLE PODNE
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[128],string[128];
    if(sscanf(params, "s[128]", text)) return SendClientMessage(playerid, -1, "Uputstvo: /report [Text]");
if(Reporter[playerid] == 1) return SendClientMessage(playerid, COLOR_GRAD1, "Moras sacekati minutu prije ponovnog slanja reporta.");
    if(PlayerInfo[playerid][pMuted] >= 1)
    {
    format(string, sizeof(string), "  Utisan | Zabranjeno ti je pisanje jos %d sekundi(%d minuta)", PlayerInfo[playerid][pMuteTime], (PlayerInfo[playerid][pMuteTime]/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[playerid] = 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.

N0NE

new text[128];
if(sscanf(params,"s",text))return SendClientMessage(playerid, 0xFF0000AA, "INFO: /report [text]");


evo ti linija tj 2 lakse ti je sa ovim

@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))

Poslednja Izmena: Avgust 26, 2011, 18:08:27 POSLE PODNE od [H]265
Kristijan Stipić

dragan12

Citat: [H]265 poslato Avgust 26, 2011, 18:06:40 POSLE PODNE
@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. ;)

CycloneRPG.pwn(27185) : error 017: undefined symbol "sendername"

         format(string, sizeof(string), "Report od %s[%d]: {B1B1D8}*%s", sendername, playerid, text);

Dodaj new sendername[MAX_PLAYER_NAME]; u cmd

Citat: - Nickâ,,¢ poslato Avgust 26, 2011, 18:13:15 POSLE PODNE
Dodaj new sendername[MAX_PLAYER_NAME]; u cmd

Gdje ?

Pod sto da dodam ?
Poslednja Izmena: Avgust 26, 2011, 18:18:10 POSLE PODNE od [CY:RP & BM] × SpaMaster ×

dragan12

new sendername[MAX_PLAYER_NAME];
GetPlayerName(playerid, sendername, sizeof(sendername)); 

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