Русское сообщество по скриптингу

Anti-Camper-Hns исправления ошибок

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Anti-Camper-Hns исправления ошибок

Сообщение RSO_ » 04 апр 2021, 18:29

приветствую всех. написал плагин анти кемпер для HNS мода. вроде как он работает но столкнулся вроде бы с простой проблемой. не могу создать несколько таймеров. с помощью функции return не могу заблокировать выполнения кода ниже и самое главное какие есть ошибки или недочёты в самом коде если кому не сложно помогите. я только учусь
Код: Выделить всё
#include <amxmodx>
#include <cstrike> // used for "cs_get_user_team"
#include <dhudmessage>

//Defines
#define TASK_TIME 1.0

#define dir "addons/amxmodx/configs/Anti_Camper.txt"
#define ACCESS ADMIN_LEVEL_A

new CAMPER_id[32]

//const TASK_event = 10002;
const TASK_Free_Jumps 13332;
const 
TASK_Camper 14442;

new Array:
g_a_data;

new 
gs_PlusSize[][] = {"[+1]""[+5]""[+20]""[+50]"}
new 
gi_nextSizegi_CubeSize 1check_point 1Plus_minus 1Dev_draw_line 1
new YXZ[3], XYZX_1X_2Y_1Y_2Z_1Z_2

//check_all_point() check_Camper(id)
new Origin_X[50],Origin_Y[50],Origin_Z[50],Origin_X_1[50],Origin_Y_1[50],Origin_Z_1[50]
new 
Origin_X_2[50],Origin_Y_2[50],Origin_Z_2[50]
new 
Player_message[32], one_cube[32]
new 
i_POINT

//radar()
new gmsgHostagePosgmsgHostageK
new id_all[32]
new 
Max_Players

//check_Free_Jumps(id)
new Free_Jumps[32]
new 
distanceuser_distance[32]
new 
origin_CT[3], origin_T[3

new 
size_z 1000size_xy 300 // ---------------------


new color_R 0
new color_G 190
new color_B 250
new light 950   //650
new time_line 8

new g_iSprite
public plugin_precache()
{
    
g_iSprite precache_model("sprites/laserbeam.spr");
}

public 
plugin_init()
{
    
register_plugin("Anti-Camper-Hns","1.0","RSO")
    
    
register_cvar("Line""4"); // 7
    
register_cvar("Amplitude""0");
    
    
gmsgHostagePos get_user_msgid("HostagePos")
    
gmsgHostageK   get_user_msgid("HostageK")
    
set_task(TASK_TIME"radar"1111__"b")
    
    
register_clcmd("menu_point""check_menu_point"
    
register_clcmd("Dev_point",    "Dev_point"ACCESS"<0/1> - Admin Commands")

    
check_all_point()
}

public 
client_putinserver(id) {event(id);}

public 
client_disconnect(id) {
remove_task(id TASK_Free_Jumps); remove_task(id TASK_Camper); remove_task(id); }

public 
event(id)
{  
    if(
is_user_alive(id))
    {
        
set_task(0.5,"check_Free_Jumps"id+TASK_Free_Jumps); // check_Free_Jumps(id) 
        
set_task(1.0,"check_Camper"id+TASK_Camper);  // check_Camper(id)      
    
}
   
    if(!
task_exists(id)) {set_task(5.0,"event",id,_,_,"b");}
}

public 
Dev_point()
{
    if(
Dev_draw_line != 2) {Dev_draw_line++;}
    else {
Dev_draw_line 1;}    
}

//==================================================================================================
public check_Camper(id)
{
    
id -= TASK_Camper;
        
    if(!
file_exists(dir))  {return PLUGIN_HANDLED;}

    new 
Org_YXZ[3]
    new 
X1X2Y1Y2Z1Z2 // XX, YY, ZZ, 
    
    
time_line 50//50
    
new random random_num(1,16)
    switch(
random)
    {
        case 
1color_R=237,  color_G=255color_B=208; case 2color_R=206color_G=18,  color_B=6;
        case 
3color_R=242,  color_G=50,  color_B=0;   case 4color_R=6,    color_G=222color_B=33;
        case 
5color_R=7,    color_G=120color_B=76;  case 6color_R=47,   color_G=254color_B=47;
        case 
7color_R=149,  color_G=194color_B=1;   case 8color_R=11,   color_G=32,  color_B=210;
        case 
9color_R=87,   color_G=42,  color_B=228; case 10color_R=56,  color_G=253color_B=55;
        case 
11color_R=190color_G=34,  color_B=1;   case 12color_R=230color_G=58,  color_B=10;
        case 
13color_R=129color_G=94,  color_B=204; case 14color_R=17,  color_G=136color_B=43;
        case 
16color_R=170color_G=37,  color_B=202; case 15color_R=5,   color_G=191color_B=123;
    }
    
    for (new 
0i_POINTi++)
    {
        
//XX = Origin_X[i];YY = Origin_Y[i];ZZ = Origin_Z[i]
        
X1 Origin_X_1[i]; X2 Origin_X_2[i]
        
Y1 Origin_Y_1[i]; Y2 Origin_Y_2[i]
        
Z1 Origin_Z_1[i]; Z2 Origin_Z_2[i]

        
get_user_origin(idOrg_YXZ0);
        
        if((
Org_YXZ[0] <= X1)&&(Org_YXZ[0] >= X2)&&((Org_YXZ[1] <= Y1)&&(Org_YXZ[1] >= Y2))&&
        ((
Org_YXZ[2] <= Z1)&&(Org_YXZ[2] >= Z2)))
        {
            if(
Player_message[id] != 0)
            {    
                if(
one_cube[id] == i+1) {Player_message[id]++;}
                else {
Player_message[id] = 0;}
            }
            else{
Player_message[id]++;}
            
one_cube[id] = i+1;
        
            
//Dev //client_print(id, print_chat, "RGB %d %d %d", color_R, color_G, color_B)
        
            
draw_line(X2Y2Z2X2Y2Z1); draw_line(X2Y1Z2X2Y1Z1); 
            
draw_line(X1Y1Z2X1Y1Z1); draw_line(X1Y2Z2X1Y2Z1);
            
draw_line(X2Y2Z1X2Y1Z1); draw_line(X2Y1Z1X1Y1Z1);
            
draw_line(X1Y1Z1X1Y2Z1); draw_line(X1Y2Z1X2Y2Z1);
            
draw_line(X2Y2Z2X2Y1Z2); draw_line(X2Y1Z2X1Y1Z2);
            
draw_line(X1Y1Z2X1Y2Z2); draw_line(X1Y2Z2X2Y2Z2);
        
            if(
Player_message[id] == 5) {user_kill(id,1); Player_message[id] = 0;}
        }
        else
        {
            if(
one_cube[id] == i+1) {Player_message[id] = 0;}
        }
    }
    
    if(
Player_message[id] == 1) {
        
        
set_dhudmessage(190190190, -1.00.91510.01.54.00.0
        
show_dhudmessage(id"Camper ")
        
//set_hudmessage(190, 190, 190, 0.02, 0.91, 0, 1.0, 5.0) 
        //show_hudmessage(id, "Camper")
    
}
    else if(
Player_message[id] == 2) {
        
        
set_dhudmessage(1022550, -1.00.91510.01.54.00.0
        
show_dhudmessage(id"Camper ")
    }
    else if(
Player_message[id] == 3) {
        
        
set_dhudmessage(0195255, -1.00.91510.01.54.00.0
        
show_dhudmessage(id"Camper ")
     }
     else if(
Player_message[id] == 4) {
         
        
set_dhudmessage(25500, -1.00.91520.00.00.70.0//0, 150, 255,
        
show_dhudmessage(id"Camper ")
    }
     
//Dev //client_print(id, print_chat, "Org_YXZ %d", Org_YXZ[0])
    
return PLUGIN_CONTINUE;
}

public 
check_Free_Jumps(id)
{     
    
id -= TASK_Free_Jumps;
    
    new 
id_P[32]//, Players_T[32]
    
new MaxPlayers//, Count_T
    
    
get_players(id_PMaxPlayers"ah")  //  Skip bot "c"
    //get_players(Players_T, Count_T, "ahe", "TERRORIST") 
    
    
for(new 1<= MaxPlayersi++)
    {
        if(!
is_user_alive(i) || == id) continue;
   
        if(
cs_get_user_team(i) == CS_TEAM_T) {get_user_origin(iorigin_T);}
        else {
get_user_origin(iorigin_CT);}
    
        
distance get_distance(origin_CTorigin_T)
        
//Dev client_print(id, print_chat, "distance %d", distance) 
    
        
if( distance 600 || origin_CT[1] == || origin_T[1] == ) {user_distance[id] = 0; break;}
        else{
user_distance[id] = 1;}
    }
    
    if(!
is_user_alive(id) || cs_get_user_team(id) == CS_TEAM_CT) {return PLUGIN_HANDLED;}
   
    new 
USER_YXZ[3]
    static 
CUBE_YXZ[3]
    static 
XXYYZZX1X2Y1Y2Z1Z2
    
    
if(Free_Jumps[id] == 0)
    {
        
get_user_origin(idCUBE_YXZ0);
        
XX CUBE_YXZ[0], YY CUBE_YXZ[1], ZZ CUBE_YXZ[2]
        
X1 XX size_xyX2 XX size_xyY1 YY size_xyY2 YY size_xy,
        
Z1 ZZ size_zZ2 ZZ size_z //Z2 = ZZ - 36
    
}
    
    if(
Dev_draw_line == 2// off on
    
{
        
color_R 0color_G 250color_B 190time_line 45// 50 - 45
    
        
draw_line(X2Y2Z2X2Y2Z1); draw_line(X2Y1Z2X2Y1Z1); 
        
draw_line(X1Y1Z2X1Y1Z1); draw_line(X1Y2Z2X1Y2Z1);
        
draw_line(X2Y2Z1X2Y1Z1); draw_line(X2Y1Z1X1Y1Z1);
        
draw_line(X1Y1Z1X1Y2Z1); draw_line(X1Y2Z1X2Y2Z1);
        
draw_line(X2Y2Z2X2Y1Z2); draw_line(X2Y1Z2X1Y1Z2);
        
draw_line(X1Y1Z2X1Y2Z2); draw_line(X1Y2Z2X2Y2Z2);
    }
    
    
get_user_origin(idUSER_YXZ0);

    if((
USER_YXZ[0] <= X1)&&(USER_YXZ[0] >= X2)&&((USER_YXZ[1] <= Y1)&&(USER_YXZ[1] >= Y2))&&
    ((
USER_YXZ[2] <= Z1)&&(USER_YXZ[2] >= Z2))&&(user_distance[id] == 1))
    {  
        
Free_Jumps[id]++
        if(
Free_Jumps[id] == 2)
        {
            
set_hudmessage(1901901900.020.9101.05.0
            
show_hudmessage(id"Free-Jumps"
        }
        if(
Free_Jumps[id] > 3)
        {
            
set_hudmessage(255000.020.9101.05.0)
            
show_hudmessage(id"Free-Jumps")
            
CAMPER_id[id] = id
        
}
    
    }
    else { 
Free_Jumps[id] = 0CAMPER_id[id] = 0; }
    
    return 
PLUGIN_CONTINUE;
}

public 
radar()
{
    
get_players(id_allMax_Players"ah")  //  Skip bot "c"
    //get_players(Players_T, Count_T, "ahe", "TERRORIST") 
    
    
if(Max_Players 2) {return PLUGIN_HANDLED;}
 
    new 
idi
    new 
TEAM_T_list[32], Coords_T[3], count_T;
 
    for (new 
id 1id <= Max_Playersid++)
    {    
        if( (
is_user_alive(id)) && (cs_get_user_team(id) == CS_TEAM_T) && (id == CAMPER_id[id]) )
        {    
            
count_T++; TEAM_T_list[count_T]=id;       
        }
    }
    
    for (
id=1id <= Max_Playersid++)
    {
        if(!
is_user_alive(id)) {continue;}
        
        for (
i=1;<= count_T;i++)
        {   
            if(!
is_user_alive(i)) {continue;}
            
get_user_origin(TEAM_T_list[i], Coords_T)
        
            
message_begin(MSG_ONE_UNRELIABLEgmsgHostagePos, {0,0,0}, id)
            
write_byte(id)
            
write_byte(i//cs_get_user_team(id) == CS_TEAM_T      
            
write_coord(Coords_T[0])
            
write_coord(Coords_T[1])
            
write_coord(Coords_T[2])
            
message_end()
        
            
message_begin(MSG_ONE_UNRELIABLEgmsgHostageK, {0,0,0}, id)
            
write_byte(i//cs_get_user_team(id) == CS_TEAM_T   
            
message_end()  
        }
    }
    return 
PLUGIN_CONTINUE;
}

public 
check_menu_point(id)
{
    if(
check_point == 1)
    {
        
check_point 0
        get_user_origin
(idYXZ0);
        
client_print(idprint_chat,"X:[%d]  Y:[%d]  Z:[%d]"YXZ[0], YXZ[1], YXZ[2])

        
YXZ[0], YXZ[1], YXZ[2]
        
X_1 40X_2 40Y_1 40Y_2 40Z_1 24Z_2 36    
    
}
    
    if (!
task_exists(id)) {set_task(0.2,"line",id,_,_,"b");} //if (!task_exists(1112)) {set_task(0.2,"line",1112,_,_,"b");} // 8 = 0.2
    
server_menu(id)
}

public 
line(id)
{
    
Dev_draw_line 1
    
if(Dev_draw_line == 1// of on
    
{
        
time_line 8color_R 0color_G 190color_B 250;
    
        
draw_line(X_2Y_2Z_2X_2Y_2Z_1); draw_line(X_2Y_1Z_2X_2Y_1Z_1); 
        
draw_line(X_1Y_1Z_2X_1Y_1Z_1); draw_line(X_1Y_2Z_2X_1Y_2Z_1);
        
draw_line(X_2Y_2Z_1X_2Y_1Z_1); draw_line(X_2Y_1Z_1X_1Y_1Z_1);
        
draw_line(X_1Y_1Z_1X_1Y_2Z_1); draw_line(X_1Y_2Z_1X_2Y_2Z_1);
        
draw_line(X_2Y_2Z_2X_2Y_1Z_2); draw_line(X_2Y_1Z_2X_1Y_1Z_2);
        
draw_line(X_1Y_1Z_2X_1Y_2Z_2); draw_line(X_1Y_2Z_2X_2Y_2Z_2);
    }
    
    
get_user_origin(id,YXZ,0);
    
    if((
YXZ[0] <= X_1)&&(YXZ[0] >= X_2)&&((YXZ[1] <= Y_1)&&(YXZ[1] >= Y_2))&&((YXZ[2] <= Z_1)&&(YXZ[2] >= Z_2)))
    {
        
client_print(idprint_chat,"+")
    }
}
//==================================================================================================
public server_menu(id)
{
    new 
i_Menu menu_create("\r[\wНазвание меню\r]""menu_handler")
    
    if(
Plus_minus == 1)
    {
        
menu_additem(i_Menu"\d[\y+X\d]""1"0// pravo
        
menu_additem(i_Menu"\d[\y+Y\d]""2"0// pered
        
menu_additem(i_Menu"\d[\y+Z\d]""3"0// verh    
        
menu_additem(i_Menu"\d[\y+xx\d]""4"0)
        
menu_additem(i_Menu"\d[\y+yy\d]""5"0)
        
menu_additem(i_Menu"\d[\y+zz\d]""6"0)
        
menu_additem(i_Menu"\d[\y+\d]""7"0)
        
menu_additem(i_Menu"\d[\ysave\d]""8"0)    
    }
    if(
Plus_minus == 0)
    {
        
menu_additem(i_Menu"\d[\y-X\d]""1"0// levo
        
menu_additem(i_Menu"\d[\y-Y\d]""2"0// nazad
        
menu_additem(i_Menu"\d[\y-Z\d]""3"0// niz
        
menu_additem(i_Menu"\d[\y-xx\d]""4"0)
        
menu_additem(i_Menu"\d[\y-yy\d]""5"0)
        
menu_additem(i_Menu"\d[\y-zz\d]""6"0)
        
menu_additem(i_Menu"\d[\y-\d]""7"0)
        
menu_additem(i_Menu"\d[\rdel\d]""8"0)    
    }
    
menu_additem(i_Menugs_PlusSize[gi_nextSize], "9"0//gi_next
    
menu_additem(i_Menu"\wВыход""0"0)
    
    
menu_addblank(i_Menu0)
    
menu_setprop(i_MenuMPROP_PERPAGE0)
    
menu_display(idi_Menu0)
}
public 
menu_handler(idmenuitem)
{
    if (
item == MENU_EXIT) {menu_destroy(menu); return PLUGIN_HANDLED;}
    
    new 
s_Data[6], s_Name[64], i_Accessi_Callback
    menu_item_getinfo
(menuitemi_Accesss_Datacharsmax(s_Data), s_Namecharsmax(s_Name), i_Callback)
    new 
i_Key str_to_num(s_Data)
   
    switch(
i_Key)
    {
        case 
1:
        {
            if(
Plus_minus == 1) {X_1 += gi_CubeSizeX_2 -= gi_CubeSize;}
            if(
Plus_minus == 0) {X_1 -= gi_CubeSizeX_2 += gi_CubeSize;}    
            
server_menu(id
        }
        case 
2:
        {
            if(
Plus_minus == 1) {Y_1 += gi_CubeSizeY_2 -= gi_CubeSize;}
            if(
Plus_minus == 0) {Y_1 -= gi_CubeSizeY_2 += gi_CubeSize;}
            
server_menu(id)
        }
        case 
3:
        {
            if(
Plus_minus == 1) {Z_1 += gi_CubeSizeZ_2 -= gi_CubeSize;}
            if(
Plus_minus == 0) {Z_1 -= gi_CubeSizeZ_2 += gi_CubeSize;}
            
server_menu(id)
        }   
        case 
4:
        {
            if(
Plus_minus == 1) {X_1 += gi_CubeSizeX_2 += gi_CubeSize;}
            if(
Plus_minus == 0) {X_1 -= gi_CubeSizeX_2 -= gi_CubeSize;}
            
server_menu(id)
        }
        case 
5:
        {
            if(
Plus_minus == 1) {Y_1 += gi_CubeSizeY_2 += gi_CubeSize;}
            if(
Plus_minus == 0) {Y_1 -= gi_CubeSizeY_2 -= gi_CubeSize;}
            
server_menu(id)
        }
        case 
6:
        {
            if(
Plus_minus == 1) { Z_1 += gi_CubeSizeZ_2 += gi_CubeSize;}
            if(
Plus_minus == 0) { Z_1 -= gi_CubeSizeZ_2 -= gi_CubeSize;}
            
server_menu(id)  
        }
        case 
7:
        {
            if(
Plus_minus == 1) {Plus_minus 0;}
            else {
Plus_minus 1;}
            
server_menu(id)   
        }
        case 
8:
        {
           if(
Plus_minus == 1) {save_point();} //save
           
else {del_point(); 000X_1 0X_2 0Y_1 0Y_2 0Z_1 0Z_2 0;}
           
check_point 1
           remove_task
(id//1112
        
}
        case 
9:
        {
            if(
gi_nextSize == 0) {gi_nextSize 1gi_CubeSize 5;} 
            else if(
gi_nextSize == 1) {gi_nextSize 2gi_CubeSize 20;}   
            else if(
gi_nextSize == 2) {gi_nextSize 3gi_CubeSize 50;}  
            else if(
gi_nextSize == 3) {gi_nextSize 0gi_CubeSize 1;}
            
server_menu(id)
            
/*if(gi_next != 3) {gi_next++;}
           else { gi_next = 0;}*/ 
        
}
        case 
0: {remove_task(id);} //1112
    
}
    
menu_destroy(menu)
    return 
PLUGIN_HANDLED
}

public 
check_all_point()
{
    if(!
file_exists(dir)) {return PLUGIN_HANDLED;}
    
    new 
file fopen(dir,"r"// "rt"
    
new s_buffer[50]; //[1024]
    
    
new org_x_1[17], org_y_1[17], org_z_1[17], org_x_2[17], org_y_2[17], org_z_2[17],
    
org_x[17], org_y[17], org_z[17];
    
i_POINT 0
  
    
while(!feof(file))
    {
        
fgets(files_buffercharsmax(s_buffer)); // считывает одну строку из файла
        
parse(s_bufferorg_xcharsmax(org_x), org_ycharsmax(org_y), org_zcharsmax(org_z),
        
org_x_1charsmax(org_x_1), org_y_1charsmax(org_y_1), org_z_1charsmax(org_z_1),
        
org_x_2charsmax(org_x_2), org_y_2charsmax(org_y_2), org_z_2charsmax(org_z_2));
    
        
i_POINT++
        
Origin_X[i_POINT] = str_to_num(org_x);
        
Origin_Y[i_POINT] = str_to_num(org_y);
        
Origin_Z[i_POINT] = str_to_num(org_z);
    
        
Origin_X_1[i_POINT] = str_to_num(org_x_1);
        
Origin_Y_1[i_POINT] = str_to_num(org_y_1);
        
Origin_Z_1[i_POINT] = str_to_num(org_z_1);
    
        
Origin_X_2[i_POINT] = str_to_num(org_x_2);
        
Origin_Y_2[i_POINT] = str_to_num(org_y_2);
        
Origin_Z_2[i_POINT] = str_to_num(org_z_2);
    
        
//fclose(file)
        //Dev //client_print(0, print_chat,"X:[%d]  Y:[%d]  Z:[%d]  X1:[%d]  Y1:[%d]  Z1:[%d]  X2:[%d]  Y2:[%d]  Z2:[%d]",
        //X, Y, Z, X_1, Y_1, Z_1, X_2, Y_2, Z_2)
    

    return 
PLUGIN_CONTINUE;
}

public 
draw_line(X_1Y_1Z_1X_2Y_2Z_2)
{
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY);
    
write_byte(TE_BEAMPOINTS);

    
write_coord(X_1);                          // Стартовая точка x
    
write_coord(Y_1);                          // Стартовая точка y
    
write_coord(Z_1);                          // Стартовая точка z

    
write_coord(X_2);                          // Конечная точка x2    
    
write_coord(Y_2);                          // Конечная точка y2
    
write_coord(Z_2);                          // Конечная точка z2
    
write_short(g_iSprite);                   // Индекс спрайта       
    
write_byte(1);                             // Стартовый кадр         
    
write_byte(1);                             // Скорость анимации      
    
write_byte(time_line);                    // Время существования  1000
    
write_byte(get_cvar_num("Line"));       // Толщина луча 
    
write_byte(get_cvar_num("Amplitude")); // Искажение

    
write_byte(color_R);                     // Цвет красный
    
write_byte(color_G);                     // Цвет зеленый
    
write_byte(color_B);                     // Цвет синий            
    
write_byte(light);                       // Яркость         
    
write_byte(0);                            // ...    
    
message_end();
}

public 
save_point()
{
    new 
i_file fopen(dir,"at")
    if(!
i_file) {return PLUGIN_HANDLED;} //Если ошибка открытии файла
    
    
new buffer[50]
    
formatex(buffer49"%d%s%d%s%d%s%d%s%d%s%d%s%d%s%d%s%d"X" "Y" "Z" "X_1" "Y_1,
    
" "Z_1" "X_2" "Y_2" "Z_2);
    
    
write_file(dirbuffer, -1)
    
fclose(i_file)
    
    
client_print(0print_chat,"X:{%d}  Y:{%d}  Z:{%d}  X1:{%d}  Y1:{%d}  Z1:{%d}  X2:{%d}  Y2:{%d}  Z2:{%d}",
    
XYZX_1Y_1Z_1X_2Y_2Z_2)
    return 
PLUGIN_CONTINUE;
}

public 
del_point() { write_file(dir"", -1); Delete_Null_String();}
public 
Delete_Null_String()
{
    
g_a_data=ArrayCreate(50//1024
    
new i_file fopen(dir,"rt")
    new 
s_buffer[50//1024

    
if(!i_file) {return PLUGIN_HANDLED;} // Если произошла ошибка открытии файла 

    
while(!feof(i_file)) // Цикл выполнятся пока файл не достигнет конца "конца файла не путать с хреном"
    

        
fgets(i_file,s_buffer,49//1023 // Получаем строку из файла в s_buffer
        
trim(s_buffer// Очищаем строку от каретки
        
ArrayPushString(g_a_data,s_buffer// Добавляем строку в массив
    
}
    
fclose(i_file)    // Закрываем файл по индексу
    
delete_file(dir// Удаляем файл
    //----------------------------------------------------------------------------------------------
    
fopen(dir,"rt")
    new 
i_size=ArraySize(g_a_data)

    if(!
i_size) {return PLUGIN_HANDLED;} // Если размер нулевой - прекращаем работу 
    
    
new s_2buffer[50], index //1024
    
for(new ai_sizea++) 
    {
        
ArrayGetString(g_a_dataas_2buffer50//1023
        
if(strlen(s_2buffer) != 0) {write_file(dirs_2bufferindex); index++;} // самое главное
        //!equal(s2_buffer, player_name)    
    
}
    
fclose(i_file)
    
ArrayClear(g_a_data)
    return 
PLUGIN_CONTINUE;
}

 


таймер
Код: Выделить всё
public event(id)
{
    
    if
(is_user_alive(id))
    {
    check_Free_Jumps(id)//if(!task_exists(13332+id)) {set_task(0.5,"check_Free_Jumps", 13332+id);} //  
    check_Camper(id)//if(!task_exists(14442+id)) {set_task(1.0,"check_Camper", 14442+id);} //          
    }
    //else {remove_task(13332+id); remove_task(14442+id);} 
    
    if
(!task_exists(id)) {set_task(5.0,"event",id,_,_,"b");}  //if(!task_exists(10002+id)) {set_task(5.0,"event",10002+id,_,_,"b");} //
}


return
Код: Выделить всё
 //if( (!is_user_alive(id)) && (cs_get_user_team(id) != CS_TEAM_T) ) {return PLUGIN_HANDLED;}
    if( (is_user_alive(id)) && (cs_get_user_team(id) == CS_TEAM_T) )


Добавлено спустя 2 минуты 19 секунд:
приветствую все замечания по коду
Последний раз редактировалось RSO_ 12 апр 2021, 01:40, всего редактировалось 1 раз.
слава великой сонтаранской империи !
Аватара пользователя
RSO_
 
Сообщения: 280
Зарегистрирован: 20 окт 2019, 21:40
Откуда: от верблюда
Благодарил (а): 45 раз.
Поблагодарили: 20 раз.
Опыт программирования: Меньше недели
Языки программирования: . . . 100 ISQ

Re: Anti-Camper-Hns исправления ошибок

Сообщение RSO_ » 09 апр 2021, 15:53

почему нельзя сделать так

public event(id)
{
if(is_user_alive(id))
{
if(!task_exists(13332+id)) {set_task(0.5,"check_Free_Jumps", 13332+id);}
if(!task_exists(14442+id)) {set_task(1.0,"check_Camper", 14442+id);}
}
else {remove_task(13332+id); remove_task(14442+id);}

if(!task_exists(10002+id)) {set_task(5.0,"event",10002+id,_,_,"b");}
}
слава великой сонтаранской империи !
Аватара пользователя
RSO_
 
Сообщения: 280
Зарегистрирован: 20 окт 2019, 21:40
Откуда: от верблюда
Благодарил (а): 45 раз.
Поблагодарили: 20 раз.
Опыт программирования: Меньше недели
Языки программирования: . . . 100 ISQ

Re: Anti-Camper-Hns исправления ошибок

Сообщение [N][E][M][E][C] » 09 апр 2021, 15:59

А зачем закрывать таск который выпололняет один раз?
Event. Это отлов старта раунда у тебя?
Если да. То достаточно
Код: Выделить всё
if(!task_exists(13332+id)) 
     set_task
(0.5,"check_Free_Jumps", 13332+id);
Последний раз редактировалось [N][E][M][E][C] 09 апр 2021, 16:11, всего редактировалось 1 раз.
Аватара пользователя
[N][E][M][E][C]
 
Сообщения: 641
Зарегистрирован: 14 фев 2021, 10:48
Благодарил (а): 50 раз.
Поблагодарили: 89 раз.
Опыт программирования: Около года
Языки программирования: Нуждаюсь в помощи

Re: Anti-Camper-Hns исправления ошибок

Сообщение RSO_ » 09 апр 2021, 16:03

игрока спавн да
просто не понятно почему не работает
слава великой сонтаранской империи !
Аватара пользователя
RSO_
 
Сообщения: 280
Зарегистрирован: 20 окт 2019, 21:40
Откуда: от верблюда
Благодарил (а): 45 раз.
Поблагодарили: 20 раз.
Опыт программирования: Меньше недели
Языки программирования: . . . 100 ISQ

Re: Anti-Camper-Hns исправления ошибок

Сообщение [N][E][M][E][C] » 09 апр 2021, 16:12

Покажи весь код, я догалываюсь почему, да и зачем таск в спавне, сделай булевую переменнную , фальсе сразу потом присвой труе ей и условие
Аватара пользователя
[N][E][M][E][C]
 
Сообщения: 641
Зарегистрирован: 14 фев 2021, 10:48
Благодарил (а): 50 раз.
Поблагодарили: 89 раз.
Опыт программирования: Около года
Языки программирования: Нуждаюсь в помощи

Re: Anti-Camper-Hns исправления ошибок

Сообщение RSO_ » 09 апр 2021, 16:17

так в самом верху исходник весь
и я хочу запускать функцию с задержкой

09/2021 - 15:23:54: [AMXX] Run time error 4 (plugin "Anti_Camper.amxx") - debug not enabled!
L 04/09/2021 - 15:23:54: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
L 04/09/2021 - 15:23:54: Invalid player id 14443
L 04/09/2021 - 15:23:54: [AMXX] Run time error 10 (plugin "Anti_Camper.amxx") (native "get_user_origin") - debug not enabled!
L 04/09/2021 - 15:23:54: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).

почему оно обзывается Invalid player id 14443
оно само инвалид
слава великой сонтаранской империи !
Аватара пользователя
RSO_
 
Сообщения: 280
Зарегистрирован: 20 окт 2019, 21:40
Откуда: от верблюда
Благодарил (а): 45 раз.
Поблагодарили: 20 раз.
Опыт программирования: Меньше недели
Языки программирования: . . . 100 ISQ

Re: Anti-Camper-Hns исправления ошибок

Сообщение [N][E][M][E][C] » 09 апр 2021, 18:21

Потому что, ты игроку в самом таске, присваиваешь id = id+14442 , получается id первого игрока на сервере = 1, такого игрока с таким айди 14443 нет!!!
Код: Выделить всё
set_task(1.0,"check_Camper", 14442+id)
//при выполнений таска ты id таска делаешь id игрока + 14442 = 14443
public check_Camper(id)//тут id у тебя, не айди игрока, а самой задачи
//тут для читабельности, пишешь например taskid
public check_Camper(taskid)//любое название, не обязательно taskid
//Потом в этом паблике создай переменную, что бы записать в нее айди игрока
new id;
id = taskid -14442

Получается ты же не знаешь какой айди у тебя, если на сервере например 32 игрока .
Поэтому в таске задаешь параметр id + *любое число*, а потом в самом таске отнимаешь от суммы, то же число, в твоём случае это 14442))) Надеюсь обьяснил понятно.
И еще, что бы не ставить черту в параметре
Код: Выделить всё
_,

Код: Выделить всё
set_task(1.0, "функция", id + 14442, .flags = "b")

Правда еще не разобрался, на сколько это лучше))
И на счет этого, есть более рациональные способы
Код: Выделить всё
public event(id){
  if(is_user_alive(id)){
    if(!task_exists(13332+id)) 
      set_task
(0.5,"check_Free_Jumps", 13332+id);
    if(!task_exists(14442+id)) 
      set_task
(1.0,"check_Camper", 14442+id);
  }
  else{
    remove_task(13332+id); 
    remove_task
(14442+id);
  }

Создай болевой массив под кадого игрока
Код: Выделить всё
new bool:test[32]; //при обьявлении массива, каждому игроку, присвоится значение false  

Потом, создай функцию, где будешь выполнять код
Код: Выделить всё
test_function(){
  //code

И в спавне игрока
Код: Выделить всё
public event(id){
  if(!is_user_alive(id) || test[id]) 
    return
;

  test_function();
  test[id] = true;

Ну и не забудь сменить значение при выходе игрока
Код: Выделить всё
public client_disconnect(id
  
test[id] = false
Аватара пользователя
[N][E][M][E][C]
 
Сообщения: 641
Зарегистрирован: 14 фев 2021, 10:48
Благодарил (а): 50 раз.
Поблагодарили: 89 раз.
Опыт программирования: Около года
Языки программирования: Нуждаюсь в помощи

Re: Anti-Camper-Hns исправления ошибок

Сообщение RSO_ » 10 апр 2021, 22:47

я разобрался ошибка из за не существующего id

const TASK_Camper = 14442; - создал константу

if(is_user_alive(id))
{
set_task(1.0,"check_Camper", id+TASK_Camper);
}

public check_Camper(id)
{
id -= TASK_Camper; - отнял от id
}

Добавлено спустя 2 минуты 38 секунд:
а почему return PLUGIN_HANDLED не блочит
слава великой сонтаранской империи !
Аватара пользователя
RSO_
 
Сообщения: 280
Зарегистрирован: 20 окт 2019, 21:40
Откуда: от верблюда
Благодарил (а): 45 раз.
Поблагодарили: 20 раз.
Опыт программирования: Меньше недели
Языки программирования: . . . 100 ISQ

Re: Anti-Camper-Hns исправления ошибок

Сообщение [N][E][M][E][C] » 11 апр 2021, 08:59

Ты покажи что не блочит
Аватара пользователя
[N][E][M][E][C]
 
Сообщения: 641
Зарегистрирован: 14 фев 2021, 10:48
Благодарил (а): 50 раз.
Поблагодарили: 89 раз.
Опыт программирования: Около года
Языки программирования: Нуждаюсь в помощи

Re: Anti-Camper-Hns исправления ошибок

Сообщение RSO_ » 11 апр 2021, 12:26

Код: Выделить всё
public check_Free_Jumps(id)
{
     
    
//if(!is_user_alive(id)) {return;}

    new id_P[32]//, Players_T[32]
    new MaxPlayers//, Count_T
    
    get_players
(id_P, MaxPlayers, "ah")  //  Skip bot "c"
    //get_players(Players_T, Count_T, "ahe", "TERRORIST") 
    
    for
(new i = 1; i <= MaxPlayers; i++)
    {
        if(!is_user_alive(i) || i == id) continue;
   
        if
(cs_get_user_team(i) == CS_TEAM_T) {get_user_origin(i, origin_T);}
        else {get_user_origin(i, origin_CT);}
    
        distance 
= get_distance(origin_CT, origin_T)
        //Dev client_print(id, print_chat, "distance %d", distance) 
    
        if
( distance < 600 || origin_CT[1] == 0 || origin_T[1] == 0 ) {user_distance[id] = 0; break;}
        else{user_distance[id] = 1;}
    }
 
      if
( (!is_user_alive(id)) && (cs_get_user_team(id) != CS_TEAM_T) ) {return PLUGIN_HANDLED;}

        new USER_YXZ[3]
        static CUBE_YXZ[3]
        static XX, YY, ZZ, X1, X2, Y1, Y2, Z1, Z2
    
        if
(Free_Jumps[id] == 0)
        {
            get_user_origin(id, CUBE_YXZ, 0);
            XX = CUBE_YXZ[0], YY = CUBE_YXZ[1], ZZ = CUBE_YXZ[2]
            X1 = XX + size_xy, X2 = XX - size_xy, Y1 = YY + size_xy, Y2 = YY - size_xy,
            Z1 = ZZ + size_z, Z2 = ZZ - size_z //Z2 = ZZ - 36
        }
    
        if
(Dev_draw_line == 2) // off on
        {
            color_R = 0; color_G = 250; color_B = 190; time_line = 45; // 50 - 45
    
            draw_line
(X2, Y2, Z2, X2, Y2, Z1); draw_line(X2, Y1, Z2, X2, Y1, Z1); 
            draw_line
(X1, Y1, Z2, X1, Y1, Z1); draw_line(X1, Y2, Z2, X1, Y2, Z1);
            draw_line(X2, Y2, Z1, X2, Y1, Z1); draw_line(X2, Y1, Z1, X1, Y1, Z1);
            draw_line(X1, Y1, Z1, X1, Y2, Z1); draw_line(X1, Y2, Z1, X2, Y2, Z1);
            draw_line(X2, Y2, Z2, X2, Y1, Z2); draw_line(X2, Y1, Z2, X1, Y1, Z2);
            draw_line(X1, Y1, Z2, X1, Y2, Z2); draw_line(X1, Y2, Z2, X2, Y2, Z2);
        }
    
        get_user_origin
(id, USER_YXZ, 0);

        if((USER_YXZ[0] <= X1)&&(USER_YXZ[0] >= X2)&&((USER_YXZ[1] <= Y1)&&(USER_YXZ[1] >= Y2))&&
        ((USER_YXZ[2] <= Z1)&&(USER_YXZ[2] >= Z2))&&(user_distance[id] == 1))
        {  
            Free_Jumps
[id]++
            if(Free_Jumps[id] == 2)
            {
                set_hudmessage(190, 190, 190, 0.02, 0.91, 0, 1.0, 5.0) 
                show_hudmessage
(id, "Free-Jumps") 
            
}
            if(Free_Jumps[id] > 3)
            {
                set_hudmessage(255, 0, 0, 0.02, 0.91, 0, 1.0, 5.0)
                show_hudmessage(id, "Free-Jumps")
                CAMPER_id[id] = id
            
}
        }
        else { Free_Jumps[id] = 0; CAMPER_id[id] = 0; }
    
    return PLUGIN_CONTINUE
;


if( (!is_user_alive(id)) && (cs_get_user_team(id) != CS_TEAM_T) ) {return PLUGIN_HANDLED;}
// вот это не блочит в чат пишет Free-Jumps а не должно
слава великой сонтаранской империи !
Аватара пользователя
RSO_
 
Сообщения: 280
Зарегистрирован: 20 окт 2019, 21:40
Откуда: от верблюда
Благодарил (а): 45 раз.
Поблагодарили: 20 раз.
Опыт программирования: Меньше недели
Языки программирования: . . . 100 ISQ

След.

Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 23