hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.04.28. 05:45



Jelenlévő felhasználók

Jelenleg 532 felhasználó van jelen :: 0 regisztrált, 0 rejtett és 532 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: nincs regisztrált felhasználó az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 8 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Pisilés/Piss ne kelljen megállni!
HozzászólásElküldve: 2013.07.31. 11:53 
Offline
Beavatott

Csatlakozott: 2012.08.19. 11:45
Hozzászólások: 73
Megköszönt másnak: 19 alkalommal
Megköszönték neki: 1 alkalommal
Sziasztok! Valaki ki tudná ebből a pisilés pluginból szedni azt a részt, hogy ne kelljen megállni és ne kelljen eltenni a fegyvert pisilés közbe? Előre is köszönöm szépen. :)

Kód:
/*
 
Plugin: Amx Piss
Version: 2.2
Author: KRoTaL (Based on TakeADookie by PaintLancer)
 
Modified by commonbullet to work with amxx, untested.
 
1.0  Release
1.1  Better effect
1.2  Bug fix
1.3  New effect + piss puddle
1.4a New effects, only for cs/cz/dod
1.4b New effects, only for other mods than cs/cz/dod
1.5  #define NO_CS_CZ added
1.6  Bug fix (DoD)
1.7  Bug fix
1.8  Some checks added
1.9  #define NO_CS_CZ changed into #define NO_CS_CZ
2.0  New cvar : amx_piss_effect
2.1  English & French language support
2.2  Removed knife model when pissing and added admin immunity
 
Commands:
 
  To piss on a dead body you have to bind a key to: piss
  Open your console and write: bind "key" "piss"
  ex: bind "x" "piss"
  Then stand still above a dead player, press your key and you'll piss on them !
  You can control the direction of the stream with your mouse.
  You are not able to move or to shoot for 10 seconds when you piss, so beware.
  The puddle of piss will appear where you are aiming at 2 seconds after you start pissing,
  so try to aim at the dead body instead of the sky or a wall ;)
 
  Players can say "/piss" in the chat to get some help.
 
Cvars:
 
  amx_maxpees 6   - Maximum number of times a player is allowed to piss per round.
 
  amx_piss_admin 0    -   0 : All the players are allowed to piss
                          1 : Only admins with ADMIN_LEVEL_A flag are allowed to piss
 
  amx_piss_effect 0   -   0 : yellow bloodsprite
                          1 : yellow laserbeam
 
Setup:
 
  You need to put these files on your server:
 
  sound/piss/pissing.wav
  models/piss/piss_puddle1.mdl
  models/piss/piss_puddle2.mdl
  models/piss/piss_puddle3.mdl
  models/piss/piss_puddle4.mdl
  models/piss/piss_puddle5.mdl
  models/piss/piss.mdl
  addons/amx/lang/piss.txt
 
  You need to enable Fun and Vexd Utilities Modules for cs/cs-cz.
  You need to enable Vexd Utilities Module for the other mods.
 
  Use amx_piss_cs_cz.amx if you use CS or CS-CZ (player can't move).
  Use amx_piss.amx if you use another mod (dod, tfc, ...), or if you play CS/CS-CZ
  and you want to be able to piss without being stuck.
 
 
 Credits:
 
  Rastin for his trousers fly sounds
  SLayer KL for his piss puddle models
 
*/
 
// UNCOMMENT IF YOU USE ANOTHER MOD THAN CS and CS-CZ,
// OR IF YOU USE CS/CS-CZ AND YOU WANT TO BE ABLE TO PISS ANYWHERE ON THE MAP (NOT JUST NEAR DEAD PLAYERS)
//#define NO_CS_CZ
 
 
 
 
/***************************************************************************************************/
 
#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] Nincs jogosultsagod ehhez a parancshoz.")
  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[i]
    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, "Ot nem lehet lepisilni !")
      return PLUGIN_HANDLED
    }
    new dead_name[32]
    get_user_name(last_id, dead_name, 31)
    client_print(0,print_chat, "%s lepisilte %s -t !! HaHaHaHa !!", player_name, dead_name)
#else
    client_print(0,print_chat, "%s pisil !!" , 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
}
 


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Pisilés/Piss ne kelljen megállni!
HozzászólásElküldve: 2013.07.31. 17:48 
Offline
Őskövület
Avatar

Csatlakozott: 2012.02.27. 09:42
Hozzászólások: 2588
Megköszönt másnak: 25 alkalommal
Megköszönték neki: 418 alkalommal
Próbáld így
SMA Forráskód: [ Mindet kijelol ]
  1.  
  2. /*
  3.  
  4. Plugin: Amx Piss
  5. Version: 2.2
  6. Author: KRoTaL (Based on TakeADookie by PaintLancer)
  7.  
  8. Modified by commonbullet to work with amxx, untested.
  9.  
  10. 1.0 Release
  11. 1.1 Better effect
  12. 1.2 Bug fix
  13. 1.3 New effect + piss puddle
  14. 1.4a New effects, only for cs/cz/dod
  15. 1.4b New effects, only for other mods than cs/cz/dod
  16. 1.5 #define NO_CS_CZ added
  17. 1.6 Bug fix (DoD)
  18. 1.7 Bug fix
  19. 1.8 Some checks added
  20. 1.9 #define NO_CS_CZ changed into #define NO_CS_CZ
  21. 2.0 New cvar : amx_piss_effect
  22. 2.1 English & French language support
  23. 2.2 Removed knife model when pissing and added admin immunity
  24.  
  25. Commands:
  26.  
  27.   To piss on a dead body you have to bind a key to: piss
  28.   Open your console and write: bind "key" "piss"
  29.   ex: bind "x" "piss"
  30.   Then stand still above a dead player, press your key and you'll piss on them !
  31.   You can control the direction of the stream with your mouse.
  32.   You are not able to move or to shoot for 10 seconds when you piss, so beware.
  33.   The puddle of piss will appear where you are aiming at 2 seconds after you start pissing,
  34.   so try to aim at the dead body instead of the sky or a wall <!-- s;) --><img src=\"{SMILIES_PATH}/icon_e_wink.gif\" alt=\";)\" title=\"kacsintás\" /><!-- s;) -->
  35.  
  36.   Players can say "/piss" in the chat to get some help.
  37.  
  38. Cvars:
  39.  
  40.   amx_maxpees 6 - Maximum number of times a player is allowed to piss per round.
  41.  
  42.   amx_piss_admin 0 - 0 : All the players are allowed to piss
  43.   1 : Only admins with ADMIN_LEVEL_A flag are allowed to piss
  44.  
  45.   amx_piss_effect 0 - 0 : yellow bloodsprite
  46.   1 : yellow laserbeam
  47.  
  48. Setup:
  49.  
  50.   You need to put these files on your server:
  51.  
  52.   sound/piss/pissing.wav
  53.   models/piss/piss_puddle1.mdl
  54.   models/piss/piss_puddle2.mdl
  55.   models/piss/piss_puddle3.mdl
  56.   models/piss/piss_puddle4.mdl
  57.   models/piss/piss_puddle5.mdl
  58.   models/piss/piss.mdl
  59.   addons/amx/lang/piss.txt
  60.  
  61.   You need to enable Fun and Vexd Utilities Modules for cs/cs-cz.
  62.   You need to enable Vexd Utilities Module for the other mods.
  63.  
  64.   Use amx_piss_cs_cz.amx if you use CS or CS-CZ (player can't move).
  65.   Use amx_piss.amx if you use another mod (dod, tfc, ...), or if you play CS/CS-CZ
  66.   and you want to be able to piss without being stuck.
  67.  
  68.  
  69.  Credits:
  70.  
  71.   Rastin for his trousers fly sounds
  72.   SLayer KL for his piss puddle models
  73.  
  74. */
  75.  
  76. // UNCOMMENT IF YOU USE ANOTHER MOD THAN CS and CS-CZ,
  77. // OR IF YOU USE CS/CS-CZ AND YOU WANT TO BE ABLE TO PISS ANYWHERE ON THE MAP (NOT JUST NEAR DEAD PLAYERS)
  78. //#define NO_CS_CZ
  79.  
  80.  
  81.  
  82.  
  83. /***************************************************************************************************/
  84.  
  85. #include <amxmodx>
  86. #if !defined NO_CS_CZ
  87. #include <fun>
  88. #endif
  89. #include <Vexd_Utilities>
  90.  
  91.  
  92. new piss_model
  93. new piss_sprite
  94. new water_splash
  95. new count_piss[33]
  96. new count_puddle[33]
  97. new bool:PissFlag[33]
  98. new bool:aim[33]
  99. new Float:aim_origin[33][3]
  100. #if !defined NO_CS_CZ
  101. new player_origins[33][3]
  102. new mod_name[32]
  103. #endif
  104.  
  105. public piss_on_player(id)
  106. {
  107. if (get_cvar_num("amx_maxpees")==0)
  108. return PLUGIN_HANDLED
  109. if (!is_user_alive(id))
  110. return PLUGIN_HANDLED
  111. if ( (get_cvar_num("amx_piss_admin")==1) && !(get_user_flags(id) & ADMIN_LEVEL_A) )
  112. {
  113. console_print(id, "[AMX] Nincs jogosultsagod ehhez a parancshoz.")
  114. return PLUGIN_HANDLED
  115. }
  116. if(PissFlag[id])
  117. return PLUGIN_HANDLED
  118.  
  119. #if !defined NO_CS_CZ
  120. new player_origin[3], players[32], player, inum=0, dist, last_dist=99999, last_id
  121.  
  122. get_user_origin(id,player_origin,0)
  123. get_players(players,inum,"b")
  124. if (inum>0) {
  125. for (new i=0;i<inum;i++) {
  126. player = players[i]
  127. if (player!=id) {
  128. dist = get_distance(player_origin,player_origins[player])
  129. if (dist<last_dist) {
  130. last_id = player
  131. last_dist = dist
  132. }
  133. }
  134. }
  135. if (last_dist<80) {
  136. #endif
  137. if (count_piss[id] > get_cvar_num("amx_maxpees")) {
  138. client_print(id,print_chat, "You can only piss on a player %d time(s) in a round !", get_cvar_num("amx_maxpees"))
  139. return PLUGIN_CONTINUE
  140. }
  141. new player_name[32]
  142. get_user_name(id, player_name, 31)
  143. #if !defined NO_CS_CZ
  144. if(get_user_flags(last_id) & ADMIN_IMMUNITY)
  145. {
  146. client_print(id,print_chat, "Ot nem lehet lepisilni !")
  147. return PLUGIN_HANDLED
  148. }
  149. new dead_name[32]
  150. get_user_name(last_id, dead_name, 31)
  151. client_print(0,print_chat, "%s lepisilte %s -t !! HaHaHaHa !!", player_name, dead_name)
  152. #else
  153. client_print(0,print_chat, "%s pisil !!" , player_name)
  154. #endif
  155. count_piss[id]+=1
  156. count_puddle[id]=1
  157. new ids[1]
  158. ids[0]=id
  159. PissFlag[id]=true
  160. aim[id]=false
  161. #if !defined NO_CS_CZ
  162. if( (equali(mod_name,"cstrike")) || (equali(mod_name,"czero")) )
  163. {
  164. client_cmd(id, "weapon_knife")
  165. entity_set_string(id, EV_SZ_viewmodel, "")
  166. entity_set_string(id, EV_SZ_weaponmodel, "")
  167. set_user_maxspeed(id, -1.0)
  168. }
  169. #endif
  170. emit_sound(id,CHAN_VOICE,"piss/pissing.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  171. switch(get_cvar_num("amx_piss_effect"))
  172. {
  173. case 0: set_task(0.2,"make_pee",1481+id,ids,1,"a",48)
  174. case 1: set_task(0.1,"make_pee",1481+id,ids,1,"a",102)
  175. default: set_task(0.2,"make_pee",1481+id,ids,1,"a",48)
  176. }
  177. set_task(2.2,"place_puddle",3424+id,ids,1,"a",4)
  178. #if !defined NO_CS_CZ
  179. set_task(12.0,"weapons_back",6794+id,ids,1)
  180. }
  181. else
  182. {
  183. client_print(id,print_chat, "There are no dead bodies around you.")
  184. return PLUGIN_HANDLED
  185. }
  186. }
  187. #endif
  188. return PLUGIN_HANDLED
  189. }
  190.  
  191. public sqrt(num)
  192. {
  193. new div = num
  194. new result = 1
  195. while (div > result) {
  196. div = (div + result) / 2
  197. result = num / div
  198. }
  199. return div
  200. }
  201.  
  202. public make_pee(ids[])
  203. {
  204. new id=ids[0]
  205. new vec[3]
  206. new aimvec[3]
  207. new velocityvec[3]
  208. new length
  209. get_user_origin(id,vec)
  210. get_user_origin(id,aimvec,3)
  211. new distance = get_distance(vec,aimvec)
  212. new speed = floatround(distance*1.9)
  213.  
  214. velocityvec[0]=aimvec[0]-vec[0]
  215. velocityvec[1]=aimvec[1]-vec[1]
  216. velocityvec[2]=aimvec[2]-vec[2]
  217.  
  218. length=sqrt(velocityvec[0]*velocityvec[0]+velocityvec[1]*velocityvec[1]+velocityvec[2]*velocityvec[2])
  219.  
  220. velocityvec[0]=velocityvec[0]*speed/length
  221. velocityvec[1]=velocityvec[1]*speed/length
  222. velocityvec[2]=velocityvec[2]*speed/length
  223.  
  224. switch(get_cvar_num("amx_piss_effect"))
  225. {
  226. case 0:
  227. {
  228. message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
  229. write_byte(101)
  230. write_coord(vec[0])
  231. write_coord(vec[1])
  232. write_coord(vec[2])
  233. write_coord(velocityvec[0])
  234. write_coord(velocityvec[1])
  235. write_coord(velocityvec[2])
  236. write_byte(102) // color
  237. write_byte(160) // speed
  238. message_end()
  239. }
  240. case 1:
  241. {
  242. message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
  243. write_byte(106)
  244. write_coord(vec[0])
  245. write_coord(vec[1])
  246. write_coord(vec[2])
  247. write_coord(velocityvec[0])
  248. write_coord(velocityvec[1])
  249. write_coord(velocityvec[2]+100)
  250. write_angle (0)
  251. write_short (piss_model)
  252. write_byte (0)
  253. write_byte (255)
  254. message_end()
  255.  
  256. message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
  257. write_byte (1)
  258. write_short (id)
  259. write_coord(aimvec[0])
  260. write_coord(aimvec[1])
  261. write_coord(aimvec[2])
  262. write_short(piss_sprite)
  263. write_byte( 1 ) // framestart
  264. write_byte( 6 ) // framerate
  265. write_byte( 1 ) // life
  266. write_byte( 8 ) // width
  267. write_byte( 0 ) // noise
  268. write_byte( 255 ) // r, g, b
  269. write_byte( 255 ) // r, g, b
  270. write_byte( 0 ) // r, g, b
  271. write_byte( 200 ) // brightness
  272. write_byte( 10 ) // speed
  273. message_end()
  274.  
  275. message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
  276. write_byte(17)
  277. write_coord(aimvec[0])
  278. write_coord(aimvec[1])
  279. write_coord(aimvec[2])
  280. write_short(water_splash)
  281. write_byte(16)
  282. write_byte(18)
  283. message_end()
  284.  
  285. }
  286. default:
  287. {
  288. message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
  289. write_byte(101)
  290. write_coord(vec[0])
  291. write_coord(vec[1])
  292. write_coord(vec[2])
  293. write_coord(velocityvec[0])
  294. write_coord(velocityvec[1])
  295. write_coord(velocityvec[2])
  296. write_byte(102) // color
  297. write_byte(160) // speed
  298. message_end()
  299. }
  300. }
  301. }
  302.  
  303. public place_puddle(ids[])
  304. {
  305. new id=ids[0]
  306. if(!aim[id])
  307. {
  308. new origin[3]
  309. get_user_origin(id,origin,3)
  310. aim_origin[id][0]=float(origin[0])
  311. aim_origin[id][1]=float(origin[1])
  312. aim_origin[id][2]=float(origin[2])
  313. }
  314.  
  315. new puddle_entity
  316. puddle_entity = CreateEntity("info_target")
  317.  
  318. if(puddle_entity == 0) {
  319. return PLUGIN_HANDLED_MAIN
  320. }
  321.  
  322. new Float:MinBox[3]
  323. new Float:MaxBox[3]
  324.  
  325. MinBox[0] = -1.0
  326. MinBox[1] = -1.0
  327. MinBox[2] = -1.0
  328. MaxBox[0] = 1.0
  329. MaxBox[1] = 1.0
  330. MaxBox[2] = 1.0
  331.  
  332. Entvars_Set_Vector(puddle_entity, EV_VEC_mins, MinBox)
  333. Entvars_Set_Vector(puddle_entity, EV_VEC_maxs, MaxBox)
  334.  
  335. switch(count_puddle[id])
  336. {
  337. case 1:
  338. {
  339. Entvars_Set_String(puddle_entity, EV_SZ_classname, "piss_puddle1")
  340. ENT_SetModel(puddle_entity, "models/piss/piss_puddle1.mdl")
  341. }
  342. case 2:
  343. {
  344. Entvars_Set_String(puddle_entity, EV_SZ_classname, "piss_puddle2")
  345. ENT_SetModel(puddle_entity, "models/piss/piss_puddle2.mdl")
  346. }
  347. case 3:
  348. {
  349. Entvars_Set_String(puddle_entity, EV_SZ_classname, "piss_puddle3")
  350. ENT_SetModel(puddle_entity, "models/piss/piss_puddle3.mdl")
  351. }
  352. case 4:
  353. {
  354. Entvars_Set_String(puddle_entity, EV_SZ_classname, "piss_puddle4")
  355. ENT_SetModel(puddle_entity, "models/piss/piss_puddle4.mdl")
  356. }
  357. case 5:
  358. {
  359. Entvars_Set_String(puddle_entity, EV_SZ_classname, "piss_puddle5")
  360. ENT_SetModel(puddle_entity, "models/piss/piss_puddle5.mdl")
  361. #if defined NO_CS_CZ
  362. PissFlag[id]=false
  363. #endif
  364. }
  365. default: {}
  366. }
  367.  
  368. ENT_SetOrigin(puddle_entity, aim_origin[id])
  369. Entvars_Set_Int(puddle_entity, EV_INT_solid, 3)
  370. Entvars_Set_Int(puddle_entity, EV_INT_movetype, 6)
  371. Entvars_Set_Edict(puddle_entity, EV_ENT_owner, id)
  372.  
  373. count_puddle[id]+=1
  374. aim[id]=true
  375.  
  376. return PLUGIN_CONTINUE
  377. }
  378.  
  379. public death_event()
  380. {
  381. new victim = read_data(2)
  382. #if !defined NO_CS_CZ
  383. get_user_origin(victim,player_origins[victim],0)
  384. #endif
  385.  
  386. if(PissFlag[victim])
  387. reset_piss(victim)
  388.  
  389. return PLUGIN_CONTINUE
  390. }
  391.  
  392. #if !defined NO_CS_CZ
  393. public weapons_back(ids[])
  394. {
  395. PissFlag[ids[0]]=false
  396. if( (equali(mod_name,"cstrike")) || (equali(mod_name,"czero")) )
  397. {
  398. set_user_maxspeed(ids[0], 250.0)
  399. client_cmd(ids[0], "weapon_knife")
  400. }
  401. }
  402.  
  403. public cur_weapon(id)
  404. {
  405. if(PissFlag[id])
  406. {
  407. if( (equali(mod_name,"cstrike")) || (equali(mod_name,"czero")) )
  408. {
  409. entity_set_string(id, EV_SZ_viewmodel, "")
  410. entity_set_string(id, EV_SZ_weaponmodel, "")
  411. }
  412. }
  413.  
  414. return PLUGIN_CONTINUE
  415. }
  416. #endif
  417.  
  418. public reset_piss(id)
  419. {
  420. if(task_exists(1481+id))
  421. remove_task(1481+id)
  422. if(task_exists(3424+id))
  423. remove_task(3424+id)
  424. #if !defined NO_CS_CZ
  425. if(task_exists(6794+id))
  426. remove_task(6794+id)
  427. #endif
  428. emit_sound(id,CHAN_VOICE,"piss/pissing.wav", 0.0, ATTN_NORM, 0, PITCH_NORM)
  429. PissFlag[id]=false
  430.  
  431. return PLUGIN_CONTINUE
  432. }
  433.  
  434. public reset_hud(id)
  435. {
  436. if(task_exists(1481+id))
  437. remove_task(1481+id)
  438. if(task_exists(3424+id))
  439. remove_task(3424+id)
  440. #if !defined NO_CS_CZ
  441. if(task_exists(6794+id))
  442. remove_task(6794+id)
  443. #endif
  444. emit_sound(id,CHAN_VOICE,"piss/pissing.wav", 0.0, ATTN_NORM, 0, PITCH_NORM)
  445. PissFlag[id]=false
  446.  
  447. new iCurrent
  448.  
  449. for (new i=1 ; i<count_piss[id] ; i++)
  450. {
  451. iCurrent = FindEntity(-1, "piss_puddle1")
  452. if(iCurrent > 0)
  453. RemoveEntity(iCurrent)
  454. iCurrent = FindEntity(-1, "piss_puddle2")
  455. if(iCurrent > 0)
  456. RemoveEntity(iCurrent)
  457. iCurrent = FindEntity(-1, "piss_puddle3")
  458. if(iCurrent > 0)
  459. RemoveEntity(iCurrent)
  460. iCurrent = FindEntity(-1, "piss_puddle4")
  461. if(iCurrent > 0)
  462. RemoveEntity(iCurrent)
  463. iCurrent = FindEntity(-1, "piss_puddle5")
  464. if(iCurrent > 0)
  465. RemoveEntity(iCurrent)
  466. }
  467. count_piss[id]=1
  468.  
  469. return PLUGIN_CONTINUE
  470. }
  471.  
  472. public piss_help(id)
  473. {
  474. client_print(id, print_chat, "To piss on a dead body you have to bind a key to: piss")
  475. client_print(id, print_chat, "Open your console and write: bind ^"key^" ^"piss^"")
  476. client_print(id, print_chat, "ex: bind ^"x^" ^"piss^"")
  477.  
  478. return PLUGIN_CONTINUE
  479. }
  480.  
  481. public handle_say(id)
  482. {
  483. new said[192]
  484. read_args(said,192)
  485. remove_quotes(said)
  486.  
  487. if( (containi(said, "piss") != -1) && !(containi(said, "/piss") != -1) ) {
  488. client_print(id, print_chat, "[AMX] For Piss help say /piss")
  489. }
  490.  
  491. return PLUGIN_CONTINUE
  492. }
  493.  
  494. public plugin_precache()
  495. {
  496. if (file_exists("sound/piss/pissing.wav"))
  497. precache_sound("piss/pissing.wav")
  498. if (file_exists("models/piss/piss_puddle1.mdl"))
  499. precache_model("models/piss/piss_puddle1.mdl")
  500. if (file_exists("models/piss/piss_puddle2.mdl"))
  501. precache_model("models/piss/piss_puddle2.mdl")
  502. if (file_exists("models/piss/piss_puddle3.mdl"))
  503. precache_model("models/piss/piss_puddle3.mdl")
  504. if (file_exists("models/piss/piss_puddle4.mdl"))
  505. precache_model("models/piss/piss_puddle4.mdl")
  506. if (file_exists("models/piss/piss_puddle5.mdl"))
  507. precache_model("models/piss/piss_puddle5.mdl")
  508. if (file_exists("models/piss/piss.mdl"))
  509. piss_model = precache_model("models/piss/piss.mdl")
  510. piss_sprite = precache_model("sprites/plasma.spr")
  511. water_splash = precache_model("sprites/wsplash3.spr")
  512. }
  513.  
  514. public client_connect(id)
  515. {
  516. PissFlag[id]=false
  517. count_piss[id]=1
  518. }
  519.  
  520. public client_disconnect(id)
  521. {
  522. reset_hud(id)
  523. }
  524.  
  525. public plugin_init()
  526. {
  527. register_plugin("AMX Piss","2.2","KRoTaL")
  528. register_clcmd("piss","piss_on_player",0,"- Piss on a dead player")
  529. register_clcmd("say /piss","piss_help",0,"- Displays piss help")
  530. register_clcmd("say","handle_say")
  531. register_cvar("amx_maxpees","6")
  532. register_cvar("amx_piss_admin","0")
  533. register_cvar("amx_piss_effect","0")
  534. register_event("DeathMsg","death_event","a")
  535. register_event("ResetHUD", "reset_hud", "be")
  536. #if !defined NO_CS_CZ
  537. register_event("CurWeapon","cur_weapon","be","1=1")
  538. get_modname(mod_name,31)
  539. #endif
  540. }
  541.  

_________________
Kép

Ők köszönték meg CrB nek ezt a hozzászólást: paintballer (2013.08.01. 09:49)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Pisilés/Piss ne kelljen megállni!
HozzászólásElküldve: 2013.08.01. 09:49 
Offline
Beavatott

Csatlakozott: 2012.08.19. 11:45
Hozzászólások: 73
Megköszönt másnak: 19 alkalommal
Megköszönték neki: 1 alkalommal
Köszönöm működik! :)
Azt még meg lehetne valahogy oldani, hogy a fegyvert ne tegye el közbe?


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Pisilés/Piss ne kelljen megállni!
HozzászólásElküldve: 2013.08.01. 11:26 
Offline
Őskövület
Avatar

Csatlakozott: 2012.02.27. 09:42
Hozzászólások: 2588
Megköszönt másnak: 25 alkalommal
Megköszönték neki: 418 alkalommal
Próbáld ki minden késes részt töröltem
SMA Forráskód: [ Mindet kijelol ]
  1.  
  2.  
  3. /*
  4.  
  5.   Plugin: Amx Piss
  6.   Version: 2.2
  7.   Author: KRoTaL (Based on TakeADookie by PaintLancer)
  8.  
  9.   Modified by commonbullet to work with amxx, untested.
  10.  
  11.   1.0 Release
  12.   1.1 Better effect
  13.   1.2 Bug fix
  14.   1.3 New effect + piss puddle
  15.   1.4a New effects, only for cs/cz/dod
  16.   1.4b New effects, only for other mods than cs/cz/dod
  17.   1.5 #define NO_CS_CZ added
  18.   1.6 Bug fix (DoD)
  19.   1.7 Bug fix
  20.   1.8 Some checks added
  21.   1.9 #define NO_CS_CZ changed into #define NO_CS_CZ
  22.   2.0 New cvar : amx_piss_effect
  23.   2.1 English & French language support
  24.   2.2 Removed knife model when pissing and added admin immunity
  25.  
  26.   Commands:
  27.  
  28.   To piss on a dead body you have to bind a key to: piss
  29.   Open your console and write: bind "key" "piss"
  30.   ex: bind "x" "piss"
  31.   Then stand still above a dead player, press your key and you'll piss on them !
  32.   You can control the direction of the stream with your mouse.
  33.   You are not able to move or to shoot for 10 seconds when you piss, so beware.
  34.   The puddle of piss will appear where you are aiming at 2 seconds after you start pissing,
  35.   so try to aim at the dead body instead of the sky or a wall <!-- s;) --><img src=\"{SMILIES_PATH}/icon_e_wink.gif\" alt=\";)\" title=\"kacsintás\" /><!-- s;) -->
  36.  
  37.   Players can say "/piss" in the chat to get some help.
  38.  
  39.   Cvars:
  40.  
  41.   amx_maxpees 6 - Maximum number of times a player is allowed to piss per round.
  42.  
  43.   amx_piss_admin 0 - 0 : All the players are allowed to piss
  44.   1 : Only admins with ADMIN_LEVEL_A flag are allowed to piss
  45.  
  46.   amx_piss_effect 0 - 0 : yellow bloodsprite
  47.   1 : yellow laserbeam
  48.  
  49.   Setup:
  50.  
  51.   You need to put these files on your server:
  52.  
  53.   sound/piss/pissing.wav
  54.   models/piss/piss_puddle1.mdl
  55.   models/piss/piss_puddle2.mdl
  56.   models/piss/piss_puddle3.mdl
  57.   models/piss/piss_puddle4.mdl
  58.   models/piss/piss_puddle5.mdl
  59.   models/piss/piss.mdl
  60.   addons/amx/lang/piss.txt
  61.  
  62.   You need to enable Fun and Vexd Utilities Modules for cs/cs-cz.
  63.   You need to enable Vexd Utilities Module for the other mods.
  64.  
  65.   Use amx_piss_cs_cz.amx if you use CS or CS-CZ (player can't move).
  66.   Use amx_piss.amx if you use another mod (dod, tfc, ...), or if you play CS/CS-CZ
  67.   and you want to be able to piss without being stuck.
  68.  
  69.  
  70.   Credits:
  71.  
  72.   Rastin for his trousers fly sounds
  73.   SLayer KL for his piss puddle models
  74.  
  75.   */
  76.  
  77. // UNCOMMENT IF YOU USE ANOTHER MOD THAN CS and CS-CZ,
  78. // OR IF YOU USE CS/CS-CZ AND YOU WANT TO BE ABLE TO PISS ANYWHERE ON THE MAP (NOT JUST NEAR DEAD PLAYERS)
  79. //#define NO_CS_CZ
  80.  
  81.  
  82.  
  83.  
  84. /***************************************************************************************************/
  85.  
  86. #include <amxmodx>
  87. #if !defined NO_CS_CZ
  88. #include <fun>
  89. #endif
  90. #include <Vexd_Utilities>
  91.  
  92.  
  93. new piss_model
  94. new piss_sprite
  95. new water_splash
  96. new count_piss[33]
  97. new count_puddle[33]
  98. new bool:PissFlag[33]
  99. new bool:aim[33]
  100. new Float:aim_origin[33][3]
  101. #if !defined NO_CS_CZ
  102. new player_origins[33][3]
  103. new mod_name[32]
  104. #endif
  105.  
  106. public piss_on_player(id)
  107. {
  108. if (get_cvar_num("amx_maxpees")==0)
  109. return PLUGIN_HANDLED
  110. if (!is_user_alive(id))
  111. return PLUGIN_HANDLED
  112. if ( (get_cvar_num("amx_piss_admin")==1) && !(get_user_flags(id) & ADMIN_LEVEL_A) )
  113. {
  114. console_print(id, "[AMX] Nincs jogosultsagod ehhez a parancshoz.")
  115. return PLUGIN_HANDLED
  116. }
  117. if(PissFlag[id])
  118. return PLUGIN_HANDLED
  119.  
  120. #if !defined NO_CS_CZ
  121. new player_origin[3], players[32], player, inum=0, dist, last_dist=99999, last_id
  122.  
  123. get_user_origin(id,player_origin,0)
  124. get_players(players,inum,"b")
  125. if (inum>0) {
  126. for (new i=0;i<inum;i++) {
  127. player = players[i]
  128. if (player!=id) {
  129. dist = get_distance(player_origin,player_origins[player])
  130. if (dist<last_dist) {
  131. last_id = player
  132. last_dist = dist
  133. }
  134. }
  135. }
  136. if (last_dist<80) {
  137. #endif
  138. if (count_piss[id] > get_cvar_num("amx_maxpees")) {
  139. client_print(id,print_chat, "You can only piss on a player %d time(s) in a round !", get_cvar_num("amx_maxpees"))
  140. return PLUGIN_CONTINUE
  141. }
  142. new player_name[32]
  143. get_user_name(id, player_name, 31)
  144. #if !defined NO_CS_CZ
  145. if(get_user_flags(last_id) & ADMIN_IMMUNITY)
  146. {
  147. client_print(id,print_chat, "Ot nem lehet lepisilni !")
  148. return PLUGIN_HANDLED
  149. }
  150. new dead_name[32]
  151. get_user_name(last_id, dead_name, 31)
  152. client_print(0,print_chat, "%s lepisilte %s -t !! HaHaHaHa !!", player_name, dead_name)
  153. #else
  154. client_print(0,print_chat, "%s pisil !!" , player_name)
  155. #endif
  156. count_piss[id]+=1
  157. count_puddle[id]=1
  158. new ids[1]
  159. ids[0]=id
  160. PissFlag[id]=true
  161. aim[id]=false
  162. #if !defined NO_CS_CZ
  163. if( (equali(mod_name,"cstrike")) || (equali(mod_name,"czero")) )
  164. {
  165.  
  166. entity_set_string(id, EV_SZ_viewmodel, "")
  167. entity_set_string(id, EV_SZ_weaponmodel, "")
  168.  
  169. }
  170. #endif
  171. emit_sound(id,CHAN_VOICE,"piss/pissing.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  172. switch(get_cvar_num("amx_piss_effect"))
  173. {
  174. case 0: set_task(0.2,"make_pee",1481+id,ids,1,"a",48)
  175. case 1: set_task(0.1,"make_pee",1481+id,ids,1,"a",102)
  176. default: set_task(0.2,"make_pee",1481+id,ids,1,"a",48)
  177. }
  178. set_task(2.2,"place_puddle",3424+id,ids,1,"a",4)
  179. #if !defined NO_CS_CZ
  180. set_task(12.0,"weapons_back",6794+id,ids,1)
  181. }
  182. else
  183. {
  184. client_print(id,print_chat, "There are no dead bodies around you.")
  185. return PLUGIN_HANDLED
  186. }
  187. }
  188. #endif
  189. return PLUGIN_HANDLED
  190. }
  191.  
  192. public sqrt(num)
  193. {
  194. new div = num
  195. new result = 1
  196. while (div > result) {
  197. div = (div + result) / 2
  198. result = num / div
  199. }
  200. return div
  201. }
  202.  
  203. public make_pee(ids[])
  204. {
  205. new id=ids[0]
  206. new vec[3]
  207. new aimvec[3]
  208. new velocityvec[3]
  209. new length
  210. get_user_origin(id,vec)
  211. get_user_origin(id,aimvec,3)
  212. new distance = get_distance(vec,aimvec)
  213. new speed = floatround(distance*1.9)
  214.  
  215. velocityvec[0]=aimvec[0]-vec[0]
  216. velocityvec[1]=aimvec[1]-vec[1]
  217. velocityvec[2]=aimvec[2]-vec[2]
  218.  
  219. length=sqrt(velocityvec[0]*velocityvec[0]+velocityvec[1]*velocityvec[1]+velocityvec[2]*velocityvec[2])
  220.  
  221. velocityvec[0]=velocityvec[0]*speed/length
  222. velocityvec[1]=velocityvec[1]*speed/length
  223. velocityvec[2]=velocityvec[2]*speed/length
  224.  
  225. switch(get_cvar_num("amx_piss_effect"))
  226. {
  227. case 0:
  228. {
  229. message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
  230. write_byte(101)
  231. write_coord(vec[0])
  232. write_coord(vec[1])
  233. write_coord(vec[2])
  234. write_coord(velocityvec[0])
  235. write_coord(velocityvec[1])
  236. write_coord(velocityvec[2])
  237. write_byte(102) // color
  238. write_byte(160) // speed
  239. message_end()
  240. }
  241. case 1:
  242. {
  243. message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
  244. write_byte(106)
  245. write_coord(vec[0])
  246. write_coord(vec[1])
  247. write_coord(vec[2])
  248. write_coord(velocityvec[0])
  249. write_coord(velocityvec[1])
  250. write_coord(velocityvec[2]+100)
  251. write_angle (0)
  252. write_short (piss_model)
  253. write_byte (0)
  254. write_byte (255)
  255. message_end()
  256.  
  257. message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
  258. write_byte (1)
  259. write_short (id)
  260. write_coord(aimvec[0])
  261. write_coord(aimvec[1])
  262. write_coord(aimvec[2])
  263. write_short(piss_sprite)
  264. write_byte( 1 ) // framestart
  265. write_byte( 6 ) // framerate
  266. write_byte( 1 ) // life
  267. write_byte( 8 ) // width
  268. write_byte( 0 ) // noise
  269. write_byte( 255 ) // r, g, b
  270. write_byte( 255 ) // r, g, b
  271. write_byte( 0 ) // r, g, b
  272. write_byte( 200 ) // brightness
  273. write_byte( 10 ) // speed
  274. message_end()
  275.  
  276. message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
  277. write_byte(17)
  278. write_coord(aimvec[0])
  279. write_coord(aimvec[1])
  280. write_coord(aimvec[2])
  281. write_short(water_splash)
  282. write_byte(16)
  283. write_byte(18)
  284. message_end()
  285.  
  286. }
  287. default:
  288. {
  289. message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
  290. write_byte(101)
  291. write_coord(vec[0])
  292. write_coord(vec[1])
  293. write_coord(vec[2])
  294. write_coord(velocityvec[0])
  295. write_coord(velocityvec[1])
  296. write_coord(velocityvec[2])
  297. write_byte(102) // color
  298. write_byte(160) // speed
  299. message_end()
  300. }
  301. }
  302. }
  303.  
  304. public place_puddle(ids[])
  305. {
  306. new id=ids[0]
  307. if(!aim[id])
  308. {
  309. new origin[3]
  310. get_user_origin(id,origin,3)
  311. aim_origin[id][0]=float(origin[0])
  312. aim_origin[id][1]=float(origin[1])
  313. aim_origin[id][2]=float(origin[2])
  314. }
  315.  
  316. new puddle_entity
  317. puddle_entity = CreateEntity("info_target")
  318.  
  319. if(puddle_entity == 0) {
  320. return PLUGIN_HANDLED_MAIN
  321. }
  322.  
  323. new Float:MinBox[3]
  324. new Float:MaxBox[3]
  325.  
  326. MinBox[0] = -1.0
  327. MinBox[1] = -1.0
  328. MinBox[2] = -1.0
  329. MaxBox[0] = 1.0
  330. MaxBox[1] = 1.0
  331. MaxBox[2] = 1.0
  332.  
  333. Entvars_Set_Vector(puddle_entity, EV_VEC_mins, MinBox)
  334. Entvars_Set_Vector(puddle_entity, EV_VEC_maxs, MaxBox)
  335.  
  336. switch(count_puddle[id])
  337. {
  338. case 1:
  339. {
  340. Entvars_Set_String(puddle_entity, EV_SZ_classname, "piss_puddle1")
  341. ENT_SetModel(puddle_entity, "models/piss/piss_puddle1.mdl")
  342. }
  343. case 2:
  344. {
  345. Entvars_Set_String(puddle_entity, EV_SZ_classname, "piss_puddle2")
  346. ENT_SetModel(puddle_entity, "models/piss/piss_puddle2.mdl")
  347. }
  348. case 3:
  349. {
  350. Entvars_Set_String(puddle_entity, EV_SZ_classname, "piss_puddle3")
  351. ENT_SetModel(puddle_entity, "models/piss/piss_puddle3.mdl")
  352. }
  353. case 4:
  354. {
  355. Entvars_Set_String(puddle_entity, EV_SZ_classname, "piss_puddle4")
  356. ENT_SetModel(puddle_entity, "models/piss/piss_puddle4.mdl")
  357. }
  358. case 5:
  359. {
  360. Entvars_Set_String(puddle_entity, EV_SZ_classname, "piss_puddle5")
  361. ENT_SetModel(puddle_entity, "models/piss/piss_puddle5.mdl")
  362. #if defined NO_CS_CZ
  363. PissFlag[id]=false
  364. #endif
  365. }
  366. default: {}
  367. }
  368.  
  369. ENT_SetOrigin(puddle_entity, aim_origin[id])
  370. Entvars_Set_Int(puddle_entity, EV_INT_solid, 3)
  371. Entvars_Set_Int(puddle_entity, EV_INT_movetype, 6)
  372. Entvars_Set_Edict(puddle_entity, EV_ENT_owner, id)
  373.  
  374. count_puddle[id]+=1
  375. aim[id]=true
  376.  
  377. return PLUGIN_CONTINUE
  378. }
  379.  
  380. public death_event()
  381. {
  382. new victim = read_data(2)
  383. #if !defined NO_CS_CZ
  384. get_user_origin(victim,player_origins[victim],0)
  385. #endif
  386.  
  387. if(PissFlag[victim])
  388. reset_piss(victim)
  389.  
  390. return PLUGIN_CONTINUE
  391. }
  392.  
  393. #if !defined NO_CS_CZ
  394. public weapons_back(ids[])
  395. {
  396. PissFlag[ids[0]]=false
  397. if( (equali(mod_name,"cstrike")) || (equali(mod_name,"czero")) )
  398. {
  399. set_user_maxspeed(ids[0], 250.0)
  400. }
  401. }
  402.  
  403. public cur_weapon(id)
  404. {
  405. if(PissFlag[id])
  406. {
  407. if( (equali(mod_name,"cstrike")) || (equali(mod_name,"czero")) )
  408. {
  409. entity_set_string(id, EV_SZ_viewmodel, "")
  410. entity_set_string(id, EV_SZ_weaponmodel, "")
  411. }
  412. }
  413.  
  414. return PLUGIN_CONTINUE
  415. }
  416. #endif
  417.  
  418. public reset_piss(id)
  419. {
  420. if(task_exists(1481+id))
  421. remove_task(1481+id)
  422. if(task_exists(3424+id))
  423. remove_task(3424+id)
  424. #if !defined NO_CS_CZ
  425. if(task_exists(6794+id))
  426. remove_task(6794+id)
  427. #endif
  428. emit_sound(id,CHAN_VOICE,"piss/pissing.wav", 0.0, ATTN_NORM, 0, PITCH_NORM)
  429. PissFlag[id]=false
  430.  
  431. return PLUGIN_CONTINUE
  432. }
  433.  
  434. public reset_hud(id)
  435. {
  436. if(task_exists(1481+id))
  437. remove_task(1481+id)
  438. if(task_exists(3424+id))
  439. remove_task(3424+id)
  440. #if !defined NO_CS_CZ
  441. if(task_exists(6794+id))
  442. remove_task(6794+id)
  443. #endif
  444. emit_sound(id,CHAN_VOICE,"piss/pissing.wav", 0.0, ATTN_NORM, 0, PITCH_NORM)
  445. PissFlag[id]=false
  446.  
  447. new iCurrent
  448.  
  449. for (new i=1 ; i<count_piss[id] ; i++)
  450. {
  451. iCurrent = FindEntity(-1, "piss_puddle1")
  452. if(iCurrent > 0)
  453. RemoveEntity(iCurrent)
  454. iCurrent = FindEntity(-1, "piss_puddle2")
  455. if(iCurrent > 0)
  456. RemoveEntity(iCurrent)
  457. iCurrent = FindEntity(-1, "piss_puddle3")
  458. if(iCurrent > 0)
  459. RemoveEntity(iCurrent)
  460. iCurrent = FindEntity(-1, "piss_puddle4")
  461. if(iCurrent > 0)
  462. RemoveEntity(iCurrent)
  463. iCurrent = FindEntity(-1, "piss_puddle5")
  464. if(iCurrent > 0)
  465. RemoveEntity(iCurrent)
  466. }
  467. count_piss[id]=1
  468.  
  469. return PLUGIN_CONTINUE
  470. }
  471.  
  472. public piss_help(id)
  473. {
  474. client_print(id, print_chat, "To piss on a dead body you have to bind a key to: piss")
  475. client_print(id, print_chat, "Open your console and write: bind ^"key^" ^"piss^"")
  476. client_print(id, print_chat, "ex: bind ^"x^" ^"piss^"")
  477.  
  478. return PLUGIN_CONTINUE
  479. }
  480.  
  481. public handle_say(id)
  482. {
  483. new said[192]
  484. read_args(said,192)
  485. remove_quotes(said)
  486.  
  487. if( (containi(said, "piss") != -1) && !(containi(said, "/piss") != -1) ) {
  488. client_print(id, print_chat, "[AMX] For Piss help say /piss")
  489. }
  490.  
  491. return PLUGIN_CONTINUE
  492. }
  493.  
  494. public plugin_precache()
  495. {
  496. if (file_exists("sound/piss/pissing.wav"))
  497. precache_sound("piss/pissing.wav")
  498. if (file_exists("models/piss/piss_puddle1.mdl"))
  499. precache_model("models/piss/piss_puddle1.mdl")
  500. if (file_exists("models/piss/piss_puddle2.mdl"))
  501. precache_model("models/piss/piss_puddle2.mdl")
  502. if (file_exists("models/piss/piss_puddle3.mdl"))
  503. precache_model("models/piss/piss_puddle3.mdl")
  504. if (file_exists("models/piss/piss_puddle4.mdl"))
  505. precache_model("models/piss/piss_puddle4.mdl")
  506. if (file_exists("models/piss/piss_puddle5.mdl"))
  507. precache_model("models/piss/piss_puddle5.mdl")
  508. if (file_exists("models/piss/piss.mdl"))
  509. piss_model = precache_model("models/piss/piss.mdl")
  510. piss_sprite = precache_model("sprites/plasma.spr")
  511. water_splash = precache_model("sprites/wsplash3.spr")
  512. }
  513.  
  514. public client_connect(id)
  515. {
  516. PissFlag[id]=false
  517. count_piss[id]=1
  518. }
  519.  
  520. public client_disconnect(id)
  521. {
  522. reset_hud(id)
  523. }
  524.  
  525. public plugin_init()
  526. {
  527. register_plugin("AMX Piss","2.2","KRoTaL")
  528. register_clcmd("piss","piss_on_player",0,"- Piss on a dead player")
  529. register_clcmd("say /piss","piss_help",0,"- Displays piss help")
  530. register_clcmd("say","handle_say")
  531. register_cvar("amx_maxpees","6")
  532. register_cvar("amx_piss_admin","0")
  533. register_cvar("amx_piss_effect","0")
  534. register_event("DeathMsg","death_event","a")
  535. register_event("ResetHUD", "reset_hud", "be")
  536. #if !defined NO_CS_CZ
  537. register_event("CurWeapon","cur_weapon","be","1=1")
  538. get_modname(mod_name,31)
  539. #endif
  540. }
  541.  
  542.  

_________________
Kép

Ők köszönték meg CrB nek ezt a hozzászólást: paintballer (2013.08.01. 11:37)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Pisilés/Piss ne kelljen megállni!
HozzászólásElküldve: 2013.08.01. 11:47 
Offline
Beavatott

Csatlakozott: 2012.08.19. 11:45
Hozzászólások: 73
Megköszönt másnak: 19 alkalommal
Megköszönték neki: 1 alkalommal
thx


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Pisilés/Piss ne kelljen megállni!
HozzászólásElküldve: 2013.08.01. 12:26 
Offline
Beavatott

Csatlakozott: 2012.08.19. 11:45
Hozzászólások: 73
Megköszönt másnak: 19 alkalommal
Megköszönték neki: 1 alkalommal
Ezzel még mindig elteszi a fegyvert pisilés közbe :(


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Pisilés/Piss ne kelljen megállni!
HozzászólásElküldve: 2013.08.01. 12:55 
Offline
Őskövület
Avatar

Csatlakozott: 2012.02.27. 09:42
Hozzászólások: 2588
Megköszönt másnak: 25 alkalommal
Megköszönték neki: 418 alkalommal
Próbáld akkor így ha így se jó akk nemtudom
SMA Forráskód: [ Mindet kijelol ]
  1.  
  2.  
  3.  
  4. /*
  5.  
  6.   Plugin: Amx Piss
  7.   Version: 2.2
  8.   Author: KRoTaL (Based on TakeADookie by PaintLancer)
  9.  
  10.   Modified by commonbullet to work with amxx, untested.
  11.  
  12.   1.0 Release
  13.   1.1 Better effect
  14.   1.2 Bug fix
  15.   1.3 New effect + piss puddle
  16.   1.4a New effects, only for cs/cz/dod
  17.   1.4b New effects, only for other mods than cs/cz/dod
  18.   1.5 #define NO_CS_CZ added
  19.   1.6 Bug fix (DoD)
  20.   1.7 Bug fix
  21.   1.8 Some checks added
  22.   1.9 #define NO_CS_CZ changed into #define NO_CS_CZ
  23.   2.0 New cvar : amx_piss_effect
  24.   2.1 English & French language support
  25.   2.2 Removed knife model when pissing and added admin immunity
  26.  
  27.   Commands:
  28.  
  29.   To piss on a dead body you have to bind a key to: piss
  30.   Open your console and write: bind "key" "piss"
  31.   ex: bind "x" "piss"
  32.   Then stand still above a dead player, press your key and you'll piss on them !
  33.   You can control the direction of the stream with your mouse.
  34.   You are not able to move or to shoot for 10 seconds when you piss, so beware.
  35.   The puddle of piss will appear where you are aiming at 2 seconds after you start pissing,
  36.   so try to aim at the dead body instead of the sky or a wall <!-- s;) --><img src=\"{SMILIES_PATH}/icon_e_wink.gif\" alt=\";)\" title=\"kacsintás\" /><!-- s;) -->
  37.  
  38.   Players can say "/piss" in the chat to get some help.
  39.  
  40.   Cvars:
  41.  
  42.   amx_maxpees 6 - Maximum number of times a player is allowed to piss per round.
  43.  
  44.   amx_piss_admin 0 - 0 : All the players are allowed to piss
  45.   1 : Only admins with ADMIN_LEVEL_A flag are allowed to piss
  46.  
  47.   amx_piss_effect 0 - 0 : yellow bloodsprite
  48.   1 : yellow laserbeam
  49.  
  50.   Setup:
  51.  
  52.   You need to put these files on your server:
  53.  
  54.   sound/piss/pissing.wav
  55.   models/piss/piss_puddle1.mdl
  56.   models/piss/piss_puddle2.mdl
  57.   models/piss/piss_puddle3.mdl
  58.   models/piss/piss_puddle4.mdl
  59.   models/piss/piss_puddle5.mdl
  60.   models/piss/piss.mdl
  61.   addons/amx/lang/piss.txt
  62.  
  63.   You need to enable Fun and Vexd Utilities Modules for cs/cs-cz.
  64.   You need to enable Vexd Utilities Module for the other mods.
  65.  
  66.   Use amx_piss_cs_cz.amx if you use CS or CS-CZ (player can't move).
  67.   Use amx_piss.amx if you use another mod (dod, tfc, ...), or if you play CS/CS-CZ
  68.   and you want to be able to piss without being stuck.
  69.  
  70.  
  71.   Credits:
  72.  
  73.   Rastin for his trousers fly sounds
  74.   SLayer KL for his piss puddle models
  75.  
  76.   */
  77.  
  78. // UNCOMMENT IF YOU USE ANOTHER MOD THAN CS and CS-CZ,
  79. // OR IF YOU USE CS/CS-CZ AND YOU WANT TO BE ABLE TO PISS ANYWHERE ON THE MAP (NOT JUST NEAR DEAD PLAYERS)
  80. //#define NO_CS_CZ
  81.  
  82.  
  83.  
  84.  
  85. /***************************************************************************************************/
  86.  
  87. #include <amxmodx>
  88. #if !defined NO_CS_CZ
  89. #include <fun>
  90. #endif
  91. #include <Vexd_Utilities>
  92.  
  93.  
  94. new piss_model
  95. new piss_sprite
  96. new water_splash
  97. new count_piss[33]
  98. new count_puddle[33]
  99. new bool:PissFlag[33]
  100. new bool:aim[33]
  101. new Float:aim_origin[33][3]
  102. #if !defined NO_CS_CZ
  103. new player_origins[33][3]
  104. new mod_name[32]
  105. #endif
  106.  
  107. public piss_on_player(id)
  108. {
  109. if (get_cvar_num("amx_maxpees")==0)
  110. return PLUGIN_HANDLED
  111. if (!is_user_alive(id))
  112. return PLUGIN_HANDLED
  113. if ( (get_cvar_num("amx_piss_admin")==1) && !(get_user_flags(id) & ADMIN_LEVEL_A) )
  114. {
  115. console_print(id, "[AMX] Nincs jogosultsagod ehhez a parancshoz.")
  116. return PLUGIN_HANDLED
  117. }
  118. if(PissFlag[id])
  119. return PLUGIN_HANDLED
  120.  
  121. #if !defined NO_CS_CZ
  122. new player_origin[3], players[32], player, inum=0, dist, last_dist=99999, last_id
  123.  
  124. get_user_origin(id,player_origin,0)
  125. get_players(players,inum,"b")
  126. if (inum>0) {
  127. for (new i=0;i<inum;i++) {
  128. player = players[i]
  129. if (player!=id) {
  130. dist = get_distance(player_origin,player_origins[player])
  131. if (dist<last_dist) {
  132. last_id = player
  133. last_dist = dist
  134. }
  135. }
  136. }
  137. if (last_dist<80) {
  138. #endif
  139. if (count_piss[id] > get_cvar_num("amx_maxpees")) {
  140. client_print(id,print_chat, "You can only piss on a player %d time(s) in a round !", get_cvar_num("amx_maxpees"))
  141. return PLUGIN_CONTINUE
  142. }
  143. new player_name[32]
  144. get_user_name(id, player_name, 31)
  145. #if !defined NO_CS_CZ
  146. if(get_user_flags(last_id) & ADMIN_IMMUNITY)
  147. {
  148. client_print(id,print_chat, "Ot nem lehet lepisilni !")
  149. return PLUGIN_HANDLED
  150. }
  151. new dead_name[32]
  152. get_user_name(last_id, dead_name, 31)
  153. client_print(0,print_chat, "%s lepisilte %s -t !! HaHaHaHa !!", player_name, dead_name)
  154. #else
  155. client_print(0,print_chat, "%s pisil !!" , player_name)
  156. #endif
  157. count_piss[id]+=1
  158. count_puddle[id]=1
  159. new ids[1]
  160. ids[0]=id
  161. PissFlag[id]=true
  162. aim[id]=false
  163. emit_sound(id,CHAN_VOICE,"piss/pissing.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  164. switch(get_cvar_num("amx_piss_effect"))
  165. {
  166. case 0: set_task(0.2,"make_pee",1481+id,ids,1,"a",48)
  167. case 1: set_task(0.1,"make_pee",1481+id,ids,1,"a",102)
  168. default: set_task(0.2,"make_pee",1481+id,ids,1,"a",48)
  169. }
  170. set_task(2.2,"place_puddle",3424+id,ids,1,"a",4)
  171. #if !defined NO_CS_CZ
  172. set_task(12.0,"weapons_back",6794+id,ids,1)
  173. }
  174. else
  175. {
  176. client_print(id,print_chat, "There are no dead bodies around you.")
  177. return PLUGIN_HANDLED
  178. }
  179. }
  180. #endif
  181. return PLUGIN_HANDLED
  182. }
  183.  
  184. public sqrt(num)
  185. {
  186. new div = num
  187. new result = 1
  188. while (div > result) {
  189. div = (div + result) / 2
  190. result = num / div
  191. }
  192. return div
  193. }
  194.  
  195. public make_pee(ids[])
  196. {
  197. new id=ids[0]
  198. new vec[3]
  199. new aimvec[3]
  200. new velocityvec[3]
  201. new length
  202. get_user_origin(id,vec)
  203. get_user_origin(id,aimvec,3)
  204. new distance = get_distance(vec,aimvec)
  205. new speed = floatround(distance*1.9)
  206.  
  207. velocityvec[0]=aimvec[0]-vec[0]
  208. velocityvec[1]=aimvec[1]-vec[1]
  209. velocityvec[2]=aimvec[2]-vec[2]
  210.  
  211. length=sqrt(velocityvec[0]*velocityvec[0]+velocityvec[1]*velocityvec[1]+velocityvec[2]*velocityvec[2])
  212.  
  213. velocityvec[0]=velocityvec[0]*speed/length
  214. velocityvec[1]=velocityvec[1]*speed/length
  215. velocityvec[2]=velocityvec[2]*speed/length
  216.  
  217. switch(get_cvar_num("amx_piss_effect"))
  218. {
  219. case 0:
  220. {
  221. message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
  222. write_byte(101)
  223. write_coord(vec[0])
  224. write_coord(vec[1])
  225. write_coord(vec[2])
  226. write_coord(velocityvec[0])
  227. write_coord(velocityvec[1])
  228. write_coord(velocityvec[2])
  229. write_byte(102) // color
  230. write_byte(160) // speed
  231. message_end()
  232. }
  233. case 1:
  234. {
  235. message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
  236. write_byte(106)
  237. write_coord(vec[0])
  238. write_coord(vec[1])
  239. write_coord(vec[2])
  240. write_coord(velocityvec[0])
  241. write_coord(velocityvec[1])
  242. write_coord(velocityvec[2]+100)
  243. write_angle (0)
  244. write_short (piss_model)
  245. write_byte (0)
  246. write_byte (255)
  247. message_end()
  248.  
  249. message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
  250. write_byte (1)
  251. write_short (id)
  252. write_coord(aimvec[0])
  253. write_coord(aimvec[1])
  254. write_coord(aimvec[2])
  255. write_short(piss_sprite)
  256. write_byte( 1 ) // framestart
  257. write_byte( 6 ) // framerate
  258. write_byte( 1 ) // life
  259. write_byte( 8 ) // width
  260. write_byte( 0 ) // noise
  261. write_byte( 255 ) // r, g, b
  262. write_byte( 255 ) // r, g, b
  263. write_byte( 0 ) // r, g, b
  264. write_byte( 200 ) // brightness
  265. write_byte( 10 ) // speed
  266. message_end()
  267.  
  268. message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
  269. write_byte(17)
  270. write_coord(aimvec[0])
  271. write_coord(aimvec[1])
  272. write_coord(aimvec[2])
  273. write_short(water_splash)
  274. write_byte(16)
  275. write_byte(18)
  276. message_end()
  277.  
  278. }
  279. default:
  280. {
  281. message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
  282. write_byte(101)
  283. write_coord(vec[0])
  284. write_coord(vec[1])
  285. write_coord(vec[2])
  286. write_coord(velocityvec[0])
  287. write_coord(velocityvec[1])
  288. write_coord(velocityvec[2])
  289. write_byte(102) // color
  290. write_byte(160) // speed
  291. message_end()
  292. }
  293. }
  294. }
  295.  
  296. public place_puddle(ids[])
  297. {
  298. new id=ids[0]
  299. if(!aim[id])
  300. {
  301. new origin[3]
  302. get_user_origin(id,origin,3)
  303. aim_origin[id][0]=float(origin[0])
  304. aim_origin[id][1]=float(origin[1])
  305. aim_origin[id][2]=float(origin[2])
  306. }
  307.  
  308. new puddle_entity
  309. puddle_entity = CreateEntity("info_target")
  310.  
  311. if(puddle_entity == 0) {
  312. return PLUGIN_HANDLED_MAIN
  313. }
  314.  
  315. new Float:MinBox[3]
  316. new Float:MaxBox[3]
  317.  
  318. MinBox[0] = -1.0
  319. MinBox[1] = -1.0
  320. MinBox[2] = -1.0
  321. MaxBox[0] = 1.0
  322. MaxBox[1] = 1.0
  323. MaxBox[2] = 1.0
  324.  
  325. Entvars_Set_Vector(puddle_entity, EV_VEC_mins, MinBox)
  326. Entvars_Set_Vector(puddle_entity, EV_VEC_maxs, MaxBox)
  327.  
  328. switch(count_puddle[id])
  329. {
  330. case 1:
  331. {
  332. Entvars_Set_String(puddle_entity, EV_SZ_classname, "piss_puddle1")
  333. ENT_SetModel(puddle_entity, "models/piss/piss_puddle1.mdl")
  334. }
  335. case 2:
  336. {
  337. Entvars_Set_String(puddle_entity, EV_SZ_classname, "piss_puddle2")
  338. ENT_SetModel(puddle_entity, "models/piss/piss_puddle2.mdl")
  339. }
  340. case 3:
  341. {
  342. Entvars_Set_String(puddle_entity, EV_SZ_classname, "piss_puddle3")
  343. ENT_SetModel(puddle_entity, "models/piss/piss_puddle3.mdl")
  344. }
  345. case 4:
  346. {
  347. Entvars_Set_String(puddle_entity, EV_SZ_classname, "piss_puddle4")
  348. ENT_SetModel(puddle_entity, "models/piss/piss_puddle4.mdl")
  349. }
  350. case 5:
  351. {
  352. Entvars_Set_String(puddle_entity, EV_SZ_classname, "piss_puddle5")
  353. ENT_SetModel(puddle_entity, "models/piss/piss_puddle5.mdl")
  354. #if defined NO_CS_CZ
  355. PissFlag[id]=false
  356. #endif
  357. }
  358. default: {}
  359. }
  360.  
  361. ENT_SetOrigin(puddle_entity, aim_origin[id])
  362. Entvars_Set_Int(puddle_entity, EV_INT_solid, 3)
  363. Entvars_Set_Int(puddle_entity, EV_INT_movetype, 6)
  364. Entvars_Set_Edict(puddle_entity, EV_ENT_owner, id)
  365.  
  366. count_puddle[id]+=1
  367. aim[id]=true
  368.  
  369. return PLUGIN_CONTINUE
  370. }
  371.  
  372. public death_event()
  373. {
  374. new victim = read_data(2)
  375. #if !defined NO_CS_CZ
  376. get_user_origin(victim,player_origins[victim],0)
  377. #endif
  378.  
  379. if(PissFlag[victim])
  380. reset_piss(victim)
  381.  
  382. return PLUGIN_CONTINUE
  383. }
  384.  
  385. #if !defined NO_CS_CZ
  386. public weapons_back(ids[])
  387. {
  388. PissFlag[ids[0]]=false
  389. if( (equali(mod_name,"cstrike")) || (equali(mod_name,"czero")) )
  390. {
  391. set_user_maxspeed(ids[0], 250.0)
  392. }
  393. }
  394. #endif
  395.  
  396. public reset_piss(id)
  397. {
  398. if(task_exists(1481+id))
  399. remove_task(1481+id)
  400. if(task_exists(3424+id))
  401. remove_task(3424+id)
  402. #if !defined NO_CS_CZ
  403. if(task_exists(6794+id))
  404. remove_task(6794+id)
  405. #endif
  406. emit_sound(id,CHAN_VOICE,"piss/pissing.wav", 0.0, ATTN_NORM, 0, PITCH_NORM)
  407. PissFlag[id]=false
  408.  
  409. return PLUGIN_CONTINUE
  410. }
  411.  
  412. public reset_hud(id)
  413. {
  414. if(task_exists(1481+id))
  415. remove_task(1481+id)
  416. if(task_exists(3424+id))
  417. remove_task(3424+id)
  418. #if !defined NO_CS_CZ
  419. if(task_exists(6794+id))
  420. remove_task(6794+id)
  421. #endif
  422. emit_sound(id,CHAN_VOICE,"piss/pissing.wav", 0.0, ATTN_NORM, 0, PITCH_NORM)
  423. PissFlag[id]=false
  424.  
  425. new iCurrent
  426.  
  427. for (new i=1 ; i<count_piss[id] ; i++)
  428. {
  429. iCurrent = FindEntity(-1, "piss_puddle1")
  430. if(iCurrent > 0)
  431. RemoveEntity(iCurrent)
  432. iCurrent = FindEntity(-1, "piss_puddle2")
  433. if(iCurrent > 0)
  434. RemoveEntity(iCurrent)
  435. iCurrent = FindEntity(-1, "piss_puddle3")
  436. if(iCurrent > 0)
  437. RemoveEntity(iCurrent)
  438. iCurrent = FindEntity(-1, "piss_puddle4")
  439. if(iCurrent > 0)
  440. RemoveEntity(iCurrent)
  441. iCurrent = FindEntity(-1, "piss_puddle5")
  442. if(iCurrent > 0)
  443. RemoveEntity(iCurrent)
  444. }
  445. count_piss[id]=1
  446.  
  447. return PLUGIN_CONTINUE
  448. }
  449.  
  450. public piss_help(id)
  451. {
  452. client_print(id, print_chat, "To piss on a dead body you have to bind a key to: piss")
  453. client_print(id, print_chat, "Open your console and write: bind ^"key^" ^"piss^"")
  454. client_print(id, print_chat, "ex: bind ^"x^" ^"piss^"")
  455.  
  456. return PLUGIN_CONTINUE
  457. }
  458.  
  459. public handle_say(id)
  460. {
  461. new said[192]
  462. read_args(said,192)
  463. remove_quotes(said)
  464.  
  465. if( (containi(said, "piss") != -1) && !(containi(said, "/piss") != -1) ) {
  466. client_print(id, print_chat, "[AMX] For Piss help say /piss")
  467. }
  468.  
  469. return PLUGIN_CONTINUE
  470. }
  471.  
  472. public plugin_precache()
  473. {
  474. if (file_exists("sound/piss/pissing.wav"))
  475. precache_sound("piss/pissing.wav")
  476. if (file_exists("models/piss/piss_puddle1.mdl"))
  477. precache_model("models/piss/piss_puddle1.mdl")
  478. if (file_exists("models/piss/piss_puddle2.mdl"))
  479. precache_model("models/piss/piss_puddle2.mdl")
  480. if (file_exists("models/piss/piss_puddle3.mdl"))
  481. precache_model("models/piss/piss_puddle3.mdl")
  482. if (file_exists("models/piss/piss_puddle4.mdl"))
  483. precache_model("models/piss/piss_puddle4.mdl")
  484. if (file_exists("models/piss/piss_puddle5.mdl"))
  485. precache_model("models/piss/piss_puddle5.mdl")
  486. if (file_exists("models/piss/piss.mdl"))
  487. piss_model = precache_model("models/piss/piss.mdl")
  488. piss_sprite = precache_model("sprites/plasma.spr")
  489. water_splash = precache_model("sprites/wsplash3.spr")
  490. }
  491.  
  492. public client_connect(id)
  493. {
  494. PissFlag[id]=false
  495. count_piss[id]=1
  496. }
  497.  
  498. public client_disconnect(id)
  499. {
  500. reset_hud(id)
  501. }
  502.  
  503. public plugin_init()
  504. {
  505. register_plugin("AMX Piss","2.2","KRoTaL")
  506. register_clcmd("piss","piss_on_player",0,"- Piss on a dead player")
  507. register_clcmd("say /piss","piss_help",0,"- Displays piss help")
  508. register_clcmd("say","handle_say")
  509. register_cvar("amx_maxpees","6")
  510. register_cvar("amx_piss_admin","0")
  511. register_cvar("amx_piss_effect","0")
  512. register_event("DeathMsg","death_event","a")
  513. register_event("ResetHUD", "reset_hud", "be")
  514. #if !defined NO_CS_CZ
  515. get_modname(mod_name,31)
  516. #endif
  517. }
  518.  
  519.  
  520.  

_________________
Kép

Ők köszönték meg CrB nek ezt a hozzászólást: paintballer (2013.08.01. 13:36)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Pisilés/Piss ne kelljen megállni!
HozzászólásElküldve: 2013.08.01. 13:36 
Offline
Beavatott

Csatlakozott: 2012.08.19. 11:45
Hozzászólások: 73
Megköszönt másnak: 19 alkalommal
Megköszönték neki: 1 alkalommal
Most jó köszi :)


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 8 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 29 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole