Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

C++ do_item szarfy


Rekomendowane odpowiedzi

Opublikowano

Cześć, dodałem szarfy do siebie i chciałem dodać do do_item 

że jak wpiszę /i 85001 do 85025 to dodaje mi SetSocket(0, 1)

Ogarnia ktoś temat?

 

Coś tego typu gdzieś wstawić??

if (item->GetSubType() == COSTUME_ACCE)
    item->SetSocket(0, 1);
 

http://wklej.to/YqD8L

 

 

ACMD(do_item)
{
    char arg1[256], arg2[256];
    two_arguments(argument, arg1, sizeof(arg1), arg2, sizeof(arg2));

    if (!*arg1)
    {
        ch->ChatPacket(CHAT_TYPE_INFO, "Usage: item <item vnum>");
        return;
    }

    int iCount = 1;

    if (*arg2)
    {
        str_to_number(iCount, arg2);
        iCount = MINMAX(1, iCount, ITEM_MAX_COUNT);
    }

    DWORD dwVnum;

    if (isnhdigit(*arg1))
        str_to_number(dwVnum, arg1);
    else
    {
        if (!ITEM_MANAGER::instance().GetVnum(arg1, dwVnum))
        {
            ch->ChatPacket(CHAT_TYPE_INFO, "#%u item not exist by that vnum.", dwVnum);
            return;
        }
    }

    LPITEM item = ITEM_MANAGER::instance().CreateItem(dwVnum, iCount, 0, true);

    if (item)
    {
        if (item->IsDragonSoul())
        {
            int iEmptyPos = ch->GetEmptyDragonSoulInventory(item);

            if (iEmptyPos != -1)
            {
                item->AddToCharacter(ch, TItemPos(DRAGON_SOUL_INVENTORY, iEmptyPos));
                LogManager::instance().ItemLog(ch, item, "GM", item->GetName());
            }
            else
            {
                M2_DESTROY_ITEM(item);
                if (!ch->DragonSoul_IsQualified())
                {
                    ch->ChatPacket(CHAT_TYPE_INFO, "ŔÎşĄŔĚ Č°ĽşČ­ µÇÁö ľĘŔ˝.");
                }
                else
                    ch->ChatPacket(CHAT_TYPE_INFO, "Not enough inventory space.");
            }
        }
        else
        {
            int iEmptyPos = ch->GetEmptyInventory(item->GetSize());

            if (iEmptyPos != -1)
            {
                item->AddToCharacter(ch, TItemPos(INVENTORY, iEmptyPos));
                LogManager::instance().ItemLog(ch, item, "GM", item->GetName());
            }
            else
            {
                M2_DESTROY_ITEM(item);
                ch->ChatPacket(CHAT_TYPE_INFO, "Not enough inventory space.");
            }
        }
    }
    else
    {
        ch->ChatPacket(CHAT_TYPE_INFO, "#%u item not exist by that vnum.", dwVnum);
    }
}

Jeżeli Ci pomogłem. Kliknij 1387468256-U352037.png, Dzięki :)

Opublikowano

 

ACMD(do_item)
{
    char arg1[256], arg2[256];
    two_arguments(argument, arg1, sizeof(arg1), arg2, sizeof(arg2));
 
    if (!*arg1)
    {
        ch->ChatPacket(CHAT_TYPE_INFO, "Usage: item <item vnum>");
        return;
    }
 
    int iCount = 1;
 
    if (*arg2)
    {
        str_to_number(iCount, arg2);
        iCount = MINMAX(1, iCount, ITEM_MAX_COUNT);
    }
 
    DWORD dwVnum;
 
    if (isnhdigit(*arg1))
        str_to_number(dwVnum, arg1);
    else
    {
        if (!ITEM_MANAGER::instance().GetVnum(arg1, dwVnum))
        {
            ch->ChatPacket(CHAT_TYPE_INFO, "#%u item not exist by that vnum.", dwVnum);
            return;
        }
    }
 
    LPITEM item = ITEM_MANAGER::instance().CreateItem(dwVnum, iCount, 0, true);
 
    if (item)
    {
        if (item->IsDragonSoul())
        {
            int iEmptyPos = ch->GetEmptyDragonSoulInventory(item);
 
            if (iEmptyPos != -1)
            {
                item->AddToCharacter(ch, TItemPos(DRAGON_SOUL_INVENTORY, iEmptyPos));
                LogManager::instance().ItemLog(ch, item, "GM", item->GetName());
            }
            else
            {
                M2_DESTROY_ITEM(item);
                if (!ch->DragonSoul_IsQualified())
                {
                    ch->ChatPacket(CHAT_TYPE_INFO, "ŔÎşĄŔĚ Č°ĽşČ­ µÇÁö ľĘŔ˝.");
                }
                else
                    ch->ChatPacket(CHAT_TYPE_INFO, "Not enough inventory space.");
            }
        }
        else
        {
            int iEmptyPos = ch->GetEmptyInventory(item->GetSize());
 
            if (iEmptyPos != -1)
            {
                item->AddToCharacter(ch, TItemPos(INVENTORY, iEmptyPos));
if (item->GetVnum() >= 85001 && item->GetVnum() <= 85025)
item->SetSocket(0, 1);
                LogManager::instance().ItemLog(ch, item, "GM", item->GetName());
            }
            else
            {
                M2_DESTROY_ITEM(item);
                ch->ChatPacket(CHAT_TYPE_INFO, "Not enough inventory space.");
            }
        }
    }
    else
    {
        ch->ChatPacket(CHAT_TYPE_INFO, "#%u item not exist by that vnum.", dwVnum);
    }
}
Opublikowano

@Bambus3k™
Spróbuje a ten sposób jest zły coś będzie bugować czy coś tego typu robić?
zobaczę najpierw czy działa ten od @NoName#2

 

@Edit: Śmiga tylko zły socket dałem nie 0 tylko 1 miał być ale to nie ważne.

@Edit: @NoName#2 dał byś jeszcze tak że szarfa:

85001 ma socket (1, 1)

85002 ma socket (1, X1)

85003 ma socket (1, X2)

85004 ma socket (1, X3)

X1 - dodaje random od 5 do 10
X2 - dodaje random od 10 do 20
X3 - dodaje random od 20 do 30

I tak żebym do 85001 dodał szarfy na poziomie 1 czyli 85001 85005 itd.

??

85002 ma socket (1, X1)

Jeżeli Ci pomogłem. Kliknij 1387468256-U352037.png, Dzięki :)

Opublikowano

@Bambus3k™

Spróbuje a ten sposób jest zły coś będzie bugować czy coś tego typu robić?

zobaczę najpierw czy działa ten od @NoName#2

 

@Edit: Śmiga tylko zły socket dałem nie 0 tylko 1 miał być ale to nie ważne.

@Edit: @NoName#2 dał byś jeszcze tak że szarfa:

85001 ma socket (1, 1)

85002 ma socket (1, X1)

85003 ma socket (1, X2)

85004 ma socket (1, X3)

X1 - dodaje random od 5 do 10

X2 - dodaje random od 10 do 20

X3 - dodaje random od 20 do 30

I tak żebym do 85001 dodał szarfy na poziomie 1 czyli 85001 85005 itd.

??

85002 ma socket (1, X1)

 

Wystarczy zrobić ifa, który sprawdza vnum i zmienia socket albo trochę mniej kodu - switch. To naprawdę nie jest trudne.

hkeKadm.png

Opublikowano

 

 

ACMD(do_item)
{
    char arg1[256], arg2[256];
    two_arguments(argument, arg1, sizeof(arg1), arg2, sizeof(arg2));

    if (!*arg1)
    {
        ch->ChatPacket(CHAT_TYPE_INFO, "Usage: item <item vnum>");
        return;
    }

    int iCount = 1;

    if (*arg2)
    {
        str_to_number(iCount, arg2);
        iCount = MINMAX(1, iCount, ITEM_MAX_COUNT);
    }

    DWORD dwVnum;

    if (isnhdigit(*arg1))
        str_to_number(dwVnum, arg1);
    else
    {
        if (!ITEM_MANAGER::instance().GetVnum(arg1, dwVnum))
        {
            ch->ChatPacket(CHAT_TYPE_INFO, "#%u item not exist by that vnum.", dwVnum);
            return;
        }
    }

    LPITEM item = ITEM_MANAGER::instance().CreateItem(dwVnum, iCount, 0, true);

    if (item)
    {
        if (item->IsDragonSoul())
        {
            int iEmptyPos = ch->GetEmptyDragonSoulInventory(item);

            if (iEmptyPos != -1)
            {
                item->AddToCharacter(ch, TItemPos(DRAGON_SOUL_INVENTORY, iEmptyPos));
                LogManager::instance().ItemLog(ch, item, "GM", item->GetName());
            }
            else
            {
                M2_DESTROY_ITEM(item);
                if (!ch->DragonSoul_IsQualified())
                {
                    ch->ChatPacket(CHAT_TYPE_INFO, "ŔÎşĄŔĚ Č°ĽşČ­ µÇÁö ľĘŔ˝.");
                }
                else
                    ch->ChatPacket(CHAT_TYPE_INFO, "Not enough inventory space.");
            }
        }
        else
        {
            int iEmptyPos = ch->GetEmptyInventory(item->GetSize());

            if (iEmptyPos != -1)
            {
                item->AddToCharacter(ch, TItemPos(INVENTORY, iEmptyPos));
                LogManager::instance().ItemLog(ch, item, "GM", item->GetName());

		if (item->GetType() == ITEM_COSTUME && item->GetSubType() == COSTUME_ACCE){
			if (iCount == 1){
				int abs = 1;
				switch(item->GetVnum()){
					case 85002:
					case 85006:
						abs = number(5,10);
						break;
					case 85003:
					case 85007:
						abs = number(10,20);
						break;
					case 85004:
					case 85005:
						abs = number(20,30);
						break;
					default:
						break;
				}
				item->SetSocket(1, abs);
			}else{
				item->SetSocket(1, iCount);
			}
		}
            }
            else
            {
                M2_DESTROY_ITEM(item);
                ch->ChatPacket(CHAT_TYPE_INFO, "Not enough inventory space.");
            }
        }
    }
    else
    {
        ch->ChatPacket(CHAT_TYPE_INFO, "#%u item not exist by that vnum.", dwVnum);
    }
}

 

 

 

  1. /item 85001
  2. /item 85001 20
  3. /item 85003
  4. /item 85003 100

1. Szarfa 85001 z 1%

2. Szarfa 85001 z 20%

3. Szarfa 85003 z 10~20%

4. Szarfa 85003 z 100%

 

Przetestuj to na wszelki dokładnie bo pisalem to na notatniku zwykłym, mogłem coś ujebać.

 

Opublikowano

o dzięki mam już zrobione tak ale mogę też to sprawdzić bo jest też git:

mam tak:

 

if (iEmptyPos != -1)
{
item->AddToCharacter(ch, TItemPos(INVENTORY, iEmptyPos));
if (item->GetVnum() == 85001 || item->GetVnum() == 85005 || item->GetVnum() == 85010 || item->GetVnum() == 85014 || item->GetVnum() == 85018 || item->GetVnum() == 85022)
item->SetSocket(1, 1);
if (item->GetVnum() == 85002 || item->GetVnum() == 85006 || item->GetVnum() == 85011 || item->GetVnum() == 85015 || item->GetVnum() == 85019 || item->GetVnum() == 85023)
item->SetSocket(1, number(5, 10));
if (item->GetVnum() == 85003 || item->GetVnum() == 85007 || item->GetVnum() == 85012 || item->GetVnum() == 85016 || item->GetVnum() == 85020 || item->GetVnum() == 85024)
item->SetSocket(1, number(10, 20));
if (item->GetVnum() == 85004 || item->GetVnum() == 85008 || item->GetVnum() == 85013 || item->GetVnum() == 85017 || item->GetVnum() == 85021 || item->GetVnum() == 85025)
item->SetSocket(1, number(20, 30));
LogManager::instance().ItemLog(ch, item, "GM", item->GetName());
}

Jeżeli Ci pomogłem. Kliknij 1387468256-U352037.png, Dzięki :)

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...