Файлы для GTA » [INC] DRCMD 1.2

[INC] DRCMD 1.2

Скачали: 76 раз(а)
Посмотрели: 2600 раз(а)
Дата добавления: 27.01.2012
Размер файла: 1.0Kb
Файл добавил: Великс
Автор: Drake1994
Информация о файле и ссылка ниже
Как качать файлы без ожидания

Подождите секунд...

[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



Полезные статьи:
Декоративное светодиодное уличное освещение []Как перевести мод на новую версию SAMP []
Xtreme Admin 2.2 r1 []Оживляем NPC после смерти в SAMP []
Как снизить аппетит? Ответы на вопросы []Система регистрации на сервере SAMP (MySQL) - Часть 1 []
YSF 0.2 для GTA SAMP [][Команды] Freeroam RPG []
FAQ по установке модов GTA 4 []Гайд по оптимизации GTA IV []


gta 4 Установить моды в GTA 4 статьи gta Полезная информация
samp Установить моды и скрипты SAMP / MTA SA помощь по gta Задать любой вопрос
Всего комментариев: 2
avatar
-1
2 Desinger • 00:07, 30.01.2012
Полезный)
avatar
0
1 Deposit • 23:07, 28.01.2012
PS Он для чего, ели полезный.... То хорошо!
avatar