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

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

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

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

Подарки, как сделать чтобы они кружились и была подсветка их.

Статус пользователя DRUID
сообщение 17.12.2014, 16:48
Сообщение #1
Стаж: 12 лет

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

Вся суть в названии темы.
Есть добровольцы мне помочь?

Естественно код:

Код:

#include <amxmodx>
#include <amxmisc>
#include <fakemeta_util>
#include <hamsandwich>
#include <fun>
#include <presents_guns>
#include <WPMGPrintChatColor>

#define is_entity_player(%1) (1<=%1<=g_maxPlayers)
#define PRESENT_CLASSNAME "gift"

#define MODEL_PRESENT "models/presents.mdl"
#define MODEL_SKINS 3
#define MODEL_SUBMODELS 5

#define MAX_MONEY 16000 // Максимальное кол-во денег
#define MAX_ARMOR 100 // Максимальное кол-во брони
#define MAX_HEALTH 100 // Максимальное кол-во здоровья

#if cellbits == 32
#define OFFSET_CSMONEY 115
#else
#define OFFSET_CSMONEY 140
#endif

new
g_msgMoney,
g_infoTarget,
g_maxPlayers,
bool: g_registration

public plugin_precache()
{
precache_model(MODEL_PRESENT)
}

public plugin_init()
{
register_plugin("Presents", "0.8", "Psycrow & ropblHbl4 & 3BEPb")

RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
// 0 - убрает подарок.
register_cvar("dp_gift_money_min","1000") // Минимальная количество денег за собрынный подарок.
register_cvar("dp_gift_money_max","5000") // Максимальная количество денег за собрынный подарок.
register_cvar("dp_gift_armor","50") // Сколько Брони можно получить в подарке.
register_cvar("dp_gift_health","30") // Сколько Здоровья можно получить в подарке.
register_cvar("dp_gift_HE","1") // Сколько Осколочных гранат можно получить в подарке.
register_cvar("dp_gift_gun","1") // Выдавать Пушку в подарке.
register_cvar("dp_gift_fake","1") // Пустой подарок.

g_infoTarget = engfunc(EngFunc_AllocString, "info_target")
}

public fw_PlayerKilled(iVictim)
{
new iVictimLoc[3]
new Float:fVictimLoc[3]

get_user_origin(iVictim, iVictimLoc)
IVecFVec(iVictimLoc, fVictimLoc)

create_gift(fVictimLoc)
}

public create_gift(const Float: fOrigin[3])
{
new ent = engfunc(EngFunc_CreateNamedEntity, g_infoTarget)
if(!pev_valid(ent)) return

if(!g_registration)
{
RegisterHamFromEntity(Ham_Touch, ent, "fw_TouchGift")

g_maxPlayers = get_maxplayers()
g_msgMoney = get_user_msgid("Money")

g_registration = true
}

engfunc(EngFunc_SetModel, ent, MODEL_PRESENT)
set_pev(ent, pev_origin, fOrigin)
set_pev(ent, pev_solid, SOLID_TRIGGER)
set_pev(ent, pev_movetype, MOVETYPE_FLY)
set_pev(ent, pev_gravity, 1.0)
set_pev(ent, pev_classname, PRESENT_CLASSNAME)
set_pev(ent, pev_skin, random_num(0, MODEL_SKINS - 1))
set_pev(ent, pev_body, random_num(0, MODEL_SUBMODELS - 1))
engfunc(EngFunc_DropToFloor, ent)
engfunc(EngFunc_SetSize, ent, Float:{-15.0, -15.0, 0.0}, Float:{15.0, 15.0, 30.0})
fm_set_rendering(ent, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 255)
}

public fw_TouchGift(ent, id)
{
if(!is_entity_player(id))
return

if(!is_user_alive(id) || !pev_valid(ent))
return

static className[32]
pev(ent, pev_classname, className, 31)
if(!equal(className, PRESENT_CLASSNAME))
return

engfunc(EngFunc_SetModel, ent, MODEL_PRESENT)
set_pev(ent, pev_skin, random_num(0, MODEL_SKINS - 1))
set_pev(ent, pev_body, random_num(0, MODEL_SUBMODELS - 1))

engfunc(EngFunc_RemoveEntity, ent)
give_gift(id)
}

give_gift(id) // Выдает случайный подарок.
{
static loopDestroy
loopDestroy++

if(loopDestroy > 20)
{
PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[Подарки] !tПодарок оказался пустым!")
loopDestroy = 0
return
}

new max_random_gift = 6 //Сколько видов подарков.
switch(random_num(1, max_random_gift))
{
case 1:
{
new reward = random_num(get_cvar_num("dp_gift_money_min"), get_cvar_num("dp_gift_money_max"))
new curr_money = get_pdata_int(id, OFFSET_CSMONEY)
if(curr_money + reward > MAX_MONEY)
reward = MAX_MONEY - curr_money

if(reward)
{
set_pdata_int(id, OFFSET_CSMONEY, curr_money + reward)

message_begin(MSG_ONE, g_msgMoney, _, id)
write_long(curr_money + reward)
write_byte(1)
message_end()

PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[Подарки] !tВы получаете !g$%d!", reward)
loopDestroy = 0
}
else give_gift(id)
}
case 2:
{
new armor = get_cvar_num("dp_gift_armor")
new curr_armor = get_user_armor(id)
if(curr_armor + armor > MAX_ARMOR)
armor = MAX_ARMOR - curr_armor

if(armor)
{
fm_set_user_armor(id, get_user_armor(id) + armor)
PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[Подарки] !tВы получаете !g%d Брони!", armor)
loopDestroy = 0
}
else give_gift(id)
}
case 3:
{
new health = get_cvar_num("dp_gift_health")
new curr_health = get_user_health(id)
if(curr_health + health > MAX_HEALTH)
health = MAX_HEALTH - curr_health

if(health)
{
fm_set_user_health(id, pev(id, pev_health) + health)
PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[Подарки] !tВы получаете !g%d Здоровья!", health)
loopDestroy = 0
}
else give_gift(id)
}
case 4:
{
new hes = get_cvar_num("dp_gift_HE")
if(hes)
{
if(!user_has_weapon(id, CSW_HEGRENADE))
{
fm_give_item(id, "weapon_hegrenade")
cs_set_user_bpammo(id, CSW_HEGRENADE, hes)
}
else cs_set_user_bpammo(id, CSW_HEGRENADE, cs_get_user_bpammo(id, CSW_HEGRENADE) + hes)

PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[Подарки] !tВы получаете !g%d Осколочную гранату!", hes)
loopDestroy = 0
}
else give_gift(id)
}
case 5:
{
new gun = get_cvar_num("dp_gift_gun")
if(gun)
{
give_fglauncher(id)
PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[Подарки] !tВы получаете !gФейерверк-Пушку!")
loopDestroy = 0
}
else give_gift(id)
}
case 6:
{
new fake = get_cvar_num("dp_gift_fake")
if(fake)
{
PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[Подарки] !tПодарок оказался пустым!")
loopDestroy = 0
}
else give_gift(id)
}
}
}


Код давал BlackSmoke еще в марте этого года, писал нужно вставить в "info_present" свой CLASSNAME подарков, но ничего не получилось.

Код:
register_think("info_present", "FwdDrPresentThink")




CLASSNAME:
КОД: ВЫДЕЛИТЬ ВСЁ
gift


А это куда нибудь в код:


Код:

public FwdDrPresentThink(ent)
{
if(!is_valid_ent(ent))
return

static Float:angles[3], Float:origin[3];
// Вращение
entity_get_vector(ent,EV_VEC_angles,angles)
angles[1]-=2.0
entity_set_vector(ent,EV_VEC_angles,angles)
// след.синк
entity_set_float(ent, EV_FL_nextthink, get_gametime()+0.1);
}



Будьте добры, помогите, я уже не раз создавал подобные темы за последние 2-3 года, таки не добился своего.
Прикрепленные файлы:
Прикрепленный файл  scripting.rar ( 9,54 килобайт ) Кол-во скачиваний: 15
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
voed
сообщение 17.12.2014, 17:43
Сообщение #2
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

У тебя в плагине энтити класса info_target, значит, в твоем коде тоже нужно использовать info_target

upd а нет, все-таки класс gift

register_think(PRESENT_CLASSNAME, "FwdDrPresentThink")

Отредактировал: voed, - 17.12.2014, 18:21
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DRUID
сообщение 17.12.2014, 18:30
Сообщение #3
Стаж: 12 лет

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

Цитата(voed @ 17.12.2014, 17:39) *
У тебя в плагине энтити класса info_target, значит, в твоем коде тоже нужно использовать info_target

upd а нет, все-таки класс gift

register_think(PRESENT_CLASSNAME, "FwdDrPresentThink")

Не помогло...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 17.12.2014, 19:21
Сообщение #4
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

Цитата(DRUID @ 17.12.2014, 17:26) *
Не помогло...

Код:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta_util>
#include <hamsandwich>
#include <fun>
#include <presents_guns>
#include <WPMGPrintChatColor>
#include <engine>

#define is_entity_player(%1) (1<=%1<=g_maxPlayers)
#define PRESENT_CLASSNAME "gift"

#define MODEL_PRESENT "models/presents.mdl"
#define MODEL_SKINS 3
#define MODEL_SUBMODELS 5

#define MAX_MONEY 16000 // Максимальное кол-во денег
#define MAX_ARMOR 100 // Максимальное кол-во брони
#define MAX_HEALTH 100 // Максимальное кол-во здоровья

#if cellbits == 32
#define OFFSET_CSMONEY 115
#else
#define OFFSET_CSMONEY 140
#endif

new
g_msgMoney,
g_infoTarget,
g_maxPlayers,
bool: g_registration

public plugin_precache()
{
precache_model(MODEL_PRESENT)
}

public plugin_init()
{
register_plugin("Presents", "0.8", "Psycrow & ropblHbl4 & 3BEPb")

RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
// 0 - убрает подарок.
register_cvar("dp_gift_money_min","1000") // Минимальная количество денег за собрынный подарок.
register_cvar("dp_gift_money_max","5000") // Максимальная количество денег за собрынный подарок.
register_cvar("dp_gift_armor","50") // Сколько Брони можно получить в подарке.
register_cvar("dp_gift_health","30") // Сколько Здоровья можно получить в подарке.
register_cvar("dp_gift_HE","1") // Сколько Осколочных гранат можно получить в подарке.
register_cvar("dp_gift_gun","1") // Выдавать Пушку в подарке.
register_cvar("dp_gift_fake","1") // Пустой подарок.

g_infoTarget = engfunc(EngFunc_AllocString, "info_target")
register_think(PRESENT_CLASSNAME, "FwdDrPresentThink")
}

public fw_PlayerKilled(iVictim)
{
new iVictimLoc[3]
new Float:fVictimLoc[3]

get_user_origin(iVictim, iVictimLoc)
IVecFVec(iVictimLoc, fVictimLoc)

create_gift(fVictimLoc)
}

public create_gift(const Float: fOrigin[3])
{
new ent = engfunc(EngFunc_CreateNamedEntity, g_infoTarget)
if(!pev_valid(ent)) return

if(!g_registration)
{
RegisterHamFromEntity(Ham_Touch, ent, "fw_TouchGift")

g_maxPlayers = get_maxplayers()
g_msgMoney = get_user_msgid("Money")

g_registration = true
}

engfunc(EngFunc_SetModel, ent, MODEL_PRESENT)
set_pev(ent, pev_origin, fOrigin)
set_pev(ent, pev_solid, SOLID_TRIGGER)
set_pev(ent, pev_movetype, MOVETYPE_FLY)
set_pev(ent, pev_gravity, 1.0)
set_pev(ent, pev_classname, PRESENT_CLASSNAME)
set_pev(ent, pev_skin, random_num(0, MODEL_SKINS - 1))
set_pev(ent, pev_body, random_num(0, MODEL_SUBMODELS - 1))
set_pev(ent, pev_nextthink, get_gametime() + 0.1)
engfunc(EngFunc_DropToFloor, ent)
engfunc(EngFunc_SetSize, ent, Float:{-15.0, -15.0, 0.0}, Float:{15.0, 15.0, 30.0})
fm_set_rendering(ent, kRenderFxGlowShell, 255, 0, 0, kRenderTransAlpha, 255)

}

public fw_TouchGift(ent, id)
{
if(!is_entity_player(id))
return

if(!is_user_alive(id) || !pev_valid(ent))
return

static className[32]
pev(ent, pev_classname, className, 31)
if(!equal(className, PRESENT_CLASSNAME))
return

engfunc(EngFunc_SetModel, ent, MODEL_PRESENT)
set_pev(ent, pev_skin, random_num(0, MODEL_SKINS - 1))
set_pev(ent, pev_body, random_num(0, MODEL_SUBMODELS - 1))

engfunc(EngFunc_RemoveEntity, ent)
give_gift(id)
}

give_gift(id) // Выдает случайный подарок.
{
static loopDestroy
loopDestroy++

if(loopDestroy > 20)
{
PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[Подарки] !tПодарок оказался пустым!")
loopDestroy = 0
return
}

new max_random_gift = 6 //Сколько видов подарков.
switch(random_num(1, max_random_gift))
{
case 1:
{
new reward = random_num(get_cvar_num("dp_gift_money_min"), get_cvar_num("dp_gift_money_max"))
new curr_money = get_pdata_int(id, OFFSET_CSMONEY)
if(curr_money + reward > MAX_MONEY)
reward = MAX_MONEY - curr_money

if(reward)
{
set_pdata_int(id, OFFSET_CSMONEY, curr_money + reward)

message_begin(MSG_ONE, g_msgMoney, _, id)
write_long(curr_money + reward)
write_byte(1)
message_end()

PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[Подарки] !tВы получаете !g$%d!", reward)
loopDestroy = 0
}
else give_gift(id)
}
case 2:
{
new armor = get_cvar_num("dp_gift_armor")
new curr_armor = get_user_armor(id)
if(curr_armor + armor > MAX_ARMOR)
armor = MAX_ARMOR - curr_armor

if(armor)
{
fm_set_user_armor(id, get_user_armor(id) + armor)
PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[Подарки] !tВы получаете !g%d Брони!", armor)
loopDestroy = 0
}
else give_gift(id)
}
case 3:
{
new health = get_cvar_num("dp_gift_health")
new curr_health = get_user_health(id)
if(curr_health + health > MAX_HEALTH)
health = MAX_HEALTH - curr_health

if(health)
{
fm_set_user_health(id, pev(id, pev_health) + health)
PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[Подарки] !tВы получаете !g%d Здоровья!", health)
loopDestroy = 0
}
else give_gift(id)
}
case 4:
{
new hes = get_cvar_num("dp_gift_HE")
if(hes)
{
if(!user_has_weapon(id, CSW_HEGRENADE))
{
fm_give_item(id, "weapon_hegrenade")
cs_set_user_bpammo(id, CSW_HEGRENADE, hes)
}
else cs_set_user_bpammo(id, CSW_HEGRENADE, cs_get_user_bpammo(id, CSW_HEGRENADE) + hes)

PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[Подарки] !tВы получаете !g%d Осколочную гранату!", hes)
loopDestroy = 0
}
else give_gift(id)
}
case 5:
{
new gun = get_cvar_num("dp_gift_gun")
if(gun)
{
give_fglauncher(id)
PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[Подарки] !tВы получаете !gФейерверк-Пушку!")
loopDestroy = 0
}
else give_gift(id)
}
case 6:
{
new fake = get_cvar_num("dp_gift_fake")
if(fake)
{
PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[Подарки] !tПодарок оказался пустым!")
loopDestroy = 0
}
else give_gift(id)
}
}
}

public FwdDrPresentThink(ent)
{
if(!is_valid_ent(ent))
return
static Float:angles[3]
// Вращение
entity_get_vector(ent,EV_VEC_angles,angles)
angles[1]-=2.0
entity_set_vector(ent,EV_VEC_angles,angles)
// след.синк
entity_set_float(ent, EV_FL_nextthink, get_gametime()+0.1);
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DRUID
сообщение 17.12.2014, 19:54
Сообщение #5
Стаж: 12 лет

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

[media]https://www.youtube.com/watch?v=pTOmVKHqNOY&feature=youtu.be[/media]

Спасибо, работает .

И еще один вопрос, как сделать чтобы было " рандомное свечение подарков ", то есть любой цвет.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 17.12.2014, 20:04
Сообщение #6
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

DRUID, можно так:
Код:
fm_set_rendering(ent, kRenderFxGlowShell, 255, 0, 0, kRenderTransAlpha, 255)

заменить на
Код:
	new rand[3]
rand[0] = random_num(0, 255)
rand[1] = random_num(0, 255)
rand[2] = random_num(0, 255)
fm_set_rendering(ent, kRenderFxGlowShell, rand[0], rand[1], rand[2], kRenderTransAlpha, 255)

У каждого подарка будет рандомный цвет свечения

Отредактировал: voed, - 17.12.2014, 20:05
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DRUID
сообщение 17.12.2014, 20:08
Сообщение #7
Стаж: 12 лет

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

Цитата(voed @ 17.12.2014, 20:00) *
DRUID, можно так:
Код:
fm_set_rendering(ent, kRenderFxGlowShell, 255, 0, 0, kRenderTransAlpha, 255)

заменить на
Код:
	new rand[3]
rand[0] = random_num(0, 255)
rand[1] = random_num(0, 255)
rand[2] = random_num(0, 255)
fm_set_rendering(ent, kRenderFxGlowShell, rand[0], rand[1], rand[2], kRenderTransAlpha, 255)

У каждого подарка будет рандомный цвет свечения

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