Witam.
Posiadam perk, który nas teleportuje.
/* Plugin generated by AMXX-Studio */ #include <amxmisc> #include <codmod> #include <engine> #include <fakemeta> #include <xs> #define CS_PLAYER_HEIGHT 72.0 new const perk_name[] = "Magiczny Noz"; new const perk_desc[] = "Twoj noz pozwala ci teleportowac sie raz na 3 sekundy"; new bool:ma_perk[33]; new player_b_blink[33]; public plugin_init() { register_plugin(perk_name, "1.0", "I3ombel"); cod_register_perk(perk_name, perk_desc) register_event("ResetHUD", "ResetHUD", "abe"); } public cod_perk_enabled(id) { ma_perk[id] = true; player_b_blink[id] = floatround(halflife_time()) } public cod_perk_disabled(id) { ma_perk[id] = false; } public client_PreThink(id) { if(!is_user_alive(id)) { return PLUGIN_CONTINUE; } if( get_user_button(id) & IN_ATTACK2 && !(get_user_oldbutton(id) & IN_ATTACK2) && ma_perk[id]) { if (get_user_weapon(id) == CSW_KNIFE) { if (halflife_time()-player_b_blink[id] <= 6.0) return PLUGIN_HANDLED player_b_blink[id] = floatround(halflife_time()) UTIL_Teleport(id,300+1800) } } return PLUGIN_CONTINUE; } public UTIL_Teleport(id,distance) { Set_Origin_Forward(id,distance) new origin[3] get_user_origin(id,origin) message_begin(MSG_BROADCAST ,SVC_TEMPENTITY) write_byte(TE_PARTICLEBURST ) write_coord(origin[0]) write_coord(origin[1]) write_coord(origin[2]) write_short(20) write_byte(1) write_byte(4) message_end() } stock Set_Origin_Forward(id, distance) { new Float:origin[3] new Float:angles[3] new Float:teleport[3] new Float:heightplus = 10.0 new Float:playerheight = 64.0 new bool:recalculate = false new bool:foundheight = false pev(id,pev_origin,origin) pev(id,pev_angles,angles) teleport[0] = origin[0] + distance * floatcos(angles[1],degrees) * floatabs(floatcos(angles[0],degrees)); teleport[1] = origin[1] + distance * floatsin(angles[1],degrees) * floatabs(floatcos(angles[0],degrees)); teleport[2] = origin[2]+heightplus while (!Can_Trace_Line_Origin(origin,teleport) || Is_Point_Stuck(teleport,48.0)) { if (distance < 10) break; for (new i=1; i < playerheight+20.0; i++) { teleport[2]+=i if (Can_Trace_Line_Origin(origin,teleport) && !Is_Point_Stuck(teleport,48.0)) { foundheight = true heightplus += i break } teleport[2]-=i } if (foundheight) break recalculate = true distance-=10 teleport[0] = origin[0] + (distance+32) * floatcos(angles[1],degrees) * floatabs(floatcos(angles[0],degrees)); teleport[1] = origin[1] + (distance+32) * floatsin(angles[1],degrees) * floatabs(floatcos(angles[0],degrees)); teleport[2] = origin[2]+heightplus } if (!recalculate) { set_pev(id,pev_origin,teleport) return PLUGIN_CONTINUE } teleport[0] = origin[0] + distance * floatcos(angles[1],degrees) * floatabs(floatcos(angles[0],degrees)); teleport[1] = origin[1] + distance * floatsin(angles[1],degrees) * floatabs(floatcos(angles[0],degrees)); teleport[2] = origin[2]+heightplus set_pev(id,pev_origin,teleport) return PLUGIN_CONTINUE } stock bool:Can_Trace_Line_Origin(Float:origin1[3], Float:origin2[3]) { new Float:Origin_Return[3] new Float:temp1[3] new Float:temp2[3] temp1[0] = origin1[0] temp1[1] = origin1[1] temp1[2] = origin1[2]-30 temp2[0] = origin2[0] temp2[1] = origin2[1] temp2[2] = origin2[2]-30 trace_line(-1, temp1, temp2, Origin_Return) if (get_distance_f(Origin_Return,temp2) < 1.0) return true return false } stock bool:Is_Point_Stuck(Float:Origin[3], Float:hullsize) { new Float:temp[3] new Float:iterator = hullsize/3 temp[2] = Origin[2] for (new Float:i=Origin[0]-hullsize; i < Origin[0]+hullsize; i+=iterator) { for (new Float:j=Origin[1]-hullsize; j < Origin[1]+hullsize; j+=iterator) { for (new Float:k=Origin[2]-CS_PLAYER_HEIGHT; k < Origin[2]+CS_PLAYER_HEIGHT; k+=6) { temp[0] = i temp[1] = j temp[2] = k if (point_contents(temp) != -1) return true } } } return false }
- 300m + (15 * Inteligencja)
- 3 sek
Użytkownik I3ombel edytował ten post 11.02.2016 20:14