Выбор скина при помощи AddPlayerClassEx и OnPlayerRequestClass.
#1

Как можно сделать выбор скина при помощи AddPlayerClassEx и OnPlayerRequestClass?

Я попопробовал сделать так:
PHP Code:
public OnGameModeInit(){
    
// Selection
        //male
    
AddPlayerClassEx(02300,0,0,00,0,0,0,0,0);
    
AddPlayerClassEx(02120,0,0,00,0,0,0,0,0);
    
AddPlayerClassEx(02000,0,0,00,0,0,0,0,0);
        
//female
    
AddPlayerClassEx(1390,0,0,00,0,0,0,0,0);
    
AddPlayerClassEx(1540,0,0,00,0,0,0,0,0);
    
AddPlayerClassEx(1770,0,0,00,0,0,0,0,0);
        return 
true;

Выбор пола через диалог (mdialog).
PHP Code:
DialogCreate:d_user_select_gender(playerid){
    
Dialog_Open(playeridDialog:d_user_select_genderDIALOG_STYLE_MSGBOX"Выберите пол персонажа"," ","Мужской","Женский");
}
DialogResponse:d_user_select_gender(playeridresponselistiteminputtext[])
{
    if(!
response) return SetPlayerTeam(playerid1), TogglePlayerSpectating(playerid0); //female
    
SetPlayerTeam(playerid0); //male
    
TogglePlayerSpectating(playerid0);
    
//orm_insert(P[playerid][_p_ormid], "OnMySQL_InsertAccount", "d", playerid);
    
return true;

PHP Code:
public OnPlayerRequestClass(playeridclassid)
{
        
printf("Team: %d",GetPlayerTeam(playerid));
    if(
P[playerid][_p_in_game] == true) {
            
// код который не имеет значение в данном случае.
    
}
    else{
                
// Выбор персонажа
        
SetPlayerInterior(playerid0);
        
SetPlayerPos(playerid,1984.4445,157.9501,55.9384);
        
SetPlayerFacingAngle(playerid,0.0);
        
InterpolateCameraPos(playerid1984.4445,160.9501,55.93841984.4445,160.9501,55.93841000);
        
InterpolateCameraLookAt(playerid1984.4445,157.9501,55.93841984.4445,157.9501,55.93841000);
                
// первый вариант
        
if(GetPlayerTeam(playerid) == 0){
            
printf("asdas12312");
            if(
GetPlayerSkin(playerid) == 39) return SetPlayerSkin(playerid230), SetPlayerTeam(playerid0);
            else if(
GetPlayerSkin(playerid) == 54) return SetPlayerSkin(playerid212), SetPlayerTeam(playerid0);
            else if(
GetPlayerSkin(playerid) == 77) return SetPlayerSkin(playerid200), SetPlayerTeam(playerid0);
        }
        else if(
GetPlayerTeam(playerid) == 1){
            
printf("asdas");
            if(
GetPlayerSkin(playerid) == 230) return SetPlayerSkin(playerid39), SetPlayerTeam(playerid0);
            else if(
GetPlayerSkin(playerid) == 212) return SetPlayerSkin(playerid54), SetPlayerTeam(playerid0);
            else if(
GetPlayerSkin(playerid) == 200) return SetPlayerSkin(playerid77), SetPlayerTeam(playerid0);
        }
                
// второй вариант | с использованием switch
                
if(GetPlayerTeam(playerid) == 0){
            switch(
classid){
                case 
0SetPlayerSkin(playerid230);
                case 
1SetPlayerSkin(playerid212);
                case 
2SetPlayerSkin(playerid200);
                default: 
SetPlayerSkin(playerid230);
            }
            return 
true;
        }
        else if(
GetPlayerTeam(playerid) == 1){
            switch(
classid){
                case 
0SetPlayerSkin(playerid39);
                case 
1SetPlayerSkin(playerid54);
                case 
2SetPlayerSkin(playerid77);
                default: 
SetPlayerSkin(playerid39);
            }
            return 
true;
        }
        }
        
printf("%i"classid);
        return 
true;

Оба этих вариантов нерабочие.
Первая заметка:
Обнуление classid или установка какого-то значения ниначто не влияют. Можно поставить classid = 0; и выбор скинов так-же будет работать.

Вторая заметка:
PHP Code:
printf("Team: %d",GetPlayerTeam(playerid)); 
Показывает разные значения в зависимости от "пола" скинов которых я указал.

Между классами 200 и 230 = GetPlayerTeam(playerid) равен нулю.
Между классами 39 и 77 = GetPlayerTeam(playerid) равен 1. Хотя я ничего не меняю...
Я не знаю как это фиксить и возможно это главная причина почему у меня система работает ошибочно.

P.S: Надеюсь я всё доступно объяснил.
Reply


Messages In This Thread

Forum Jump:


Users browsing this thread: 2 Guest(s)