hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2025.08.13. 18:29



Jelenlévő felhasználók

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

A legtöbb felhasználó (2883 fő) 2025.07.30. 16:00-kor tartózkodott itt.

Regisztrált felhasználók: Bing [Bot]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  [13 hozzászólás ]  Oldal12Következő
Szerző Üzenet
 Hozzászólás témája: pisilés plugin
HozzászólásElküldve:2012.06.07. 11:22 
Offline
Őstag
Avatar

Csatlakozott:2010.04.16. 16:50
Hozzászólások:1342
Megköszönt másnak: 42 alkalommal
Megköszönték neki: 58 alkalommal
Na most nekem van a pisilés plugin de nekem úgy van, hogy nem kötelezett a megálás és lehet lőni pisilés közben és menni tovább ugyan úgy !
De az a baj vele, hogy ha sokan pisilnek egy körben akkor a sok pisilési model-től belagol a szerver és volt már rá példa, hogy ki is fagyott.
Ezt, hogy lehetne megoldani, hogy jó legyen??
Kód:
  1. #include <amxmodx>

  2. #if !defined NO_CS_CZ

  3. #include <fun>

  4. #endif

  5. #include <Vexd_Utilities>

  6.  

  7.  

  8. new piss_model

  9. new piss_sprite

  10. new water_splash

  11. new count_piss[33]

  12. new count_puddle[33]

  13. new bool:PissFlag[33]

  14. new bool:aim[33]

  15. new Float:aim_origin[33][3]

  16. #if !defined NO_CS_CZ

  17.    new player_origins[33][3]

  18.    new mod_name[32]

  19. #endif

  20.  

  21. public piss_on_player(id)

  22. {

  23.    if (get_cvar_num("amx_maxpees")==0)

  24.       return PLUGIN_HANDLED

  25.    if (!is_user_alive(id))

  26.       return PLUGIN_HANDLED

  27.    if ( (get_cvar_num("amx_piss_admin")==1) && !(get_user_flags(id) & ADMIN_LEVEL_A) )

  28.    {

  29.       console_print(id, "[AMX] Nincs jogosultsagod ehhez a parancshoz.")

  30.       return PLUGIN_HANDLED

  31.    }

  32.    if(PissFlag[id])

  33.       return PLUGIN_HANDLED

  34.  

  35. #if !defined NO_CS_CZ

  36.    new player_origin[3], players[32], player, inum=0, dist, last_dist=99999, last_id

  37.  

  38.    get_user_origin(id,player_origin,0)

  39.    get_players(players,inum,"b")

  40.    if (inum>0)

  41.    {

  42.       for (new i=0;i<inum;i++)

  43.       {

  44.          player = players[i]

  45.          if (player!=id)

  46.          {

  47.             dist = get_distance(player_origin,player_origins[player])

  48.             if (dist<last_dist)

  49.             {

  50.                last_id = player

  51.                last_dist = dist

  52.             }

  53.          }

  54.       }

  55.       if (last_dist<80)

  56.       {

  57. #endif

  58.          if (count_piss[id] > get_cvar_num("amx_maxpees"))

  59.          {

  60.             client_print(id,print_chat, "You can only piss on a player %d time(s) in a round !", get_cvar_num("amx_maxpees"))

  61.             return PLUGIN_CONTINUE

  62.          }

  63.          new player_name[32]

  64.          get_user_name(id, player_name, 31)

  65. #if !defined NO_CS_CZ

  66.          if(get_user_flags(last_id) & ADMIN_IMMUNITY)

  67.          {

  68.             client_print(id,print_chat, "Ot nem lehet lepisilni !")

  69.             return PLUGIN_HANDLED

  70.          }

  71.          new dead_name[32]

  72.          get_user_name(last_id, dead_name, 31)

  73.          client_print(0,print_chat, "%s lepisilte %s -t !! HaHaHaHa !!", player_name, dead_name)

  74. #else

  75.          client_print(0,print_chat, "%s pisil !!" , player_name)

  76. #endif

  77.          count_piss[id]+=1

  78.          count_puddle[id]=1

  79.          new ids[1]

  80.          ids[0]=id

  81.          aim[id]=false

  82.  

  83.          emit_sound(id,CHAN_VOICE,"piss/tqlpublic/pissing.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)

  84.          switch(get_cvar_num("amx_piss_effect"))

  85.          {

  86.             case 0:   set_task(0.2,"make_pee",1481+id,ids,1,"a",48)

  87.             case 1:   set_task(0.1,"make_pee",1481+id,ids,1,"a",102)

  88.             default: set_task(0.2,"make_pee",1481+id,ids,1,"a",48)

  89.          }

  90.          set_task(2.2,"place_puddle",3424+id,ids,1,"a",4)

  91. #if !defined NO_CS_CZ

  92.       }

  93.       else

  94.       {

  95.          client_print(id,print_chat, "There are no dead bodies around you.")

  96.          return PLUGIN_HANDLED

  97.       }

  98.    }

  99. #endif

  100.    return PLUGIN_HANDLED

  101. }

  102.  

  103. public sqrt(num)

  104. {

  105.    new div = num

  106.    new result = 1

  107.    while (div > result)

  108.    {

  109.       div = (div + result) / 2

  110.       result = num / div

  111.    }

  112.    return div

  113. }

  114.  

  115. public make_pee(ids[])

  116. {

  117.    new id=ids[0]

  118.    new vec[3]

  119.    new aimvec[3]

  120.    new velocityvec[3]

  121.    new length

  122.    get_user_origin(id,vec)

  123.    get_user_origin(id,aimvec,3)

  124.    new distance = get_distance(vec,aimvec)

  125.    new speed = floatround(distance*1.9)

  126.  

  127.    velocityvec[0]=aimvec[0]-vec[0]

  128.    velocityvec[1]=aimvec[1]-vec[1]

  129.    velocityvec[2]=aimvec[2]-vec[2]

  130.  

  131.    length=sqrt(velocityvec[0]*velocityvec[0]+velocityvec[1]*velocityvec[1]+velocityvec[2]*velocityvec[2])

  132.  

  133.    velocityvec[0]=velocityvec[0]*speed/length

  134.    velocityvec[1]=velocityvec[1]*speed/length

  135.    velocityvec[2]=velocityvec[2]*speed/length

  136.  

  137.    switch(get_cvar_num("amx_piss_effect"))

  138.    {

  139.       case 0:

  140.       {

  141.          message_begin(MSG_BROADCAST,SVC_TEMPENTITY)

  142.          write_byte(101)

  143.          write_coord(vec[0])

  144.          write_coord(vec[1])

  145.          write_coord(vec[2])

  146.          write_coord(velocityvec[0])

  147.          write_coord(velocityvec[1])

  148.          write_coord(velocityvec[2])

  149.          write_byte(102) // color

  150.          write_byte(160) // speed

  151.          message_end()

  152.       }

  153.       case 1:

  154.       {

  155.          message_begin(MSG_BROADCAST,SVC_TEMPENTITY)

  156.          write_byte(106)

  157.          write_coord(vec[0])

  158.          write_coord(vec[1])

  159.          write_coord(vec[2])

  160.          write_coord(velocityvec[0])

  161.          write_coord(velocityvec[1])

  162.          write_coord(velocityvec[2]+100)

  163.          write_angle (0)

  164.          write_short (piss_model)

  165.          write_byte (0)

  166.          write_byte (255)

  167.          message_end()

  168.  

  169.          message_begin(MSG_BROADCAST,SVC_TEMPENTITY)

  170.          write_byte (1)

  171.          write_short (id)

  172.          write_coord(aimvec[0])

  173.          write_coord(aimvec[1])

  174.          write_coord(aimvec[2])

  175.          write_short(piss_sprite)

  176.          write_byte( 1 ) // framestart

  177.          write_byte( 6 ) // framerate

  178.          write_byte( 1 ) // life

  179.          write_byte( 8 ) // width

  180.          write_byte( 0 ) // noise

  181.          write_byte( 255 ) // r, g, b

  182.          write_byte( 255 ) // r, g, b

  183.          write_byte( 0 ) // r, g, b

  184.          write_byte( 200 ) // brightness

  185.          write_byte( 10 ) // speed

  186.          message_end()

  187.  

  188.          message_begin( MSG_BROADCAST,SVC_TEMPENTITY)

  189.          write_byte(17)

  190.          write_coord(aimvec[0])

  191.          write_coord(aimvec[1])

  192.          write_coord(aimvec[2])

  193.          write_short(water_splash)

  194.          write_byte(16)

  195.          write_byte(18)

  196.          message_end()

  197.  

  198.       }

  199.       default:

  200.       {

  201.          message_begin(MSG_BROADCAST,SVC_TEMPENTITY)

  202.          write_byte(101)

  203.          write_coord(vec[0])

  204.          write_coord(vec[1])

  205.          write_coord(vec[2])

  206.          write_coord(velocityvec[0])

  207.          write_coord(velocityvec[1])

  208.          write_coord(velocityvec[2])

  209.          write_byte(102) // color

  210.          write_byte(160) // speed

  211.          message_end()

  212.       }

  213.    }

  214. }

  215.  

  216. public place_puddle(ids[])

  217. {

  218.    new id=ids[0]

  219.    if(!aim[id])

  220.    {

  221.       new origin[3]

  222.       get_user_origin(id,origin,3)

  223.       aim_origin[id][0]=float(origin[0])

  224.       aim_origin[id][1]=float(origin[1])

  225.       aim_origin[id][2]=float(origin[2])

  226.    }

  227.  

  228.    new puddle_entity

  229.    puddle_entity = CreateEntity("info_target")

  230.  

  231.    if(puddle_entity == 0)

  232.    {

  233.       return PLUGIN_HANDLED_MAIN

  234.    }

  235.  

  236.    new Float:MinBox[3]

  237.    new Float:MaxBox[3]

  238.  

  239.    MinBox[0] = -1.0

  240.    MinBox[1] = -1.0

  241.    MinBox[2] = -1.0

  242.    MaxBox[0] = 1.0

  243.    MaxBox[1] = 1.0

  244.    MaxBox[2] = 1.0

  245.  

  246.    Entvars_Set_Vector(puddle_entity, EV_VEC_mins, MinBox)

  247.    Entvars_Set_Vector(puddle_entity, EV_VEC_maxs, MaxBox)

  248.  

  249.    switch(count_puddle[id])

  250.    {

  251.       case 1:

  252.       {

  253.          Entvars_Set_String(puddle_entity, EV_SZ_classname, "piss_puddle1")

  254.          ENT_SetModel(puddle_entity, "models/piss/piss_puddle1.mdl")

  255.       }

  256.       case 2:

  257.       {

  258.          Entvars_Set_String(puddle_entity, EV_SZ_classname, "piss_puddle2")

  259.          ENT_SetModel(puddle_entity, "models/piss/piss_puddle2.mdl")

  260.       }

  261.       case 3:

  262.       {

  263.          Entvars_Set_String(puddle_entity, EV_SZ_classname, "piss_puddle3")

  264.          ENT_SetModel(puddle_entity, "models/piss/piss_puddle3.mdl")

  265.       }

  266.       case 4:

  267.       {

  268.          Entvars_Set_String(puddle_entity, EV_SZ_classname, "piss_puddle4")

  269.          ENT_SetModel(puddle_entity, "models/piss/piss_puddle4.mdl")

  270.       }

  271.       case 5:

  272.       {

  273.          Entvars_Set_String(puddle_entity, EV_SZ_classname, "piss_puddle5")

  274.          ENT_SetModel(puddle_entity, "models/piss/piss_puddle5.mdl")

  275.          #if defined NO_CS_CZ

  276.             PissFlag[id]=false

  277.          #endif

  278.       }

  279.       default: {}

  280.    }

  281.  

  282.    ENT_SetOrigin(puddle_entity, aim_origin[id])

  283.    Entvars_Set_Int(puddle_entity, EV_INT_solid, 3)

  284.    Entvars_Set_Int(puddle_entity, EV_INT_movetype, 6)

  285.    Entvars_Set_Edict(puddle_entity, EV_ENT_owner, id)

  286.  

  287.    count_puddle[id]+=1

  288.    aim[id]=true

  289.  

  290.    return PLUGIN_CONTINUE

  291. }

  292.  

  293. public death_event()

  294. {

  295.    new victim = read_data(2)

  296.    #if !defined NO_CS_CZ

  297.    get_user_origin(victim,player_origins[victim],0)

  298.    #endif

  299.  

  300.    if(PissFlag[victim])

  301.       reset_piss(victim)

  302.  

  303.    return PLUGIN_CONTINUE

  304. }

  305.  

  306. #if !defined NO_CS_CZ

  307. public weapons_back(ids[])

  308. {

  309.    PissFlag[ids[0]]=false

  310.    if( (equali(mod_name,"cstrike")) || (equali(mod_name,"czero")) )

  311.    {

  312.       set_user_maxspeed(ids[0], 250.0)

  313.       client_cmd(ids[0], "weapon_knife")

  314.    }

  315. }

  316.  

  317. public cur_weapon(id)

  318. {

  319.    if(PissFlag[id])

  320.    {

  321.       if( (equali(mod_name,"cstrike")) || (equali(mod_name,"czero")) )

  322.       {

  323.          client_cmd(id, "weapon_knife")

  324.          set_user_maxspeed(id, -1.0)

  325.          entity_set_string(id, EV_SZ_viewmodel, "")

  326.          entity_set_string(id, EV_SZ_weaponmodel, "")

  327.       }

  328.    }

  329.  

  330.    return PLUGIN_CONTINUE

  331. }

  332. #endif

  333.  

  334. public reset_piss(id)

  335. {

  336.    if(task_exists(1481+id))

  337.       remove_task(1481+id)

  338.    if(task_exists(3424+id))

  339.       remove_task(3424+id)

  340.    #if !defined NO_CS_CZ

  341.    if(task_exists(6794+id))

  342.       remove_task(6794+id)

  343.    #endif

  344.    emit_sound(id,CHAN_VOICE,"piss/tqlpublic/pissing.wav", 0.0, ATTN_NORM, 0, PITCH_NORM)

  345.    PissFlag[id]=false

  346.  

  347.    return PLUGIN_CONTINUE

  348. }

  349.  

  350. public reset_hud(id)

  351. {

  352.    if(task_exists(1481+id))

  353.       remove_task(1481+id)

  354.    if(task_exists(3424+id))

  355.       remove_task(3424+id)

  356.    #if !defined NO_CS_CZ

  357.    if(task_exists(6794+id))

  358.       remove_task(6794+id)

  359.    #endif

  360.    emit_sound(id,CHAN_VOICE,"piss/tqlpublic/pissing.wav", 0.0, ATTN_NORM, 0, PITCH_NORM)

  361.    PissFlag[id]=false

  362.  

  363.    new iCurrent

  364.  

  365.    for (new i=1 ; i<count_piss[id] ; i++)

  366.    {

  367.       iCurrent = FindEntity(-1, "piss_puddle1")

  368.       if(iCurrent > 0)

  369.          RemoveEntity(iCurrent)

  370.       iCurrent = FindEntity(-1, "piss_puddle2")

  371.       if(iCurrent > 0)

  372.          RemoveEntity(iCurrent)

  373.       iCurrent = FindEntity(-1, "piss_puddle3")

  374.       if(iCurrent > 0)

  375.          RemoveEntity(iCurrent)

  376.       iCurrent = FindEntity(-1, "piss_puddle4")

  377.       if(iCurrent > 0)

  378.          RemoveEntity(iCurrent)

  379.       iCurrent = FindEntity(-1, "piss_puddle5")

  380.       if(iCurrent > 0)

  381.          RemoveEntity(iCurrent)

  382.    }

  383.    count_piss[id]=1

  384.  

  385.    return PLUGIN_CONTINUE

  386. }

  387.  

  388. public piss_help(id)

  389. {

  390.    client_print(id, print_chat, "To piss on a dead body you have to bind a key to: piss")

  391.    client_print(id, print_chat, "Open your console and write: bind ^"key^" ^"piss^"")

  392.    client_print(id, print_chat, "ex: bind ^"x^" ^"piss^"")

  393.  

  394.    return PLUGIN_CONTINUE

  395. }

  396.  

  397. public handle_say(id)

  398. {

  399.    new said[192]

  400.    read_args(said,192)

  401.    remove_quotes(said)

  402.  

  403.    if( (containi(said, "piss") != -1) && !(containi(said, "/piss") != -1) ) {

  404.       client_print(id, print_chat, "[AMX] For Piss help say /piss")

  405.    }

  406.  

  407.    return PLUGIN_CONTINUE

  408. }

  409.  

  410. public plugin_precache()

  411. {

  412.    if (file_exists("sound/piss/tqlpublic/pissing.wav"))

  413.       precache_sound("piss/tqlpublic/pissing.wav")

  414.    if (file_exists("models/piss/piss_puddle1.mdl"))

  415.       precache_model("models/piss/piss_puddle1.mdl")

  416.    if (file_exists("models/piss/piss_puddle2.mdl"))

  417.       precache_model("models/piss/piss_puddle2.mdl")

  418.    if (file_exists("models/piss/piss_puddle3.mdl"))

  419.       precache_model("models/piss/piss_puddle3.mdl")

  420.    if (file_exists("models/piss/piss_puddle4.mdl"))

  421.       precache_model("models/piss/piss_puddle4.mdl")

  422.    if (file_exists("models/piss/piss_puddle5.mdl"))

  423.       precache_model("models/piss/piss_puddle5.mdl")

  424.    if (file_exists("models/piss/piss.mdl"))

  425.       piss_model = precache_model("models/piss/piss.mdl")

  426.    piss_sprite = precache_model("sprites/plasma.spr")

  427.    water_splash = precache_model("sprites/wsplash3.spr")

  428. }

  429.  

  430. public client_connect(id)

  431. {

  432.    PissFlag[id]=false

  433.    count_piss[id]=1

  434. }

  435.  

  436. public client_disconnect(id)

  437. {

  438.    reset_hud(id)

  439. }

  440.  

  441. public plugin_init()

  442. {

  443.    register_plugin("AMX Piss","2.2","KRoTaL")

  444.    register_clcmd("piss","piss_on_player",0,"- Piss on a dead player")

  445.    register_clcmd("say /piss","piss_help",0,"- Displays piss help")

  446.    register_clcmd("say","handle_say")

  447.    register_cvar("amx_maxpees","6")

  448.    register_cvar("amx_piss_admin","0")

  449.    register_cvar("amx_piss_effect","0")

  450.    register_event("DeathMsg","death_event","a")

  451.    register_event("ResetHUD", "reset_hud", "be")

  452.    #if !defined NO_CS_CZ

  453.    register_event("CurWeapon","cur_weapon","be","1=1")

  454.    get_modname(mod_name,31)

  455.    #endif

  456. }

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: pisilés plugin
HozzászólásElküldve:2012.06.07. 12:56 
Offline
Őstag
Avatar

Csatlakozott:2011.08.27. 23:19
Hozzászólások:1023
Megköszönt másnak: 3 alkalommal
Megköszönték neki: 11 alkalommal
Vedd ki a modellt... És akkor olyan lesz mint a hokizás...
Ha valaki kérdezi hogy hova lett, megmondod hogy beszívta a föld...

_________________
[kozep]t/s[/kozep]


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: pisilés plugin
HozzászólásElküldve:2012.06.07. 13:14 
Offline
Őstag
Avatar

Csatlakozott:2010.04.16. 16:50
Hozzászólások:1342
Megköszönt másnak: 42 alkalommal
Megköszönték neki: 58 alkalommal
GhostRyder írta:
Vedd ki a modellt... És akkor olyan lesz mint a hokizás...
Ha valaki kérdezi hogy hova lett, megmondod hogy beszívta a föld...

XDD ez egy okos döntés !! Na de csak a kodbol vegyem ki az mdl részeket??

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: pisilés plugin
HozzászólásElküldve:2012.06.07. 14:30 
Offline
Őstag
Avatar

Csatlakozott:2011.08.27. 23:19
Hozzászólások:1023
Megköszönt másnak: 3 alkalommal
Megköszönték neki: 11 alkalommal
Hát írd át hogyha hugyozol akkor ne jelenjen meg a modell...

_________________
[kozep]t/s[/kozep]


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: pisilés plugin
HozzászólásElküldve:2012.06.07. 17:21 
Offline
Veterán
Avatar

Csatlakozott:2011.06.07. 15:29
Hozzászólások:1728
Megköszönt másnak: 1 alkalommal
Megköszönték neki: 63 alkalommal
Szerintem jobb lenne úgy megcsinálni, hogy csak például 15 másodpercenként lehessen használni. Akkor nem fog kifagyni a szerver.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: pisilés plugin
HozzászólásElküldve:2012.06.07. 18:55 
Offline
Őstag
Avatar

Csatlakozott:2010.04.16. 16:50
Hozzászólások:1342
Megköszönt másnak: 42 alkalommal
Megköszönték neki: 58 alkalommal
na most az a helyzet, hogy még a szerver is kifagyott amikor pisilni akartam !! Ötlet??

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: pisilés plugin
HozzászólásElküldve:2012.06.07. 18:56 
Offline
Őskövület
Avatar

Csatlakozott:2012.03.22. 18:22
Hozzászólások:2978
Megköszönt másnak: 118 alkalommal
Megköszönték neki: 368 alkalommal
PL hogy csak egy körben 2x lehet pisilni? :D

_________________
Blasenkampfwagen

https://discord.gg/uBYnNnZP
GTA:PURSUIT MTA


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: pisilés plugin
HozzászólásElküldve:2012.06.07. 19:00 
Offline
Veterán
Avatar

Csatlakozott:2011.06.07. 15:29
Hozzászólások:1728
Megköszönt másnak: 1 alkalommal
Megköszönték neki: 63 alkalommal
Idézet:
PL hogy csak egy körben 2x lehet pisilni?


Nem. Legalábbis én nem erre gondoltam, hanem arra, hogy ha valaki pisil, akkor 15 mp múlva lehet újra bárkinek.

Idézet:
na most az a helyzet, hogy még a szerver is kifagyott amikor pisilni akartam !! Ötlet??


Több, mint valószínű, hogy rosszul vetted ki a modelt. Nem csak precache-ből kell kiszedni, hanem mindenhonnan, ami azt szeretné használni.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: pisilés plugin
HozzászólásElküldve:2012.06.07. 19:02 
Offline
Őstag
Avatar

Csatlakozott:2010.04.16. 16:50
Hozzászólások:1342
Megköszönt másnak: 42 alkalommal
Megköszönték neki: 58 alkalommal
na itt a teljes és érintetlen kód amiből még nincs kiszedve az, hogy amikor pisilsz ne csak kés lehessen a kezedben és mehessél tovább, szóval nem kell ott maradnod !
oroszrulett te kitudnád ebből szedni ezt a 2-t??
Kód:
  1. /*

  2.  

  3. Plugin: Amx Piss

  4. Version: 2.2

  5. Author: KRoTaL (Based on TakeADookie by PaintLancer)

  6.  

  7. Modified by commonbullet to work with amxx, untested.

  8.  

  9. 1.0  Release

  10. 1.1  Better effect

  11. 1.2  Bug fix

  12. 1.3  New effect + piss puddle

  13. 1.4a New effects, only for cs/cz/dod

  14. 1.4b New effects, only for other mods than cs/cz/dod

  15. 1.5  #define NO_CS_CZ added

  16. 1.6  Bug fix (DoD)

  17. 1.7  Bug fix

  18. 1.8  Some checks added

  19. 1.9  #define NO_CS_CZ changed into #define NO_CS_CZ

  20. 2.0  New cvar : amx_piss_effect

  21. 2.1  English & French language support

  22. 2.2  Removed knife model when pissing and added admin immunity

  23.  

  24. Commands:

  25.  

  26.   To piss on a dead body you have to bind a key to: piss

  27.   Open your console and write: bind "key" "piss"

  28.   ex: bind "x" "piss"

  29.   Then stand still above a dead player, press your key and you'll piss on them !

  30.   You can control the direction of the stream with your mouse.

  31.   You are not able to move or to shoot for 10 seconds when you piss, so beware.

  32.   The puddle of piss will appear where you are aiming at 2 seconds after you start pissing,

  33.   so try to aim at the dead body instead of the sky or a wall ;)

  34.  

  35.   Players can say "/piss" in the chat to get some help.

  36.  

  37. Cvars:

  38.  

  39.   amx_maxpees 6   - Maximum number of times a player is allowed to piss per round.

  40.  

  41.   amx_piss_admin 0    -   0 : All the players are allowed to piss

  42.                           1 : Only admins with ADMIN_LEVEL_A flag are allowed to piss

  43.  

  44.   amx_piss_effect 0   -   0 : yellow bloodsprite

  45.                           1 : yellow laserbeam

  46.  

  47. Setup:

  48.  

  49.   You need to put these files on your server:

  50.  

  51.   sound/piss/pissing.wav

  52.   models/piss/piss_puddle1.mdl

  53.   models/piss/piss_puddle2.mdl

  54.   models/piss/piss_puddle3.mdl

  55.   models/piss/piss_puddle4.mdl

  56.   models/piss/piss_puddle5.mdl

  57.   models/piss/piss.mdl

  58.   addons/amx/lang/piss.txt

  59.  

  60.   You need to enable Fun and Vexd Utilities Modules for cs/cs-cz.

  61.   You need to enable Vexd Utilities Module for the other mods.

  62.  

  63.   Use amx_piss_cs_cz.amx if you use CS or CS-CZ (player can't move).

  64.   Use amx_piss.amx if you use another mod (dod, tfc, ...), or if you play CS/CS-CZ

  65.   and you want to be able to piss without being stuck.

  66.  

  67.  

  68.  Credits:

  69.  

  70.   Rastin for his trousers fly sounds

  71.   SLayer KL for his piss puddle models

  72.  

  73. */

  74.  

  75. // UNCOMMENT IF YOU USE ANOTHER MOD THAN CS and CS-CZ,

  76. // OR IF YOU USE CS/CS-CZ AND YOU WANT TO BE ABLE TO PISS ANYWHERE ON THE MAP (NOT JUST NEAR DEAD PLAYERS)

  77. //#define NO_CS_CZ

  78.  

  79.  

  80.  

  81.  

  82. /***************************************************************************************************/

  83.  

  84. #include <amxmodx>

  85. #if !defined NO_CS_CZ

  86. #include <fun>

  87. #endif

  88. #include <Vexd_Utilities>

  89.  

  90.  

  91. new piss_model

  92. new piss_sprite

  93. new water_splash

  94. new count_piss[33]

  95. new count_puddle[33]

  96. new bool:PissFlag[33]

  97. new bool:aim[33]

  98. new Float:aim_origin[33][3]

  99. #if !defined NO_CS_CZ

  100. new player_origins[33][3]

  101. new mod_name[32]

  102. #endif

  103.  

  104. public piss_on_player(id)

  105. {

  106. if (get_cvar_num("amx_maxpees")==0)

  107.   return PLUGIN_HANDLED

  108. if (!is_user_alive(id))

  109.   return PLUGIN_HANDLED

  110. if ( (get_cvar_num("amx_piss_admin")==1) && !(get_user_flags(id) & ADMIN_LEVEL_A) )

  111. {

  112.   console_print(id, "[AMX] Nincs jogosultsagod ehhez a parancshoz.")

  113.   return PLUGIN_HANDLED

  114. }

  115. if(PissFlag[id])

  116.   return PLUGIN_HANDLED

  117.  

  118. #if !defined NO_CS_CZ

  119. new player_origin[3], players[32], player, inum=0, dist, last_dist=99999, last_id

  120.  

  121. get_user_origin(id,player_origin,0)

  122. get_players(players,inum,"b")

  123. if (inum>0) {

  124.   for (new i=0;i<inum;i++) {

  125.     player = players[i]

  126.     if (player!=id) {

  127.       dist = get_distance(player_origin,player_origins[player])

  128.       if (dist<last_dist) {

  129.         last_id = player

  130.         last_dist = dist

  131.       }

  132.     }

  133.   }

  134.   if (last_dist<80) {

  135. #endif

  136.     if (count_piss[id] > get_cvar_num("amx_maxpees")) {

  137.       client_print(id,print_chat, "You can only piss on a player %d time(s) in a round !", get_cvar_num("amx_maxpees"))

  138.       return PLUGIN_CONTINUE

  139.     }

  140.     new player_name[32]

  141.     get_user_name(id, player_name, 31)

  142. #if !defined NO_CS_CZ

  143.     if(get_user_flags(last_id) & ADMIN_IMMUNITY)

  144.     {

  145.       client_print(id,print_chat, "Ot nem lehet lepisilni !")

  146.       return PLUGIN_HANDLED

  147.     }

  148.     new dead_name[32]

  149.     get_user_name(last_id, dead_name, 31)

  150.     client_print(0,print_chat, "%s lepisilte %s -t !! HaHaHaHa !!", player_name, dead_name)

  151. #else

  152.     client_print(0,print_chat, "%s pisil !!" , player_name)

  153. #endif

  154.     count_piss[id]+=1

  155.     count_puddle[id]=1

  156.     new ids[1]

  157.     ids[0]=id

  158.     PissFlag[id]=true

  159.     aim[id]=false

  160. #if !defined NO_CS_CZ

  161.     if( (equali(mod_name,"cstrike")) || (equali(mod_name,"czero")) )

  162.     {

  163.       client_cmd(id, "weapon_knife")

  164.       entity_set_string(id, EV_SZ_viewmodel, "")

  165.       entity_set_string(id, EV_SZ_weaponmodel, "")

  166.       set_user_maxspeed(id, -1.0)

  167.     }

  168. #endif

  169.     emit_sound(id,CHAN_VOICE,"piss/pissing.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)

  170.     switch(get_cvar_num("amx_piss_effect"))

  171.     {

  172.       case 0:  set_task(0.2,"make_pee",1481+id,ids,1,"a",48)

  173.       case 1:  set_task(0.1,"make_pee",1481+id,ids,1,"a",102)

  174.       default: set_task(0.2,"make_pee",1481+id,ids,1,"a",48)

  175.     }

  176.     set_task(2.2,"place_puddle",3424+id,ids,1,"a",4)

  177. #if !defined NO_CS_CZ

  178.     set_task(12.0,"weapons_back",6794+id,ids,1)

  179.   }

  180.   else

  181.   {

  182.     client_print(id,print_chat, "There are no dead bodies around you.")

  183.     return PLUGIN_HANDLED

  184.   }

  185. }

  186. #endif

  187. return PLUGIN_HANDLED

  188. }

  189.  

  190. public sqrt(num)

  191. {

  192.   new div = num

  193.   new result = 1

  194.   while (div > result) {

  195.     div = (div + result) / 2

  196.     result = num / div

  197.   }

  198.   return div

  199. }

  200.  

  201. public make_pee(ids[])

  202. {

  203.   new id=ids[0]

  204.   new vec[3]

  205.   new aimvec[3]

  206.   new velocityvec[3]

  207.   new length

  208.   get_user_origin(id,vec)

  209.   get_user_origin(id,aimvec,3)

  210.   new distance = get_distance(vec,aimvec)

  211.   new speed = floatround(distance*1.9)

  212.  

  213.   velocityvec[0]=aimvec[0]-vec[0]

  214.   velocityvec[1]=aimvec[1]-vec[1]

  215.   velocityvec[2]=aimvec[2]-vec[2]

  216.  

  217.   length=sqrt(velocityvec[0]*velocityvec[0]+velocityvec[1]*velocityvec[1]+velocityvec[2]*velocityvec[2])

  218.  

  219.   velocityvec[0]=velocityvec[0]*speed/length

  220.   velocityvec[1]=velocityvec[1]*speed/length

  221.   velocityvec[2]=velocityvec[2]*speed/length

  222.  

  223.   switch(get_cvar_num("amx_piss_effect"))

  224.   {

  225.     case 0:

  226.     {

  227.       message_begin(MSG_BROADCAST,SVC_TEMPENTITY)

  228.       write_byte(101)

  229.       write_coord(vec[0])

  230.       write_coord(vec[1])

  231.       write_coord(vec[2])

  232.       write_coord(velocityvec[0])

  233.       write_coord(velocityvec[1])

  234.       write_coord(velocityvec[2])

  235.       write_byte(102) // color

  236.       write_byte(160) // speed

  237.       message_end()

  238.     }

  239.     case 1:

  240.     {

  241.       message_begin(MSG_BROADCAST,SVC_TEMPENTITY)

  242.       write_byte(106)

  243.       write_coord(vec[0])

  244.       write_coord(vec[1])

  245.       write_coord(vec[2])

  246.       write_coord(velocityvec[0])

  247.       write_coord(velocityvec[1])

  248.       write_coord(velocityvec[2]+100)

  249.       write_angle (0)

  250.       write_short (piss_model)

  251.       write_byte (0)

  252.       write_byte (255)

  253.       message_end()

  254.  

  255.       message_begin(MSG_BROADCAST,SVC_TEMPENTITY)

  256.       write_byte (1)

  257.       write_short (id)

  258.       write_coord(aimvec[0])

  259.       write_coord(aimvec[1])

  260.       write_coord(aimvec[2])

  261.       write_short(piss_sprite)

  262.       write_byte( 1 ) // framestart

  263.       write_byte( 6 ) // framerate

  264.       write_byte( 1 ) // life

  265.       write_byte( 8 ) // width

  266.       write_byte( 0 ) // noise

  267.       write_byte( 255 ) // r, g, b

  268.       write_byte( 255 ) // r, g, b

  269.       write_byte( 0 ) // r, g, b

  270.       write_byte( 200 ) // brightness

  271.       write_byte( 10 ) // speed

  272.       message_end()

  273.  

  274.       message_begin( MSG_BROADCAST,SVC_TEMPENTITY)

  275.       write_byte(17)

  276.       write_coord(aimvec[0])

  277.       write_coord(aimvec[1])

  278.       write_coord(aimvec[2])

  279.       write_short(water_splash)

  280.       write_byte(16)

  281.       write_byte(18)

  282.       message_end()

  283.  

  284.     }

  285.     default:

  286.     {

  287.       message_begin(MSG_BROADCAST,SVC_TEMPENTITY)

  288.       write_byte(101)

  289.       write_coord(vec[0])

  290.       write_coord(vec[1])

  291.       write_coord(vec[2])

  292.       write_coord(velocityvec[0])

  293.       write_coord(velocityvec[1])

  294.       write_coord(velocityvec[2])

  295.       write_byte(102) // color

  296.       write_byte(160) // speed

  297.       message_end()

  298.     }

  299.   }

  300. }

  301.  

  302. public place_puddle(ids[])

  303. {

  304.   new id=ids[0]

  305.   if(!aim[id])

  306.   {

  307.     new origin[3]

  308.     get_user_origin(id,origin,3)

  309.     aim_origin[id][0]=float(origin[0])

  310.     aim_origin[id][1]=float(origin[1])

  311.     aim_origin[id][2]=float(origin[2])

  312.   }

  313.  

  314.   new puddle_entity

  315.   puddle_entity = CreateEntity("info_target")

  316.  

  317.   if(puddle_entity == 0) {

  318.     return PLUGIN_HANDLED_MAIN

  319.   }

  320.  

  321.   new Float:MinBox[3]

  322.   new Float:MaxBox[3]

  323.  

  324.   MinBox[0] = -1.0

  325.   MinBox[1] = -1.0

  326.   MinBox[2] = -1.0

  327.   MaxBox[0] = 1.0

  328.   MaxBox[1] = 1.0

  329.   MaxBox[2] = 1.0

  330.  

  331.   Entvars_Set_Vector(puddle_entity, EV_VEC_mins, MinBox)

  332.   Entvars_Set_Vector(puddle_entity, EV_VEC_maxs, MaxBox)

  333.  

  334.   switch(count_puddle[id])

  335.   {

  336.     case 1:

  337.     {

  338.       Entvars_Set_String(puddle_entity, EV_SZ_classname, "piss_puddle1")

  339.       ENT_SetModel(puddle_entity, "models/piss/piss_puddle1.mdl")

  340.     }

  341.     case 2:

  342.     {

  343.       Entvars_Set_String(puddle_entity, EV_SZ_classname, "piss_puddle2")

  344.       ENT_SetModel(puddle_entity, "models/piss/piss_puddle2.mdl")

  345.     }

  346.     case 3:

  347.     {

  348.       Entvars_Set_String(puddle_entity, EV_SZ_classname, "piss_puddle3")

  349.       ENT_SetModel(puddle_entity, "models/piss/piss_puddle3.mdl")

  350.     }

  351.     case 4:

  352.     {

  353.       Entvars_Set_String(puddle_entity, EV_SZ_classname, "piss_puddle4")

  354.       ENT_SetModel(puddle_entity, "models/piss/piss_puddle4.mdl")

  355.     }

  356.     case 5:

  357.     {

  358.       Entvars_Set_String(puddle_entity, EV_SZ_classname, "piss_puddle5")

  359.       ENT_SetModel(puddle_entity, "models/piss/piss_puddle5.mdl")

  360.       #if defined NO_CS_CZ

  361.         PissFlag[id]=false

  362.       #endif

  363.     }

  364.     default: {}

  365.   }

  366.  

  367.   ENT_SetOrigin(puddle_entity, aim_origin[id])

  368.   Entvars_Set_Int(puddle_entity, EV_INT_solid, 3)

  369.   Entvars_Set_Int(puddle_entity, EV_INT_movetype, 6)

  370.   Entvars_Set_Edict(puddle_entity, EV_ENT_owner, id)

  371.  

  372.   count_puddle[id]+=1

  373.   aim[id]=true

  374.  

  375.   return PLUGIN_CONTINUE

  376. }

  377.  

  378. public death_event()

  379. {

  380.   new victim = read_data(2)

  381.   #if !defined NO_CS_CZ

  382.   get_user_origin(victim,player_origins[victim],0)

  383.   #endif

  384.  

  385.   if(PissFlag[victim])

  386.     reset_piss(victim)

  387.  

  388.   return PLUGIN_CONTINUE

  389. }

  390.  

  391. #if !defined NO_CS_CZ

  392. public weapons_back(ids[])

  393. {

  394.   PissFlag[ids[0]]=false

  395.   if( (equali(mod_name,"cstrike")) || (equali(mod_name,"czero")) )

  396.   {

  397.     set_user_maxspeed(ids[0], 250.0)

  398.     client_cmd(ids[0], "weapon_knife")

  399.   }

  400. }

  401.  

  402. public cur_weapon(id)

  403. {

  404.   if(PissFlag[id])

  405.   {

  406.     if( (equali(mod_name,"cstrike")) || (equali(mod_name,"czero")) )

  407.     {

  408.       client_cmd(id, "weapon_knife")

  409.       set_user_maxspeed(id, -1.0)

  410.       entity_set_string(id, EV_SZ_viewmodel, "")

  411.       entity_set_string(id, EV_SZ_weaponmodel, "")

  412.     }

  413.   }

  414.  

  415.   return PLUGIN_CONTINUE

  416. }

  417. #endif

  418.  

  419. public reset_piss(id)

  420. {

  421.   if(task_exists(1481+id))

  422.     remove_task(1481+id)

  423.   if(task_exists(3424+id))

  424.     remove_task(3424+id)

  425.   #if !defined NO_CS_CZ

  426.   if(task_exists(6794+id))

  427.     remove_task(6794+id)

  428.   #endif

  429.   emit_sound(id,CHAN_VOICE,"piss/pissing.wav", 0.0, ATTN_NORM, 0, PITCH_NORM)

  430.   PissFlag[id]=false

  431.  

  432.   return PLUGIN_CONTINUE

  433. }

  434.  

  435. public reset_hud(id)

  436. {

  437.   if(task_exists(1481+id))

  438.     remove_task(1481+id)

  439.   if(task_exists(3424+id))

  440.     remove_task(3424+id)

  441.   #if !defined NO_CS_CZ

  442.   if(task_exists(6794+id))

  443.     remove_task(6794+id)

  444.   #endif

  445.   emit_sound(id,CHAN_VOICE,"piss/pissing.wav", 0.0, ATTN_NORM, 0, PITCH_NORM)

  446.   PissFlag[id]=false

  447.  

  448.   new iCurrent

  449.  

  450.   for (new i=1 ; i<count_piss[id] ; i++)

  451.   {

  452.     iCurrent = FindEntity(-1, "piss_puddle1")

  453.     if(iCurrent > 0)

  454.       RemoveEntity(iCurrent)

  455.     iCurrent = FindEntity(-1, "piss_puddle2")

  456.     if(iCurrent > 0)

  457.       RemoveEntity(iCurrent)

  458.     iCurrent = FindEntity(-1, "piss_puddle3")

  459.     if(iCurrent > 0)

  460.       RemoveEntity(iCurrent)

  461.     iCurrent = FindEntity(-1, "piss_puddle4")

  462.     if(iCurrent > 0)

  463.       RemoveEntity(iCurrent)

  464.     iCurrent = FindEntity(-1, "piss_puddle5")

  465.     if(iCurrent > 0)

  466.       RemoveEntity(iCurrent)

  467.   }

  468.   count_piss[id]=1

  469.  

  470.   return PLUGIN_CONTINUE

  471. }

  472.  

  473. public piss_help(id)

  474. {

  475.   client_print(id, print_chat, "To piss on a dead body you have to bind a key to: piss")

  476.   client_print(id, print_chat, "Open your console and write: bind ^"key^" ^"piss^"")

  477.   client_print(id, print_chat, "ex: bind ^"x^" ^"piss^"")

  478.  

  479.   return PLUGIN_CONTINUE

  480. }

  481.  

  482. public handle_say(id)

  483. {

  484.   new said[192]

  485.   read_args(said,192)

  486.   remove_quotes(said)

  487.  

  488.   if( (containi(said, "piss") != -1) && !(containi(said, "/piss") != -1) ) {

  489.     client_print(id, print_chat, "[AMX] For Piss help say /piss")

  490.   }

  491.  

  492.   return PLUGIN_CONTINUE

  493. }

  494.  

  495. public plugin_precache()

  496. {

  497.   if (file_exists("sound/piss/pissing.wav"))

  498.     precache_sound("piss/pissing.wav")

  499.   if (file_exists("models/piss/piss_puddle1.mdl"))

  500.     precache_model("models/piss/piss_puddle1.mdl")

  501.   if (file_exists("models/piss/piss_puddle2.mdl"))

  502.     precache_model("models/piss/piss_puddle2.mdl")

  503.   if (file_exists("models/piss/piss_puddle3.mdl"))

  504.     precache_model("models/piss/piss_puddle3.mdl")

  505.   if (file_exists("models/piss/piss_puddle4.mdl"))

  506.     precache_model("models/piss/piss_puddle4.mdl")

  507.   if (file_exists("models/piss/piss_puddle5.mdl"))

  508.     precache_model("models/piss/piss_puddle5.mdl")

  509.   if (file_exists("models/piss/piss.mdl"))

  510.     piss_model = precache_model("models/piss/piss.mdl")

  511.   piss_sprite = precache_model("sprites/plasma.spr")

  512.   water_splash = precache_model("sprites/wsplash3.spr")

  513. }

  514.  

  515. public client_connect(id)

  516. {

  517.   PissFlag[id]=false

  518.   count_piss[id]=1

  519. }

  520.  

  521. public client_disconnect(id)

  522. {

  523.   reset_hud(id)

  524. }

  525.  

  526. public plugin_init()

  527. {

  528.   register_plugin("AMX Piss","2.2","KRoTaL")

  529.   register_clcmd("piss","piss_on_player",0,"- Piss on a dead player")

  530.   register_clcmd("say /piss","piss_help",0,"- Displays piss help")

  531.   register_clcmd("say","handle_say")

  532.   register_cvar("amx_maxpees","6")

  533.   register_cvar("amx_piss_admin","0")

  534.   register_cvar("amx_piss_effect","0")

  535.   register_event("DeathMsg","death_event","a")

  536.   register_event("ResetHUD", "reset_hud", "be")

  537.   #if !defined NO_CS_CZ

  538.   register_event("CurWeapon","cur_weapon","be","1=1")

  539.   get_modname(mod_name,31)

  540.   #endif

  541. }

  542.  

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: pisilés plugin
HozzászólásElküldve:2012.06.07. 19:05 
Offline
Veterán
Avatar

Csatlakozott:2011.06.07. 15:29
Hozzászólások:1728
Megköszönt másnak: 1 alkalommal
Megköszönték neki: 63 alkalommal
A legelső kód is jó, csak ott azt kell megakadályozni, hogy mindenki egyszerre pisiljon. Ha kell, akkor megcsinálom.


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  [13 hozzászólás ]  Oldal12Következő


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 31 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