Szerző Téma: tmp and tmp2?  (Megtekintve 860 alkalommal)

Nem elérhető Zsoma

  • 516
    • Profil megtekintése
tmp and tmp2?
« Dátum: 2010. október 13. - 18:32:47 »
0 Show voters
Hello.
uj parancsomnál elakadtam. elbiztam amgam
és azt hittem megoldom könnyen, mert egyszerünek tünt. csakhogy tévedtem :D
project: /parancs [név] [szöveg]
eredmény lenne:
\"név\" üzenete: \"szöveg\"
gondolatmenetem és saját próbálkozásom:
 
   if(strcmp(cmdtext,\"/pari\", true) == 0)
{
    if(IsPlayerConnected(playerid))
    {
   new offset = idx;
   new result[128];
   new length = strlen(cmdtext);
   while ((idx < length) && (cmdtext[idx] <= \' \'))
   {
      idx++;
   }
   while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
   {
      result[idx - offset] = cmdtext[idx];
      idx++;
   }
   result[idx - offset] = EOS;
   if(!strlen(result))
   {
      SendClientMessage(playerid, COLOR_WHITE, \"Használata: /pari [név] [szöveg].\");
      return 1;
   }
   if(!strlen(tmp))
                {
                        SendClientMessage(playerid, COLOR_WHITE, \"Használata: /pari [név] [szöveg].\");
      return 1;
   }
      format(string, sizeof(string), \"%s mondja: %s\", tmp, result);
   ProxDetector(3.0, playerid, string,COLOR_FADE1,COLOR_FADE2,COLOR_FADE3,COLOR_FADE4,COLOR_FADE5);
}
return 1;
}

 
ez hogy lenne helyesen? :\\
zsomaa

Yeaseiro

  • Vendég
tmp and tmp2?
« Válasz #1 Dátum: 2010. október 13. - 18:51:21 »
0 Show voters

if(strcmp(cmd, \"/uzineki\", true) == 0)
{
    if(IsPlayerConnected(playerid))
    {
        GetPlayerName(playerid, kuldonev, sizeof(kuldonev));
   tmp = strtok(cmdtext, idx);
   if(!strlen(tmp))
   {
      SendClientMessage(playerid, 0xFFFFFFFF, \"/uzineki [iD/NÉVRÉSZLET] [ÜZENET]\");
      return 1;
   }
   giveplayerid = strval(tmp);
   if(IsPlayerConnected(giveplayerid))
   {
       if(giveplayerid != INVALID_PLAYER_ID)
       {
           new length = strlen(cmdtext);
         while ((idx < length) && (cmdtext[idx] <= \' \'))
         {
            idx++;
         }
         new offset = idx;
         new result[64];
         while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
         {
            result[idx - offset] = cmdtext[idx];
            idx++;
         }
         result[idx - offset] = EOS;
         if(!strlen(result))
         {
            SendClientMessage(playerid, 0xFFFFFFFF, \"/uzineki [iD/NÉVRÉSZLET] [ÜZENET]\");
            return 1;
         }
         format(string, sizeof(string), \"%s üzenete: %s\",PlayerName(playerid),result);
         SendClientMessage(giveplayerid, 0xFFFFFFFF, string);
       }
   }
    }
    return 1;
}

 
nem teszteltem xD
Hibák elkerülésére:
 

new kuldonev[MAX_PLAYER_NAME];
new tmp[256];
new idx;
new giveplayerid;
new string[128];
stock PlayerName(playerid)
{
     new name[MAX_PLAYER_NAME];
     GetPlayerName(playerid, name, sizeof(name));
     return name;
}
« Utoljára szerkesztve: 2010. október 13. - 18:56:18 írta Yeaseiro »

Nem elérhető Zsoma

  • 516
    • Profil megtekintése
tmp and tmp2?
« Válasz #2 Dátum: 2010. október 13. - 19:01:10 »
0 Show voters
nem erre gondoltam :D
hanem beirom hogy
/parancs megadok egy nevet: alma pl.. beadok egy sszöveget: répa
kiadja igy a chatben:
alma mondja: répa
tehát \"fake chat\" :D szal? valaki más?

Nem elérhető ZeRo

  • 4620
  • Ex Globális Moderátor
    • Profil megtekintése
tmp and tmp2?
« Válasz #3 Dátum: 2010. október 13. - 19:14:58 »
0 Show voters

CMD:parancs( playerid, params[  ] ) {
    new szFakeName[ MAX_PLAYER_NAME ];
    new szFakeMsg[ 100 ];
    if( sscanf( params, \"s[24]s[100]\", szFakeName, szFakeMsg ) ) {
        SendClientMessage( playerid, COLOR_RED, \"Használat: /parancs <Név> <Üzenet>\" );
    } else {
        static szFakeString[ 128 ];
        format( szFakeString, sizeof szFakeString, \"%s mondja: %s\", szFakeName, szFakeMsg );
        SendClientMessageToAll( COLOR_WHITE, szFakeString );
    }
    return 1;
}

Nem elérhető Zsoma

  • 516
    • Profil megtekintése
tmp and tmp2?
« Válasz #4 Dátum: 2010. október 13. - 19:22:19 »
0 Show voters
beirtam müködés szerint tesztként hogy /parancs alma répa és nem történt semmi sem. kiadta azt hogy használata..  :o
szerk.: javitva :P
 
CMD:parancs( playerid, params[  ] ) {
    new szFakeName[ MAX_PLAYER_NAME ];
    new szFakeMsg[ 100 ];
    if( sscanf( params, \"ss\", szFakeName, szFakeMsg ) ) {
        SendClientMessage( playerid, COLOR_RED, \"Használat: /parancs <Név> <Üzenet>\" );
    } else {
        static szFakeString[ 128 ];
        format( szFakeString, sizeof szFakeString, \"%s mondja: %s\", szFakeName, szFakeMsg );
        SendClientMessageToAll( COLOR_WHITE, szFakeString );
    }
    return 1;
}

 
igy müködik :D :P
« Utoljára szerkesztve: 2010. október 13. - 19:25:55 írta Zsoma »

Nem elérhető ZeRo

  • 4620
  • Ex Globális Moderátor
    • Profil megtekintése
tmp and tmp2?
« Válasz #5 Dátum: 2010. október 13. - 19:34:52 »
0 Show voters
Akkor le vagy maradva, te még nem a pluginos sscanf-ot használod( 10-szer gyorsabb a réginél ). Itt egy leírásom róla: http://sampforum.hu/index.php?topic=4400.0

Nem elérhető Zsoma

  • 516
    • Profil megtekintése
tmp and tmp2?
« Válasz #6 Dátum: 2010. október 13. - 19:39:32 »
0 Show voters
ja oké :D
nemtudtam :D köszi zero nagyon :D
telepitem és megértettem legalább a használtatát mostmár :D
zárok..
zsomaa

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal