- Код: Выделить всё
Это добавить в инклуды
Добавлено спустя 55 секунд:поправил native_money_spend, проверьте, там передавался g_Client а это "преффикс" в чате, не обратил внимания, думал там ник игрока
Добавлено спустя 1 минуту 47 секунд:- Код: Выделить всё
register_event("DeathMsg", "kill", "a", "1>0")
-->
RegisterHam(Ham_Killed, "player", "ham_killed", 1)
Добавлено спустя 7 минут 10 секунд:- Код: Выделить всё
public kill(){
new id = read_data(1)
new head = read_data(3)
if(head == 1){
Money[id]++
Money[id]++
print_color_chat(id, "%s !tВы получили 2 коина за убийство в голову!", g_Client)
}
else{
Money[id]++
print_color_chat(id, "%s !tВы получили 1 коин за убийство!", g_Client)
}
}
Меняем на
- Код: Выделить всё
public ham_killed(id, pid, shouldgib)
{
if (is_user_connected(pid))
{
static bodyp; bodyp = get_pdata_int( id , m_LastHitGroup, XO_PLAYER);
if (bodyp == HIT_HEAD)
{
Money[id] += 2
print_color_chat(id, "%s !tВы получили 2 коина за убийство в голову!", g_Client)
}
else
{
Money[id] += 1
print_color_chat(id, "%s !tВы получили 1 коин за убийство!", g_Client)
}
}
return HAM_IGNORED
}
Добавлено спустя 48 секунд:Удаляем
- Код: Выделить всё
public plugin_end(){
SQL_FreeHandle(SQL_Tuple)
}
Добавляем после дефайнов в самом начале скрипта
- Код: Выделить всё
const XO_PLAYER = 5
const m_LastHitGroup = 75
Добавлено спустя 4 минуты 57 секунд:- Код: Выделить всё
Добавлено спустя 17 минут 31 секунду:- Код: Выделить всё
public client_putinserver(id)
{
if(is_user_bot(id))
{
return PLUGIN_HANDLED;
}
Money[id] = 0
new name[32]
get_user_name(id, name, 31)
new ind[33]
ind[2] = id
new szQuery[512]
formatex(szQuery, charsmax(szQuery), "INSERT INTO `AWM_money` VALUES('%s')", name)
SQL_ThreadQuery(SQL_Tuple, "SQLQueryClose", szQuery)
formatex(szQuery, charsmax(szQuery), "SELECT * FROM `AWM_money` WHERE (`AWM_money`.`name` = '%s')", name)
SQL_ThreadQuery(SQL_Tuple, "SQLQueryGetMoney", szQuery, ind, sizeof(ind))
set_task(1.0,"HUDMoney",id+11585, _,_,"b")
return PLUGIN_CONTINUE;
}
Заменяем на
- Код: Выделить всё
public client_authorized(id)
{
if(is_user_bot(id)) return PLUGIN_HANDLED;
static name[64], qname[charsmax(name)*2]
get_user_name(id, name, charsmax(name))
SQL_QuoteString(Empty_Handle, qname, charsmax(qname), name)
static data[sql_data];
data[sql_t] = SQL_GET_MONEY;
data[sql_id] = id;
data[sql_userid] = get_user_userid(id)
static query[255]; formatex(query, charsmax(query), "SELECT `money` FROM `AWM_money` WHERE (`name` = '%s') LIMIT 1;", qname)
SQL_ThreadQuery(SQL_Tuple, "sql_handler", query, data, sql_data)
return PLUGIN_CONTINUE
}
Добавлено спустя 24 минуты 3 секунды:Это
- Код: Выделить всё
public client_disconnect(id)
{
if(is_user_bot(id)) return PLUGIN_HANDLED;
new name[32]
get_user_name(id, name, 31)
new money = Money[id]
new szQuery[512]
formatex(szQuery, charsmax(szQuery), "UPDATE `AWM_money` SET `money` = '%s' WHERE `AWM_money`.`name` = '%s'", money, name)
SQL_ThreadQuery(SQL_Tuple, "SQLQueryClose", szQuery)
Money[id] = 0
return PLUGIN_CONTINUE;
}
Заменяем на
- Код: Выделить всё
public client_disconnect(id)
public client_disconnected(id)
{
if(is_user_bot(id)) return PLUGIN_HANDLED;
static name[64], qname[charsmax(name)*2]
get_user_name(id, name, charsmax(name))
SQL_QuoteString(Empty_Handle, qname, charsmax(qname), name)
static data[sql_data];
data[sql_t] = SQL_ADD_MONEY;
data[sql_id] = id;
data[sql_userid] = get_user_userid(id)
data[sql_money] = Money[id]
static query[255]; formatex(query, charsmax(query), "INSERT INTO `AWM_money` (`name`,`money`) VALUES ('%s', %d) ON DUPLICATE KEY UPDATE `money`=`money`+VALUE(`money`)", qname, Money[id] - g_MoneyOld[id])
SQL_ThreadQuery(SQL_Tuple, "sql_handler", query, data, sql_data)
return PLUGIN_CONTINUE
}
Добавлено спустя 1 минуту 11 секунд:Добавляем переменную
- Код: Выделить всё
new g_MoneyOld[MAX_PLAYERS+1]
т.к. лучше обновлять такие данные чем перезаписывать, дабы не потерять
Добавлено спустя 1 минуту:Ну и самое важное, добавляем
- Код: Выделить всё
public sql_handler(failstate, Handle:h, error[], errnum, data[], size, Float:queuetime)
{
if(failstate == TQUERY_SUCCESS)
{
static id; id = data[sql_id]
static userid; userid = data[sql_userid]
switch (data[sql_t])
{
case SQL_GET_MONEY:
{
if (get_user_userid(id) == userid) {
if (SQL_MoreResults(h))
{
static m; m = SQL_ReadResult(h, 0)
Money[id] = m
g_MoneyOld[id] = m
}
}
}
case SQL_SET_MONEY:
{
}
case SQL_ADD_MONEY:
{
if (get_user_userid(id) == userid) {
if (SQL_AffectedRows(h))
{
g_MoneyOld[id] = data[sql_money]
}
}
}
}
}
else log_amx("sql error: %d (%s)", errnum, error)
}
Добавлено спустя 1 минуту 19 секунд:Так же можно сохранять монетки после смерти потому что AMXX 1.8.2 иногда не обрабатывает выход игрока с сервера