AddPlayerClass sem selecionar? -
LordShadow - 20.06.2013
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?
Respuesta: AddPlayerClass sem selecionar? -
Parka - 20.06.2013
pawn Код:
public OnPlayerRequestSpawn(playerid)
{
if( GetPlayerSkin( playerid ) == 294 )
{
//Code
return 0;
}
return 1;
}
Re: AddPlayerClass sem selecionar? -
LordShadow - 20.06.2013
Ta mais o que eu colodo no lugar de //code ?
Respuesta: AddPlayerClass sem selecionar? -
Parka - 20.06.2013
pawn Код:
SendClientMessage(playerid,COLOR_GREEN,"Vocк nгo pode escolher esta Skin.");
Re: AddPlayerClass sem selecionar? -
LordShadow - 20.06.2013
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...
Re: AddPlayerClass sem selecionar? -
Falcon. - 20.06.2013
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(114, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
AddPlayerClass(115, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
AddPlayerClass(286, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
AddPlayerClass(285, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}
PHP код:
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
if(classid == 0 || classid == 1)
{
Equipe[playerid] = EQUIPE_A;
GameTextForPlayer(playerid, "~r~!! Equipe A !!", 2000, 0);
}
else if(classid == 2 || classid == 3)
{
Equipe[playerid] = EQUIPE_B;
GameTextForPlayer(playerid, "~b~!! Equipe B !!", 2000, 0);
}
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] == 1 && 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(playerid, cmdtext[])
{
if(!strcmp(cmdtext, "/escolherclasse", true))
{
new info_string[50];
if(Equipe[playerid] == EQUIPE_A) info_string = "Homem Pequeno\nHomem Grande";
else if(Equipe[playerid] == EQUIPE_B) info_string = "Mulher Pequena\nMulher Grande";
ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, "escolha sua classe", info_string, "escolher", "cancelar");
return 1;
}
return 0;
}
E em OnDialogResponse:
PHP код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 0)
{
if(response)
{
if(Equipe[playerid] == EQUIPE_A)
{
if(listitem == 0)
{
Classe[playerid] = 0;
SetPlayerSkin(playerid, 114);
}
else if(listitem == 1)
{
Classe[playerid] = 1;
SetPlayerSkin(playerid, 115);
}
}
else if(Equipe[playerid] == EQUIPE_B)
{
if(listitem == 0)
{
Classe[playerid] = 2;
SetPlayerSkin(playerid, 286);
}
else if(listitem == 1)
{
Classe[playerid] = 3;
SetPlayerSkin(playerid, 285);
}
}
}
}
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.
Re: AddPlayerClass sem selecionar? -
LordShadow - 20.06.2013
Eu estou fazendo aqui.
Sу para saber, no RequestSpawn, eu preciso colocar o SetPlayerTeam tambйm?
Re: AddPlayerClass sem selecionar? -
Falcon. - 20.06.2013
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 !
Re: AddPlayerClass sem selecionar? -
LordShadow - 20.06.2013
RequestSpawn nгo, no RequestClass , errei =X
Re: AddPlayerClass sem selecionar? -
Falcon. - 20.06.2013
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б.