Sign in to follow this  
Followers 0
yan2348

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

Рекомендованные сообщения



5 posts in this topic

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

 

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
Share on other sites

Возможно координаты будут в паблике "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
Share on other sites

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

Share this post


Link to post
Share on other sites

Сразу поспешил, у меня появилось две ошибки 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
Share on other sites

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

Share this post


Link to post
Share on other sites
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

    • Игорь5878
      By Игорь5878
      Продаётся оригинальный игровой мод проекта RakNet Role Play
      В моде присутствует множество уникальных систем например пару примеров: уникальная система крафта оружия/патронов, система чердаков, автосалонов.
      В продажу мода входит: Группа ВК проекта - vk.com/raknet_official Свободная группа - vk.com/raknet_fr
      Сайт/форум проекта - raknetrp.ru
      Цена на мод договорная. 
      Связаться со мной можете по ссылке во вконтактах группы, либо на форуме.
      Продаётся самая последняя версия мода - 2.2.3
    • Игорь5878
      By Игорь5878
      Оригинальный RakNet ONLINE
      Просмотр файла Продаётся оригинальный игровой мод проекта RakNet Role Play
      В моде присутствует множество уникальных систем например пару примеров: уникальная система крафта оружия/патронов, система чердаков, автосалонов.
      В продажу мода входит: Группа ВК проекта - vk.com/raknet_official Свободная группа - vk.com/raknet_fr
      Сайт/форум проекта - raknetrp.ru
      Цена на мод договорная. 
      Связаться со мной можете по ссылке во вконтактах группы, либо на форуме.
      Продаётся самая последняя версия мода - 2.2.3
      Добавил Игорь5878 Добавлено 19.04.2021 Категория Моды Автор Angel_  
    • odosenok
      By odosenok
      Описание системы.
      Система полета камерой представляет собой возможность перемещаться в пространстве игры по всем осям (X, Y, Z) путем нажатия кнопок на клавиатуре.
       
      Подключение системы.
      1. Система написана в отдельном файле - include. Вам необходимо скачать этот файл и добавить в папку, находящейся в следующей директории:
      "..\pawno\include" 2. Затем Вам следует открыть свой игровой мод и в начале, после всех инклудов, дописать следующую строку:
      #include <fly>  
      Работа с системой.
      В систему полета камерой включены две функции:
      1.
      SetPlayerFlyStatus(playerid, status = 2) /* playerid - ID игрока, которого Вы хотите "отправить" в режим полета status - режим полета* * предусмотрено три режима полета: CAMERA_MODE_NONE (0) - выключить режим полета, CAMERA_MODE_FLY (1) - включить режим полета, CAMERA_MODE_REVERSE (2) - сменить режим на реверсивный */ 2. 
      IsPlayerFlying(playerid) /* playerid - ID игрока, пребывание в состоянии полета которого Вы хотите проверить *данная функция возвращает: CAMERA_MODE_NONE (0), если игрок не находится в состоянии полета, CAMERA_MODE_FLY (1), если игрок находится в состоянии полета */ При помощи данных функций Вы можете управлять пребыванием игрока в режиме полета, а также получать информацию о том, "летает" ли игрок в тот или иной момент.
       
      Особенности системы.
      Системой полета предусмотрено, что игрок, выходящий из режима полета, появится именно там, где вышел. Так, если Вы покидаете режим полета, пребывая в озере, то появление игрока будет именно в этом озере.
       
      Пример использования.
      CMD:fly(playerid, params[]) { static const MSG_USE_CMD[] = !"» Usage the command: /fly [mode 0-2]"; if(isnull(params)) return SendClientMessage(playerid, -1, MSG_USE_CMD) & 0; new mode; if(sscanf(params, "d", mode)) return SendClientMessage(playerid, -1, MSG_USE_CMD) & 0; else if(!(0 <= mode <= 2)) return SendClientMessage(playerid, -1, MSG_USE_CMD) & 0; SetPlayerFlyStatus(playerid, mode); return 1; } CMD:checkfly(playerid, params[]) { static const MSG_USE_CMD[] = !"» Usage the command: /checkfly [playerid]"; if(isnull(params)) return SendClientMessage(playerid, -1, MSG_USE_CMD) & 0; new id; if(sscanf(params, "u", id)) return SendClientMessage(playerid, -1, MSG_USE_CMD) & 0; else if(id == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, !"The player is not connected") & 0; static const status_fly[][] = { !"The player is not flying", !"The player is flying" }; SendClientMessage(playerid, -1, status_fly[IsPlayerFlying(id)]); return 1 } Авторское право.
      Функции для получения позиции для перемещения камеры, само перемещение вырезаны из разработки Norck.
      В свою очередь я, @odosenok, лишь преобразовал данный код, создал более удобный интерфейс.
       
      fly.inc