[Ajuda] AddPlayerClass sem selecionar?
#1

Pessoal eu queria que alguns AddPlayerClass nгo fossem selecionados no RequestClass

Por exemplo. Eu criei um Time, ele tem vбrias classes. Mais no RequestClass eu quero que ele sу escolha uma classe desse time. E nгo poder escolher as outras. Como faзo?
Reply
#2

pawn Код:
public OnPlayerRequestSpawn(playerid)
{
    if( GetPlayerSkin( playerid ) == 294 )
    {
        //Code
        return 0;
    }

    return 1;
}
Reply
#3

Ta mais o que eu colodo no lugar de //code ?
Reply
#4

pawn Код:
SendClientMessage(playerid,COLOR_GREEN,"Vocк nгo pode escolher esta Skin.");
Reply
#5

Mas tipo, eu queria que nгo aparecesse as skins, e nгo que criasse um botгo que nгo dava para spawnar, por que eu tenho Team's definidos aqui, Para funзхes PlayerTeam.

Por isso nгo uso skins como Times...
Reply
#6

Se isso tem alguma relaзгo com aquele outro tуpico, eu sugiro que vocк deixe esse modo de lado e faзa o seu prуpio sistema de equipes.

Vamos tentar novamente, tente seguindo estes passos:

PHP код:
#define EQUIPE_A (01)
#define EQUIPE_B (02)

new Classe[MAX_PLAYERS];
new 
Equipe[MAX_PLAYERS]; 
PHP код:
public OnGameModeInit()
{
    
AddPlayerClass(1141958.37831343.157215.3746269.1425000000);
    
AddPlayerClass(1151958.37831343.157215.3746269.1425000000);
    
AddPlayerClass(2861958.37831343.157215.3746269.1425000000);
    
AddPlayerClass(2851958.37831343.157215.3746269.1425000000);
    return 
1;

PHP код:
public OnPlayerRequestClass(playeridclassid)
{
    
SetPlayerPos(playerid1958.37831343.157215.3746);
    
SetPlayerCameraPos(playerid1958.37831343.157215.3746);
    
SetPlayerCameraLookAt(playerid1958.37831343.157215.3746);
    
    if(
classid == || classid == 1)
    {
        
Equipe[playerid] = EQUIPE_A;
        
GameTextForPlayer(playerid"~r~!! Equipe A !!"20000);
    }
    else if(
classid == || classid == 3)
    {
        
Equipe[playerid] = EQUIPE_B;
        
GameTextForPlayer(playerid"~b~!! Equipe B !!"20000);
    }
    return 
1;

Agora lembre-se que toda vez que for escolhida uma opзгo em OnPlayerRequestClass, o player jб vai receber uma equipe. Entгo em OnPlayerRequestSpawn vocк poderб proibir o uso de determinada classe.

Veja o exemplo:

PHP код:
public OnPlayerRequestSpawn(playerid)
{
    if(
Classe[playerid] == && Equipe[playerid] == EQUIPE_A)
    {
        if(!
IsPlayerAdmin(playerid))
        {
            
SendClientMessage(playerid, -1"somente Admin Rcon pode usar essa classe na Equipe A !");
            return 
0;
        }
        else
        {
            
SendClientMessage(playerid, -1"Voce escolheu sua classe de Admin Rcon da Equipe A !");
        }
    }
    return 
1;

Desse modo, somente administradores Rcon poderб escolher a classe 01 que й da Equipe A.

Vocк pode criar um comando para a escolha de classes assim:

PHP код:
public OnPlayerCommandText(playeridcmdtext[])
{
    if(!
strcmp(cmdtext"/escolherclasse"true))
    {
        new 
info_string[50];
        
        if(
Equipe[playerid] == EQUIPE_Ainfo_string "Homem Pequeno\nHomem Grande";
        else if(
Equipe[playerid] == EQUIPE_Binfo_string "Mulher Pequena\nMulher Grande";
        
        
ShowPlayerDialog(playerid0DIALOG_STYLE_LIST"escolha sua classe"info_string"escolher""cancelar");
        return 
1;
     }
    return 
0;

E em OnDialogResponse:

PHP код:
public OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    if(
dialogid == 0)
    {
        if(
response)
        {
            if(
Equipe[playerid] == EQUIPE_A)
            {
                if(
listitem == 0)
                {
                    
Classe[playerid] = 0;
                    
SetPlayerSkin(playerid114);
                }
                else if(
listitem == 1)
                {
                    
Classe[playerid] = 1;
                    
SetPlayerSkin(playerid115);
                }
            }
            else if(
Equipe[playerid] == EQUIPE_B)
            {
                if(
listitem == 0)
                {
                    
Classe[playerid] = 2;
                    
SetPlayerSkin(playerid286);
                }
                else if(
listitem == 1)
                {
                    
Classe[playerid] = 3;
                    
SetPlayerSkin(playerid285);
                }
            }
        }
    }
    return 
1;

O cуdigo de OnDialogResponse jб й auto-explicativo, mas caso ainda tenha dъvidas. Ele altera a classe do player (nгo a do sa-mp, a suposta classe criada em new Classe[MAX_PLAYERS]), e seta a skin dessa mesma classe.

Isso tudo tem que ser de acordo com a ordem que vocк adicionou elas em OnGamemodeInit.

Depois desse quase tutorial, tenho certeza que se vocк revisar o conteъdo poderб criar seu prуpio "sistema de equipes" ou seja lб o que vier em sua mente ^^


Cumprimentos.
Reply
#7

Eu estou fazendo aqui.

Sу para saber, no RequestSpawn, eu preciso colocar o SetPlayerTeam tambйm?
Reply
#8

Nгo й necessбrio.

OnPlayerRequestSpawn em uma traduзгo livre pode-se entender por: Quando o Player Solicitar o Spawn

Ela й chamada assim que o botгo "spawn" й pressionado, entгo se quiser conferir algo antes de permitir que o player spawne, essa й a callback !
Reply
#9

RequestSpawn nгo, no RequestClass , errei =X
Reply
#10

Vai depender do modo de jogo que estб fazendo...
Quando se usa SetPlayerTeam, os players que forem da mesma equipe nгo poderгo se matar.

Caso esteja fazendo um DM por exemplo, use SetPlayerTeam(playerid, EQUIPE_A) no lugar de Equipe[playerid] = EQUIPE_A. E if(GetPlayerTeam(playerid) == EQUIPE_A) no lugar de Equipe[playerid] == EQUIPE_A

Caso esteja fazendo um RPG e queira permitir que players na mesma equipe/profissгo possam se matar, basta manter o sistema como estб.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)