Музыка, Игры, Железо
Сохранять статистику - Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: roni, vileon  
Сохранять статистику
roniДата: Пятница, 12.09.2008, 17:34 | Сообщение # 1
GTAIV FUN
Группа: Администраторы
Сообщений: 183
Репутация: 6
Статус: Offline
Назрело ещё пару вопросов,как сделать чтобы деньги и фраги сохранялись после выхода,может есть какой то скрипт в котором есть всё всё сразу,ну там деньги кому то переслать,фраги считались и т.д....но самое главное мне это фраги,что бы после выхода,входа они возобновлялись...короче что бы сохранялись даже после того как ты вышел и вошёл...вот только как это сделать...
#include <a_samp>
#include <dudb>

#define zelen 0x00FF00FF// Ярко зеленый
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1

new PLAYERLIST_authed[MAX_PLAYERS];
new MyKills[MAX_PLAYERS];//Переменная для убийств
new MyDeaths[MAX_PLAYERS];//Переменная для смертей
new IsPlayerInJail[MAX_PLAYERS];
new gangkillcount[MAX_PLAYERS];
new teamkillcount[MAX_PLAYERS];
new taketurfbackcount[MAX_PLAYERS];

forward SystemMsg(playerid,msg[]);//Зафорвардили функцию SystemMsg
В OnPlayerConnect:

Code
//----------Нулевая статистика----------
MyDeaths[playerid] = 0;
MyKills[playerid] = 0;
IsPlayerInJail[playerid] = 0;
taketurfbackcount[playerid] = 0;
gangkillcount[playerid] = 0;
teamkillcount[playerid] = 0;
//----------Нулевая статистика----------

//-----------><-------------
new PlayerName[30], str[256];
GetPlayerName(playerid, PlayerName, 30);
format(str, sizeof(str), "%s.dudb.sav", PlayerName);
if (!udb_Exists(PlayerName2(playerid))) {
SendClientMessage(playerid, zelen, "***СИСТЕМА: Используйте /register [пароль] для создания аккаунта или /help***");
return 1;
}else{
PLAYERLIST_authed[playerid]=false;
SendClientMessage(playerid, zelen, "***СИСТЕМА:Этот ник зарегестрирован! Чтобы войти в аккаунт введите /login [пароль]***");
}
return 1;
}
//-----------><-------------
stock PlayerName2(playerid) {
new name[255];
GetPlayerName(playerid, name, 255);
return name;
}
//-----------><-------------

dcmd_register(playerid,params[]) {
if (PLAYERLIST_authed[playerid]) return SystemMsg(playerid,"Такой аккаунт уже существует");
if (udb_Exists(PlayerName2(playerid))) return SystemMsg(playerid,"Аккаунт создан, введите '/login <пароль>'.");
if (strlen(params)==0) return SystemMsg(playerid,"***СИСТЕМА: Используйте '/register пароль'***");
if (udb_Create(PlayerName2(playerid),params)) return SystemMsg(playerid,"Аккаунт создан. Войдите '/login пароль'.");
return true;
}

dcmd_login(playerid,params[]) {
if (PLAYERLIST_authed[playerid]) return SystemMsg(playerid,"Вы уже вошли в аккаунт");
if (!udb_Exists(PlayerName2(playerid))) return SystemMsg(playerid,"Аккаунта не существует, введите '/register пароль'.");
if (strlen(params)==0) return SystemMsg(playerid,"***СИСТЕМА: Используйте '/login пароль'***");
if (udb_CheckLogin(PlayerName2(playerid),params)) {
GivePlayerMoney(playerid,dUserINT(PlayerName2(playerid)).("money")-GetPlayerMoney(playerid));
SetPlayerScore(playerid,dUserINT(PlayerName2(playerid)).("kills")-GetPlayerScore(playerid));
MyDeaths[playerid] = (dUserINT(PlayerName2(playerid)).("deaths"));
MyKills[playerid] = (dUserINT(PlayerName2(playerid)).("kills"));
PLAYERLIST_authed[playerid]=true;

return SystemMsg(playerid,"Вы вошли в cвою учетную запись.Выберите скин и нажмите кнопку >>Shift<<");
}
return SystemMsg(playerid,"Неверный пароль.");
}
//------------------------Stat------------------------------------------------------
ShowScore(playerid)
{
new giveplayerid;
new skin = GetPlayerSkin(giveplayerid);
new ping = GetPlayerPing(giveplayerid);
new tmpTotal[128];
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
format(tmpTotal, sizeof(tmpTotal), "*** %s: >>Фраги: [%d]<< | >>Смерти: [%d]<< | >>Рейтинг: [%0.2f]<< | >>Деньги: [$%d]<< ",playername,MyKills[playerid],MyDeaths[playerid], (Float:MyKills[playerid]/Float:MyDeaths[playerid]),GetPlayerMoney(playerid));
SendClientMessage(playerid,zelen, tmpTotal);

format(tmpTotal, sizeof(tmpTotal), ">>Скин [%d]<< | >>Пинг [%d]<< ", skin, ping);
SendClientMessage(playerid,zelen, tmpTotal);

return 1;
}
B OnPlayerDisconnect:

Code
public OnPlayerDisconnect(playerid, reason)
{
if (PLAYERLIST_authed[playerid]) {
dUserSetINT(PlayerName2(playerid)).("money",GetPlayerMoney(playerid));//Сохранение статы в файл с именем игрока в строку money
// Сохранение статистики
dUserSetINT(PlayerName2(playerid)).("kills",MyKills[playerid]);//См.выше ^
dUserSetINT(PlayerName2(playerid)).("deaths",MyDeaths[playerid]);//См.выше ^
}
PLAYERLIST_authed[playerid]=false;
return false;
}
B OnPlayerCommandText:

Code
new tmp[256];
new cmd[256];
new string[256];//Длина строки
new giveplayerid;

//-------------------------
dcmd(login,5,cmdtext);//войти
dcmd(register,8,cmdtext);//зарегиться
//-------------------------

if(strcmp(cmd, "/stat", true) == 0)
{
new skin = GetPlayerSkin(giveplayerid);//Получить скин игрока
new ping = GetPlayerPing(giveplayerid);//Получить пинг игрока
if(!strlen(tmp))
{
ShowScore(playerid);//Просмотр статистики (см.выше)
return 1;
}

if(IsPlayerConnected(playerid))//Проверка на то подключен игрок или нет
{
new playername[MAX_PLAYER_NAME];//Переменная для имени игрока
GetPlayerName(playerid, playername, sizeof(playername));
format(string, sizeof(string), "***Твоя статистика: >>Фраги: [%d]<< | >>Смерти: [%d]<< | >>Рейтинг: [%0.2f]<< | >>Деньги: [$%d]<< ***",playername,MyKills[playerid],MyDeaths[playerid],Float:MyKills[playerid]/Float:MyDeaths[playerid],GetPlayerMoney(playerid));
SendClientMessage(playerid, zelen, string);
format(string, sizeof(string), ">>Скин [%d]<< | >>Пинг [%d]<< ", skin, ping);
SendClientMessage(playerid,zelen, string);
return 1;
}
В конец скрипта:

Code

public SystemMsg(playerid,msg[]) {
if ((IsPlayerConnected(playerid))&&(strlen(msg)>0)) {
SendClientMessage(playerid,zelen,msg);
}
return 1;
}

 
BJlaDuMuPДата: Пятница, 12.11.2010, 11:56 | Сообщение # 2
Новичок
Группа: Пользователи
Сообщений: 6
Репутация: 0
Статус: Offline
Чему этот урок учит?
 
Phoenix_airДата: Вторник, 02.10.2012, 16:46 | Сообщение # 3
Местный
Группа: Пользователи
Сообщений: 105
Репутация: 0
Статус: Offline
Представляю вашему вниманию
отличный RolePlay сервер с уникальным модом
"Skyland"
Особенности сервера:
Имеются 3 рынка личного транспорта: Авторынок, Моторынок, Судорынок.
Продвинутая Role-Play система, благодаря которой, вы можете полностью погрузиться в игровой процесс.
Имеется высококвалифицированная команда "Хэлперов", которая всегда готова помочь в игровом процессе.
Вы можете выбрать любую роль, начиная от справедливого служителя закона и заканчивая бесстрашным уличным бандитом.
У банд имеются свои районы, поэтому поводу ворота ОТСУТСТВУЮТ.
Система сохранения тюнинга на Вашем личном авто.
Имеется команда "/LM", при помощи которой, лидер может сам изменять множество параметров.
Каждая фракция в игре задействована для определенной роли.
Написание смайлов в "/b" трансформируется в соответствующее "/me" действие.
Стабильный онлайн. 200-250 человек.
Имеется несколько уровней систем защиты аккаунта от угона.
Возможность членам банды/мафии похищать людей.
Уникальная сисема, при которой, за /q при аресте/похищении/погони/в бою Вас сажает в Fort DeMorgan.
Имеется команда "/blacklist" с помощью которой можно занести неприятеля в Черный Список/Список Рецедивистов ПО.
Отображения оружия на скинах игроков.
Имеется команда "/hs", с помощью которой можно пожать руку рядом стоящему игроку.
Анти-ДМ в Зеленых Зонах.
Имеется команда "/fc", с помощью которой можно автоматически включить цвет организации, в которой вы находитесь.
Имеются ГАНГЗОНЫ у банд, за которые вы можете воевать.
Уникальная UCP панель, с помощью которой Вы сможете следить за свом персонажем и автомобильным рынком.
Мы будем рады видеть вас на нашем сервере!
IP : server.rp-skyland.ru:7777
Сайт: www.rp-skyland.ru
 
  • Страница 1 из 1
  • 1
Поиск: