Великс | Дата: Пятница, 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%
Статус:
| Зараза Все таки первый ) Лови +
|
|
|
|