
Стаж: 10 лет
Город: Москва
Сообщений: 222
Благодарностей: 68
Полезность: 173
|
Ребят, такая с ним проблема ... 1) У Админского нету скорости, хотя типо должна быть. 2)Ножик скорости неисправно работает. - Любой другой ножик, нужно взять , чтобы способность работала. А берёшь ножик скорости и даже если у тебя в руках пистолет или автомат ты несёшься быстрее всех. Может кто помочь? Исправить так: Что когда нож в курах, тогда и бежишь, а когда переключаешься на оружие то идёшь обычно. Код:
// [DR] Knifes By BiZoN // Спасибо Eriurias за качественную регенерацию // Плагин менее затратен в плане нагрузки, в отличие от своих аналогов, использующих CurWeapon вместо Ham_Item_deploy // Снята затрата двойного прыжка в плане использования события прыжка, а не форвардов, вызывающихся по десятку раз каждую секунду // Способности работают только тогда, когда в руках нож // Ну и многое другое, что вы можете увидеть во время работы плагина // Огромная просьба: если найдете баги или недочеты, пишите, пожалуйста, мне в скайп: vitya12345629 или в ВК: vk.com/6u3oh // [DR] Knifes By BiZoN
#include <amxmodx> #include <amxmisc> #include <colorchat> #include <fakemeta> #include <hamsandwich>
#define PLUGIN "[DR] Knifes" #define VERSION "1.0" #define AUTHOR "BiZoN"
#define ADMIN_FLAG ADMIN_BAN // Флаг Админа #define VIP_FLAG ADMIN_LEVEL_H // Флаг Випа
#define REGENERATION_DELAY 1.0 // Время до регенерации #define REGENERATION_STEP 7 // Насколько увеличивать HP #define REGENERATION_MAX 110 // Максимальное кол-во HP
#define Ham_CS_Player_ResetMaxSpeed Ham_Item_PreFrame
new keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_0 new szTwoJump[33] new szTwoJumpNum[33] new szDoTwoJump[33] new KnifeId[33]
public plugin_precache() { precache_model("models/v_knife.mdl") precache_model("models/knifes/v_ferrane.mdl") precache_model("models/knifes/v_terari.mdl") precache_model("models/knifes/v_ibuki.mdl") precache_model("models/knifes/v_katana.mdl") precache_model("models/knifes/v_blink.mdl") precache_model("models/p_knife.mdl") precache_model("models/knifes/p_ferrane.mdl") precache_model("models/knifes/p_terari.mdl") precache_model("models/knifes/p_ibuki.mdl") precache_model("models/knifes/p_katana.mdl") precache_model("models/knifes/p_blink.mdl") precache_sound("knifes/health.wav") precache_sound("knifes/blink_hitwall1.wav") precache_sound("knifes/katana_hitwall1.wav") precache_sound("knifes/ibuki_hitwall1.wav") precache_sound("knifes/ibuki_slash1.wav") precache_sound("knifes/ibuki_deploy1.wav") precache_sound("knifes/terari_hitwall1.wav") precache_sound("knifes/ferrane_hitwall1.wav") }
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_menu("Menu 1", keys, "menu_knife") register_clcmd("say /knife", "knife_menu") register_clcmd("say_team /knife", "knife_menu") register_clcmd("knife", "knife_menu") register_clcmd("knifes", "knife_menu") RegisterHam(Ham_CS_Player_ResetMaxSpeed, "player", "OnCBasePlayer_ResetMaxSpeed_P", true); RegisterHam(Ham_Item_Deploy, "weapon_knife", "SetKnife", 1) RegisterHam(Ham_Item_Holster, "weapon_knife", "KnifeSet", 1) RegisterHam(Ham_TakeDamage, "player", "EventDamage", 0) RegisterHam(Ham_TakeDamage, "player", "TakeDamage", .Post = true) RegisterHam(Ham_Killed, "player", "KilledPost", .Post = true) RegisterHam(Ham_Player_Jump, "player", "PreTwoJump") register_forward(FM_EmitSound, "EmitSound") }
public client_connect(id) { KnifeId[id] = 5 }
public client_disconnect(nClientIndex) { remove_task(nClientIndex) }
public knife_menu(id) { static menu[650], iLen iLen = 0 iLen = formatex(menu[iLen], charsmax(menu) - iLen, "\yМеню \rНожей^n^n")
if(!is_user_connected(id)) return PLUGIN_CONTINUE if(get_user_flags(id) & ADMIN_FLAG) { iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r1. \yBlink \d(\rвсе абилити\d) [\rАдмин\d]^n") keys |= MENU_KEY_1 }else{ iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r1. \dBlink (\rвсе абилити\d) [\rАдмин\d]^n") }
if(get_user_flags(id) & VIP_FLAG) { iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r2. \yKatana \d(\r2х прыжок\d) [\rV.I.P\d]^n") keys |= MENU_KEY_2 }else{ iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r2. \dKatana (\r2х прыжок\d) [\rV.I.P\d]^n") }
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r3. \yIbuki \d(\r2х урон\d)^n") keys |= MENU_KEY_3
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r4. \yTerari \d(\rскорость +\d)^n") keys |= MENU_KEY_4 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r5. \yFerrane \d(\rгравитация -\d)^n") keys |= MENU_KEY_4
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r6. \yStandart \d(\rрегенерация HP\d)^n^n") keys |= MENU_KEY_4 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r0. \wВыход^n") keys |= MENU_KEY_0
show_menu(id, keys, menu, -1, "Menu 1") return PLUGIN_HANDLED }
public menu_knife(id, key) { switch(key) { case 0: { if(get_user_flags(id) & ADMIN_FLAG) { KnifeId[id] = 0 ColorChat(id, GREEN, "[^4Blink^1] Способность: ^4все абилити") } } case 1: { if(get_user_flags(id) & VIP_FLAG) { KnifeId[id] = 1 ColorChat(id, GREEN, "[^4Katana^1] Способность: ^4двойной прыжок") } } case 2: { KnifeId[id] = 2 ColorChat(id, GREEN, "[^4Ibuki^1] Способность: ^4двойной урон") } case 3: { KnifeId[id] = 3 ColorChat(id, GREEN, "[^4Terari^1] Способность: ^4повышенная скорость") } case 4: { KnifeId[id] = 4 ColorChat(id, GREEN, "[^4Ferrane^1] Способность: ^4пониженная гравитация") } case 5: { KnifeId[id] = 5 ColorChat(id, GREEN, "[^4Standart^1] Способность: ^4регенерация HP") } } return PLUGIN_HANDLED }
public SetKnife(weapon) { new id = get_pdata_cbase(weapon, 41, 4)
if(!is_user_connected(id)) return PLUGIN_CONTINUE if(KnifeId[id] == 0) { set_pev(id, pev_viewmodel2, "models/knifes/v_blink.mdl") set_pev(id, pev_weaponmodel2, "models/knifes/p_blink.mdl") set_pdata_float(weapon, 58, 400.0) set_pev(id, pev_gravity, 0.6) szTwoJump[id] = true } if(KnifeId[id] == 1) { set_pev(id, pev_viewmodel2, "models/knifes/v_katana.mdl") set_pev(id, pev_weaponmodel2, "models/knifes/p_katana.mdl") set_pdata_float(weapon, 58, 250.0) set_pev(id, pev_gravity, 1.0) szTwoJump[id] = true } if(KnifeId[id] == 2) { set_pev(id, pev_viewmodel2, "models/knifes/v_ibuki.mdl") set_pev(id, pev_weaponmodel2, "models/knifes/p_ibuki.mdl") set_pdata_float(weapon, 58, 220.0) set_pev(id, pev_gravity, 1.0) szTwoJump[id] = false } if(KnifeId[id] == 3) { set_pev(id, pev_viewmodel2, "models/knifes/v_terari.mdl") set_pev(id, pev_weaponmodel2, "models/knifes/p_terari.mdl") set_pdata_float(weapon, 58, 380.0) set_pev(id, pev_gravity, 1.0) szTwoJump[id] = false } if(KnifeId[id] == 4) { set_pev(id, pev_viewmodel2, "models/knifes/v_ferrane.mdl") set_pev(id, pev_weaponmodel2, "models/knifes/p_ferrane.mdl") set_pdata_float(weapon, 58, 250.0) set_pev(id, pev_gravity, 0.7) szTwoJump[id] = false } if(KnifeId[id] == 5) { set_pev(id, pev_viewmodel2, "models/v_knife.mdl") set_pev(id, pev_weaponmodel2, "models/p_knife.mdl") set_pdata_float(weapon, 58, 250.0) set_pev(id, pev_gravity, 1.0) szTwoJump[id] = false } return PLUGIN_HANDLED }
public KnifeSet(ent) { set_pev(get_pdata_cbase(ent, 41, 4), pev_gravity, 1.0) }
public TakeDamage(nClientIndex) { if(is_user_alive(nClientIndex)) { if (!task_exists(nClientIndex)) set_task(REGENERATION_DELAY, "StartRegeneration" , nClientIndex, _, _, "b") } } public KilledPost(nClientIndex) { remove_task(nClientIndex) } public StartRegeneration(nClientIndex) { static Float:g_iHealthPoint; pev(nClientIndex, pev_health, g_iHealthPoint); if (g_iHealthPoint >= REGENERATION_MAX) { remove_task(nClientIndex); return PLUGIN_HANDLED; } if(get_user_weapon(nClientIndex) == CSW_KNIFE && (KnifeId[nClientIndex] == 0 || KnifeId[nClientIndex] == 5)) { set_pev(nClientIndex, pev_health, g_iHealthPoint + REGENERATION_STEP); set_hudmessage(255, 0, 0, -1.0, 0.10, 1, 6.0, 1.0, 0.1, 1.0, 1) show_hudmessage(nClientIndex, "Регенерация [+ %i HP]", REGENERATION_STEP) client_cmd(nClientIndex, "spk knifes/health") } return PLUGIN_CONTINUE; }
public EventDamage(victim, inflicator, attacker, Float:damage) { if(!is_user_connected(attacker)) return PLUGIN_HANDLED; if(victim == attacker || !victim) return PLUGIN_HANDLED;
if(get_user_team(attacker) != get_user_team (victim) && attacker != victim && get_user_weapon(attacker) == CSW_KNIFE && (KnifeId[attacker] == 0 || KnifeId[attacker] == 2)) SetHamParamFloat(4, damage * 2.0) return PLUGIN_HANDLED; }
public PreTwoJump(id) { if(szTwoJump[id] && get_user_weapon(id) == CSW_KNIFE) { new szButton = pev(id, pev_button) new szOldButton = pev(id, pev_oldbuttons) if((szButton & IN_JUMP) && !(pev(id, pev_flags) & FL_ONGROUND) && !(szOldButton & IN_JUMP)) { if(szTwoJumpNum[id] < 1) { szDoTwoJump[id] = true szTwoJumpNum[id]++ PostTwoJump(id) return PLUGIN_CONTINUE } } if((szButton & IN_JUMP) && (pev(id, pev_flags) & FL_ONGROUND)) { szTwoJumpNum[id] = 0 } } return PLUGIN_CONTINUE }
public PostTwoJump(id) { if(szTwoJump[id]) { if(!is_user_alive(id)) return PLUGIN_CONTINUE if(szDoTwoJump[id]) { new Float:szVelocity[3] pev(id, pev_velocity, szVelocity) szVelocity[2] = random_float(295.0,305.0) set_pev(id, pev_velocity, szVelocity) szDoTwoJump[id] = false
return PLUGIN_CONTINUE } } return PLUGIN_CONTINUE }
public OnCBasePlayer_ResetMaxSpeed_P(id) { if(!is_user_connected(id)) return PLUGIN_CONTINUE if(KnifeId[id] == 0) { set_pdata_float(id, 58, 400.0) } if(KnifeId[id] == 1) { set_pdata_float(id, 58, 250.0) } if(KnifeId[id] == 2) { set_pdata_float(id, 58, 220.0) } if(KnifeId[id] == 3) { set_pev(id, pev_maxspeed, 380.0) } if(KnifeId[id] == 4) { set_pdata_float(id, 58, 250.0) } if(KnifeId[id] == 5) { set_pdata_float(id, 58, 250.0) } return PLUGIN_HANDLED }
public EmitSound(id, channel, const sound[]) { if(equal(sound, "weapons/knife_hitwall1.wav")) { if(KnifeId[id] == 0) { emit_sound(id, channel, "knifes/blink_hitwall1.wav", 1.0, 1.0, 0, 100) return FMRES_SUPERCEDE } else if(KnifeId[id] == 1) { emit_sound(id, channel, "knifes/katana_hitwall1.wav", 1.0, 1.0, 0, 100) return FMRES_SUPERCEDE } else if(KnifeId[id] == 2) { emit_sound(id, channel, "knifes/ibuki_hitwall1.wav", 1.0, 1.0, 0, 100) return FMRES_SUPERCEDE } else if(KnifeId[id] == 3) { emit_sound(id, channel, "knifes/terari_hitwall1.wav", 1.0, 1.0, 0, 100) return FMRES_SUPERCEDE } else if(KnifeId[id] == 4) { emit_sound(id, channel, "knifes/ferrane_hitwall1.wav", 1.0, 1.0, 0, 100) return FMRES_SUPERCEDE }else{ return HAM_IGNORED } } if(equal(sound, "weapons/knife_slash1.wav") || equal(sound, "weapons/knife_slash2.wav")) { if(KnifeId[id] == 2) { emit_sound(id, channel, "knifes/ibuki_slash1.wav", 1.0, 1.0, 0, 100) return FMRES_SUPERCEDE }else{ return HAM_IGNORED } } if(equal(sound, "weapons/knife_deploy1.wav")) { if(KnifeId[id] == 2) { emit_sound(id, channel, "knifes/ibuki_deploy1.wav", 1.0, 1.0, 0, 100) return FMRES_SUPERCEDE }else{ return HAM_IGNORED } } return HAM_IGNORED } Код:
#if defined _colorchat_included #endinput #endif #define _colorchat_included /* ColorChat Support */ #define NORMAL DontChange #define GREEN DontChange #define RED Red #define BLUE Blue #define GREY Grey #define ColorChat client_print_color #define MAX_TRANSLATION_LENGTH 2048 enum { DontChange = 0, Grey = -1, Red = -2, Blue = -3 }; #define print_team_default DontChange #define print_team_grey Grey #define print_team_red Red #define print_team_blue Blue stock client_print_color(id, sender, const fmt[], any:...) { // check if id is different from 0 if (id && !is_user_connected(id)) { return 0; } if (sender < Blue || sender > 32) { sender = DontChange; } else if (sender < DontChange) { sender = -sender + 32; // align indexes to the TeamInfo ones } static const szTeamName[][] = { "", "TERRORIST", "CT" }; new szMessage[191]; new iParams = numargs(); // Specific player code if (id) { if (iParams == 3) { copy(szMessage, charsmax(szMessage), fmt); // copy so message length doesn't exceed critical 192 value } else { vformat(szMessage, charsmax(szMessage), fmt, 4); } if (sender > (32 - Grey)) { if (sender > (32 - Blue)) { sender = id; } else { _CC_TeamInfo(id, sender, szTeamName[sender - (32 - Grey)]); } } _CC_SayText(id, sender, szMessage); } // Send message to all players else { // Figure out if at least 1 player is connected // so we don't execute useless useless code if not new iPlayers[32], iNum; get_players(iPlayers, iNum, "ch"); if (!iNum) { return 0; } new iMlNumber, i, j; new Array:aStoreML = ArrayCreate(); if (iParams >= 5) // ML can be used { for (j = 3; j < iParams; j++) { // retrieve original param value and check if it's LANG_PLAYER value if (getarg(j) == LANG_PLAYER) { i = 0; // as LANG_PLAYER == -1, check if next parm string is a registered language translation while ((szMessage[i] = getarg(j + 1, i++))) {} if (GetLangTransKey(szMessage) != TransKey_Bad) { // Store that arg as LANG_PLAYER so we can alter it later ArrayPushCell(aStoreML, j++); // Update ML array saire so we'll know 1st if ML is used, // 2nd how many args we have to alterate iMlNumber++; } } } } // If arraysize == 0, ML is not used // we can only send 1 MSG_ALL message if sender != 0 if (!iMlNumber) { if (iParams == 3) { copy(szMessage, charsmax(szMessage), fmt); } else { vformat(szMessage, charsmax(szMessage), fmt, 4); } if (0 < sender < (32 - Blue)) // if 0 is passed, need to loop { if (sender > (32 - Grey)) { _CC_TeamInfo(0, sender, szTeamName[sender - (32 - Grey)]); } _CC_SayText(0, sender, szMessage); return 1; } } if (sender > (32 - Blue)) { sender = 0; // use receiver index } for (--iNum; iNum >= 0; iNum--) { id = iPlayers[iNum]; if (iMlNumber) { for (j = 0; j < iMlNumber; j++) { // Set all LANG_PLAYER args to player index ( = id ) // so we can format the text for that specific player setarg(ArrayGetCell(aStoreML, j), _, id); } // format string for specific player vformat(szMessage, charsmax(szMessage), fmt, 4); } if (sender > (32 - Grey)) { _CC_TeamInfo(id, sender, szTeamName[sender - (32 - Grey)]); } _CC_SayText(id, sender, szMessage); } ArrayDestroy(aStoreML); } return 1; } stock _CC_TeamInfo(iReceiver, iSender, szTeam[]) { static iTeamInfo = 0; if (!iTeamInfo) { iTeamInfo = get_user_msgid("TeamInfo"); } message_begin(iReceiver ? MSG_ONE : MSG_ALL, iTeamInfo, _, iReceiver); write_byte(iSender); write_string(szTeam); message_end(); } stock _CC_SayText(iReceiver, iSender, szMessage[]) { static iSayText = 0; if (!iSayText) { iSayText = get_user_msgid("SayText"); } // Prevent sending format and localization strings via chat for (new i = 0; i < 192; i++) { if (szMessage[i] == 0) break; if (szMessage[i] == '%' || szMessage[i] == '#') szMessage[i] = ' '; } message_begin(iReceiver ? MSG_ONE : MSG_ALL, iSayText, _, iReceiver); write_byte(iSender ? iSender : iReceiver); if (szMessage[0] > 4) { write_byte(1); szMessage[192 - 2 - 1] = 0; // Two write_byte + string terminator write_string(szMessage); } else { szMessage[192 - 1 - 1] = 0; // One write_byte + string terminator write_string(szMessage); } message_end(); } new _translation_szBuffer[MAX_TRANSLATION_LENGTH]; stock register_dictionary_colored(const filename[]) { if (!register_dictionary(filename)) { return 0; } new szFileName[256]; get_localinfo("amxx_datadir", szFileName, charsmax(szFileName)); format(szFileName, charsmax(szFileName), "%s/lang/%s", szFileName, filename); new fp = fopen(szFileName, "rt"); if (!fp) { log_amx("Failed to open %s", szFileName); return 0; } new szLang[3], szKey[64], TransKey:iKey; while (!feof(fp)) { fgets(fp, _translation_szBuffer, charsmax(_translation_szBuffer)); trim(_translation_szBuffer); if (_translation_szBuffer[0] == '[') { strtok(_translation_szBuffer[1], szLang, charsmax(szLang), _translation_szBuffer, 1, ']'); } else if (_translation_szBuffer[0]) { strbreak(_translation_szBuffer, szKey, charsmax(szKey), _translation_szBuffer, charsmax(_translation_szBuffer)); iKey = GetLangTransKey(szKey); if (iKey != TransKey_Bad) { replace_all(_translation_szBuffer, charsmax(_translation_szBuffer), "!g", "^4"); replace_all(_translation_szBuffer, charsmax(_translation_szBuffer), "!t", "^3"); replace_all(_translation_szBuffer, charsmax(_translation_szBuffer), "!n", "^1"); replace_all(_translation_szBuffer, charsmax(_translation_szBuffer), "^^4", "^4"); replace_all(_translation_szBuffer, charsmax(_translation_szBuffer), "^^3", "^3"); replace_all(_translation_szBuffer, charsmax(_translation_szBuffer), "^^1", "^1"); replace_all(_translation_szBuffer, charsmax(_translation_szBuffer), "^^n", "^n"); replace_all(_translation_szBuffer, charsmax(_translation_szBuffer), "^^t", "^t"); AddTranslation(szLang, iKey, _translation_szBuffer[2]); } } } fclose(fp); return 1; } /* ML from AMXX 1.8.3 support */ #define register_dictionary register_dictionary_colored Спасибо
DRIVE37 за colorchat
Отредактировал: shram47, - 26.12.2015, 2:49

Enough to hope for someone's help, I will do it myself and I will not ask anyone. I cope with children and can cope with amxx :thank_you:
|