dmitriy174
Дебютант
Вот проблемная часть кода. Проблема заключается в том, что при регистрации и выборе мужского пола сохраняется 213 скин, хотя выбрать можно любой (женский пол не проверял), а так же надо убрать скин сиджея в выборе. При авторизации так же идёт выборка скина, которую надо убрать (визуально выбора скина нет, то если тыкать на кнопки "<<" и ">>" там идёт выбор). Если при авторизации убрать кнопки "<<",">>" и "SPAWN" то игрок не спавнится и идёт режим наблюдения в районе двух ферм ЛС.
Код:
#include <a_samp>
#include mxINI
#include <md5>
enum pInfo
{
pName[MAX_PLAYER_NAME],
pPass[17],
pSex,
pSkin,
pTicket,
}
new PlayerInfo[MAX_PLAYERS][pInfo];
public OnPlayerConnect(playerid)
{
GetPlayerName(playerid,PlayerInfo[playerid][pName],MAX_PLAYER_NAME);
new string[MAX_PLAYER_NAME + 6 + 4];
format(string,sizeof(string),"users/%s.ini",PlayerInfo[playerid][pName]);
new openFile = ini_openFile(string);
if(openFile < 0)
{
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Регистрация нового персонажа.","{1E90FF}Аккаунт не зарегистрирован. \n \n{1E90FF}Пройдите регистрацию. \n \n{00FF00}Введите пароль: ","Ввод","Выход");
}
else
{
ShowPlayerDialog(playerid,2,DIALOG_STYLE_PASSWORD,"Аккаунт зарегистрирован.", "{FFFF00}Этот аккаунт уже зарегистрирован. \n \n{FFFF00}Чтобы войти на сервер, пройдите авторизацию. \n \n{00FF00}Введите пароль:","Ввод","Выход");
ini_getString(openFile,"PASS",PlayerInfo[playerid][pPass]);
ini_closeFile(openFile);
}
return 1;
}
public OnPlayerSpawn(playerid)
{
SetPlayerColor(playerid,0xFFFFFF00);
SetPlayerInterior(playerid,0);
new spawnskin=PlayerInfo[playerid][pSkin];
SetPlayerSkin(playerid,spawnskin);
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case 1:
{
if(!response) return Kick(playerid);
if(strlen(inputtext) < 4 || strlen(inputtext) > 16) return ShowPlayerDialog(playerid,1,DIALOG_STYLE_PASSWORD,"Регистрация нового персонажа.","Длина пароля от 4 до 16 символов! ","Ввод","Выход");
format(PlayerInfo[playerid][pPass],17,inputtext);
if(response) return ShowPlayerDialog(playerid,4,DIALOG_STYLE_MSGBOX,"Правила сервера.","1.Правило 1. \n2.Правило 2. \n3.Правило 3. ","Выход","Далее>>");
ShowPlayerDialog(playerid,3,DIALOG_STYLE_MSGBOX,"Выберите ваш пол:","{FFFFFF}","Мужской","Женский");
}
case 2:
{
if(!response) return Kick(playerid);
if(!strlen(inputtext)) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_PASSWORD,"Аккаунт зарегистрирован.", "{FFFF00}Этот аккаунт уже зарегистрирован. \n \n{FFFF00}Чтобы войти на сервер, пройдите авторизацию. \n \n{00FF00}Введите пароль:","Ввод","Выход");
if(strcmp(PlayerInfo[playerid][pPass],inputtext,false) != 0) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_PASSWORD,"Аккаунт зарегистрирован.", "{FFFF00}Этот аккаунт уже зарегистрирован. \n \n{FFFF00}Чтобы войти на сервер, пройдите авторизацию. \n \n{00FF00}Введите пароль:","Ввод","Выход");
AddPlayerClass(pSkin,1450.0621,-2287.6050,13.5469,86.9806,0,0,0,0,0,0);
LoadPlayerAccount(playerid);
}
case 3:
{
SetPlayerPos(playerid, 222.5363,-8.0818,1002.2109);
SetPlayerFacingAngle(playerid, 270.0000);
SetPlayerCameraPos(playerid, 225.5363,-8.1821,1002.2109);
SetPlayerCameraLookAt(playerid, 200.5363,-7.1821,1005.2109);
SetPlayerInterior(playerid,5);
if(response) PlayerInfo[playerid][pSex] = 1;
else PlayerInfo[playerid][pSex] = 2;
if(response)
{
if (AddPlayerClass(78,1450.0621,-2287.6050,13.5469,86.9806,0,0,0,0,0,0))
{
PlayerInfo[playerid][pSkin] = 78;
}
if (AddPlayerClass(79,1450.0621,-2287.6050,13.5469,86.9806,0,0,0,0,0,0))
{
PlayerInfo[playerid][pSkin] = 79;
}
if (AddPlayerClass(134,1450.0621,-2287.6050,13.5469,86.9806,0,0,0,0,0,0))
{
PlayerInfo[playerid][pSkin] = 134;
}
if (AddPlayerClass(135,1450.0621,-2287.6050,13.5469,86.9806,0,0,0,0,0,0))
{
PlayerInfo[playerid][pSkin] = 135;
}
if (AddPlayerClass(137,1450.0621,-2287.6050,13.5469,86.9806,0,0,0,0,0,0))
{
PlayerInfo[playerid][pSkin] = 137;
}
if (AddPlayerClass(200,1450.0621,-2287.6050,13.5469,86.9806,0,0,0,0,0,0))
{
PlayerInfo[playerid][pSkin] = 200;
}
if (AddPlayerClass(212,1450.0621,-2287.6050,13.5469,86.9806,0,0,0,0,0,0))
{
PlayerInfo[playerid][pSkin] = 212;
}
if (AddPlayerClass(213,1450.0621,-2287.6050,13.5469,86.9806,0,0,0,0,0,0))
{
PlayerInfo[playerid][pSkin] = 213;
}
}
else
{
if (AddPlayerClass(54,1450.0621,-2287.6050,13.5469,86.9806,0,0,0,0,0,0))
{
PlayerInfo[playerid][pSkin] = 54;
}
if (AddPlayerClass(75,1450.0621,-2287.6050,13.5469,86.9806,0,0,0,0,0,0))
{
PlayerInfo[playerid][pSkin] = 75;
}
if (AddPlayerClass(77,1450.0621,-2287.6050,13.5469,86.9806,0,0,0,0,0,0))
{
PlayerInfo[playerid][pSkin] = 77;
}
}
new str[35];
format(str,sizeof(str),"users/%s.ini",PlayerInfo[playerid][pName]);
new openFile = ini_createFile(str);
ini_setString(openFile,"Pass",PlayerInfo[playerid][pPass]);
ini_setInteger(openFile,"Sex",PlayerInfo[playerid][pSex]);
ini_setInteger(openFile,"Skin",PlayerInfo[playerid][pSkin]);
ini_closeFile(openFile);
}
case 4:
{
if(!response) return ShowPlayerDialog(playerid,5,DIALOG_STYLE_INPUT,"E-Mail","Введите ваш E-Mail:","Выход","Далее>>");
if(response) return Kick(playerid);
}
case 5: //E-Mail
{
if(strlen(inputtext) == 0) return ShowPlayerDialog(playerid,5,DIALOG_STYLE_INPUT,"E-Mail","Введите ваш E-Mail:","Выход","Далее>>");
if(!response) return ShowPlayerDialog(playerid,3,DIALOG_STYLE_MSGBOX,"Выберите ваш пол:","{FFFFFF}","Мужской","Женский");
else Kick(playerid);
}
}
return 1;
}
stock LoadPlayerAccount(playerid)
{
new str[35];
format(str,sizeof(str),"users/%s.ini",PlayerInfo[playerid][pName]);
new openFile = ini_openFile(str);
ini_getInteger(openFile,"Sex",PlayerInfo[playerid][pSex]);
return 1;
}
