Artemiiik
Null
Я решил создать админ пароль и при компилировании ошибка:
Мой мод:
Паблик/строка с ошибкой:
Помогите исправить.
Код:
C:\Users\Артем\Desktop\Разработка мода\gamemodes\new.pwn(348) : warning 213: tag mismatch
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
Код:
main(){}
//============================= Инклуды ========================================
#include <a_samp>
#include <a_mysql>
//============================= Данные MYSQL ===================================
#define mysql_host "localhost"
#define mysql_user "root"
#define mysql_base "newservsamp"
#define mysql_pass ""
//============================= Прочее =========================================
#define serverNmae "MySQLR34" // название
#define BASE_USERS "users" // название базы данных
#define isValidPass 30 // валидность пароля
#define getpl(%0) plname[%0]
#define send(%0,%1) SendClientMessage(%0, -1, %1)
//============================= PVars ==========================================
#define SPVI SetPVarInt
#define SPVS SetPVarString
#define SPVF SetPVarFloat
#define GPVI GetPVarInt
#define GPVS GetPVarString
#define GPVF GetPVarFloat
//============================= Стили диалогов =================================
#define ds_msg 0
#define ds_input 1
#define ds_list 2
#define ds_pass 3
#define COLOR_GREEN 0x9EC73DAA
#define COLOR_RED 0xAA3333AA
//============================= Переменные =====================================
new plname[MAX_PLAYERS][MAX_PLAYER_NAME]; // записываем ник игрока при коннекте
//============================= Enum's =========================================
enum plInfo
{
ORM:ORMID,
plID, // ид аккаунта
name[MAX_PLAYER_NAME], // ник игрока
pass[isValidPass], // пароль игрока
level, // скин игрока
alevel,// админ уровень
akey,//админ пароль
}
new Pi[MAX_PLAYERS][plInfo];
//============================= Паблики ========================================
public OnGameModeInit()
{
/* MySQL R8 */
mysql_connect(mysql_host, mysql_user, mysql_base, mysql_pass);
mysql_log(LOG_DEBUG);
/* MySQL R8 */
SetGameModeText("MySQL R8 ");
AddPlayerClass(0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 0, 0);
return 1;
}
public OnGameModeExit()
{
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerVirtualWorld(playerid, playerid), SetPlayerInterior(playerid, 0);
SetPlayerCameraPos(playerid, 1925.9149,-841.7464,150.9362);
SetPlayerCameraLookAt(playerid, 1595.1147,-1173.6073,167.9245);
SetPlayerPos(playerid, 1684.9298,-1216.7500,167.5547);
SetPlayerFacingAngle(playerid, 266.1046);
for(new i = 0; i < 21; i++) send(playerid, "");
return 1;
}
public OnPlayerConnect(playerid)
{
GetPlayerName(playerid, plname[playerid], MAX_PLAYER_NAME);
for(new plInfo:e; e < plInfo; ++e) Pi[playerid][e] = 0; // обнуляем числа при коннекте
GetPlayerName(playerid, Pi[playerid][name], MAX_PLAYER_NAME);
new ORM:ormid = Pi[playerid][ORMID] = orm_create(BASE_USERS);
orm_addvar_int(ormid, Pi[playerid][plID], "id");
orm_addvar_string(ormid, Pi[playerid][name], MAX_PLAYER_NAME+1, "name");
orm_addvar_string(ormid, Pi[playerid][pass], isValidPass, "pass");
orm_addvar_int(ormid, Pi[playerid][level], "level");
orm_addvar_int(ormid, Pi[playerid][alevel], "alevel");
orm_addvar_int(ormid, Pi[playerid][akey], "akey");
orm_setkey(ormid, "name"), orm_select(ormid, "onPlayerLoadUsers", "d", playerid); // загружаем все параметры с бд
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
if(GPVI(playerid, "isPlAutothed")) // если игрок авторизирован
{
orm_update(Pi[playerid][ORMID]); // сохраняет все параметры игрока при дисконнекте
for(new plInfo:e; e < plInfo; ++e) Pi[playerid][e] = 0; // обнуляем числа при дисконекте
orm_destroy(Pi[playerid][ORMID]);
}
return 1;
}
public OnPlayerSpawn(playerid)
{
new str[50];
if(!GPVI(playerid, "isPlAutothed")) return 1;
SetPlayerScore(playerid, Pi[playerid][level]);
SetPlayerSkin(playerid, 3), SetPlayerColor(playerid, -1);
SetPlayerPos(playerid, 1639.0121,-2239.9082,13.4998), SetPlayerFacingAngle(playerid, 129.8660);
SetPlayerInterior(playerid, 0), SetPlayerVirtualWorld(playerid, 0);
format(str, 50, "{3fda07}~ Добро пожаловать в наш штат.", getpl(playerid)), send(playerid, str);
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
return 1;
}
public OnVehicleSpawn(vehicleid)
{
return 1;
}
public OnVehicleDeath(vehicleid, killerid)
{
return 1;
}
public OnPlayerText(playerid, text[])
{
if(!GPVI(playerid, "isPlAutothed")) { send(playerid, "{ff6347}** Вы не авторизированы на сервере."); return 0; }
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/mycommand", cmdtext, true, 10) == 0)
{
return 1;
}
if(strcmp(cmdtext, "/mm", true) == 0)
{
ShowPlayerDialog(playerid,14,DIALOG_STYLE_LIST,"Меню сервера.","Моя статистика.\nМои комманды.\nАдминистрация.\nПравила сервера.\nRole Play термины.\nДонат(/donate).","Далее.","Выход.");
return 1;
}
if(strcmp(cmdtext, "/alogin", true) == 0)
{
if(Pi[playerid][alevel] < 1) return SendClientMessage(playerid, COLOR_RED, "Вы не администратор.");
if(!GPVI(playerid, "isPlalogged"))
{
ShowPlayerDialog(playerid,18,DIALOG_STYLE_INPUT,"Админ. авторизация.","Введите ваш админ. код.","Ввод.","Выход.");
}
return 1;
}
return 0;
}
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)
{
if(!GPVI(playerid, "isPlAutothed")) return 1;
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[])
{
switch(dialogid)
{
case 1:
{
if(!response) return Kick(playerid);
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 1, ds_input, "[ Авторизация игрового аккаунта ] ", " {ffffff}Добро пожаловать на сервер "serverNmae"\n{3fda07}Аккаунт с вашин ником уже зарегистрирован!", "Далее", "Закрыть"); // ERROR_OK Аккаунт зарегистрирован
if(!strcmp(inputtext, Pi[playerid][pass], false, isValidPass)) // спавним игрока при корректном вводе пароля
{
for(new i = 0; i < 40; i++) send(playerid, "");
SPVI(playerid, "isPlAutothed", true), SpawnPlayer(playerid);
}
else return ShowPlayerDialog(playerid, 1, ds_input, "[ Авторизация игрового аккаунта ] ", " {ffffff}Добро пожаловать на сервер "serverNmae"\n{3fda07}Аккаунт с вашин ником уже зарегистрирован!", "Далее", "Закрыть"); // ERROR_OK Аккаунт зарегистрирован
return 1;
}
case 2:
{
if(!response) return Kick(playerid);
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 2, ds_input, "[ Регистрация игрового аккаунта ]", " {ffffff}Добро пожаловать на сервер "serverNmae"\n{ff6347}Аккаунт с вашим ником не зарегистрирован, \n нажмите {3fda07}Далее {ff6347}чтобы продолжить.\n{ffffff}Введите пароль(от 1 до 30):", "Регистр.", "Закрыть"); // ERROR_NO_DATA Аккаунт в базе не найден
onPlayerRegister(playerid, inputtext);
return 1;
}
}
if(dialogid == 14 && response)
{
switch(listitem)
{
case 0:
{
SendClientMessage(playerid, COLOR_GREEN, "Временно не доступно.");
}
case 1:
{
SendClientMessage(playerid, COLOR_GREEN, "Временно не доступно.");
}
case 2:
{
SendClientMessage(playerid, COLOR_GREEN, "Временно не доступно.");
}
case 3:
{
SendClientMessage(playerid, COLOR_GREEN, "Временно не доступно.");
}
case 4:
{
SendClientMessage(playerid, COLOR_GREEN, "Временно не доступно.");
}
case 5:
{
SendClientMessage(playerid, COLOR_GREEN, "Временно не доступно.");
}
}
}
if(dialogid == 18)
{
if(response)
{
if(!strlen(inputtext)) // этта проверка проверяет, если игрок ничего не ввел в окно, тогда действие
{
SendClientMessage(playerid, COLOR_RED, "Вы ничего не ввели!");
ShowPlayerDialog(playerid,18,DIALOG_STYLE_INPUT,"Админ. авторизация.","Введите ваш админ. код.","Ввод.","Выход.");
return 1;
}
if(strval(inputtext) != akey || !response) return SendClientMessage(playerid, COLOR_RED,"Вы ввели неверный админ. код и были кикнуты!"), Kick(playerid);
{
SendClientMessage(playerid, COLOR_GREEN, "Вы вошли как администратор.");
SPVI(playerid, "isPlalogged", true);
}
}
else
{
Kick(playerid);
}
}
return 1;
}
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}
//============================= Пользовательские паблики =======================
forward onPlayerLoadUsers(playerid);
public onPlayerLoadUsers(playerid)
{
switch(orm_errno(Pi[playerid][ORMID]))
{
case ERROR_OK: ShowPlayerDialog(playerid, 1, ds_input, "[ Авторизация игрового аккаунта ] ", " {ffffff}Добро пожаловать на сервер "serverNmae"\n{3fda07}Аккаунт с вашин ником уже зарегистрирован!", "Далее", "Закрыть"); // ERROR_OK Аккаунт зарегистрирован
case ERROR_NO_DATA: ShowPlayerDialog(playerid, 2, ds_input, "[ Регистрация игрового аккаунта ]", " {ffffff}Добро пожаловать на сервер "serverNmae"\n{ff6347}Аккаунт с вашим ником не зарегистрирован, \n нажмите {3fda07}Далее {ff6347}чтобы продолжить.\n{ffffff}Введите пароль(от 1 до 30):", "Регистр.", "Закрыть"); // ERROR_NO_DATA Аккаунт в базе не найден
}
orm_setkey(Pi[playerid][ORMID], "id");
return 1;
}
forward onPlayerRegisterCallback(playerid);
public onPlayerRegisterCallback(playerid) return SPVI(playerid, "isPlAutothed", true), SpawnPlayer(playerid);
//============================= Стоки ==========================================
stock onPlayerRegister(playerid, password[])
{
format(Pi[playerid][name], MAX_PLAYER_NAME, "%s", getpl(playerid)); // записываем ник при реестре
format(Pi[playerid][pass], isValidPass, "%s", password); // записываем пароль при реестре
Pi[playerid][level] = 1;
Pi[playerid][akey] = 180402;
orm_insert(Pi[playerid][ORMID], "onPlayerRegisterCallback", "d", playerid);
return 1;
}
Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case 1:
{
if(!response) return Kick(playerid);
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 1, ds_input, "[ Авторизация игрового аккаунта ] ", " {ffffff}Добро пожаловать на сервер "serverNmae"\n{3fda07}Аккаунт с вашин ником уже зарегистрирован!", "Далее", "Закрыть"); // ERROR_OK Аккаунт зарегистрирован
if(!strcmp(inputtext, Pi[playerid][pass], false, isValidPass)) // спавним игрока при корректном вводе пароля
{
for(new i = 0; i < 40; i++) send(playerid, "");
SPVI(playerid, "isPlAutothed", true), SpawnPlayer(playerid);
}
else return ShowPlayerDialog(playerid, 1, ds_input, "[ Авторизация игрового аккаунта ] ", " {ffffff}Добро пожаловать на сервер "serverNmae"\n{3fda07}Аккаунт с вашин ником уже зарегистрирован!", "Далее", "Закрыть"); // ERROR_OK Аккаунт зарегистрирован
return 1;
}
case 2:
{
if(!response) return Kick(playerid);
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 2, ds_input, "[ Регистрация игрового аккаунта ]", " {ffffff}Добро пожаловать на сервер "serverNmae"\n{ff6347}Аккаунт с вашим ником не зарегистрирован, \n нажмите {3fda07}Далее {ff6347}чтобы продолжить.\n{ffffff}Введите пароль(от 1 до 30):", "Регистр.", "Закрыть"); // ERROR_NO_DATA Аккаунт в базе не найден
onPlayerRegister(playerid, inputtext);
return 1;
}
}
if(dialogid == 14 && response)
{
switch(listitem)
{
case 0:
{
SendClientMessage(playerid, COLOR_GREEN, "Временно не доступно.");
}
case 1:
{
SendClientMessage(playerid, COLOR_GREEN, "Временно не доступно.");
}
case 2:
{
SendClientMessage(playerid, COLOR_GREEN, "Временно не доступно.");
}
case 3:
{
SendClientMessage(playerid, COLOR_GREEN, "Временно не доступно.");
}
case 4:
{
SendClientMessage(playerid, COLOR_GREEN, "Временно не доступно.");
}
case 5:
{
SendClientMessage(playerid, COLOR_GREEN, "Временно не доступно.");
}
}
}
if(dialogid == 18)
{
if(response)
{
if(!strlen(inputtext)) // этта проверка проверяет, если игрок ничего не ввел в окно, тогда действие
{
SendClientMessage(playerid, COLOR_RED, "Вы ничего не ввели!");
ShowPlayerDialog(playerid,18,DIALOG_STYLE_INPUT,"Админ. авторизация.","Введите ваш админ. код.","Ввод.","Выход.");
return 1;
}
if(strval(inputtext) != akey || !response) return SendClientMessage(playerid, COLOR_RED,"Вы ввели неверный админ. код и были кикнуты!"), Kick(playerid);
{
SendClientMessage(playerid, COLOR_GREEN, "Вы вошли как администратор.");
SPVI(playerid, "isPlalogged", true);
}
}
else
{
Kick(playerid);
}
}
return 1;
}
----ОШИБКА ТУТ:
if(strval(inputtext) != akey || !response) return SendClientMessage(playerid, COLOR_RED,"Вы ввели неверный админ. код и были кикнуты!"), Kick(playerid);
