PDA

Просмотр полной версии : [Поиск] new.pwn, с чего начать?



heralt
09.03.2015, 16:07
Решил заняться разработкой с new.pwn. С чего лучше начать? Что под основу взять? Подскажите :dance:
P.S: Только не предлагайте State 99, Samp-Rp всякие =)

Osetin
09.03.2015, 16:51
Не совсем понял суть темы, ты пишешь что хочешь начать мод с 0, и просишь основу, где логика?

Kegamand
09.03.2015, 16:52
Решил заняться разработкой с new.pwn. С чего лучше начать? Что под основу взять? Подскажите :dance:
P.S: Только не предлагайте State 99, Samp-Rp всякие =)

Что-то тут не сходится.

BaBuIIIkaDrifteR
09.03.2015, 17:00
#incluide <a_samp> :D

heralt
09.03.2015, 17:33
Не, я хочу ссылочки на хорошие разработки (new.pwn), с регистрацией и какими-нибудь еще плюшками. =0

Kegamand
09.03.2015, 17:51
Не, я хочу ссылочки на хорошие разработки (new.pwn), с регистрацией и какими-нибудь еще плюшками. =0

Держи (http://pro-pawn.ru/showthread.php?5069-Основа-new-pwn-%28MySQL-R5%29)

heralt
09.03.2015, 18:04
Держи (http://pro-pawn.ru/showthread.php?5069-Основа-new-pwn-%28MySQL-R5%29)
Там все уже есть, готовенькое =) Я научиться хочу, сам =)

[ForD]
09.03.2015, 18:21
Там все уже есть, готовенькое =) Я научиться хочу, сам =)

тогда какого хера ты паришь людям мозги?
Открыл павн,создал проект,и чпокай по клаве пальцами до посинения,это и называется "с 0",а если брать готовые как говорится плюшки то только копипасту научишься..
Да и начни с реги,в дальнейшем понадобится сохранять разные значения,лучше ее сразу сделать,да и хороший опыт от этого можно получить,да и сам все понимать будешь сразу а не ломать голову над чужим кодом.

heralt
09.03.2015, 19:05
Послушал Форда, решил писать самостоятельно =) Пока что не закрывайте тему, вопросы задавать буду

Регистрацию уже сделал, проверю, как доберусь до города.

heralt
09.03.2015, 19:49
Сделал систему организаций по уроку пользователя - gangzone.ini
Выявились вопросы:
Как прикрепить к рангу его название?
Как подключить скины к отдельной организации?

Osetin
09.03.2015, 20:06
Сделал систему организаций по уроку пользователя - gangzone.ini
Выявились вопросы:
Как прикрепить к рангу его название?
Как подключить скины к отдельной организации?

Вы сначало разберитесь с регистрацией, а потом переходите на остальное.

heralt
09.03.2015, 20:20
Я ее уже сделал =)

heralt
09.03.2015, 21:45
актуально

gangzone.ini
10.03.2015, 08:46
stock GetRangName(playerid)
{
new rangname[11]; //Если название больше 11 символов изменяй.
switch(PlayerInfo[playerid][pMember])
{
case 1:
{
switch(PlayerInfo[playerid][pRang])
{
case 1: rangname = "Ранг 1";
case 2: rangname = "Ранг 2";
case 3: rangname = "Ранг 3";
// И т.д
default: rangname = "Ранг лидера";
}
}
case 2:
{
switch(PlayerInfo[playerid][pRang])
{
case 1: rangname = "Ранг 1";
case 2: rangname = "Ранг 2";
case 3: rangname = "Ранг 3";
//И т.д
default: rangname = "Ранг лидера";
}
}
}
return rangname;
}

heralt
10.03.2015, 16:33
Окей, спасибо. Теперь проблема с самим сервером. Решил перевести на 0.3.7, что позже оказалось очень "мутурно".
Дайте сборку на 0.3x сервер.

[ForD]
10.03.2015, 17:36
Окей, спасибо. Теперь проблема с самим сервером. Решил перевести на 0.3.7, что позже оказалось очень "мутурно".
Дайте сборку на 0.3x сервер.

Что муторного? скачать клиаент и сервер 0.3.7 перекинуть мод в данный сервер,прописать конфиг,хотя возможно заменить пару инклудов и\или плагинов,но это наврятли.

$continue$
10.03.2015, 18:02
stock GetRangName(playerid)
{
new rangname[11]; //Если название больше 11 символов изменяй.
switch(PlayerInfo[playerid][pMember])
{
case 1:
{
switch(PlayerInfo[playerid][pRang])
{
case 1: rangname = "Ранг 1";
case 2: rangname = "Ранг 2";
case 3: rangname = "Ранг 3";
// И т.д
default: rangname = "Ранг лидера";
}
}
case 2:
{
switch(PlayerInfo[playerid][pRang])
{
case 1: rangname = "Ранг 1";
case 2: rangname = "Ранг 2";
case 3: rangname = "Ранг 3";
//И т.д
default: rangname = "Ранг лидера";
}
}
}
return rangname;
}


Не очень логичный код, обычно default прописывают как ошибку, если не было найдено в операторе выбора данные переменной, ну как знаете...

heralt
10.03.2015, 18:36
;59494']Что муторного? скачать клиаент и сервер 0.3.7 перекинуть мод в данный сервер,прописать конфиг,хотя возможно заменить пару инклудов и\или плагинов,но это наврятли.
Okay.

- - - Добавлено - - -

Итак, послушал совет от Форда, и решил использовать 0.3.7 версию. В pawn перевел MAX_PLAYERS в 100 ячеек.

Что же получилось? Теперь Консоль не читает сценарий. = (

Server_log:


----------
Loaded log file: "server_log.txt".
----------

SA-MP Dedicated Server
----------------------
v0.3z, (C)2005-2014 SA-MP Team

[05:30:22] filterscripts = "" (string)
[05:30:22]
[05:30:22] Server Plugins
[05:30:22] --------------
[05:30:22] Loading plugin: streamer
[05:30:22]

*** Streamer Plugin v2.6.1 by Incognito loaded ***

[05:30:22] Loaded.
[05:30:22] Loading plugin: sscanf
[05:30:22]

[05:30:22] ===============================

[05:30:22] sscanf plugin loaded.

[05:30:22] (c) 2009 Alex "Y_Less" Cole

[05:30:22] ===============================

[05:30:22] Loaded.
[05:30:22] Loaded 2 plugins.

[05:30:22]
[05:30:22] Filterscripts
[05:30:22] ---------------
[05:30:22] Loaded 0 filterscripts.

[05:30:22] Script[gamemodes/cliffordrp.amx]: Run time error 19: "File or function is not found"
[05:30:22] Number of vehicle models: 0


Screenshot:

http://i.imgur.com/OV9nqpH.png
http://i.imgur.com/NYrvLBB.png

heralt
10.03.2015, 21:14
Актуально = )

[ForD]
10.03.2015, 21:18
Компилировал через Pawno который идет в сборке с новой версией сервера??(использовать лучше идущий в комплекте с севрером)
И сам amx файл весит не 0?(возможно сбой в компиляции)
или еще скачай и установи NET Framework или Microsoft Visual C++
ну и как вариант скачай и закинь в папку с сервером вот эти плагины\библиотеки(хз как правильно)

msvcp100.dll
msvcp110.dll
msvcp120.dll
msvcr100.dll
msvcr110.dll
msvcr120.dll

heralt
10.03.2015, 21:38
Файл .amx весит 220 КБ.
Сейчас займусь загрузкой сервера с другой сборки.
Может быть проблема в W8, кто знает. Но он запускался. На 0.3z

[ForD]
10.03.2015, 21:44
Файл .amx весит 220 КБ.
Сейчас займусь загрузкой сервера с другой сборки.
Может быть проблема в W8, кто знает. Но он запускался. На 0.3z

эм,а не проще скачать с оф. сайта сервер? Там и pawno в комплекте.
да и дело возможно в плагинах,у меня была подобная проблема,решил именно тем что закинул(указанные ранее плагины) в корень сервера.
В винде не должно быть проблемы,хотя всякое может быть.

heralt
11.03.2015, 00:21
Проблему с консолью решена. Следом за ней появилась проблема с регистрацией, не сохраняются аккаунты.

(Проблема была решена загрузкой сборки 0.3.7 и компиляции их же Pawno.)


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

Пытался воспользоваться stock'ом, но ничего не работало :victory:


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


stock SavePlayer(playerid)
{
new string[64];// Массив с путём для файла
new playername[MAX_PLAYER_NAME];// Массив для получения имени игрока
GetPlayerName(playerid, playername, sizeof(playername));// Получаем Имя игрока
format(string, sizeof(string), "player/%s.ini", playername);// Добавляем имя игрока, в путь для сохранения
new iniFile = ini_openFile(string);// Открываем файл по тому пути который указали.
ini_setString(iniFile,"Pass",Player[playerid][pPass]);// Записываем пароль игрока в файл
ini_setInteger(iniFile,"Admin",Player[playerid][pAdmin]);// Записываем уровень админа
ini_setInteger(iniFile,"Leader", PlayerInfo[playerid][pLeader]);
ini_setInteger(iniFile,"Member", PlayerInfo[playerid][pMember]);
ini_setInteger(iniFile,"Rang", PlayerInfo[playerid][pRang]);
ini_closeFile(iniFile);// Закрываем файл
}

В моём распоряжении есть еще:



forward OnPlayerRegister(playerid, password[]);
public OnPlayerRegister(playerid, password[])// Паблик регистрации
{
if(IsPlayerConnected(playerid))// Проверка на подключение игрока
{
new string[64];// Массив с путём для файла
new playername[MAX_PLAYER_NAME];// Массив для получения имени игрока
GetPlayerName(playerid, playername, sizeof(playername));// Получаем Имя игрока
format(string,sizeof(string), "player/%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",Player[playerid][pAdmin]);

ini_closeFile(iniFile);// Закрываем файл
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT, "Авторизация", "{FFFFFF}Добро пожаловать на NAME\n{FFFFFF}Вы зарегестрированы\n\n{FFFFFF}Введите ваш пароль:", "Войти", "");
}
}
return 1;
}

forward OnPlayerLogin(playerid,password[]);
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), "player/%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_closeFile(iniFile);// Закрываем файл
}
else// Если пароль не верен..
{
ini_closeFile(iniFile);// Закрываем файл
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT, "Авторизация", "{FFFFFF}Добро пожаловать на NAME\n{FFFFFF}Вы зарегестрированы\n\n{FFFFFF}Введите ваш пароль:", "Войти", "");
return 1;
}
SendClientMessage(playerid,0xFF00000,"Добро пожаловать на наш сервер");// Выводим игрок сообщение
SpawnPlayer(playerid);// Спавним игрока
}
return 1;forward OnPlayerRegister(playerid, password[]);
public OnPlayerRegister(playerid, password[])// Паблик регистрации
{
if(IsPlayerConnected(playerid))// Проверка на подключение игрока
{
new string[64];// Массив с путём для файла
new playername[MAX_PLAYER_NAME];// Массив для получения имени игрока
GetPlayerName(playerid, playername, sizeof(playername));// Получаем Имя игрока
format(string,sizeof(string), "player/%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",Player[playerid][pAdmin]);

ini_closeFile(iniFile);// Закрываем файл
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT, "Авторизация", "{FFFFFF}Добро пожаловать на NAME\n{FFFFFF}Вы зарегестрированы\n\n{FFFFFF}Введите ваш пароль:", "Войти", "");
}
}
return 1;
}

forward OnPlayerLogin(playerid,password[]);
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), "player/%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_closeFile(iniFile);// Закрываем файл
}
else// Если пароль не верен..
{
ini_closeFile(iniFile);// Закрываем файл
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT, "Авторизация", "{FFFFFF}Добро пожаловать на NAME\n{FFFFFF}Вы зарегестрированы\n\n{FFFFFF}Введите ваш пароль:", "Войти", "");
return 1;
}
SendClientMessage(playerid,0xFF00000,"Добро пожаловать на наш сервер");// Выводим игрок сообщение
SpawnPlayer(playerid);// Спавним игрока
}
return 1;





Еще сделла две команды, для назначения лидерки и админки, но на мои запросы команды шлют меня на все 16 =(



if (strcmp("/setadmin", cmdtext, true, 9) == 0)
{
new string[50], params[64];
if(sscanf(params, "ud", params[0], params[1])) return SendClientMessage(playerid, 0xAFAFAFAA, "Используйте: /setadmin [id игрока] [уровень]");
format(string, sizeof(string), "Вы были назнычены лидером организации \"%s\"", GetOrgName(PlayerInfo[params[0]][pLeader]));
SendClientMessage(params[0], 0xFFFF00AA, string);
PlayerInfo[params[0]][pAdmin] = params[1];
return 1;
}
if (strcmp("/setleader", cmdtext, true, 10) == 0)
{
new string[50], params[64];
if(sscanf(params, "ud", params[0], params[1])) return SendClientMessage(playerid, 0xAFAFAFAA, "Используйте: /setleader [id игрока] [id организации]");
format(string, sizeof(string), "Вы были назнычены лидером организации \"%s\"", GetOrgName(PlayerInfo[params[0]][pLeader]));
SendClientMessage(params[0], 0xFFFF00AA, string);
PlayerInfo[params[0]][pMember] = params[1];
PlayerInfo[params[0]][pLeader] = params[1];
PlayerInfo[params[0]][pRang] = 10;
return 1;
}

$continue$
11.03.2015, 15:00
Мой совет начинайте с базы данных (mysql) и сразу с DC_CMD, когда начнешь понимать в Pawn, и разберешься в структуре сервера поймешь что на файлах далеко не уедешь (Не вывести мониторинг сервера, не информацию об аккаунте на сайт)
DC_CMD с связкой scanff очень прост и удобен в использовании.

Если не убедил то почитай урок: ТЫК (http://pro-pawn.ru/showthread.php?6571-%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B-%D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D0%B8-%D0%BD%D0%B0-%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D0%B5-mxINI)
Убедил почитай вот это: ТЫК (http://pro-pawn.ru/showthread.php?10548-%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B-%D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D0%B8-%D0%BD%D0%B0-%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5-%D0%BF%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%D0%B0-MySQL-R39-2&highlight=DEIMOS) и ТЫК (http://pro-pawn.ru/showthread.php?1028-DC_CMD-v2-8-%2823-03-14%29)

Пельмень
11.03.2015, 15:22
stock GetRangName(playerid)
{
new rangname[11]; //Если название больше 11 символов изменяй.
switch(PlayerInfo[playerid][pMember])
{
case 1:
{
switch(PlayerInfo[playerid][pRang])
{
case 1: rangname = "Ранг 1";
case 2: rangname = "Ранг 2";
case 3: rangname = "Ранг 3";
// И т.д
default: rangname = "Ранг лидера";
}
}
case 2:
{
switch(PlayerInfo[playerid][pRang])
{
case 1: rangname = "Ранг 1";
case 2: rangname = "Ранг 2";
case 3: rangname = "Ранг 3";
//И т.д
default: rangname = "Ранг лидера";
}
}
}
return rangname;
}



new RankName[] =
{
"1",
"2",
"3"
};

(Player [playerid] [pMember] > 0) && format (str, sizeof (str), RankName[Player [playerid] [pMember] - 1]);

Как пример.

heralt
11.03.2015, 17:23
Думаю стоит попробывать DC_CMD.

heralt
11.03.2015, 23:34
На счет регистрации, проблему решил с сохранением. Тестирование проводил по команде, завтра буду переводить на DC_CMD.
На счет мускула, пока что не стану переписывать мод на мускул, я не силен в павно =(


if (strcmp("/rang", cmdtext, true, 10) == 0)
{
new params[4];
SendClientMessage(params[3], 0xFFFF00AA, "Тест.");
PlayerInfo[playerid][pRang] = 10;
PlayerInfo[playerid][pMember] = 3;
PlayerInfo[playerid][pAdmin] = 4;
return 1;
}


Pass = mdaamasmma
Admin = 4
Leader = 0
Member = 3
Rang = 10


stock SavePlayer(playerid)
{
new string[64];// Массив с путём для файла
new playername[MAX_PLAYER_NAME];// Массив для получения имени игрока
GetPlayerName(playerid, playername, sizeof(playername));// Получаем Имя игрока
format(string, sizeof(string), "player/%s.ini", playername);// Добавляем имя игрока, в путь для сохранения
new iniFile = ini_openFile(string);// Открываем файл по тому пути который указали.
ini_setString(iniFile,"Pass",Player[playerid][pPass]);// Записываем пароль игрока в файл
ini_setInteger(iniFile,"Admin",Player[playerid][pAdmin]);// Записываем уровень админа
ini_setInteger(iniFile,"Member", PlayerInfo[playerid][pMember]);
ini_setInteger(iniFile,"Rang", PlayerInfo[playerid][pRang]);
ini_closeFile(iniFile);// Закрываем файл
return 1;

$continue$
12.03.2015, 00:25
А какой жопой павн связано с скл?

heralt
12.03.2015, 02:12
Решив проблемы с регистрацией и остальными недоработками, я занялся доделкой Организацей и Рангов для них.
Проверив команду, ничего не работало =(



if (strcmp("/rang", cmdtext, true, 10) == 0)
{
new string[64], params[64];
format(string, sizeof(string), "Вы состоите в организации \"%s\"", GetOrgName(PlayerInfo[playerid][pMember]));
SendClientMessage(playerid, 0xFFFF00AA, string);
format(params, sizeof(params), "Ваш ранг: \"%s\"", GetRangName(PlayerInfo[playerid][pRang]));
SendClientMessage(playerid, 0xFFFF00AA, params);
return 1;
}


stock GetRangName(playerid)
{
new rangname[23];
switch(PlayerInfo[playerid][pMember])
{
case 1:
{
switch(PlayerInfo[playerid][pRang])
{
case 1: rangname = "Охранник";
case 2: rangname = "Секретарь";
case 3: rangname = "Лицёнзер";
case 4: rangname = "Депутат";
case 5: rangname = "Управляющий СМИ";
case 6: rangname = "Министр Внутренних Дел";
case 7: rangname = "Министр Обороны";
case 8: rangname = "Премьер - Министр";
case 9: rangname = "Вице - Президент";
case 10: rangname = "Президент";
}
}
case 2:
{
switch(PlayerInfo[playerid][pRang])
{
case 1: rangname = "Рядовой";
case 2: rangname = "Ефрейтор";
case 3: rangname = "Сержант";
case 4: rangname = "Cтаршина";
case 5: rangname = "Лейтенант";
case 6: rangname = "Капитан";
case 7: rangname = "Майор";
case 8: rangname = "Подполковник";
case 9: rangname = "Полковник";
case 10: rangname = "Генерал";
}
}
case 3:
{
switch(PlayerInfo[playerid][pRang])
{
case 1: rangname = "Матрос";
case 2: rangname = "Мичман";
case 3: rangname = "Старшина";
case 4: rangname = "Лейтенант";
case 5: rangname = "Старпом";
case 6: rangname = "Капитан 3 ранга";
case 7: rangname = "Капитан 2 ранга";
case 8: rangname = "Капитан 1 ранга";
case 9: rangname = "Вице - Адмирал";
case 10: rangname = "Адмирал";
}
}
case 4:
{
switch(PlayerInfo[playerid][pRang])
{
case 1: rangname = "Рядовой";
case 2: rangname = "Сержант";
case 3: rangname = "Ст.Сержант";
case 4: rangname = "Cтаршина";
case 5: rangname = "Лейтенант";
case 6: rangname = "Капитан";
case 7: rangname = "Майор";
case 8: rangname = "Подполковник";
case 9: rangname = "Полковник";
case 10: rangname = "Генерал";
}
}
case 5:
{
switch(PlayerInfo[playerid][pRang])
{
case 1: rangname = "Ремонтник";
case 2: rangname = "Радиотехник";
case 3: rangname = "Наладчик";
case 4: rangname = "Оператор";
case 5: rangname = "Телемастер";
case 6: rangname = "Редактор";
case 7: rangname = "Репортёр";
case 8: rangname = "Режиссёр";
case 9: rangname = "Зам. Директора";
case 10: rangname = "Директор";
}
}
case 6:
{
switch(PlayerInfo[playerid][pRang])
{
case 1: rangname = "Dipendente";
case 2: rangname = "Adjunto";
case 3: rangname = "Rapinatore";
case 4: rangname = "Asimilato";
case 5: rangname = "Armiere";
case 6: rangname = "Capo";
case 7: rangname = "Strada Boss";
case 8: rangname = "Delegato";
case 9: rangname = "Consigliere";
case 10: rangname = "Don";
}
}
case 7:
{
switch(PlayerInfo[playerid][pRang])
{
case 1: rangname = "Кёдай";
case 2: rangname = "Томодати";
case 3: rangname = "Вакагасира";
case 4: rangname = "Ози-Хон";
case 5: rangname = "Оя-Дзи";
case 6: rangname = "Камбу";
case 7: rangname = "Со-Хонбутё";
case 8: rangname = "Оядзи";
case 9: rangname = "Сайко-Комон";
case 10: rangname = "Кумитё";
}
}
case 8:
{
switch(PlayerInfo[playerid][pRang])
{
case 1: rangname = "Терпила";
case 2: rangname = "Шнырь";
case 3: rangname = "Носильщик";
case 4: rangname = "Шестёрка";
case 5: rangname = "Авторитет";
case 6: rangname = "Бригадир";
case 7: rangname = "Следящий";
case 8: rangname = "Блатной";
case 9: rangname = "Вор в Законе";
case 10: rangname = "Корон. Вор в Законе";
}
}
case 9:
{
switch(PlayerInfo[playerid][pRang])
{
case 1: rangname = "Nalakove";
case 2: rangname = "Аmicove";
case 3: rangname = "Dipendente";
case 4: rangname = "Razzionate";
case 5: rangname = "Contramaeestre";
case 6: rangname = "Teniente";
case 7: rangname = "Caposele";
case 8: rangname = "Capitan";
case 9: rangname = "Coronel";
case 10: rangname = "Autoritete";
}
}
}
return rangname;
}

http://imgur.com/tkBU7YD

$continue$
12.03.2015, 13:29
GetRangName(PlayerInfo[playerid][pRang])

GetRangName(playerid)

heralt
15.03.2015, 13:30
Систему рангов доделал.
Не знаете, как сделать сохранение "HP" и Скинов?
Никак понять не могу, как сделать систему /setskin для организаций.

Desulaid
15.03.2015, 13:55
Систему рангов доделал.
Не знаете, как сделать сохранение "HP" и Скинов?
Никак понять не могу, как сделать систему /setskin для организаций.

переменная = GetPlayerSkin(playerid);

heralt
15.03.2015, 15:34
А как записывать значение переменной в файл? (mxIni

Desulaid
15.03.2015, 15:58
А как записывать значение переменной в файл? (mxIni

Советую тебе почитать тему Создание системы регистрации на примере mxINI (http://pro-pawn.ru/showthread.php?6571-%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B-%D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D0%B8-%D0%BD%D0%B0-%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D0%B5-mxINI) Там все хорошо расписано по mxINI

heralt
15.03.2015, 18:04
Пока что отойдем от темы сохранения здоровья, к возрасту.


if(dialogid == 3)// Ид диалога для регистрации
{
if(response)// Если игрок нажал первую кнопку
{
if(!strlen(inputtext))// Если окно ввода пустое, выводим диалог снова
{
ShowPlayerDialog(playerid,3,DIALOG_STYLE_INPUT, "Возраст персонажа", "{FFFFFF}Введите возраст персонажа.\n", "Дальше", "");
return 1;
}
new age[2];// Массив с возрастом
strmid(age,inputtext,0,strlen(inputtext),2);// Считываем текст с диалога
PlayerInfo[playerid][pAge] = age;
}
else// Если игрок нажал Esc, вернём ему диалог
{
ShowPlayerDialog(playerid,3,DIALOG_STYLE_INPUT, "Возраст персонажа", "{FFFFFF}Введите возраст персонажа.\n", "Дальше", "");
}
}

Самое основное здесь:



new age[2];// Массив с возрастом
strmid(age,inputtext,0,strlen(inputtext),2);// Считываем текст с диалога
PlayerInfo[playerid][pAge] = age;

Показывает ошибку, да и не сохраняется. А значение нужно =(


C:\Users\Вадим\Desktop\Сборка 0.3.7\gamemodes\cliffordrp.pwn(305) : error 006: must be assigned to an array
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


1 Error.


- - - Добавлено - - -

Решил кое-как провернуть сохраненение скина, хп и брони, не получилось, да и ошибки = (


enum pInfo
{
pPass[64],
pAdmin,
pMember,
pRang,
pMoney,
pSkin, //
pHealth, //
pArmour, //
pAge,
pSex,
}

Потом же, сделал сохранение всего этого дела:


new health = GetPlayerHealth(playerid);
new skin = GetPlayerSkin(playerid);
new armour = GetPlayerArmour(playerid);
ini_setInteger(iniFile,"Skin", skin);
ini_setInteger(iniFile,"Health", health);
ini_setInteger(iniFile,"Armour", armour);


Да и внес все это дело в регистрацию, но не полностью


forward OnPlayerRegister(playerid, password[]);
public OnPlayerRegister(playerid, password[])// Паблик регистрации
{
if(IsPlayerConnected(playerid))// Проверка на подключение игрока
{
new string[64];// Массив с путём для файла
new playername[MAX_PLAYER_NAME];// Массив для получения имени игрока
GetPlayerName(playerid, playername, sizeof(playername));// Получаем Имя игрока
format(string,sizeof(string), "player/%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",Player[playerid][pAdmin]);
ini_setInteger(iniFile,"Member", Player[playerid][pMember]);
ini_setInteger(iniFile,"Rang", Player[playerid][pRang]);
ini_setInteger(iniFile,"Money", Player[playerid][pMoney]);
ini_setInteger(iniFile,"Skin", Player[playerid][pSkin]);
ini_setInteger(iniFile,"Health", Player[playerid][pHealth]);
ini_setInteger(iniFile,"Armour", Player[playerid][pArmour]);
ini_setInteger(iniFile,"Age", Player[playerid][pAge]);
ini_setInteger(iniFile,"Sex", Player[playerid][pSex]);
ini_closeFile(iniFile);// Закрываем файл*/
ShowPlayerDialog(playerid,3,DIALOG_STYLE_INPUT, "Возраст персонажа", "{FFFFFF}Введите возраст персонажа.\n", "Дальше", "");
}
}
return 1;
}

forward OnPlayerLogin(playerid,password[]);
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), "player/%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,"Member", PlayerInfo[playerid][pMember]);
ini_getInteger(iniFile,"Rang", PlayerInfo[playerid][pRang]);
ini_getInteger(iniFile,"Money", PlayerInfo[playerid][pMoney]);
ini_getInteger(iniFile,"Skin", PlayerInfo[playerid][pSkin]);
ini_getInteger(iniFile,"Health", PlayerInfo[playerid][pHealth]);
ini_getInteger(iniFile,"Armour", PlayerInfo[playerid][pArmour]);
ini_getInteger(iniFile,"Age", PlayerInfo[playerid][pAge]);
ini_getInteger(iniFile,"Sex", PlayerInfo[playerid][pSex]);
ini_closeFile(iniFile);// Закрываем файл
}
else// Если пароль не верен..
{
ini_closeFile(iniFile);// Закрываем файл
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT, "Авторизация", "{FFFFFF}Добро пожаловать на Clifford Role Play\n{FFFFFF}Вы зарегестрированы\n\nВы ввели неверный пароль\n\n{FFFFFF}Введите ваш пароль:", "Войти", "");
return 1;
}
SendClientMessage(playerid,C_Silver,"Добро пожаловать на наш сервер. Вы успешно вошли.");// Выводим игрок сообщение
SpawnPlayer(playerid);// Спавним игрока
GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
SetPlayerHealth(playerid, Player[playerid][pHealth]);
}
return 1;

А после получил ошибки = (


C:\Users\Вадим\Desktop\Сборка 0.3.7\gamemodes\cliffordrp.pwn(305) : error 006: must be assigned to an array
C:\Users\Вадим\Desktop\Сборка 0.3.7\gamemodes\cliffordrp.pwn(356) : warning 202: number of arguments does not match definition
C:\Users\Вадим\Desktop\Сборка 0.3.7\gamemodes\cliffordrp.pwn(358) : warning 202: number of arguments does not match definition
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


1 Error.

heralt
15.03.2015, 21:38
апдейт

gangzone.ini
16.03.2015, 00:13
Используйте мануалы / уроки, используйте Google, качайте моды и смотрите как делать какие-либо функции... Так же не интересно когда за Вас всё делают :smile:

heralt
16.03.2015, 20:45
Актуально

[ForD]
16.03.2015, 21:24
C:\Users\Вадим\Desktop\Сборка 0.3.7\gamemodes\cliffordrp.pwn(305) : error 006: это должно быть в массиве
C:\Users\Вадим\Desktop\Сборка 0.3.7\gamemodes\cliffordrp.pwn(356) : warning 202: несовпадение количества аргументов
C:\Users\Вадим\Desktop\Сборка 0.3.7\gamemodes\cliffordrp.pwn(358) : warning 202: несовпадение количества аргументов
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


1 Error.


Пробуй исправить,подумай в чем может быть проблема.

heralt
16.03.2015, 21:51
на русском по легче )