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

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

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

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

Как встроить GoldenAK в AES

, Покупка золотого оружия за бонусы AES
Статус пользователя emery2
сообщение 21.4.2015, 16:48
Сообщение #1
Стаж: 11 лет

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

Огромная просьба помочь с плагином))

Речь идет о плагине AES (Advanced Experience System)
В игре за фраги дают бонусы, введя в чат /anew открывается меню с выбором бонусных предметов (m4a1, ak47, гранаты)
Помогите встроить вместо этого оружия золотое, Золотой Ак, Золотую Мку

Вот исходник плагина:
Код:
/* 
Advanced Experience System
by serfreeman1337 http://gf.hldm.org/
*/

/*
Random CSTRIKE Bonuses
*/

#include <amxmodx>
#include <cstrike>
#include <hamsandwich>
#include <fakemeta_util>

#include <colorchat>

#include <aes_main>

#define PLUGIN "AES: Bonus CSTRIKE"
#define VERSION "0.4"
#define AUTHOR "serfreeman1337"

// биты? да это же круто!
enum _:{
SUPER_NICHEGO,
SUPER_NADE,
SUPER_DEAGLE
}

new g_players[33],g_maxplayers
new bonusEnablePointer,firstRoundPointer,aNewUseTime,buyTimePointer
new bool:st

new HamHook: hamSpawn

new iRound
new Float:g_fBuyTime[33]

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

hamSpawn = RegisterHam(Ham_Spawn,"player","On_Player_Spawn")
RegisterHam(Ham_Killed,"player","On_Player_Killed")
RegisterHam(Ham_TakeDamage,"player","On_Player_TakeDamage")

firstRoundPointer = register_cvar("aes_bonus_firstround","3")
aNewUseTime = register_cvar("aes_bonus_time","-1.0")

register_logevent("RoundStart",2,"0=World triggered","1=Round_Start")
register_logevent("RoundRestart",2,"0=World triggered","1=Game_Commencing")
register_event("TextMsg","RoundRestart","a","2&#Game_will_restart_in")

g_maxplayers = get_maxplayers()
}

public RoundRestart(){
if(!st)
return

iRound = 0

set_pcvar_num(bonusEnablePointer,0)
}

public RoundStart(){
if(!st)
return

iRound ++

if(iRound < get_pcvar_num(firstRoundPointer))
set_pcvar_num(bonusEnablePointer,0)
else{
set_pcvar_num(bonusEnablePointer,1)
}
}

public plugin_cfg(){
bonusEnablePointer = get_cvar_pointer("aes_bonus_enable")
buyTimePointer = get_cvar_pointer("mp_buytime")

if(get_pcvar_float(aNewUseTime) > 0.0)
buyTimePointer = aNewUseTime
else if(get_pcvar_float(aNewUseTime) == 0.0){
buyTimePointer = 0
DisableHamForward(hamSpawn)
}

if(!bonusEnablePointer){
log_amx("get cvar pointer fail for ^"aes_bonus_enable^"")
set_fail_state("get cvar pointer fail")
}

st = get_pcvar_num(bonusEnablePointer) == 1 ? true : false
}

public aes_on_anew_command(id){
if(iRound < get_pcvar_num(firstRoundPointer)){
client_print_color(id,0,"%L %L",id,"AES_TAG",id,"AES_ANEW_ROUND",get_pcvar_num(firstRoundPointer))

return PLUGIN_HANDLED
}

return PLUGIN_CONTINUE
}

public client_disconnect(id){
g_fBuyTime[id] = 0.0
g_players[id] = SUPER_NICHEGO // сбрасываем возможности на дисконнекте
}

public On_Player_Spawn(id)
g_fBuyTime[id] = get_gametime() + 60 * get_pcvar_float(buyTimePointer)

public On_Player_Killed(id)
g_players[id] = SUPER_NICHEGO // сбрасываем возможности при смерти

public On_Player_TakeDamage(victim,idinflictor,idattacker,Float:damage,damagebits){
if(!idattacker || idattacker > g_maxplayers)
return HAM_IGNORED

if(!g_players[idattacker])
return HAM_IGNORED

if(0 < idinflictor <= g_maxplayers){
new wp = get_user_weapon(idattacker)

if(wp == CSW_DEAGLE && (g_players[idattacker] & (1 << SUPER_DEAGLE)))
SetHamParamFloat(4,damage * 2.0)
}else{
new classname[32]
pev(idinflictor,pev_classname,classname,31)

if(!strcmp(classname,"grenade") && (g_players[idattacker] & (1 << SUPER_NADE))){
set_task(0.5,"deSetNade",idattacker)

SetHamParamFloat(4,damage * 3.0)
}
}

return HAM_IGNORED
}

// сбарсываем множитель урона гранаты
public deSetNade(id)
g_players[id] &= ~(1<<SUPER_NADE)

public roundBonus_GiveDefuser(id,cnt){
if(!cnt)
return

if(cs_get_user_team(id) == CS_TEAM_CT)
cs_set_user_defuse(id)
}

public roundBonus_GiveNV(id,cnt){
if(!cnt)
return

cs_set_user_nvg(id)
}

public roundBonus_GiveArmor(id,cnt){
if(!cnt)
return

switch(cnt){
case 1: cs_set_user_armor(id,100,CS_ARMOR_KEVLAR)
case 2: cs_set_user_armor(id,100,CS_ARMOR_VESTHELM)
default: cs_set_user_armor(id,cnt,CS_ARMOR_VESTHELM)
}
}

public roundBonus_GiveHP(id,cnt){
if(!cnt)
return

fm_set_user_health(id,(get_user_health(id) + cnt))
}

#define CHECK_ALIVE(%1) \
if(!is_user_alive(%1)){\
client_print_color(id,0,"%L %L",id,"AES_TAG",id,"AES_ANEW_ALIVE"); \
return 0; \
}

#define CHECK_ROUNDTIME(%1) \
if(get_gametime() > g_fBuyTime[id] && buyTimePointer){\
client_print(id,print_center,"%L",id,"AES_ANEW_BUYTIME",floatround(60.0 * get_pcvar_float(buyTimePointer))); \
return 0; \
}

public pointBonus_GiveM4a1gold(id){
CHECK_ALIVE(id)
CHECK_ROUNDTIME(id)

DropWeaponSlot(id,1)

fm_give_item(id,"weapon_m4a1gold")
cs_set_user_bpammo(id,CSW_M4A1,90)

return 1
}

public pointBonus_GiveAk47gold(id){
CHECK_ALIVE(id)
CHECK_ROUNDTIME(id)

DropWeaponSlot(id,1)

fm_give_item(id,"weapon_ak47gold")
cs_set_user_bpammo(id,CSW_AK47,90)

return 1
}

public pointBonus_GiveAWP(id){
CHECK_ALIVE(id)
CHECK_ROUNDTIME(id)

DropWeaponSlot(id,1)

fm_give_item(id,"weapon_awp")
cs_set_user_bpammo(id,CSW_AWP,30)

return 1
}

public pointBonus_Give10000M(id){
CHECK_ALIVE(id)
CHECK_ROUNDTIME(id)

new money = cs_get_user_money(id) + 10000
money = clamp(money,0,16000)
cs_set_user_money(id,money)

return 1
}

public pointBonus_Set200HP(id){
CHECK_ALIVE(id)
CHECK_ROUNDTIME(id)

fm_set_user_health(id,200)

return 1
}

public pointBonus_GiveMegaGrenade(id){
CHECK_ALIVE(id)
CHECK_ROUNDTIME(id)

if(!user_has_weapon(id,CSW_HEGRENADE))
fm_give_item(id,"weapon_hegrenade")

g_players[id] |= (1<<SUPER_NADE)

client_print_color(id,0,"%L %L",id,"AES_TAG",id,"AES_BONUS_GET_MEGAGRENADE")

return 1
}

public pointBonus_GiveMegaDeagle(id){
CHECK_ALIVE(id)
CHECK_ROUNDTIME(id)

DropWeaponSlot(id,2)

fm_give_item(id,"weapon_deagle")
cs_set_user_bpammo(id,CSW_DEAGLE,35) // какой максимум?

g_players[id] |= (1<<SUPER_DEAGLE)

client_print_color(id,0,"%L %L",id,"AES_TAG",id,"AES_BONUS_GET_MEGADEAGLE")

return 1
}

DropWeaponSlot( iPlayer, iSlot ){
static const m_rpgPlayerItems = 367; // player
static const m_pNext = 42; // weapon_*
static const m_iId = 43; // weapon_*

if( !( 1 <= iSlot <= 2 ) ) {
return 0;
}

new iCount;

new iEntity = get_pdata_cbase( iPlayer, ( m_rpgPlayerItems + iSlot ), 5 );
if( iEntity > 0 ) {
new iNext;
new szWeaponName[ 32 ];

do {
iNext = get_pdata_cbase( iEntity, m_pNext, 4 );

if( get_weaponname( get_pdata_int( iEntity, m_iId, 4 ), szWeaponName, charsmax( szWeaponName ) ) ) {
engclient_cmd( iPlayer, "drop", szWeaponName );

iCount++;
}
} while( ( iEntity = iNext ) > 0 );
}

return iCount;
}


И весь плагин прикрепил.Прикрепленный файл  4487_aes_v0.4.7z ( 87,86 килобайт ) Кол-во скачиваний: 14


Отредактировал: iShot, - 24.8.2016, 15:16
Причина: Выдано устное предупреждение!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя khanter
сообщение 21.4.2015, 20:07
Сообщение #2
Стаж: 11 лет

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

Протестируй.
Добавил m4a1 gold.
Плагин где сам m4a1 ставь выше чем основу.
Прикрепленный файл  TEST_m4a1gold.rar ( 1,21 мегабайт ) Кол-во скачиваний: 41
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя emery2
сообщение 22.4.2015, 23:41
Сообщение #3
Стаж: 11 лет

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

Цитата(khanter @ 21.4.2015, 21:07) *
Протестируй.
Добавил m4a1 gold.
Плагин где сам m4a1 ставь выше чем основу.
Прикрепленный файл  TEST_m4a1gold.rar ( 1,21 мегабайт ) Кол-во скачиваний: 41

пробую взять m4a1
выдает...
[AES] Ошибка, что то не так!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MrTsar
сообщение 24.8.2016, 12:37
Сообщение #4


Стаж: 13 лет

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

Доброго времени!
Также заинтересовал этот вопрос.
Хочу добавить goldenAK в бонусную систему aes (/anew).

Но вот не пойму как нужно сделать. Нашел инфу что нужно добавлять в файл bonus.ini (смотри ниже). Но как вызвать функцию из плагина золотого АК не могу разобраться.
bonus.ini
Код:
[bonus_menu]

<call>
plugin = aes_bonus_cstrike.amxx
name = LANG_AES_BONUS_M4A1
function = pointBonus_GiveM4a1
points = 2

<call>
plugin = aes_bonus_cstrike.amxx
name = LANG_AES_BONUS_AK47
function = pointBonus_GiveAk47
points = 2

<call>
plugin = aes_bonus_cstrike.amxx
name = LANG_AES_BONUS_AWP
function = pointBonus_GiveAWP
points = 5

<call>
plugin = aes_bonus_cstrike.amxx
name = LANG_AES_BONUS_10000M
function = pointBonus_Give10000M
points = 5

<call>
plugin = aes_bonus_cstrike.amxx
name = LANG_AES_BONUS_200HP
function = pointBonus_Set200HP
points = 15

<call>
plugin = aes_bonus_cstrike.amxx
name = LANG_AES_BONUS_MEGAGRENADE
function = pointBonus_GiveMegaGrenade
points = 10

<call>
plugin = aes_bonus_cstrike.amxx
name = LANG_AES_BONUS_MEGADEAGLE
function = pointBonus_GiveMegaDeagle
points = 10

; serfreeman1337
; Nov. 2013


А вот пояснение от самого автора (если я не ошибаюсь) по добавлению предметов, но что то я не понимаю как сделать:
Cкрытый текст
Бонус система:

Идея позаимствована у Army Ranks Ultimate и развита в сторону универсальности. В отличии от Army Ranks Ultimate можно задать что именно будет выдаваться, а не просто вкл/выкл простым кваром.

Вся настройка бонус системы находится в файле addons/amxmodx/configs/aes/bonus.ini.

Систему бонусов можно полностью перенастроить. Есть возможность задать что и на каком уровне будет выдаваться игроку на спавне, задать на что можно потратить бонусные очки.

Конфигурация бонус системы схожа с плагином HLPresents.

Конфиг состоит из 2х блоков:

[spawn] - что и на каком уровне игроку будут выдываться предметы и пр.
[bonus_menu] - предметы в /anew меню.

Каждый новый новый предмет должен быть определен конструкцией <give> или <call>.

Конструкция <give> - выдача игроку предмета в определении item.
Конструкция <call> - вызов функции из другого плагина.

Определения:

item - класснейм предмета для выдачи в конструкции <give>.
name - название предмета в меню, вы можете указать в начале LANG_ для использования значения из словаря aes.txt.
levels - первая цифра отвечает за звание "Рядовой", вторая за "Ефрейтор" и так далее. Отвечает сколько предметов выдавать в конструкции <give>. Передается в функцию 2ым параметром в конструкции .
plugin - имя файла плагина для конструкции <call>.
function - имя функции плагина в конструкции <call>. Первым параметром передается id игрока, 2ым - значение из levels. Используйте -1 чтобы не вызывать функцию.
points - кол-во очков бонуса, которые нужны для активации предмета.


Прикрепляю исходник от золотого ак из которого нужно както извлеч нужный код и вставить в бонус. Прикрепленный файл  GoldenAk.sma ( 6,48 килобайт ) Кол-во скачиваний: 19


Помогите пожалуйста, игроки уже давно об этом просят.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя BaJIepbI4
сообщение 24.8.2016, 12:43
Сообщение #5


Стаж: 11 лет

Сообщений: 457
Благодарностей: 115
Полезность: 456

В плагине золотого оружия нужно создать нативы и использовать их в плагине aes_bonus_cstrike.
Пример:
В плагине золотого оружия:
Код:

public plugin_natives()
{
register_native("give_gold_weapon", "native_give_gold_weapon", 1)
}


В плагине aes_bonus_cstrike:
Код:

public pointBonus_giveak(id)
{
give_gold_weapon(id, 1)
return true
}




Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя usercn
сообщение 24.8.2016, 12:55
Сообщение #6


Стаж: 12 лет

Сообщений: 341
Благодарностей: 140
Полезность: 495

Кривой у тебя Голд АК без модели на полу.


Просунутий сервер з максимумом зброї, можливо старійший в Україні
[UA] DNET CS Public Server #1
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MrTsar
сообщение 24.8.2016, 12:57
Сообщение #7


Стаж: 13 лет

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

BaJIepbI4,
Можете, помочь мне это сделать? Я не знаю что и как просто(

Цитата(usercn @ 24.8.2016, 14:55) *
Кривой у тебя Голд АК без модели на полу.

С этого сайта взял.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя BaJIepbI4
сообщение 24.8.2016, 13:33
Сообщение #8


Стаж: 11 лет

Сообщений: 457
Благодарностей: 115
Полезность: 456

MrTsar, советую обратиться к опытным скриптерам, которые за небольшое вознаграждение Вам сделают все как надо. Я просто знаю схему работы, а сам код я не пишу :)



Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя georgeml
сообщение 24.8.2016, 14:40
Сообщение #9
Стаж: 12 лет

Сообщений: 1467
Благодарностей: 439
Полезность: 423

Неужели сложно найти нормальные плагины sad.gif
aes.txt

AES_BONUS_AK47GOLD = AK47 Gold

bonus.ini

<call>
plugin = GoldenAk.amxx
name = LANG_AES_BONUS_AK47GOLD
function = pointBonus_GiveGoldenAk47
points = 3


[attachment=41229:GoldenAk.sma]
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя MrTsar
сообщение 24.8.2016, 15:57
Сообщение #10


Стаж: 13 лет

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

georgeml,
Не работает!
Пишет: [AES] Что-то пошло не так.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Unknown
сообщение 24.8.2016, 16:00
Сообщение #11
Стаж: 10 лет

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

georgeml, думаешь твой вариант "нормальный" ? Быдлокод не более...


Аткажитесъ от плагенов бес исходника.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя georgeml
сообщение 24.8.2016, 16:23
Сообщение #12
Стаж: 12 лет

Сообщений: 1467
Благодарностей: 439
Полезность: 423

Цитата(MrTsar @ 24.8.2016, 23:57) *
georgeml,
Не работает!
Пишет: [AES] Что-то пошло не так.

Все работает!
Пропишите ниже плагинов AES.. На будущее- не заставляйте гадать ЧТО не работает и какие ошибки выдает. Иногда, не возникает особого желания пихать это себе на сервер для тестов. Но, спасибо, что покричали здесь.. Я уже подумал, что все научились ставить плагины и уже помогать некому будет..

Цитата(Unknown @ 25.8.2016, 0:00) *
georgeml, думаешь твой вариант "нормальный" ? Быдлокод не более...

В отличие от "некоторых", добавление двух строк кода не делает его Моим.
Скачиваешь "мой" код и начальный, смотришь изменения и идешь брызгать слюной.. Думаю, это- несложный алгоритм

PS// Держите в довесок, а то, мало ли что..
[attachment=41234:aes.zip]

Отредактировал: georgeml, - 24.8.2016, 16:39
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя MrTsar
сообщение 24.8.2016, 18:00
Сообщение #13


Стаж: 13 лет

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

georgeml,
Прошу прощения, все реально работает! Банально не закинул на серв, измененный файл plugins.ini.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MrTsar
сообщение 25.8.2016, 7:23
Сообщение #14


Стаж: 13 лет

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

georgeml,

Есть один косяк! Голд Ак - бесплатный, тоесть очки бонусные не снимает!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя georgeml
сообщение 25.8.2016, 8:07
Сообщение #15
Стаж: 12 лет

Сообщений: 1467
Благодарностей: 439
Полезность: 423

Цитата(MrTsar @ 25.8.2016, 15:23) *
georgeml,
Есть один косяк! Голд Ак - бесплатный, тоесть очки бонусные не снимает!

[attachment=41240:GoldenAk.sma]

ps
Желание отвечать на пост обратно-пропорционально количеству восклицательных знаков в нем


Отредактировал: georgeml, - 25.8.2016, 8:18
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя MrTsar
сообщение 25.8.2016, 11:08
Сообщение #16


Стаж: 13 лет

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

georgeml,
Работает!

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