Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » помощь в написание статистики
помощь в написание статистики
Jon4ik Дата: Четверг, 07.05.2015, 14:14:42 | Сообщение # 1
Сообщений: 278
Репутация: 7 [ +/- ]
Всем привет. как узнать сколько игрок сделал выстрелов,сколько попаданий и точность попаданий(в живот,левая рука, правая рука, левая нога, правая нога)
 
_R1KO_ Дата: Четверг, 07.05.2015, 17:27:34 | Сообщение # 2
Сообщений: 200
Репутация: 30 [ +/- ]
https://wiki.alliedmods.net/Counter-Strike:_Source_Events#player_hurt

hitgroup это часть тела, не помню уже какие там цифры, проверь.

точность это количество выстрелов/кол-во попаданий
 
dron216 Дата: Четверг, 07.05.2015, 17:33:22 | Сообщение # 3
Сообщений: 151
Репутация: 18 [ +/- ]
А вот части тела)
Код
#define HITGROUP_GENERIC 0   
#define HITGROUP_HEAD 1   
#define HITGROUP_CHEST 2   
#define HITGROUP_STOMACH 3   
#define HITGROUP_LEFTARM 4   
#define HITGROUP_RIGHTARM 5   
#define HITGROUP_LEFTLEG 6   
#define HITGROUP_RIGHTLEG 7


Сообщение отредактировал dron216 - Четверг, 07.05.2015, 17:33:55
 
Jon4ik Дата: Четверг, 07.05.2015, 18:09:55 | Сообщение # 4
Сообщений: 278
Репутация: 7 [ +/- ]
Спс

а как получить кол-во выстрелов через weapon_fire?
 
_R1KO_ Дата: Четверг, 07.05.2015, 20:28:34 | Сообщение # 5
Сообщений: 200
Репутация: 30 [ +/- ]
Код
hookevent("weapon_fire", weapon_fire);

weapon_fire(..)
shots[client]++;

 
Jon4ik Дата: Пятница, 08.05.2015, 20:12:32 | Сообщение # 6
Сообщений: 278
Репутация: 7 [ +/- ]
я немного по другому сделал уже)

public Action:Event_weapon_fire(Handle:event, const String:name[], bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
new weapon = GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon");

if(weapon != GetPlayerWeaponSlot(client, 2))
{
}

Добавлено (08.05.2015, 20:12:32)
---------------------------------------------
возникла 1 проблема

когда добавляю больше 17 полей то игрока не заносит в бд

public OnClientPutInServer(client)
{
GetClientAuthString(client, SteamBuffer, sizeof(SteamBuffer));
Format(SQLQuery, sizeof(SQLQuery), "SELECT COUNT(*) FROM `stats` WHERE steam='%s'", SteamBuffer);
SQL_TQuery(h_Database,CheckJoinedPlayer, SQLQuery, client, DBPrio_High);
}

сама проверка

public CheckJoinedPlayer(Handle:owner, Handle:HQuery, const String:error[], any:client)
{
while (SQL_FetchRow(HQuery))
{
new count = SQL_FetchInt(HQuery, 0);
if(count == 0)
{
decl String:CName[45];
GetClientName(client, CName, sizeof(CName));
GetClientAuthString(client, SteamBuffer, sizeof(SteamBuffer));
Format(SQLQuery, sizeof(SQLQuery), "INSERT INTO `stats` VALUES ('','%s', '1000', '%s', '0','0','0','0','0','0','0','0','0','0','0','0','0','0')", CName, SteamBuffer);
SQL_TQuery(h_Database, nkCreateNewPlayer, SQLQuery,_,DBPrio_High);
}
}
}


Сообщение отредактировал Jon4ik - Пятница, 08.05.2015, 21:44:34
 
SourceSamil Дата: Суббота, 09.05.2015, 04:40:50 | Сообщение # 7
Сообщений: 237
Репутация: [ +/- ]
А ты думаешь в bd нет ограничения в колонках?!Оо

Добавлено (09.05.2015, 04:40:50)
---------------------------------------------
Почитай sm wiki
И api

 
Jon4ik Дата: Суббота, 09.05.2015, 08:40:32 | Сообщение # 8
Сообщений: 278
Репутация: 7 [ +/- ]
SourceSamil, в rankme 60 колонок и норм же

из мануалов по mysql я нашел только это http://world-source.ru/forum/100-2751-1


Сообщение отредактировал Jon4ik - Суббота, 09.05.2015, 08:46:51
 
_R1KO_ Дата: Суббота, 09.05.2015, 13:37:00 | Сообщение # 9
Сообщений: 200
Репутация: 30 [ +/- ]
Цитата Jon4ik ()
когда добавляю больше 17 полей то игрока не заносит в бд

Думаю не в этом дело, выведи в лог запрос добавления игрока, создания таблицы и ошибки если есть. Потом скинешь сюда.
 
Jon4ik Дата: Суббота, 09.05.2015, 14:09:50 | Сообщение # 10
Сообщений: 278
Репутация: 7 [ +/- ]
_R1KO_, ошибок по идеи быть не должно

если 16 полей то все норм меня добавляет бд, но если ещё 1 поле добавить то все не добавляет в бд)
 
_R1KO_ Дата: Суббота, 09.05.2015, 15:59:21 | Сообщение # 11
Сообщений: 200
Репутация: 30 [ +/- ]
может в самом этом поле проблема. Буффера может перестать хватать.
 
Jon4ik Дата: Суббота, 09.05.2015, 17:23:28 | Сообщение # 12
Сообщений: 278
Репутация: 7 [ +/- ]
хм а rankme почему тогда нормально работает?

его запрос:

new String:g_sSqlInsert[] = "INSERT INTO `%s` VALUES (NULL,'%s','%s','%s','%d','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0 ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0');";

Format(query,sizeof(query),g_sSqlInsert ,g_sSQLTable,g_aClientSteam[client],sEscapeName,g_aClientIp[client],g_PointsStart);
SQL_TQuery(g_hStatsDb,SQL_NothingCallback,query,_,DBPrio_High);

dumaem
 
Scarface_slv Дата: Суббота, 09.05.2015, 18:32:30 | Сообщение # 13
Сообщений: 737
Репутация: 61 [ +/- ]
А зачем здесь while (SQL_FetchRow(HQuery)) ?
Если нужно проверить есть стим в базе или нет то вроде так if (!SQL_FetchRow(HQuery)) вернет false если нет стима в базе
И еще не добавляет возможно потому что SQLQuery - как я понял это строка для запроса. Может ее нужно увеличить в размере?


Сообщение отредактировал Scarface_slv - Суббота, 09.05.2015, 18:52:18
 
_R1KO_ Дата: Суббота, 09.05.2015, 20:30:42 | Сообщение # 14
Сообщений: 200
Репутация: 30 [ +/- ]
query какой длины?
 
Jon4ik Дата: Суббота, 09.05.2015, 20:52:10 | Сообщение # 15
Сообщений: 278
Репутация: 7 [ +/- ]
Scarface_slv, черт точно =) теперь все работает
 
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » помощь в написание статистики
  • Страница 1 из 1
  • 1
Поиск: