modificare plugin piss
Posted: 01 Sep 2010, 11:07
by b[L]u
salut vreau sa-mi modificati acest plugin incat sa pot face pipi unde vreau ori unde pe harta nu doar pe cadavre si sa ma pot misca in timp ce ma urinez :)) cine ma poate ajuta are un MULTUMESC
- | Afiseaza codul
#include <amxmodx> #if !defined NO_CS_CZ #include <fun> #endif #include <Vexd_Utilities> new piss_model new piss_sprite new water_splash new count_piss[33] new count_puddle[33] new bool:PissFlag[33] new bool:aim[33] new Float:aim_origin[33][3] #if !defined NO_CS_CZ new player_origins[33][3] new mod_name[32] #endif public piss_on_player(id) { if (get_cvar_num("amx_maxpees")==0) return PLUGIN_HANDLED if (!is_user_alive(id)) return PLUGIN_HANDLED if ( (get_cvar_num("amx_piss_admin")==1) && !(get_user_flags(id) & ADMIN_LEVEL_A) ) { console_print(id, "[AMX] You have not access to this command.") return PLUGIN_HANDLED } if(PissFlag[id]) return PLUGIN_HANDLED #if !defined NO_CS_CZ new player_origin[3], players[32], player, inum=0, dist, last_dist=99999, last_id get_user_origin(id,player_origin,0) get_players(players,inum,"b") if (inum>0) { for (new i=0;i<inum;i++) { player = players if (player!=id) { dist = get_distance(player_origin,player_origins[player]) if (dist<last_dist) { last_id = player last_dist = dist } } } if (last_dist<80) { #endif if (count_piss[id] > get_cvar_num("amx_maxpees")) { client_print(id,print_chat, "You can only piss on a player %d time(s) in a round !", get_cvar_num("amx_maxpees")) return PLUGIN_CONTINUE } new player_name[32] get_user_name(id, player_name, 31) #if !defined NO_CS_CZ if(get_user_flags(last_id) & ADMIN_IMMUNITY) { client_print(id,print_chat, "Player has immunity !") return PLUGIN_HANDLED } new dead_name[32] get_user_name(last_id, dead_name, 31) client_print(0,print_chat, "%s Is Pissing On %s's Dead Body !! HaHaHaHa !!", player_name, dead_name) #else client_print(0,print_chat, "%s Is Pissing !!" , player_name) #endif count_piss[id]+=1 count_puddle[id]=1 new ids[1] ids[0]=id PissFlag[id]=true aim[id]=false #if !defined NO_CS_CZ if( (equali(mod_name,"cstrike")) || (equali(mod_name,"czero")) ) { client_cmd(id, "weapon_knife") entity_set_string(id, EV_SZ_viewmodel, "") entity_set_string(id, EV_SZ_weaponmodel, "") set_user_maxspeed(id, -1.0) } #endif emit_sound(id,CHAN_VOICE,"piss/pissing.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) switch(get_cvar_num("amx_piss_effect")) { case 0: set_task(0.2,"make_pee",1481+id,ids,1,"a",48) case 1: set_task(0.1,"make_pee",1481+id,ids,1,"a",102) default: set_task(0.2,"make_pee",1481+id,ids,1,"a",48) } set_task(2.2,"place_puddle",3424+id,ids,1,"a",4) #if !defined NO_CS_CZ set_task(12.0,"weapons_back",6794+id,ids,1) } else { client_print(id,print_chat, "There are no dead bodies around you.") return PLUGIN_HANDLED } } #endif return PLUGIN_HANDLED } public sqrt(num) { new div = num new result = 1 while (div > result) { div = (div + result) / 2 result = num / div } return div } public make_pee(ids[]) { new id=ids[0] new vec[3] new aimvec[3] new velocityvec[3] new length get_user_origin(id,vec) get_user_origin(id,aimvec,3) new distance = get_distance(vec,aimvec) new speed = floatround(distance*1.9) velocityvec[0]=aimvec[0]-vec[0] velocityvec[1]=aimvec[1]-vec[1] velocityvec[2]=aimvec[2]-vec[2] length=sqrt(velocityvec[0]*velocityvec[0]+velocityvec[1]*velocityvec[1]+velocityvec[2]*velocityvec[2]) velocityvec[0]=velocityvec[0]*speed/length velocityvec[1]=velocityvec[1]*speed/length velocityvec[2]=velocityvec[2]*speed/length switch(get_cvar_num("amx_piss_effect")) { case 0: { message_begin(MSG_BROADCAST,SVC_TEMPENTITY) write_byte(101) write_coord(vec[0]) write_coord(vec[1]) write_coord(vec[2]) write_coord(velocityvec[0]) write_coord(velocityvec[1]) write_coord(velocityvec[2]) write_byte(102) // color write_byte(160) // speed message_end() } case 1: { message_begin(MSG_BROADCAST,SVC_TEMPENTITY) write_byte(106) write_coord(vec[0]) write_coord(vec[1]) write_coord(vec[2]) write_coord(velocityvec[0]) write_coord(velocityvec[1]) write_coord(velocityvec[2]+100) write_angle (0) write_short (piss_model) write_byte (0) write_byte (255) message_end() message_begin(MSG_BROADCAST,SVC_TEMPENTITY) write_byte (1) write_short (id) write_coord(aimvec[0]) write_coord(aimvec[1]) write_coord(aimvec[2]) write_short(piss_sprite) write_byte( 1 ) // framestart write_byte( 6 ) // framerate write_byte( 1 ) // life write_byte( 8 ) // width write_byte( 0 ) // noise write_byte( 255 ) // r, g, b write_byte( 255 ) // r, g, b write_byte( 0 ) // r, g, b write_byte( 200 ) // brightness write_byte( 10 ) // speed message_end() message_begin( MSG_BROADCAST,SVC_TEMPENTITY) write_byte(17) write_coord(aimvec[0]) write_coord(aimvec[1]) write_coord(aimvec[2]) write_short(water_splash) write_byte(16) write_byte(18) message_end() } default: { message_begin(MSG_BROADCAST,SVC_TEMPENTITY) write_byte(101) write_coord(vec[0]) write_coord(vec[1]) write_coord(vec[2]) write_coord(velocityvec[0]) write_coord(velocityvec[1]) write_coord(velocityvec[2]) write_byte(102) // color write_byte(160) // speed message_end() } } } public place_puddle(ids[]) { new id=ids[0] if(!aim[id]) { new origin[3] get_user_origin(id,origin,3) aim_origin[id][0]=float(origin[0]) aim_origin[id][1]=float(origin[1]) aim_origin[id][2]=float(origin[2]) } new puddle_entity puddle_entity = CreateEntity("info_target") if(puddle_entity == 0) { return PLUGIN_HANDLED_MAIN } new Float:MinBox[3] new Float:MaxBox[3] MinBox[0] = -1.0 MinBox[1] = -1.0 MinBox[2] = -1.0 MaxBox[0] = 1.0 MaxBox[1] = 1.0 MaxBox[2] = 1.0 Entvars_Set_Vector(puddle_entity, EV_VEC_mins, MinBox) Entvars_Set_Vector(puddle_entity, EV_VEC_maxs, MaxBox) switch(count_puddle[id]) { case 1: { Entvars_Set_String(puddle_entity, EV_SZ_classname, "piss_puddle1") ENT_SetModel(puddle_entity, "models/piss/piss_puddle1.mdl") } case 2: { Entvars_Set_String(puddle_entity, EV_SZ_classname, "piss_puddle2") ENT_SetModel(puddle_entity, "models/piss/piss_puddle2.mdl") } case 3: { Entvars_Set_String(puddle_entity, EV_SZ_classname, "piss_puddle3") ENT_SetModel(puddle_entity, "models/piss/piss_puddle3.mdl") } case 4: { Entvars_Set_String(puddle_entity, EV_SZ_classname, "piss_puddle4") ENT_SetModel(puddle_entity, "models/piss/piss_puddle4.mdl") } case 5: { Entvars_Set_String(puddle_entity, EV_SZ_classname, "piss_puddle5") ENT_SetModel(puddle_entity, "models/piss/piss_puddle5.mdl") #if defined NO_CS_CZ PissFlag[id]=false #endif } default: {} } ENT_SetOrigin(puddle_entity, aim_origin[id]) Entvars_Set_Int(puddle_entity, EV_INT_solid, 3) Entvars_Set_Int(puddle_entity, EV_INT_movetype, 6) Entvars_Set_Edict(puddle_entity, EV_ENT_owner, id) count_puddle[id]+=1 aim[id]=true return PLUGIN_CONTINUE } public death_event() { new victim = read_data(2) #if !defined NO_CS_CZ get_user_origin(victim,player_origins[victim],0) #endif if(PissFlag[victim]) reset_piss(victim) return PLUGIN_CONTINUE } #if !defined NO_CS_CZ public weapons_back(ids[]) { PissFlag[ids[0]]=false if( (equali(mod_name,"cstrike")) || (equali(mod_name,"czero")) ) { set_user_maxspeed(ids[0], 250.0) client_cmd(ids[0], "weapon_knife") } } public cur_weapon(id) { if(PissFlag[id]) { if( (equali(mod_name,"cstrike")) || (equali(mod_name,"czero")) ) { client_cmd(id, "weapon_knife") set_user_maxspeed(id, -1.0) entity_set_string(id, EV_SZ_viewmodel, "") entity_set_string(id, EV_SZ_weaponmodel, "") } } return PLUGIN_CONTINUE } #endif public reset_piss(id) { if(task_exists(1481+id)) remove_task(1481+id) if(task_exists(3424+id)) remove_task(3424+id) #if !defined NO_CS_CZ if(task_exists(6794+id)) remove_task(6794+id) #endif emit_sound(id,CHAN_VOICE,"piss/pissing.wav", 0.0, ATTN_NORM, 0, PITCH_NORM) PissFlag[id]=false return PLUGIN_CONTINUE } public reset_hud(id) { if(task_exists(1481+id)) remove_task(1481+id) if(task_exists(3424+id)) remove_task(3424+id) #if !defined NO_CS_CZ if(task_exists(6794+id)) remove_task(6794+id) #endif emit_sound(id,CHAN_VOICE,"piss/pissing.wav", 0.0, ATTN_NORM, 0, PITCH_NORM) PissFlag[id]=false new iCurrent for (new i=1 ; i<count_piss[id] ; i++) { iCurrent = FindEntity(-1, "piss_puddle1") if(iCurrent > 0) RemoveEntity(iCurrent) iCurrent = FindEntity(-1, "piss_puddle2") if(iCurrent > 0) RemoveEntity(iCurrent) iCurrent = FindEntity(-1, "piss_puddle3") if(iCurrent > 0) RemoveEntity(iCurrent) iCurrent = FindEntity(-1, "piss_puddle4") if(iCurrent > 0) RemoveEntity(iCurrent) iCurrent = FindEntity(-1, "piss_puddle5") if(iCurrent > 0) RemoveEntity(iCurrent) } count_piss[id]=1 return PLUGIN_CONTINUE } public piss_help(id) { client_print(id, print_chat, "To piss on a dead body you have to bind a key to: piss") client_print(id, print_chat, "Open your console and write: bind ^"key^" ^"piss^"") client_print(id, print_chat, "ex: bind ^"x^" ^"piss^"") return PLUGIN_CONTINUE } public handle_say(id) { new said[192] read_args(said,192) remove_quotes(said) if( (containi(said, "piss") != -1) && !(containi(said, "/piss") != -1) ) { client_print(id, print_chat, "[AMX] For Piss help say /piss") } return PLUGIN_CONTINUE } public plugin_precache() { if (file_exists("sound/piss/pissing.wav")) precache_sound("piss/pissing.wav") if (file_exists("models/piss/piss_puddle1.mdl")) precache_model("models/piss/piss_puddle1.mdl") if (file_exists("models/piss/piss_puddle2.mdl")) precache_model("models/piss/piss_puddle2.mdl") if (file_exists("models/piss/piss_puddle3.mdl")) precache_model("models/piss/piss_puddle3.mdl") if (file_exists("models/piss/piss_puddle4.mdl")) precache_model("models/piss/piss_puddle4.mdl") if (file_exists("models/piss/piss_puddle5.mdl")) precache_model("models/piss/piss_puddle5.mdl") if (file_exists("models/piss/piss.mdl")) piss_model = precache_model("models/piss/piss.mdl") piss_sprite = precache_model("sprites/plasma.spr") water_splash = precache_model("sprites/wsplash3.spr") } public client_connect(id) { PissFlag[id]=false count_piss[id]=1 } public client_disconnect(id) { reset_hud(id) } public plugin_init() { register_plugin("AMX Piss","2.2","KRoTaL") register_clcmd("piss","piss_on_player",0,"- Piss on a dead player") register_clcmd("say /piss","piss_help",0,"- Displays piss help") register_clcmd("say","handle_say") register_cvar("amx_maxpees","6") register_cvar("amx_piss_admin","0") register_cvar("amx_piss_effect","0") register_event("DeathMsg","death_event","a") register_event("ResetHUD", "reset_hud", "be") #if !defined NO_CS_CZ register_event("CurWeapon","cur_weapon","be","1=1") get_modname(mod_name,31) #endif }