Vai al contenuto
Il server del mese è
Visita la nostra nuova lista server!

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

  • 0
xGalaxy97x

Computercraft Melee Turtle... Aiuto!

Domanda

Ciao a tutti ragazzi, oggi volevo programmare la mia tartaruga con la spada di Diamante, che allo startup, faceva questo ciclo
[CODE]
while true do
turtle.attack()
end

[/CODE]
ma c'è un problema: questa turtle l'ho messa sotto uno Spawn di Scheletri... e dato che ogni tanto si riempie il suo inventario, lascia cadere le cose a terra e questo non mi piace... Allora volevo inserire nello startup che ogni 300 secondi (5 minuti), si girasse di 180°, mettesse tutto quello che ha nell'inventario in una cesta dietro di essa, e poi si rigirasse nuovamente di 180° per tornare alla posizione di partenza e continuare a killare... Ma non so come impostare questo "ciclo"... Io vorrei che ogni 5 minuti, la mia tartaruga facesse
[CODE]
turtle.turnLeft()
turtle.turnLeft()
[/CODE]
depositasse tutto, e poi ancora

[CODE]
turtle.turnLeft()
turtle.turnLeft()
[/CODE]
... Chi mi può scrivere il codice per fare ciò? Non riesco a scriverlo... Grazie mille in anticipo a tutti!!!

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Recommended Posts

Bene, oltre a risolvere il bug ho anche migliorato il codice. Eccolo qua ;)
[code]

local count = 0
while true do
turtle.attack()
-- Se la Turtle non riesce a prendere un oggetto
if not turtle.suck() then
-- Controlla se l'inventario è pieno o non c'è nulla da raccogliere
for i=1, 16 do
if turtle.getItemCount(i) > 0 then
-- Aumenta di 1 la variabile che conta gli slot pieni
count = count+1
end
end
if count == 16 then
turtle.turnLeft()
turtle.turnLeft()
for i=1, 16 do
turtle.select(i)
turtle.drop(64)
end
turtle.turnLeft()
turtle.turnLeft()
-- Riavvia il tutto in modo da poter ricominciare
os.reboot()
end
end
end
[/code]

Inoltre, così la Turtle dovrebbe raccogliere in automatico i drop dei mob più lontani, anche se alla stessa distanza massima di un blocco.
Spero di esserti stato d'aiuto :) se qualcosa non dovesse funzionare, dimmelo pure.

EDIT: Ho scoperto che purtroppo la Turtle si svuota anche se non è piena, quindi se per te va bene lascio così, altrimenti cerco di fixare.

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
[quote name='Chris54721' timestamp='1359735150' post='648567']
Vai nella cartella "saves" nella tua cartella di minecraft (.minecraft), seleziona il tuo mondo e poi "computer". A questo punto utilizza il comando "id" sulla turtle in modo che ti dia il suo id, a questo punto apri la cartella corrispondente all'id, crea un nuovo file di testo chiamato "startup" e copia il codice ;)
[/quote]
EDIT: Sono riuscito a metterlo, ma non funziona... cioè parte, ma seleziona tutti gli slot e poi ricomincia da capo a selezionare... non scarica gli oggetti...

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
Vai nella cartella "saves" nella tua cartella di minecraft (.minecraft), seleziona il tuo mondo e poi "computer". A questo punto utilizza il comando "id" sulla turtle in modo che ti dia il suo id, a questo punto apri la cartella corrispondente all'id, crea un nuovo file di testo chiamato "startup" e copia il codice ;)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
[quote name='Chris54721' timestamp='1359732163' post='648507']
Ah, allora basta che la sostituisci con:
[code]
os.reboot()
[/code]
[/quote]

Ok ora lo provo... ma hai qualche metodo per "copiarlo" ed "incollarlo" nella mia tartaruga? xD

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
[quote name='xGalaxy97x' timestamp='1359731991' post='648504']
Scusami, ma l'ultima riga non la capisco... che senso ha questo???
[CODE]

[color=#000000]shell[/color][color=#666600].[/color][color=#000000]run[/color][color=#666600]([/color][color=#008800]"NOMEPROGRAMMA"[/color][color=#666600])[/color]
[/CODE]
Io non ho nessun programma, vorrei eseguire il tutto allo startup...
[/quote]

Ah, allora basta che la sostituisci con:
[code]
os.reboot()
[/code]

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
[quote name='Chris54721' timestamp='1359731626' post='648486']
Non ho provato il codice quindi potrebbe non funzionare. In pratica questo lo svuota non ogni 5 min ma appena la Turtle è piena:

EDIT: Ho riscritto una parte sbagliata, riprova a mettere il codice nuovo:

[CODE]
local count = 0
while true do
turtle.attack()
-- Se la Turtle non riesce a prendere un oggetto
if not turtle.suck() then
-- Controlla se l'inventario è pieno o non c'è nulla da raccogliere
for i=1, 16 do
turtle.select(i)
if turtle.detect() then
-- Aumenta di 1 la variabile che conta gli slot pieni
count = count+1
end
end
if count == 16 then
svuotaInventario()
end
end
end
-- Funzione che viene eseguita quando la Turtle è piena
function svuotaInventario()
turtle.turnLeft()
turtle.turnLeft()
for i=1, 16 do
turtle.select(i)
turtle.place(64)
end
turtle.turnLeft()
turtle.turnLeft()
-- RIavvia il tutto in modo da poter ricominciare
shell.run("NOMEPROGRAMMA")
end
[/CODE]
[/quote]

Scusami, ma l'ultima riga non la capisco... che senso ha questo???
[CODE]

[color=#000000]shell[/color][color=#666600].[/color][color=#000000]run[/color][color=#666600]([/color][color=#008800]"NOMEPROGRAMMA"[/color][color=#666600])[/color]
[/CODE]
Io non ho nessun programma, vorrei eseguire il tutto allo startup...

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
Non ho provato il codice quindi potrebbe non funzionare. In pratica questo lo svuota non ogni 5 min ma appena la Turtle è piena:

EDIT: Ho riscritto una parte sbagliata, riprova a mettere il codice nuovo:

[CODE]
local count = 0
while true do
turtle.attack()
-- Se la Turtle non riesce a prendere un oggetto
if not turtle.suck() then
-- Controlla se l'inventario è pieno o non c'è nulla da raccogliere
for i=1, 16 do
turtle.select(i)
if turtle.detect() then
-- Aumenta di 1 la variabile che conta gli slot pieni
count = count+1
end
end
if count == 16 then
svuotaInventario()
end
end
end
-- Funzione che viene eseguita quando la Turtle è piena
function svuotaInventario()
turtle.turnLeft()
turtle.turnLeft()
for i=1, 16 do
turtle.select(i)
turtle.place(64)
end
turtle.turnLeft()
turtle.turnLeft()
-- RIavvia il tutto in modo da poter ricominciare
shell.run("NOMEPROGRAMMA")
end
[/CODE]

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

×
×
  • Crea Nuovo...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.