KarayelForum.Net KarayelForum.Net

Script [Python Script] Otomatik Ticaret Scripti


Konu

#1
Yorumları:
66
Konuları:
66
Rep Puanı:
0
Referansları
0
Kod:
import player , net , chr , chat , exchange , mt2pyv , time , item , constInfo

try:
    x = len(mt2pyv.players)
except:
    mt2pyv.players = []

InventorySize = hasattr(player, 'GetExtendInvenMax') and player.GetExtendInvenMax() > 0 and player.GetExtendInvenMax() or player.INVENTORY_PAGE_SIZE * player.INVENTORY_PAGE_COUNT
LEVEL = player.GetStatus(player.LEVEL)   
myvid = player.GetMainCharacterIndex()
yang = player.GetMoney()

####### CONFIG #######
Chat_Information = 0                       # Enabled = 1 Disabled = 0   
Trade_Send = 1                              # Enabled = 1 -- Disabled = 0  -- Send item or yang
NICK = ["Alıcı Nick","Alıcı Nick2"]
ITEM_SEND = 1
ITEM_SEND_BON = 1
ITEM_ID = [50276,50267,50275,25040,50011,27015,50277,83032,25040,50011,70102,83033,113000,123000,133000,143000,153000,163000,55409,50928,50929,20552,20502,22001,22002,22061,22051,22052,70104,70105,70106,70107,71093,50275,50276,50267,50268]     # ITEM IDS Ex: [1231,12542,63453,4213]
Send_Money = 1                            # Enabled =1  -- Disabled = 0    -- Send Yang
AMOUNT = 100000                            # Yang AMOUNT
Trade_Receive = 1         # Enabled =1  -- Disabled = 0      # Receive        -ACCEPT Trade
LEVEL_LIMIT = 0             # Enabled = 1 -- Disabled = 0
LIMIT = 30     #Ex (if Level > 30 , trade send = 1 trade receive = 0 )    , #if Level < 30 , trade receive = 1 trade send = 0
SENDER_NICK_ACTIVE = 0             # Enabled = 1 -- Disabled = 0   # Trade senders name
SENDER_NICK = ["Gönderici Nick"]        # if SENDER_NICK_ACTIVE = 1 , change #if (character_name = Sender_nick  , send =1 receive= 0 ) , (else send = 0 receive = 1)
ITEM_COUNT_ACTIVE = 0      # Enabled = 1 -- Disabled = 0
ITEM_COUNT = 1            # if ITEM_COUNT_ACTIVE = 1 , does not work until the specified number

JUST_MY_BOTS = 0        # JUST MY BOTS = 1 | IF VALUE == 0  SO HING CPU USAGE BUT ALL PLAYERS

MAX_SAYI = 1 # SUNUCUDA IZIN VERİLEN MAXIMIM BİRLEŞTİRME SAYISI ( GENELDE 200)

####### CONFIG #######


try:
    if constInfo.islem >= 0:
        constInfo.islem = 1
except:
        constInfo.islem = 0

def Accept_Trade():                    # Trade accept
    trade_status = exchange.GetAcceptFromTarget()
    if trade_status:
        net.SendExchangeAcceptPacket() # Trade accept

def trade(a,b): # ( 1 , Inventory_Slot , Trade_Slot )
    net.SendExchangeItemAddPacket(1,a,b)

def trade2(a,b): # ( 1 , Inventory_Slot , Trade_Slot )
    net.SendExchangeItemAddPacket(5,a,b)
   
def EsyalariDuzenle():
    BIRLESTIR = []
    BIRLESTIR2 = []
   
    for slot in range(InventorySize):
        ID = player.GetItemIndex(1,slot)
        if ID != 0:
               
            SAYI = player.GetItemCount(1,slot)
                   
            if SAYI < MAX_SAYI:
                    BIRLESTIR.append(slot)
                    BIRLESTIR2.append(ID)
                   
    for TOPLA in range(len(BIRLESTIR)): # Yükseltme
        for TOPLA2 in range(len(BIRLESTIR)):
            try:
               
                if TOPLA > TOPLA2:
                    continue
               
                elif int(BIRLESTIR2[TOPLA]) != int(BIRLESTIR2[TOPLA2]):
                    continue
                   
                elif int(BIRLESTIR[TOPLA]) == int(BIRLESTIR[TOPLA2]):
                    #chat.AppendChat(3,str( BIRLESTIR[TOPLA] ) + " Aynı " + str( BIRLESTIR[TOPLA2] ))
                    continue
                else:
                    item.SelectItem(player.GetItemIndex(  int(BIRLESTIR[TOPLA]) ))
                    ItemTipi = item.GetItemType()
                   
                    if ItemTipi != 6 and ItemTipi != 1 and ItemTipi != 2: # EVENT
                        #chat.AppendChat(3,str(BIRLESTIR[birlestir]) + " Bunlar Birlestirilecek" + str(BIRLESTIR[TOPLA2]) )
                        net.SendItemMovePacket(1,int(BIRLESTIR[TOPLA2]),1, int(BIRLESTIR[TOPLA]), player.GetItemCount( MAX_SAYI ) )
                        #time.sleep(0.002)
            except:
                ZYNIX = 100
   
def Save_vid():
    vid = myvid # Character Vid
    Errorr = 0
    try:
        ths = open("Trade.txt", "r") # metin2 Folder / Trade.txt read mode
    except IOError:
        Errorr = 1                       # if Error -  Errorr= 1
    if (Errorr==0):                      # Close read mode - Open Append Mode (old data + Write( vid + " "))
        ths.close()
        ths = open("Trade.txt", "a")
        ths.write(str(vid) + " ")
        ths.close()
    elif (Errorr==1):                      # metin2 Folder /  Trade.txt File is missing! ---  Create File -  Trade.txt and Write (Vid + " ")
        ths = open("Trade.txt", "w")
        ths.write(str(vid) + " ")
        ths.close()
    if(Chat_Information):
        chat.AppendChat(3,"Write Vid: "+str(vid))

def Scan_vids(): # Trade.txt - Scan vids
    ths = open("Trade.txt", "r") # Read Mode
    read_file = ths.read() # Read file
    ths.close()      # Close file     
    Vid_list = read_file.split(' ')
    return Vid_list

def send_func(player_vid):

    FOUND_ITEMS = []
    FOUND_ALCHMY = []
    send_item = 0
    send_yang = 0
   
    if ITEM_SEND:   
   
        for slot in xrange(InventorySize):   

            item.SelectItem(player.GetItemIndex(slot))
            itemt = item.GetItemType()
            if (itemt >= 1) and (itemt <= 2):
                val1, val2 = player.GetItemAttribute(int(slot), int(0))
                v1, v2 = item.GetLimit(0)
                if v2 <= int(70):
                    if '+' not in item.GetItemName():
                        continue
                    if int(item.GetItemName().split('+')[1]) <= int(6):
                        if ITEM_SEND_BON == 1:
                            bonivalue = -1
                            bonicount = 0
                            tocontinue = 0
                            while bonivalue != 0 and tocontinue != 1:
                                val1, val2 = player.GetItemAttribute(int(slot), int(bonicount))
                                bonivalue = val1
                                bonicount = bonicount + 1
                                if (bonicount > 3): # 3 efsun varsa
                                    if (item.GetItemType() != item.ITEM_TYPE_WEAPON): # Silah Değilse
                                        if( item.GetItemSubType() != item.ARMOR_BODY): # Zırh değilse
                                            tocontinue = 1 # satma
                                            break                           
                                if ( (item.GetItemSubType() == item.ARMOR_SHIELD) or  (   item.GetItemType() == item.ITEM_TYPE_WEAPON  and ( item.GetItemSubType() == 4 or item.GetItemSubType() == 5 )    ) ):
                                    if val1 == 4 and val2 >= 8: # zeka
                                        tocontinue = 1
                                        break
                                if (item.GetItemType() != item.ITEM_TYPE_WEAPON): # Silah Değilse
                                    if val1 == 17 and val2 >= 10: # yarı insan
                                        tocontinue = 1
                                        break
                                    if val1 == 22 and val2 >= 20: #şeytan
                                        tocontinue = 1
                                        break
                                if (item.GetItemType() == item.ITEM_TYPE_ARMOR): #ekipman ise
                                    if( item.GetItemSubType() != item.ARMOR_BODY): # zırh değilse
                                        if val1 == 1 and val2 >= 1000: # hp
                                            tocontinue = 1
                                            break
                                        if val1 == 35 and val2 >= 15: #ateş
                                            tocontinue = 1
                                            break
                                        if val1 == 36 and val2 >= 15: #şimşek
                                            tocontinue = 1
                                            break
                                        if val1 == 37 and val2 >= 15: #büyü
                                            tocontinue = 1
                                            break
                                        if val1 == 38 and val2 >= 15: #rüzgar
                                            tocontinue = 1
                                            break
                                if val1 == 43 and val2 >= 20: #exp
                                    tocontinue = 1
                                    break
                                if val1 == 44 and val2 >= 20: #yang
                                    tocontinue = 1
                                    break
                                if val1 == 45 and val2 >= 20: #eşya
                                    tocontinue = 1
                                    break
                                if val1 == 48 and val2 >= 0: #sersem
                                    tocontinue = 1
                                    break
                                if val1 == 49 and val2 >= 0: #yavaş bağışıklık
                                    tocontinue = 1
                                    break
                                if val1 == 71 and val2 >= 15: # beceri
                                    tocontinue = 1
                                    break       
                                if val1 == 72 and val2 >= 35: # ortalama
                                    tocontinue = 1
                                    break
                                if val1 == 77 and val2 >= 20: #eşya ele geçirme (diğer efsun )
                                    tocontinue = 1
                                    break
                            if tocontinue == 1:
                                ########## SORT
                                send_item = 1
                                FOUND_ITEMS.append(slot)
                                ########## SORT
                                continue
            elif player.GetItemIndex(slot) in ITEM_ID and len(FOUND_ITEMS) < ITEM_COUNT and ITEM_COUNT_ACTIVE == 1:
                send_item = 1
                FOUND_ITEMS.append(slot)
           
            elif player.GetItemIndex(slot) in ITEM_ID :
                send_item = 1
                FOUND_ITEMS.append(slot)

               
            if len(FOUND_ITEMS) >= 4:
                break
       
        for simya in range(2500):
            if player.GetItemIndex(5,simya) in ITEM_ID :
                send_item = 1
                FOUND_ALCHMY.append(simya)
                chat.AppendChat(3,"BULDUM AMK")

    X = 0 # (0-12) because trade slot max 12   
   
    if yang > 9999999 and Send_Money == 1:
        send_yang = 1   
    elif yang > AMOUNT and yang < 9999999 and Send_Money == 1:
        send_yang = 2       
   
    open_trade = 0
    if send_yang == 1 or send_yang == 2 or send_item:   
        open_trade = 1
        net.SendExchangeStartPacket(player_vid) # Trade request
   
    if send_item :
        for don in xrange(len(FOUND_ITEMS)):
            trade(int( FOUND_ITEMS[don] ) , X )
            X = X +1

        for don in xrange(len(FOUND_ALCHMY)):
            trade2(int( FOUND_ALCHMY[don] ) , X )
            X = X +1

    if     send_yang == 1 :
        net.SendExchangeElkAddPacket(9999999-AMOUNT)
    elif send_yang == 2 and AMOUNT > 3000:
        net.SendExchangeElkAddPacket(yang-AMOUNT+3000)        # Now yang = AMOUNT
    elif send_yang == 2 :
        net.SendExchangeElkAddPacket(yang-AMOUNT)        # Now yang = AMOUNT
   
    if open_trade and exchange.GetNameFromTarget() in NICK:
        net.SendExchangeAcceptPacket()                     # Trade Accept
    else:
        net.SendExchangeExitPacket()                    # Trade Close
    if send_item == 0:
        constInfo.kapat = 1

def Scan_Player_and_Send():

    Old_Vid = -1
   
    if len(mt2pyv.players) >= 1 :
        for sayim in xrange(len(mt2pyv.players)):
           
            if chr.GetNameByVID( mt2pyv.players[sayim] ) in NICK :   
                Old_Vid = int( mt2pyv.players[sayim] )
                send_func(Old_Vid) # trade operations
                break
   
    if Old_Vid == -1 :
        try:
            TEMP_VIDS = Scan_vids()
       
            for tempp in xrange( len( TEMP_VIDS ) ) : # Trade.txt word length ( vid count)
           
                if chr.GetNameByVID(int( TEMP_VIDS[tempp] ) ) in NICK :     # vid  in nick (vid == nick)
                    Old_Vid = int( TEMP_VIDS[tempp] )
                    mt2pyv.players.append( Old_Vid )
                    send_func( Old_Vid )
                    break
        except:
            ZYNIX = 100
       
       

    if Old_Vid == -1 and JUST_MY_BOTS == 0 :       
   
        for x in xrange(myvid-200000 ,myvid+200000):
            #if chr.GetInstanceType(x) == chr.INSTANCE_TYPE_PLAYER and chr.HasInstance(x) and chr.GetNameByVID(x) != chr.GetName() and x not in mt2pyv.players and chr.GetNameByVID( x ) in NICK:
            if x not in mt2pyv.players and chr.GetNameByVID( x ) in NICK:
                mt2pyv.players.append(x)
                send_func(x)
                break

try:

    if mt2pyv.OldVid != myvid:
   
        mt2pyv.OldVid = myvid
        Save_vid()
       
except:
    mt2pyv.OldVid = 0
   
       
if(LEVEL_LIMIT==1):
    if(LEVEL < LIMIT):           
        Trade_Receive = 1
        Trade_Send = 0
    elif(LEVEL >= LIMIT ):       
        Trade_Send = 1
        Trade_Receive = 0

if (SENDER_NICK_ACTIVE==1):
    my_name = player.GetMainCharacterName()
    if(my_name in SENDER_NICK):
        Trade_Send = 1
        Trade_Receive = 0
    else:
        Trade_Receive = 1
        Trade_Send = 0

if Trade_Send == 1 and chr.GetNameByVID( myvid ) not in NICK :    # SEND   Item,Yang
    if player.GetItemCountByVnum(79506) != -1 :
        Scan_Player_and_Send()
    if(Chat_Information):
        chat.AppendChat(3,"M2BOB Forum Zynix - Trade Send Enabled!")
if (Trade_Receive == 1):  # receive Item,Yang
    Accept_Trade()
    if(Chat_Information):
        chat.AppendChat(3,"M2BOB Forum Zynix Item + Yang Receive Enabled!")
       
EsyalariDuzenle()

Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da