doublejump

Тема в разделе "Программирование / Скриптинг", создана пользователем Николай Николай, 10 ноя 2013.

  1. Николай Николай

    Николай Николай

    Сообщения:
    20
    Симпатии:
    0
    Привет, подскажите пожалуйста:
    1. В какой строчке изменить флаг доступа, с Z на T?
    2. В какой строчке изменять кол-во прыжков?
    #define PLUGIN_VERSION "1.0.1"

    #include <sdktools>


    public Plugin:myinfo = {
    name = "Double Jump",
    author = "Paegus",
    description = "Allows double-jumping.",
    version = PLUGIN_VERSION,
    url = ""
    }

    new
    Handle:g_cvJumpBoost = INVALID_HANDLE,
    Handle:g_cvJumpEnable = INVALID_HANDLE,
    Handle:g_cvJumpMax = INVALID_HANDLE,
    Float:g_flBoost = 250.0,
    bool:g_bDoubleJump = true,
    g_fLastButtons[MAXPLAYERS+1],
    g_fLastFlags[MAXPLAYERS+1],
    g_iJumps[MAXPLAYERS+1],
    g_iJumpMax

    public OnPluginStart() {
    CreateConVar(
    "sm_doublejump_version", PLUGIN_VERSION,
    "Double Jump Version",
    FCVAR_PLUGIN|FCVAR_NOTIFY
    )

    g_cvJumpEnable = CreateConVar(
    "sm_doublejump_enabled", "1",
    "Enables double-jumping.",
    FCVAR_PLUGIN|FCVAR_NOTIFY
    )

    g_cvJumpBoost = CreateConVar(
    "sm_doublejump_boost", "250.0",
    "The amount of vertical boost to apply to double jumps.",
    FCVAR_PLUGIN|FCVAR_NOTIFY
    )

    g_cvJumpMax = CreateConVar(
    "sm_doublejump_max", "1",
    "The maximum number of re-jumps allowed while already jumping.",
    FCVAR_PLUGIN|FCVAR_NOTIFY
    )

    HookConVarChange(g_cvJumpBoost, convar_ChangeBoost)
    HookConVarChange(g_cvJumpEnable, convar_ChangeEnable)
    HookConVarChange(g_cvJumpMax, convar_ChangeMax)

    g_bDoubleJump = GetConVarBool(g_cvJumpEnable)
    g_flBoost = GetConVarFloat(g_cvJumpBoost)
    g_iJumpMax = GetConVarInt(g_cvJumpMax)
    }

    public convar_ChangeBoost(Handle:convar, const String:oldVal[], const String:newVal[]) {
    g_flBoost = StringToFloat(newVal)
    }

    public convar_ChangeEnable(Handle:convar, const String:oldVal[], const String:newVal[]) {
    if (StringToInt(newVal) >= 1) {
    g_bDoubleJump = true
    } else {
    g_bDoubleJump = false
    }
    }

    public convar_ChangeMax(Handle:convar, const String:oldVal[], const String:newVal[]) {
    g_iJumpMax = StringToInt(newVal)
    }

    public OnGameFrame() {
    if (g_bDoubleJump) { // double jump active
    for (new i = 1; i <= MaxClients; i++) { // cycle through players
    if (
    IsClientInGame(i) && // is in the game
    IsPlayerAlive(i) && // is alive
    GetUserFlagBits(i) & ADMFLAG_ROOT
    ) {
    DoubleJump(i) // Check for double jumping
    }
    }
    }
    }

    stock DoubleJump(const any:client) {
    new
    fCurFlags = GetEntityFlags(client), // current flags
    fCurButtons = GetClientButtons(client) // current buttons

    if (g_fLastFlags[client] & FL_ONGROUND) { // was grounded last frame
    if (
    !(fCurFlags & FL_ONGROUND) && // becomes airbirne this frame
    !(g_fLastButtons[client] & IN_JUMP) && // was not jumping last frame
    fCurButtons & IN_JUMP // started jumping this frame
    ) {
    OriginalJump(client) // process jump from the ground
    }
    } else if ( // was airborne last frame
    fCurFlags & FL_ONGROUND // becomes grounded this frame
    ) {
    Landed(client) // process landing on the ground
    } else if ( // remains airborne this frame
    !(g_fLastButtons[client] & IN_JUMP) && // was not jumping last frame
    fCurButtons & IN_JUMP // started jumping this frame
    ) {
    ReJump(client) // process attempt to double-jump
    }

    g_fLastFlags[client] = fCurFlags // update flag state for next frame
    g_fLastButtons[client] = fCurButtons // update button state for next frame
    }

    stock OriginalJump(const any:client) {
    g_iJumps[client]++ // increment jump count
    }

    stock Landed(const any:client) {
    g_iJumps[client] = 0 // reset jumps count
    }

    stock ReJump(const any:client) {
    if ( 1 <= g_iJumps[client] <= g_iJumpMax) { // has jumped at least once but hasn't exceeded max re-jumps
    g_iJumps[client]++ // increment jump count
    decl Float:vVel[3]
    GetEntPropVector(client, Prop_Data, "m_vecVelocity", vVel) // get current speeds

    vVel[2] = g_flBoost
    TeleportEntity(client, NULL_VECTOR, NULL_VECTOR, vVel) // boost player
    }
    }
     
  2. NagarD

    NagarD

    Сообщения:
    412
    Симпатии:
    170
    1. GetUserFlagBits(i) & ADMFLAG_ROOT заменить на GetUserFlagBits(i) & ADMFLAG_CUSTOM6

    2. "sm_doublejump_max", "1",