Vlad7060908
Умник
Итак, представляю свой урок. Когда я только начинал учить мускул, я начал писать с нуля мод на мускуле, заодно и обучаясь. Так вот сделал регистрацию, потом забросил, так как не было времени, а сейчас вот уже другой мод пишу. И вот вчера нашел этот pwn файл, где и есть эта самая регистрация. Вот решил выложить, а то ну просто очень многим новичкам хочется с нуля напистаь мод - ну чтож, руки в ноги и вперед, толчок я вам дам.
Итак, приступим.
Откпываем new.pwn и пишем:
это мы сделали инклуды, теперь создадим enum
После инклудов пишем:
Те кто разбирается хоть немного в павно - поняли, для чего это.
Далее создадим переменные, которые используются в регистрации:
Для этого после enum пишем:
Далее небольшая информация о моде(можете не писать))))
Ну а далее уже пойдут паблики и стокк.
Создаем новый паблик:
Далее еще несколько пабликов:
Мы создали паблики, которые отвечают за зашход и выход игрока на сервер и с сервера.
Далее снова паблики:
Теперь сделаем несколько команд, правда я хз зачем я их сразу делал:
Снова паблики:
А теперь создадим сами диалоги:
Теперь несколько стокк:
И снова паблик:
Вот и все.
На этом я в прошлый раз закончил свйо мод. Сейчас конечно продвинулся гораздо дальше)). Ставим плюсики и оставляем комментарии.
Если есть варнинги или ошибки, то конечноже пишем сюда. Постараюсь помочь.
Итак, приступим.
Откпываем new.pwn и пишем:
PHP:
#include <a_samp>
#include <C-MySQL>
#include <md5>
После инклудов пишем:
PHP:
enum pInfo
{
pPassword[256],
pAdmin,
pLevel,
pMoney,
pBank,
pSkin,
pLeader,
pMember,
pHouse
};
Далее создадим переменные, которые используются в регистрации:
Для этого после enum пишем:
PHP:
new PlayerInfo[MAX_PLAYERS][pInfo];
new pLogedIn[MAX_PLAYERS];
PHP:
main()
{
print("\n----------------------------------");
print(" New Mysql Roleplay Mode by Vlad7060908");
print("----------------------------------\n");
}
Создаем новый паблик:
PHP:
public OnGameModeInit()
{
mysql_init();
if(mysql_connect("localhost", "root", "vertrigo", "samp"))
{
print("Connection established");
}
else
{
print("Connection not established");
}
SetGameModeText("New Mysql Roleplay");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}
PHP:
public OnGameModeExit()
{
mysql_close();
return 1;
}
public OnPlayerConnect(playerid)
{
new pname[256];
GetPlayerName(playerid, pname, sizeof(pname));
PlayerInfo[playerid][pAdmin] = 0;
PlayerInfo[playerid][pMoney] = 0;
PlayerInfo[playerid][pBank] = 0;
PlayerInfo[playerid][pLevel] = 0;
PlayerInfo[playerid][pSkin] = 0;
PlayerInfo[playerid][pLeader] = 0;
PlayerInfo[playerid][pMember] = 0;
PlayerInfo[playerid][pHouse] = 0;
if(CMySQL_Exists(pname))
{
ShowPlayerDialog(playerid, 0, DIALOG_STYLE_INPUT,
"Вход на сервер",
"Здравствуйте, пожалуйста ведите ваш пароль",
"Войти", "Отмена");
}
else
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT,
"Регистрация на сервере",
"Здравствуйте, пожалуйста ведите ваш пароль для регистрации",
"Далее", "Отмена");
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
OnPlayerSave(playerid);
return 1;
}
Далее снова паблики:
PHP:
public OnPlayerSpawn(playerid)
{
if(PlayerInfo[playerid][pLeader] == 0 && PlayerInfo[playerid][pMember] == 0)
{
if(PlayerInfo[playerid][pHouse] != 9999)
{
}
else
{
SetSpawnInfo(playerid, 0, PlayerInfo[playerid][pSkin], 1154.3356,-1767.8496,16.5938, 0.0,0,0,0,0,0,0);
SpawnPlayer(playerid);
}
}
SetCameraBehindPlayer(playerid);
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
OnPlayerSave(playerid);
return 1;
}
public OnPlayerText(playerid, text[])
{
return 1;
}
PHP:
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/givememoney", cmdtext, true, 10) == 0)
{
GivePlayerMoney(playerid, 1000);
return 1;
}
if (strcmp("/kill", cmdtext, true, 5) == 0)
{
SetPlayerHealth(playerid, 0);
return 1;
}
return 0;
}
PHP:
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
return 1;
}
public OnPlayerRequestSpawn(playerid)
{
if(pLogedIn[playerid] == 0) return 0;
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
return 1;
}
PHP:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 0)
{
if(response)
{
if(strlen(inputtext) != 0)
{
new pname[256];
GetPlayerName(playerid, pname, sizeof(pname));
CMySQL_Get(pname, "pass", PlayerInfo[playerid][pPassword]);
if(!strcmp(MD5_Hash(inputtext),PlayerInfo[playerid][pPassword],true))
{
OnPlayerLogin(playerid);
}
else
{
ShowPlayerDialog(playerid, 0, DIALOG_STYLE_INPUT,
"Вход на сервер",
"Здравствуйте, пожалуйста ведите ваш пароль",
"Войти", "Отмена");
}
}
else
{
ShowPlayerDialog(playerid, 0, DIALOG_STYLE_INPUT,
"Вход на сервер",
"Здравствуйте, пожалуйста ведите ваш пароль",
"Войти", "Отмена");
}
}
else
{
Kick(playerid);
}
}
if(dialogid == 1)
{
if(response)
{
if(strlen(inputtext) != 0)
{
OnPlayerRegister(playerid,inputtext);
}
else
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT,
"Регистрация на сервере",
"Здравствуйте, пожалуйста ведите ваш пароль для регистрации",
"Далее", "Отмена");
}
}
else
{
Kick(playerid);
}
}
return 1;
}
PHP:
stock OnPlayerLogin(playerid)
{
new pname[256];
GetPlayerName(playerid, pname, sizeof(pname));
PlayerInfo[playerid][pLevel] = CMySQL_Int(pname, "level");
PlayerInfo[playerid][pMoney] = CMySQL_Int(pname, "money");
PlayerInfo[playerid][pAdmin] = CMySQL_Int(pname, "admin");
PlayerInfo[playerid][pBank] = CMySQL_Int(pname, "bank");
PlayerInfo[playerid][pSkin] = CMySQL_Int(pname, "skin");
PlayerInfo[playerid][pLeader] = CMySQL_Int(pname, "leader");
PlayerInfo[playerid][pMember] = CMySQL_Int(pname, "member");
PlayerInfo[playerid][pHouse] = CMySQL_Int(pname, "house");
SetPlayerScore(playerid, PlayerInfo[playerid][pLevel]);
GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
pLogedIn[playerid] = 1;
SetSpawnInfo(playerid, 0, PlayerInfo[playerid][pSkin], 1154.3356,-1767.8496,16.5938, 0.0,0,0,0,0,0,0);
SpawnPlayer(playerid);
}
stock OnPlayerRegister(playerid, pass[])
{
new pname[256];
GetPlayerName(playerid, pname, sizeof(pname));
CMySQL_Create(pname, pass);
CMySQL_SetInt(pname, "bank", 1000);
CMySQL_SetInt(pname, "money", 5000);
CMySQL_SetInt(pname, "level", 1);
CMySQL_SetInt(pname, "admin", 0);
CMySQL_SetInt(pname, "skin", 137);
CMySQL_SetInt(pname, "leader", 0);
CMySQL_SetInt(pname, "member", 0);
CMySQL_SetInt(pname, "house", 9999);
ShowPlayerDialog(playerid, 0, DIALOG_STYLE_INPUT,
"Вход на сервер",
"Вы успешно зарегистрировались\nПожалуйста ведите ваш пароль",
"Войти", "Отмена");
}
stock OnPlayerSave(playerid)
{
new pname[256];
GetPlayerName(playerid, pname, sizeof(pname));
PlayerInfo[playerid][pMoney] = GetPlayerMoney(playerid);
PlayerInfo[playerid][pLevel] = GetPlayerScore(playerid);
CMySQL_SetInt(pname, "bank", PlayerInfo[playerid][pBank]);
CMySQL_SetInt(pname, "money", PlayerInfo[playerid][pMoney]);
CMySQL_SetInt(pname, "level", PlayerInfo[playerid][pLevel]);
CMySQL_SetInt(pname, "admin", PlayerInfo[playerid][pAdmin]);
CMySQL_SetInt(pname, "skin", PlayerInfo[playerid][pSkin]);
CMySQL_SetInt(pname, "leader", PlayerInfo[playerid][pLeader]);
CMySQL_SetInt(pname, "member", PlayerInfo[playerid][pMember]);
CMySQL_SetInt(pname, "house", PlayerInfo[playerid][pHouse]);
}
PHP:
public OnPlayerRequestClass(playerid, classid)
{
OnPlayerSpawn(playerid);
return 1;
}
На этом я в прошлый раз закончил свйо мод. Сейчас конечно продвинулся гораздо дальше)). Ставим плюсики и оставляем комментарии.
Если есть варнинги или ошибки, то конечноже пишем сюда. Постараюсь помочь.
Последнее редактирование:
