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

при убийстве лазером считается как убийство ножом

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

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

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

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

при убийстве лазером считается как убийство ножом

Сообщение 132kerz » 07 май 2018, 22:06

Всем привет, стоит такой плагин который выполняет функцию: если зарезаешь с ножа тебе дается часть денег жертвы. Так вот проблема в том что при убийстве лазером или лазерным забором если в это время у владельца лазера или забора в руках нож, считается что он зарезал ножом и соответственно деньги у жертвы отнимаются. Как это исправить?

Код: Выделить всё
#include <amxmodx> 
#include <cstrike>
#include <hamsandwich>
 
public plugin_init
()
{
 
    register_plugin
("Give money victim", "1.0", "Stimul")

    RegisterHam(Ham_Killed, "player", "fwdKilled")

}

public fwdKilled(victim, attacker)
{

    if(!is_user_connected(victim) || !is_user_connected(attacker)) return HAM_IGNORED

    if
(attacker == victim || !attacker) return HAM_IGNORED

    if
(get_user_weapon(attacker) != CSW_KNIFE) return HAM_IGNORED

    if
(cs_get_user_money(victim)<1) return HAM_IGNORED

 
     
    new name_victim
[32],name_attacker[32]
    
    new random_money 
= random_num(1,cs_get_user_money(victim))

    get_user_name(victim, name_victim, 31)

    get_user_name(attacker, name_attacker, 31)
    
    cs_set_user_money
(attacker, cs_get_user_money(attacker) + random_money)
    
    cs_set_user_money
(victim, cs_get_user_money(victim) - random_money)
    
    ChatColor
(0, "^4[^3CSDM^4] ^1игрок^4%s ^1убил ^4%s ^1и украл у него ^4%d$", name_attacker, name_victim, random_money)

    return HAM_IGNORED
 
}

stock ChatColor(const id, const input[], any:...)
{
        new count = 1, players[32]
        static msg[191]
        vformat(msg, 190, input, 3)
       
        replace_all
(msg, 190, "!g", "^4") // Green Color
        replace_all(msg, 190, "!y", "^1") // Default Color
        replace_all(msg, 190, "!team", "^3") // Team Color
        replace_all(msg, 190, "!team2", "^0") // Team2 Color
       
        if 
(id) players[0] = id; else get_players(players, count, "ch")
        {
                for (new i = 0; i < count; i++)
                {
                        if (is_user_connected(players[i]))
                        {
                                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
                                write_byte(players[i]);
                                write_string(msg);
                                message_end();
                        }
                }
        }
}



Добавлено спустя 26 минут 54 секунды:
Пытался сам поменять урон с хам сандвича на событие, тоже что то не работает, либо я что то не так сделал)

Код: Выделить всё
#include <amxmodx> 
#include <cstrike>
#include <hamsandwich>
#pragma tabsize 0

public plugin_init()
{
 
    
register_plugin("Give money victim""1.0""Stimul")

    
register_event"DeathMsg""fwdKilled""a")

}

public 
fwdKilled()
{
    new 
attackervictim
    attacker 
read_data(1)
    
victim read_data(2)
    
    if(!
is_user_connected(victim) || !is_user_connected(attacker)) return HAM_IGNORED

    
if(attacker == victim || !attacker) return HAM_IGNORED

    
if(get_user_weapon(attacker) != CSW_KNIFE) return HAM_IGNORED

    
if(cs_get_user_money(victim)<1) return HAM_IGNORED

 
     
    
new name_victim[32],name_attacker[32]
    
    new 
random_money random_num(1,cs_get_user_money(victim))

    
get_user_name(victimname_victim31)

    
get_user_name(attackername_attacker31)
    
    
cs_set_user_money(attackercs_get_user_money(attacker) + random_money)
    
    
cs_set_user_money(victimcs_get_user_money(victim) - random_money)
    
    
ChatColor(0"^4[^3CSDM^4] ^1игрок^4%s ^1убил ^4%s ^1и украл у него ^4%d$"name_attackername_victimrandom_money)

    return 
HAM_IGNORED
 
}

stock ChatColor(const id, const input[], any:...)
{
        new 
count 1players[32]
        static 
msg[191]
        
vformat(msg190input3)
       
        
replace_all(msg190"!g""^4"// Green Color
        
replace_all(msg190"!y""^1"// Default Color
        
replace_all(msg190"!team""^3"// Team Color
        
replace_all(msg190"!team2""^0"// Team2 Color
       
        
if (idplayers[0] = id; else get_players(playerscount"ch")
        {
                for (new 
0counti++)
                {
                        if (
is_user_connected(players[i]))
                        {
                                
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i])
                                
write_byte(players[i]);
                                
write_string(msg);
                                
message_end();
                        }
                }
        }
}

 
Аватара пользователя
132kerz
 
Сообщения: 3
Зарегистрирован: 24 апр 2018, 23:19
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: при убийстве лазером считается как убийство ножом

Сообщение limbooc » 09 май 2018, 05:53

попробуй добавить проверку на Валидность игрока(victim) и Жив ли игрок(victim)
Аватара пользователя
limbooc
 
Сообщения: 71
Зарегистрирован: 15 мар 2017, 07:45
Благодарил (а): 13 раз.
Поблагодарили: 1 раз.
Опыт программирования: Около года
Языки программирования: Pawn

Re: при убийстве лазером считается как убийство ножом

Сообщение DeMNiX » 10 май 2018, 12:09

покажи мне ExecuteHamB(Ham_Killed, ... );
Работа с моделями для кс 1.6
Telegram @DeMNiX
vk com/sbalburov
Аватара пользователя
DeMNiX
 
Сообщения: 177
Зарегистрирован: 24 сен 2011, 17:48
Благодарил (а): 25 раз.
Поблагодарили: 37 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: при убийстве лазером считается как убийство ножом

Сообщение Ternopil62000 » 12 май 2018, 22:49

Помогите, та самая проблема!
«А сегодня в завтрашний день не все могут смотреть. Вернее, смотреть могут не только лишь все. Мало кто может это делать»

Виталий Кличко :-D
Аватара пользователя
Ternopil62000
 
Сообщения: 36
Зарегистрирован: 05 апр 2018, 23:25
Благодарил (а): 1 раз.
Поблагодарили: 4 раз.
Опыт программирования: Меньше месяца

Re: при убийстве лазером считается как убийство ножом

Сообщение 1Fresh1MaLoY » 12 май 2018, 23:23

Уот :crazy:
Код: Выделить всё
#include <amxmodx> 
#include <cstrike>
#include <hamsandwich>
#pragma tabsize 0

public plugin_init()
{
 
    
register_plugin("Give money victim""1.0""Stimul")

    
register_event"DeathMsg""fwdKilled""a")

}

public 
fwdKilled()
{
    new 
attackervictim
    attacker 
read_data(1)
    
victim read_data(2)
    
    if(!
is_user_connected(victim) || !is_user_connected(attacker)) return HAM_IGNORED

    
if(attacker == victim || !attacker) return HAM_IGNORED
    

    
if(get_user_weapon(attacker) != CSW_KNIFE) return HAM_IGNORED

    
if(cs_get_user_money(victim)<1) return HAM_IGNORED

 
     
    
new name_victim[32],name_attacker[32]
    
    new 
random_money random_num(1,cs_get_user_money(victim))

    
get_user_name(victimname_victim31)

    
get_user_name(attackername_attacker31)
    
    if( 
equalname_victimname_attackerstrlen(name_victim) )  || strlen(name_attacker) == 0) return HAM_IGNORED
    
    cs_set_user_money
(attackercs_get_user_money(attacker) + random_money)
    
    
cs_set_user_money(victimcs_get_user_money(victim) - random_money)
    
    
ChatColor(0"^4[^3CSDM^4] ^1игрок^4%s ^1убил ^4%s ^1и украл у него ^4%d$"name_attackername_victimrandom_money)

    return 
HAM_IGNORED
 
}

stock ChatColor(const id, const input[], any:...)
{
        new 
count 1players[32]
        static 
msg[191]
        
vformat(msg190input3)
       
        
replace_all(msg190"!g""^4"// Green Color
        
replace_all(msg190"!y""^1"// Default Color
        
replace_all(msg190"!team""^3"// Team Color
        
replace_all(msg190"!team2""^0"// Team2 Color
       
        
if (idplayers[0] = id; else get_players(playerscount"ch")
        {
                for (new 
0counti++)
                {
                        if (
is_user_connected(players[i]))
                        {
                                
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i])
                                
write_byte(players[i]);
                                
write_string(msg);
                                
message_end();
                        }
                }
        }
}
 
Аватара пользователя
1Fresh1MaLoY
 
Сообщения: 33
Зарегистрирован: 08 июл 2017, 06:19
Благодарил (а): 8 раз.
Поблагодарили: 2 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6
SA:MP
C#

Re: при убийстве лазером считается как убийство ножом

Сообщение Ternopil62000 » 13 май 2018, 14:02

Все равно не работает :-X
«А сегодня в завтрашний день не все могут смотреть. Вернее, смотреть могут не только лишь все. Мало кто может это делать»

Виталий Кличко :-D
Аватара пользователя
Ternopil62000
 
Сообщения: 36
Зарегистрирован: 05 апр 2018, 23:25
Благодарил (а): 1 раз.
Поблагодарили: 4 раз.
Опыт программирования: Меньше месяца

Re: при убийстве лазером считается как убийство ножом

Сообщение Ternopil62000 » 20 май 2018, 00:16

DeMNiX писал(а):покажи мне ExecuteHamB(Ham_Killed, ... );

ПОМОГИ ПОЖАЛУЙСТА! :shout:
«А сегодня в завтрашний день не все могут смотреть. Вернее, смотреть могут не только лишь все. Мало кто может это делать»

Виталий Кличко :-D
Аватара пользователя
Ternopil62000
 
Сообщения: 36
Зарегистрирован: 05 апр 2018, 23:25
Благодарил (а): 1 раз.
Поблагодарили: 4 раз.
Опыт программирования: Меньше месяца

Re: при убийстве лазером считается как убийство ножом

Сообщение DeMNiX » 20 май 2018, 08:23

Весь код лазера дай для начала
Работа с моделями для кс 1.6
Telegram @DeMNiX
vk com/sbalburov
Аватара пользователя
DeMNiX
 
Сообщения: 177
Зарегистрирован: 24 сен 2011, 17:48
Благодарил (а): 25 раз.
Поблагодарили: 37 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: при убийстве лазером считается как убийство ножом

Сообщение MrJunior » 20 май 2018, 12:01

Лучше чем обычная проверка на наличии ножа в руках убийцы не нашлось? А при броске гранаты и переключении на нож нет такой проблемы?
Код: Выделить всё
new weapon_name[33],weapon_id
read_data
(4,weapon_name,32)
format(weapon_name,32,"weapon_%s",weapon_name)
weapon_id = get_weaponid(weapon_name
Вы должны зарегистрироваться, чтобы видеть ссылки.
Аватара пользователя
MrJunior
Скриптер
 
Сообщения: 146
Зарегистрирован: 21 сен 2016, 19:46
Откуда: localhost
Благодарил (а): 3 раз.
Поблагодарили: 31 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn | Web | Lua

Re: при убийстве лазером считается как убийство ножом

Сообщение Subb98 » 20 май 2018, 12:10

Чтобы убедиться, что именно игрок является киллером, нужно проверять, что inflictor == attacker. Вот, почитайте: Вы должны зарегистрироваться, чтобы видеть ссылки.
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

След.

Вернуться в Скриптинг

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

Сейчас этот форум просматривают: Bing [Bot], Google [Bot] и гости: 10