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

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

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

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

jetpack_lite.sma need fix

, Помогите побороть ошибку [РЕШЕНО]
Статус пользователя user.gameover.user
сообщение 14.8.2015, 19:47
Сообщение #1
Стаж: 15 лет

Сообщений: 1470
Благодарностей: 426
Полезность: 700

jetpack_lite.sma
Код
#include <amxmodx>
#include <cstrike>
#include <engine>

new const PLUGIN[]  = "Jetpack Lite";
new const VERSION[] = "1.0";
new const AUTHOR[]  = "v3x";

new const CVAR_JP_ACTIVE[] = "jp_active";
new const CVAR_JP_COST[]   = "jp_cost";
new const CVAR_JP_MAX[]    = "jp_max";
new const CVAR_JP_SPEED[]  = "jp_speed";
new const CVAR_JP_TRAIL[]  = "jp_trail";
new const CVAR_JP_DOD[]    = "jp_dropondeath";

//new JP_SOUND[] = "jetpack.wav";

new flame , smoke;
new bool:has_jp[33];
new bool:has_started;
new frame[33];
new current_jps;

public plugin_init()
{
    register_plugin(PLUGIN , VERSION , AUTHOR);

    //register_clcmd("say /jetpack"  , "ClCmd_BuyJP");
    register_clcmd("/tjetpack"       , "ClCmd_BuyJP");
    //register_clcmd("say /dropjp"   , "drop_jp");
    register_clcmd("/dropjp"        , "drop_jp");
    //register_clcmd("amx_givejp"  , "ClCmd_GiveJP");

    register_cvar(CVAR_JP_ACTIVE   , "1");
    register_cvar(CVAR_JP_COST     , "0");
    register_cvar(CVAR_JP_MAX      , "32");
    register_cvar(CVAR_JP_SPEED    , "260");
    register_cvar(CVAR_JP_TRAIL    , "1");
    register_cvar(CVAR_JP_DOD      , "0");

    register_event("DeathMsg" , "Event_DeathMsg" , "a");
    register_event("HLTV" , "did_not_start" , "a" , "1=0" , "2=0");

    register_logevent("did_start" , 2 , "1=Round_Start");

    register_touch("jetpack" , "player" , "mmm_touchy");

    //set_task(300.0 , "Advertise");
}

/* public Advertise() {
    if(get_cvar_num(CVAR_JP_ACTIVE)) {
        client_print(0 , print_chat, "* To buy a jetpack say /jetpack");
    }
    set_task(300.0 , "Advertise");
} */

public did_not_start()
{
    has_started = false;
    new ent = -1;
    while((ent = find_ent_by_class(ent , "jetpack")) != 0)
    {
        remove_entity(ent);
    }
    current_jps = 0;
    new aPlayers[32] , iNum , i;
    get_players(aPlayers , iNum);
    for(i = 1; i <= iNum; i++)
    {
        if(has_jp[aPlayers[i]])
        {
            current_jps++;
        }
    }
}

public did_start()
{
    has_started = true;
}

public client_connect(id)
{
    has_jp[id] = false;
}

public client_disconnect(id)
{
    has_jp[id] = false;
}

public plugin_precache()
{
    smoke = precache_model("sprites/lightsmoke.spr");
    flame = precache_model("sprites/rjet1.spr"); // bm1, rjet1, stmbal1, WXplo1, xsmoke1, lightsmoke
    precache_model("models/p_egon.mdl");
    precache_model("models/w_egon.mdl");
    //precache_sound(JP_SOUND);
}

public client_PreThink(id)
{
    if(!get_cvar_num(CVAR_JP_ACTIVE))
    {
        return PLUGIN_CONTINUE;
    }
    if(!is_user_connected(id) || !is_user_alive(id))
    {
        return PLUGIN_CONTINUE;
    }
    if(!(get_user_button(id) & IN_RELOAD))
    {
        return PLUGIN_CONTINUE;
    }
    if(!has_started || !has_jp[id])
    {
        return PLUGIN_CONTINUE;
    }
    new Float:fAim[3] , Float:fVelocity[3];
    VelocityByAim(id , get_cvar_num(CVAR_JP_SPEED) , fAim);

    fVelocity[0] = fAim[0];
    fVelocity[1] = fAim[1];
    fVelocity[2] = fAim[2];

    set_user_velocity(id , fVelocity);

    entity_set_int(id , EV_INT_gaitsequence , 6);

    //emit_sound(id , CHAN_VOICE , JP_SOUND , 1.0 , ATTN_NORM , 0 , PITCH_NORM);

    if(frame[id] >= 3)
    {
        frame[id] = 0;
        if(get_cvar_num(CVAR_JP_TRAIL))
        {
            smoke_effect(id);
        }
        entity_set_string(id , EV_SZ_weaponmodel , "models/p_egon.mdl");
    }
    frame[id]++;

    return PLUGIN_CONTINUE;
}

public smoke_effect(id)
{
    new origin[3];
    get_user_origin(id, origin, 0);
    origin[2] = origin[2] - 10;

    message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
    write_byte(17);
    write_coord(origin[0]);
    write_coord(origin[1]);
    write_coord(origin[2]);
    write_short((get_cvar_num(CVAR_JP_TRAIL) == 1) ? smoke : flame);
    write_byte(10);
    write_byte(115);
    message_end();
}

public Event_DeathMsg()
{
    if(get_cvar_num(CVAR_JP_DOD))
    {
        drop_jp(read_data(2));
    }
    else
    {
        has_jp[read_data(2)] = false;
    }
}

public ClCmd_BuyJP(id)
{
    if(!get_cvar_num(CVAR_JP_ACTIVE))
    {
        //client_print(id , print_chat , "[AMXX] Sorry, jetpacks are currently disabled");
        return PLUGIN_HANDLED;
    }

    if(!is_user_alive(id))
    {
        //client_print(id , print_chat , "[AMXX] You cannot buy a jetpack when you are dead!");
        return PLUGIN_HANDLED;
    }

    if(has_jp[id])
    {
        //client_print(id , print_chat , "[AMXX] You already have a jetpack!");
        return PLUGIN_HANDLED;
    }

    if(current_jps >= get_cvar_num(CVAR_JP_MAX))
    {
        //client_print(id , print_chat , "[AMXX] There's too many jetpacks out already!");
        return PLUGIN_HANDLED;
    }

    new iMoney = cs_get_user_money(id) - get_cvar_num(CVAR_JP_COST);

    if(iMoney < 0)
    {
        //client_print(id , print_chat , "[AMXX] You do not have enough money for a jetpack! Cost: $%d" , get_cvar_num(CVAR_JP_COST));
        return PLUGIN_HANDLED;
    }

    cs_set_user_money(id , iMoney , 1);

    has_jp[id] = true;

    //client_print(id , print_chat , "[AMXX] To use the jetpack hold jump and aim in the direction you wish to move in");
    //client_print(id , print_chat , "[AMXX] To drop it, say /dropjp in chat");

    emit_sound(id , CHAN_VOICE , "items/gunpickup2.wav" , 1.0 , ATTN_NORM , 0 , PITCH_NORM);

    current_jps++;

    return PLUGIN_HANDLED;
}

public drop_jp(id)
{
    if(!has_jp[id])
    return PLUGIN_HANDLED;

    new Float:fAim[3] , Float:fOrigin[3];
    VelocityByAim(id , 64 , fAim);
    entity_get_vector(id , EV_VEC_origin , fOrigin);

    fOrigin[0] += fAim[0];
    fOrigin[1] += fAim[1];

    new jp = create_entity("info_target");

    entity_set_string(jp , EV_SZ_classname , "jetpack");
    entity_set_model(jp , "models/w_egon.mdl");

    entity_set_size(jp , Float:{-16.0,-16.0,-16.0} , Float:{16.0,16.0,16.0});

    entity_set_int(jp , EV_INT_solid , 1);
    entity_set_int(jp , EV_INT_movetype , 6);

    entity_set_vector(jp , EV_VEC_origin , fOrigin);

    has_jp[id] = false;

    return PLUGIN_HANDLED;
}

public mmm_touchy(jp , id)
{
    if(!is_user_alive(id))
    return PLUGIN_CONTINUE;
    if(has_jp[id])
    return PLUGIN_CONTINUE;

    has_jp[id] = true;

    emit_sound(id , CHAN_VOICE , "items/gunpickup2.wav" , 1.0 , ATTN_NORM , 0 , PITCH_NORM);

    remove_entity(jp);

    return PLUGIN_CONTINUE;
}


Код
Displaying debug trace (plugin "jetpack_lite.amxx")
Run time error 4: index out of bounds
[0] jetpack_lite.sma::did_not_start (line 71)

Прикрепленный файл  jetpack_lite.sma ( 5,97 килобайт ) Кол-во скачиваний: 13
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Cannabis
сообщение 14.8.2015, 20:28
Сообщение #2
Стаж: 11 лет

Сообщений: 162
Благодарностей: 42
Полезность: 37

в [ pawn ]
Читать же противно.. bad.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя user.gameover.user
сообщение 14.8.2015, 22:02
Сообщение #3
Стаж: 15 лет

Сообщений: 1470
Благодарностей: 426
Полезность: 700

Цитата(Cannabis @ 14.8.2015, 21:23) *
в [ pawn ]
Читать же противно.. bad.gif

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

new const PLUGIN[] = "Jetpack Lite";
new const VERSION[] = "1.0";
new const AUTHOR[] = "v3x";

new const CVAR_JP_ACTIVE[] = "jp_active";
new const CVAR_JP_COST[] = "jp_cost";
new const CVAR_JP_MAX[] = "jp_max";
new const CVAR_JP_SPEED[] = "jp_speed";
new const CVAR_JP_TRAIL[] = "jp_trail";
new const CVAR_JP_DOD[] = "jp_dropondeath";

//new JP_SOUND[] = "jetpack.wav";

new flame , smoke;
new bool:has_jp[33];
new bool:has_started;
new frame[33];
new current_jps;

public plugin_init()
{
register_plugin(PLUGIN , VERSION , AUTHOR);

//register_clcmd("say /jetpack" , "ClCmd_BuyJP");
register_clcmd("/tjetpack" , "ClCmd_BuyJP");
//register_clcmd("say /dropjp" , "drop_jp");
register_clcmd("/dropjp" , "drop_jp");
//register_clcmd("amx_givejp" , "ClCmd_GiveJP");

register_cvar(CVAR_JP_ACTIVE , "1");
register_cvar(CVAR_JP_COST , "0");
register_cvar(CVAR_JP_MAX , "32");
register_cvar(CVAR_JP_SPEED , "260");
register_cvar(CVAR_JP_TRAIL , "1");
register_cvar(CVAR_JP_DOD , "0");

register_event("DeathMsg" , "Event_DeathMsg" , "a");
register_event("HLTV" , "did_not_start" , "a" , "1=0" , "2=0");

register_logevent("did_start" , 2 , "1=Round_Start");

register_touch("jetpack" , "player" , "mmm_touchy");

//set_task(300.0 , "Advertise");
}

/* public Advertise() {
if(get_cvar_num(CVAR_JP_ACTIVE)) {
client_print(0 , print_chat, "* To buy a jetpack say /jetpack");
}
set_task(300.0 , "Advertise");
} */

public did_not_start()
{
has_started = false;
new ent = -1;
while((ent = find_ent_by_class(ent , "jetpack")) != 0)
{
remove_entity(ent);
}
current_jps = 0;
new aPlayers[32] , iNum , i ;
get_players(aPlayers , iNum);
for(i = 1; i <= iNum; i++)
{
if(has_jp[aPlayers[i]])
{
current_jps++;
}
}
}

public did_start()
{
has_started = true;
}

public client_connect(id)
{
has_jp[id] = false;
}

public client_disconnect(id)
{
has_jp[id] = false;
}

public plugin_precache()
{
smoke = precache_model("sprites/lightsmoke.spr");
flame = precache_model("sprites/rjet1.spr"); // bm1, rjet1, stmbal1, WXplo1, xsmoke1, lightsmoke
precache_model("models/p_egon.mdl");
precache_model("models/w_egon.mdl");
//precache_sound(JP_SOUND);
}

public client_PreThink(id)
{
if(!get_cvar_num(CVAR_JP_ACTIVE))
{
return PLUGIN_CONTINUE;
}
if(!is_user_connected(id) || !is_user_alive(id))
{
return PLUGIN_CONTINUE;
}
if(!(get_user_button(id) & IN_RELOAD))
{
return PLUGIN_CONTINUE;
}
if(!has_started || !has_jp[id])
{
return PLUGIN_CONTINUE;
}
new Float:fAim[3] , Float:fVelocity[3];
VelocityByAim(id , get_cvar_num(CVAR_JP_SPEED) , fAim);

fVelocity[0] = fAim[0];
fVelocity[1] = fAim[1];
fVelocity[2] = fAim[2];

set_user_velocity(id , fVelocity);

entity_set_int(id , EV_INT_gaitsequence , 6);

//emit_sound(id , CHAN_VOICE , JP_SOUND , 1.0 , ATTN_NORM , 0 , PITCH_NORM);

if(frame[id] >= 3)
{
frame[id] = 0;
if(get_cvar_num(CVAR_JP_TRAIL))
{
smoke_effect(id);
}
entity_set_string(id , EV_SZ_weaponmodel , "models/p_egon.mdl");
}
frame[id]++;

return PLUGIN_CONTINUE;
}

public smoke_effect(id)
{
new origin[3];
get_user_origin(id, origin, 0);
origin[2] = origin[2] - 10;

message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(17);
write_coord(origin[0]);
write_coord(origin[1]);
write_coord(origin[2]);
write_short((get_cvar_num(CVAR_JP_TRAIL) == 1) ? smoke : flame);
write_byte(10);
write_byte(115);
message_end();
}

public Event_DeathMsg()
{
if(get_cvar_num(CVAR_JP_DOD))
{
drop_jp(read_data(2));
}
else
{
has_jp[read_data(2)] = false;
}
}

public ClCmd_BuyJP(id)
{
if(!get_cvar_num(CVAR_JP_ACTIVE))
{
//client_print(id , print_chat , "[AMXX] Sorry, jetpacks are currently disabled");
return PLUGIN_HANDLED;
}

if(!is_user_alive(id))
{
//client_print(id , print_chat , "[AMXX] You cannot buy a jetpack when you are dead!");
return PLUGIN_HANDLED;
}

if(has_jp[id])
{
//client_print(id , print_chat , "[AMXX] You already have a jetpack!");
return PLUGIN_HANDLED;
}

if(current_jps >= get_cvar_num(CVAR_JP_MAX))
{
//client_print(id , print_chat , "[AMXX] There's too many jetpacks out already!");
return PLUGIN_HANDLED;
}

new iMoney = cs_get_user_money(id) - get_cvar_num(CVAR_JP_COST);

if(iMoney < 0)
{
//client_print(id , print_chat , "[AMXX] You do not have enough money for a jetpack! Cost: $%d" , get_cvar_num(CVAR_JP_COST));
return PLUGIN_HANDLED;
}

cs_set_user_money(id , iMoney , 1);

has_jp[id] = true;

//client_print(id , print_chat , "[AMXX] To use the jetpack hold jump and aim in the direction you wish to move in");
//client_print(id , print_chat , "[AMXX] To drop it, say /dropjp in chat");

emit_sound(id , CHAN_VOICE , "items/gunpickup2.wav" , 1.0 , ATTN_NORM , 0 , PITCH_NORM);

current_jps++;

return PLUGIN_HANDLED;
}

public drop_jp(id)
{
if(!has_jp[id])
return PLUGIN_HANDLED;

new Float:fAim[3] , Float:fOrigin[3];
VelocityByAim(id , 64 , fAim);
entity_get_vector(id , EV_VEC_origin , fOrigin);

fOrigin[0] += fAim[0];
fOrigin[1] += fAim[1];

new jp = create_entity("info_target");

entity_set_string(jp , EV_SZ_classname , "jetpack");
entity_set_model(jp , "models/w_egon.mdl");

entity_set_size(jp , Float:{-16.0,-16.0,-16.0} , Float:{16.0,16.0,16.0});

entity_set_int(jp , EV_INT_solid , 1);
entity_set_int(jp , EV_INT_movetype , 6);

entity_set_vector(jp , EV_VEC_origin , fOrigin);

has_jp[id] = false;

return PLUGIN_HANDLED;
}

public mmm_touchy(jp , id)
{
if(!is_user_alive(id))
return PLUGIN_CONTINUE;
if(has_jp[id])
return PLUGIN_CONTINUE;

has_jp[id] = true;

emit_sound(id , CHAN_VOICE , "items/gunpickup2.wav" , 1.0 , ATTN_NORM , 0 , PITCH_NORM);

remove_entity(jp);

return PLUGIN_CONTINUE;
}

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Stimul1
сообщение 15.8.2015, 10:00
Сообщение #4


Стаж: 13 лет

Сообщений: 227
Благодарностей: 262
Полезность: 977

Строка 69:
Код:
for(i = 1; i <= iNum; i++)
===>
Код:
for(i = 0; i < iNum; i++)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя user.gameover.user
сообщение 15.8.2015, 10:02
Сообщение #5
Стаж: 15 лет

Сообщений: 1470
Благодарностей: 426
Полезность: 700

Цитата(Stimul1 @ 15.8.2015, 10:55) *
Строка 69:
Код:
for(i = 1; i <= iNum; i++)
===>
Код:
for(i = 0; i < iNum; i++)

Это первое что я сам исправлял,не попогло тогда,попробую еще раз
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SMaster
сообщение 15.8.2015, 11:11
Сообщение #6
Стаж: 15 лет

Сообщений: 55
Благодарностей: 75
Полезность: 294

Код:
new aPlayers[32] , iNum , i ;
get_players(aPlayers , iNum);
for(i = 0; i < iNum; i++)
{
new idUser = aPlayers[i];

if(has_jp[idUser])
{
current_jps++;
}
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя user.gameover.user
сообщение 15.8.2015, 12:37
Сообщение #7
Стаж: 15 лет

Сообщений: 1470
Благодарностей: 426
Полезность: 700

Цитата(SMaster @ 15.8.2015, 12:07) *
Cкрытый текст
Код:
new aPlayers[32] , iNum , i ;
get_players(aPlayers , iNum);
for(i = 0; i < iNum; i++)
{
new idUser = aPlayers[i];

if(has_jp[idUser])
{
current_jps++;
}
}

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

Отредактировал: user.gameover.user, - 15.8.2015, 14:42
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: