• 0
Sign in to follow this  
Followers 0
yan2348

Куда и как верно написать появление игрока на координатах после регистрации и авторизации?

Question

Привет народ! Мне понадобилось поменять место спавна, а при моей регистрации и авторизации я не могу понять куда вставлять координаты и сам спавн игрока. Регистрацию и авторизацию прикреплю в спойлере, мне нужно понять куда вписывать. Заранее спасибо!

 

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
 new string[370];
 switch(dialogid)
 {
     case 1:
     {
         if(response)
         {
             if(!strlen(inputtext))
             {
                 f("{FFFFFF}Здравствуй игрок! Мы рады видеть тебя на нашем сервере!{0xFAAC58FF}Sunlight RP!\n\n{FFFFFF}Аккаунт {}%s {FFFFFF}не зарегистрирован, для продолжения придумайте свой\nбудущий пароль\n\n\t{29b017}Пароль должен состоять из 6 и до 30 символов\n\t{29b017}{29b017}В пароле могут использоваться цифры и английские символы!\n\t{29b017}{BE2D2D}ВАЖНО:{0xFFFFFFFF}Не передавайте пароль не кому, даже друзьям/админам", GN(playerid));
     SPD(playerid, 1, DSI,"{1724b0}Регистрация", string, "Далее", "Отмена");
     return true;
    }
    for(new i = strlen(inputtext); i != 0; --i)
          switch(inputtext)
          {
              case 'А'..'Я', 'а'..'я':
     return SPD(playerid, 1, DSM, "{17b021}Проверка русских символов", "{FFFFFF}Пароль не должен содержать русских символов\nПожалуйста повторите попытку на английском языке", "Повторить", "");
          }
          if(strlen(inputtext) < 6 || strlen(inputtext) > 30) return SPD(playerid, 1, DSM, "{BE2D2D}Длина пароля", "{FFFFFF}Пароль должен состоять из цифр и букв\nДлина пароля должна быть от 6 до 30 символов\nПовторите попытку", "Повторить", "");
    strmid(Player[playerid][pPass], inputtext, 0, strlen(inputtext), 30);
    SPD(playerid, 2, DSM, "{17b021}Выбор пола персонажа", "{FFFFFF}Для продолжения вам надо выбрать пол\nПол персонажа вам понадобится для:\n\n{29b017}   1)Можно будет пожениться с противоположным полом\n{29b017}   -2)У каждого пола имеются свои скины\n   -3){29b017}В дальнейшем пол персонажа нельзя поменять!", "Мужской", "Женский");
   }
   else
   {
       SCM(playerid, COLOR_ROT, "Вы были отключены от сервера, для выхода ведите /q");
       Kickk(playerid);
   }
  }
  case 2:
  {
      if(response)
      {
          Player[playerid][pSex] = 1;
   }
   else
   {
       Player[playerid][pSex] = 2;
   }
   Player[playerid][pLevel] = 1;
         mysql_format(ConnectMySQL, string, sizeof(string), "INSERT INTO `accounts` (`Name`, `Level`, `Skin`, `Sex`, `Pass`) VALUES ('%s', '%d', '%d', '%d', '%s')", GN(playerid), Player[playerid][pLevel], Player[playerid][pSkin], Player[playerid][pSex], Player[playerid][pPass]);
         mysql_function_query(ConnectMySQL, string, true, "Registr", "d", playerid);
   Login[playerid] = true;
  }
  case 3:
  {
      if(response)
      {
          if(!strlen(inputtext))
          {
              f("{FFFFFF}Акаунт уже зарегистрирован на SunlightRP\n\n{FFFFFF}Для продолжения введите свой пароль,\nкоторый вы указали при регистрации акаунта.\n\nЛогин: {3FE21C}%s\n{FFFFFF}Пароль:", GN(playerid));
     SPD(playerid, 3, DSP, "{1724b0}Авторизация", string, "Вход", "Отмена");
     return true;
    }
    mysql_format(ConnectMySQL, string, sizeof(string), "SELECT * FROM `accounts` WHERE `Name` = '%e' AND `Pass` = '%e'", GN(playerid), inputtext);
    return mysql_function_query(ConnectMySQL, string, true, "OnLogin", "d", playerid);
   }
   else
   {
       SCM(playerid, COLOR_ROT, "Вы были кикнуты с сервера, для выхода ведите /q");
       Kickk(playerid);
   }
  }
 }
 return true;
}


       

 

 

Share this post


Link to post

4 answers to this question

  • 0

Возможно координаты будут в паблике "OnLogin", а вообще, чтобы найти координаты спавна в самом моде, сделай следующее:

1. авторизуйся / зарегистрируйся на сервере

2. Тебя заспавнит, ты ничего не делаешь, не трогаешь мышь, а уж тем более клавиши движения игрока

3. Нажимаешь F6 и пишешь команду "/save координаты спавна"(наприме, но "/save" пишешь точно)

4. В файле savedpositions.txt по пути: "Документы\GTA San Andreas User Files\CR-MP\GenerationC"(если у тебя CRMP 03e) будут твои координаты, если у тебя их несколько, твои - самая последняя строка, например: 

AddPlayerClass(109,2403.6960,-1839.3885,39.7767,183.2486,0,0,0,0,0,0); // pickup на крыше в лифт
AddPlayerClass(109,2404.7095,-1837.1433,39.7778,318.6700,0,0,0,0,0,0); // телепорт на крышу из лифта

Последний сохранённый - это "телепорт на крышу из лифта", от туда достаём координаты: следующим образом: x,y,z,angle, получаем:

2404.7095,-1837.1433,39.7778,318.6700
x        ,y         ,z      ,angle

Сохраняются координаты со следующими аргументами: 

AddPlayerClass(skin, Float:x, Float:y, Float:z, Float:Angle, weapon1, weapon1_ammo, weapon2, weapon2_ammo, weapon3, weapon3_ammo);

5. Чтобы найти место спавна, достаточно скопировать x,y,z координаты, если не находит: поиграйся с пробелом после запятых, или попробуй найти по одной из координат(x,y,z или angle), например: по x,y,z:

2404.7095,-1837.1433,39.7778
или так:
2404.7095, -1837.1433, 39.7778

по angle:

318.6700

 

В итоге ты нашёл координаты спавна и можешь заменять на свои (точно также можешь сохранить нужные тебе координаты)

Share this post


Link to post
  • 0

Спасибо, я бы не додумался сам найти. Всё, нашёл координаты в попе мода. Спасибо, не додумался бы найти сами координаты таким способом. 

Share this post


Link to post
  • 0

Сразу поспешил, у меня появилось две ошибки 17, не найден символ playerid , спойлером прикреплю паблик OnLogin

 

 

publics OnLogin(i)//Паблик Загрузски игрока
{
 new rows;
 new rows2;
 new string[200];
 cache_get_data(rows, rows2);
 if(rows)
 {
  cache_get_field_content(0, "Pass", Player[pPass], ConnectMySQL, 20);
  Player[pLevel] = cache_get_field_content_int(0, "Level");
  Player[pSkin] = cache_get_field_content_int(0, "Skin");
  Player[pSex] = cache_get_field_content_int(0, "Sex");
  Login = true;
  SpawnPlayer(i);
  SetSpawnInfo(playerid, 0, Player[playerid][pSkin], Float:x, Float:y, Float:z,Float:rotate, 0, 0, 0, 0, 0, 0)
  SpawnPlayer(playerid);
 }
 else
 {
     f("{FFFFFF}Здравствуй игрок! Мы рады видеть тебя на нашем сервере!\n\nДанный аккаунт уже зарегистрирован на {0xFAAC58FF}Sunlight RP\n\n{FFFFFF}Чтобы продолжить, Вам надо ввести свой пароль\nКоторый вы указали при регистрации аккаунта\n\n{17b021}Вы вошли под именем: %s\n\n{FFFFFF}Введите Пароль:", GN(i));
  SPD(i, 3, DSP, "{0xFFFFFFFF}Авторизация", string, "Вход", "Отмена");
     SCM(i, COLOR_ROT, "Пароль введён не верно!");
 }
 return true;
} 

 

 

Share this post


Link to post
  • 0

@yan2348 вместо playerid используйте i, которая передается в функцию. 

Share this post


Link to post
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • Ruman
      By Ruman
      Здравствуйте! У меня такой маленький вопросик появился, связанный вроде как бы с MySQL. Короче я хотел бы узнать а возможно ли как то сделать загрузку пароля из БД при авторизации? Если да, то дайте знать как. Я уже пытался через один урок по системе регистрации там короче типо загружается пароль
      Написав эту строчку выдало ошибку при компиляции
      D:\Users\Ruman\Desktop\Time RP\gamemodes\project.pwn(179) : error 017: undefined symbol "cache_get_field_content" А вот и строчка ого самого кода:
      cache_get_field_content(0,"pPassword",Player[playerid][pPassword],dbHandle); Вот хочу узнать как это правильно делать, если это конечно возможно.