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

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

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

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

совершенствование rank system

Статус пользователя MrLegiongame
сообщение 31.8.2016, 13:19
Сообщение #1
Стаж: 11 лет

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

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

например:
LVL 1 - LVL 7 будет knife1
LVL 8 - LVL 12 будет knife2

вот часть кода

Код:

public LoadSettings(id)
{
new i, LVL[22][16], cvLevels[256]

get_pcvar_string(g_Levels, cvLevels, 255)
trim(cvLevels)
parse(cvLevels, LVL[0], 15, LVL[1], 15, LVL[2], 15, LVL[3], 15, LVL[4], 15, LVL[5], 15, LVL[6], 15, LVL[7], 15, LVL[8], 15, LVL[9], 15, LVL[10], 15, LVL[11], 15, LVL[12], 15, LVL[13], 15, LVL[14], 15, LVL[15], 15, LVL[16], 15, LVL[17], 15, LVL[18], 15, LVL[19], 15, LVL[20], 15, LVL[21], 15)

for (i = 0; i < 21; i++)
LEVELS[i+1] = str_to_num(LVL[i])

return PLUGIN_HANDLED
}

public checkLvl(id)
{
new Name[32]
get_user_name(id, Name, 31)


if(id > 0 && id < 33)
{
if (PlayerLevel[id] <= 0)
PlayerLevel[id] = 1

if (PlayerLevel[id] < 21)
{
while(PlayerXP[id] >= LEVELS[PlayerLevel[id]+1])
{
PlayerLevel[id]++
levelUp[id] = 1
ChatColor(0, "%L %L", LANG_PLAYER,"LRS_TAG", LANG_PLAYER,"NEW_LEVEL", Name, LANG_PLAYER,CLASSES[PlayerLevel[id]])
}
}
}



Я пытался изменить его таким способом


Код:

#include < fakemeta_util >


Код:

#define KnifeVModel1 "models/knife_mod/v_knife_grav.mdl"
#define KnifePModel1 "models/knife_mod/p_knife_grav.mdl"


Код:

public checkLvl(id)
{
new Name[32]
get_user_name(id, Name, 31)


if(id > 0 && id < 33)
{
if (PlayerLevel[id] <= 0)
PlayerLevel[id] = 1

if(PlayerLevel[id] && get_user_weapon(id) == CSW_KNIFE )
{
set_pev(id, pev_viewmodel2, KnifeVModel1)
set_pev(id, pev_weaponmodel2, KnifePModel1)
}

if (PlayerLevel[id] < 21)
{
while(PlayerXP[id] >= LEVELS[PlayerLevel[id]+1])
{
PlayerLevel[id]++
levelUp[id] = 1
ChatColor(0, "%L %L", LANG_PLAYER,"LRS_TAG", LANG_PLAYER,"NEW_LEVEL", Name, LANG_PLAYER,CLASSES[PlayerLevel[id]])
}
}
}
}




плагин компилировался , но моделькa не менялась , пожалуйста подскажите что можно сделать .
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Algalon
сообщение 31.8.2016, 14:10
Сообщение #2
Стаж: 11 лет

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

MrLegiongame, надеюсь, что ничего не заколхозил на веселую голову dntknw.gif

Cкрытый текст
Код:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

#define MAX_PLAYERS 32

#define QTY 3 // Кол-во моделей

new const g_szModels[QTY][2][] =
{
{
"models/knifes/v_knife_1.mdl",
"models/knifes/p_knife_1.mdl"
},

{
"models/knifes/v_knife_2.mdl",
"models/Knifes/p_knife_2.mdl"
},

{
"models/knifes/v_knife_3.mdl",
"models/knifes/p_knife_3.mdl"
}
}

const PDATA_SAFE = 2
const OFFSET_WEAPONOWNER = 41
const OFFSET_LINUX_WEAPONS = 4

new g_iModel[MAX_PLAYERS+1]

public plugin_precache()
{
for(new i = 0; i < QTY; i++)
{
precache_model(g_szModels[i][0])
precache_model(g_szModels[i][1])
}
}

public plugin_init()
RegisterHam(Ham_Item_Deploy, "weapon_knife", "Fwd_Item_Deploy_Post", 1)

public checkLvl(id)
{
if(id > 0 && id < 33)
{
if(PlayerLevel[id] <= 0)
PlayerLevel[id] = 1

if(PlayerLevel[id] < 21)
{
new iLvl = PlayerLevel[id]

while(PlayerXP[id] >= LEVELS[PlayerLevel[id]+1])
PlayerLevel[id]++

if(iLvl != PlayerLevel[id])
{
levelUp[id] = 1

switch(iLvl)
{
case 1..5: g_iModel[id] = 1
case 6..10: g_iModel[id] = 2
case 11..15: g_iModel[id] = 3
}

if(get_user_weapon(id) == CSW_KNIFE)
replace_knife_models(id, g_iModel[id])

new Name[32]
get_user_name(id, Name, 31)

ChatColor(0, "%L %L", LANG_PLAYER,"LRS_TAG", LANG_PLAYER, "NEW_LEVEL", Name, LANG_PLAYER, CLASSES[iLvl])
}
}
}
}

public Fwd_Item_Deploy_Post(weapon_ent)
{
static iOwner
iOwner = fm_cs_get_weapon_ent_owner(weapon_ent)

if(!is_user_connected(iOwner) || !g_iModel[id])
return

replace_knife_models(iOwner, g_iModel[id])
}

public client_disconnect(id)
g_iModel[id] = 0

replace_knife_models(id, value)
{
set_pev(id, pev_viewmodel2, g_szModels[value][0])
set_pev(id, pev_weaponmodel2, g_szModels[value][1])
}

stock fm_cs_get_weapon_ent_owner(ent)
{
if(pev_valid(ent) != PDATA_SAFE)
return -1

return get_pdata_cbase(ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS)
}

Оффтоп
Где вы набирает эти ватные лвл системы?


Отредактировал: Algalon, - 31.8.2016, 14:12
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя MrLegiongame
сообщение 31.8.2016, 14:34
Сообщение #3
Стаж: 11 лет

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

Algalon, не получилось cкомпилировать :(

code

Код:

public LoadSettings(id)
{
new i, LVL[22][16], cvLevels[256]

get_pcvar_string(g_Levels, cvLevels, 255)
trim(cvLevels)
parse(cvLevels, LVL[0], 15, LVL[1], 15, LVL[2], 15, LVL[3], 15, LVL[4], 15, LVL[5], 15, LVL[6], 15, LVL[7], 15, LVL[8], 15, LVL[9], 15, LVL[10], 15, LVL[11], 15, LVL[12], 15, LVL[13], 15, LVL[14], 15, LVL[15], 15, LVL[16], 15, LVL[17], 15, LVL[18], 15, LVL[19], 15, LVL[20], 15, LVL[21], 15)

for (i = 0; i < 21; i++)
LEVELS[i+1] = str_to_num(LVL[i])

return PLUGIN_HANDLED
}

public plugin_precache()
{
for(new i = 0; i < QTY; i++)
{
precache_model(g_szModels[i][0])
precache_model(g_szModels[i][1])
}
}

public plugin_init()
RegisterHam(Ham_Item_Deploy, "weapon_knife", "Fwd_Item_Deploy_Post", 1)

if(id > 0 && id < 33)
{
if(PlayerLevel[id] <= 0)
PlayerLevel[id] = 1

if(PlayerLevel[id] < 21)
{
new iLvl = PlayerLevel[id]

while(PlayerXP[id] >= LEVELS[PlayerLevel[id]+1])
PlayerLevel[id]++

if(iLvl != PlayerLevel[id])
{
levelUp[id] = 1

switch(iLvl)
{
case 1..5: g_iModel[id] = 1
case 6..10: g_iModel[id] = 2
case 11..15: g_iModel[id] = 3
}

if(get_user_weapon(id) == CSW_KNIFE)
replace_knife_models(id, g_iModel[id])

new Name[32]
get_user_name(id, Name, 31)

ChatColor(0, "%L %L", LANG_PLAYER,"LRS_TAG", LANG_PLAYER, "NEW_LEVEL", Name, LANG_PLAYER, CLASSES[iLvl])
}
}
}
}

public Fwd_Item_Deploy_Post(weapon_ent)
{
static iOwner
iOwner = fm_cs_get_weapon_ent_owner(weapon_ent)

if(!is_user_connected(iOwner) || !g_iModel[id])
return

replace_knife_models(iOwner, g_iModel[id])
}

public client_disconnect(id)
g_iModel[id] = 0

replace_knife_models(id, value)
{
set_pev(id, pev_viewmodel2, g_szModels[value][0])
set_pev(id, pev_weaponmodel2, g_szModels[value][1])
}

public EventDeath(id)
{
if(get_user_team(id) == 1)
{
new iKiller = read_data(1)
new iVictim = read_data(2)

if(iKiller != iVictim && get_pdata_int(iKiller, 114) != get_pdata_int(iVictim, 114) && is_user_connected(iKiller) && PlayerLevel[iKiller] < 21)
{
if (g_XPhead > 1)
{
if(read_data(3))
PlayerXP[iKiller] += g_XPv * g_XPhead
else
PlayerXP[iKiller] += g_XPv
}
else
PlayerXP[iKiller] += g_XPv

checkLvl(iKiller)
}
return PLUGIN_CONTINUE
}
}

public bomb_explode(id)
{
if(g_Pl < 1 || g_B != 1)
return

PlayerXP[id] += g_Pl
checkLvl(id)
}

public bomb_defused(id)
{
if(g_Def < 1 || g_B != 1)
return

PlayerXP[id] += g_Def
checkLvl(id)
}

public client_putinserver(id)
set_task(1.0, "load_client_data", id)

public load_client_data(id)
{
if(!is_user_connected(id))
return PLUGIN_HANDLED

new stats[8], bodyhits[8], stats2[4]
get_user_stats(id, stats, bodyhits)
get_user_stats2(id, stats2)

if (g_XPhead > 1 && g_B != 0)
PlayerXP[id] = ((stats[2] * g_XPhead + ((stats[0] - stats[2]) * g_XPv)) + (stats2[1] * g_Def + stats2[3] * g_Pl))
else if (g_XPhead <= 1 && g_B != 0)
PlayerXP[id] = (stats[0] * g_XPv + (stats2[1] * g_Def + stats2[3] * g_Pl))
else if (g_XPhead > 1 && g_B == 0)
PlayerXP[id] = (stats[2] * g_XPhead + ((stats[0] - stats[2]) * g_XPv))
else
PlayerXP[id] = stats[0] * g_XPv

for(new i = 1; i <= 21; i++)
{
if (i < 21)
{
if (PlayerXP[id] >= LEVELS[i] && PlayerXP[id] < LEVELS[i+1])
PlayerLevel[id] = i
}
else
{
if (PlayerXP[id] >= LEVELS[21])
PlayerLevel[id] = 21
}
}
return PLUGIN_HANDLED
}





Отредактировал: MrLegiongame, - 31.8.2016, 14:35
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Andrei
сообщение 31.8.2016, 14:46
Сообщение #4


Стаж: 15 лет

Сообщений: 1335
Благодарностей: 693
Полезность: 740

MrLegiongame, бро, вы меня пугаете. Не нужно тупо кусок кода пихать в свой плагин.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Algalon
сообщение 31.8.2016, 16:12
Сообщение #5
Стаж: 11 лет

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

MrLegiongame, тебе нужно собрать плагин из кусочков, а не тупо скопировать часть кода и вставить хрен знает куда
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MrLegiongame
сообщение 31.8.2016, 18:09
Сообщение #6
Стаж: 11 лет

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

Цитата(Algalon @ 31.8.2016, 17:12) *
MrLegiongame, тебе нужно собрать плагин из кусочков, а не тупо скопировать часть кода и вставить хрен знает куда

так ребята спокойно , я вставил код туда куда надо , я сделал этот скриншот чтобы показать что код в не функционирует ,я думаю что не сложно вставить этот код так как большинство кода основана нa public и const и это не совсем имеет значение в какое место в коде их ставить , на всякий случай я продемонстрировал как я вставил код , eсли вы увидели какую то ошибку тогда скажите мне, я буду только рад sorry.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Algalon
сообщение 1.9.2016, 12:35
Сообщение #7
Стаж: 11 лет

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

Цитата(MrLegiongame @ 31.8.2016, 19:09) *
так ребята спокойно , я вставил код туда куда надо , я сделал этот скриншот чтобы показать что код в не функционирует ,я думаю что не сложно вставить этот код так как большинство кода основана нa public и const и это не совсем имеет значение в какое место в коде их ставить , на всякий случай я продемонстрировал как я вставил код , eсли вы увидели какую то ошибку тогда скажите мне, я буду только рад sorry.gif

Не все так просто, как кажется, ты скинул кусок вырванного кода, я его дополнил такими же кусками.
Тебе нужно было их прочесть и, поняв все написанное, аккуратно все расставить все по палочкам.
А ты их взял и абы как вставил куда попало, потеряв при этом половину переменных.
Естественно скомпилировать у тебя не вышло, потому, что вышла хрень.
Потом ты скопировав эти бедные куски и сделав скрин выложил все это на форум, при этом опять потеряв кучу кода.
А теперь удивляешься, что же такое?

Отредактировал: Algalon, - 1.9.2016, 12:36
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MrLegiongame
сообщение 1.9.2016, 18:51
Сообщение #8
Стаж: 11 лет

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

Algalon, Извините но мы не поняли друг друга , мне не нужен другой готовый код , я хотел чтобы вы указали на мои ошибки (eсли не сложно) , готовый вариант мне не нужен (я хочу сам справится) ,проблема в том что я не знаю где я ошибся и так как я уверен что тут есть люди намного умнее меня я попросил помощь по плагину .
Полный код нет смысла давать так как остальное код просто выводит информацию на экран (HUD and chat) .

Вот что я пытался сделать

Код:

if(PlayerLevel[id] && get_user_weapon(id) == CSW_KNIFE )
{
set_pev(id, pev_viewmodel2, KnifeVModel1)
set_pev(id, pev_weaponmodel2, KnifePModel1)
}



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

P.S Еще раз извиняюсь за непонятный вопрос.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Algalon
сообщение 2.9.2016, 13:22
Сообщение #9
Стаж: 11 лет

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

MrLegiongame, я просто продемонстрировал как нужно правильно менять модель ножа в зависимости от лвла, как ты и просил в первом посте.

Цитата
Я хочу чтобы при определенном звание менялась моделька ножа .

например:
LVL 1 - LVL 7 будет knife1
LVL 8 - LVL 12 будет knife2

Я предоставил свой код, так как твой не способен это воплотить в жизнь.

Теперь непосредственно твой код, что тут тебе не понятно?

Код:
if(PlayerLevel[id] && get_user_weapon(id) == CSW_KNIFE ) // Если игрок имеет хотя бы 1 лвл и держит в руках нож, то функция выполняется
{
set_pev(id, pev_viewmodel2, KnifeVModel1) // Функция меняет игроку View модель
set_pev(id, pev_weaponmodel2, KnifePModel1) // Функция меняет игроку Weapon модель
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MrLegiongame
сообщение 2.9.2016, 14:26
Сообщение #10
Стаж: 11 лет

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

Algalon, мне в этом коде все понятно так как я его писал , я хочу чтобы вы мне ответили на вопрос , почему мой вариант не работает ? или как можно сделать так чтобы работала ?

P.S еще раз повторю , я знаю что написано в коде , я хочу его исправить так как он не работает , cпасибо за понимание derisive.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Algalon
сообщение 2.9.2016, 14:32
Сообщение #11
Стаж: 11 лет

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

MrLegiongame, фух, как с вами сложно. я без понятия почему у тебя ничего не меняется там.
У тебя смена модели происходит каждый раз, когда вызывается функция public checkLvl(id), т.е. тебе нужно поднять себе лвл или еще как

Отредактировал: Algalon, - 2.9.2016, 14:32
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 4 гостей читают эту тему: