http://amxx.pl/topic...a-broni-obcych/
Postępowałem zgodnie z instrukcjami aż natrafiłem na pewien problem. Otóż:
Okej, juz prawie gotowe, wystarczy zrobić np. klase, ktora bedzie mogla podniesc kazdą broń, robimy to poprzez dodanie do cod_class_enabled(id) tego
cod_set_user_weaponsblocking(id, 0);
a także w cod_class_disabled dodajemy to
cod_set_user_weaponsblocking(id, 1);
Gdy dodałem to do sma łącznika wystąpił błąd w komplikacji.
Error: Symbol already defined: "cod_set_user_weaponsblocking" on line 63 Error: Symbol already defined: "cod_set_user_weaponsblocking" on line 67
Podaję sma łącznika:
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <codmod> #include <engine> #include <fakemeta> #include <fun> #include <amxmisc> #include <cstrike> #define SZYBKOSC_GRACZA(%1) (250.0+cod_get_user_trim(%1, 1, 1, 1)*1.3) #define TASK_ZMIEN_UBRANIE 666 #define CZAS 5.0 new const nazwa[] = "Lacznik"; new const opis[] = "Widzi wrogow na radarze (na nozu), moze ukrasc ubranie wroga"; new const bronie = 1<<CSW_GALIL; new const zdrowie = 60; new const kondycja = 30; new const inteligencja = 0; new const wytrzymalosc = 40; new const obrazenia = 0; new const invi = 0; new const regen = 0; new g_msgHostageAdd, g_msgHostageDel; new pl_origins[33][3]; new pl_skins[33][32]; new bool:pl_carmouflaged[33] = {false,...}; new bool:pl_taken[33] = {false,...}; new bool:ma_klase[33]; new last_id; new model[32]; new tryb[33]; public plugin_init() { register_plugin(nazwa, "1.0", "QTM_Peyote"); g_msgHostageAdd = get_user_msgid("HostagePos"); g_msgHostageDel = get_user_msgid("HostageK"); cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc, obrazenia, invi, regen); set_task (1.0,"radar_scan",_,_,_,"b"); register_event("ResetHUD", "new_round", "b"); register_event("DeathMsg","player_die","a"); register_forward(FM_PlayerPreThink, "PlayerPreThink") register_forward(FM_UpdateClientData, "UpdateClientData_Post", 1) register_forward(FM_CmdStart,"fwd_CmdStart") } public plugin_precache() { precache_sound("items/tr_kevlar.wav") } public cod_class_enabled(id) ma_klase[id] = true; cod_set_user_weaponsblocking(id, 0); public cod_class_disabled(id) ma_klase[id] = false; cod_set_user_weaponsblocking(id, 1); public cod_class_skill_used(id) { if(!is_user_alive(id)) return PLUGIN_HANDLED; if(pl_carmouflaged[id]) { client_print(id, print_center, "Juz sie przebrales w tej rundzie!") return PLUGIN_HANDLED; } SprawdzUbranie(id) client_print(id, print_chat, "Wink Wink") return PLUGIN_CONTINUE; } public SprawdzUbranie(id) { if(!is_user_connected(id)) { return PLUGIN_CONTINUE; } if(!is_user_alive(id)) { return PLUGIN_CONTINUE; } new cur_origin[3],players[32],pl_num=0,dist,last_dist=99999; get_user_origin(id,cur_origin,0); get_players(players,pl_num,"b"); if (pl_num>0) { for (new i=0;i<pl_num;i++) { if(players[i]!=id) { dist = get_distance(cur_origin,pl_origins[players[i]]); if (dist<last_dist) { last_id = players[i]; last_dist = dist; } } } if (last_dist<100) { if(pl_taken[last_id]) { client_print(id,print_center,"To ubranie zostalo juz skradzione!"); return PLUGIN_CONTINUE; } if(!task_exists(id+TASK_ZMIEN_UBRANIE)) { client_print(id,print_center,"Przebierasz sie!"); engfunc(EngFunc_SetClientMaxspeed, id, 0.1); set_bartime(id, floatround(CZAS, floatround_round)); tryb[id] = 1; set_task(CZAS, "ZmienUbranie", id+TASK_ZMIEN_UBRANIE); } return PLUGIN_CONTINUE; } else { client_print(id,print_center,"Nie ma w poblizu zadnych zwlok!"); return PLUGIN_CONTINUE; } } return PLUGIN_CONTINUE } public ZmienUbranie(id) { id -= TASK_ZMIEN_UBRANIE; if(!is_user_connected(id)) { remove_task(id+TASK_ZMIEN_UBRANIE); return PLUGIN_CONTINUE; } if(!is_user_alive(id)) { remove_task(id+TASK_ZMIEN_UBRANIE); return PLUGIN_CONTINUE; } engfunc(EngFunc_SetClientMaxspeed, id, SZYBKOSC_GRACZA(id)); get_user_info(last_id,"model",model,31); get_user_info(id,"model",pl_skins[id],31); cs_set_user_model(id, model); pl_carmouflaged[id] = true; pl_taken[last_id] = true; tryb[id] = 0; emit_sound(id,CHAN_VOICE,"items/tr_kevlar.wav", 1.0, ATTN_NORM, 0, PITCH_NORM); client_print(id,print_center,"Wygladasz jak %s",model); return PLUGIN_CONTINUE; } public PlayerPreThink(id) { if(!is_user_connected(id)) { return FMRES_IGNORED; } if(!is_user_alive(id)) { return FMRES_IGNORED; } if(!ma_klase[id]) { return FMRES_IGNORED; } if(tryb[id] == 1) { set_pev(id, pev_button, pev(id,pev_button) & ~IN_ATTACK); return FMRES_HANDLED; } return FMRES_HANDLED; } public UpdateClientData_Post(id, sendweapons, cd_handle) { if(!is_user_connected(id)) { return FMRES_IGNORED; } if(!is_user_alive(id)) { return FMRES_IGNORED; } if(!ma_klase[id]) { return FMRES_IGNORED; } if(tryb[id] == 1) { set_cd(cd_handle, CD_flNextAttack, halflife_time() + 0.001 ); } return FMRES_HANDLED; } public fwd_CmdStart(id, uc_handle, seed) { if(!is_user_connected(id)) { return FMRES_IGNORED; } if(!is_user_alive(id)) { return FMRES_IGNORED; } if(!ma_klase[id]) { return FMRES_IGNORED; } new buttons = get_uc(uc_handle, UC_Buttons) new oldbuttons = get_user_oldbutton(id); if((buttons & IN_ATTACK) || !(oldbuttons & IN_ATTACK)) { return FMRES_IGNORED; } if(tryb[id] == 1) { set_uc(uc_handle, UC_Buttons, buttons & ~IN_ATTACK); return FMRES_HANDLED; } return FMRES_IGNORED; } public player_die() { new victim = read_data(2); get_user_origin(victim,pl_origins[victim],0); if (pl_carmouflaged[victim]) { cs_set_user_model(victim, pl_skins[victim]); } return PLUGIN_CONTINUE; } public new_round(id, Ent) { if(!is_user_alive(id)) return if (pl_carmouflaged[id]) { cs_reset_user_model(id); pl_carmouflaged[id] = false; } else { get_user_info(id,"model",pl_skins[id],31); } pl_taken[id] = false; } stock set_bartime(id, czas, startprogress=0) { message_begin((id)?MSG_ONE:MSG_ALL, get_user_msgid("BarTime2"), _, id); write_short(czas); write_short(startprogress); message_end(); } public radar_scan(id) { new PlayerCoords[3]; for (new id=1; id<=32; id++) { if((!is_user_alive(id))||(!ma_klase[id])||(get_user_weapon(id) != CSW_KNIFE)) continue; for (new i=1;i<=32;i++) { if(!is_user_alive(i) || get_user_team(i) == get_user_team(id)) continue; get_user_origin(i, PlayerCoords) message_begin(MSG_ONE_UNRELIABLE, g_msgHostageAdd, {0,0,0}, id) write_byte(id) write_byte(i) write_coord(PlayerCoords[0]) write_coord(PlayerCoords[1]) write_coord(PlayerCoords[2]) message_end() message_begin(MSG_ONE_UNRELIABLE, g_msgHostageDel, {0,0,0}, id) write_byte(i) message_end() } } }