quarta-feira, 16 de outubro de 2013

0 Sistema de admin(invoção interna)

Como muitos perceberam, foram lançados variados tipos de includes que atuariam
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: