[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(idjogadoridorg)
tirarlider(idjogadoridorg)
convidarmembro(idjogadoridorg)
expulsarmembro(idjogadoridorg)
membrosorg(playerididorg)/* 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(playeridnamesizeof(name));
    return 
name;
}
forward ORGCarrega();
public 
ORGCarrega()
{
    print(
"\n [ SISTEMA DE INFOORG BY DON SPEED ]");
    for(new 
vagads 1vagads MAX_ORGSvagads++)
    {
       
format(string2sizeof(string2), OrgSalvavagads);
       if(!
DOF2_FileExists(string2))
       {
           
DOF2_CreateFile(string2);
           for(new 
i=0isizeof VagasORGi++)
           {
                
DOF2_SetString(string2,VagasORG[i], "Nenhum");
           }
           
DOF2_SaveFile();
       }
    }
    return 
true;
}
stock addlider(playerididorg)
{
     
format(string2sizeof(string2), OrgSalvaidorg);
     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(playerididorg)
{
    
format(string2sizeof(string2), OrgSalvaidorg);
    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(playerididorg)
{
   
format(string2sizeof(string2), OrgSalvaidorg);
   if(!
DOF2_FileExists(string2))return true;
   for(new 
i=1isizeof VagasORGi++)
   {
      if(!
strcmp(DOF2_GetString(string2,VagasORG[i]), "Nenhum",true))
      {
        
DOF2_SetString(string2VagasORG[i], DonPegaNome(playerid));
        
DOF2_SaveFile();
        return 
true;
      }
   }
   return 
true;
}
stock expulsarmembro(playerididorg)
{
   
format(string2sizeof(string2), OrgSalvaidorg);
   if(!
DOF2_FileExists(string2))return true;
   for(new 
i=1isizeof VagasORGi++)
   {
      if(!
strcmp(DOF2_GetString(string2,VagasORG[i]), DonPegaNome(playerid),true))
      {
         
DOF2_SetString(string2VagasORG[i], "Nenhum");
         
DOF2_SaveFile();
         return 
true;
      }
   }
   return 
true;
}
stock membrosorg(playerididorg)
{
    new 
corda[700], wiki[500];
    
format(string2sizeof(string2), OrgSalvaidorg);
    for(new 
i=0isizeof VagasORGi++)
    {
       
format(wikisizeof wiki,"{FFFFFF}%s : %s\n",VagasORG[i], DOF2_GetString(string2,VagasORG[i]));
       
strcat(cordawiki);
    }
    
ShowPlayerDialog(playerid1000DIALOG_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(playeridnamesizeof(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(playeridnamesizeof(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(playeridnamesizeof(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(playeridnamesizeof(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(factionIdplayerName[MAX_PLAYER_NAME], playerLevel) { 
    new 
str_tmp[MAX_PLAYER_NAME]; 
    if(
factionId => FACTION_LIMIT
        return 
false
    for(new 
0MEMBERS_LIMITi++)  
    { 
        
getMemberListPlayerName(factionIdistr_tmp); 
        if(
isnull(str_tmp)) 
        { 
            
setMemberListPlayerName(factionIdiplayerName[MAX_PLAYER_NAME]); 
            
setMemberListPlayerLevel(factionIdiplayerLevel); 
            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(factionIdmemberListId""); 
    
setMemberListPlayerLevel(factionIdmemberListId0); 
    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(factionIdmemberListId) == 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(factionIdmemberListId) == MEMBER_SUBLEADER_LEVEL
        return 
true
    return 
false

// ** get 
stock MemberList_GetName(factionIdmemberListIdplayerName[MAX_PLAYER_NAME]) 

    if(
factionId => FACTION_LIMIT
        return 
false
    if(
memberListId => MEMBERS_LIMIT
        return 
false
    
format(playerNameMAX_PLAYER_NAME"%s"MemberList[factionId][memberListId][MemberList_PlayerName]); 
    return 
true

stock MemberList_GetLevel(factionIdmemberListId

    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 0factionId FACTION_LIMITfactionId++) 
    { 
        for(new 
memberListId 0memberListId MEMBERS_LIMITmemberListId++)  
        { 
            
getMemberListPlayerName(factionIdmemberListIdstr_tmp); 
            if(
isnull(str_tmp)) 
                return 
INVALID_FACTION_ID
            if(!
strcmp(playerNamestr_tmpfalse)) { 
                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 0memberListId MEMBERS_LIMITmemberListId++)  
    { 
        
getMemberListPlayerName(factionIdmemberListIdstr_tmp); 
        if(
isnull(str_tmp)) 
            return 
INVALID_FACTION_ID
        if(!
strcmp(playerNamestr_tmpfalse)) { 
            return 
memberListId
        } 
    } 
    return 
INVALID_MEMBER_LIST_ID

// ** set 
stock MemberList_SetName(factionIdmemberListIdplayerName[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(factionIdmemberListIdplayerLevel

    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(organizacaonome_jogadorcargo_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)