Szerző Téma: /hirdetes probléma.  (Megtekintve 574 alkalommal)

Nem elérhető fiu77

/hirdetes probléma.
« Dátum: 2015. Augusztus 16. - 18:45:33 »
0 Show voters
Hali! Van egy hirdetés szkriptem amit kipótoltam egy tiltott szavas listával. De az a problémám hogy bárki aki csak beírja a parancsot azt kirúgja. Esetleg valaki tudja hol lehet a hiba?
Tiltott szavak:
 

new antihirdetes[] = {
        \"fasz\",
        \"ribanc\",
        \"fos \",
        \"buzi\",
        \"szar \",
        \"béna \",
        \"bena \",
        \"kaki\",
        \"kúrva\",
        \"kurva\",
        \"geci\",
        \"lopott\",
        \"letöltött\",
        \"szerver\",
        \"mod \",
        \"mód \",
};
new antihirdetes2[] = {
        \"fu.ck\",
        \"www.\",
        \".com\",
        \".tk\",
        \".hu\",
        \".net\",
        \".org\",
        \".eu\",
        \":77\",
        \".1\",
        \"ip:\",
        \".2\",
        \".3\",
        \".4\",
        \".5\",
        \".6\",
        \".7\",
        \".8\",
        \".9\",
        \"1:\",
        \"2:\",
        \"3:\",
        \"4:\",
        \"5:\",
        \"6:\",
        \"7:\",
        \"8:\",
        \"9:\",
        \"0:\",
};

 
Hirdetés rendszer:
 

if(strcmp(cmd, \"/hirdetés\", true) == 0 || strcmp(cmd, \"/hirdetés\", true) == 0 || strcmp(cmd, \"/hirdetes\", true) == 0 || strcmp(cmd, \"/ad\", true) == 0 || strcmp(cmd, \"/hirdet\", true) == 0)
{
    if(IsPlayerConnected(playerid))
    {
   GetPlayerName(playerid, sendername, sizeof(sendername));
   new length = strlen(cmdtext);
   while ((idx < length) && (cmdtext[idx] <= \' \'))
   {
      idx++;
   }
   new offset = idx;
   new result[128];
   while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
   {
      result[idx - offset] = cmdtext[idx];
      idx++;
   }
   result[idx - offset] = EOS;
   if(!strlen(result))
   {
      SendClientMessage(playerid,COLOR_LIGHTBLUE,\"SunLife RPG: /hirdetés [szöveg]\");
      return 1;
   }
   new hosszusag = strlen(result);
   if(strfind(result,\"Đ\", true,0) != -1)
   {
            if(strfind(result,\"Đ\",true,0) !=-1)
            {
                SendClientMessage(playerid, COLOR_GRAD2, \"Ezt a hirdetést nem adhatod fel!\");
                return 1;
            }
   }
        else if(strfind(result,\"admin\") != -1)
        {
            SendClientMessage(playerid, COLOR_GRAD2, \"Ha Adminra van szükséged akkor írj nekik /report-ban vagy /adminok és /pm!\");
                return 1;
        }
        for(new i; i < sizeof(antihirdetes); i++)
           {
             if(strfind(result, antihirdetes, true) != -1)
              {
                   format(string, sizeof(string), \"%s ki lett rúgva a rendszer által | Oka: Moderáld magadat!\",sendername);
           SendClientMessageToAll(0xFF0606FF, string);
                   Kick(playerid);
                 }
            }
            for(new i; i < sizeof(antihirdetes2); i++)
           {
             if(strfind(result, antihirdetes2, true) != -1)
              {
                   format(string, sizeof(string), \"%s ki lett rúgva a rendszer által | Oka: Hírdess máshol!\",sendername);
           SendClientMessageToAll(0xFF0606FF, string);
                   Kick(playerid);
                 }
            }
   if(PlayerInfo[playerid][Penz] >= hosszusag*350)
   {
         format(stringx,256,\"HIRDETÉS: %s | Feladó: %s, | Telefonszám: %d\",result,sendername,PlayerInfo[playerid][pPnumber]);
         OOCNews(COLOR_GREEN,stringx);
         PlayerInfo[playerid][Penz] -= hosszusag*350;
         varoskassza += hosszusag*350;
         Savevaroskassza();
         format(stringx,sizeof(stringx), \"A hírdetésben %d karaktert használtál fel ami %dFt!\",hosszusag,hosszusag*350);
         SendClientMessage(playerid, COLOR_WHITE, stringx);
            SafeGivePlayerMoney(playerid, -hosszusag*350);
            new nev[32];
         GetPlayerName(playerid, nev, sizeof(nev));
         new h,mi,s,y,m,d;
         getdate(y,m,d);
         gettime(h,mi,s);
         format(stringx,sizeof(stringx), \"[%d/%d/%d][%d:%d:%d][Hirdetés] HIRDETÉS: %s | Feladó: %s, | Telefonszám: %d\",y,m,d,h,mi,s,result,nev,PlayerInfo[playerid][pPnumber]);
         LoOoG(stringx);
   }
   else SendClientMessage(playerid, COLOR_GRAD1, \"A hírdetés ára 350Ft*karakter!\");
}
return 1;
}

 
Előre is köszönöm! :)
« Utoljára szerkesztve: 2015. Augusztus 16. - 18:50:32 írta skyLine »

Nem elérhető ROOCK

  • 183
    • Profil megtekintése
/hirdetes probléma.
« Válasz #1 Dátum: 2015. Augusztus 21. - 20:02:48 »
0 Show voters
azt javaslom hogy írd át zcmd és sscanfra sokkal jobb mint ez a régi izéé...
de am a for tagoknál ird át a truet falsera

Dupla hozzászólás automatikusan összefûzve. ( 2015. Augusztus 21. - 20:07:56 )

ésazt ajánlom hogy amikor ott sok helyen kiszámoltatod a pénzt inkább ugy csináld hogy létrehozol egy változót pl fizetendo[playerid] és akk egyből lekéred a hosszát és megszorzod a fizetendővel
tehát:
 

#define ar 350
fizetendo[playerid] = strlen(result)*ar;
« Utoljára szerkesztve: 2015. Augusztus 21. - 20:07:56 írta ROOCK »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal