Witam
Przerobiłem super vipa którego kiedyś K!113r napisał, chciałem dograć kamerę dla CT do wyboru ale wyskakuje jeden error i nie wiem jak sobie z nim poradzić
Kamera wzięta stąd:
http://amxx.pl/topic...rki-by-j-river/
Nazwa: Nicolas Eye - Mozesz podlozyc kamere
Oto .sma sVIPa
/* Changelog: 19.02.2012r. 1.0 beta 13.03.2012r. 1.1 beta - dodanie możliwości zapisu wybranej opcji (nvault) i upiększenie menu */ #include <amxmodx> #include <amxmisc> #include <hamsandwich> #include <cstrike> #include <fun> #include <fakemeta> #include <engine> #include <colorchat> #include <nvault> #include <fakemeta_util> #define PLUGIN "Vip JailBreak" #define VERSION "1.1" #define AUTHOR "KreC!K" #define ZADANIE_WSKRZES 6240 #define VIPS #define GRAWITACJA 0.5 #define FLAGA ADMIN_LEVEL_F //#define ZAPIS #define MAX 32 //Max number of valid player entities #pragma tabsize 0 #if defined VIPS new maxplayers #endif #if defined ZAPIS new vault #endif new wybor_gracza[33] new freeze[33] new zamrozenie[33] new morfina[33] new niewidzialnosc[33] new odbicie[33]; new wartosc_odbicia[33]; new radar[33]; new player_b_eye[33] = 0 //Ability to place camera new sprite_line = 0 new g_msg_screenfade; new g_msgHostageAdd, g_msgHostageDel; enum { Brak = 0, Grawitacja, Morfina, Zamrozenie, Duszek, Gumowy, Radar, Kamera } public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /svip_menu", "menu_cmd") #if defined VIPS maxplayers = get_maxplayers() register_clcmd("say /vips", "print_vips", 0); register_clcmd("say /vipy", "print_vips", 0); register_clcmd("say /vipinfo", "MOTD") #endif RegisterHam(Ham_Spawn, "player", "Odrodzenie", 1) RegisterHam(Ham_TakeDamage, "player", "TakeDamage", 1) RegisterHam(Ham_Killed, "player", "Killed", 1); register_event("Damage", "Damage", "b", "2!=0"); register_think("PlayerCamera","Think_PlayerCamera"); g_msg_screenfade = get_user_msgid("ScreenFade"); g_msgHostageAdd = get_user_msgid("HostagePos"); g_msgHostageDel = get_user_msgid("HostageK"); set_task (2.0,"radar_scan",_,_,_,"b"); #if defined ZAPIS vault=nvault_open("Menu") if (vault == INVALID_HANDLE) set_fail_state( "Nie moge otworzyc pliku :/"); #endif } #if defined ZAPIS public client_connect(id) { load_wybor(id) } #endif public menu_cmd(id) { if(get_user_flags(id) & ADMIN_LEVEL_F) { if(cs_get_user_team(id) == CS_TEAM_T) { new tytul[128], name[32], wybor[128] if(wybor_gracza[id] == Brak) format(wybor, 127, "\ybrak.") if(wybor_gracza[id] == Grawitacja) format(wybor, 127, "\ygrawitacja.") if(wybor_gracza[id] == Duszek) format(wybor, 127, "\yniewidzialnosc.") if(wybor_gracza[id] == Gumowy) format(wybor, 127, "\ygumowy pancerz.") get_user_name(id, name, 31) format(tytul, 127, "\y%s, \rwitaj w menu do zarzadzania Vip'em\d by KreC!K^n\wTwoja aktualnie uzyta opcja to: %s", name, wybor) new menu = menu_create(tytul, "menu_tt") menu_additem(menu, "Grawitacja") // item = 0 menu_additem(menu, "Widzialnosc [10/255] gdy sie nie ruszasz") // item = 1 menu_additem(menu, "Gumowy Pancerz [1/2] na odbicie pocisku") // item = 2 #if defined ZAPIS menu_additem(menu, "\rZapisz swoja wybrana opcje\d(bedzie ona wczytana przy kazdym polaczeniu z serwerem [mozna zmienic])") #endif menu_display(id, menu, 0) } else if(cs_get_user_team(id) == CS_TEAM_CT) { new tytul[128], name[32], wybor[128] if(wybor_gracza[id] == Brak) format(wybor, 127, "\ybrak.") if(wybor_gracza[id] == Grawitacja) format(wybor, 127, "\ygrawitacja.") if(wybor_gracza[id] == Morfina) format(wybor, 127, "\ymorfina.") if(wybor_gracza[id] == Zamrozenie) format(wybor, 127, "\yzamrozenie.") if(wybor_gracza[id] == Radar) format(wybor, 127, "\yradar.") if(wybor_gracza[id] == Kamera) format(wybor, 127, "\ykamera.") get_user_name(id, name, 31) format(tytul, 127, "\y%s, \rwitaj w menu do zarzadzania Vip'em\d by KreC!K^n\wTwoja aktualnie uzyta opcja to: %s", name, wybor) new menu = menu_create(tytul, "menu_ct") menu_additem(menu, "Grawitacja") // item = 0 menu_additem(menu, "Morfina [1/2]") // item = 1 menu_additem(menu, "Zamrozenie [1/2]") // item = 2 menu_additem(menu, "Radar [na nozu]") // item = 3 menu_additem(menu, "Kamera [E]") // item = 4 #if defined ZAPIS menu_additem(menu, "\rZapisz swoja wybrana opcje\d(bedzie ona wczytana przy kazdym polaczeniu z serwerem [mozna zmienic])") #endif menu_display(id, menu, 0) } } else client_print(id, print_chat, "[Vip] Nie masz dostepu do tej uslugi.") return 0 } public menu_tt(id, menu, item) { switch(item) { case 0:{ wybor_gracza[id] = Grawitacja ColorChat(id, BLUE, "^x04[^x03Vip^x04] ^x01Wybrales ^x04grawitacje^x01. Opcja ta bedzie dostepna w ^x03nastepnej rundzie.") } case 1:{ wybor_gracza[id] = Duszek ColorChat(id, BLUE, "^x04[^x03Vip^x04] ^x01Wybrales ^x04 duszka, nie ruszaj sie by utrzymac niska widzialnosc!^x01. Opcja ta bedzie dostepna w ^x03nastepnej rundzie.") } case 2:{ wybor_gracza[id] = Gumowy ColorChat(id, BLUE, "^x04[^x03Vip^x04] ^x01Wybrales ^x04gumowy pancerz 1/5 na odbicie pocisku^x01. Opcja ta bedzie dostepna w ^x03nastepnej rundzie.") } #if defined ZAPIS case 3:{ save_wybor(id) ColorChat(id, BLUE, "^x04[^x03Vip^x04] ^x01Wlasnie zapisano ^x04Twoj ^x03wybor.") } #endif } } public menu_ct(id, menu, item) { switch(item) { case 0:{ wybor_gracza[id] = Grawitacja ColorChat(id, BLUE, "^x04[^x03Vip^x04] ^x01Wybrales ^x04grawitacje^x01. Opcja ta bedzie dostepna w ^x03nastepnej rundzie.") } case 1:{ wybor_gracza[id] = Morfina ColorChat(id, BLUE, "^x04[^x03Vip^x04] ^x01Wybrales ^x04morfine^x01. Opcja ta bedzie dostepna w ^x03nastepnej rundzie.") } case 2:{ wybor_gracza[id] = Zamrozenie ColorChat(id, BLUE, "^x04[^x03Vip^x04] ^x01Wybrales ^x04zamrozenie^x01. Opcja ta bedzie dostepna w ^x03nastepnej rundzie.") } case 3:{ wybor_gracza[id] = Radar ColorChat(id, BLUE, "^x04[^x03Vip^x04] ^x01Wybrales ^x04radar, trzymaj noz zeby namierzyc wieznia^x01. Opcja ta bedzie dostepna w ^x03nastepnej rundzie.") } case 4:{ wybor_gracza[id] = Kamera ColorChat(id, BLUE, "^x04[^x03Vip^x04] ^x01Wybrales ^x04kamere, stawiasz na (E) i potem widok kamera/normal na (E)^x01. Opcja ta bedzie dostepna w ^x03nastepnej rundzie.") } #if defined ZAPIS case 5:{ save_wybor(id) ColorChat(id, BLUE, "^x04[^x03Vip^x04] ^x01Wlasnie zapisano ^x04Twoj ^x03wybor.") } #endif } } public Odrodzenie(id) { if(wybor_gracza[id] == Grawitacja && (get_user_flags(id) & ADMIN_LEVEL_F)) set_user_gravity(id, GRAWITACJA) if(is_user_alive(id)) set_user_rendering(id, kRenderFxNone, 0,0,0, kRenderTransAlpha, 999) if(wybor_gracza[id] == Zamrozenie && cs_get_user_team(id) == CS_TEAM_CT && (get_user_flags(id) & ADMIN_LEVEL_F)) set_user_rendering(id, kRenderFxNone, 0,0,0, kRenderTransAlpha, 999) if(wybor_gracza[id] == Morfina && cs_get_user_team(id) == CS_TEAM_CT && (get_user_flags(id) & ADMIN_LEVEL_F)) if(wybor_gracza[id] == Duszek && cs_get_user_team(id) == CS_TEAM_T && (get_user_flags(id) & ADMIN_LEVEL_F)) if(wybor_gracza[id] == Gumowy && cs_get_user_team(id) == CS_TEAM_T && (get_user_flags(id) & ADMIN_LEVEL_F)) wartosc_odbicia[id] = 2; if(wybor_gracza[id] == Radar && cs_get_user_team(id) == CS_TEAM_CT && (get_user_flags(id) & ADMIN_LEVEL_F)) set_task (2.0,"radar_scan",_,_,_,"b"); if(wybor_gracza[id] == Kamera && cs_get_user_team(id) == CS_TEAM_CT && (get_user_flags(id) & ADMIN_LEVEL_F)) //////////////do freeza if(wybor_gracza[id] == Zamrozenie && (get_user_flags(id) & ADMIN_LEVEL_F)) freeze[id] = 1 if(wybor_gracza[id] != Zamrozenie) freeze[id] = 0 ////////////// i koniec //////////////do morfiny if(wybor_gracza[id] == Morfina && (get_user_flags(id) & ADMIN_LEVEL_F)) morfina[id] = 1 if(wybor_gracza[id] != Morfina) morfina[id] = 0 ////////////// i koniec //////////////do duszka if(wybor_gracza[id] == Duszek && (get_user_flags(id) & ADMIN_LEVEL_F)) niewidzialnosc[id] = 1 if(wybor_gracza[id] != Duszek) niewidzialnosc[id] = 0 ////////////// i koniec //////////////do gumowego pancerza if(wybor_gracza[id] == Gumowy && (get_user_flags(id) & ADMIN_LEVEL_F)) odbicie[id] = 1 if(wybor_gracza[id] != Gumowy) odbicie[id] = 0 ////////////// i koniec //////////////do radaru if(wybor_gracza[id] == Radar && (get_user_flags(id) & ADMIN_LEVEL_F)) radar[id] = 1 if(wybor_gracza[id] != Radar) radar[id] = 0 ////////////// i koniec //////////////do kamery if(wybor_gracza[id] == Kamera && (get_user_flags(id) & ADMIN_LEVEL_F)) player_b_eye[id] = 1 if(wybor_gracza[id] != Kamera) player_b_eye[id] = 0 ////////////// i koniec } public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits) { new liczba = random_num(1, 2) if(!is_user_connected(idattacker)) return HAM_IGNORED; if(!freeze[idattacker]) return HAM_IGNORED; if(freeze[idattacker] && damage>0 && !zamrozenie[this] && liczba==2){ fm_set_rendering(this, kRenderFxGlowShell, 0,0,255, kRenderGlow, 255) zamrozenie[this] = true set_pev(this, pev_flags, FL_FROZEN) set_task(5.0, "Odmroz", this) } if(zamrozenie[this]) return HAM_SUPERCEDE return HAM_IGNORED } public Odmroz(id) { set_pev(id, pev_flags, FL_CLIENT) fm_set_rendering(id, kRenderFxGlowShell, 0,0,0, kRenderGlow, 255) zamrozenie[id] = false } #if defined VIPS public print_vips(user) { new adminnames[33][32] new message[256] new id, count, x, len for(id = 1 ; id <= maxplayers ; id++) if(is_user_connected(id)) if(get_user_flags(id) & FLAGA) get_user_name(id, adminnames[count++], 31) len = format(message, 255, "^x04 S-VIPY ONLINE: ") if(count > 0) { for(x = 0 ; x < count ; x++) { len += format(message[len], 255-len, "%s%s ", adminnames[x], x < (count-1) ? ", ":"") if(len > 96 ) { ColorChat(user, GREEN, "%s", message); len = format(message, 255, "^x04 ") } } ColorChat(user, GREEN, "%s", message); } else { len += format(message[len], 255-len, "Brak Vipow ONLINE") ColorChat(user, GREEN, "%s", message); } } #endif public MOTD( id,level,cid ) { if ( !cmd_access(id,level,cid,1) ) return PLUGIN_CONTINUE show_motd( id,"vip.txt","Informacje VIP." ); return PLUGIN_CONTINUE } public client_disconnect(id){ wybor_gracza[id] = Brak } #if defined ZAPIS public plugin_end() nvault_close(vault) public load_wybor(id) { new name[35] get_user_name(id,name,34) new vaultkey[64],vaultdata[256] format(vaultkey,63,"%s-wybor",name) format(vaultdata,255,"%d",wybor_gracza[id]) nvault_get(vault,vaultkey,vaultdata,255) new wybortemp[33] parse(vaultdata,wybortemp, 32) wybor_gracza[id]=str_to_num(wybortemp) return PLUGIN_CONTINUE } public save_wybor(id){ new name[35] get_user_name(id,name,34) new vaultkey[64],vaultdata[256] format(vaultkey,63,"%s-wybor",name) format(vaultdata,255,"%d", wybor_gracza[id]) nvault_set(vault,vaultkey,vaultdata) return PLUGIN_CONTINUE } #endif public Killed(id) { if(morfina[id] && random_num(1,2) == 1) set_task(0.1, "Wskrzes", id+ZADANIE_WSKRZES); } public Wskrzes(id) ExecuteHamB(Ham_CS_RoundRespawn, id-ZADANIE_WSKRZES); public client_PreThink ( id ) { new button2 = get_user_button(id); //USE Button actives forward\backward\left\right if (niewidzialnosc[id] && get_entity_flags(id) & FL_ONGROUND && (!(button2 & (IN_FORWARD+IN_BACK+IN_MOVELEFT+IN_MOVERIGHT)) && is_user_alive(id))) { set_rendering(id,kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 20); } else set_rendering(id,kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 255); /////////////////////////////////////////////////// return PLUGIN_CONTINUE } public Damage(id) { new idattacker = get_user_attacker(id); if(!is_user_connected(idattacker) || get_user_team(id) == get_user_team(idattacker)) return PLUGIN_CONTINUE; if(odbicie[idattacker] && random_num(1, wartosc_odbicia[idattacker]) == 1) Display_Fade(id, 1<<14, 1<<14 ,1<<16, 0, 255, 0, 230); return PLUGIN_CONTINUE; } stock Display_Fade(id,duration,holdtime,fadetype,red,green,blue,alpha) { message_begin( MSG_ONE, g_msg_screenfade,{0,0,0},id ); write_short( duration ); write_short( holdtime ); write_short( fadetype ); write_byte ( red ); write_byte ( green ); write_byte ( blue ); write_byte ( alpha ); message_end(); } public radar_scan(id) { new PlayerCoords[3]; for (new id=1; id<=32; id++) { if((!is_user_alive(id))||(!radar[id])) continue; for (new i=1;i<=32;i++) { if(!is_user_alive(i) || get_user_team(i) == get_user_team(id)) continue; if(get_user_weapon(id) == CSW_KNIFE) 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() } } } public plugin_precache() { precache_model("models/rpgrocket.mdl") sprite_line = precache_model("sprites/dot.spr") } public client_PreThink ( id ) { //USE Button actives USEMAGIC if (pev(id,pev_button) & IN_USE ) Use_Spell(id) return PLUGIN_CONTINUE } public Use_Spell(id) { if (player_b_eye[id] != 0) item_eye(id) return PLUGIN_HANDLED } public item_eye(id) { if (player_b_eye[id] == -1) { //place camera new Float:playerOrigin[3] entity_get_vector(id,EV_VEC_origin,playerOrigin) new ent = create_entity("info_target") entity_set_string(ent, EV_SZ_classname, "PlayerCamera") entity_set_int(ent, EV_INT_movetype, MOVETYPE_NOCLIP) entity_set_int(ent, EV_INT_solid, SOLID_NOT) entity_set_edict(ent, EV_ENT_owner, id) entity_set_model(ent, "models/rpgrocket.mdl") //Just something entity_set_origin(ent,playerOrigin) entity_set_int(ent,EV_INT_iuser1,0) //Viewing through this camera set_rendering (ent,kRenderFxNone, 0,0,0, kRenderTransTexture,0) entity_set_float(ent,EV_FL_nextthink,halflife_time() + 0.01) player_b_eye[id] = ent } else { //view through camera or stop viewing new ent = player_b_eye[id] if (!is_valid_ent(ent)) { attach_view(id,id) return PLUGIN_HANDLED } new viewing = entity_get_int(ent,EV_INT_iuser1) if (viewing) { entity_set_int(ent,EV_INT_iuser1,0) attach_view(id,id) } else { entity_set_int(ent,EV_INT_iuser1,1) attach_view(id,ent) } } return PLUGIN_HANDLED } /* ==================================================================================================== */ //Called when PlayerCamera thinks public Think_PlayerCamera(ent) { new id = entity_get_edict(ent,EV_ENT_owner) //Check if player is still having the item and is still online if (!is_valid_ent(id) || player_b_eye[id] == 0 || !is_user_connected(id)) { //remove entity if (is_valid_ent(id) && is_user_connected(id)) attach_view(id,id) remove_entity(ent) } else { //Dont use cpu when not alive anyway or not viewing if (!is_user_alive(id)) { entity_set_float(ent,EV_FL_nextthink,halflife_time() + 3.0) return PLUGIN_HANDLED } if (!entity_get_int(ent,EV_INT_iuser1)) { entity_set_float(ent,EV_FL_nextthink,halflife_time() + 0.5) return PLUGIN_HANDLED } entity_set_float(ent,EV_FL_nextthink,halflife_time() + 0.01) //Find nearest player to camera new Float:pOrigin[3],Float:plOrigin[3],Float:ret[3] entity_get_vector(ent,EV_VEC_origin,plOrigin) new Float:distrec = 2000.0, winent = -1 for (new i=0; i<MAX; i++) { if (is_user_connected(i) && is_user_alive(i)) { entity_get_vector(i,EV_VEC_origin,pOrigin) pOrigin[2]+=10.0 if (trace_line ( 0, plOrigin, pOrigin, ret ) == i && vector_distance(pOrigin,plOrigin) < distrec) { winent = i distrec = vector_distance(pOrigin,plOrigin) } } } //Traceline and updown is still revresed if (winent > -1) { new Float:toplayer[3], Float:ideal[3],Float:pOrigin[3] entity_get_vector(winent,EV_VEC_origin,pOrigin) pOrigin[2]+=10.0 toplayer[0] = pOrigin[0]-plOrigin[0] toplayer[1] = pOrigin[1]-plOrigin[1] toplayer[2] = pOrigin[2]-plOrigin[2] vector_to_angle ( toplayer, ideal ) ideal[0] = ideal[0]*-1 entity_set_vector(ent,EV_VEC_angles,ideal) } } return PLUGIN_CONTINUE } public Create_Line(id,origin1[3],origin2[3],bool:draw) { if (draw) { message_begin(MSG_ONE,SVC_TEMPENTITY,{0,0,0},id) write_byte(0) write_coord(origin1[0]) // starting pos write_coord(origin1[1]) write_coord(origin1[2]) write_coord(origin2[0]) // ending pos write_coord(origin2[1]) write_coord(origin2[2]) write_short(sprite_line) // sprite index write_byte(1) // starting frame write_byte(5) // frame rate write_byte(2) // life write_byte(3) // line width write_byte(0) // noise write_byte(255) // RED write_byte(50) // GREEN write_byte(50) // BLUE write_byte(155) // brightness write_byte(5) // scroll speed message_end() } new Float:ret[3],Float:fOrigin1[3],Float:fOrigin2[3] //So we dont hit ourself origin1[2]+=50 IVecFVec(origin1,fOrigin1) IVecFVec(origin2,fOrigin2) new hit = trace_line ( 0, fOrigin1, fOrigin2, ret ) return hit }
A oto error:
Welcome to the AMX Mod X 1.8.1-300 Compiler. Copyright (c) 1997-2006 ITB CompuPhase, AMX Mod X Team svip.sma(494) : error 021: symbol already defined: "client_PreThink" 1 Error. Could not locate output file svip.amxx (compile failed).
Oczywiście dla osoby której uda się to naprawić +
Proszę o pomoc i
Z góry dziękuje