no processo de manipulação de dados, processamento de comandos, hooks de callbacks,
juntando tudo isto eu decidi fazer um sistema de administração simples
demonstrando como ficaria se o mesmo fizesse uso de todos esses benefícios disponibilizados.
Source code:
pawn Code:
#include <a_samp> #include <icmd> #include <ibits> #include <iloops> register <public>OnPlayerConnect(playerid) { SendClientMessage(playerid, -1, "Conectado !"); return 1; } register <public>OnPlayerDisconnect(playerid, reason) { SendClientMessage(playerid, -1, "Desconectado !"); return 1; } new bit1:level<MAX_PLAYERS>; public OnPlayerEnterVehicle(playerid, vehicleid) { if (!getBit1(level, playerid)) { SendClientMessage(playerid, -1, "Você não é um admin..."); return 0; } return 1; } public OnPlayerCommandText(playerid, commandid, params[]) { switch(commandid) { case iscmd("r,e,s,p,a,w,n"): { if (getBit1(level, playerid)) { for (new i = 0; i < getMaxVehicles(); ++i) { SetVehicleToRespawn(i); } SendClientMessageToAll(-1, "Veículos respawnados."); } return 1; } case iscmd("g,m,x"): { if (getBit1(level, playerid)) { SendClientMessageToAll(-1, "GMX, aguardem !"); SendRconCommand("gmx"); } return 1; } case iscmd("t,a,p,a"), iscmd("h,i,t"): { if (getBit1(level, playerid)) { if (!params[0]) SendClientMessage(playerid, -1, "Syntax /tapa [id]"); new Float:x, Float:y, Float:z; GetPlayerPos(strval(params), x, y, z); SetPlayerPos(strval(params), x, y, z+15); } return 1; } case iscmd("b,a,n"), iscmd("b,a,n,i,r"): { if (getBit1(level, playerid)) { if (!params[0]) SendClientMessage(playerid, -1, "Syntax /ban [id]"); Ban(strval(params)); } return 1; } case iscmd("k,i,c,k"), iscmd("c,h,u,t,a,r"): { if (getBit1(level, playerid)) { if (!params[0]) SendClientMessage(playerid, -1, "Syntax /kick [id]"); Kick(strval(params)); } return 1; } case iscmd("c,c"), iscmd("c,a,r"): { if (getBit1(level, playerid)) { if (!params[0]) SendClientMessage(playerid, -1, "Syntax: /cc [id]"); new Float:x, Float:y, Float:z, Float:a; GetPlayerPos(playerid, x, y, z); GetPlayerFacingAngle(playerid, a); CreateVehicle(strval(params), x, y, z, a, -1, -1, cellmax); } return 1; } case iscmd("l,o,g,a,r"): { setBit1(level, playerid, !getBit1(level, playerid)); if (getBit1(level, playerid)) SendClientMessage(playerid, -1, "Você fez logon."); else SendClientMessage(playerid, -1, "Você fez logoff."); return 1; } case iscmd("o,n,l,i,n,e"): { new string[30] = "jogadores online."; format(string, sizeof(string), "%d %s", GetPlayersConnected(), string); SendClientMessage(playerid, -1, string); return 1; } case iscmd("c,a,r,r,o,s"): { new string[30] = "carros criados."; format(string, sizeof(string), "%d %s", GetNumberofCarsCreated(), string); SendClientMessage(playerid, -1, string); return 1; } } return 0; }
Ela está muito simples, porém ele foi feito utilizando as novas includes lançadas para melhoria e desempenho.
Ao terminar esse código eu fiz uma simples comparação entre um código utilizando os mesmos comandos,
a mesma lógica, só que sem a ajuda do ibits, sem icmd, sem whooks.
Percebo que o peso do AMX ficou em um valor elevado ao normal, e isto é porque o código é pequeno...
Então vocês podem tirar por ai, a diferença que faria em um código grande,
de dimensões muito maiores.
Por tanto, para aqueles que ainda não testaram, recomendo o teste.
Dúvidas não são problemas, pois já foram lançados vários tópicos para este tipo de ocasião.
Tópicos relacionados:
@Atualizado. - 14/10/2013
- Implementação das novas includes da IPSI, iLoops/iEach.
beta iBits
beta iCmd 7.0(rápido)
beta iLoops
beta iEach
w!hooks
w!loops
Truques com icmd 7.0
BY Willian_Luigi
0 comentários:
Postar um comentário