PDA

Просмотр полной версии : [Вопрос] Переключение текстдрава при выборе скина



Geebrox
27.02.2017, 22:58
Есть текстдравы переключение между скинами при регистрации. Очень странная ситуация, при выборе мужского пола, переключение скинов работает нормально, но при выборе женского пола при переключение на предыдущие скины, как бы скины меняются на те, которых вообще нет в массиве.

http://i.imgur.com/I5dz6Oh.png



// В настройках (отдельный инклюд)
#define PLAYER_MODELS_MALE 2, 3, 4, 5, 6, 7
#define PLAYER_MODELS_FEMALE 12, 13, 40, 41, 55

// В переменных
new const player_models[2][] =
{
{PLAYER_MODELS_MALE, -1},
{PLAYER_MODELS_FEMALE, -1}
};

// OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
if(playertextid == PTD_join[playerid][5] ||
playertextid == PTD_join[playerid][6])
{
new model_picker =
((playertextid == PTD_join[playerid][6]) ? (1) : (-1)) +
GetPVarInt(playerid, "model_picker");

if(model_picker == -1)
{
while(player_models[player[playerid][player_gender]][model_picker]
!= -1)
{
model_picker++;
}

model_picker--;
}

else if(player_models[player[playerid][player_gender]][model_picker]
== -1)
{
model_picker = 0;
}


PlayerTextDrawSetPreviewModel(playerid, PTD_join[playerid][4],
(player[playerid][player_model] =
player_models[player[playerid][player_gender]][model_picker]));
PlayerTextDrawShow(playerid, PTD_join[playerid][4]);
SetPVarInt(playerid, "model_picker", model_picker);
return 1;
}


// Выбор пола
player[playerid][player_gender] = response;
PlayerTextDrawSetString(playerid, PTD_join[playerid][0],
(!response) ? ("Мужской") : ("Женский"));
PlayerTextDrawShow(playerid, PTD_join[playerid][0]);
PlayerTextDrawSetPreviewModel(playerid, PTD_join[playerid][4],
(player[playerid][player_model] = player_models[response][0]));
PlayerTextDrawShow(playerid, PTD_join[playerid][4]);
SetPVarInt(playerid, "model_picker", 0);
printf("Gender: %d", player[playerid][player_gender]);
return 1;

ziggi
27.02.2017, 23:35
Начать нужно с этого:

new player_models_size[sizeof(player_models)];

// init
for (new i, j; i < sizeof(player_models); i++) {
j = 0;
while (player_models[i][j] != -1) {
j++;
}
player_models_size[i] = j;
}

// OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
if (playertextid == PTD_join[playerid][5] ||
playertextid == PTD_join[playerid][6])
{
new gender = player[playerid][player_gender];
new current_model_id = GetPVarInt(playerid, "model_picker");

if (playertextid == PTD_join[playerid][5]) {
current_model_id--;

if (current_model_id < 0) {
current_model_id = player_models_size[gender] - 1;
}
} else if (playertextid == PTD_join[playerid][6]) {
current_model_id++;

if (current_model_id >= player_models_size[gender]) {
current_model_id = 0;
}
}

player[playerid][player_model] = player_models[gender][current_model_id];
PlayerTextDrawSetPreviewModel(playerid, PTD_join[playerid][4], player[playerid][player_model]);
PlayerTextDrawShow(playerid, PTD_join[playerid][4]);
SetPVarInt(playerid, "model_picker", current_model_id);
return 1;
}

Geebrox
28.02.2017, 00:33
Спасибо, тему можно закрывать.