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

Shop: не выдаётся оружие (со стороннего плагина)

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

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

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

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

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

Shop: не выдаётся оружие (со стороннего плагина)

Сообщение Ice_Angel » 18 июн 2018, 16:01

Захотел сделать магазин CSO оружий для public. Я переписал оружие под public и сделал команду вызова (mainmenu_shop_give_anaconda).

В меню сделал так:
Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
 
#define PLUGIN  "Menu"
#define VERSION "1.0"
#define AUTHOR  "inf"
 
new keys 
= MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0
 
public plugin_init
()
{
   register_plugin(PLUGIN, VERSION, AUTHOR)
   register_menu("Menu 1", keys, "func_menu")
   register_concmd("mainmenu_shop_pistols", "Server_Menu")
}
 
public Server_Menu
(id)
{
   new name[32]
   get_user_name(id, name, 31)
   static menu[650], iLen
 
   new player_name
[32]
 
   get_user_name
(id, player_name, 31)
 
   iLen 
= 0
   iLen 
= formatex(menu[iLen], charsmax(menu) - iLen, "\yМагазин \rCSO оружий\w^n^n", player_name)
    
   iLen 
+= formatex(menu[iLen], charsmax(menu) - iLen, "\r1\w. [\rПистолет\w] Anaconda [\r800$\w]^n")
   keys |= MENU_KEY_1
 
   iLen 
+= formatex(menu[iLen], charsmax(menu) - iLen, "\r2\w. Пусто^n")
   keys |= MENU_KEY_2
 
   iLen 
+= formatex(menu[iLen], charsmax(menu) - iLen, "\r3\w. Пусто^n")
   keys |= MENU_KEY_3
 
   iLen 
+= formatex(menu[iLen], charsmax(menu) - iLen, "\r4\w. Пусто^n")
   keys |= MENU_KEY_4
 
   iLen 
+= formatex(menu[iLen], charsmax(menu) - iLen, "\r5\w. Пусто^n")
   keys |= MENU_KEY_5
 
   iLen 
+= formatex(menu[iLen], charsmax(menu) - iLen, "\r6\w. Пусто^n")
   keys |= MENU_KEY_6
  
   iLen 
+= formatex(menu[iLen], charsmax(menu) - iLen, "\r7\w. Пусто^n^n")
   keys |= MENU_KEY_7
   
   iLen 
+= formatex(menu[iLen], charsmax(menu) - iLen, "\r8\w. Пусто^n")
   keys |= MENU_KEY_8
   
   iLen 
+= formatex(menu[iLen], charsmax(menu) - iLen, "\r9\w. Пусто^n^n")
   keys |= MENU_KEY_9
  
   iLen 
+= formatex(menu[iLen], charsmax(menu) - iLen, "\r0\w. Выход")
   keys |= MENU_KEY_0
 
   show_menu
(id, keys, menu, -1, "Menu 1")
   return PLUGIN_HANDLED
}
 
public func_menu
(id, key)
{
   switch(key)
   {
      case 0:
       {
        if(cs_get_user_money(id) >= 800)
        {
            cs_set_user_money(id, cs_get_user_money(id) - 800)
            register_clcmd("mainmenu_shop_give_anaconda", "give_anaconda")
        }
       }
      case 1: client_cmd(id, "mainmenu_shop_give_")
      case 2: client_cmd(id, "mainmenu_shop_give_")
      case 3: client_cmd(id, "mainmenu_shop_give_")
      case 4: client_cmd(id, "mainmenu_shop_give_")
      case 5: client_cmd(id, "mainmenu_shop_give_")
      case 6: client_cmd(id, "mainmenu_shop_give_")
      case 7: client_cmd(id, "mainmenu_shop_give_")
      case 8: client_cmd(id, "mainmenu_shop_give_")
   }
   return PLUGIN_HANDLED
}
 


В итоге при покупке оружия снимает деньги (800$), а оружие не даёт.

Скриншоты: Вы должны зарегистрироваться, чтобы видеть ссылки. , Вы должны зарегистрироваться, чтобы видеть ссылки. .

Но когда сам пишешь в консоли "mainmenu_shop_give_anaconda" оружие выдаёт.

Скриншот: Вы должны зарегистрироваться, чтобы видеть ссылки.

P.S: Извините что не смог ссылки в [img] записать, выскакивала ошибка "Не удалось определить размеры изображения. Проверьте правильность введённого адреса URL."

P.S(2): Вопрос решён. Можно закрывать тему. Спасибо кто ответил :-) .
Последний раз редактировалось Ice_Angel 18 июн 2018, 17:50, всего редактировалось 1 раз.
Плагин "Menu + CSO Shop" готов на 30%.
Аватара пользователя
Ice_Angel
 
Сообщения: 17
Зарегистрирован: 25 апр 2016, 20:55
Откуда: Украина
Благодарил (а): 8 раз.
Поблагодарили: 0 раз.
Языки программирования: Pawn (Новичок)

Re: Помогите пожайлуста (покупка оружия (не стандартное))

Сообщение EpisCape » 18 июн 2018, 16:11

Код: Выделить всё
register_clcmd("mainmenu_shop_give_anaconda""give_anaconda"

Подобной командой ты всего лишь регистрируешь консольную команду.

Замени на:
Код: Выделить всё
client_cmd(id"mainmenu_shop_give_anaconda"); 


Лучше использовать нативы/форварды/напрямую вызывать функцию плагина.
Аватара пользователя
EpisCape
 
Сообщения: 15
Зарегистрирован: 14 май 2018, 21:47
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
Языки программирования: Pawn

Re: Помогите пожайлуста (покупка оружия (не стандартное))

Сообщение Ice_Angel » 18 июн 2018, 16:19

Добавлено спустя 3 минуты 1 секунду:
Спасибо большое, помогло! А можно вопрос? Можно следать чтобы mainmenu_shop_give_anaconda была недоступна из консоли, тоесть при написании нечего не выдавало, а только в магазине можно покупать было оружие?
Плагин "Menu + CSO Shop" готов на 30%.
Аватара пользователя
Ice_Angel
 
Сообщения: 17
Зарегистрирован: 25 апр 2016, 20:55
Откуда: Украина
Благодарил (а): 8 раз.
Поблагодарили: 0 раз.
Языки программирования: Pawn (Новичок)

Re: Помогите пожайлуста (покупка оружия (не стандартное))

Сообщение Subb98 » 18 июн 2018, 16:52

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

Re: Shop: не выдаётся оружие (со стороннего плагина)

Сообщение EpisCape » 18 июн 2018, 23:59

Ice_Angel, в исходнике этого самого оружия удаляй все консольные регистрации команд такого типа:
Код: Выделить всё
register_clcmd("mainmenu_shop_give_anaconda""give_anaconda")  

Все функции register_clcmd, у которых второй аргумент: "give_anaconda".
Аватара пользователя
EpisCape
 
Сообщения: 15
Зарегистрирован: 14 май 2018, 21:47
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
Языки программирования: Pawn

Re: Shop: не выдаётся оружие (со стороннего плагина)

Сообщение Ice_Angel » 19 июн 2018, 08:47

А как тогда будет магазин знать через какую команду ему оружие выдавать игроку?
Плагин "Menu + CSO Shop" готов на 30%.
Аватара пользователя
Ice_Angel
 
Сообщения: 17
Зарегистрирован: 25 апр 2016, 20:55
Откуда: Украина
Благодарил (а): 8 раз.
Поблагодарили: 0 раз.
Языки программирования: Pawn (Новичок)

Re: Shop: не выдаётся оружие (со стороннего плагина)

Сообщение Ternopil62000 » 19 июн 2018, 13:12

Покажу на примере оружия awpgold,

В самом плагине оружия стоит регистрация натива:
public plugin_natives() register_native("awpg_give","native_give_weapon", 1)
public clcmd_weapon(id){
engclient_cmd(id, g_weapon_entity)
return PLUGIN_HANDLED

Ну и в моем случае еще стоит код:
public native_give_weapon(id,itemid)
{
new Ent=give_weapon(id)
set_pdata_int(id,376+get_pdata_int(Ent,49,4),AMMO,5)
}

И
public give_weapon(id)
{
new Float:Origin[3]; pev(id, pev_origin, Origin)
new wName[32],iItem=get_pdata_cbase(id, 367 + SLOT, 5);
while (pev_valid(iItem)==2)pev(iItem,pev_classname,wName,31),engclient_cmd(id,"drop",wName),iItem=get_pdata_cbase(id, 367 + SLOT, 5);
new iWeapon=engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,g_weapon_entity))
if(!pev_valid(iWeapon)) return 0
dllfunc(DLLFunc_Spawn, iWeapon)
engfunc(EngFunc_SetOrigin, iWeapon, Origin)
set_pev(iWeapon, pev_impulse, g_iszWeaponKey)
set_pdata_int(iWeapon, 51, CLIP, 4)
new save = pev(iWeapon,pev_solid)
dllfunc(DLLFunc_Touch,iWeapon,id)
if(pev(iWeapon, pev_solid)!=save)return iWeapon
engfunc(EngFunc_RemoveEntity,iWeapon)
return 0
}

А в меню покупки натив
native awpg_give(id)- Нативы ставь в начале кода..(Примерно после #define)

Ну и в твоем случае ставь:
awpg_give(id)- это вместо - register_clcmd("mainmenu_shop_give_anaconda", "give_anaconda")

Одним словом тебе надо разбираться самому)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
«А сегодня в завтрашний день не все могут смотреть. Вернее, смотреть могут не только лишь все. Мало кто может это делать»

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

Re: Shop: не выдаётся оружие (со стороннего плагина)

Сообщение EpisCape » 19 июн 2018, 16:19

Ice_Angel, ты попросил как убрать - я ответил, а будет уже работать или нет тебя, видимо, не интересовало, когда ты задал вопрос. Ну а вообще выше тебе дали пример как работать с нативами.
Аватара пользователя
EpisCape
 
Сообщения: 15
Зарегистрирован: 14 май 2018, 21:47
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
Языки программирования: Pawn

Re: Shop: не выдаётся оружие (со стороннего плагина)

Сообщение Ice_Angel » 19 июн 2018, 16:26

Вы должны зарегистрироваться, чтобы видеть ссылки.

Я понял первая ошибка нету инклюда где зарегистрирован native?
А что со второй?
Плагин "Menu + CSO Shop" готов на 30%.
Аватара пользователя
Ice_Angel
 
Сообщения: 17
Зарегистрирован: 25 апр 2016, 20:55
Откуда: Украина
Благодарил (а): 8 раз.
Поблагодарили: 0 раз.
Языки программирования: Pawn (Новичок)

Re: Shop: не выдаётся оружие (со стороннего плагина)

Сообщение Ternopil62000 » 19 июн 2018, 17:33

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

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


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

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

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