shape1
shape2
shape3
shape4
shape7
shape8

Создание мода с нуля - урок №3


Статус
Закрыто для дальнейших ответов.

danilasar

Пошел ко мне? Да ты умняшка! Пиши в ЛС!
Пользователь
12.05.2016
200
80
0
24
Доброго времени суток! В серии уроков "Создание мода с нуля" я расскажу вам о том, как создать мод с нуля.

Обратите внимание!

  •  Если вы не читали мой первый урок - обязательно прочтите!
  •  Если вы не читали мой второй урок - обязательно прочтите!
В прошлом уроке мы работали над входом/регистрации пользователей и создали администраторский раздел. Сегодня создадим самое важное - меню сервера и пользовательские команды.

Меню сервера
Сделаем через команду /меню. В public OnPlayerCommandText создаём /меню:

if(strcmp(cmdtext, "/меню, true) == 0)
{
ShowPlayerDialog(playerid, 5, DIALOG_STYLE_LIST, "Меню", "Игрок\nРабота\nФракция\nНавигатор", "Выбрать", "Закрыть");
}

Примечание: пункты меню должны разделятся \n.

Теперь укажем, кто что выведет - в public OnDialogResponse:

if(dialogid == 5) {
if(response) {
switch(listitem)
{
case 0:
ShowPlayerDialog(playerid, 5, DIALOG_STYLE_MSGBOX, "Меню -> Игрок", "Команды\n • /умереть - самоубийство\n • /пивко - выпить\n • /мангал - ставим мангальчик!", "Закрыть", "");
case 1:
SendClientMessage(playerid, -1, " "); // сюда мы потом вернёмся
case 2:
SendClientMessage(playerid, -1, " "); // и сюда тоже case 3: ShowPlayerDialog(playerid, 6, DIALOG_STYLE_LIST, "Меню -> Навигатор", "Останкино\nАЗС\nАвтосалон\nАвтошкола\nОружейный магазин\nАэропорт", "Выбрать", "Закрыть"); } } }

Ну вот и все, теперь у нас есть меню сервера. Приступим к пользовательским командам.

Пользовательские команды
Ни один игровой сервер не может обойтись без команд. В этой части урока я расскажу о них.

Команда выглядит так:

if(strcmp(cmdtext, "/cmd", true) == 0)
{
GetCommand
}

  • /cmd - команда
  • GetCommand - что выполняет
Пример:

if(strcmp(cmdtext, "/test", true) == 0)
{
SendClientMessageToAll(0x099DE0F6, "Hello, world!");
}

Команда /test выводит в чат сообщение всем игрокам голубого цвета: Hello, world!

У нас уже есть /mycommand. Ее удалите. Еще можно найти /spec-off и /меню. Добавим команду /дать. Для этого в начало public OnPlayerCommandText:

new giveplayerid, moneys;
new sendername[MAX_PLAYER_NAME];
new giveplayer[MAX_PLAYER_NAME];
new playermoney;
new string[200];

И ко всем командам:

if(strcmp(cmdtext, "/дать", true) == 0) {
if(!strlen(cmdtext)) {
SendClientMessage(playerid, 0xAA3333AA, "Используйте: /дать [id] [сумма]");
return 1;
}
giveplayerid = strval(cmdtext);
if(!strlen(cmdtext)) {
SendClientMessage(playerid, 0xAA3333AA, "Используйте: /дать [id] [сумма]");
return 1;
}
moneys = strval(cmdtext);
if (IsPlayerConnected(giveplayerid)) {
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
playermoney = GetPlayerMoney(playerid);
if (moneys > 0 && playermoney >= moneys) {
GivePlayerMoney(playerid, (0 - moneys));
GivePlayerMoney(giveplayerid, moneys);
format(string, sizeof(string), "Вы передали игроку %s [%d], %d руб.", giveplayer,giveplayerid, moneys);
SendClientMessage(playerid, 0xAA3333AA, string);
format(string, sizeof(string), "Вам передали %d рублей игрок %s [%d]", moneys, sendername, playerid);
SendClientMessage(giveplayerid, 0xAA3333AA, string);
printf("%s (playerid:%d) has transfered %d to %s (playerid:%d)",sendername, playerid, moneys, giveplayer, giveplayerid);
}
else
{
SendClientMessage(playerid, 0xAA3333AA, "Неверная сумма");
}
}
else
{
format(string, sizeof(string), "%d неактивен", giveplayerid);
SendClientMessage(playerid, 0xAA3333AA, string);
}
return 1;
}

P.S. Выдернул из DM Mari El.

На сегодня всё.

Итог работы:

  • Создано меню сервера
  • Созданы команды
В нашем моде уже есть:

  • Название мода
  • Спавн игроков
  • Скины при входе
  • Регистрация
  • Вход
  • Сохранение игроков
  • Меню сервера
  • Команды
В следующем уроке ждите:

  • Пикапы
  • Чекпоинты
  • Работы
  • Фракции (возможно, будет в 4 уроке)
 

Dfyz

Новичок
Пользователь
20.09.2015
12
1
0
20
danilasar, скинь свой мод пожалуйста . Варнинги и прочая фигня лезет, скинь свою pwn пожалуйста третьей версии .

 

danilasar

Пошел ко мне? Да ты умняшка! Пиши в ЛС!
Пользователь
12.05.2016
200
80
0
24
danilasar, скинь свой мод пожалуйста . Варнинги и прочая фигня лезет, скинь свою pwn пожалуйста третьей версии .
Да это издевательство! Вот код:

#include <a_samp>
#include <mxINI>
#define green 0xFF00000
#define SPEC_TYPE_NONE 0

forward OnPlayerRegister(playerid, password[]);
forward OnPlayerLogin(playerid,password[]);
enum pInfo
{
pPass[64],
pAdmin,
pKills,
pCash,
pScore,
Muted,
Jailed,
SpecID[MAX_PLAYERS],
SpecType[MAX_PLAYERS],
Freeze,
Zhertva,
Spawned,
};
new Player[MAX_PLAYERS][pInfo];
new PAccount[MAX_PLAYERS];



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)
{
new playername[MAX_PLAYER_NAME];// Массив для имени игрока
new string[128];// Путь до папки с именем игрока
GetPlayerName(playerid,playername,sizeof(playername));// Узнаём имя игрока
format(string,sizeof(string),"users/%s.ini", playername);// Путь к файлу с аккаунтом
if(fexist(string))// Проверка на файл, если он есть то выполняется следующее действие.
{
PAccount[playerid] = 1;// Аккаунт есть
}
else// Если файла с именем нет, то выполняется это действие.
{
PAccount[playerid] = 0;// Аккаунта нет
}
if(PAccount[playerid] == 1) // аккаунт есть
{
ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Вход","Аккаунт зарегистрирован, введите пароль","Вход","");// показываем диалог
}
else // если нет аккаунта в папке
{
ShowPlayerDialog(playerid,3,DIALOG_STYLE_INPUT,"Вход","Аккаунт зарегистрирован, введите пароль","Вход","");// Показываем диалог регистрации.
}
ShowPlayerDialog(playerid,1,DIALOG_STYLE_LIST,"Сервер","Мужик\nДевка","OK","");
return 1;
}

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

public OnPlayerSpawn(playerid)
{
SetPlayerPos(playerid,1958.3783, 1343.1572, 15.3746); // X,Y,Z - координаты спавна игроков
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[])
{
new giveplayerid, moneys;
new sendername[MAX_PLAYER_NAME];
new giveplayer[MAX_PLAYER_NAME];
new playermoney;
new string[200];
if(strcmp(cmdtext,"/spec-off",true) == 0)
{
TogglePlayerSpectating(playerid, 0);
Player[playerid][SpecID] = INVALID_PLAYER_ID;
Player[playerid][SpecType] = SPEC_TYPE_NONE;
SendClientMessage(playerid,0xFF00000,"Слежка отключена");
return 1;
}
if(strcmp(cmdtext, "/меню", true) == 0)
{
ShowPlayerDialog(playerid, 5, DIALOG_STYLE_LIST, "Меню", "Игрок\nРабота\nФракция\nНавигатор", "Выбрать", "Закрыть");
}
if(strcmp(cmdtext, "/дать", true) == 0) {
if(!strlen(cmdtext)) {
SendClientMessage(playerid, 0xAA3333AA, "Используйте: /дать [id] [сумма]");
return 1;
}
giveplayerid = strval(cmdtext);
if(!strlen(cmdtext)) {
SendClientMessage(playerid, 0xAA3333AA, "Используйте: /дать [id] [сумма]");
return 1;
}
moneys = strval(cmdtext);
if (IsPlayerConnected(giveplayerid)) {
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
playermoney = GetPlayerMoney(playerid);
if (moneys > 0 && playermoney >= moneys) {
GivePlayerMoney(playerid, (0 - moneys));
GivePlayerMoney(giveplayerid, moneys);
format(string, sizeof(string), "Вы передали игроку %s [%d], %d руб.", giveplayer,giveplayerid, moneys);
SendClientMessage(playerid, 0xAA3333AA, string);
format(string, sizeof(string), "Вам передали %d рублей игрок %s [%d]", moneys, sendername, playerid);
SendClientMessage(giveplayerid, 0xAA3333AA, string);
printf("%s (playerid:%d) has transfered %d to %s (playerid:%d)",sendername, playerid, moneys, giveplayer, giveplayerid);
}
else
{
SendClientMessage(playerid, 0xAA3333AA, "Неверная сумма");
}
}
else
{
format(string, sizeof(string), "%d неактивен", giveplayerid);
SendClientMessage(playerid, 0xAA3333AA, string);
}
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)
{
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[])
{
if(dialogid == 1) {
if(response) {
if(listitem == 0) {
SetPlayerSkin(playerid, 7);
}
if(listitem == 1) {
SetPlayerSkin(playerid, 13);
}
}
}
if(dialogid == 2)// Ид диалога Для Логина
{
if(response)// Если игрок нажал первую кнопку входа
{
if(!strlen(inputtext))// Если окно ввода пустое, выводим диалог снова
{
ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Вход","Аккаунт зарегистрирован, введите пароль","Вход","");// показываем диалог
return 1;
}
new pass[64];// Масив с паролем
strmid(pass,inputtext,0,strlen(inputtext),64);// считывание текста с диалога
OnPlayerLogin(playerid,pass);//паблик входа
}
}
if(dialogid == 3)// Ид диалога для регистрации
{
if(response)// Если игрок нажал первую кнопку
{
if(!strlen(inputtext))// Если игрок не написал ничего,то выводим диалог снова
{
ShowPlayerDialog(playerid,3,DIALOG_STYLE_INPUT,"Вход","Аккаунт зарегистрирован, введите пароль","Вход","");// Показываем диалог регистрации
return 1;
}
new pass[64];// Масив с паролем
strmid(pass,inputtext,0,strlen(inputtext),64);// Считываем текст с диалога
OnPlayerRegister(playerid,pass);// Запускаем паблик регистрации
}
}
if(dialogid == 4)
{
if(response)
{
new zherid = Player[playerid][Zhertva];
new Float:X,Float:Y,Float:Z,pname[40],gname[40],string[256];
GetPlayerName(playerid,pname,sizeof(pname));
GetPlayerName(zherid,gname,sizeof(gname));
if(listitem == 0)
{
if(!IsPlayerSpawned(zherid))
{
SendClientMessage(playerid,0xB30400EF,"Игрок еще не заспавнен");
return 1;
}
GetPlayerPos(zherid,X,Y,Z);
SetPlayerPos(zherid,X,Y,Z+10);
format(string,sizeof(string),"Aдминистратор %s пнул игрока %s",pname,playerid,gname,zherid);
SendClientMessageToAll(0x099DE0F6,string);
}
if(listitem == 1)
{
if(!IsPlayerSpawned(zherid))
{
SendClientMessage(playerid,0xB30400EF,"Игрок еще не заспавнен");
return 1;
}
SetPlayerHealth(zherid,0.0);
format(string,sizeof(string),"Aдминистратор %s убил игрока %s",pname,playerid,gname,zherid);
SendClientMessageToAll(0x099DE0F6,string);
}
if(listitem == 2)
{
if(!IsPlayerSpawned(zherid))
{
SendClientMessage(playerid,0xB30400EF,"Игрок еще не заспавнен");
return 1;
}
GetPlayerPos(zherid,X,Y,Z);
CreateExplosion(X,Y,Z,10,0);
CreateExplosion(X,Y,Z,10,0);
CreateExplosion(X,Y,Z,10,0);
format(string,sizeof(string),"Aдминистратор %s убил игрока %s",pname,playerid,gname,zherid);
SendClientMessageToAll(0x099DE0F6,string);
}
if(listitem == 3)
{
if(Player[zherid][Muted] == 0)
{
Player[zherid][Muted] = 1;
format(string,sizeof(string),"Aдминистратор %s заткнул игрока %s",pname,gname);
SendClientMessageToAll(0x099DE0F6,string);
}
else
{
Player[zherid][Muted] = 0;
format(string,sizeof(string),"Aдминистратор %s разрешил писать в чат игроку %s",pname,gname);
SendClientMessageToAll(0x099DE0F6,string);
}
}
if(listitem == 4)
{
format(string,sizeof(string),"Aдминистратор %s кинул игрока %s",pname,gname);
SendClientMessageToAll(0x099DE0F6,string);
Kick(zherid);
}
if(listitem == 5)
{
format(string,sizeof(string),"Aдминистратор %s забанил игрока %s",pname,gname);
SendClientMessageToAll(0x099DE0F6,string);
Ban(zherid);
}
if(listitem == 6)
{
if(playerid != zherid)
{
if(!IsPlayerSpawned(zherid))
{
SendClientMessage(playerid,0xB30400EF,"Игрок еще не заспавнен");
return 1;
}
GetPlayerPos(zherid,X,Y,Z);
if(IsPlayerInAnyVehicle(playerid))
{
SetVehiclePos(GetPlayerVehicleID(playerid),X+1,Y,Z);
}
else
{
SetPlayerPos(playerid,X+1,Y,Z);
}
SetPlayerInterior(playerid,GetPlayerInterior(zherid));
format(string,sizeof(string),"Вы телепортировались к игроку %s",gname);
SendClientMessage(playerid,0x099DE0F6,string);
format(string,sizeof(string),"Aдминистратор %s куда-то телепортировался... (к вам)",pname);
SendClientMessage(zherid,0x099DE0F6,string);
}
else
{
SendClientMessage(playerid,0xB30400EF,"Вы телепортировали к cебе игрока Админ");
SendClientMessage(playerid,0xB30400EF,"Aдминистратор %s телепортировал вас к себе");
}
}
if(listitem == 7)
{
if(playerid != zherid)
{
if(!IsPlayerSpawned(zherid))
{
SendClientMessage(playerid,0xB30400EF,"Игрок еще не заспавнен");
return 1;
}
GetPlayerPos(playerid,X,Y,Z);
if(IsPlayerInAnyVehicle(zherid))
{
SetVehiclePos(GetPlayerVehicleID(zherid),X+1,Y,Z);
}
else
{
SetPlayerPos(zherid,X+1,Y,Z);
}
SetPlayerInterior(zherid,GetPlayerInterior(playerid));
format(string,sizeof(string),"Вы телепортировали к cебе игрока %s",gname);
SendClientMessage(playerid,0x099DE0F6,string);
format(string,sizeof(string),"Aдминистратор %s телепортировал вас к себе",pname);
SendClientMessage(zherid,0x099DE0F6,string);
}
else
{
SendClientMessage(playerid,0xB30400EF,"Вы не можете телепортировать себя");
}
}
if(listitem == 8)
{
if(playerid != zherid)
{
if(!IsPlayerSpawned(zherid))
{
SendClientMessage(playerid,0xB30400EF,"Игрок еще не заспавнен");
return 1;
}
if(Player[zherid][Jailed] == 0)
{
Player[zherid][Jailed] = 1;
SetPlayerInterior(zherid,3);
SetPlayerPos(zherid,2574.1096,-2413.3933,21.5356);
format(string,sizeof(string),"Aдминистратор %s посадил %s в тюрьму...",pname,gname);
SendClientMessageToAll(0x099DE0F6,string);
}
else
{
Player[zherid][Jailed] = 0;
SetPlayerInterior(zherid,0);
SpawnPlayer(zherid);
format(string,sizeof(string),"Aдминистратор %s освободил игрока %s",pname,gname);
SendClientMessageToAll(0x099DE0F6,string);
}
}
else
{
SendClientMessage(playerid,0xB30400EF,"Вы не можете сажать себя в тюрьму");
}
}
if(listitem == 9)
{
if(playerid != zherid)
{
if(!IsPlayerSpawned(zherid))
{
SendClientMessage(playerid,0xB30400EF,"Игрок еще не заспавнен");
return 1;
}
TogglePlayerSpectating(playerid,1);
PlayerSpectatePlayer(playerid,zherid);
SetPlayerInterior(playerid,GetPlayerInterior(zherid));
Player[playerid][SpecID] = zherid;
Player[playerid][SpecType] = 1;
format(string,sizeof(string),"Bы следите за %s.",gname);
SendClientMessage(playerid,0x099DE0F6,string);
SendClientMessage(playerid,0x099DE0F6,"Чтобы отключить слежку, введите: \"/spec-off\"");
}
}
if(listitem == 10)
{
if(playerid != zherid)
{
if(!IsPlayerSpawned(zherid))
{
SendClientMessage(playerid,0xB30400EF,"Игрок еще не заспавнен");
return 1;
}
if(Player[zherid][Freeze] == 0)
{
TogglePlayerControllable(zherid,0);
format(string,sizeof(string),"Aдминистратор %s заморозил игрока %s",pname,gname);
SendClientMessageToAll(0x099DE0F6,string);
Player[zherid][Freeze] = 1;
}
else
{
TogglePlayerControllable(zherid,1);
format(string,sizeof(string),"Aдминистратор %s разморозил игрока %s",pname,gname);
SendClientMessageToAll(0x099DE0F6,string);
Player[zherid][Freeze] = 0;
}
}
}
}
else
{
}
}
if(dialogid == 5) {
if(response) {
switch(listitem)
{
case 0:
ShowPlayerDialog(playerid, 5, DIALOG_STYLE_MSGBOX, "Меню -> Игрок", "Команды\n • /умереть - самоубийство\n • /пивко - выпить\n • /мангал - ставим мангальчик!", "Закрыть", "");
case 1:
SendClientMessage(playerid, -1, " "); // сюда мы потом вернёмся
case 2:
SendClientMessage(playerid, -1, " "); // и сюда тоже
case 3:
ShowPlayerDialog(playerid, 6, DIALOG_STYLE_LIST, "Меню -> Навигатор", "Останкино\nАЗС\nАвтосалон\nАвтошкола\nОружейный магазин\nАэропорт", "Выбрать", "Закрыть");
}
}
}
return 1;
}

public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
if(Player[playerid][pAdmin] == 1)
{
ShowPlayerDialog(playerid,4,DIALOG_STYLE_LIST,"Администраторский раздел","Пнуть\nУбить\nВзорвать\nЗаткнуть\nKикнуть\nЗабанить\nТП к игроку\nТП игрока к себе\nПосадить\nСледить\nЗамарозить\n","Применить","Отмена");
Player[playerid][Zhertva] = clickedplayerid;
}
return 1;
}
public OnPlayerRegister(playerid, password[])// Паблик регистрации
{
if(IsPlayerConnected(playerid))
{
new string[64];// Масив с путём для файла
new playername[MAX_PLAYER_NAME];// Масив для получения имени игрока
GetPlayerName(playerid, playername, sizeof(playername));// Получаем Имя игрока
format(string,sizeof(string), "users/%s.ini", playername);// Добавляем имя игрока, в путь для сохранения
new iniFile = ini_createFile(string);// Создаём файл с именем игрока в папке players
if(iniFile < 0)// Если Файла нет
{
iniFile = ini_openFile(string);// Открываем
}
if(iniFile >= 0)// Если файл есть
{
strmid(Player[playerid][pPass],password,0,strlen(password),255);// Присваиваем масиву pPass, значение password[]
ini_setString(iniFile,"Pass",Player[playerid][pPass]);// Записываем пароль игрока в файл
ini_setInteger(iniFile, "Admin", 0); // Это не админитсратор
ini_setInteger(iniFile, "Score", 0);
ini_setInteger(iniFile, "Kills", 0);
ini_setInteger(iniFile, "Cash", 500);
ini_closeFile(iniFile);// Закрываем файл
ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Вход","Аккаунт зарегистрирован, введите пароль","Вход","");// показываем диалог
}
}
return 1;
}
stock SavePlayer(playerid)
{
new string[64];// Масив с путём для файла
new playername[MAX_PLAYER_NAME];// Масив для получения имени игрока
GetPlayerName(playerid, playername, sizeof(playername));// Получаем Имя игрока
format(string, sizeof(string), "users/%s.ini", playername);// Добавляем имя игрока, в путь для сохранения
new iniFile = ini_openFile(string);// Открываем файл по тому пути который указали.
ini_setString(iniFile,"Pass",Player[playerid][pPass]);// Записываем пароль игрока в файл
ini_setInteger(iniFile, "Admin",Player[playerid][pAdmin]); // Сохраняем админ/не админ
ini_getInteger(iniFile,"Score",Player[playerid][pScore]);
ini_getInteger(iniFile,"Kills",Player[playerid][pKills]);
ini_getInteger(iniFile, "Cash",Player[playerid][pCash]);
ini_closeFile(iniFile);// Закрываем файл
}
public OnPlayerLogin(playerid,password[])
{
if(IsPlayerConnected(playerid))// Проверка на подключение игрока
{
new string[64];// Масив с путём для файла
new pass[64];// Масив с паролем
new playername[MAX_PLAYER_NAME];// Масив для получения имени игрока
GetPlayerName(playerid, playername, sizeof(playername));// Получаем Имя игрока
format(string,sizeof(string), "users/%s.ini", playername);// Добавляем имя игрока, в путь для загрузки
new iniFile = ini_openFile(string);// Открываем файл
ini_getString(iniFile,"Pass",pass,64);// Загружаем пароль
if(strcmp(pass,password,true) == 0)// Если введёный пароль, соответсвует паролю при регистрации, то загружаем акк
{
ini_getString(iniFile,"Pass",Player[playerid][pPass],64);// Загружаем пароль
ini_getInteger(iniFile, "Admin",Player[playerid][pAdmin]); // Провераяем на Администратора
ini_getInteger(iniFile,"Score",Player[playerid][pScore]);
ini_getInteger(iniFile,"Kills",Player[playerid][pKills]);
ini_getInteger(iniFile, "Cash",Player[playerid][pCash]);
GivePlayerMoney(playerid,Player[playerid][pCash]);
SetPlayerScore(playerid, Player[playerid][pScore]);
ini_closeFile(iniFile);// Закрываем файл
}
else// Если пароль не верен..
{
ini_closeFile(iniFile);// Закрываем файл
ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Вход","Аккаунт зарегистрирован, введите пароль","Вход","");// показываем диалог
return 1;
}
SendClientMessage(playerid,green,"Добро пожаловать на наш сервер");// Выводим игрок сообщение
}
return 1;
}
stock IsPlayerSpawned(playerid)
{
if(Player[playerid][Spawned] != 0)
{
return 1;
}
return 0;
}



Варнинги и прочая фигня лезет
Табуляцию расставь.

Не понял, какой версии?

 

Forumnik

Освоившийся
Пользователь
02.09.2015
82
15
0
Скриптер
@danilasar,лезет Unknown, не указал что добавить в scriptfiles. Тоесть урок не доделанный, лезут варнинги . Да и пишет Unknown еще.....  

 

danilasar

Пошел ко мне? Да ты умняшка! Пиши в ЛС!
Пользователь
12.05.2016
200
80
0
24
@Forumnik, какие варнинги? Попробуй табуляцию расставить. MP какой? У всех работает, у тебя и еще одного человека ункновны лезут. 

 

freddie

Новичок
Пользователь
27.01.2016
2
0
0
что вот эти варнинги означают

Код:
C:\Users\Тимофей\Desktop\srv-pawno-crmp-c3-win\gamemodes\Untitled.pwn(128) : warning 217: loose indentation
C:\Users\Тимофей\Desktop\srv-pawno-crmp-c3-win\gamemodes\Untitled.pwn(129) : warning 217: loose indentation
C:\Users\Тимофей\Desktop\srv-pawno-crmp-c3-win\gamemodes\Untitled.pwn(289) : warning 217: loose indentation
C:\Users\Тимофей\Desktop\srv-pawno-crmp-c3-win\gamemodes\Untitled.pwn(493) : warning 217: loose indentation
C:\Users\Тимофей\Desktop\srv-pawno-crmp-c3-win\gamemodes\Untitled.pwn(494) : warning 217: loose indentation
Pawn compiler 3.2.3664     Copyright (c) 1997-2006, ITB CompuPhase




5 Warnings.
 
Последнее редактирование модератором:

stariy-ded-1

Новичок
Пользователь
25.07.2016
2
1
0
C:\Users\Àëåêñ\Desktop\srv-pawno-crmp-c3-win\gamemodes\simple.pwn(2) : fatal error 100: cannot read from file: "mxINI"
 
Compilation aborted.Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase
 
 
1 Error.
 
Почему тут ошибку выдает, хотя все так же как и в уроке))
 
Статус
Закрыто для дальнейших ответов.