Вопросы

Новичок
//
#include <a_samp>
#include <a_mysql>

#define     MYSQL_HOST  "localhost"
#define     MYSQL_USER  "root"
#define     MYSQL_PASS  ""
#define     MYSQL_BASE  "newsamp"

#define     SCM     SendClientMessage
#define     SPD     ShowPlayerDialog

#define COLOR_WHITE             0xFFFFFFFF

new MySQL: dbHandle;
new query[256];

enum
{
 DLG_NOME,
 DLG_REG,
 DLG_REG_GENDER,
 DLG_REG_AGE,
 DLG_LOGIN,
};

enum PLAYER_INFO
{
   id,
   name[MAX_PLAYER_NAME + 1],
   pass[22 + 1],
   gender,
   age,
   skin,
   level,
};
new player_info[MAX_PLAYERS] [PLAYER_INFO];
//
main()
{
    print("\n----------------------------------");
    print(" Blank Gamemode by your name here");
    print("----------------------------------\n");
}

public OnGameModeInit()
{
    dbHandle = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_BASE);
    if(mysql_errno()!= 0)
    {
         print("[MySQL R41-4]: Ïîäêëþ÷åíèå ê áàçå äàííûõ: íåóñïåøíî");
         return SendRconCommand("exit");
    }
    else
    {
          print("[MySQL R41-4]: Ïîäêëþ÷åíèå ê áàçå äàííûõ: óñïåøíî");
    }
    SetGameModeText("Parallel");
    AddPlayerClass(01958.37831343.157215.3746269.1425000000);
    return 1;
}

public OnGameModeExit()
{
    mysql_close(dbHandle);
    return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
    SetPlayerPos(playerid, 2534.7480,2427.5808,54.9348);
    InterpolateCameraPos(playerid, 2552.6052242426.74926722.1784342552.6052242426.74926722.1784341000);
    InterpolateCameraLookAt(playerid, 2555.9985352423.07958922.3112312555.9985352423.07958922.3112311000);
    return 1;
}

public OnPlayerConnect(playerid)
{
    GetPlayerName(playerid, player_info[playerid][name], MAX_PLAYER_NAME);
    SetTimerEx("CheckAccountFromMysql"1000false"i",playerid);
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    return 1;
}

public OnPlayerSpawn(playerid)
{
    SetPlayerSkin(playerid, player_info[playerid][skin]);
    SetPlayerScore(playerid, player_info[playerid][level]);
    SetPlayerColor(playerid, 0x99999900);
    switch(random(3))
    {
      case 0:
      {
          SetPlayerPos(playerid,1758.4210,-1893.0044,13.5560);
          SetPlayerFacingAngle(playerid, 265.3591);
          SetCameraBehindPlayer(playerid);
      }
      case 1:
      {
          SetPlayerPos(playerid,1155.0690,-1771.6304,16.5992);
          SetPlayerFacingAngle(playerid, 355.5767);
          SetCameraBehindPlayer(playerid);
      }
      case 2:
      {
          SetPlayerPos(playerid,2223.0942,-1175.4476,25.7266);
          SetPlayerFacingAngle(playerid, 359.4460);
          SetCameraBehindPlayer(playerid);
      }
    }
    return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
    return 1;
}

public OnVehicleSpawn(vehicleid)
{
    return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
    return 1;
}

public OnPlayerText(playerid, text[])
{
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{

    return 1;
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
    return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
    return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
    return 1;
}

public OnPlayerEnterCheckpoint(playerid)
{
    return 1;
}

public OnPlayerLeaveCheckpoint(playerid)
{
    return 1;
}

public OnPlayerEnterRaceCheckpoint(playerid)
{
    return 1;
}

public OnPlayerLeaveRaceCheckpoint(playerid)
{
    return 1;
}

public OnRconCommand(cmd[])
{
    return 1;
}

public OnPlayerRequestSpawn(playerid)
{
    return 1;
}

public OnObjectMoved(objectid)
{
    return 1;
}

public OnPlayerObjectMoved(playerid, objectid)
{
    return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
    return 1;
}

public OnVehicleMod(playerid, vehicleid, componentid)
{
    return 1;
}

public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
    return 1;
}

public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
    return 1;
}

public OnPlayerSelectedMenuRow(playerid, row)
{
    return 1;
}

public OnPlayerExitedMenu(playerid)
{
    return 1;
}

public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
    return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    return 1;
}

public OnRconLoginAttempt(ip[], password[], success)
{
    return 1;
}

public OnPlayerUpdate(playerid)
{
    return 1;
}

public OnPlayerStreamIn(playerid, forplayerid)
{
    return 1;
}

public OnPlayerStreamOut(playerid, forplayerid)
{
    return 1;
}

public OnVehicleStreamIn(vehicleid, forplayerid)
{
    return 1;
}

public OnVehicleStreamOut(vehicleid, forplayerid)
{
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    new str[256];
    switch(dialogid)
    {
        case DLG_REG:
        {
            if(!response) return Kick(playerid);
            if(!(strlen(inputtext) >= 8 && strlen(inputtext)<= 22))
            {
                 SCM(playerid, COLOR_WHITE, "Äëèíà ïàðîëÿ áûòü íå ìåíåå 8 è íå áîëåå 22 ñèìâîëîâ." );
                 format(str, sizeof(str), "{FFFFFF}Äîáðî ïîæàëîâàòü íà íàø ñåðâåð, âàø íèê: %s[%i]\nÄàííûé àêêàóíò íå çàðåãèñòðèðîâàí, äëÿ ðåãèñòðàöèè ââåäèòå ïàðîëü\nâ ïîëå íèæå:\n", player_info[playerid][name], playerid);
                 return SPD(playerid, DLG_REG, DIALOG_STYLE_INPUT, "Ðåãèñòðàöèÿ", str, "Äàëåå""Îòìåíà");
            }
            for(new i = 0; i < strlen(inputtext); i++)
            {
                switch(inputtext[i])
                {
                    case 'a' ..'z''A'..'Z''0'..'9'continue;
                    default:
                    {
                        SCM(playerid, COLOR_WHITE, "Ïàðîëü ìîæåò òîëüêî ñîñòîÿòü èç ëàòèíñêèõ ñèìâîëîâ è öèôîð ." );
                        format(str, sizeof(str), "{FFFFFF}Äîáðî ïîæàëîâàòü íà íàø ñåðâåð, âàø íèê: %s[%i]\nÄàííûé àêêàóíò íå çàðåãèñòðèðîâàí, äëÿ ðåãèñòðàöèè ââåäèòå ïàðîëü\nâ ïîëå íèæå:\n", player_info[playerid][name], playerid);
                        return SPD(playerid, DLG_REG, DIALOG_STYLE_INPUT, "Ðåãèñòðàöèÿ", str, "Äàëåå""Îòìåíà");
                    }
                    
                }
            }
            player_info[playerid][pass] = EOS;
            strins(player_info[playerid][pass], inputtext, 0);
            SPD(playerid, DLG_REG_GENDER, DIALOG_STYLE_MSGBOX, "Ðåãèñòðàöèÿ""{FFFFFF}Âûáåðèòå ïîë âàøåãî ïåðñàíàæà:""Ìóæñêîé""Æåíñêèé");
        }
        case DLG_REG_GENDER:
        {
             if(!response) player_info[playerid][gender] = 2;
             if(!response)player_info[playerid][gender] = 1;
             SPD(playerid, DLG_REG_AGE, DIALOG_STYLE_INPUT, "Ðåãèñòðàöèÿ""{FFFFFF}Âûäèòå âîçðîñò âàøåãî ïåðñàíàæà (îò 18 äî 99):""Äàëåå""Îòìåíà");
        }
        case DLG_REG_AGE:
        {
             if(!response) return Kick(playerid);
             for(new i = 0; i < strlen(inputtext); i++)
            {
                switch(inputtext[i])
                {
                    case '0'..'9'continue;
                    default:
                    {
                        SCM(playerid, COLOR_WHITE, "Âîçðîñò ïåðñàíàæà íå îáõîäèìî âîäèòü öèôðàìè." );
                        return SPD(playerid, DLG_REG_AGE, DIALOG_STYLE_INPUT, "Ðåãèñòðàöèÿ""{FFFFFF}Âûäèòå âîçðîñò âàøåãî ïåðñàíàæà (îò 18 äî 99):""Äàëåå""Îòìåíà");

                    }

                }
            }
             if(!(strval(inputtext) >= 18 && strval (inputtext) <= 99))
             {
                  SCM(playerid, COLOR_WHITE, "Âîçðîñò ïåðñàíàæà íå ìåíüøå 18 ëåò è íå áîëüøå 99 ëåò.");
                  return SPD(playerid, DLG_REG_AGE, DIALOG_STYLE_INPUT, "Ðåãèñòðàöèÿ""{FFFFFF}Âûäèòå âîçðîñò âàøåãî ïåðñàíàæà (îò 18 äî 99):""Äàëåå""Îòìåíà");
             }
             player_info[playerid][age] = strval (inputtext);
             switch(player_info[playerid][gender])
             {
                 case 18..49:
                 {
                     if(player_info[playerid][gender] == 1)
                     {
                        switch(random(4))
                        {
                           case 0: player_info[playerid][skin] = 3;
                           case 1: player_info[playerid][skin] = 4;
                           case 2: player_info[playerid][skin] = 6;
                           case 3: player_info[playerid][skin] = 15;
                        }
                     }
                     if(player_info[playerid][gender] == 2)
                     {
                        switch(random(4))
                        {
                           case 0: player_info[playerid][skin] = 12;
                           case 1: player_info[playerid][skin] = 9;
                           case 2: player_info[playerid][skin] = 31;
                           case 3: player_info[playerid][skin] = 41;
                        }
                     }

                 }
                 case 50..99:
                 {
                     if(player_info[playerid][gender] == 1)
                     {
                        switch(random(4))
                        {
                           case 0: player_info[playerid][skin] = 58;
                           case 1: player_info[playerid][skin] = 68;
                           case 2: player_info[playerid][skin] = 72;
                           case 3: player_info[playerid][skin] = 79;
                        }
                     }
                     if(player_info[playerid][gender] == 2)
                     {
                        switch(random(4))
                        {
                           case 0: player_info[playerid][skin] = 54;
                           case 1: player_info[playerid][skin] = 55;
                           case 2: player_info[playerid][skin] = 53;
                           case 3: player_info[playerid][skin] = 56;
                        }
                     }

                 }
             }
             format(query, sizeof(query), "INSERT INTO `accounts` (`name`, `password`, `gender`, `age`, `skin`) VALUES ('%s', '%s', '%d', '%d', '%d')", player_info[playerid][name], player_info[playerid][pass], player_info[playerid][gender], player_info[playerid][age], player_info[playerid][skin]);
             mysql_query(dbHandle, query);
             mysql_format(dbHandle, query, sizeof(query), "SELECT * FROM `accounts` WHERE `name` = '%s'", player_info[playerid][name]);
             mysql_tquery(dbHandle, query,"CheckAccountFromMysql""i", playerid);
        }
        case DLG_LOGIN:
        {
             if(!response) return Kick(playerid);
             mysql_format(dbHandle, query, sizeof(query), "SELECT * FROM `accounts` WHERE `name` = '%s' AND `password` = '%s'", player_info[playerid][name], inputtext);
             mysql_tquery(dbHandle, query, "UploadPlayerAccout""i", playerid);
        }
    }
    return 1;
}

public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
    return 1;
}

public OnPlayerClickMap(playerid, Float:fX, Float:fY, Float:fZ)
{
    SetPlayerPos(playerid, fX, fY, fZ);
    return 1;
}

forward GetAccountFromMysql(playerid);
public GetAccountFromMysql(playerid)
{
   format(query, sizeof(query),"SELECT * FROM `accounts` WHERE `name` = `%s", player_info[playerid][name]);
   mysql_tquery(dbHandle, query,"CheckAccountFromMysql","i",playerid);
}

forward CheckAccountFromMysql(playerid);
public CheckAccountFromMysql(playerid)
{
  new str[256];
  if(cache_num_rows() == 0)
  {
     format(str, sizeof(str), "{FFFFFF}Äîáðî ïîæàëîâàòü íà íàø ñåðâåð, âàø íèê: %s[%i]\nÄàííûé àêêàóíò íå çàðåãèñòðèðîâàí, äëÿ ðåãèñòðàöèè ââåäèòå ïàðîëü\nâ ïîëå íèæå:\n", player_info[playerid][name], playerid);
     SPD(playerid, DLG_REG, DIALOG_STYLE_INPUT, "Ðåãèñòðàöèÿ", str, "Äàëåå""Îòìåíà");
  }
  else
  {
     format(str, sizeof(str), "{FFFFFF}Äîáðî ïîæàëîâàòü íà íàø ñåðâåð, âàø íèê: %s[%i]\nÄàííûé àêêàóíò çàðåãèñòðèðîâàí, àâòîðèçàöèÿ ââåäèòå ïàðîëü\nâ ïîëå íèæå:\n", player_info[playerid][name], playerid);
     SPD(playerid, DLG_LOGIN, DIALOG_STYLE_PASSWORD, "Àâòîðèçàöèÿ", str, "Äàëåå""Îòìåíà");
  }
}

forward UploadPlayerAccout(playerid);
public UploadPlayerAccout(playerid)
{
   new rows, str[135+3+MAX_PLAYER_NAME];
   cache_get_row_count(rows);
   if(!rows)
   {
       SCM(playerid, COLOR_WHITE, "{FFFFFF}Âû ââåëè íåâåðíûé ïàðîëü îò àêêàóíòà.Ïîïðîáóéòå åù¸ ðàç");
       format(str, sizeof(str), "{FFFFFF}Äîáðî ïîæàëîâàòü íà íàø ñåðâåð, âàø íèê: %s[%i]\nÄàííûé àêêàóíò çàðåãèñòðèðîâàí, àâòîðèçàöèÿ ââåäèòå ïàðîëü\nâ ïîëå íèæå:\n", player_info[playerid][name], playerid);
       return SPD(playerid, DLG_LOGIN, DIALOG_STYLE_PASSWORD, "Àâòîðèçàöèÿ", str, "Äàëåå""Îòìåíà");
   }
   else if(rows)
   {
      cache_get_value_name_int(0"id", player_info[playerid][id]);
      cache_get_value_name_int(0"gender", player_info[playerid][gender]);
      cache_get_value_name_int(0"age", player_info[playerid][age]);
      cache_get_value_name_int(0"skin", player_info[playerid][skin]);
      cache_get_value_name_int(0"level", player_info[playerid][level]);
      SpawnPlayer(playerid);
   }
   return 1;
}

 

Поделиться сообщением


Ссылка на сообщение

3 ответа на этот вопрос

  • 0
Завсегдатый

Проблема в DLG_REG_GENDER, пол перезаписывается. Исправь:

 

case DLG_REG_GENDER:
{
    player_info[playerid][gender] = response ? 1 : 2;
    SPD(playerid, DLG_REG_AGE, DIALOG_STYLE_INPUT, "Регистрация""{FFFFFF}Введите возраст персонажа (от 18 до 99):""Далее""Отмена");
}

 

Перезапусти сервер и проверь.

Поделиться сообщением


Ссылка на сообщение

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • От DonK/Key
      Всем привет, помогите кто разбирается, так как я можно сказать начинающий сделать свой КРМП, буду благодарен. Напишите либо тут либо @evreI_sigma (Мой Telegram)