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

Выдача денег, здоровья и брони!  [Решено]

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

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

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

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

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

Выдача денег, здоровья и брони!

Сообщение kaleostra » 11 фев 2017, 14:46

Доброго времени суток Вам! Я прошу прощения за заранее дурковатый вид в виде вопросов - но нужна Ваша Высококвалифицированная и профессиональная помощь! Ибо я совсем не компетентен в таких вопросах!

Есть код плагина! Сам плагин рассчитан на выдачу денег по команде amx_money "nick" 160000$ или же снятию денег по той же команде только со знаком - amx_money "nick" -160000$ Плагин работает хорошо!

Суть моей просьбы заключается в том - может кто переделать его по аналогии в выдачу здоровья (health) и брони (armor) так, что бы они выдавались по команде аналогично, что и деньги ( amx_money "nick" 160000$), только каждый со своим примечанием. То есть например я хочу выдать себе деньги я пишу (amx_money "nick" 160000$), хочу снять (amx_money "nick" -160000$), хочу выдать 1000 хп, пишу (amx_health "nick" 1000) или его снять, пишу (amx_healt "nick" -1000), так же выдача брони, пишу (amx_armor "nick" 1000) или его снятие пишу (amx_armor "nick" -1000). Тобишь суть моей просьбы заключается в том что бы выдача здоровья и брони работало как выдача денег. По тому же принципу!

Было бы хорошо, если бы, кто еще их написал бы в одном файле сма. Что бы это все было одним целым единым функционалом, который можно будет преобразовать в плагин, если такого не возможно буду рад по отдельности принять! Почему сма прошу!, для того - Вдруг для чего они еще пригодиться! Так как их можно компилировать скока хош! Вдруг и по истине чего дописать вздумается!

Код: Выделить всё
#include <amxmod> 
#include <amxmisc> 
#include <fun>

/* 
* Usage: amx_money <authid, nick, @team or #userid> <money> 
* Examples: 
* amx_money @CT 100             - adds 100 dollars to ct's money

*/
 

public admin_money
(id,level,cid) { 
   if 
(!cmd_access(id,level,cid,3)) 
      return PLUGIN_HANDLED 
   new arg
[32], arg2[8], name2[32] 
   read_argv
(1,arg,31) 
   read_argv
(2,arg2,7) 
   get_user_name
(id,name2,31) 
   if 
(arg[0]=='@'){ 
      new players
[32], inum 
      get_players
(players,inum,"ae",arg[1]) 
      if 
(inum==0){ 
         console_print
(id,"No clients in such team") 
         return PLUGIN_HANDLED 
      
} 
      for
(new a=0;a<inum;++a) {
         new money = get_user_money(players[a])
         set_user_money(players[a],str_to_num(arg2) + money ,1)
      }
      console_print(id,"All clients have set money") 
   
} 
   else 
{ 
      new player 
= cmd_target(id,arg,3) 
      if 
(!player) return PLUGIN_HANDLED 
      new money 
= get_user_money(player)
      set_user_money(player,str_to_num(arg2) + money ,1) 
      new name
[32] 
      get_user_name
(player,name,31) 
      console_print
(id,"Client ^"%s^" has set money",name) 
   
} 
   return PLUGIN_HANDLED  
} 

public plugin_init
() {  
   register_plugin
("Admin Money","1.9.3","Dmitry.Dybovskiy")  
   register_concmd
("amx_money","admin_money",ADMIN_LEVEL_A,"<authid, nick, @team or #userid> <money>")  
   return PLUGIN_CONTINUE  

Вставлять код следует в тег "Код / Исходник"
Последний раз редактировалось kaleostra 11 фев 2017, 14:49, всего редактировалось 1 раз.
Аватара пользователя
kaleostra
 
Сообщения: 4
Зарегистрирован: 09 фев 2017, 22:30
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: HELP

Сообщение Subb98 » 11 фев 2017, 14:48

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

Re: Выдача денег, здоровья и брони!

Сообщение kaleostra » 11 фев 2017, 14:49

Доброго времени суток! Да конечно! Простите!
Аватара пользователя
kaleostra
 
Сообщения: 4
Зарегистрирован: 09 фев 2017, 22:30
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: Выдача денег, здоровья и брони!  [Решено]

Сообщение ko22009 » 13 фев 2017, 04:54

Использовать:
give <money|hp|armor> <authid, nick, @team or #userid> <amount>

Пример:
give hp ko2 100

Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>

public plugin_init() {
    register_plugin("Give HMR", "1.0.0", "ko2");
    register_clcmd("give", "find_target", ADMIN_LEVEL_A, "<money | hp | armor> <authid, nick, @team or #userid> <amount>");
}

public find_target(id)
{
    if ( ! ( get_user_flags(id) & ADMIN_LEVEL_A ) )
        return PLUGIN_HANDLED;
    
    static target
[16], amount[8], players[32], what[16];
    static num;
    
    read_argv
(1, what, 15);
    read_argv(2, target, 15);
    read_argv(3, amount, 7);

    if ( !( equal(what, "money") || equal(what, "hp") || equal(what, "armor") ) )
    {
        console_print(id, "*** No function found. ***");
        return PLUGIN_HANDLED;
    }
    
    if
(target[0] == '@'){    //If trying to give a team
        if(target[1] == 'C' || target[1] == 'c'){
            get_players(players, num ,"e", "CT");
        }
        else if(target[1] == 'T' || target[1] == 't'){
            get_players(players, num ,"e", "TERRORIST");
        }
        else{
            console_print(id, "*** No known team by that name. ***");
            return PLUGIN_HANDLED;
        }
    }
    else if(target[0] == '#'){  //If trying to give a player(userid)
        static userid;
        userid = str_to_num(target[1]);
        players[0] = find_player("k", userid);
    }
    else{  // else search for matching name
        players[0] = find_player("bl", target);
    }
    
    if
(players[0] == 0){  //If no target(s) could be found
        console_print(id, "*** No target(s) could be found. ***");
        return PLUGIN_HANDLED;
    }
    else 
    
{
        if ( equal(what, "money") ) give_money(players, str_to_num(amount));
        else if ( equal(what, "hp") ) give_hp(players, str_to_num(amount));
        else if ( equal(what, "armor") ) give_armor(players, str_to_num(amount));
    }
    
    return PLUGIN_HANDLED
;
}

public give_money(players[], give_amount)
{
    static i, amount;
    i = 0;
    while(players[i])
    {
        amount = cs_get_user_money(players[i]);
        cs_set_user_money(players[i], amount + give_amount);
        ++i;
    }
}

public give_hp(players[], give_amount)
{
    static i, amount;
    i = 0;
    while(players[i])
    {
        amount = get_user_health(players[i]);
        set_user_health(players[i], amount + give_amount);
        ++i;
    }
}

public give_armor(players[], give_amount)
{
    static i, amount;
    i = 0;
    while(players[i])
    {
        amount = get_user_armor(players[i]);
        set_user_armor(players[i], amount + give_amount);
        ++i;
    }
}
Аватара пользователя
ko22009
 
Сообщения: 131
Зарегистрирован: 19 янв 2017, 16:20
Благодарил (а): 12 раз.
Поблагодарили: 27 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn
C++
Php
Python
C#

Re: Выдача денег, здоровья и брони!

Сообщение kaleostra » 13 фев 2017, 18:18

Огромное Вам спасибо! Очень благодарен Вам и признателен! Только хотел спросить! А можно по команде amx а не give?!
Аватара пользователя
kaleostra
 
Сообщения: 4
Зарегистрирован: 09 фев 2017, 22:30
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: Выдача денег, здоровья и брони!

Сообщение ko22009 » 13 фев 2017, 19:32

kaleostra писал(а):Огромное Вам спасибо! Очень благодарен Вам и признателен! Только хотел спросить! А можно по команде amx а не give?!

Замени register_clcmd("give", "find_target", ADMIN_LEVEL_A, "<money | hp | armor> <authid, nick, @team or #userid> <amount>");
на register_clcmd("amx_give", "find_target", ADMIN_LEVEL_A, "<money | hp | armor> <authid, nick, @team or #userid> <amount>");
Если я понял о чем ты
Аватара пользователя
ko22009
 
Сообщения: 131
Зарегистрирован: 19 янв 2017, 16:20
Благодарил (а): 12 раз.
Поблагодарили: 27 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn
C++
Php
Python
C#

Re: Выдача денег, здоровья и брони!

Сообщение kaleostra » 14 фев 2017, 19:20

Спасибо)))
Аватара пользователя
kaleostra
 
Сообщения: 4
Зарегистрирован: 09 фев 2017, 22:30
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#


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

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

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