Jimy
Новичок
Всем привет. При компиляции ошибок не произошло. Мюсикл лог ошибок не выдал. Единственное что думаю может ошибка в мюсикл, а именно я писал пример с р8, а сам имею Р39-2. Вот данный код:
main(){}
Если увидели ошибки из-за которых не появляются вообще диалоговые окна. Напишите пожалуйста:3. И желательно указать в каком моменте ошибка(и). Верный ответ - "+".
main(){}
PHP:
main(){}
//=======================[Инклуды]==========================
#include <a_samp>
#include <a_mysql>
//=======================[Дефайны]==========================
#define SPD ShowPlayerDialog
#define DSI DIALOG_STYLE_INPUT
#define DSM DIALOG_STYLE_MSGBOX
#define DSL DIALOG_STYLE_LIST
#define SCM SendClientMessage
#define DSP DIALOG_STYLE_PASSWORD
//=======================[Цвета]============================
#define COLOR_GREY 0xAFAFAFAA
#define COLOR_GREEN 0x33AA33AA
//=======================[MySQL]============================
#define mysql_host "localhost"
#define mysql_user "root"
#define mysql_bd "стоял мой"
#define mysql_pass ""
#define TABLE_ACCOUNT "accounts"
//=======================[Переменные]=======================
new connectionHandl;
new query[2048];
new ClothesRound[MAX_PLAYERS];
new Text:ButtonLeft;
new Text:ButtonRight;
new Text:ButtonSelect;
new SelectCharRegID[MAX_PLAYERS];
new ChosenSkin[MAX_PLAYERS];
new totalstring[1024];
new PlayerLogged[MAX_PLAYERS];
//=======================[pInfo]============================
enum pInfo
{
pID,
pPassword[16],
pMail[64],
pIP[20],
pRegData[16],
pSex,
pModel,
pLevel,
pReferal[MAX_PLAYER_NAME],
pSendername[MAX_PLAYER_NAME]
};
new Player[MAX_PLAYERS][pInfo];
//=======================[Паблики]==========================
public OnGameModeInit()
{
connectionHandl = mysql_connect(mysql_host, mysql_user, mysql_bd, mysql_pass);
mysql_log();
SetGameModeText("Role-Play");
LoadTextDraws();
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}
public OnGameModeExit()
{
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}
public OnPlayerConnect(playerid)
{
GetPlayerName(playerid, Player[playerid][pSendername], MAX_PLAYER_NAME);
mysql_format(connectionHandl,query,128,"SELECT `Name` FROM "TABLE_ACCOUNT" WHERE `Name` = '%e'", Player[playerid][pSendername]), mysql_function_query(connectionHandl, query, true, "OnPlayerRegCheck", "i", playerid);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
return 1;
}
public OnPlayerSpawn(playerid)
{
if(ClothesRound[playerid] == 1)
{
SetPlayerVirtualWorld(playerid, playerid);
SetPlayerInterior(playerid, 0);
SetPlayerPos(playerid, 1526.03,-1346.4008,330.0234);
SetPlayerFacingAngle(playerid,63.8611);
SetPlayerCameraPos(playerid,1520.0631,-1343.1326,330.6207);
SetPlayerCameraLookAt(playerid,1526.0348,-1346.2710,330.0553);
TogglePlayerControllable(playerid, 0);
TextDrawShowForPlayer(playerid,ButtonLeft);
TextDrawShowForPlayer(playerid,ButtonRight);
TextDrawShowForPlayer(playerid,ButtonSelect);
SelectTextDraw(playerid, 0xFF4040AA);
if(Player[playerid][pSex] == 1) SetPlayerSkin(playerid, 78), SelectCharRegID[playerid] = 1, ChosenSkin[playerid] = 78;
else SetPlayerSkin(playerid, 12), SelectCharRegID[playerid] = 1, ChosenSkin[playerid] = 12;
}
if(Player[playerid][pLevel] >= 1 && Player[playerid][pLevel] < 3)
{
SetPlayerPos(playerid,-1967.6738,115.7038,27.6875);
SetPlayerFacingAngle(playerid, 101.2675);
SetPlayerInterior(playerid, 0);
SetPlayerVirtualWorld(playerid, 0);
return 1;
}
if(Player[playerid][pLevel] >=3 && Player[playerid][pLevel] < 7)
{
SetPlayerPos(playerid,-1967.6738,115.7038,27.6875);
SetPlayerFacingAngle(playerid, 357.1);
SetPlayerInterior(playerid, 0);
SetPlayerVirtualWorld(playerid, 0);
return 1;
}
if(Player[playerid][pLevel] >=7 && Player[playerid][pLevel] < 100)
{
SetPlayerPos(playerid,2847.5063,1288.6849,11.3906);
SetPlayerFacingAngle(playerid, 355.6);
SetPlayerInterior(playerid, 0);
SetPlayerVirtualWorld(playerid, 0);
return 1;
}
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case 1:
{
if(!response) return KickD(playerid); SCM(playerid, 0xFF5454FF, "Вы вышли. Напишите (/q)");
if(!strlen(inputtext) || strlen(inputtext) < 3 || strlen(inputtext) > 16 || IsTextRussian(inputtext))
{
return SPD(playerid, 1, DSI, "{6495ED}Регистрация", "Зарегистрируйтесь пожалуйста", "Далее", "Отклонить");
}
else
{
strmid(Player[playerid][pPassword], inputtext, 0, strlen(inputtext), 16);
SPD(playerid, 3, 1, "{6495ED}Ввод Email адреса", "{FFFAFA}Введите адрес вашей электронной почты\nИспользуя его вы сможете восстановить свой аккаунт", "Далее", "Отклонить");
return 1;
}
}
case 2:
{
if(!response) return KickD(playerid); SCM(playerid, 0xFF5454FF, "Вы вышли. Напишите (/q)");
{
for(new i = strlen(inputtext); i != 0; --i)
switch(inputtext[i])
{
case 'А'..'Я', 'а'..'я', ' ':
return SPD(playerid, 2, DSM, "Смените раскладку", "Смените раскладку клавиатуры с русского на английский", "Провторить", "");
}
if(!strlen(inputtext))
{
format(totalstring, 256, "Добро пожаловать на сервер Role-Play\nВы зарегистрированы\n\nЛогин: %s\nВведите пароль:", Player[playerid][pSendername]);
SPD(playerid, 2, DSP, "{6495ED}Авторизация", totalstring, "Принять", "Отмена");
return 1;
}
else
{
OnPlayerLogin(playerid, inputtext);
return 1;
}
}
}
case 3:
{
if(!response) return KickD(playerid); SCM(playerid, 0xFF5454FF, "Вы вышли. Напишите (/q)");
if(strlen(inputtext) < 1 || strlen(inputtext) > 36 || IsTextRussian(inputtext)) return SPD(playerid, 3, 1, "{6495ED}ВВод Email адреса", "{FFFAFA}Введите адрес вашей электроной почты\nИспользуя его, вы сможете восстановить доступ к аккаунту", "Далее", "Отмена");
if(strfind(inputtext, "@", true) == -1 || strfind(inputtext, ".", true) == -1 || strlen(inputtext) < 5)
{
SCM(playerid, COLOR_GREY, "[Ошибка] Попробуйте ещё раз");
return SPD(playerid, 3, 1, "{6495ED}Ввод Email адреса", "{FFFAFA}Введите адрес вашей электроной почты\nИспользуя его вы сможете восстановить доступ к аккаунту\nВ случае взлома или если будете забывать пароль", "Далее", "Отмена");
}
strmid(Player[playerid][pMail], inputtext, 0, strlen(inputtext), 64);
SPD(playerid, 4, 1, "{6495ED}Ник пригласившего игрока", "Если вы узнали о нашем сервере от своего друга\nКоторый тут играет, укажите его ник в поле ниже\n\n{ADFF2F}При достижении вами 4-го уровня он получит вознаграждение", "Далее", "Отмена");
return 1;
}
case 4:
{
if(!response) return SPD(playerid, 6, DSM, "{FF9900}Правила сервера", "В процессе", "Далее", "Отмена");
if(!strlen(inputtext)) return SPD(playerid, 4, 1, "{6495ED}Ник пригласившего игрока", "Если вы узнали о нашем сервере от своего друга\nКоторый тут играет, укажите его ник в поле ниже\n\n{ADFF2F}При достижении вами 4-го уровня он получит вознаграждение", "Далее", "Отмена");
strmid(Player[playerid][pReferal], inputtext, 0, strlen(inputtext), MAX_PLAYER_NAME);
format(totalstring, 64, "Вас пригласил %s", inputtext);
SCM(playerid, COLOR_GREEN, totalstring);
SPD(playerid, 6, DSM, "{FF9900}Правила сервера", "В процессе", "Далее", "Отмена");
return 1;
}
case 5:
{
new sex[20];
switch(response)
{
case 1: { sex = "Мужской"; Player[playerid][pSex] = 1; }
default: { sex = "Женский"; Player[playerid][pSex] = 2; }
}
ClothesRound[playerid] = 1;
PlayerLogged[playerid] = true;
SCM(playerid, -1, "Выберите скин");
SetSpawnInfo(playerid, 255, Player[playerid][pModel], 0, 0, 0, 1.0, -1, -1, -1, -1, -1, -1);
SpawnPlayer(playerid);
return 1;
}
case 6:
{
if(!response) return KickD(playerid); SCM(playerid, 0xFF5454FF, "Вы вышли. Напишите (/q)");
SPD(playerid, 5, 0, "{6495ED}Пол", "{FFFFFF}Выберите пол вашего персонажа", "Мужской", "Женский");
SCM(playerid,-1, "Пожалуйста, выберите пол вашего персонажа");
return 1;
}
}
return 1;
}
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}
public OnPlayerClickTextDraw(playerid, Text:clickedid)
{
if(ClothesRound[playerid] == 1)
{
if(clickedid == ButtonRight)
{
if(Player[playerid][pSex] == 1)
{
switch(SelectCharRegID[playerid])
{
case 1: SetPlayerSkin(playerid, 79), SelectCharRegID[playerid] = 2, ChosenSkin[playerid] = 79;
case 2: SetPlayerSkin(playerid, 135), SelectCharRegID[playerid] = 3, ChosenSkin[playerid] = 135;
case 3: SetPlayerSkin(playerid, 230), SelectCharRegID[playerid] = 4, ChosenSkin[playerid] = 230;
case 4: SetPlayerSkin(playerid, 137), SelectCharRegID[playerid] = 5, ChosenSkin[playerid] = 137;
case 5: SetPlayerSkin(playerid, 200), SelectCharRegID[playerid] = 6, ChosenSkin[playerid] = 200;
case 6: SetPlayerSkin(playerid, 78), SelectCharRegID[playerid] = 1, ChosenSkin[playerid] = 78;
}
}
else
{
switch(SelectCharRegID[playerid])
{
case 1: SetPlayerSkin(playerid, 13), SelectCharRegID[playerid] = 2, ChosenSkin[playerid] = 13;
case 2: SetPlayerSkin(playerid, 55), SelectCharRegID[playerid] = 3, ChosenSkin[playerid] = 55;
case 3: SetPlayerSkin(playerid, 90), SelectCharRegID[playerid] = 4, ChosenSkin[playerid] = 90;
case 4: SetPlayerSkin(playerid, 193), SelectCharRegID[playerid] = 5, ChosenSkin[playerid] = 193;
case 5: SetPlayerSkin(playerid, 12), SelectCharRegID[playerid] = 1, ChosenSkin[playerid] = 12;
}
}
}
else if(clickedid == ButtonLeft)
{
if(Player[playerid][pSex] == 1)
{
switch(SelectCharRegID[playerid])
{
case 1: SetPlayerSkin(playerid, 200), SelectCharRegID[playerid] = 6, ChosenSkin[playerid] = 200;
case 6: SetPlayerSkin(playerid, 137), SelectCharRegID[playerid] = 5, ChosenSkin[playerid] = 137;
case 5: SetPlayerSkin(playerid, 230), SelectCharRegID[playerid] = 4, ChosenSkin[playerid] = 230;
case 4: SetPlayerSkin(playerid, 135), SelectCharRegID[playerid] = 3, ChosenSkin[playerid] = 135;
case 3: SetPlayerSkin(playerid, 79), SelectCharRegID[playerid] = 2, ChosenSkin[playerid] = 79;
case 2: SetPlayerSkin(playerid, 78), SelectCharRegID[playerid] = 2, ChosenSkin[playerid] = 78;
}
}
else
{
switch(SelectCharRegID[playerid])
{
case 1: SetPlayerSkin(playerid, 193), SelectCharRegID[playerid] = 5, ChosenSkin[playerid] = 193;
case 5: SetPlayerSkin(playerid, 90), SelectCharRegID[playerid] = 4, ChosenSkin[playerid] = 90;
case 4: SetPlayerSkin(playerid, 55), SelectCharRegID[playerid] = 3, ChosenSkin[playerid] = 55;
case 3: SetPlayerSkin(playerid, 13), SelectCharRegID[playerid] = 2, ChosenSkin[playerid] = 13;
case 2: SetPlayerSkin(playerid, 12), SelectCharRegID[playerid] = 1, ChosenSkin[playerid] = 12;
}
}
}
else if(clickedid == ButtonSelect)
{
Player[playerid][pModel] = ChosenSkin[playerid];
SelectCharRegID[playerid] = 0;
ClothesRound[playerid] = 0;
TogglePlayerControllable(playerid, 1);
OnPlayerRegister(playerid, Player[playerid][pPassword]);
TextDrawHideForPlayer(playerid, ButtonLeft);
TextDrawHideForPlayer(playerid, ButtonRight);
TextDrawHideForPlayer(playerid, ButtonSelect);
CancelSelectTextDraw(playerid);
SetPlayerVirtualWorld(playerid, 0);
SCM(playerid, -1, "Регистрация прошла успешно");
SetSpawnInfo(playerid, 255, Player[playerid][pModel], 0, 0, 0, 1.0, -1, -1, -1, -1, -1, -1);
SpawnPlayer(playerid);
Player[playerid][pLevel] = 1;
SetPlayerPos(playerid,-1967.6738,115.7038,27.6875);
SetPlayerFacingAngle(playerid, 101.2675);
SetPlayerInterior(playerid, 0);
SetPlayerScore(playerid, 1);
}
if(clickedid == Text:INVALID_TEXT_DRAW)
{
if(ClothesRound[playerid] == 1)
{
TogglePlayerControllable(playerid, 0);
TextDrawShowForPlayer(playerid, ButtonLeft);
TextDrawShowForPlayer(playerid, ButtonRight);
TextDrawHideForPlayer(playerid, ButtonSelect);
SelectTextDraw(playerid, 0xFF4040AA);
if(Player[playerid][pSex] == 1) SetPlayerSkin(playerid, 78), SelectCharRegID[playerid] = 1, ChosenSkin[playerid] = 78;
else SetPlayerSkin(playerid, 12), SelectCharRegID[playerid] = 1, ChosenSkin[playerid] = 12;
}
}
}
return 1;
}
forward KickPublic(playerid);
public KickPublic(playerid) { Kick(playerid); }
//======================[Стоки]==================
stock KickD(playerid)
{
SetTimerEx("KickPublic", 1000, false, "d", playerid);
return 1;
}
stock IsTextRussian(text[])
{
if(strfind(text, "а", true) != -1 ||
strfind(text, "б", true) != -1 ||
strfind(text, "в", true) != -1 ||
strfind(text, "г", true) != -1 ||
strfind(text, "д", true) != -1 ||
strfind(text, "е", true) != -1 ||
strfind(text, "ё", true) != -1 ||
strfind(text, "ж", true) != -1 ||
strfind(text, "з", true) != -1 ||
strfind(text, "и", true) != -1 ||
strfind(text, "й", true) != -1 ||
strfind(text, "к", true) != -1 ||
strfind(text, "л", true) != -1 ||
strfind(text, "м", true) != -1 ||
strfind(text, "н", true) != -1 ||
strfind(text, "о", true) != -1 ||
strfind(text, "п", true) != -1 ||
strfind(text, "р", true) != -1 ||
strfind(text, "с", true) != -1 ||
strfind(text, "т", true) != -1 ||
strfind(text, "у", true) != -1 ||
strfind(text, "ф", true) != -1 ||
strfind(text, "х", true) != -1 ||
strfind(text, "ц", true) != -1 ||
strfind(text, "ч", true) != -1 ||
strfind(text, "ш", true) != -1 ||
strfind(text, "щ", true) != -1 ||
strfind(text, "ъ", true) != -1 ||
strfind(text, "ы", true) != -1 ||
strfind(text, "ь", true) != -1 ||
strfind(text, "э", true) != -1 ||
strfind(text, "ю", true) != -1 ||
strfind(text, "я", true) != -1) return 1;
return 0;
}
stock OnPlayerLogin(playerid, password[])
{
mysql_format(connectionHandl,query,128,"SELECT * FROM "TABLE_ACCOUNT" WHERE `Name` = '%e' AND `password` = '%e'", Player[playerid][pSendername], password);
mysql_function_query(connectionHandl, query, true, "LoginCallback", "is", playerid, password);
return 1;
}
forward LoginCallback(playerid, password[]);
public LoginCallback(playerid, password[])
{
new rows,fields,maximum[128];
cache_get_data(rows, fields);
if(!rows)
{
if(GetPVarInt(playerid, "PasswordNot") == 2) return KickD(playerid); SCM(playerid, 0xFF5454FF, "Вы ввели 3 раза неверный пароль, поэтому вы были кикнуты сервером");
SetPVarInt(playerid, "PasswordNot", GetPVarInt(playerid, "PasswordNot")+1);
format(maximum,128, "Ваш ник зарегистрирован\n\nЛогин: %s\nВведите пароль:\n\n{FF0000}Неверный пароль. Осталось %d попытки");
SPD(playerid, 2, DSP, "{6495ED}Авторизация", maximum, "Вход", "Отмена");
return 1;
}
Player[playerid][pID] = cache_get_field_content_int(0,"id");
cache_get_field_content(0, "password", Player[playerid][pPassword], connectionHandl,16);
cache_get_field_content(0, "ip", Player[playerid][pIP], connectionHandl,16);
cache_get_field_content(0, "mail", Player[playerid][pMail], connectionHandl,16);
cache_get_field_content(0, "datareg", Player[playerid][pRegData], connectionHandl,16);
Player[playerid][pSex] = cache_get_field_content_int(0,"sex");
Player[playerid][pModel] = cache_get_field_content_int(0,"model");
Player[playerid][pLevel] = cache_get_field_content_int(0,"level");
SetSpawnInfo(playerid, 255, Player[playerid][pModel], 0, 0, 0, 1.0, -1, -1, -1, -1, -1, -1);
PlayerLogged[playerid] = true;
SetPlayerScore(playerid, Player[playerid][pLevel]);
SpawnPlayer(playerid);
return 1;
}
stock OnPlayerRegister(playerid, password[])
{
new ip[32];
new strdate[24];
GetPlayerIp(playerid, ip, 32);
new year,month,day;
getdate(year, month, day);
format(strdate, sizeof(strdate), "%d.%d.%d", day,month,year);
mysql_format(connectionHandl,query,256, "INSERT INTO "TABLE_ACCOUNT" (Name, password, ip, datareg, sex, model, mail, referal) VALUES ('%e', '%e', '%e', '%e', '%i', '%i', '%e', '%e')"
, Player[playerid][pSendername], password, ip, strdate,Player[playerid][pSex], Player[playerid][pModel], Player[playerid][pMail], Player[playerid][pMail], Player[playerid][pReferal]);
return 1;
}
stock LoadTextDraws()
{
ButtonLeft = TextDrawCreate(50.0, 200.0, "LD_BEAT:left");
TextDrawFont(ButtonLeft, 4);
TextDrawTextSize(ButtonLeft, 50, 25);
TextDrawSetSelectable(ButtonLeft, 1);
ButtonRight = TextDrawCreate(530.0, 200.0, "LD_BEAT:right");
TextDrawFont(ButtonRight, 4);
TextDrawTextSize(ButtonRight, 50, 25);
TextDrawSetSelectable(ButtonRight, 1);
ButtonSelect = TextDrawCreate(382.000000, 371.000000, "Select");
TextDrawTextSize(ButtonSelect, 482.0, 22.0);
TextDrawBackgroundColor(ButtonSelect, 255);
TextDrawFont(ButtonSelect, 3);
TextDrawLetterSize(ButtonSelect, 0.899999, 2.400000);
TextDrawColor(ButtonSelect, 869072895);
TextDrawSetOutline(ButtonSelect, 0);
TextDrawSetProportional(ButtonSelect, 1);
TextDrawSetShadow(ButtonSelect, 1);
TextDrawSetSelectable(ButtonSelect, 1);
}
stock SaveAcc()
{
for(new i; i < MAX_PLAYERS; i++)
{
if(!PlayerLogged[i]) continue;
SavePlayer(i);
}
return 1;
}
stock SavePlayer(playerid)
{
if(!PlayerLogged[playerid]) return 1;
mysql_format(connectionHandl,query,512,"UPDATE `"TABLE_ACCOUNT"` SET `level` = '%i', `sex` = '%i', `model` = '%i'",Player[playerid][pLevel], Player[playerid][pSex], Player[playerid][pModel]);
mysql_function_query(connectionHandl, query, false,"","");
return 1;
}
