[C++/Source] Steine Splitter

10/11/2015 19:59 [Flash]#1
Hallo,
Dieser Code ist die Funktion für das Item 25100 (Geiststein-Schriftrolle).
Dieses Item entfernt sockets aus einer Waffe/Rüsstung und hinterlässt Splitter.
Kann mir jemand diese Funktion so ändern damit keine Splitter hinterlassen werden sondern clean sockets ?

PHP Code:
        if (bHasMetinStone)
        {
            for (
int i 0ITEM_SOCKET_MAX_NUM; ++i)
            {
                
long socket pkTarget->GetSocket(i);
                if (
socket && socket != ITEM_BROKEN_METIN_VNUM)
                {
                    
AutoGiveItem(socket);
                    
pkTarget->SetSocket(iITEM_BROKEN_METIN_VNUM);
                }
            }
            
pkItem->SetCount(pkItem->GetCount() - 1);
            return 
true;
        }
        else
        {
            
ChatPacket(CHAT_TYPE_INFOLC_TEXT("빼낼 수 있는 메틴석이 없습니다."));
            return 
false;
        } 
PS: Diese Code befindet sich in char_item.cpp
10/11/2015 22:57 DasSchwarzeT#2
Quote:
Originally Posted by [Flash] View Post
Hallo,
Dieser Code ist die Funktion für das Item 25100 (Geiststein-Schriftrolle).
Dieses Item entfernt sockets aus einer Waffe/Rüsstung und hinterlässt Splitter.
Kann mir jemand diese Funktion so ändern damit keine Splitter hinterlassen werden sondern clean sockets ?

PHP Code:
        if (bHasMetinStone)
        {
            for (
int i 0ITEM_SOCKET_MAX_NUM; ++i)
            {
                
long socket pkTarget->GetSocket(i);
                if (
socket && socket != ITEM_BROKEN_METIN_VNUM)
                {
                    
AutoGiveItem(socket);
                    
pkTarget->SetSocket(iITEM_BROKEN_METIN_VNUM);
                }
            }
            
pkItem->SetCount(pkItem->GetCount() - 1);
            return 
true;
        }
        else
        {
            
ChatPacket(CHAT_TYPE_INFOLC_TEXT("빼낼 수 있는 메틴석이 없습니다."));
            return 
false;
        } 
PS: Diese Code befindet sich in char_item.cpp
PHP Code:
        if (bHasMetinStone)
        {
            for (
int i 0ITEM_SOCKET_MAX_NUM; ++i)
            {
                
long socket pkTarget->GetSocket(i);
                if (
socket && socket != ITEM_BROKEN_METIN_VNUM)
                {
                    
AutoGiveItem(socket);
                }
            }
            
pkItem->SetCount(pkItem->GetCount() - 1);
            return 
true;
        }
        else
        {
            
ChatPacket(CHAT_TYPE_INFOLC_TEXT("빼낼 수 있는 메틴석이 없습니다."));
            return 
false;
        } 
10/12/2015 12:27 .Inya#3
Quote:
Originally Posted by DasSchwarzeT View Post
PHP Code:
        if (bHasMetinStone)
        {
            for (
int i 0ITEM_SOCKET_MAX_NUM; ++i)
            {
                
long socket pkTarget->GetSocket(i);
                if (
socket && socket != ITEM_BROKEN_METIN_VNUM)
                {
                    
AutoGiveItem(socket);
                }
            }
            
pkItem->SetCount(pkItem->GetCount() - 1);
            return 
true;
        }
        else
        {
            
ChatPacket(CHAT_TYPE_INFOLC_TEXT("빼낼 수 있는 메틴석이 없습니다."));
            return 
false;
        } 
Damit duplizierst du die Steine, sie werden dir ins Inventar gegeben aber nicht aus dem Item entfernt
10/12/2015 12:51 rollback#4
Quote:
Originally Posted by .Inya View Post
Damit duplizierst du die Steine, sie werden dir ins Inventar gegeben aber nicht aus dem Item entfernt
Code:
        if (bHasMetinStone) 
        { 
            for (int i = 0; i < ITEM_SOCKET_MAX_NUM; ++i) 
            { 
                long socket = pkTarget->GetSocket(i); 
                if (socket > 2 && socket != ITEM_BROKEN_METIN_VNUM) 
                { 
                    AutoGiveItem(socket); 
                    pkTarget->SetSocket(i, VNUM_VOM_LEEREN_SOCKET);
                } 
            } 
            pkItem->SetCount(pkItem->GetCount() - 1); 
            return true; 
        } 
        else 
        { 
            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("빼낼 수 있는 메틴석이 없습니다.")); 
            return false; 
        }
10/12/2015 15:58 [Flash]#5
Klappt alles nicht. Die Steine sollen aus dem gegenstand entfernt werden und es sollen keine splitter hinterlassen werden. Damit man neue Steine einfügen kann :D
10/12/2015 16:25 DasSchwarzeT#6
Quote:
Originally Posted by .Inya View Post
Damit duplizierst du die Steine, sie werden dir ins Inventar gegeben aber nicht aus dem Item entfernt
Oh habs falsch verstanden..

PHP Code:
        if (bHasMetinStone)
        {
            for (
int i 0ITEM_SOCKET_MAX_NUM; ++i)
            {
                
long socket pkTarget->GetSocket(i);
                if (
socket && socket != ITEM_BROKEN_METIN_VNUM)
                {
                    
AutoGiveItem(socket);
                    
pkTarget->SetSocket(i0);
                }
            }
            
pkItem->SetCount(pkItem->GetCount() - 1);
            return 
true;
        }
        else
        {
            
ChatPacket(CHAT_TYPE_INFOLC_TEXT("빼낼 수 있는 메틴석이 없습니다."));
            return 
false;
        } 
10/12/2015 16:47 Avulsed#7
Quote:
Originally Posted by DasSchwarzeT View Post
Oh habs falsch verstanden..

PHP Code:
   if (bHasMetinStone)
        {
            for (
int i 0ITEM_SOCKET_MAX_NUM; ++i)
            {
                
long socket pkTarget->GetSocket(i);
                if (
socket && socket != ITEM_BROKEN_METIN_VNUM)
                {
                    
AutoGiveItem(socket);
                    
pkTarget->SetSocket(i0);
                }
            }
            
pkItem->SetCount(pkItem->GetCount() - 1);
            return 
true;
        }
        else
        {
            
ChatPacket(CHAT_TYPE_INFOLC_TEXT("빼낼 수 있는 메틴석이 없습니다."));
            return 
false;
        } 
Code:
  if (bHasMetinStone)
        {
            for (int i = 0; i < ITEM_SOCKET_MAX_NUM; ++i)
            {
                long socket = pkTarget->GetSocket(i);
                if (socket > 2 && socket != ITEM_BROKEN_METIN_VNUM)
                {
                    AutoGiveItem(socket);
                    pkTarget->SetSocket(i, 1);
                }
            }
            pkItem->SetCount(pkItem->GetCount() - 1);
            return true;
        }
        else
        {
            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("빼낼 수 있는 메틴석이 없습니다."));
            return false;
        }
Wenn du den socket auf 0 setzt ist der Sockel ganz weg, um einen leeren einzufügen musst du ihn auf 1 setzen.
10/12/2015 17:17 [Flash]#8
Quote:
Originally Posted by Avulsed View Post
Code:
  if (bHasMetinStone)
        {
            for (int i = 0; i < ITEM_SOCKET_MAX_NUM; ++i)
            {
                long socket = pkTarget->GetSocket(i);
                if (socket > 2 && socket != ITEM_BROKEN_METIN_VNUM)
                {
                    AutoGiveItem(socket);
                    pkTarget->SetSocket(i, 1);
                }
            }
            pkItem->SetCount(pkItem->GetCount() - 1);
            return true;
        }
        else
        {
            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("빼낼 수 있는 메틴석이 없습니다."));
            return false;
        }
Wenn du den socket auf 0 setzt ist der Sockel ganz weg, um einen leeren einzufügen musst du ihn auf 1 setzen.
Danke !
Ich hatte genau die selbe Funktion jedoch mit der Zahl 0.
#close