Ola pessoal vim postar um Comando de Minha altoria junto com as Funções que uso(as principais pelo menos)

vamos la:
Código PHP:
//==================================================
//Função que pega a Index do Char pelo nome
//==================================================
int Get_IndexByName(char *szId)
{
    for(
int i = gObjPlayer; i < gObjMaxUsr; i++) 
    {
        
this->Get_NameID(i,NameID);
        if(
this->Get_gObjConnect(i) == true) 
        {
            if(
strcmp(NameID,szId) == 0) 
            { 
                return 
i; 
            }
        }
    }
    return 
FALSE;
}


//=============================================
//Função que pega um parametro base e divide em outros
//=============================================
char Get_Param(char id, char* txt, char* buff)
{
        
char pMsg[200] = {0};
    
strcpy(pMsg , txt);
    
char cnt = 0;
    
char *pch = strtok(pMsg," ");

    while (
pch != NULL) {
        if(
cnt == id) {
            
strcpy(buff,pch);
            return 
id;
        }
        
pch = strtok (NULL," ");
        
cnt ++;
    }
    return 
0;
}

//=================================================
//Comando /setzen usado por GameMasters
//=================================================
void ChatSendSetZen(int aIndex,char* Message)
{
    
SYSTEMTIME hora; GetLocalTime(&hora);
    
OBJECTSTRUCT* gObj = (OBJECTSTRUCT*)OBJECT_POINTER(aIndex);
    
int Count, bIndex;
    
int CtlCode = CmdSQL->GetFieldInt("Character","CtlCode","WHERE Name = '%s'",gObj->Name);
    if(
configs.CmdSetZen.ativo == 0) 
    {
        
Send->SendPMMsg(aIndex,INACTIVETEXT);
        return;
    }
    if(
configs.CmdSetZen.onlygm == 1 && CtlCode < 8) {
        
Send->SendPMMsg(aIndex,ISNOTGM);
        return;
    }
    if(!
_strcmpi(Message,configs.CmdSetZen.string)) {
        
Send->SendPMMsg(aIndex,"Usa-se: %s <Quant.>",configs.CmdSetZen.string);
        return;
    }

    
memset(Name,0,10);
    
getvalue.Get_Param(0,Message,Name);
    
bIndex = getvalue.Get_IndexByName(Name);

    
memset(Buffer,0,255);
    
getvalue.Get_Param(1,Message,Buffer);
    
Count = atoi(Buffer);

    if(
bIndex == 0) {
        
Send->SendPMMsg(aIndex,NOTUSER);
        return;
    }
    if(
Count < 0 || Count > 2000000000) 
    {
        
Send->SendPMMsg(aIndex,"Valor não permitido.");
        return;
    }
    
setvalue.Set_gObjValue(bIndex,gObjZen,Count);
    
GCMoneySend(bIndex,getvalue.Get_gObjInt(bIndex,gObjZen));
    
printf("%02d:%02d:%02d - [%s][%s] Set Zen %s, %d\n",hora.wHour,hora.wMinute,hora.wSecond,gObj->AccountID,gObj->Name,Name,Count);
    
sprintf(Logger,"%02d:%02d:%02d - [%s][%s] Set Zen %s, %d",hora.wHour,hora.wMinute,hora.wSecond,gObj->AccountID,gObj->Name,Name,Count);
    
Send->CreateLog(0,Logger);
} 
Espero que tenha ajudado.

OBS: As outras funções não postadas, não serão disponibilizadas pelo fato de serem de total autoria minha assim como a de setzen. porem ainda uso elas em meus servidores comercializados
por favor não insistam.

att Jamel