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

Передача кредитов / Donate Ammo Packs

Новые плагины для AMX Mod X, которые были добавлены в базу плагинов нашего форума. Плагины еще не утвеждены администратором/модератором.

Модератор: Leonidddd

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

Данный раздел форума служит для добавления новых плагинов в базу нашего форума. После того, как администратор/модератор утвердит плагин, он будет перемещен в раздел "Утвежденные плагины".

Правила при добавлении новых плагинов:

1. При вставке кода плагина необходимо использовать тег [pawn], в противном случае, если тег [pawn] не отображает ваш код, можно использовать тег [code].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. Обязательно выкладывайте исходник sma плагина. Запрещено выкладывать amxx файл.
4. Обязательно указывайте настоящих авторов плагина, если вы использовали чьи-то наработки или функции, указывайте их авторов в сообщении.
5. Необходимо заполнять детальную информацию о плагине (версию, настройки, используемые модули, список изменений и другую).

Передача кредитов / Donate Ammo Packs

Сообщение пекарь1337 » 30 май 2014, 21:51

Авторы: Erasus
Версия: 1.0

Описание:
Плагин позволяет передавать кредиты двумя способами: через меню и через чат.

- Чтобы открыть меню, используйте команду в чат /donate.
- Чтобы передать через чат, пишите так: /donate <ник> <количество кредитов>.

Идет подробное логирование, в нем пишется: ник передающего, ник получателя, количество паков и способ, которым они были отправлены (меню или чат).

В меню возможна передача кредитов всем игрокам (кредиты распределяются между ними).


Настройки:
/donate - меню передачи
/donate <ник> <кол-во кредитов> - передача через чат

Плагин, который я писал для своего сервера. По моему мнению, неплохо оформлен и добавлено несколько фич, которых нет в старой версии не моего плагина. Скидываю сюда, т.к. отпала необходимость в его использовании.
Исходник:
[pawn]
  1. #include <amxmodx>

  2. #include <amxmisc>

  3. #include <colorchat>

  4. #include <zombieplague>

  5.  

  6. #define PLUGIN  "[ZP] Donate Ammo"

  7. #define VERSION "1.0"

  8. #define AUTOR   "Erasus"

  9.  

  10. new gPlayer[33]

  11. new gNum

  12.  

  13. public plugin_init()

  14. {

  15.         register_plugin(PLUGIN, VERSION, AUTOR)

  16.         register_clcmd("say", "HandleSay")

  17.         register_clcmd("say_team", "HandleSay")

  18.         register_clcmd("donate_number", "MessageModeGive")

  19.         register_clcmd("donateall_number", "MessageModeAll")

  20. }

  21.  

  22. public HandleSay(id)

  23. {

  24.         new iArgs[64]

  25.        

  26.         read_args(iArgs, charsmax(iArgs))

  27.         remove_quotes(iArgs)

  28.        

  29.         new iCmd[16]

  30.         new iOther[32]

  31.        

  32.         strbreak(iArgs, iCmd, charsmax(iCmd), iOther, charsmax(iOther))

  33.         if(equal(iCmd, "/donate", 7))

  34.         {

  35.                 if(equal(iOther, ""))

  36.                         ShowMenu(id)

  37.                 else

  38.                         Donate(id, iOther)

  39.         }

  40. }

  41.  

  42. public ShowMenu(id)

  43. {

  44.         new iMenu = menu_create("Кому передаем \rкредиты\y?", "MenuHandler")

  45.         menu_additem(iMenu, "Распределить между всеми", "1", 0)

  46.         new s_Players[32], i_Num, i_Player

  47.         new s_Name[32], s_Player[10]

  48.         get_players(s_Players, i_Num)

  49.         for (new i; i < i_Num; i++)

  50.         {

  51.                 i_Player = s_Players[i]

  52.                 get_user_name(i_Player, s_Name, charsmax(s_Name))

  53.                 num_to_str(i_Player+1, s_Player, charsmax(s_Player))

  54.                 menu_additem(iMenu, s_Name, s_Player, 0)

  55.         }

  56.         menu_setprop(iMenu , MPROP_NEXTNAME, "Далее")

  57.         menu_setprop(iMenu , MPROP_BACKNAME, "Назад")

  58.         menu_setprop(iMenu , MPROP_EXITNAME, "Выход")

  59.         menu_setprop(iMenu , MPROP_EXIT, MEXIT_ALL)

  60.         menu_display(id, iMenu, 0)

  61. }

  62.  

  63. public MenuHandler(id, menu, item)

  64. {

  65.         if (item == MENU_EXIT)

  66.         {

  67.                 menu_destroy(menu)

  68.                 return PLUGIN_HANDLED

  69.         }

  70.  

  71.         new s_Data[6], s_Name[64], i_Access, i_Callback

  72.         menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)

  73.  

  74.         new iChoose = str_to_num(s_Data)

  75.         if(iChoose == 1)

  76.                 DonateAll(id)

  77.         else

  78.                 DonatePlayer(id, iChoose)

  79.  

  80.  

  81.         menu_destroy(menu)

  82.         return PLUGIN_HANDLED

  83. }

  84.  

  85. public Donate(id, arg[])

  86. {

  87.         if(!is_user_connected(id))

  88.                 return PLUGIN_CONTINUE

  89.  

  90.         new iTargetString[32], iCountString[10]

  91.         strbreak(arg, iTargetString, charsmax(iTargetString), iCountString, charsmax(iCountString))

  92.         if (!iTargetString[0] || !iCountString[0])

  93.         {

  94.                 ColorChat(id, RED, "^1[^4ZP^1] Для передачи кредитов используйте ^4/donate часть_ника кол-во паков^1.")

  95.                 return PLUGIN_CONTINUE

  96.         }

  97.         new iCount = str_to_num(iCountString)

  98.         new iTarget = cmd_target(id, iTargetString, (CMDTARGET_ALLOW_SELF))

  99.         if(!iTarget)

  100.         {

  101.                 ColorChat(id, RED, "^1[^4ZP^1] Игрок с данным ником ^3не найден^1!")

  102.                 return PLUGIN_CONTINUE

  103.         }

  104.         if(iTarget == id)

  105.         {

  106.                 ColorChat(id, RED, "^1[^4ZP^1] Вы ^3не можете ^1передать кредиты ^3себе^1!")

  107.                 return PLUGIN_CONTINUE

  108.         }

  109.         new iAmmo

  110.         iAmmo = iCount

  111.         if(zp_get_user_ammo_packs(id) < iCount)

  112.         {

  113.                 if(zp_get_user_ammo_packs(id) == 0)

  114.                 {

  115.                         ColorChat(id, RED, "^1[^4ZP^1] У вас ^3нет ^1кредитов.")

  116.                         return PLUGIN_CONTINUE

  117.                 }

  118.                 iAmmo = zp_get_user_ammo_packs(id)

  119.         }

  120.         if(iAmmo < 0 || iAmmo == 0)

  121.         {

  122.                 ColorChat(id, RED, "^1[^4ZP^1] Кол-во кредитов для передачи должно быть ^3больше нуля^1.")

  123.                 return PLUGIN_CONTINUE

  124.         }

  125.         if(iTarget == 0)

  126.                 return PLUGIN_CONTINUE

  127.         zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) - iAmmo)

  128.         zp_set_user_ammo_packs(iTarget, zp_get_user_ammo_packs(iTarget) + iAmmo)

  129.         new iName[32], iNameTarget[32]

  130.         get_user_name(id, iName, charsmax(iName))

  131.         get_user_name(iTarget, iNameTarget, charsmax(iNameTarget))

  132.         ColorChat(0, BLUE, "^1[^4ZP^1] ^4%s ^1передал ^4%s ^3%d ^1кредитов.", iName, iNameTarget, iAmmo)

  133.         log_amx("[Donate] %s sent %s %d packs via chat", iName, iNameTarget, iAmmo)

  134.         return PLUGIN_CONTINUE

  135. }

  136.  

  137. public DonateAll(id)

  138. {

  139.         if(!is_user_connected(id))

  140.                 return PLUGIN_CONTINUE

  141.         new iPlayers[32]

  142.         get_players(iPlayers, gNum)

  143.         if(gNum < 2)

  144.         {

  145.                 ColorChat(id, RED, "^1[^4ZP^1] ^3Недостаточно игроков^1 для этой функции!")

  146.                 return PLUGIN_CONTINUE

  147.         }

  148.         client_cmd(id, "messagemode donateall_number")

  149.         return PLUGIN_CONTINUE

  150. }

  151.  

  152. public DonatePlayer(id, player)

  153. {

  154.         gPlayer[id] = player - 1

  155.         if(!is_user_connected(id))

  156.                 return PLUGIN_CONTINUE

  157.         if(gPlayer[id] == id)

  158.         {

  159.                 ColorChat(id, RED, "^1[^4ZP^1] Вы ^3не можете ^1передать кредиты ^3себе^1!")

  160.                 return PLUGIN_CONTINUE

  161.         }

  162.         if(!is_user_connected(gPlayer[id]))

  163.         {

  164.                 ColorChat(id, RED, "^1[^4ZP^1] Выбранный игрок ^3вышел с сервера^1.")

  165.                 return PLUGIN_CONTINUE

  166.         }

  167.         client_cmd(id,"messagemode donate_number")

  168.         return PLUGIN_CONTINUE

  169. }

  170.  

  171. public MessageModeGive(id)

  172. {

  173.         new iArgs[16]

  174.         read_args(iArgs, charsmax(iArgs)) //

  175.         if(!iArgs[0])

  176.         {

  177.                 ColorChat(id, RED, "^1[^4ZP^1] В ^3появившейся строке ^1нужно ввести ^3кол-во кредитов для передачи^1.")

  178.                 return PLUGIN_CONTINUE

  179.         }

  180.         remove_quotes(iArgs)

  181.         new iAmmo = str_to_num(iArgs)

  182.         if(iAmmo == 0 || iAmmo < 0)

  183.         {

  184.                 ColorChat(id, RED, "^1[^4ZP^1] ^3Число кредитов ^1для передачи должно быть ^3больше нуля^1!")

  185.                 iAmmo = 0

  186.                 return PLUGIN_CONTINUE

  187.         }

  188.         if(iAmmo > zp_get_user_ammo_packs(id))

  189.                 iAmmo = zp_get_user_ammo_packs(id)

  190.         new iName1[32], iName2[32]

  191.         get_user_name(id, iName1, charsmax(iName1))

  192.         get_user_name(gPlayer[id], iName2, charsmax(iName2))

  193.         ColorChat(0, BLUE, "^1[^4ZP^1] ^4%s ^1передал ^4%s ^3%d ^1кредитов.", iName1, iName2, iAmmo) //

  194.         if(gPlayer[id] == 0)

  195.                 return PLUGIN_CONTINUE

  196.         zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) - iAmmo)

  197.         zp_set_user_ammo_packs(gPlayer[id], zp_get_user_ammo_packs(gPlayer[id]) + iAmmo)

  198.         log_amx("[Donate] %s sent %s %d packs via menu", iName1, iName2, iAmmo)

  199.         return PLUGIN_CONTINUE

  200. }

  201.  

  202. public MessageModeAll(id)

  203. {

  204.         new iArgs[16]

  205.         read_args(iArgs, charsmax(iArgs)) //

  206.         if(!iArgs[0])

  207.         {

  208.                 ColorChat(id, RED, "^1[^4ZP^1] В ^3появившейся строке ^1нужно ввести ^3кол-во кредитов для передачи^1.")

  209.                 return PLUGIN_CONTINUE

  210.         }

  211.         remove_quotes(iArgs)

  212.         new iAmmo = str_to_num(iArgs)

  213.         if(iAmmo == 0 || iAmmo < 0)

  214.         {

  215.                 ColorChat(id, RED, "^1[^4ZP^1] ^3Число кредитов ^1для передачи должно быть ^3больше нуля^1!")

  216.                 iAmmo = 0

  217.                 return PLUGIN_CONTINUE

  218.         }

  219.         if(iAmmo < gNum)

  220.         {

  221.                 ColorChat(id, RED, "^1[^4ZP^1] ^3Минимум ^1передачи - по^3 1 кредиту ^1каждому.")

  222.                 return PLUGIN_CONTINUE

  223.         }

  224.         if(iAmmo > zp_get_user_ammo_packs(id))

  225.                 iAmmo = zp_get_user_ammo_packs(id)

  226.         new Float:iAttitude, Attitude

  227.         iAttitude = float(iAmmo) / (float(gNum) - 1.0)

  228.         Attitude = floatround(iAttitude, floatround_floor)

  229.         new iName[32]

  230.         get_user_name(id, iName, charsmax(iName))

  231.         ColorChat(0, BLUE, "^1[^4ZP^1] ^4%s ^1подарил ^4всем ^1по^3 %d ^1кредитов.", iName, Attitude)

  232.         log_amx("[Donate] %s sent all %d packs via menu", iName, Attitude)

  233.         zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) - iAmmo)

  234.         for(new i=1; i <= gNum; i++)

  235.         {

  236.                 if(!is_user_connected(i))

  237.                         continue

  238.                 if(i == id)

  239.                         continue

  240.                 zp_set_user_ammo_packs(i, zp_get_user_ammo_packs(i) + Attitude)

  241.         }

  242.         return PLUGIN_CONTINUE

  243. }
[/pawn]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
✓ JBX [100%/100%] : 46.174.52.19:27227
X ZMX [0%/100%] : ???
Аватара пользователя
пекарь1337
 
Сообщения: 236
Зарегистрирован: 29 окт 2013, 21:55
Откуда: NVIDIA
Благодарил (а): 110 раз.
Поблагодарили: 52 раз.
Опыт программирования: Больше трех лет
Языки программирования: Python
C/C++
Assembler
Pawn

Re: Передача кредитов / Donate Ammo Packs

Сообщение Mapaky9 » 31 май 2014, 14:08

Велосипед очередной :ROFL:
Аватара пользователя
Mapaky9
 
Сообщения: 185
Зарегистрирован: 02 июн 2013, 20:30
Откуда: Уфа
Благодарил (а): 61 раз.
Поблагодарили: 67 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: Передача кредитов / Donate Ammo Packs

Сообщение sa1me » 31 май 2014, 15:10

strbreak

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


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

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

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