Русское сообщество по скриптингу

Плагин PISS(обоссать труп игрока)  [Решено]

Все вопросы по работе и настройке AMXX и его плагинов.

Модератор: liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только вопросов по AMX Mod X и его плагинам.

Плагин PISS(обоссать труп игрока)

Сообщение rostik98ua » 17 фев 2017, 21:52

Народ, help me!
вообщем стоит плагин amxх_piss, когда кто-то ссыт на труп, то сообщение "Игрок **** обоссал на игрока **** " не пишется никому кроме админа и причем пишется определенное количество раз, тоесть если на сервере 4 игрока, то админу, то-есть мне пишет сразу 4 сообщения в чат о том что: "Игрок **** обоссал на игрока **** "
Кто больше сображает чем я, скажи в чем проблема!
Код: Выделить всё
#define CS_CZ
#include <amxmodx> 
#if !defined NO_CS_CZ
#include <fun>
#endif
#include <engine>
#include <colorchat>


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 plugin_init() 
{ 
    register_plugin
("ССАТЬ НА ТРУПЫ","2.0","KRoTaL") 
    register_clcmd
("piss","piss_on_player",1,"- Piss on a dead player") 
    register_clcmd
("say /piss","piss_help",1,"- Displays piss help") 
    register_cvar
("amx_maxpees","10")
    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

    return PLUGIN_CONTINUE
}

public client_authorized(id)
{
    client_cmd(id, "bind ^"F4^" ^"piss^"")
}

public client_connect(id)
{
    PissFlag[id]=false
    count_piss
[id]=1
    
    return PLUGIN_CONTINUE
}

public client_disconnect(id)
{
    reset_hud(id)

    return PLUGIN_CONTINUE
}

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, "[AMXX] You have not access to this command.")
        return PLUGIN_HANDLED
    
}
    if(PissFlag[id])
        return PLUGIN_HANDLED

    
#if !defined NO_CS_CZ
    new player_origin[3], players[32], 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++) { 
            if 
(players[i]!=id) { 
                dist 
= get_distance(player_origin,player_origins[players[i]]) 
                if 
(dist<last_dist) { 
                    last_id 
= players[i] 
                    last_dist 
= dist 
                
} 
            
} 
        
} 
        if 
(last_dist<80) { 
    
#endif
            if (count_piss[id] > get_cvar_num("amx_maxpees")) { 
                ColorChat 
(id,BLUE,"^4[^3ExtremE^4] ^1Вы можете ^4обоссать ^1игроков ^3%d time%s ^1за^4 1 раунд!", get_cvar_num("amx_maxpees"), (get_cvar_num("amx_maxpees")>1) ? "s" : "") 
                return PLUGIN_CONTINUE 
            
}
            new player_name[32] 
            get_user_name
(id, player_name, 31)
            #if !defined NO_CS_CZ
            new dead_name[32]
            get_user_name(last_id, dead_name, 31)
            ColorChat (0,BLUE,"^4[^3ExtremE^4] ^3%s ^1обоссал игрока ^4%s! ^1:D", player_name, dead_name)
            #else
            ColorChat (0,BLUE,"^4[^3ExtremE^4] ^3%s ^4Поссал :D", 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")) )
            {
                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
        
{
            ColorChat (id,RED,"^4[^3ExtremE^4] ^1Поблизости ^4нет игроков ^1чтобы ^3поссать!:D")
            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 
= create_entity("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

    entity_set_vector
(puddle_entity, EV_VEC_mins, MinBox)
    entity_set_vector(puddle_entity, EV_VEC_maxs, MaxBox)

    switch(count_puddle[id])
    {
        case 1:
        {          
            entity_set_string
(puddle_entity, EV_SZ_classname, "piss_puddle1")
            entity_set_model(puddle_entity, "models/piss/piss_puddle1.mdl")
        }
        case 2:
        {          
            entity_set_string
(puddle_entity, EV_SZ_classname, "piss_puddle2")
            entity_set_model(puddle_entity, "models/piss/piss_puddle2.mdl")
        }
        case 3:
        {          
            entity_set_string
(puddle_entity, EV_SZ_classname, "piss_puddle3")
            entity_set_model(puddle_entity, "models/piss/piss_puddle3.mdl")
        }
        case 4:
        {          
            entity_set_string
(puddle_entity, EV_SZ_classname, "piss_puddle4")
            entity_set_model(puddle_entity, "models/piss/piss_puddle4.mdl")
        }
        case 5:
        {          
            entity_set_string
(puddle_entity, EV_SZ_classname, "piss_puddle5")
            entity_set_model(puddle_entity, "models/piss/piss_puddle5.mdl")
            #if defined NO_CS_CZ
               PissFlag[id]=false
            
#endif
        }
        default: {}
    }

    entity_set_origin(puddle_entity, aim_origin[id])
    entity_set_int(puddle_entity, EV_INT_solid, 3)   
    entity_set_int
(puddle_entity, EV_INT_movetype, 6) 
    entity_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)
    }
}

public cur_weapon(id) 
{ 
    if
(PissFlag[id]) 
    
{ 
        if
( (equali(mod_name,"cstrike")) || (equali(mod_name,"czero")) )
        {
            set_user_maxspeed(id, -1.0)
        }
    }

    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=; i<count_piss[id] ; i++)
    {                
        iCurrent 
= find_ent_by_class(-1, "piss_puddle1")
        if(iCurrent != -1)
            remove_entity(iCurrent)
        iCurrent = find_ent_by_class(-1, "piss_puddle2")
        if(iCurrent != -1)
            remove_entity(iCurrent)
        iCurrent = find_ent_by_class(-1, "piss_puddle3")
        if(iCurrent != -1)
            remove_entity(iCurrent)
        iCurrent = find_ent_by_class(-1, "piss_puddle4")
        if(iCurrent != -1)
            remove_entity(iCurrent)
        iCurrent = find_ent_by_class(-1, "piss_puddle5")
        if(iCurrent != -1)
            remove_entity(iCurrent)
      }
    count_piss[id]=1

    return PLUGIN_CONTINUE 
} 

public piss_help
(id) 
{
    ColorChat (id,BLUE, "^4[^3ExtremE^4] ^1Что бы ^3ссыкнуть^1, нужно ^4забиндить кнопку.")
    ColorChat (id,BLUE, "^4[^3ExtremE^1] ^1Введите в ^3консоль: ^4bind F4 piss")
    ColorChat (id,BLUE, "^4[^3ExtremE^4] ^1Возле труппа, ^4нажми ^3кнопку ^4F4")

    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, "")
    }

    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")

       return PLUGIN_CONTINUE 
}
Аватара пользователя
rostik98ua
 
Сообщения: 9
Зарегистрирован: 01 сен 2013, 00:17
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Counter-Strike 1.6

Re: Плагин PISS(обоссать труп игрока)  [Решено]

Сообщение Subb98 » 17 фев 2017, 22:19

Для начала, попробуйте оригинал (Вы должны зарегистрироваться, чтобы видеть ссылки.):

Код: Выделить всё
/*

Plugin: Amxx Piss
Version: 2.0
Author: KRoTaL (Based on TakeADookie by PaintLancer)


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

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 (cs/cz only), 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 (cs/cz only).
    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

    You need to enable Fun and Engine Modules for cs/cs-cz.
    You need to enable Engine Module for the other mods.

 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
//#define NO_CS_CZ




/***************************************************************************************************/

#include <amxmodx> 
#if !defined NO_CS_CZ
#include <fun>
#endif
#include <engine>


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"[AMXX] You have not access to this command.")
    return 
PLUGIN_HANDLED
}
if(
PissFlag[id])
    return 
PLUGIN_HANDLED

#if !defined NO_CS_CZ
new player_origin[3], players[32], inum=0distlast_dist=99999last_id 

get_user_origin
(id,player_origin,0
get_players(players,inum,"b"
if (
inum>0) { 
    for (new 
i=0;i<inum;i++) { 
        if (
players[i]!=id) { 
            
dist get_distance(player_origin,player_origins[players[i]]) 
            if (
dist<last_dist) { 
                
last_id players[i
                
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"), (get_cvar_num("amx_maxpees")>1) ? "s" ""
            return 
PLUGIN_CONTINUE 
        
}
        new 
player_name[32
        
get_user_name(idplayer_name31)
        
#if !defined NO_CS_CZ
        
new dead_name[32]
        
get_user_name(last_iddead_name31)
        
client_print(0,print_chat,"%s Is Pissing On %s's Dead Body !! HaHaHaHa !!"player_namedead_name)
        
#else
        
client_print(0,print_chat,"%s Is Pissing !!"player_name)
        
#endif
        
count_piss[id]+=1
        count_puddle
[id]=1
        
new ids[1]
        
ids[0]=id
        PissFlag
[id]=true
        aim
[id]=false
        
#if !defined NO_CS_CZ
        
if( (equali(mod_name,"cstrike")) || (equali(mod_name,"czero")) )
        {
            
client_cmd(id"weapon_knife")
            
set_user_maxspeed(id, -1.0)
        }
        
#endif
        
emit_sound(id,CHAN_VOICE,"piss/pissing.wav"1.0ATTN_NORM0PITCH_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 
    
while (div result) { 
        
div = (div result) / 
        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// framestart 
            
write_byte// framerate 
            
write_byte// life 
            
write_byte// width 
            
write_byte// noise 
            
write_byte255 // r, g, b 
            
write_byte255 // r, g, b 
            
write_byte// r, g, b 
            
write_byte200 // brightness 
            
write_byte10 // speed 
            
message_end()

            
message_beginMSG_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 
create_entity("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

    entity_set_vector
(puddle_entityEV_VEC_minsMinBox)
    
entity_set_vector(puddle_entityEV_VEC_maxsMaxBox)

    switch(
count_puddle[id])
    {
        case 
1:
        {          
            
entity_set_string(puddle_entityEV_SZ_classname"piss_puddle1")
            
entity_set_model(puddle_entity"models/piss/piss_puddle1.mdl")
        }
        case 
2:
        {          
            
entity_set_string(puddle_entityEV_SZ_classname"piss_puddle2")
            
entity_set_model(puddle_entity"models/piss/piss_puddle2.mdl")
        }
        case 
3:
        {          
            
entity_set_string(puddle_entityEV_SZ_classname"piss_puddle3")
            
entity_set_model(puddle_entity"models/piss/piss_puddle3.mdl")
        }
        case 
4:
        {          
            
entity_set_string(puddle_entityEV_SZ_classname"piss_puddle4")
            
entity_set_model(puddle_entity"models/piss/piss_puddle4.mdl")
        }
        case 
5:
        {          
            
entity_set_string(puddle_entityEV_SZ_classname"piss_puddle5")
            
entity_set_model(puddle_entity"models/piss/piss_puddle5.mdl")
            
#if defined NO_CS_CZ
               
PissFlag[id]=false
            
#endif
        
}
        default: {}
    }

    
entity_set_origin(puddle_entityaim_origin[id])
    
entity_set_int(puddle_entityEV_INT_solid3)   
    
entity_set_int(puddle_entityEV_INT_movetype6
    
entity_set_edict(puddle_entityEV_ENT_ownerid)

    
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)
    }
}

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)
        }
    }

    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.0ATTN_NORM0PITCH_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.0ATTN_NORM0PITCH_NORM
    
PissFlag[id]=false

    
new iCurrent

    
for (new i=i<count_piss[id] ; i++)
    {                
        
iCurrent find_ent_by_class(-1"piss_puddle1")
        if(
iCurrent != -1)
            
remove_entity(iCurrent)
        
iCurrent find_ent_by_class(-1"piss_puddle2")
        if(
iCurrent != -1)
            
remove_entity(iCurrent)
        
iCurrent find_ent_by_class(-1"piss_puddle3")
        if(
iCurrent != -1)
            
remove_entity(iCurrent)
        
iCurrent find_ent_by_class(-1"piss_puddle4")
        if(
iCurrent != -1)
            
remove_entity(iCurrent)
        
iCurrent find_ent_by_class(-1"piss_puddle5")
        if(
iCurrent != -1)
            
remove_entity(iCurrent)
      }
    
count_piss[id]=1

    
return PLUGIN_CONTINUE 


public 
piss_help(id
{
    
client_print(idprint_chat"To piss on a dead body you have to bind a key to: piss")
    
client_print(idprint_chat"Open your console and write: bind ^"key^" ^"piss^"")
    
client_print(idprint_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(idprint_chat"[AMXX] 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")

       return 
PLUGIN_CONTINUE 
}

public 
client_connect(id)
{
    
PissFlag[id]=false
    count_piss
[id]=1
    
    
return PLUGIN_CONTINUE
}

public 
client_disconnect(id)
{
    
reset_hud(id)

    return 
PLUGIN_CONTINUE
}

public 
plugin_init() 

    
register_plugin("AMXX Piss","2.0","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

    
return PLUGIN_CONTINUE

piss.txt:

Код: Выделить всё
"- Piss on a dead player"
fr:"Uriner sur un joueur mort"

"- Displays piss help"
fr:"Affiche l'aide pour uriner"

"[AMX] You have not access to this command."
fr:"[AMX] Vous n'avez pas acces a cette commande."

"You can only piss on a player %d time(s) in a round !"
fr:"Tu ne peux uriner sur un joueur que %d fois par round !"

"%s Is Pissing On %s's Dead Body !! HaHaHaHa !!"
fr:"%s est en train d'uriner sur le corps de %s !! HaHaHaHa !!"

"%s Is Pissing !!"
fr:"%s est en train d'uriner !!"

"There are no dead bodies around you."
fr:"Il n'y a aucun joueur mort autour de toi."

"To piss on a dead body you have to bind a key to: piss"
fr:"Pour uriner sur un corps, vous devez binder ^"piss^" sur une touche."

"Open your console and write: bind ^"key^" ^"piss^""
fr:"Ouvrez la console et tapez : bind ^"key^" ^"piss^""

"ex: bind ^"x^" ^"piss^""
fr:"ex: bind ^"x^" ^"piss^""

"[AMXX] For Piss help say /piss"
fr:"[AMX] Ecrivez /piss dans le chat pour lire l'aide."
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Плагин PISS(обоссать труп игрока)

Сообщение rostik98ua » 17 фев 2017, 22:41

Subb98 писал(а):Для начала, попробуйте оригинал (Вы должны зарегистрироваться, чтобы видеть ссылки.):

Код: Выделить всё
/*

Plugin: Amxx Piss
Version: 2.0
Author: KRoTaL (Based on TakeADookie by PaintLancer)


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

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 (cs/cz only), 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 (cs/cz only).
    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

    You need to enable Fun and Engine Modules for cs/cs-cz.
    You need to enable Engine Module for the other mods.

 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
//#define NO_CS_CZ




/***************************************************************************************************/

#include <amxmodx> 
#if !defined NO_CS_CZ
#include <fun>
#endif
#include <engine>


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, "[AMXX] You have not access to this command.")
    return PLUGIN_HANDLED
}
if(
PissFlag[id])
    return PLUGIN_HANDLED

#if !defined NO_CS_CZ
new player_origin[3], players[32], 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++) { 
        if 
(players[i]!=id) { 
            dist 
= get_distance(player_origin,player_origins[players[i]]) 
            if 
(dist<last_dist) { 
                last_id 
= players[i] 
                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"), (get_cvar_num("amx_maxpees")>1) ? "s" : "") 
            return PLUGIN_CONTINUE 
        
}
        new player_name[32] 
        get_user_name
(id, player_name, 31)
        #if !defined NO_CS_CZ
        new dead_name[32]
        get_user_name(last_id, dead_name, 31)
        client_print(0,print_chat,"%s Is Pissing On %s's Dead Body !! HaHaHaHa !!", player_name, dead_name)
        #else
        client_print(0,print_chat,"%s Is Pissing !!", player_name)
        #endif
        count_piss[id]+=1
        count_puddle
[id]=1
        new ids
[1]
        ids[0]=id
        PissFlag
[id]=true
        aim
[id]=false
        
#if !defined NO_CS_CZ
        if( (equali(mod_name,"cstrike")) || (equali(mod_name,"czero")) )
        {
            client_cmd(id, "weapon_knife")
            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 
= create_entity("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

    entity_set_vector
(puddle_entity, EV_VEC_mins, MinBox)
    entity_set_vector(puddle_entity, EV_VEC_maxs, MaxBox)

    switch(count_puddle[id])
    {
        case 1:
        {          
            entity_set_string
(puddle_entity, EV_SZ_classname, "piss_puddle1")
            entity_set_model(puddle_entity, "models/piss/piss_puddle1.mdl")
        }
        case 2:
        {          
            entity_set_string
(puddle_entity, EV_SZ_classname, "piss_puddle2")
            entity_set_model(puddle_entity, "models/piss/piss_puddle2.mdl")
        }
        case 3:
        {          
            entity_set_string
(puddle_entity, EV_SZ_classname, "piss_puddle3")
            entity_set_model(puddle_entity, "models/piss/piss_puddle3.mdl")
        }
        case 4:
        {          
            entity_set_string
(puddle_entity, EV_SZ_classname, "piss_puddle4")
            entity_set_model(puddle_entity, "models/piss/piss_puddle4.mdl")
        }
        case 5:
        {          
            entity_set_string
(puddle_entity, EV_SZ_classname, "piss_puddle5")
            entity_set_model(puddle_entity, "models/piss/piss_puddle5.mdl")
            #if defined NO_CS_CZ
               PissFlag[id]=false
            
#endif
        }
        default: {}
    }

    entity_set_origin(puddle_entity, aim_origin[id])
    entity_set_int(puddle_entity, EV_INT_solid, 3)   
    entity_set_int
(puddle_entity, EV_INT_movetype, 6) 
    entity_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)
    }
}

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)
        }
    }

    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=; i<count_piss[id] ; i++)
    {                
        iCurrent 
= find_ent_by_class(-1, "piss_puddle1")
        if(iCurrent != -1)
            remove_entity(iCurrent)
        iCurrent = find_ent_by_class(-1, "piss_puddle2")
        if(iCurrent != -1)
            remove_entity(iCurrent)
        iCurrent = find_ent_by_class(-1, "piss_puddle3")
        if(iCurrent != -1)
            remove_entity(iCurrent)
        iCurrent = find_ent_by_class(-1, "piss_puddle4")
        if(iCurrent != -1)
            remove_entity(iCurrent)
        iCurrent = find_ent_by_class(-1, "piss_puddle5")
        if(iCurrent != -1)
            remove_entity(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, "[AMXX] 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")

       return PLUGIN_CONTINUE 
}

public client_connect(id)
{
    PissFlag[id]=false
    count_piss
[id]=1
    
    return PLUGIN_CONTINUE
}

public client_disconnect(id)
{
    reset_hud(id)

    return PLUGIN_CONTINUE
}

public plugin_init() 
{ 
    register_plugin
("AMXX Piss","2.0","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

    return PLUGIN_CONTINUE
}

piss.txt:

Код: Выделить всё
"- Piss on a dead player"
fr:"Uriner sur un joueur mort"

"- Displays piss help"
fr:"Affiche l'aide pour uriner"

"[AMX] You have not access to this command."
fr:"[AMX] Vous n'avez pas acces a cette commande."

"You can only piss on a player %d time(s) in a round !"
fr:"Tu ne peux uriner sur un joueur que %d fois par round !"

"%s Is Pissing On %s's Dead Body !! HaHaHaHa !!"
fr:"%s est en train d'uriner sur le corps de %s !! HaHaHaHa !!"

"%s Is Pissing !!"
fr:"%s est en train d'uriner !!"

"There are no dead bodies around you."
fr:"Il n'y a aucun joueur mort autour de toi."

"To piss on a dead body you have to bind a key to: piss"
fr:"Pour uriner sur un corps, vous devez binder ^"piss^" sur une touche."

"Open your console and write: bind ^"key^" ^"piss^""
fr:"Ouvrez la console et tapez : bind ^"key^" ^"piss^""

"ex: bind ^"x^" ^"piss^""
fr:"ex: bind ^"x^" ^"piss^""

"[AMXX] For Piss help say /piss"
fr:"[AMX] Ecrivez /piss dans le chat pour lire l'aide."

Оригинал работает нормально, но я хочу перевести на русский и что бы только на трупов можно было ссать. А в исходнику я не знаю как настроить что бы было как в файле amxx_piss_cs_cz.amxx
Аватара пользователя
rostik98ua
 
Сообщения: 9
Зарегистрирован: 01 сен 2013, 00:17
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Counter-Strike 1.6

Re: Плагин PISS(обоссать труп игрока)

Сообщение sa1me » 17 фев 2017, 22:50

Не мог не скинуть. \o/
Аватара пользователя
sa1me
 
Сообщения: 361
Зарегистрирован: 07 апр 2014, 20:51
Откуда: pfnAddToFullPack
Благодарил (а): 174 раз.
Поблагодарили: 177 раз.
Опыт программирования: Меньше недели

Re: Плагин PISS(обоссать труп игрока)

Сообщение rostik98ua » 17 фев 2017, 22:51

sa1me писал(а):
Не мог не скинуть. \o/

Прям про меня :ROFL:
Аватара пользователя
rostik98ua
 
Сообщения: 9
Зарегистрирован: 01 сен 2013, 00:17
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Counter-Strike 1.6

Re: Плагин PISS(обоссать труп игрока)

Сообщение БиЗоН » 17 фев 2017, 23:14

Код: Выделить всё
if ( (get_cvar_num("amx_piss_admin")==1) && !(get_user_flags(id) & ADMIN_LEVEL_A) 


А вот в чём проблема - сказать не могу.
rostik98ua писал(а):Кто больше сображает чем я, скажи в чем проблема!

Потому что я соображаю меньше, чем ты.

Избавься от сие чуда
Вечно занятой. Вечно в павне.
Аватара пользователя
БиЗоН
 
Сообщения: 165
Зарегистрирован: 24 мар 2014, 21:05
Благодарил (а): 10 раз.
Поблагодарили: 49 раз.
Опыт программирования: Больше трех лет

Re: Плагин PISS(обоссать труп игрока)

Сообщение rostik98ua » 17 фев 2017, 23:16

БиЗоН писал(а):
Код: Выделить всё
if ( (get_cvar_num("amx_piss_admin")==1) && !(get_user_flags(id) & ADMIN_LEVEL_A) )


А вот в чём проблема - сказать не могу.
rostik98ua писал(а):Кто больше сображает чем я, скажи в чем проблема!

Потому что я соображаю меньше, чем ты.

Избавься от сие чуда

Тот код что ты прислал, делает если значение amx_piss_admin = 1, то только админы могут ссать, а если 0 то все! Это никак вроде к чату не должно относится...
Аватара пользователя
rostik98ua
 
Сообщения: 9
Зарегистрирован: 01 сен 2013, 00:17
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Counter-Strike 1.6

Re: Плагин PISS(обоссать труп игрока)

Сообщение Andrey777 » 18 фев 2017, 00:16

Побольше бы таких серверов в инете, гляди и онлайн поднимется на нормальных серверах=)
Аватара пользователя
Andrey777
 
Сообщения: 147
Зарегистрирован: 09 янв 2012, 03:38
Благодарил (а): 35 раз.
Поблагодарили: 8 раз.

Re: Плагин PISS(обоссать труп игрока)

Сообщение БиЗоН » 18 фев 2017, 16:54

rostik98ua писал(а):
БиЗоН писал(а):
Код: Выделить всё
if ( (get_cvar_num("amx_piss_admin")==1) && !(get_user_flags(id) & ADMIN_LEVEL_A) )


А вот в чём проблема - сказать не могу.
rostik98ua писал(а):Кто больше сображает чем я, скажи в чем проблема!

Потому что я соображаю меньше, чем ты.

Избавься от сие чуда

Тот код что ты прислал, делает если значение amx_piss_admin = 1, то только админы могут ссать, а если 0 то все! Это никак вроде к чату не должно относится...


Никакого значения он "не делает". Проверяется квар "amx_piss_admin" и наличие флага "ADMIN_LEVEL_A".

Добавлено спустя 41 секунду:
Больше нет ни одного ограничения какой-либо функции, которая бы работала с флагами.
Вечно занятой. Вечно в павне.
Аватара пользователя
БиЗоН
 
Сообщения: 165
Зарегистрирован: 24 мар 2014, 21:05
Благодарил (а): 10 раз.
Поблагодарили: 49 раз.
Опыт программирования: Больше трех лет


Вернуться в Вопросы по AMXX и его плагинам

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8