Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

2 страниц V   1 2

Anti rat

, ПЛИЗ Помогите переделать
Статус пользователя borz095
сообщение 13.8.2012, 19:21
Сообщение #1
Стаж: 16 лет

Сообщений: 9
Благодарностей: 1
Полезность: 0

Всем привет я уже оставлял на других форумах помощь но они мне не помогли вы последняя надаежда. Я хочу изменить плагин Anti Rat хочу оттуда убрать предупреждения и сделать вместо кика чтобы снималось 9000$ и чтобы писала всем сообщение что игрок убил сзади и у него снято 9000$
вот плагин
Код
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#define IsPlayer(%1)  ( 1 <= %1 <= MaxPlayers )
new MaxPlayers,nick[32],detections[33]
static mapname[32]
public plugin_init(){
        get_mapname(mapname,31)
        if (containi(mapname,"35hp_")==-1){
                return PLUGIN_HANDLED_MAIN
        }
        if (containi(mapname,"ka_")==-1){
                return PLUGIN_HANDLED_MAIN
        }
        register_plugin( "AntiRat", "1.0", "<PAWNcoder>")
        RegisterHam( Ham_TakeDamage, "player", "detectDamage" )
        register_clcmd("prevention", "prevention")
        MaxPlayers = get_maxplayers()
}
public client_connect(id){
        detections[id]=0
}
public detectDamage(Victim, Inflictor, Attacker, Float:Damage, Damagebits){
        if(IsPlayer(Attacker) && Damage==195.0){
                client_cmd(Attacker, "prevention")
        }
}
public prevention(id){
        set_hudmessage(255, 255, 255, -1.0, 0.4, 6.0, 12.0, 5.0)
        client_cmd(id, "speak danger")
        switch(detections[id]){
                case 0:{
                        show_hudmessage(id, "[1/3] Don't cut in a back!!!")
                }
                case 1:{
                        show_hudmessage(id, "[2/3] Don't cut in a back!!!")
                }
                case 2:{
                        get_user_name(id,nick,sizeof nick -1)
                        client_print(0,print_chat,"[Anti-Rat] Player %s was kicked!!!", nick)
                        server_cmd("kick #%d Don't cut in a back!!!",get_user_userid(id))
                }
        }
        detections[id]++
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Sonic2790
сообщение 13.8.2012, 22:09
Сообщение #2


Стаж: 18 лет

Сообщений: 236
Благодарностей: 38
Полезность: 142

Я конечно плохо знаю pawn, но попробуй такой вариант:
anti_rat_new.sma
Код
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <cstrike>

#define IsPlayer(%1)  ( 1 <= %1 <= MaxPlayers )
new MaxPlayers,nick[32],detections[33],money
static mapname[32]
public plugin_init(){
        get_mapname(mapname,31)
        if (containi(mapname,"35hp_")==-1){
                return PLUGIN_HANDLED_MAIN
        }
        if (containi(mapname,"ka_")==-1){
                return PLUGIN_HANDLED_MAIN
        }
        register_plugin( "AntiRat", "1.0", "<PAWNcoder>")
        RegisterHam( Ham_TakeDamage, "player", "detectDamage" )
        register_clcmd("prevention", "prevention")
        MaxPlayers = get_maxplayers()
}
public client_connect(id){
        detections[id]=0
}
public detectDamage(Victim, Inflictor, Attacker, Float:Damage, Damagebits){
        if(IsPlayer(Attacker) && Damage==195.0){
                client_cmd(Attacker, "prevention")
        }
}
public prevention(id){
        client_cmd(id, "speak danger")
        switch(detections[id]){
                case 0:{
                    if(is_user_alive(id))
                        {
                        get_user_name(id,nick,sizeof nick -1)
                        money=cs_get_user_money(id)
                        cs_set_user_money(id,money-9000)
                        client_print(0,print_chat,"[Anti-Rat] Игрок %s убил врага со спины!", nick)
                        }
                        else
                        {
                        
                        }
                }
        }
        detections[id]++
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя borz095
сообщение 13.8.2012, 22:27
Сообщение #3
Стаж: 16 лет

Сообщений: 9
Благодарностей: 1
Полезность: 0

Спасибо как проверю отпищусь

У меня вот такую ошибку пишет
Код
//// kf_antirat.sma
// C:\Users\╧юы№чютрЄхы№\Desktop\╥рьхЁырэ\scripting\kf_antirat.sma(22) : warning
209: function "plugin_init" should return a value
// Header size:            860 bytes
// Code size:             3476 bytes
// Data size:             1444 bytes
// Stack/heap size:      16384 bytes; max. usage is unknown, due to recursion
// Total requirements:   22164 bytes
//
// 1 Warning.
// Done.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Sonic2790
сообщение 13.8.2012, 22:36
Сообщение #4


Стаж: 18 лет

Сообщений: 236
Благодарностей: 38
Полезность: 142

Хм, проверь, мож так работает :D
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя borz095
сообщение 13.8.2012, 22:41
Сообщение #5
Стаж: 16 лет

Сообщений: 9
Благодарностей: 1
Полезность: 0

В логах дофига ощибок пишет боюсь ставить может чето надо добавить?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Sonic2790
сообщение 13.8.2012, 23:18
Сообщение #6


Стаж: 18 лет

Сообщений: 236
Благодарностей: 38
Полезность: 142

А начальный вариант вообще работает? Там так же ошибки при компилировании - и на ботах чет он не работает
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Sonic2790
сообщение 14.8.2012, 0:04
Сообщение #7


Стаж: 18 лет

Сообщений: 236
Благодарностей: 38
Полезность: 142

Попробуй такой вариант. Вырезал все, что можно было :D Зато без ошибок и вроде работает. Если у игрока хватает денег (то есть больше или равно 9000), то выводит сообщение в чат ( [Anti-Rat] Игрок %s убил врага со спины!) и забирает 9000. А если меньше этой суммы - только выводит сообщение в чат.
как то так
Код
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <cstrike>


#define IsPlayer(%1)  ( 1 <= %1 <= MaxPlayers )
new MaxPlayers,nick[32],detections[33]

public plugin_init(){
        register_plugin( "AntiRat", "1.0", "<PAWNcoder>")
        RegisterHam( Ham_TakeDamage, "player", "detectDamage" )
        register_clcmd("prevention", "prevention")
        MaxPlayers = get_maxplayers()
}
public client_connect(id){
        detections[id]=0
}
public detectDamage(Victim, Inflictor, Attacker, Float:Damage, Damagebits){
        if(IsPlayer(Attacker) && Damage==195.0){
                client_cmd(Attacker, "prevention")
        }
}
public prevention(id){
        client_cmd(id, "speak danger")
        switch(detections[id]){
                case 0:{
                        new Money[32]
                        Money[id] = cs_get_user_money(id)
                        get_user_name(id,nick,sizeof nick -1)
                        if(Money[id]>=9000) {
                        cs_set_user_money(id,Money[id] - 9000)
                        client_print(0,print_chat,"[Anti-Rat] Игрок %s убил врага со спины!", nick)
                        } else {
                        client_print(0,print_chat,"[Anti-Rat] Игрок %s убил врага со спины!", nick)
                        }
                }
        }
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
vip-servera
сообщение 14.8.2012, 3:14
Сообщение #8
Стаж: 15 лет

Сообщений: 211
Благодарностей: 11
Полезность: 0

Убери типо этих вешей
Код
detections[33]
она отвечает за предупреждения и добавь return не будет проблем!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 14.8.2012, 9:11
Сообщение #9
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

vip-servera,
Попробуй:

Скрытый текст
Код
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <cstrike>

#define IsPlayer(%1) (1 <= %1 <= MaxPlayers)
new MaxPlayers, detections[33]

public plugin_init()
{
    register_plugin( "Anti Rat", "1.5", "Sutar")
    
    RegisterHam(Ham_TakeDamage, "player", "detectDamage")
    register_clcmd("prevention", "prevention")
    
    MaxPlayers = get_maxplayers()
}

public client_connect(id)
    detections[id] = 0

public detectDamage(Victim, Inflictor, Attacker, Float:Damage, Damagebits)
{
    new mapname[32]
    get_mapname(mapname, 31)
    if(containi(mapname, "35hp_") == -1 || containi(mapname, "ka_") == -1)
        return PLUGIN_HANDLED

    if(IsPlayer(Attacker) && Damage==195.0)
        client_cmd(Attacker, "prevention")
    return PLUGIN_CONTINUE
}

public prevention(id)
{

    switch(detections[id])
    {
        case 0: client_print(id, print_chat, "Не бей сзади. Ещё 2 раза и -9000$")
        case 1: client_print(id, print_chat, "Не бей сзади. Ещё 1 раз и -9000$")
        case 2:
        {
            new nick[33]
            get_user_name(id, nick, 32)
            client_print(0, print_chat, "Игрок %s убил 3 раза сзади, и заплатил 9000$", nick)
            cs_set_user_money(id, cs_get_user_money(id) - 9000);
            detections[id] = 0;
        }
    }
    
    detections[id]++
}


Созрани в кодировке UTF-8 no BOM и компилируй.

Отредактировал: Orty_Hart, - 14.8.2012, 9:13
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Sonic2790
сообщение 14.8.2012, 11:26
Сообщение #10


Стаж: 18 лет

Сообщений: 236
Благодарностей: 38
Полезность: 142

Orty_Hart, ТС просил без предупреждений.
Скрытый текст
Код
    if(containi(mapname, "35hp_") == -1 || containi(mapname, "ka_") == -1)
        return PLUGIN_HANDLED
Вообще не понимаю зачем оно тут?
+ ты забыл проверку на кол-во денег у игрока.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Surf
сообщение 14.8.2012, 11:30
Сообщение #11


Стаж: 14 лет

Сообщений: 1089
Благодарностей: 501
Полезность: 583

вообще немного глупо сделано, если в протектор вписать команду "prevention" то можно крысить сколько хочешь, наказания не будет
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 14.8.2012, 12:19
Сообщение #12
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

Sonic2790,
если в название карты, есть приставка "35hp_" или "ka_" - функция заканчивается.

и зачем проверку? если у играка меньше 9000$ у него заберёт всё что есть, если больше, заберёт только 9000$, зачем проверка?

Surf,
Я зафиксил.
Если сделано 3 удара, на 3тем - забирает деньги. Потом снова нужно делать 3 удара.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Surf
сообщение 14.8.2012, 12:37
Сообщение #13


Стаж: 14 лет

Сообщений: 1089
Благодарностей: 501
Полезность: 583

Orty_Hart,
Ничего ты не "зафиксил"
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Sonic2790
сообщение 14.8.2012, 13:04
Сообщение #14


Стаж: 18 лет

Сообщений: 236
Благодарностей: 38
Полезность: 142

Цитата(Orty_Hart @ 14.8.2012, 13:19) *
если в название карты, есть приставка "35hp_" или "ka_" - функция заканчивается.

и зачем проверку? если у играка меньше 9000$ у него заберёт всё что есть, если больше, заберёт только 9000$, зачем проверка?


1) Бред, т.к. На стандартных картах он нафиг не нужен. Там 1 удар с ножом сделаешь, игрок повернется (ну или хотя бы боком встанет) и уже плагин не чего не сделает. Уж лучше тогда amx'ом отключать плагин на таких картах.
2) Попробуй. Потом поймешь почему нужна проверка. Я пробовал играть на 35hp_2 с ботами. Стартмоней 16000. Убил, Убил = 0 А потом когда еще раз убил появилась вообще не понятная сумма!


Surf, а каким образом можно изменить этот плагин от вмешательства Протектора? Да и я думаю что не все (а уж тем более игроки) будут знать, что именно "prevention" такая команда в плагине?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Surf
сообщение 14.8.2012, 13:16
Сообщение #15


Стаж: 14 лет

Сообщений: 1089
Благодарностей: 501
Полезность: 583

Цитата
а каким образом можно изменить этот плагин от вмешательства Протектора?

Код
client_cmd(Attacker, "prevention")
->
prevention(Attacker)


Также:
Код
cs_set_user_money(id, max(0, cs_get_user_money(id) - 9000), 1);
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Sonic2790
сообщение 14.8.2012, 13:29
Сообщение #16


Стаж: 18 лет

Сообщений: 236
Благодарностей: 38
Полезность: 142

Цитата(Surf @ 14.8.2012, 14:16) *
Также:
Код
cs_set_user_money(id, max(0, cs_get_user_money(id) - 9000), 1);


Расшифруй плиз эту строчку. Просто когда я читал про cs_set_user_money - что то не видел такого.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 14.8.2012, 13:36
Сообщение #17
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

Surf,
Цитата
public prevention(id)
{

switch(detections[id])
{
case 0: client_print(id, print_chat, "Не бей сзади. Ещё 2 раза и -9000$")
case 1: client_print(id, print_chat, "Не бей сзади. Ещё 1 раз и -9000$")
case 2:
{
new nick[33]
get_user_name(id, nick, 32)
client_print(0, print_chat, "Игрок %s убил 3 раза сзади, и заплатил 9000$", nick)
cs_set_user_money(id, cs_get_user_money(id) - 9000);
detections[id] = 0;
}
}

detections[id]++
}


слепой или очочки купить нужно?

Цитата(Sonic2790 @ 14.8.2012, 14:04) *
1) Бред, т.к. На стандартных картах он нафиг не нужен. Там 1 удар с ножом сделаешь, игрок повернется (ну или хотя бы боком встанет) и уже плагин не чего не сделает. Уж лучше тогда amx'ом отключать плагин на таких картах.
2) Попробуй. Потом поймешь почему нужна проверка. Я пробовал играть на 35hp_2 с ботами. Стартмоней 16000. Убил, Убил = 0 А потом когда еще раз убил появилась вообще не понятная сумма!

ты что инвалид?
Я ЗАКРЫЛ ПЛАГИН, НА КАРТАХ 35hp_, так понятно?

Отредактировал: Orty_Hart, - 14.8.2012, 13:39
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Sonic2790
сообщение 14.8.2012, 13:44
Сообщение #18


Стаж: 18 лет

Сообщений: 236
Благодарностей: 38
Полезность: 142

Orty_Hart, коллега, перестаньте агриться. Перечитайте еще раз мое сообщение. Зачем ЗАКРЫВАТЬ на knife картах? Смысл тогда от этого плагина? Этот плагин предупреждает ТОЛЬКО при убийстве в спину, а не удар ножом в спину.

ps.gif Надо как следует читать сообщения. И если не понимаешь суть плагина, хотя бы установить его на тест сервер и проверить.

ps.gif ps.gif ТС, хоть бы отписался, такое тебе надо было или нет =)

Отредактировал: Sonic2790, - 14.8.2012, 13:48
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 14.8.2012, 13:56
Сообщение #19
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

Sonic2790,
ладно, если такие умные, напишите сами и лучше.

Вот мой код:

Скрытый текст
Код
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <cstrike>

#define IsPlayer(%1) (1 <= %1 <= MaxPlayers)
new MaxPlayers, detections[33]

public plugin_init()
{
    register_plugin( "Anti Rat", "1.5", "Sutar")
    
    RegisterHam(Ham_TakeDamage, "player", "detectDamage")
    register_clcmd("prevention", "prevention")
    
    MaxPlayers = get_maxplayers()
}

public client_connect(id)
    detections[id] = 0

public detectDamage(Victim, Inflictor, Attacker, Float:Damage, Damagebits)
{
    if(IsPlayer(Attacker) && Damage==195.0)
        client_cmd(Attacker, "prevention")
    return PLUGIN_CONTINUE
}

public prevention(id)
{

    switch(detections[id])
    {
        case 0: client_print(id, print_chat, "Не бей сзади. Ещё 2 раза и -9000$")
        case 1: client_print(id, print_chat, "Не бей сзади. Ещё 1 раз и -9000$")
        case 2:
        {
            new nick[33]
            get_user_name(id, nick, 32)
            client_print(0, print_chat, "Игрок %s убил 3 раза сзади, и заплатил 9000$", nick)
            cs_set_user_money(id, cs_get_user_money(id) - 9000);
            detections[id] = 0;
        }
    }
    
    detections[id]++
}


Отредактировал: Orty_Hart, - 14.8.2012, 13:56
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Surf
сообщение 14.8.2012, 14:02
Сообщение #20


Стаж: 14 лет

Сообщений: 1089
Благодарностей: 501
Полезность: 583

Orty_Hart,
Цитата(Orty_Hart @ 14.8.2012, 17:36) *
Surf, слепой или очочки купить нужно?


А теперь еще раз прочитай:
Цитата(Surf @ 14.8.2012, 15:30) *
вообще немного глупо сделано, если в протектор вписать команду "prevention" то можно крысить сколько хочешь, наказания не будет


Потом это:
Цитата
а каким образом можно изменить этот плагин от вмешательства Протектора?

Код
client_cmd(Attacker, "prevention")
->
prevention(Attacker)


Теперь снова свой пост.

Повторить X раз

p.s
Orty_Hart мyдак =/

Отредактировал: Surf, - 14.8.2012, 14:03
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
2 страниц V   1 2
 
Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: