00:36
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
  • Страница 1 из 1
  • 1
Модератор форума: Kievskiy  
[INC] DRCMD 1.2
ВеликсДата: Пятница, 27.01.2012, 21:31 | Сообщение # 1
Мастер джэдай
Группа: Модераторы
Сообщений: 3931
Награды: 287
Город: Мухосранск
Репутация: 8429
Замечания: 0%
Статус:
[INC] DRCMD 1.2


Новый, быстрый командный препроцессор.

Пример команды:
Code
DRCMD:givemoney(playerid, params[])
{
  new money, player;
  if(sscanf(params, "dd", player, money)) return SendClientMessage(playerid, 0xFFFFFF, "USAGE: /givemoney [playerid] [money]");
  else if(money <= 0) return SendClientMessage(playerid, 0xFFFFFF, "ERROR: The money ammount is incorrect!");
  else if(!IsPlayerConnected(player)) return SendClientMessage(playerid, 0xFFFFFF, "The player isn't online!");
  else
  {
   format(string, sizeof(string), "You successfully gove %d$ to the following player: %dID", money, player);
   SendClientMessage(playerid, 0xFFFFFF, string);
   format(string, sizeof(string), "You get %d$!", money);
   SendClientMessage(player, 0xFFFFFF, string);
  }
  return 1;
}

Code
DRCMD:gm(playerid, params[])
{
  return drcmd_givemoney(playerid, params[]);
}


Синонимы:
Code
DRCMD:command(playerid, params[])  
DRCMD_command(playerid, params[])  
drcmd(command, playerid, params[])  
CMD:command(playerid, params[])  
COMMAND:command(playerid, params[])


Тесты, показывающие что данный препроцессор обходит по скорости zCMD:

Code
#include <a_samp>

#define DRCMD:%1(%2,%3) \
   forward drcmd_%1(%2,%3); \
   public drcmd_%1(%2,%3)

#define DRCMD_%1(%2,%3) \
   DRCMD:%1(%2,%3)

#define drcmd(%1,%2,%3) \
   DRCMD:%1(%2,%3)
    
#define CMD:%1(%2,%3) \
   DRCMD:%1(%2,%3)

#define COMMAND:%1(%2,%3) \
   DRCMD:%1(%2,%3)

/*public OnFilterScriptInit()
{
  new
   returned;
  returned = OnPlayerCommandText(0, "/tesztparancs"); // Itt hнvod meg a parancs feldolgozуt
  printf("returned: %d", returned);
  return 1;
}*/

main() { }

public OnGameModeInit()
{
     #define MAX_TEST (990000)

  for(new d; d < 10; ++d) print(" ");
     new dcmdtest = GetTickCount();
     for(new a; a < MAX_TEST; ++a)
         OnPlayerDraCommandText(0, "/drcmd teszt");
     printf("# DRCMD in %d",GetTickCount() - dcmdtest);

     new zcmdtest = GetTickCount();
     for(new a; a < MAX_TEST; ++a)
         OnPlayerCommandText(0, "/drcmd teszt");
     printf("# ZCMD in %d",GetTickCount() - zcmdtest);
     return true;
}
forward OnPlayerDraCommandText(playerid, cmdtext[]);
public OnPlayerDraCommandText(playerid, cmdtext[])
{
  new
   function[32],
   szokozmeddig = -1;
  while(++szokozmeddig < strlen(cmdtext)) if((cmdtext[szokozmeddig] == ' ')) break;
   strmid(function, cmdtext, 1, szokozmeddig);
  format(function, sizeof(function), "drcmd_%s", function);
  while(cmdtext[szokozmeddig] == ' ') szokozmeddig++;
  if(funcidx(function) != -1)
   {
   if(szokozmeddig == strlen(cmdtext))
   {
    return CallLocalFunction(function, "is", playerid, "\1");
   }
   return CallLocalFunction(function, "is", playerid, cmdtext[szokozmeddig]);
  }
  return 0;
}

static
  bool:zcmd_g_HasOPCS = false,
  bool:zcmd_g_HasOPCE = false;

#define MAX_FUNC_NAME (32)

public OnPlayerCommandText(playerid, cmdtext[])
{
     if (zcmd_g_HasOPCS && !CallLocalFunction("OnPlayerCommandReceived", "is", playerid, cmdtext))
     {
         return 1;
     }
     new
         pos,
         funcname[MAX_FUNC_NAME];
     while (cmdtext[++pos] > ' ')
  {
   funcname[pos-1] = tolower(cmdtext[pos]);
  }
  format(funcname, sizeof(funcname), "cmd_%s", funcname);
     while (cmdtext[pos] == ' ') pos++;
  if (!cmdtext[pos])
  {
   if (zcmd_g_HasOPCE)
   {
    return CallLocalFunction("OnPlayerCommandPerformed", "isi", playerid, cmdtext, CallLocalFunction(funcname, "is", playerid, "\1"));
   }
   return CallLocalFunction(funcname, "is", playerid, "\1");
  }
  if (zcmd_g_HasOPCE)
  {
   return CallLocalFunction("OnPlayerCommandPerformed", "isi", playerid, cmdtext, CallLocalFunction(funcname, "is", playerid, cmdtext[pos]));
  }
  return CallLocalFunction(funcname, "is", playerid, cmdtext[pos]);
}

http://pastebin.com/iArUXrsY

Автор: Drake1994
Скачать: ФА



[cut=freestyle]
ПРИНЕСЛА СОРОКА В РОТЕ ПРИВОРОТ ,
СВЯЗАЛАСЬ НА ШЕЕ ЛОЗА И БЫЛ ПОЛНЫЙ ПИ**ЕЦ,
ОСЕНЬ С ЗИМОЙ, ЛЕТО С ВЕСНОЙ,
ГУСЬ С ЛИСОЙ, ЕБ**ИСЬ ВО ТЬМЕ НОЧНОЙ.
УЗЕЛ ЗАВЯЗАЛСЯ, ПЕПЕЛ РАЗМЕТАЛСЯ И ЛИСА ЗАБЕРЕМЕНЕЛА.
ВМЕСТЕ ВЕК ВЕКОВАТЬ, ПУТУ НЕ РАЗВЯЗАТЬ.
ТРАВА ПЕРЕПЛЕТИСЬ, УЗЕЛ ЗАВОРОЖИСЬ.
ЛЕНАРУ ДАЙ УМА И ЛЕНУ
НА ВЕЛЕ НЕ ОТРАЗИСЬ,ЕБ*СЬ ЕБ*СЬ ЕБ*СЬ
© Хасан
[/cut]
XaNDeR_aLiДата: Пятница, 27.01.2012, 23:01 | Сообщение # 2
Новенький
Группа: Пользователи
Сообщений: 9
Награды: 0
Город: BLR
Репутация: -64
Замечания: 0%
Статус:
не плохо, спасибо!
[-Smart-]Дата: Суббота, 28.01.2012, 10:59 | Сообщение # 3
Группа: I'm V.I.P.
Сообщений: 249
Награды: 3
Город: Казань
Репутация: 229
Замечания: 20%
Статус:
Зараза :D
Все таки первый )
Лови +

  • Страница 1 из 1
  • 1
Поиск:





 


 


 
Хостинг от uCoz samp.at.ua