Здравствуйте, моя проблема такова: Не спавнится автоматически персонаж после авторизации (То есть приходится всё время нажимать кнопку SPAWN) как сделать чтобы спавнился автоматически?(То есть без нажатия кнопочки SPAWN) вот код регистрации:
Code
public OnPlayerConnect(playerid) { new PlayerName[MAX_PLAYER_NAME]; GetPlayerName(playerid,PlayerName,sizeof(PlayerName)); //узнаем ник игрока new account[128]; format(account,sizeof(account),"users/%s.ini",PlayerName); //создаем акк if(!fexist(account)) //если акка не существует, то... { ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT, "Регистрация", "Вы должны зарегистрироваться! \nВведите ваш пароль:", "Зарегаться", ""); //...Показываем игроку диалог реги } else { ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT, "Авторизация", "Вы должны авторизоваться! \nВведите ваш пароль:", "Залогиниться", ""); //если он есть, то авторизуем его } } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { //=========================== Регистрция =========================== if(dialogid == 1) //Регистрация { if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Регистрация", "Вы должны зарегистрироваться! \nВведите ваш пароль:", "Ок", ""); if(response) //проверка на кнопку "ОК" и на нажатие Enter'а { new PlayerName[MAX_PLAYER_NAME]; GetPlayerName(playerid,PlayerName,sizeof(PlayerName)); //узнаем ник new account[128]; format(account,sizeof(account),"users/%s.ini",PlayerName);//ищем акк if(fexist(account)) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT, "Авторизация", "Вы должны авторизоваться! \nВведите ваш пароль:", "Залогиниться", ""); //если акк уже существует, то логиним игрока new iniFile = ini_createFile(account); //создаем акк if(iniFile < 0) ini_openFile (account); //если файл пустой, то... { ini_setString(iniFile,"Пароль",inputtext); //запишем пароль и закодируем его ini_setInteger(iniFile, "Money", 5000); // Запишем кол-во денег в файл. ini_setFloat(iniFile, "Heal", 50.0); // Запишем кол-во жизней в файл. ini_setInteger(iniFile, "Member", 0); ini_setInteger(iniFile, "Leader", 0); ini_setInteger(iniFile, "Rank", 0); ini_setInteger(iniFile, "Skin", 0); ini_setInteger(iniFile, "Admin", 0); ini_setInteger(iniFile, "Logged", 0); ini_closeFile(iniFile); //закроем файл ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT, "Авторизация", "Вы должны авторизоваться! \nВведите ваш пароль:", "Залогиниться", ""); //теперь после регистрации, мы дадим игроку залогиниться } } else //Проверка на вторую кнопку, но ее то мы не указали. Но если нажать Esc, то мы не регаемся. Так что мы ставим проверку на нажатие Esc'ейпа { ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Регистрация", "Вы должны зарегистрироваться! \nВведите ваш пароль:", "Ок", ""); SendClientMessage(playerid, COLOR_LIGHTBLUE, " Вы зарегались, сейчас выбирите пол"); } } if(dialogid == 2) { if(!strlen(inputtext)) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT, "Авторизация", "Вы должны авторизоваться! \nВведите ваш пароль:", "Залогиниться", ""); //если игрок не введет пароль, то игрок мог обойти регу. Но с этой проверкой это исключается if(response) // проверка на кнопку "ОК" и Enter { new PlayerName[MAX_PLAYER_NAME], password[64]; GetPlayerName(playerid,PlayerName,sizeof(PlayerName)); new account[128]; format(account,sizeof(account),"users/%s.ini",PlayerName); if(IsPlayerNPC(playerid))return 1; new iniFile = ini_openFile(account); ini_getString(iniFile, "Пароль",password); // Узнаём пароль аккаунта. if(!strcmp(inputtext, password, true)) { ini_getInteger(iniFile, "Money", PlayerInfo[playerid][pMoney]); // Запишем кол-во денег в переменную. ini_getFloat(iniFile, "Heal", PlayerInfo[playerid][pHeal]); // Запишем кол-во жизней в переменную. ini_getInteger(iniFile, "Member", PlayerInfo[playerid][pMember]); ini_getInteger(iniFile, "Leader", PlayerInfo[playerid][pLeader]); ini_getInteger(iniFile, "Rank", PlayerInfo[playerid][pRank]); ini_getInteger(iniFile, "Skin", PlayerInfo[playerid][pSkin]); ini_getInteger(iniFile, "Admin", PlayerInfo[playerid][pAdmin]); ini_getInteger(iniFile, "Logged", PlayerInfo[playerid][pLogged]); SetPlayerHealth(playerid, PlayerInfo[playerid][pHeal]); GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]); ini_closeFile(iniFile); SendClientMessage(playerid, COLOR_LIGHTBLUE, " Вы залогинились"); return 1; } else { SendClientMessage(playerid, COLOR_SYSTEM, "System: Неверный пароль!"); ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Авторизация", "Вы должны авторизоваться! \nВведите ваш пароль:", "Ок", ""); return 1; } } else //Если нажать Esc, то... { ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Авторизация", "Вы должны авторизоваться! \nВведите ваш пароль:", "Ок", ""); // не даем игроку обойти авторизацию и показываем ему снова окно авторизации } } if(dialogid == 3) { if(response) // проверка на кнопку Мужского и Женского { SendClientMessage(playerid, COLOR_LIGHTBLUE, " Вы выбрали мужской пол!"); SetPlayerSkin(playerid,5); PlayerInfo[playerid][pLogged] = 1; PlayerInfo[playerid][pSkin] = 5; } else { SendClientMessage(playerid, COLOR_LIGHTBLUE, " Вы выбрали женский пол!"); SetPlayerSkin(playerid,12); PlayerInfo[playerid][pLogged] = 1; PlayerInfo[playerid][pSkin] = 12; } } return 0; } public SaveAccounts() { for(new f; f < GetMaxPlayers(); f++) { if(!IsPlayerConnected(f))continue; SaveAccount(f); } } stock SaveAccount(playerid) { new PlayerName[MAX_PLAYER_NAME], account[128]; GetPlayerName(playerid,PlayerName,sizeof(PlayerName)); format(account,sizeof(account), "users/%s.ini", PlayerName); new iniFile = ini_openFile(account); ini_setInteger(iniFile, "Money", GetPlayerMoney(playerid)); ini_setInteger(iniFile, "Skin", GetPlayerSkin(playerid)); ini_getInteger(iniFile, "Member", PlayerInfo[playerid][pMember]); ini_getInteger(iniFile, "Leader", PlayerInfo[playerid][pLeader]); ini_getInteger(iniFile, "Rank", PlayerInfo[playerid][pRank]); ini_getInteger(iniFile, "Admin", PlayerInfo[playerid][pAdmin]); ini_getInteger(iniFile, "Logged", PlayerInfo[playerid][pLogged]); ini_closeFile(iniFile); return 1; } public OnPlayerSpawn(playerid) { if(PlayerInfo[playerid][pLogged] == 0) { ShowPlayerDialog(playerid,3,DIALOG_STYLE_MSGBOX,"Регистрация","Какого пола будет ваш персонаж:","Мужского","Женского"); } if(PlayerInfo[playerid][pMember] == 0) { SetPlayerInterior(playerid,0); SetPlayerPos(playerid, -445.3064,-1300.9894,34.2876); SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); } if (PlayerInfo[playerid][pMember] == 1) { SetPlayerInterior(playerid,0); SetPlayerPos(playerid, 1495.9497070313,-1725.1209716797,13.645512580872); SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); return 1; } }
Спасибо за внимание, помогите пожалуйста )
Добавлено (18.09.2011, 09:36:30) --------------------------------------------- У меня ещё есть 1 вопрос, я написал после /makeleader чтобы мне дало - pMember 1, вот как это выглядит:
Code
else if(level == 1) { PlayerInfo[playerid][pSkin] = 283; PlayerInfo[playerid][pMember] = 1; ну и там дальше много что)
ну и вообщем меня назначает на фракцию, даёт скин, но! Мне не даёт pMember в файле! вообще, там 0 как стоял так и стоит, почему у меня не записываются данные с PlayerInfo[playerid][pMember] = 1 ? спасибо за внимание)