Я тут написал пару скриптиков. Они для сервера использующего APS/NWNX 2 + MySQL. Естественно писал для своих нужд, но может кому и пригодится. Главная его цель - информативность. Если вы умеете работатьс MySQL то польза от него будет большая. Он регистрирует персонажей. Потом просмтривая БД вы можете узнать сколько: -Игроков зарегистрированно -ДМов зарегистрированно -Персонажей на одном аккаунте -Персонажей на одном IP -Персонажей на одном CD-Key -Аккаунтов на одном IP -Аккаунтов на одном CD-Key -Сколько персонажей определенной расы на шарде -Сколько персонажей определенной под-расы на шарде -Сколько персонажей поклоняются определнному одинаковому божеству, и поклоняются ли вообще -Сколько персонажей мужских, а сколько женских. -Дату создания персонажа. -ну и еще что-нибудь если забыл. Да, если кто нибудь напишет PHP форму для статистики читающую из этой БД - это будет замечательно - тогда срочно свяжитесь со мной:)
Скрипты:
Скрипт aps_include поставляется в erf архиве вместе с APS/NWNX 2.
Скрипт на OnModuleLoad:
Neverwinter Script Source | #include "aps_include" void main() { SQLInit(); string sSQL="CREATE TABLE `reg_data` ("+ " `status` varchar(64) NOT NULL default '',"+ " `login` varchar(64) NOT NULL default '',"+ " `name` varchar(64) NOT NULL default '',"+ " `gender` char(1) NOT NULL default '',"+ " `race` varchar(100) NOT NULL default '',"+ " `sub_race` varchar(100) NOT NULL default '',"+ " `deity` varchar(100) NOT NULL default '',"+ " `cd_key` varchar(64) NOT NULL default '',"+ " `ip` varchar(25) NOT NULL default '',"+ " `creation_date` datetime NOT NULL default '0000-00-00 00:00:00',"+ ") TYPE=MyISAM;";
SQLExecDirect("DESCRIBE reg_data"); //Если таблицы нет - создаем ее if (SQLFetch()!= SQL_SUCCESS) { SQLExecDirect(sSQL); } } |
Скрипт на OnClientEnter:
Neverwinter Script Source | #include "aps_include" void main() { object oPC=GetEnteringObject(); string sName=SQLEncodeSpecialChars(GetName(oPC));//ИМЯ персонажа string sLogin=SQLEncodeSpecialChars(GetPCPlayerName(oPC)); // Логин игрока string sGender="М"; if(GetGender(oPC)==GENDER_FEMALE)sGender="Ж";//Пол string sKey=GetPCPublicCDKey(oPC); //CD-key игрока string sIp=GetPCIPAddress(oPC); //Ip игрока string sDeity=GetDeity(oPC); //Божество игрока string sStatus = "PC";////ДМ или Игрок if (GetIsDM(oPC)==TRUE)sStatus = "DM"; string sRace = "Неизвестно"; //Расы заносимые при регистрации в БД if(GetRacialType(oPC)==RACIAL_TYPE_DWARF)sRace = "Дворф"; if(GetRacialType(oPC)==RACIAL_TYPE_ELF)sRace = "Эльф"; if(GetRacialType(oPC)==RACIAL_TYPE_GNOME)sRace = "Гном"; if(GetRacialType(oPC)==RACIAL_TYPE_HALFELF)sRace = "Полуэльф"; if(GetRacialType(oPC)==RACIAL_TYPE_HALFLING)sRace = "Полурослик"; if(GetRacialType(oPC)==RACIAL_TYPE_HALFORC)sRace = "Полуорк"; if(GetRacialType(oPC)==RACIAL_TYPE_HUMAN)sRace = "Человек"; string sSubrace=GetStringLeft(GetSubRace(oPC), 99);
//Выполним запрос SQL - выбираем строчку со статусом где логин и чар-нейм = логин и ИМЯ персонажа вошедшего игрока string sSelect = "SELECT cd_key FROM `reg_data` WHERE login='"+GetPCPlayerName(oPC)+ "' AND name='" +GetName(oPC)+ "' AND status='"+sStatus+"'";
//Регистрируем игрока статус - регистред, логин, чар-нейм, пол, раса, подраса, сд-кей, ip, и дата регистрации string sReg="INSERT INTO reg_data (status, login, name, gender,"+ "race,sub_race, deity,cd_key,ip,creation_date) "+ "VALUES('"+sStatus+ "','"+sLogin+ "','"+sName+ "','"+sGender+ "','"+sRace+ "','"+sSubrace+ "','"+sDeity+ "','"+sKey+ "','"+sIp+ "',NOW())";
//Проверка на статус игрока (зарегистрирован или нет) SQLExecDirect(sSelect); if (SQLFirstRow() == SQL_SUCCESS) { SendMessageToPC(oPC,"Рады вас видеть снова!");
} else { SQLExecDirect(sReg); SendMessageToPC(oPC,"Приветствуем Вас! Вас персонаж был автоматически зарегистрирован!"); } } |
Сообщение отредактировал Аваддон - Nov 18 2004, 07:26
|