Jump to content
Followers 0
cristiii.

NightCrawler Mod Update ( NightCrawler Class )

Recommended Posts

Descriere: Stiti si voi ce e nightcrawler mod

Descarcare
[sursa=1.0.0]/*

* Bomba a fost stearsa.
* Acum tero pot fii invizibili atata timp cat nu isi iau dmg sau nu au knife in mana // credite ConnorMcLeod
* Am facut team swap
* Acum night au viteza de 1000
* Acum cand un night primeste dmg nu mai este inv, dupa 2 secunde daca nu isi primeste iar dmg atunci o sa fie iar inv
* Acum nu se mai poate cumpara nimic din buy
*
*
*


*/
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <hamsandwich>
#include <fakemeta>
#include <fun>
#include <engine> 

#include <nightcrawler>

#define MAX_PLAYERS 32

new const   PLUGIN[ ] = "Nightcrawler Main",
            VERSION[ ] = "1.0",
            AUTHOR[ ] = "Diversity"

new Float:fl_NightGrav = 0.375,
    Float:fl_NightSpeed = 1000.0

new g_iPickUp = 2

public plugin_init() {
    
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    RegisterHam(Ham_Spawn, "player", "OnPlayerSpawn", 1)
    RegisterHam(Ham_Spawn, "hostage_entity", "Hostage_Spawn")
    RegisterHam(Ham_TakeDamage, "player", "OnPlayerTakeDamage", 1)
    RegisterHam(Ham_Item_PreFrame, "player", "Player_ResetMaxSpeed", 1) 
    RegisterHam(Ham_Touch, "weaponbox", "GroundWeapon_Touch")
    RegisterHam(Ham_Touch, "armoury_entity", "GroundWeapon_Touch")
    RegisterHam(Ham_Touch, "weapon_shield", "GroundWeapon_Touch")

    register_event("CurWeapon", "CurWeapon", "be", "1=1") 
    register_event("HLTV", "NewRound", "a", "1=0", "2=0")

    register_message(get_user_msgid("ScoreAttrib"), "Message_ScoreAttrib")  
    register_message(get_user_msgid("SendAudio"), "Message_SendAudio")   

    new enT = create_entity("info_target")
    set_pev(enT, pev_classname, "check_speed")
    set_pev(enT, pev_nextthink, get_gametime() + 0.1)
    register_think("check_speed", "Set_Night_INV") 

    if(get_cvar_float("sv_maxspeed") < fl_NightSpeed) set_cvar_float("sv_maxspeed", fl_NightSpeed) 
}

public plugin_precache()  { 
    new Entity = create_entity("info_map_parameters")
    
    DispatchKeyValue(Entity, "buying", "3")
    DispatchSpawn(Entity)

public pfn_keyvalue(Entity)   { 
    new ClassName[20], 
        Anyf[2]
    copy_keyvalue(ClassName, charsmax(ClassName), Anyf, charsmax(Anyf), Anyf, charsmax(Anyf))
    
    if(equal(ClassName, "info_map_parameters")) { 
        remove_entity(Entity)
        return PLUGIN_HANDLED
    } 
    
    return PLUGIN_CONTINUE
}

public OnPlayerSpawn(playerid) {
    if(!is_user_connected(playerid)) return 

    strip_user_weapons_ex(playerid)

    if(__get_user_team(playerid) == Night) {
        set_user_rendering(playerid, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 0)
        set_user_footsteps(playerid, 1)
        set_user_gravity(playerid, fl_NightGrav)
    } else {
        set_user_rendering(playerid, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)    
        set_user_footsteps(playerid, 0)
        set_user_gravity(playerid, 1.0)
    } 
}

public OnPlayerTakeDamage(iVictim, iInflictor, iAttacker, Float:flDamage, iBits) {
    if(is_user_connected(iAttacker) && is_user_connected(iVictim) && __get_user_team(iVictim) == Night) {
        remove_task(10000 + iVictim)
        
        set_user_rendering(iVictim, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)    
        
        set_task(2.0, "SetInv", iVictim + 10000) 
    }
}

public SetInv(asdasd) {
    new playerid = asdasd-10000
    set_user_rendering(playerid, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 0)
}

public Player_ResetMaxSpeed(playerid) {
    if(is_user_alive(playerid) && __get_user_team(playerid) == Night && get_user_maxspeed(playerid) != 1.0)
        set_pev(playerid, pev_maxspeed, fl_NightSpeed) 

public GroundWeapon_Touch(iWeapon, playerid) {
    if(!is_user_connected(playerid) || !is_user_alive(playerid)) return HAM_SUPERCEDE
    if(!g_iPickUp) {
        remove_entity(iWeapon)
        return HAM_SUPERCEDE
    } 

    new iTeam = __get_user_team(playerid)
    if((iTeam == -1) ||    (iTeam == Night && g_iPickUp != 1) || (iTeam == AntiNight && g_iPickUp != 2)) return HAM_SUPERCEDE
    
    return HAM_IGNORED
}   

public NewRound() {
    TeamCH = 0
}

public Message_ScoreAttrib() {
    new iFlags = get_msg_arg_int(2)
    if(iFlags & (1<<1)) {
        iFlags &= ~(1<<1)
        set_msg_arg_int(2, 0, iFlags)
    }

public Message_SendAudio(iMsgId, iMsgDest, playerid) {
    if(playerid) return 

    new iPlayers[32], 
         iNum,  
         iPlayer 

    new szSound[14]
    get_msg_arg_string(2, szSound, charsmax(szSound))
    get_players(iPlayers, iNum) 

    if(equal(szSound, "%!MRAD_ctwin")) { 
        for(new i = 0; i < iNum; i++) {
            iPlayer = iPlayers
            switch(__get_user_team(iPlayer)) {
                case AntiNight: cs_set_user_team(iPlayer, g_iNightTeam) 
                case Night: cs_set_user_team(iPlayer, g_iAntiNightTeam)
            }
            TeamCH = 1 
        } 
    }  
}  

public Hostage_Spawn(iHostage) {
    remove_entity(iHostage)
    return HAM_SUPERCEDE

public CurWeapon(playerid) {

public Set_Night_INV(iEnt) {
    entity_set_float(iEnt, EV_FL_nextthink, get_gametime() + 0.1)

    new iPlayers[MAX_PLAYERS], 
        iNum, 
        playerid

    get_players(iPlayers, iNum, "ae", g_iNightTeam == CS_TEAM_T ? "TERRORIST" : "CT")

    for(new i; i<iNum; i++) {
        playerid = iPlayers
        if(get_user_weapon(playerid) == CSW_KNIFE) set_user_rendering(playerid, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 0) 
        else set_user_rendering(playerid, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)
    }
}

strip_user_weapons_ex(playerid) {
    strip_user_weapons(playerid) 
    give_item(playerid, "weapon_knife")
}[/sursa]
[sursa=1.0.0]#if defined _nightcrawler
  #endinput
#endif
#define _nightcrawler 

#include <cstrike> 

enum _:ItemRestriction {
    Night,
    AntiNight

new CsTeams:g_iNightTeam = CS_TEAM_T,
    CsTeams:g_iAntiNightTeam = CS_TEAM_CT,
    TeamCH = 0

public team_change2() {
    switch(TeamCH) {
        case 0: return false 
        case 1: return true
        default: return false
    }
    return false

__get_user_team(playerid) {
    new CsTeams:iTeam = cs_get_user_team(playerid)  

    if(iTeam == g_iNightTeam) return Night 
    else if(iTeam == g_iAntiNightTeam) return AntiNight
    else return -1

    return -1
}[/sursa]
[sursa=1.0.1]/*

* Bomba a fost stearsa.
* Acum tero pot fii invizibili atata timp cat nu isi iau dmg sau nu au knife in mana // credite ConnorMcLeod
* Am facut team swap
* Acum night au viteza de 1000
* Acum cand un night primeste dmg nu mai este inv, dupa 2 secunde daca nu isi primeste iar dmg atunci o sa fie iar inv
* Acum nu se mai poate cumpara nimic din buy
* Am sters viteza si gravitatia (cele default) pentru ca vor fi clase
*
*


*/
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <hamsandwich>
#include <fakemeta>
#include <fun>
#include <engine> 

#include <nightcrawler>

#define MAX_PLAYERS 32

new const   PLUGIN[ ] = "Nightcrawler Main",
            VERSION[ ] = "1.0.1",
            AUTHOR[ ] = "Diversity" 

new g_iPickUp = 2

public plugin_init() {
    
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    RegisterHam(Ham_Spawn, "player", "OnPlayerSpawn", 1)
    RegisterHam(Ham_Spawn, "hostage_entity", "Hostage_Spawn")
    RegisterHam(Ham_TakeDamage, "player", "OnPlayerTakeDamage", 1) 
    RegisterHam(Ham_Touch, "weaponbox", "GroundWeapon_Touch")
    RegisterHam(Ham_Touch, "armoury_entity", "GroundWeapon_Touch")
    RegisterHam(Ham_Touch, "weapon_shield", "GroundWeapon_Touch")

    register_event("CurWeapon", "CurWeapon", "be", "1=1") 
    register_event("HLTV", "NewRound", "a", "1=0", "2=0")

    register_message(get_user_msgid("ScoreAttrib"), "Message_ScoreAttrib")  
    register_message(get_user_msgid("SendAudio"), "Message_SendAudio")   

    new enT = create_entity("info_target")
    set_pev(enT, pev_classname, "check_speed")
    set_pev(enT, pev_nextthink, get_gametime() + 0.1)
    register_think("check_speed", "Set_Night_INV")  
}

public plugin_precache()  { 
    new Entity = create_entity("info_map_parameters")
    
    DispatchKeyValue(Entity, "buying", "3")
    DispatchSpawn(Entity)

public pfn_keyvalue(Entity)   { 
    new ClassName[20], 
        Anyf[2]
    copy_keyvalue(ClassName, charsmax(ClassName), Anyf, charsmax(Anyf), Anyf, charsmax(Anyf))
    
    if(equal(ClassName, "info_map_parameters")) { 
        remove_entity(Entity)
        return PLUGIN_HANDLED
    } 
    
    return PLUGIN_CONTINUE

public OnPlayerSpawn(playerid) {
    if(!is_user_connected(playerid)) return 

    strip_user_weapons_ex(playerid)

    if(__get_user_team(playerid) == Night) {
        set_user_rendering(playerid, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 0)
        set_user_footsteps(playerid, 1) 
    } else {
        set_user_rendering(playerid, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)    
        set_user_footsteps(playerid, 0)
        set_user_gravity(playerid, 1.0)
    } 
}

public OnPlayerTakeDamage(iVictim, iInflictor, iAttacker, Float:flDamage, iBits) {
    if(is_user_connected(iAttacker) && is_user_connected(iVictim) && __get_user_team(iVictim) == Night) {
        remove_task(10000 + iVictim)
        
        set_user_rendering(iVictim, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)    
        
        set_task(2.0, "SetInv", iVictim + 10000) 
    }
}

public SetInv(asdasd) {
    new playerid = asdasd-10000
    set_user_rendering(playerid, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 0)

public GroundWeapon_Touch(iWeapon, playerid) {
    if(!is_user_connected(playerid) || !is_user_alive(playerid)) return HAM_SUPERCEDE
    if(!g_iPickUp) {
        remove_entity(iWeapon)
        return HAM_SUPERCEDE
    } 

    new iTeam = __get_user_team(playerid)
    if((iTeam == -1) ||    (iTeam == Night && g_iPickUp != 1) || (iTeam == AntiNight && g_iPickUp != 2)) return HAM_SUPERCEDE
    
    return HAM_IGNORED
}   

public NewRound() {
    TeamCH = 0
}

public Message_ScoreAttrib() {
    new iFlags = get_msg_arg_int(2)
    if(iFlags & (1<<1)) {
        iFlags &= ~(1<<1)
        set_msg_arg_int(2, 0, iFlags)
    }

public Message_SendAudio(iMsgId, iMsgDest, playerid) {
    if(playerid) return 

    new iPlayers[32], 
         iNum,  
         iPlayer 

    new szSound[14]
    get_msg_arg_string(2, szSound, charsmax(szSound))
    get_players(iPlayers, iNum) 

    if(equal(szSound, "%!MRAD_ctwin")) { 
        for(new i = 0; i < iNum; i++) {
            iPlayer = iPlayers
            switch(__get_user_team(iPlayer)) {
                case AntiNight: cs_set_user_team(iPlayer, g_iNightTeam) 
                case Night: cs_set_user_team(iPlayer, g_iAntiNightTeam)
            }
            TeamCH = 1 
        } 
    }  
}  

public Hostage_Spawn(iHostage) {
    remove_entity(iHostage)
    return HAM_SUPERCEDE

public CurWeapon(playerid) {

public Set_Night_INV(iEnt) {
    entity_set_float(iEnt, EV_FL_nextthink, get_gametime() + 0.1)

    new iPlayers[MAX_PLAYERS], 
        iNum, 
        playerid

    get_players(iPlayers, iNum, "ae", g_iNightTeam == CS_TEAM_T ? "TERRORIST" : "CT")

    for(new i; i<iNum; i++) {
        playerid = iPlayers
        if(get_user_weapon(playerid) == CSW_KNIFE) set_user_rendering(playerid, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 0) 
        else set_user_rendering(playerid, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)
    }
}

strip_user_weapons_ex(playerid) {
    strip_user_weapons(playerid) 
    give_item(playerid, "weapon_knife")
}[/sursa]
[sursa=1.0.1]#if defined _nightcrawler
  #endinput
#endif
#define _nightcrawler 

#include <cstrike> 

enum _:ItemRestriction {
    Night,
    AntiNight
}  

new CsTeams:g_iNightTeam = CS_TEAM_T,
    CsTeams:g_iAntiNightTeam = CS_TEAM_CT,
    TeamCH = 0

public team_change2() {
    switch(TeamCH) {
        case 0: return false 
        case 1: return true
        default: return false
    }
    return false

__get_user_team(playerid) {
    new CsTeams:iTeam = cs_get_user_team(playerid)  

    if(iTeam == g_iNightTeam) return Night 
    else if(iTeam == g_iAntiNightTeam) return AntiNight
    else return -1

    return -1
}   

native register_night_class(name[], desc[], hp, speed, Float:grav)[/sursa]
[sursa=1.0.0]#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
 
#include <nightcrawler>

enum _:NightClassData {
    ClassName[32],
    ClassDesc[32],
    ClassHP,
    ClassSpeed,
    ClassGrav
}

new Array:g_NightClasses, 
    g_iTotalNightClasses, 
    g_NightSelectClassFwd

new g_FirstSpawn[33], 
    g_CurNightClass[33], 
    g_NextNightClass[33]

public plugin_precache() {

    register_plugin("NightCrawler Rase", "1.0", "Filip. & KronoS # GG") 

    g_NightClasses = ArrayCreate(NightClassData)
}  

public plugin_init() {

    if(!g_iTotalNightClasses)
        set_fail_state("This plugin can't run because no nightcrawler classes were found!")
    
    RegisterHam(Ham_Spawn, "player", "Event_PlayerSpawn", 1)
    register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
    
    register_clcmd("say /class", "Func_CmdChangeClass")
    register_clcmd("say_team /class", "Func_CmdChangeClass")
    
    g_NightSelectClassFwd = CreateMultiForward("night_class_selected", ET_IGNORE, FP_CELL, FP_CELL)
    
    set_task(120.0, "Func_DisplayInfo", _, _, _, "b")
}

public plugin_natives() {
    register_native("register_night_class", "native_register_night_class")
    register_native("get_user_night_class", "native_get_user_night_class")
    register_native("set_user_night_class", "native_set_user_night_class")
}

public client_putinserver(playerid) {

    g_CurNightClass[playerid] = 1
    g_NextNightClass[playerid] = 1
    g_FirstSpawn[playerid] = 1
}

public Event_PlayerSpawn(playerid) {
    
    if(!is_user_alive(playerid) || __get_user_team(playerid) != Night) return true

    if(g_FirstSpawn[playerid]) {    
        g_FirstSpawn[playerid] = 0
        Func_ShowNightClasses(playerid, .page = 0)
    }
    
    g_CurNightClass[playerid] = g_NextNightClass[playerid]
    
    new eItemData[NightClassData]
    new iClassIndex = g_CurNightClass[playerid] - 1
    ArrayGetArray(g_NightClasses, iClassIndex, eItemData)
    
    set_user_health(playerid, eItemData[ClassHP])
    set_user_gravity(playerid, Float:eItemData[ClassGrav])

    return true
}

public Event_CurWeapon(playerid) {
    
    if(!is_user_alive(playerid) || __get_user_team(playerid) != Night) return true
    
    new eItemData[NightClassData]
    new iClassIndex = g_CurNightClass[playerid] - 1
    ArrayGetArray(g_NightClasses, iClassIndex, eItemData)
    
    set_pev(playerid, pev_maxspeed, float(eItemData[ClassSpeed]))

    return true
}

public Func_CmdChangeClass(playerid) Func_ShowNightClasses(playerid, .page = 0 ) 
public Func_DisplayInfo() client_print(0, print_chat, "Type /class to change your nightcrawler class")

Func_ShowNightClasses(playerid, page) {
    
    if(!g_iTotalNightClasses) return true
    
    page = clamp(page, 0, (g_iTotalNightClasses - 1) / 7)
    
    new iMenu = menu_create("\rChoose a Nightcrawler class:", "Handler_ClassesMenu")
    
    new eItemData[NightClassData], szItem[64], szNum[3]
    
    for(new class = 0; class < g_iTotalNightClasses; class++) {
        
        ArrayGetArray(g_NightClasses, class, eItemData)
        
        if(class == (g_NextNightClass[playerid] - 1)) formatex(szItem, charsmax(szItem), "\d%s [%s]", eItemData[ClassName], eItemData[ClassDesc])
        else formatex(szItem, charsmax(szItem), "%s \y[%s]", eItemData[ClassName], eItemData[ClassDesc])
        
        num_to_str(class, szNum, charsmax(szNum))
        
        menu_additem(iMenu, szItem, szNum)
    }
    
    menu_display(playerid, iMenu, page)

    return true
}

public Handler_ClassesMenu(playerid, menu, item) {
    
    if(item == MENU_EXIT) {
        menu_destroy(menu)
        return
    }
    
    new iAccess, szNum[3], hCallback
    menu_item_getinfo(menu, item, iAccess, szNum, charsmax(szNum), _, _, hCallback)
    
    new iClassIndex = str_to_num(szNum)
    
    new eItemData[NightClassData]
    ArrayGetArray(g_NightClasses, iClassIndex, eItemData)
    
    g_NextNightClass[playerid] = str_to_num(szNum) + 1
    
    client_print(playerid, print_chat, "Your nightcrawler class after the next spawn will be %", eItemData[ClassName])
    client_print(playerid, print_chat, "HP: %i | Speed: %i | Gravity: %i", eItemData[ClassHP], eItemData[ClassSpeed], floatround(eItemData[ClassGrav] * 800.0))
    
    menu_destroy(menu)
    
    new iReturn
    ExecuteForward(g_NightSelectClassFwd, iReturn, playerid, iClassIndex)
}

public native_register_night_class(Plugin, iParams) {
    
    new eClassData[NightClassData]
    
    get_string(1, eClassData[ClassName], charsmax(eClassData[ClassName]))
    get_string(2, eClassData[ClassDesc], charsmax(eClassData[ClassDesc]))
    
    eClassData[ClassHP] = get_param(3)
    eClassData[ClassSpeed] = get_param(4)
    eClassData[ClassGrav] = get_param(5)
    
    ArrayPushArray(g_NightClasses, eClassData)
    
    g_iTotalNightClasses++
    
    return (g_iTotalNightClasses - 1)
}

public native_get_user_night_class(playerid) return g_CurNightClass[playerid]

public native_set_user_night_class(playerid, class) {
    
    if(class < 0 || class >= g_iTotalNightClasses) return 0
    
    g_NextNightClass[playerid] = class
    return 1
}[/sursa]
[sursa=exemplu de rasa]#include <amxmodx>
#include <nightcrawler>

new g_NightClassID 

public plugin_init()  g_NightClassID = register_night_class("Normal Nightcrawler [Balanced]", "Aceasta clasa este una de tip balansata.", 120, 670, 0.375)[/sursa]
Nume: NightCrawler
Versiune: 1.0.1
Link oficial:

Instalare:
1. Fisierul nume_plugin.sma il puneti in addons/amxmodx/scripting
2. Fisierul nume_plugin.amxx il puneti in addons/amxmodx/plugins
3. Intrati in fisierul addons/amxmodx/configs/plugins.ini si adaugati la urma:

nume_plugin.amxx


4. Alti pasi necesari....

Cvar-uri (se adauga in fisierul amxmodx\configs\amxx.cfg): 

  • amx_comanda VALOARE - descrierea comenzii respective 
    amx_comanda 20 - descrierea comenzii respective 
    amx_comanda X - orice alta comanda de care dispune pluginul respectiv

Comenzi administrative (se tasteaza in consola si trebuie sa fiti administrator):

  • amx_comanda nume/parte_din_nume - descrierea comenzii respective 
    amx_comanda valoare - descrierea comenzii respective 
    amx_comanda X - orice alta comanda de care dispune pluginul respectiv

Comenzi publice (se tasteaza in joc prin apasarea tastei Y):

  • /rules - afiseaza regulile
    /rank - afiseaza rankul
    /comanda - orice alta comanda de care dispune pluginul respectiv

Module necesare (se sterge ; din fata modulului de mai jos; acestea le gasiti in fisierul amxmodx\configs\modules.ini):
- CStrike
- Fun
- alte module necesare..

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Followers 0
HAPPYHALLOWEEN PUBZONE
  • FFA.FRAGS.RO [CS2]

    Server FFA.PUBZONE.RO [CS2] DM | FFA WarmupServer

|

Theme Made by Zayon & Cyber Designs

×
×
  • Create New...