Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Дописать Steam bonus

[РЕШЕНО]
Статус пользователя ToL9N4eG
сообщение 16.11.2015, 22:20
Сообщение #1
Стаж: 13 лет

Сообщений: 227
Благодарностей: 35
Полезность: 14

Доброго времени суток. Помогите, пожалуйста, довести плагин до ума. Нужно дописать:
1. Чтоб на awp_ , fy_ , 35hp , aim бонусы не выдавались и в чат писало "На этой карте бонусы отключены".
2. Чтоб бонусы выдавались со второго раунда.
Исходник
Код:
#include <amxmodx>
#include <fun>
#include <cstrike>
#include <hamsandwich>
#include <dhudmessage>
#include <colorchat>

#pragma semicolon 1

#define PLUGIN "Steam Bonus"
#define VERSION "1.2"
#define AUTHOR "Stimul"
#define PREFIX "STEAM Бонус"

#define get_bit(%1,%2) (%1 & (1 << (%2 & 31)))
#define set_bit(%1,%2) (%1 |= (1 << (%2 & 31)))
#define reset_bit(%1,%2) (%1 &= ~(1 << (%2 & 31)))

// Цвет DHUD сообщения
#define COLOR_RED random(255) // Количество красного цвета
#define COLOR_GREEN random(255) // Количество зелёного цвета
#define COLOR_BLUE random(255) // Количество синего цвета

#define TIME 5.0 // Время показа

#define NUM_MONEY 1000 // Количество денег

new g_bIsConnected;
new g_bIsSteam;
new g_bProcedure;

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);

RegisterHam(Ham_CS_RoundRespawn, "player", "fw_CS_RoundRespawn_Post", true);
}

public client_putinserver(id)
{
set_bit(g_bIsConnected, id);

if(is_user_steam(id))
{
set_bit(g_bIsSteam, id);
reset_bit(g_bProcedure, id);
set_task(3.0, "WelcomeMessage", id);
}
else
reset_bit(g_bIsSteam, id);
}

public client_disconnect(id)
reset_bit(g_bIsConnected, id);

public WelcomeMessage(id)
{
if(get_bit(g_bIsConnected, id))
{
static szName[32];
get_user_name(id, szName, charsmax(szName));

set_dhudmessage(COLOR_RED, COLOR_GREEN, COLOR_BLUE, -1.0, 0.3, 0, 0.0, TIME);
show_dhudmessage(id, "Привет, %s!", szName);
set_dhudmessage(COLOR_RED, COLOR_GREEN, COLOR_BLUE, -1.0, 0.34, 0, 0.0, TIME);
show_dhudmessage(id, "У Вас Steam, поэтому каждый раунд Вы будете получать бонусы");
}
}

public fw_CS_RoundRespawn_Post(id)
{
if(get_bit(g_bIsConnected, id) && get_bit(g_bIsSteam, id))
{
if(!get_bit(g_bProcedure, id))
{
cs_set_user_money(id, cs_get_user_money(id) + NUM_MONEY);
ColorChat(id, RED, "^1[^4%s^1] ^3Вы получаете бонус: ^1'%d$'", PREFIX, NUM_MONEY);
set_bit(g_bProcedure, id);
}
else
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
cs_set_user_bpammo(id, CSW_FLASHBANG, 2);
give_item(id, "weapon_smokegrenade");
ColorChat(id, RED, "^1[^4%s^1] ^3Вы получаете бонус: ^1'все гранаты'", PREFIX);
reset_bit(g_bProcedure, id);
}
}
}

stock bool:is_user_steam(id)
{
static dp_pointer;

if(dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
{
server_cmd("dp_clientinfo %d", id);
server_exec();
return (get_pcvar_num(dp_pointer) == 2) ? true : false;
}

new szAuthid[34];
get_user_authid(id, szAuthid, charsmax(szAuthid));

return (containi(szAuthid, "LAN") < 0);
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Cannabis
сообщение 16.11.2015, 22:39
Сообщение #2
Стаж: 11 лет

Сообщений: 162
Благодарностей: 42
Полезность: 37

Не тестил.
Код:
#include <amxmodx>
#include <fun>
#include <cstrike>
#include <hamsandwich>
#include <dhudmessage>
#include <colorchat>

#pragma semicolon 1

#define PLUGIN "Steam Bonus"
#define VERSION "1.2"
#define AUTHOR "Stimul"
#define PREFIX "STEAM Бонус"

#define get_bit(%1,%2) (%1 & (1 << (%2 & 31)))
#define set_bit(%1,%2) (%1 |= (1 << (%2 & 31)))
#define reset_bit(%1,%2) (%1 &= ~(1 << (%2 & 31)))

// Цвет DHUD сообщения
#define COLOR_RED random(255) // Количество красного цвета
#define COLOR_GREEN random(255) // Количество зелёного цвета
#define COLOR_BLUE random(255) // Количество синего цвета

#define TIME 5.0 // Время показа

#define NUM_MONEY 1000 // Количество денег

new g_bIsConnected;
new g_bIsSteam;
new g_bProcedure;

new bool:block;
new g_MapNames[][] =
{
"35hp_",
"awp_",
"aim_"
}

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);

RegisterHam(Ham_CS_RoundRespawn, "player", "fw_CS_RoundRespawn_Post", true);

new MapName[32]
get_mapname(MapName, 31);
for(new Map = 0; Map < sizeof(g_MapNames); Map++)
{
if(equali(MapName,g_MapNames[Map],4))
{
block = true;
}
}
}

public client_putinserver(id)
{
set_bit(g_bIsConnected, id);

if(is_user_steam(id))
{
if(block)
{
set_dhudmessage(COLOR_RED, COLOR_GREEN, COLOR_BLUE, -1.0, 0.34, 0, 0.0, TIME);
show_dhudmessage(id, "На этой карте бонусы отключены");
return PLUGIN_HANDLED;
}

set_bit(g_bIsSteam, id);
reset_bit(g_bProcedure, id);
set_task(3.0, "WelcomeMessage", id);
}
else
reset_bit(g_bIsSteam, id);
}

public client_disconnect(id)
reset_bit(g_bIsConnected, id);

public WelcomeMessage(id)
{
if(get_bit(g_bIsConnected, id))
{
static szName[32];
get_user_name(id, szName, charsmax(szName));

set_dhudmessage(COLOR_RED, COLOR_GREEN, COLOR_BLUE, -1.0, 0.3, 0, 0.0, TIME);
show_dhudmessage(id, "Привет, %s!", szName);
set_dhudmessage(COLOR_RED, COLOR_GREEN, COLOR_BLUE, -1.0, 0.34, 0, 0.0, TIME);
show_dhudmessage(id, "У Вас Steam, поэтому каждый раунд Вы будете получать бонусы");
}
}

public fw_CS_RoundRespawn_Post(id)
{
if(get_bit(g_bIsConnected, id) && get_bit(g_bIsSteam, id))
{
if(block)
{
return PLUGIN_HANDLED;
}

if(!get_bit(g_bProcedure, id))
{
cs_set_user_money(id, cs_get_user_money(id) + NUM_MONEY);
ColorChat(id, RED, "^1[^4%s^1] ^3Вы получаете бонус: ^1'%d$'", PREFIX, NUM_MONEY);
set_bit(g_bProcedure, id);
}
else
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
cs_set_user_bpammo(id, CSW_FLASHBANG, 2);
give_item(id, "weapon_smokegrenade");
ColorChat(id, RED, "^1[^4%s^1] ^3Вы получаете бонус: ^1'все гранаты'", PREFIX);
reset_bit(g_bProcedure, id);
}
}
}

stock bool:is_user_steam(id)
{
static dp_pointer;

if(dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
{
server_cmd("dp_clientinfo %d", id);
server_exec();
return (get_pcvar_num(dp_pointer) == 2) ? true : false;
}

new szAuthid[34];
get_user_authid(id, szAuthid, charsmax(szAuthid));

return (containi(szAuthid, "LAN") < 0);
}



Отредактировал: Cannabis, - 16.11.2015, 22:45
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ToL9N4eG
сообщение 16.11.2015, 22:47
Сообщение #3
Стаж: 13 лет

Сообщений: 227
Благодарностей: 35
Полезность: 14

Cannabis, я так понял, здесь без выдачи со второго раунда. И вот такие ошибки
Bad compil
Код
//// steam_bonus.sma
// D:\cs serv\TEST\cstrike\addons\amxmodx\scripting\steam_bonus.sma(41) : error 001: expected token: ";", but found "public"
// D:\cs serv\TEST\cstrike\addons\amxmodx\scripting\steam_bonus.sma(48) : error 001: expected token: ";", but found "-identifier-"
// D:\cs serv\TEST\cstrike\addons\amxmodx\scripting\steam_bonus.sma(49) : warning 217: loose indentation
// D:\cs serv\TEST\cstrike\addons\amxmodx\scripting\steam_bonus.sma(77) : warning 209: function "client_putinserver" should return a value
// D:\cs serv\TEST\cstrike\addons\amxmodx\scripting\steam_bonus.sma(121) : warning 209: function "fw_CS_RoundRespawn_Post" should return a value
//
// 2 Errors.
// Could not locate output file D:\cs serv\TEST\cstrike\addons\amxmodx\scripting\compiled\steam_bonus.amx (compile failed).
//
// Compilation Time: 0,09 sec
// ----------------------------------------
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
meloman
сообщение 16.11.2015, 23:00
Сообщение #4
Стаж: 10 лет

Сообщений: 746
Благодарностей: 373
Полезность: 628

Не лучше ли просто блокировать плагин на таких картах?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Cannabis
сообщение 16.11.2015, 23:03
Сообщение #5
Стаж: 11 лет

Сообщений: 162
Благодарностей: 42
Полезность: 37

Короче, опытные скриптеры помогите ему, а то я голову себе не хочу ломать.. sorry.gif
В своем вип меню, все четко работает, без ошибок. А тут ошибки.. хм. Ну да ладно, т.с сорян. :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ToL9N4eG
сообщение 16.11.2015, 23:05
Сообщение #6
Стаж: 13 лет

Сообщений: 227
Благодарностей: 35
Полезность: 14

Cannabis, да ничего. Спасибо хоть, что попытался!
MeJIoMaH, зачем еще кучу конфигов создавать? Да и все равно, как минимум, нужно сделать, чтоб бонусы выдавались со второго раунда.

Отредактировал: ToL9N4eG, - 16.11.2015, 23:06
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя adva
сообщение 16.11.2015, 23:15
Сообщение #7


Иконка группы

Стаж: 12 лет

Сообщений: 2543
Благодарностей: 1676
Полезность: 819

Меценат Меценат

это всё можно сделать через configs/maps/map.cfg
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ToL9N4eG
сообщение 16.11.2015, 23:19
Сообщение #8
Стаж: 13 лет

Сообщений: 227
Благодарностей: 35
Полезность: 14

adva, и как там сделать выдачу бонусов со второго раунда?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
EvilSMS
сообщение 16.11.2015, 23:20
Сообщение #9
Стаж: 10 лет

Сообщений: 1801
Благодарностей: 410
Полезность: < 0

Лови.

ps.gif извиняюсь забыл дописать себя в авторы) завтра допишу) я спать.

Отредактировал: EvilSMS, - 16.11.2015, 23:21
Прикрепленные файлы:
Прикрепленный файл  steam.sma ( 3,19 килобайт ) Кол-во скачиваний: 17
Прикрепленный файл  plugins_controller.zip ( 1,45 килобайт ) Кол-во скачиваний: 17
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
EvilSMS
сообщение 16.11.2015, 23:47
Сообщение #10
Стаж: 10 лет

Сообщений: 1801
Благодарностей: 410
Полезность: < 0

НЕ могу заснуть) вот сразу с блоками по картам.
Прикрепленные файлы:
Прикрепленный файл  steam.sma ( 3,4 килобайт ) Кол-во скачиваний: 31
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ToL9N4eG
сообщение 16.11.2015, 23:55
Сообщение #11
Стаж: 13 лет

Сообщений: 227
Благодарностей: 35
Полезность: 14

EvilSMS, Спасибо! Завтра буду тестить)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
meloman
сообщение 17.11.2015, 8:15
Сообщение #12
Стаж: 10 лет

Сообщений: 746
Благодарностей: 373
Полезность: 628

ToL9N4eG,
и что? так трудно создать один конфиг? ленивые вы люди
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ToL9N4eG
сообщение 17.11.2015, 12:51
Сообщение #13
Стаж: 13 лет

Сообщений: 227
Благодарностей: 35
Полезность: 14

MeJIoMaH, как ты в конфиге напишешь, чтоб плагин работал со второго раза?
и есть у меня такие конфиги
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GOOD FELLOW
сообщение 17.11.2015, 12:59
Сообщение #14


Иконка группы

Стаж: 13 лет

Сообщений: 2294
Благодарностей: 1187
Полезность: 890

ToL9N4eG, ошибки в том, что ";" не поставили в некоторых местах
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
meloman
сообщение 17.11.2015, 13:04
Сообщение #15
Стаж: 10 лет

Сообщений: 746
Благодарностей: 373
Полезность: 628

ToL9N4eG,
да причем тут префиксы? просто плагин не будет работать на картах и все ничего страшно что префиксы не будут работать потерпят =)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ExtraSens
сообщение 17.11.2015, 13:05
Сообщение #16


Стаж: 11 лет

Сообщений: 227
Благодарностей: 32
Полезность: 24

Cкрытый текст
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#define PLUGIN "Bonus"
#define VERSION "3.6"
#define AUTHOR "Jack Daniels"

#include <cstrike>

#define IsUserConnested(%1) (bool:(is_user_connected(%1)))

#define MsgId_SayText 76

#define m_iTeam 114
#define fm_cs_get_user_team_index(%1) get_pdata_int(%1, m_iTeam)

#define PREFIX_CHAT "^1[^4Bonus^1]"

#define NICE_PLAYER_ARMOR 100
// #define NICE_PLAYER_MONEY 1000

new Float:g_flNiceDamage[33];

new g_iMaxPlayers;

public plugin_init()
{
RegisterHam(Ham_TakeDamage, "player", "HamHook_TakeDamagePost", true);

register_logevent("LogEvent_RoundStart", 2, "0=World triggered", "1=Round_Start");

g_iMaxPlayers = get_maxplayers();
}

public client_disconnect(pId)
{
g_flNiceDamage[pId] = 0.0;
}

public HamHook_TakeDamagePost(iVictim, iInflictor, iAttacker, Float:flDamage, bitsDamage)
{
#if !defined DMG_GRENADE
#define DMG_GRENADE (1<<24)
#endif

if(!iAttacker || iAttacker > g_iMaxPlayers || iVictim == iAttacker)
return HAM_IGNORED;

if(fm_cs_get_user_team_index(iVictim) == fm_cs_get_user_team_index(iAttacker))
return HAM_IGNORED;

if(iInflictor == iAttacker || bitsDamage & DMG_GRENADE)
{
g_flNiceDamage[iAttacker] += flDamage;
}

return HAM_IGNORED;
}

public LogEvent_RoundStart()
{
set_task(1.0, "Task_GetPlayerBest");
set_task(1.3, "Task_ResetPlayerBest")
}

public Task_GetPlayerBest()
{
new iPlayers[32], iPlayersNum, pPlayer;
new Float:flpDamage, Float:iTempDamage, pId;
get_players(iPlayers, iPlayersNum, "h");

for(new i; i < iPlayersNum; i++)
{
pPlayer = iPlayers[i];

flpDamage = g_flNiceDamage[pPlayer];
if(flpDamage > iTempDamage)
{
pId = pPlayer;
iTempDamage = flpDamage;
}
}

if(iTempDamage)
{
static szName[32], szMessage[192];
get_user_name(pId, szName, charsmax(szName));

UTIL_GiveNicePlayer(pId);

for(new i = 1; i <= g_iMaxPlayers; i++)
{
if(!IsUserConnested(i)) continue;

formatex(szMessage, charsmax(szMessage), "%s !yЛучший игрок предыдущего раунда: !g%s !y- нанесенный урон: !g%d !y!", PREFIX_CHAT, szName, floatround(iTempDamage));
UTIL_SayText(i, szMessage);
UTIL_SayText(i, "%s !yОн получил: !g%d брони !yи !gкомплект гранат !y!", PREFIX_CHAT, NICE_PLAYER_ARMOR);
// UTIL_SayText(i, "%s !yОн получил: !g%d$!y, !g%d брони !yи !gкомплект гранат !y!", PREFIX_CHAT, NICE_PLAYER_MONEY, NICE_PLAYER_ARMOR);
// UTIL_SayText(i, "%s !yОн получил: !g%d$ !yи !gкомплект гранат !y!", PREFIX_CHAT, NICE_PLAYER_MONEY);
}
}
}

public Task_ResetPlayerBest()
{
for(new pId = 1; pId <= g_iMaxPlayers; pId++)
{
g_flNiceDamage[pId] = 0.0;
}
}

public UTIL_GiveNicePlayer(pId)
{
// cs_set_user_money(pId, (cs_get_user_money(pId) + NICE_PLAYER_MONEY), 1);
set_pev(pId, pev_armorvalue, NICE_PLAYER_ARMOR.0);
fm_give_item(pId, "weapon_flashbang");
fm_give_item(pId, "weapon_hegrenade");
fm_give_item(pId, "weapon_smokegrenade");
}

stock fm_give_item(id, const szItem[])
{
new iEntity = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, szItem));
if(!pev_valid(iEntity)) return 0;
new Float:fOrigin[3];
pev(id, pev_origin, fOrigin);
set_pev(iEntity, pev_origin, fOrigin);
set_pev(iEntity, pev_spawnflags, pev(iEntity, pev_spawnflags) | SF_NORESPAWN);
dllfunc(DLLFunc_Spawn, iEntity);
new iSolid = pev(iEntity, pev_solid);
dllfunc(DLLFunc_Touch, iEntity, id);
if(pev(iEntity, pev_solid) == iSolid)
{
engfunc(EngFunc_RemoveEntity, iEntity);
return -1;
}
return iEntity;
}

stock UTIL_SayText(pId, const szMessage[], any:...)
{
new iPlayers[32], iCount = 1;
new szMsg[191]; vformat(szMsg, charsmax(szMsg), szMessage, 3);

replace_all(szMsg, 190, "!g", "^4");
replace_all(szMsg, 190, "!y", "^1");
replace_all(szMsg, 190, "!t", "^3");

if(pId) iPlayers[0] = pId; else get_players(iPlayers, iCount, "ch");
{
for(new pId = 0; pId < iCount; pId++)
{
if(IsUserConnested(iPlayers[pId]))
{
message_begin(MSG_ONE_UNRELIABLE, MsgId_SayText, _, iPlayers[pId]);
write_byte(iPlayers[pId]);
write_string(szMsg);
message_end();
}
}
}
}

Кто-нибудь об этом стим бонус что-нибудь знает?

Отредактировал: ExtraSens, - 17.11.2015, 13:05
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ToL9N4eG
сообщение 17.11.2015, 13:32
Сообщение #17
Стаж: 13 лет

Сообщений: 227
Благодарностей: 35
Полезность: 14

ExtraSens, это не стим бонус, а бонус лучшему игроку прошлого раунда
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ExtraSens
сообщение 18.11.2015, 16:44
Сообщение #18


Стаж: 11 лет

Сообщений: 227
Благодарностей: 32
Полезность: 24

ToL9N4eG, да, уже после увидел
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: