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

 



 
        
[Include] RemoveBuilding (2)
JasonGordon 24.05.2017 23:48
[SA-MP] Hosted Tab (116)
DieSeL 17.05.2017 17:33
Физрук (15)
Lanablogger1 16.05.2017 16:00
 





Рекомендуем:
Добавить IP: 95.172.59.51:7777





Последние Файлы 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
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
Скачать GTA SAMP 0.3.7 - Кл... 20.07.2015
Страница 1 из 11
Модератор форума: Kievskiy 
Форум SAMP о мультиплеерах для GTA. » SAMP скачивание и обсуждение » Pawn библиотеки » [INC] DRCMD 1.2
[INC] DRCMD 1.2
ВеликсДата: Пятница, 27.01.2012, 21:31 | Сообщение # 1
Мастер джэдай
Группа: Модераторы
Сообщений: 3925
Награды: 287
Город: Мухосранск
Репутация: 8414
Замечания: 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.
Сообщений: 247
Награды: 3
Город: Казань
Репутация: 229
Замечания: 20%
Статус:
Зараза :D
Все таки первый )
Лови +

Форум SAMP о мультиплеерах для GTA. » SAMP скачивание и обсуждение » Pawn библиотеки » [INC] DRCMD 1.2
Страница 1 из 11
Поиск:





 


 


 
Хостинг от uCoz SAMP-RUS.COM