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

NDW, [Python], Cooking

Only working scripts
Post Reply
Xor
Neophyte
Neophyte
Posts: 21
Joined: 03.09.2012 7:07

NDW, [Python], Cooking

Post by Xor »

файл cooking.py

Code: Select all

# -*- coding: mbcs -*-
print("---------- LOADING ----------")
from hungry import Hungry
from checksave import CheckSave
from checkdead import CheckDead
from datetime import timedelta, datetime as dt
from time import sleep
print("========== RUNNING ==========")

tFryPan = 0x097f
tRawSteak = 0x097a
tCookSteak = 0x097b
raw_pickup = 350

totalDone = 0
hungryTimer = dt.now()

def FoodStack(obj_type,x=0,y=0,color=-1):
	if not x:
		x = GetX(Self())
	if not y:
		y = GetY(Self())

	if not FindTypeEx(obj_type,color,Backpack(),False):
		return 0

	item_to_drop = FindItem()
	amt = FindQuantity()
	if amt == 60000:
		Drop(item_to_drop,amt,x,y,0)
		CheckLag(100000)
		FoodStack(obj_type,x,y,color)
		return 1
	else:
		while 1:
			if FindTypeEx(obj_type,color,Ground(),False):
				if FindQuantity() == 60000:
					Ignore(FindItem())
				elif GetX(FindItem()) != x or GetY(FindItem()) != y:
					Ignore(FindItem())					
				else:
					if amt <= (60000-FindQuantity()):
						ts = dt.now()
						MoveItem(item_to_drop,0,FindItem(),0,0,0)
						sleep(0.2)
						CheckLag(100000)
						if InJournalBetweenTimes('not add item', ts, dt.now()) > 0:
							Ignore(FindItem())
						FoodStack(obj_type,x,y,color)
						return 1
					else:
						diff = 60000 - FindQuantity()
						MoveItem(item_to_drop,diff,FindItem(),0,0,0)
						sleep(0.2)
						CheckLag(100000)
						if InJournalBetweenTimes('not add item', ts, dt.now()) > 0:
							Ignore(FindItem())
						FoodStack(obj_type,x,y,color)
						return 1
			else:
				Drop(item_to_drop,amt,x,y,0)
				sleep(0.2)
				CheckLag(100000)
				FoodStack(obj_type,x,y,color)
				return 1
		return 1

def CheckTools():
	if not FindType(tFryPan,Backpack()):
		if not FindType(tFryPan,-1):
			print ("Сковородочка куда-то закатилась... Не могу жарить!")
			exit
		else:
			myFryPan = FindItem()
			CheckSave()
			Grab(myFryPan,1)
			sleep(0.2)
			CheckLag(60000)
			print ("О! Сковородочка нашлась :)")
	return 1

def CheckSteaks():
	if not FindType(tRawSteak,Backpack()):
		if not FindType(tRawSteak,Ground()):
			print ("No raw steaks left")
			exit
		else:
			if (FindQuantity() >= raw_pickup):
				CheckSave()
				Grab(FindItem(),raw_pickup)
				sleep(0.2)
				CheckLag(60000)
			else:
				CheckSave()
				Grab(FindItem(),FindQuantity())
				sleep(0.2)
				CheckLag(60000)
				CheckSteaks()
				return 1
	else:
		amt = FindFullQuantity()
		diff = raw_pickup - amt
		if FindCount() > 1:
			from_to = FindCount()
			for i in range(1,from_to):
				CheckSave()
				Grab(FindType(tRawSteak,Backpack()),0)
				CheckLag(60000)
		if amt > 25: # если в сумке чо-то есть, то продолжаем готовить, ничо не дергая
			return 1
		while amt < raw_pickup:
			CheckDead()
			CheckSave()
			if not FindType(tRawSteak,Ground()):
				print ("No raw steaks left")
				if amt > 25:
					return 1
				else:
					exit
			else:
				if (FindQuantity() >= diff):
					CheckSave()
					Grab(FindItem(),diff)
					sleep(0.2)
					CheckLag(60000)
					break
				else:
					CheckSave()
					Grab(FindItem(),FindQuantity())
					diff -= FindQuantity()
					amt += FindQuantity()
					sleep(0.2)
					CheckLag(60000)
	return 1			

def InBetween(valueAmt,valueFrom,valueTo):
	if valueAmt >= valueFrom and valueAmt < valueTo:
		return True
	else:
		return False

def Cook():
	
	cookingSkill = GetSkillValue('Cooking')
	lvl = 'cooked fishsteak'
	if InBetween(cookingSkill,20,35): # skill 30
		lvl += ''
	if InBetween(cookingSkill,35,55): # skill 50
		lvl += ' (3)'
	elif InBetween(cookingSkill,55,75): # skill 70
		lvl += ' (4)'
	elif InBetween(cookingSkill,75,95): # skill 90
		lvl += ' (6)'
	elif InBetween(cookingSkill,95,115): # skill 115
		lvl += ' (9)'
	elif InBetween(cookingSkill,115,125): 
		lvl += ' (12)'
	elif InBetween(cookingSkill,125,500): 
		lvl += ' (15)'

	WaitMenu('What do you want to make?', lvl)


	CheckSave()
	CheckDead()
	global hungryTimer
	if (hungryTimer + timedelta(seconds=120)) < dt.now():
		Hungry(0)
		hungryTimer = dt.now()
	CheckTools()
	CheckSteaks()
	
	ts = dt.now()
	UseType(tRawSteak,0)
	sleep(1)

	FoodStack(tCookSteak)
	WaitJournalLine(ts,'burn|already doing|cancelled|put the goods',30000)
	if FindType(tCookSteak,Backpack()):
		return FindFullQuantity()

	return 0


def CookingInit():
	IgnoreReset()
	SetFindDistance(2)
	SetARStatus(True)
	CheckTools()
	CheckSteaks()
	Hungry()

	return 1


CookingInit()
while True:
	totalDone += Cook()
	print ("Всего сделано: " + str(totalDone) + " шт. стейков")

зависимости:
checksave
checkdead
hungry

Готовим возле печки.
Сковородка в сумке или на полу, сырая рыба на полу в радиусе 2х клеток.
Раскладывает всю готовую рыбу в пачки по 60к, стак сырой рыбы добивает до конца и приступает к новому.

В теории скрипт из серии: запустил и забыл, только порченую рыбу выносить не забывать.
Если не обленюсь, сделаю в hungry проверку на гнилую рыбу. Тогда точно можно будет запускать и забывать до 150 :)
Post Reply