Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Carpentry [Python] для сервера Forest Wars

Only working scripts
Post Reply
chernysh
Novice
Novice
Posts: 61
Joined: 05.06.2011 14:54
Location: Ukraine

Carpentry [Python] для сервера Forest Wars

Post by chernysh »

Скрипт для прокачки Carpentry.
Инструкция в коде. Для работоспособности нужен stealth клиент не ниже 3.8.0 версии.

Code: Select all

# -*- coding: utf-8 -*-

## Скрипт для прокачки Carpentry под сервер Forest Wars http://forestwars.ru
## by chernysh aka De Pol'
##
## Описание:
##     Скрипт прокачивает Carpentry в процессе делания
##     music stand. Нужно 15 логов для данного предмета.
##     Сначала делает один предмет, а последующие делает
##     через комманду .makelast
##
## Инструкция:
##     Ложим под ноги логи (можно несолькими стопками).
##     Рядом ставим треш (мусорник), либо сундук.
##     В бэкпак ложим тесак (carpentry tool).
##     Запускаем.
##
## Лицензия:
##     Скрипт распространяется под свободной лицензией GPL2. 
##     При любых модификациях скрипта вы обязаны указать
##     разработчика базового скрипта.
##
## Поддержка:
##     Скрипт написан c использованием Python
##     Для работы нужен stealth не ниже версии 3.8.0
##     Любые замечания и пожелания оставляйте в теме форума

from stealth import *
from datetime import datetime
import time

how_logs = 15 ## Сколько логов нужно брать с пола
type_stand = 0x0EB5 ## Тип сделанного предмета (music stand)
type_logs = 0x1BDD ## Тип логов, которые нужно брать с пола (простые)
trash_id = 0x4004088F ##  ID мусорника, чтобы сбрасывать готовый предмет
carpentry_tools = 0x4004A8B1 ## ID или тип тесака :)
first_time = True

def get_logs_ground(count_in_pack):
    """
        Функция проверки кол-во логов на полу
        с последующим перемещением оных в backpack
    """
    if count_in_pack < how_logs:
        FindType(type_logs, Ground())
        if FindCount() > 0:
            need_logs = how_logs - count_in_pack
            if FindQuantity() < need_logs:
                Grab(FindItem(), FindQuantity())
                Wait(1000)
                get_logs_ground(count_in_pack)
            Grab(FindItem(), need_logs)
            Wait(1000)
            print 'Взял %s логов с %s' % (need_logs, FindQuantity())
        else:
            print 'Нету логов на полу'
            SetARStatus(False)
            Disconnect()
            time.sleep(0)

            
def move_trash():
    """
        Функция перемещения сделанного предмета
        в мусорник
    """
    FindType(type_stand, Backpack())
    Wait(100)
    while FindCount() > 0:
        MoveItem(FindItem(),1,trash_id,0,0,0)
        Wait(700)
        print 'Вы переместили %s предметов в мусорник' % FindQuantity()
        FindType(type_stand, Backpack())
        Wait(100)
    time.sleep(0)
		
    
def make_item():
    """
        Функция, которая делает предмет
    """
    global first_time
    if first_time == True:
        CancelMenu()
        Wait(100)
        WaitMenu('Carpentry', 'Furniture')
        Wait(100)
        WaitMenu('Furniture', 'music stand')
        Wait(100)
        if TargetPresent():
            CancelTarget()
        ctime = datetime.now()
        k = 0
        UseObject(carpentry_tools)
        Wait(100)
        while InJournalBetweenTimes('Вы переместили|You fail', ctime, datetime.now()) <> -1 or k > 300:
            Wait(100)
            k = k + 1
        Wait(1000)
        first_time = False
        time.sleep(0)
    else:
        UOSay('.makelast')
        Wait(10000)

while not Dead():
    count_in_pack = Count(type_logs)
    get_logs_ground(count_in_pack)
    make_item()
    Wait(100)
    move_trash()
    if GetSkillValue('Carpentry') >= 100.00:
        SetARStatus(False)
        Disconnect()
        time.sleep(0)
    time.sleep(0)
time.sleep(0)    
exit()
Любые замечания и пожелания оставляйте в этой теме. Спасибо
Alex
Moderator
Moderator
Posts: 351
Joined: 07.04.2005 4:41

Re: Carpentry [Python] для сервера Forest Wars

Post by Alex »

модуль stealth в скрипт уже импортируется автоматически

Code: Select all

from stealth import *
это не обязательно

выкинь все time.sleep(0) из скрипта, они не нужны уже)
exit() в конце не нужен)

вместо

Code: Select all

while InJournalBetweenTimes('Вы переместили|You fail', ctime, datetime.now()) <> -1 or k > 300:
    Wait(100)
    k = k + 1
красивше будет

Code: Select all

WaitJournalLine(ctime, 'Вы переместили|You fail', 30000)
тут Wait`ы можно убрать

Code: Select all

CancelMenu()
Wait(100)
WaitMenu('Carpentry', 'Furniture')
Wait(100)
WaitMenu('Furniture', 'music stand')
Wait(100)
после Disconnect() не будет лишним break, что бы выйти из цикла

а вообще круто :)
Новый стелс лежит тут. Стелс это произведение искусства! :)
Post Reply