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

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

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

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

Помогите вытащить из плагина!

Статус пользователя Makar123
сообщение 1.3.2012, 17:09
Сообщение #1


Стаж: 14 лет

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

Здравствуйте! Можно ли вытащить из этого плагина нож : Каратель ? Чтобы модель ножа заменял стандартную и изменял гравитацию когда в руках нож.

Код
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <vault>
#include <fun>

#define PLUGIN "Knife Mod"
#define VERSION "1.0"
#define AUTHOR "Bloodnbly"

#define TASK_INTERVAL 4.0  
#define MAX_HEALTH 255  

new knife_model[33]
new g_Menu

new CVAR_HIGHSPEED
new CVAR_LOWSPEED
new CVAR_LOWGRAV
new CVAR_NORMGRAV
new CVAR_HEALTH_ADD
new CVAR_HEALTH_MAX
new CVAR_DAMAGE

public plugin_init() {
    
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    register_event( "Damage", "event_damage", "be" )
    register_event("CurWeapon","CurWeapon","be","1=1")
    
    g_Menu = register_menuid("Knife Mod")
    register_menucmd(g_Menu, 1023, "knifemenu")
    
    register_clcmd("say /knife", "display_knife")
    
    CVAR_HIGHSPEED = register_cvar("km_highspeed","400")
    CVAR_LOWSPEED = register_cvar("km_lowspeed","170")
    CVAR_HEALTH_ADD = register_cvar("km_addhealth", "3")
    CVAR_HEALTH_MAX = register_cvar("km_maxhealth", "104")
    CVAR_DAMAGE = register_cvar("km_damage", "2")
    CVAR_LOWGRAV = register_cvar("km_lowgravity" , "300")
    CVAR_NORMGRAV = get_cvar_pointer("sv_gravity")
    
    set_task(480.0, "kmodmsg", 0, _, _, "b")
}

public plugin_precache() {
    precache_model("models/knife-mod/v_karatelu.mdl")
    precache_model("models/knife-mod/v_bita.mdl")
    precache_model("models/knife-mod/v_tixo.mdl")
    precache_model("models/knife-mod/v_toporik.mdl")
    precache_model("models/v_knife.mdl")
}

public display_knife(id) {
    new menuBody[512]
    add(menuBody, 511, "\rМеню Ножей\w^n^n")
    add(menuBody, 511, "1. Бита \y(Сильный удар\низкая скорость)\w^n")
    add(menuBody, 511, "2. Маньяк \y(Безшумная ходьба)\w^n")
    add(menuBody, 511, "3. Топорик \y(Быстрый бег)\w^n")
    add(menuBody, 511, "4. Каратель \y(Низкая гравитация)\w^n")
    add(menuBody, 511, "5. Мед.Нож \y(Регенирация ХП)\w^n^n")
    add(menuBody, 511, "0. Закрыть меню^n")
    
    new keys = ( 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<9 )
    show_menu(id, keys, menuBody, -1, "Knife Mod")
}

public knifemenu(id, key) {
    switch(key)
    {
        case 0: SetKnife(id , 4)
        case 1: SetKnife(id , 2)
        case 2: SetKnife(id , 3)
        case 3: SetKnife(id , 1)
        case 4: SetKnife(id , 0)
        default: return PLUGIN_HANDLED
    }
    SaveData(id)
    return PLUGIN_HANDLED
}

public SetKnife(id , Knife) {
    knife_model[id] = Knife
    
    new Clip, Ammo, Weapon = get_user_weapon(id, Clip, Ammo)
    if ( Weapon != CSW_KNIFE )
        return PLUGIN_HANDLED
    
    new vModel[56],pModel[56]
    
    switch(Knife)
    {
        case 0: {
            format(vModel,55,"models/v_knife.mdl")
        }
        case 1: {
            format(vModel,55,"models/knife-mod/v_karatelu.mdl")
        }
        case 2: {
            format(vModel,55,"models/knife-mod/v_tixo.mdl")
        }
        case 3: {
            format(vModel,55,"models/knife-mod/v_toporik.mdl")
        }
        case 4: {
            format(vModel,55,"models/knife-mod/v_bita.mdl")
        }
    }
    
    entity_set_string(id, EV_SZ_viewmodel, vModel)
    entity_set_string(id, EV_SZ_weaponmodel, pModel)
    
    return PLUGIN_HANDLED;  
}

public event_damage( id ) {
    
    new victim_id = id;
    if( !is_user_connected( victim_id ) ) return PLUGIN_CONTINUE
    new dmg_take = read_data( 2 );
    new dmgtype = read_data( 3 );
    new Float:multiplier = get_pcvar_float(CVAR_DAMAGE);
    new Float:damage = dmg_take * multiplier;
    new health = get_user_health( victim_id );
    
    new iWeapID, attacker_id = get_user_attacker( victim_id, iWeapID );
    
    if( !is_user_connected( attacker_id ) || !is_user_alive( victim_id ) ) {
        return PLUGIN_HANDLED
    }
    
    if( iWeapID == CSW_KNIFE && knife_model[attacker_id] == 4 ) {
        
        if( floatround(damage) >= health ) {
            if( victim_id == attacker_id ) {
                return PLUGIN_CONTINUE
                }else{
                log_kill( attacker_id, victim_id, "knife", 0 );
            }
            
            return PLUGIN_CONTINUE
            }else {
            if( victim_id == attacker_id ) return PLUGIN_CONTINUE
            
            fakedamage( victim_id, "weapon_knife", damage, dmgtype );
        }
    }
    return PLUGIN_CONTINUE
}

public CurWeapon(id)
    {
    new Weapon = read_data(2)
    
    // Set Knife Model
    SetKnife(id, knife_model[id])  
    
    // Task Options
    
    if(knife_model[id] == 0 && !task_exists(id) && Weapon == CSW_KNIFE)
        set_task(TASK_INTERVAL , "task_healing",id,_,_,"b")
    else if(task_exists(id))
        remove_task(id)
    
    // Abilities
    set_user_footsteps(id , ( (knife_model[id] == 2 && Weapon == CSW_KNIFE) ? 1 : 0) )
    
    new Float:Gravity = ((knife_model[id] == 1 && Weapon == CSW_KNIFE)? get_pcvar_float(CVAR_LOWGRAV) : get_pcvar_float(CVAR_NORMGRAV)) / 800.0
    set_user_gravity(id , Gravity)
    
    // Speed
    new Float:Speed
    if(Weapon != CSW_KNIFE || knife_model[id] < 3)
        return PLUGIN_CONTINUE
    else if(knife_model[id] == 3)
        Speed = get_pcvar_float(CVAR_HIGHSPEED)
    else if(knife_model[id] == 4)
        Speed = get_pcvar_float(CVAR_LOWSPEED)
    
    set_user_maxspeed(id, Speed)
    
    return PLUGIN_HANDLED  
    
}

stock log_kill(killer, victim, weapon[],headshot) {
    user_silentkill( victim );
    
    message_begin( MSG_ALL, get_user_msgid( "DeathMsg" ), {0,0,0}, 0 );
    write_byte( killer );
    write_byte( victim );
    write_byte( headshot );
    write_string( weapon );
    message_end();
    
    new kfrags = get_user_frags( killer );
    set_user_frags( killer, kfrags++ );
    new vfrags = get_user_frags( victim );
    set_user_frags( victim, vfrags++ );
    
    return  PLUGIN_CONTINUE
}


public task_healing(id) {  
    new addhealth = get_pcvar_num(CVAR_HEALTH_ADD)  
    if (!addhealth)
        return  
    
    new maxhealth = get_pcvar_num(CVAR_HEALTH_MAX)  
    if (maxhealth > MAX_HEALTH) {
        set_pcvar_num(CVAR_HEALTH_MAX, MAX_HEALTH)  
        maxhealth = MAX_HEALTH
    }  
    
    new health = get_user_health(id)  
    
    if (is_user_alive(id) && (health < maxhealth)) {
        set_user_health(id, health + addhealth)
        set_hudmessage(0, 255, 0, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.1, 4)
        show_hudmessage(id,"<< !!Глотая таблетки, регеню ХП!! >>")
        message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id)
        write_short(1<<10)
        write_short(1<<10)
        write_short(0x0000)
        write_byte(0)
        write_byte(200)
        write_byte(0)
        write_byte(75)
        message_end()
    }
    
    else {
        if (is_user_alive(id) && (health > maxhealth))
            remove_task(id)
    }
}  

public client_disconnect(id) {  
    if(task_exists(id)) remove_task(id)  
}  


public kmodmsg() {
    
    client_print(0,print_chat,"[Narov4at] Пиши /knife что бы выбрать модель ножа")
}  

public client_authorized(id)
    {
    LoadData(id)
}

SaveData(id)
{
    
    new authid[32]
    get_user_authid(id, authid, 31)
    
    new vaultkey[64]
    new vaultdata[64]
    
    format(vaultkey, 63, "KMOD_%s", authid)
    format(vaultdata, 63, "%d", knife_model[id])
    set_vaultdata(vaultkey, vaultdata)
}

LoadData(id)
{
    new authid[32]
    get_user_authid(id,authid,31)
    
    new vaultkey[64], vaultdata[64]
    
    format(vaultkey, 63, "KMOD_%s", authid)
    get_vaultdata(vaultkey, vaultdata, 63)
    knife_model[id] = str_to_num(vaultdata)
    
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/


Отредактировал: Makar123, - 2.3.2012, 3:39
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Fred Perry
сообщение 1.3.2012, 17:27
Сообщение #2


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

Стаж: 16 лет

Сообщений: 6594
Благодарностей: 2370
Полезность: 813

Как-то не понятно сформулирован вопрос. Что именно надо?
Чтобы моделька заменяла стандартную?

Отредактировал: Fred Perry, - 1.3.2012, 17:30


You become responsible, forever, for what you have tamed
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Makar123
сообщение 2.3.2012, 3:38
Сообщение #3


Стаж: 14 лет

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

Цитата(Fred Perry @ 1.3.2012, 18:27) *
Как-то не понятно сформулирован вопрос. Что именно надо?
Чтобы моделька заменяла стандартную?

Чтобы модель заменяла стандартную и изменяла гравитацию когда в руках нож.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fred Perry
сообщение 2.3.2012, 16:18
Сообщение #4


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

Стаж: 16 лет

Сообщений: 6594
Благодарностей: 2370
Полезность: 813

Лови
#include <amxmodx>
#include <fakemeta>

new VIEW_MODEL[] = "models/v_newKnife.mdl" //V_ Модель вашего ножа
new PLAYER_MODEL[] = "models/p_newKnife.mdl" //P_ Модель вашего ножа

new OLDWORLD_MODEL[] = "models/w_knife.mdl" //Оригинальная W_ модель ножа (не менять)

new PLUGIN_NAME[] = "Custom Knife Model"
new PLUGIN_AUTHOR[] = "Timon"
new PLUGIN_VERSION[] = "0.1"

public plugin_init()
{
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
register_event("CurWeapon", "Event_CurWeapon", "be","1=1")
register_forward(FM_SetModel, "fw_SetModel")
}

public plugin_precache()
{
precache_model(VIEW_MODEL)
precache_model(PLAYER_MODEL)
precache_model(WORLD_MODEL)
}

public Event_CurWeapon(id)
{
new weaponID = read_data(2)

if(weaponID != CSW_KNIFE)
return PLUGIN_CONTINUE

set_pev(id, pev_viewmodel2, VIEW_MODEL)
set_pev(id, pev_weaponmodel2, PLAYER_MODEL)

return PLUGIN_CONTINUE
}

public fw_SetModel(entity, model[])
{
if (!pev_valid(entity))
return FMRES_IGNORED

if (!equali(model, OLDWORLD_MODEL))
return FMRES_IGNORED

new className[33]
pev(entity, pev_classname, className, 32)

if (equal(className, "weaponbox") || equal(className, "armoury_entity") || equal(className, "grenade"))
{
engfunc(EngFunc_SetModel, entity, WORLD_MODEL)
return FMRES_SUPERCEDE
}
return FMRES_IGNORED
}

v_newKnife.mdl и p_newKnife.mdl Название твоих моделей
models/v_newKnife.mdl и models/p_newKnife.mdl расположение (то есть в простой папке models)

Насчет гравитации отпишу немного поозже, надо разобраться :)

Отредактировал: Fred Perry, - 2.3.2012, 16:18


You become responsible, forever, for what you have tamed
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Makar123
сообщение 3.3.2012, 13:31
Сообщение #5


Стаж: 14 лет

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

Цитата(Fred Perry @ 2.3.2012, 17:18) *
Лови
#include <amxmodx>
#include <fakemeta>

new VIEW_MODEL[] = "models/v_newKnife.mdl" //V_ Модель вашего ножа
new PLAYER_MODEL[] = "models/p_newKnife.mdl" //P_ Модель вашего ножа

new OLDWORLD_MODEL[] = "models/w_knife.mdl" //Оригинальная W_ модель ножа (не менять)

new PLUGIN_NAME[] = "Custom Knife Model"
new PLUGIN_AUTHOR[] = "Timon"
new PLUGIN_VERSION[] = "0.1"

public plugin_init()
{
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
register_event("CurWeapon", "Event_CurWeapon", "be","1=1")
register_forward(FM_SetModel, "fw_SetModel")
}

public plugin_precache()
{
precache_model(VIEW_MODEL)
precache_model(PLAYER_MODEL)
precache_model(WORLD_MODEL)
}

public Event_CurWeapon(id)
{
new weaponID = read_data(2)

if(weaponID != CSW_KNIFE)
return PLUGIN_CONTINUE

set_pev(id, pev_viewmodel2, VIEW_MODEL)
set_pev(id, pev_weaponmodel2, PLAYER_MODEL)

return PLUGIN_CONTINUE
}

public fw_SetModel(entity, model[])
{
if (!pev_valid(entity))
return FMRES_IGNORED

if (!equali(model, OLDWORLD_MODEL))
return FMRES_IGNORED

new className[33]
pev(entity, pev_classname, className, 32)

if (equal(className, "weaponbox") || equal(className, "armoury_entity") || equal(className, "grenade"))
{
engfunc(EngFunc_SetModel, entity, WORLD_MODEL)
return FMRES_SUPERCEDE
}
return FMRES_IGNORED
}

v_newKnife.mdl и p_newKnife.mdl Название твоих моделей
models/v_newKnife.mdl и models/p_newKnife.mdl расположение (то есть в простой папке models)

Насчет гравитации отпишу немного поозже, надо разобраться :)


Ну и на этом пока спасибо ! Ну постарайся пожалуйста ещё и гравитацию туда добавить, очень надо !
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Makar123
сообщение 5.3.2012, 17:03
Сообщение #6


Стаж: 14 лет

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

Ну помогите пожалуйста...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя aleshqa
сообщение 5.3.2012, 23:41
Сообщение #7


Стаж: 15 лет

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

Хм, я не очень понял, но думаю что правильно: вы хотите вытащить из главного плагина (1 пост) , нож Каратель, добавить к нему гравитацию и собственные руки + нож?
Займусь дня через 2.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Makar123
сообщение 7.3.2012, 4:19
Сообщение #8


Стаж: 14 лет

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

Цитата(aleshqa1488 @ 5.3.2012, 23:41) *
Хм, я не очень понял, но думаю что правильно: вы хотите вытащить из главного плагина (1 пост) , нож Каратель, добавить к нему гравитацию и собственные руки + нож?
Займусь дня через 2.

именно это я и имел ввиду ! Спасибо!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Makar123
сообщение 11.3.2012, 16:36
Сообщение #9


Стаж: 14 лет

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

ну спасайте (
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя aleshqa
сообщение 12.3.2012, 12:13
Сообщение #10


Стаж: 15 лет

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

Смогу помочь только дня через два :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Makar123
сообщение 12.3.2012, 13:54
Сообщение #11


Стаж: 14 лет

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

Цитата(aleshqa1488 @ 12.3.2012, 12:13) *
Смогу помочь только дня через два :)

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