[Include] DS InfoOrg [Para qualquer GM]
#1

Olб novamente.
Este mкs estou de feria do trabalho entгo vou trazer algumas coisas a vocкs que sei fazer , eu so sei o basico da maioria.
Este sistema funciona em qualquer gamemode des que vocк saiba colocar
Sim DOF , estou trazendo o que sei fazer nгo o que e o melhor.

Vamos a algumas explicaзхes
PHP код:
#define      MAX_VAGAS 10+1 // Quantas vagas tera | 10 - membros + 1 lider
#define      MAX_ORGS  10 // Quantoas orgs tem o gamemode
#define      OrgSalva                 "BrasilRolePlay/Organizacao/%d.ini"// local que sera salvo 
Vocк precisa adicionar ORGCarrega(); em OnGameModeInit , caso contrario sistema nгo ira funcionar.

Este sistema apenas ira salvar os nomes , nгo salva ranked ou algo do genero.

Opзoes
PHP код:
addlider(idjogador, idorg)
tirarlider(idjogador, idorg)
convidarmembro(idjogador, idorg)
expulsarmembro(idjogador, idorg)
membrosorg(playerid, idorg)/* Abre um dialog com todos membros presentes* 
Imagem do sistema em meu gamemode.



Creditos Don_Speed
Comentem o que acharam.
PHP код:
#include     a_samp
#include     DOF2
#define      MAX_VAGAS 10+1
#define      MAX_ORGS  10
#define      OrgSalva                 "BrasilRolePlay/Organizacao/%d.ini"
new VagasORG[][MAX_VAGAS] = {
"Lнder", "Membro-1", "Membro-2", "Membro-3", "Membro-4", "Membro-5", "Membro-6", "Membro-7", "Membro-8", "Membro-9", "Membro-10"
};
new 
string2[24];
stock DonPegaNome(playerid)
{
    new 
name[MAX_PLAYER_NAME];
    
GetPlayerName(playerid, name, sizeof(name));
    return 
name;
}
forward ORGCarrega();
public 
ORGCarrega()
{
    print(
"\n [ SISTEMA DE INFOORG BY DON SPEED ]");
    for(new 
vagads = 1; vagads < MAX_ORGS; vagads++)
    {
       
format(string2, sizeof(string2), OrgSalva, vagads);
       if(!
DOF2_FileExists(string2))
       {
           
DOF2_CreateFile(string2);
           for(new 
i=0; i< sizeof VagasORG; i++)
           {
                
DOF2_SetString(string2,VagasORG[i], "Nenhum");
           }
           
DOF2_SaveFile();
       }
    }
    return 
true;
}
stock addlider(playerid, idorg)
{
     
format(string2, sizeof(string2), OrgSalva, idorg);
     if(!
DOF2_FileExists(string2))return true;
     if(!
strcmp(DOF2_GetString(string2,VagasORG[0]),"Nenhum",true))
     {
         
DOF2_SetString(string2,VagasORG[0], DonPegaNome(playerid));
         
DOF2_SaveFile();
     }
     return 
true;
}
stock tirarlider(playerid, idorg)
{
    
format(string2, sizeof(string2), OrgSalva, idorg);
    if(!
DOF2_FileExists(string2))return true;
    if(!
strcmp(DOF2_GetString(string2,VagasORG[0]),"Nenhum",true))return SendClientMessage(playerid, -1, "Erro nao tem lider nesta org.");
    
DOF2_SetString(string2,VagasORG[0], "Nenhum");
    return 
true;
}
stock convidarmembro(playerid, idorg)
{
   
format(string2, sizeof(string2), OrgSalva, idorg);
   if(!
DOF2_FileExists(string2))return true;
   for(new 
i=1; i< sizeof VagasORG; i++)
   {
      if(!
strcmp(DOF2_GetString(string2,VagasORG[i]), "Nenhum",true))
      {
        
DOF2_SetString(string2, VagasORG[i], DonPegaNome(playerid));
        
DOF2_SaveFile();
        return 
true;
      }
   }
   return 
true;
}
stock expulsarmembro(playerid, idorg)
{
   
format(string2, sizeof(string2), OrgSalva, idorg);
   if(!
DOF2_FileExists(string2))return true;
   for(new 
i=1; i< sizeof VagasORG; i++)
   {
      if(!
strcmp(DOF2_GetString(string2,VagasORG[i]), DonPegaNome(playerid),true))
      {
         
DOF2_SetString(string2, VagasORG[i], "Nenhum");
         
DOF2_SaveFile();
         return 
true;
      }
   }
   return 
true;
}
stock membrosorg(playerid, idorg)
{
    new 
corda[700], wiki[500];
    
format(string2, sizeof(string2), OrgSalva, idorg);
    for(new 
i=0; i< sizeof VagasORG; i++)
    {
       
format(wiki, sizeof wiki,"{FFFFFF}%s : %s\n",VagasORG[i], DOF2_GetString(string2,VagasORG[i]));
       
strcat(corda, wiki);
    }
    
ShowPlayerDialog(playerid, 1000, DIALOG_STYLE_MSGBOX, "Minha ORG", corda,"Sair", #);
    
return true;
} 
Reply
#2

Sу ver essa print ai jб deu vontade de ir codar meu GM RP

Bom trabalho, gostei +rep
Reply
#3

Muito bom, parabйns.
Reply
#4

Quote:
Originally Posted by zCyan
Посмотреть сообщение
Sу ver essa print ai jб deu vontade de ir codar meu GM RP

Bom trabalho, gostei +rep
Sгo apenas algumas ideias que sempre tive vontade de fazer .


Quote:
Originally Posted by Relaxed
Посмотреть сообщение
Muito bom, parabйns.
Vlw.
Reply
#5

credo
Reply
#6

Bom mas isso aqui й inutil

PHP код:
stock DonPegaNome(playerid) 
{ 
    new 
name[MAX_PLAYER_NAME]; 
    
GetPlayerName(playerid, name, sizeof(name)); 
    return 
name; 
} 
poderia usar assim

PHP код:
new GetPName[MAX_PLAYERS][MAX_PLAYER_NAME]; 
Nгo precisava usar stock.

+REP
Reply
#7

Quote:
Originally Posted by C4rtm4n
Посмотреть сообщение
Bom mas isso aqui й inutil

PHP код:
stock DonPegaNome(playerid) 
{ 
    new 
name[MAX_PLAYER_NAME]; 
    
GetPlayerName(playerid, name, sizeof(name)); 
    return 
name; 
} 
poderia usar assim

PHP код:
new GetPName[MAX_PLAYERS][MAX_PLAYER_NAME]; 
Nгo precisava usar stock.

+REP
Inъtil que nгo й.
@topic
Bom trabalho, depois vejo o codigo.
Reply
#8

Quote:
Originally Posted by IlanZ
Посмотреть сообщение
Inъtil que nгo й.
@topic
Bom trabalho, depois vejo o codigo.
Sim nгo й inutil a funзгo mas dava pra dar uma otimizada neh.
Reply
#9

Quote:
Originally Posted by C4rtm4n
Посмотреть сообщение
Bom mas isso aqui й inutil

PHP код:
stock DonPegaNome(playerid) 
{ 
    new 
name[MAX_PLAYER_NAME]; 
    
GetPlayerName(playerid, name, sizeof(name)); 
    return 
name; 
} 
poderia usar assim

PHP код:
new GetPName[MAX_PLAYERS][MAX_PLAYER_NAME]; 
Nгo precisava usar stock.

+REP
estou trazendo o que sei fazer nгo o que e o melhor.


Mas explique melhor sobre isto.
Reply
#10

Quote:
Originally Posted by Don_Speed
Посмотреть сообщение
estou trazendo o que sei fazer nгo o que e o melhor.


Mas explique melhor sobre isto.
Ele quer dizer utilizar uma array para salvar os nomes dos jogadores apenas uma vez ao entrar no servidor, assim nгo tem a necessidade de re-utilizar a funзгo nativa GetPlayerName, podendo usar a array para obter/comparar o nome do jogador.
Reply
#11

Quote:
Originally Posted by C4rtm4n
Посмотреть сообщение
Bom mas isso aqui й inutil

PHP код:
stock DonPegaNome(playerid) 
{ 
    new 
name[MAX_PLAYER_NAME]; 
    
GetPlayerName(playerid, name, sizeof(name)); 
    return 
name; 
} 
poderia usar assim

PHP код:
new GetPName[MAX_PLAYERS][MAX_PLAYER_NAME]; 
Nгo precisava usar stock.

+REP
Quote:
Originally Posted by Jelly23
Посмотреть сообщение
Ele quer dizer utilizar uma array para salvar os nomes dos jogadores apenas uma vez ao entrar no servidor, assim nгo tem a necessidade de re-utilizar a funзгo nativa GetPlayerName, podendo usar a array para obter/comparar o nome do jogador.
Pra isso deveria fazer um Hook para detectar se o SetPlayerName foi utilizado e alterar o GetPName. Pois fazer manualmente nгo й recomendado ficar alterando toda hora a variбvel quando nosso papel й simplificar o cуdigo. Otimizado ou nгo, й muito mais eficiente.

Bom trabalho +=6rep
Reply
#12

Vlw .
Logo trago mais coisas .
Reply
#13

PHP код:
// #memberList.pwn script 
#if !defined isnull 
    #define isnull(%1) ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1])))) 
#endif 
#define FACTION_LIMIT 10                             // #total maximo de organizaзхes; 
#define MEMBERS_LIMIT 10                            // #total maximo de membros em uma unica organizaзгo; 
// --- 
#define MEMBER_LEADER_LEVEL     6                    // #nivel do lider; 
#define MEMBER_SUBLEADER_LEVEL  5                    // #nivel do sublider; 
// --- 
#define INVALID_FACTION_ID        (FACTION_LIMIT + 1)    // #id invalido para retorno; 
#define INVALID_MEMBER_LIST_ID     (MEMBERS_LIMIT + 1)    // #id invalido para retorno; 
enum E_MEMBER_LIST_DATA 
{ 
    
MemberList_PlayerName[MAX_PLAYER_NAME], 
    
MemberList_PlayerLevel, 
} 
new 
MemberList[FACTION_LIMIT][MEMBERS_LIMIT][E_MEMBER_LIST_DATA]; 
stock MemberList_Add(factionId, playerName[MAX_PLAYER_NAME], playerLevel) { 
    new 
str_tmp[MAX_PLAYER_NAME]; 
    if(
factionId => FACTION_LIMIT) 
        return 
false; 
    for(new 
i = 0; i < MEMBERS_LIMIT; i++)  
    { 
        
getMemberListPlayerName(factionId, i, str_tmp); 
        if(
isnull(str_tmp)) 
        { 
            
setMemberListPlayerName(factionId, i, playerName[MAX_PLAYER_NAME]); 
            
setMemberListPlayerLevel(factionId, i, playerLevel); 
            return 
true; 
        } 
    } 
    return 
false; 
} 
stock MemberList_Remove(playerName[MAX_PLAYER_NAME])  
{ 
    new 
factionId = getPlayerFactionByName(playerName); 
    new 
memberListId = getPlayerMemberListByName(playerName); 
    if(
factionId == FACTION_LIMIT) 
        return 
false; 
    if(
memberListId == MEMBERS_LIMIT) 
        return 
false; 
    
setMemberListPlayerName(factionId, memberListId, ""); 
    
setMemberListPlayerLevel(factionId, memberListId, 0); 
    return 
true; 
} 
// ** is 
stock MemberList_IsLeader(playerName[MAX_PLAYER_NAME]) 
{ 
    new 
factionId = getPlayerFactionByName(playerName); 
    new 
memberListId = getPlayerMemberListByName(playerName); 
    if(
factionId == FACTION_LIMIT) 
        return 
false; 
    if(
memberListId == MEMBERS_LIMIT) 
        return 
false; 
    if(
getMemberListPlayerLevel(factionId, memberListId) == MEMBER_LEADER_LEVEL) 
        return 
true; 
    return 
false; 
} 
stock MemberList_IsSubLeader(playerName[MAX_PLAYER_NAME])  
{ 
    new 
factionId = getPlayerFactionByName(playerName); 
    new 
memberListId = getPlayerMemberListByName(playerName); 
    if(
factionId == FACTION_LIMIT) 
        return 
false; 
    if(
memberListId == MEMBERS_LIMIT) 
        return 
false; 
    if(
getMemberListPlayerLevel(factionId, memberListId) == MEMBER_SUBLEADER_LEVEL) 
        return 
true; 
    return 
false; 
} 
// ** get 
stock MemberList_GetName(factionId, memberListId, playerName[MAX_PLAYER_NAME]) 
{ 
    if(
factionId => FACTION_LIMIT) 
        return 
false; 
    if(
memberListId => MEMBERS_LIMIT) 
        return 
false; 
    
format(playerName, MAX_PLAYER_NAME, "%s", MemberList[factionId][memberListId][MemberList_PlayerName]); 
    return 
true; 
} 
stock MemberList_GetLevel(factionId, memberListId) 
{ 
    if(
factionId => FACTION_LIMIT) 
        return 
false; 
    if(
memberListId => MEMBERS_LIMIT) 
        return 
false; 
    return 
MemberList[factionId][memberListId][MemberList_PlayerLevel]; 
} 
stock MemberList_GetFactionByName(playerName[MAX_PLAYER_NAME]) 
{ 
    new 
str_tmp[MAX_PLAYER_NAME]; 
    for(new 
factionId = 0; factionId < FACTION_LIMIT; factionId++) 
    { 
        for(new 
memberListId = 0; memberListId < MEMBERS_LIMIT; memberListId++)  
        { 
            
getMemberListPlayerName(factionId, memberListId, str_tmp); 
            if(
isnull(str_tmp)) 
                return 
INVALID_FACTION_ID; 
            if(!
strcmp(playerName, str_tmp, false)) { 
                return 
factionId; 
            } 
        } 
    } 
    return 
INVALID_FACTION_ID; 
} 
stock MemberList_GetIdByName(playerName[MAX_PLAYER_NAME]) 
{ 
    new 
factionId = getPlayerFactionByName(playerName); 
    if(
factionId == INVALID_FACTION_ID) 
        return 
INVALID_MEMBER_LIST_ID; 
    for(new 
memberListId = 0; memberListId < MEMBERS_LIMIT; memberListId++)  
    { 
        
getMemberListPlayerName(factionId, memberListId, str_tmp); 
        if(
isnull(str_tmp)) 
            return 
INVALID_FACTION_ID; 
        if(!
strcmp(playerName, str_tmp, false)) { 
            return 
memberListId; 
        } 
    } 
    return 
INVALID_MEMBER_LIST_ID; 
} 
// ** set 
stock MemberList_SetName(factionId, memberListId, playerName[MAX_PLAYER_NAME]) 
{ 
    if(
factionId => FACTION_LIMIT) 
        return 
false; 
    if(
memberListId => MEMBERS_LIMIT) 
        return 
false; 
    
format(MemberList[factionId][memberListId][MemberList_PlayerName], MAX_PLAYER_NAME, "%s", playerName); 
    return 
true; 
} 
stock MemberList_SetLevel(factionId, memberListId, playerLevel) 
{ 
    if(
factionId => FACTION_LIMIT) 
        return 
false; 
    if(
memberListId => MEMBERS_LIMIT) 
        return 
false; 
    
MemberList[factionId][memberListId][MemberList_PlayerLevel] = playerLevel; 
    return 
true; 
} 
function list:
PHP код:
/* 
    MemberList_Add(faction_id, string player_name, player_level)
    MemberList_Remove(string player_name) 
    
    MemberList_IsLeader(string player_name) 
    MemberList_IsLeader(string player_name) 
    MemberList_IsSubLeader(string player_name)
    MemberList_GetName(faction_id, member_list_id, string player_name)
    MemberList_GetLevel(faction_id, member_list_id) 
    MemberList_GetFactionByName(string player_name) 
    MemberList_GetIdByName(string player_name) 
    
    MemberList_SetName(faction_id, member_list_id, string player_name) 
    MemberList_SetLevel(faction_id, member_list_id, player_level)
*/ 
exemplo para inserir membros:
PHP код:
hook OnGameModeInit() {
    
// for (loop em todos os jogadores armazenados)
    // if  (verificar se o jogador esta em uma organizacao)
    // se o jogador estiver em uma organizacoes (inserir no sistema)
    
MemberList_Add(organizacao, nome_jogador, cargo_jogador);
    return 
true;
} 
---

nгo existe necessidade de armazenar os dados dos membros em um arquivo separado. pois todos esses dados ja estao armazenados na conta do jogador.
para sincronizar a lista de membros com os comandos /demitir /convidar /expulsar, basta fazer uso das funзхes acima.

---

seu cуdigo esta longe de um release para ser implementado em "qualquer" gamemode. mas a logica que vocк aplicou em si, pode sim ser usada para aplicar em qualquer gamemode. vocк disse que isso й o melhor que vocк pode fazer, eu acredito que isso esta longe das suas reais habilidades. vocк possui mais de 6 anos neste fуrum, tem certeza que isso й o melhor? nгo estou tretando.. apenas quero que vocк seja o melhor que possa ser.
Reply
#14

Muito bom rsrs, com certeza irei usar em meu Servidor RPG obg em rs
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)