Добро пожаловать на форум, Гость, это ваша панель
  • Страница 1 из 1
  • 1
Получение названия предмета через native
SMaster
Дата: Воскресенье, 06.01.2013, 14:57 | Сообщение # 1
офлайн

  • Сообщения: 2189
  • Награды: 46
  • Замечания:
 
Шаг 1.
В cssbWar3ftMod.sma подключаем файлы
Код
#include "war3ft/natives.h"
#include "war3ft/natives.inl"


Шаг 2.
В cssbWar3ftMod.sma находим public plugin_natives() добавляем
Код
register_native("cssb_getNameItemUserSlot", "native_getNameItemUserSlot", 1);


Шаг 3.
В natives.h добавляем код:
Код
// Считывание названия предмета
native cssb_getNameItemUserSlot(idUser,iSlot,szItemNameShort[32]);


Шаг 4.
В natives.inl добавляем код:
Код
// Считывание названия предмета
public native_getNameItemUserSlot(idUser,iSlot,szItemNameShort[32])
{
    param_convert(3);

    new iCurrenItem = ITEM_NONE;

    if(ITEM_Has( idUser, ITEM_ANKH ) == iSlot && ITEM_HasItem( idUser, ITEM_ANKH ) == ITEM_ANKH )
     iCurrenItem = ITEM_ANKH;
    if(ITEM_Has( idUser, ITEM_BOOTS ) == iSlot && ITEM_HasItem( idUser, ITEM_BOOTS ) == ITEM_BOOTS )
     iCurrenItem = ITEM_BOOTS;
    if(ITEM_Has( idUser, ITEM_CLAWS ) == iSlot && ITEM_HasItem( idUser, ITEM_CLAWS ) == ITEM_CLAWS )
     iCurrenItem = ITEM_CLAWS;
    if(ITEM_Has( idUser, ITEM_CLOAK ) == iSlot && ITEM_HasItem( idUser, ITEM_CLOAK ) == ITEM_CLOAK )
     iCurrenItem = ITEM_CLOAK;
    if(ITEM_Has( idUser, ITEM_MASK ) == iSlot && ITEM_HasItem( idUser, ITEM_MASK ) == ITEM_MASK )
     iCurrenItem = ITEM_MASK;
    if(ITEM_Has( idUser, ITEM_NECKLACE ) == iSlot &&   
ITEM_HasItem( idUser, ITEM_NECKLACE ) == ITEM_NECKLACE )
     iCurrenItem = ITEM_NECKLACE;
    if(ITEM_Has( idUser, ITEM_FROST ) == iSlot && ITEM_HasItem( idUser, ITEM_FROST ) == ITEM_FROST )
     iCurrenItem = ITEM_FROST;
    if(ITEM_Has( idUser, ITEM_HEALTH ) == iSlot && ITEM_HasItem( idUser, ITEM_HEALTH ) == ITEM_HEALTH )
     iCurrenItem = ITEM_HEALTH;
    if(ITEM_Has( idUser, ITEM_SCROLL ) == iSlot && ITEM_HasItem( idUser, ITEM_SCROLL ) == ITEM_SCROLL )
     iCurrenItem = ITEM_SCROLL;
    if(ITEM_Has( idUser, ITEM_PROTECTANT ) == iSlot &&   
ITEM_HasItem( idUser, ITEM_PROTECTANT ) == ITEM_PROTECTANT )
     iCurrenItem = ITEM_PROTECTANT;
    if(ITEM_Has( idUser, ITEM_HELM ) == iSlot && ITEM_HasItem( idUser, ITEM_HELM ) == ITEM_HELM )
     iCurrenItem = ITEM_HELM;
    if(ITEM_Has( idUser, ITEM_AMULET ) == iSlot && ITEM_HasItem( idUser, ITEM_AMULET ) == ITEM_AMULET )
     iCurrenItem = ITEM_AMULET;
    if(ITEM_Has( idUser, ITEM_SOCK ) == iSlot && ITEM_HasItem( idUser, ITEM_SOCK ) == ITEM_SOCK )
     iCurrenItem = ITEM_SOCK;
    if(ITEM_Has( idUser, ITEM_GLOVES ) == iSlot && ITEM_HasItem( idUser, ITEM_GLOVES ) == ITEM_GLOVES )
     iCurrenItem = ITEM_GLOVES;
    if(ITEM_Has( idUser, ITEM_RING ) == iSlot && ITEM_HasItem( idUser, ITEM_RING ) == ITEM_RING )
     iCurrenItem = ITEM_RING;
    if(ITEM_Has( idUser, ITEM_CHAMELEON ) == iSlot &&
  ITEM_HasItem( idUser, ITEM_CHAMELEON ) == ITEM_CHAMELEON )
     iCurrenItem = ITEM_CHAMELEON;
    if(ITEM_Has( idUser, ITEM_MOLE ) == iSlot && ITEM_HasItem( idUser, ITEM_MOLE ) == ITEM_MOLE )
     iCurrenItem = ITEM_MOLE;
       
    if(iCurrenItem != ITEM_NONE)
    {
     LANG_GetItemName(iCurrenItem,idUser, szItemNameShort, 31, true );
    }
    else
    {
     //Текст когда предмета нет (необязательно добавлять)
     formatex(szItemNameShort, charsmax(szItemNameShort),"NO ITEMS!");
    }

    return iCurrenItem;
}


Шаг 5.
Если нет функции ITEM_HasItem, добавьте код ниже в файл items.inl
Код
stock ITEM_HasItem( idUser, iItem )
{
    if ( g_iShopMenuItems[idUser][ITEM_SLOT_ONE] == iItem )
     return iItem;

    else if ( g_iShopMenuItems[idUser][ITEM_SLOT_TWO] == iItem )
     return iItem;

    return ITEM_NONE;
}


Пример использования:
Код
#include <amxmodx>
#include "war3ft/natives.h"

#define PLUGIN "CSSB Get Items"
#define VERSION "1.0"
#define AUTHOR "CSSB"

#define ITEM_SLOT_ONE       0
#define ITEM_SLOT_TWO       1

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR);

    register_clcmd("cssb_useritems2", "cmdIemsWar3ft");
}

public cmdIemsWar3ft(idUser)
{
    //Вывод названий в чат
    new szCurrentItemSlot1[32];
    new szCurrentItemSlot2[32];
       
    cssb_getNameItemUserSlot(idUser,ITEM_SLOT_ONE,szCurrentItemSlot1);
    cssb_getNameItemUserSlot(idUser,ITEM_SLOT_TWO,szCurrentItemSlot2);

    client_print(idUser,print_chat,"Item1: %s | Item2: %s",szCurrentItemSlot1,szCurrentItemSlot2);
}


Наша группа вконтакте http://vk.com/nano_world_cs

Контакты:
ICQ 607786179
Skype xonahead

 
cs-contra
Дата: Понедельник, 18.03.2013, 06:17 | Сообщение # 2
офлайн

  • Сообщения: 28
  • Награды: 0
  • Замечания:
 
А скриншот можно!
 
Ацелот
Дата: Четверг, 04.04.2013, 09:12 | Сообщение # 3
офлайн

  • Сообщения: 52
  • Награды: 0
  • Замечания:
 
А можете пояснить что этот код делает?
 
Asmoone
Дата: Четверг, 04.04.2013, 15:18 | Сообщение # 4
офлайн

  • Сообщения: 165
  • Награды: 0
  • Замечания:
 
Ацелот,Получение названия предмета через native
 
  • Страница 1 из 1
  • 1
Поиск: