Unmantained Guida [GUIDA]ALLE BASI DEL LUA ( 1000° POST)

Una guida contrassegnata come Unmantained contiene informazioni su un argomento obsoleto, non più utile o files non aggiornati da parte del creatore.
Stato
Discussione chiusa ad ulteriori risposte.
L

lyonel

Ultima modifica da un moderatore:
Premessa:
Rilascio questa guida per iniziare a conoscere il linguaggio chiamato ".lua"; voi direte old e su questo non posso darvi torto ,perchè di fatto ci sono guide riguardanti il lua ,ma solo 2 sono comprensibili alla gente che si è appena appassionata al linguaggio o al mondo di metin2.
Premesso questo e le mie scuse per gli errori ortogrammali passati,presenti e futuri in quest guida.

Allora,il linguaggio lua nel mondo di metin si usa sopratuto per fare quest,dialoghi,e altre cose...
io provero a spiegare il linguaggio in meno parole possibili =)


Per Quanto Riguarda Dialoghi NPC.

Scaricare e Aprire NotePad++

Ogni conversazzione inizia con un titolo che si mette con il comando

say_title ("Titolo")

dopo il titolo viene immesso un testo che si mette con il comando

say ("Testo")

Questo è ciò che bisogna sapere per iniziare il lua =p

Ora Decidiamo che il nostro npc deve venderci qualcosa e quindi come titolo usiamo una cosa banale come :

say_title ("Venditore")

come facciamo a sapere che lui ci vuole vendere qualcosa ?? ce lo deve dire; allora usiamo i "say" e strutturiamo il primo pezzo di dialogo

Say_title ("Venditore")
say ("Ciao Amico")
say ("Ti stai avventurando sempre di più ")
say ("Nel meraviglioso mondo di metin!")
say ("Presto gli animali selvatici sarannò più forti")
say ("Vorresti Comprare Delle Pozzioni Per Sopravivere?")


Ecco abbiamo struturato il discorso ora che ci siamo fatti fare una domanda, dobbiamo rispondere ;e per fare ciò si creano delle variabili come si e no. Non staro qui a parlare molto
perchè e meglio che vi faccio vedere prima il comando e poi spiegarvelo. La Varriabile si crea cosi:

local variabile = select ("si" , "no" )

ora il comando e quello sopra elencato ma non sara sempre cosi io ora ho ciamato la variabile "variabile" ma voi potrete chiamarla pure in un altro modo tipo

local siono = select ( "si" , "ciao")

come avete visto non ho cambiato solo il nome variabile ma anche le opzioni che voi potrete modificare a vostro piacimento :)

fin qua e semplice ametetelo voi che non avete mai capito il lua non comenterete ma secondo me questa guida vi sara stata utile =) detto ciò continuiamo

ora io gli fo creare delle opzioni ma dentro quelle opzioni dovro pur far fare qualcosa o no?
certo che si allora si fa cosi

local siono = select ( "si" , "no" )

if siono == 1 then

ecco qua xd che siamo arrivati alla parte più difficile per chi inizia la sua aventura
nel linguaggio lua
ogni variabile si distingue con il nome visto prima che in questo caso è "siono"
ma come fa il game a distinguere il si e il no? non puo se non glielo diciamo noi allora
si usano gli " if " e gli "elseif" che ora andremo a vedere
ora prima di vedere "elseif" che è la stessa cosa di un "if" cambia solo la posizione e meglio spiegare la stringa soprastante

if = (in inglese) se
siono = nome variabbile
==
1 then = sarebbe la prima opzione che si indica con il numero 1

if si usa solo alla prima opzione di una variabile
mentre elseif si usa per le altre =p

quindi riassunto script .

Say_title ("Venditore")
say ("Ciao Amico")
say ("Ti stai avventurando sempre di più ")
say ("Nel meraviglioso mondo di metin!")
say ("Presto gli animali selvatici sarannò più forti")
say ("Vorresti Comprare Delle Pozzioni Per Sopravivere?")

local siono = select ( "si" , "no" )
if siono == 1 then

pc.giveitem2 (value item , numero item)
if pc . gold >= 500000 then
pc . changegold ( - 500000 )
return
end

elseif siono == 2 then
return
end



a ecco qua questo e tutto un npc cembra lungo ma è una cosa che se imparata si fa in 30 secondi
e non per dire =)
ma io vi o spiegato fino al "if siono == 1 then"
cosa sono tutti quei comandi sotto??
semplice questo

pc.giveitem2 (value item , numero item)

serve a far ottenere a un player l'item e il numero immessi tipo se voglio che il player ottenga una velenosa +9 scrivero

pc.giveitem2 (189, 1)
ovvero value spada velenosa +9 e quantità

ma non vogliamo dargliela gratis allora si usano questi comandi


if pc . gold >= 500000 then
pc . changegold ( - 500000 )


che sono la quantita yang

if pc . gold >= 500000 then

cioè 500k

e il comando che toglie al player la quantita yang scritta

pc . changegold ( - 500000 )




deto ciò che è riimasto solo

return
end

elseif siono == 2 then
return
end

"
return
end
"
si spiegano da soli sono la parte che chiudono una opzione di una variabile in questo caso del si
facendogli vendere ecc..
e chiudere script

mentre

elseif siono == 2 then
retrun
end


e semplicemente la chiusura dello script
visto che premendo no si rifiuta
si scrive solo return end

ora salvate lo script con il nome " change_empire.start.0.script "
creare una cartella e rinominarla nel value del npc che vogliate
dentro di essa creare una cartella chiamata " chat "
e dentro " chat " inserire il file salvato
ora riaprite note pad++ e scrivete "Nome Che Volete Dare Al Neg " con le virgolette e salvate con
il nome " change_empire.start.0.arg "
e in file creare un altro documento di testo ma lasciarlo vuoto e salvarlo con il nome " change_empire.start.0.when "

quindi voi su desckstop avrete 1 cartella chiamata con il valu npc ( io uso 9003 bottegaia)
dentro la cartella chat e dentro chat i 3 file

9003 > chat > i 3 file fatti
sopra =/

=) ho detto tutto ciò che serviva per imparare la base di uno script forse non mi saro spiegato al massimo come detto in cima io non sono un genio del lua ma spero che molti di voi che leggendo la guida abbiano imparato qualcosa e spero che voi non premiate subito la X in alto a destra ma comentiate xd non so come dire

PS:so gia che almeno qualcuno verra a criticare ma ameno io ho fatto ciò che ritenevo gusto =)
 
Molto utile per chi lo sconosce, bravo.
Pero la continuerei aggiungendo altri comandi, tipo: pc . remove_item, pc . count_item, say_item, affect.remove_collect, wait (), pc.get_level, horse . ride, affect.add_collect, d . notice e via dicendo... la miglioreresti ulteriormente.
 
Premessa: questo forum vieta gli insulti, pertanto ogni volta che vedi due asterischi vicini (**), usa la tua immaginazione per sostituirli agli insulti che meno ti garbano.

Partiamo dal titolo:
[GUIDA]ALLE BASI DEL LUA ( 1000° POST)
Lasciamo perdere il fatto che hai 503 messaggi... Ma ** ** ** ** ** **, scrivere "guida alle basi del lua di Metin2" ti faceva schifo? C'è già troppa disinformazione in giro, con gente che crede che Lua == Metin2.

Poi, ;e per fare ciò si creano delle variabili come si e no. Ma almeno le rileggi le ** che scrivi?

Ancora, "elseif" che è la stessa cosa di un "if" cambia solo la posizione e meglio spiegare la stringa soprastante. NO, grandissimo **, l'elseif non è la stessa cosa di un if. Impara a "programmare" prima di fare le guide.

a ecco qua questo e tutto un npc cembra lungo ma è una cosa che se imparata si fa in 30 secondi Davvero, io son dell'idea che tu non legga affatto ciò che scrivi.

fin qua e semplice ametetelo voi che non avete mai capito il lua non comenterete ma secondo me questa guida vi sara stata utile =) detto ciò continuiamo

ora io gli fo creare delle opzioni ma dentro quelle opzioni dovro pur far fare qualcosa o no?

Sisi, utilissima, come un calcio nelle balle.

 
In questa "guida" dici tutto e niente. Per esempio se io voglio scrivere una quest come inizio? Con un say_title ed un say?
Prima devi dichiarare il nome della quest, dichiari lo stato di start, poi dichiari l'npc o chi per esso che esegue l'azione, e poi viene la parte che hai spiegato tu.
In ogni caso questa non è una guida dato che con un say_title, un say ed un select non crei di certo una quest.
Se proprio devi creare una guida, creala con una base.
E non uscire con la scusa "ho detto che è solo una base", ma una base senza un inizio corretto non si regge in piedi senza contare che non basta un say per fare una vera quest.

- - - Updated - - -

Ah dimenticavo, sezione errata :omfg:
 
  • Mi piace
Reazioni: Daruma
Bella guida, semplice per chi di LUA ne sa poco o niente, magari aggiungendo qualche altra opzione con la spigazione vicino diventa miglione :D Like
 
Ultima modifica da un moderatore:
Questo non è lua, tu non spieghi niente in questa guida sul lua.
Inoltre il lua non si limita alle 4 funzioni di metin2. ma è un linguaggio vero e proprio. I say, ecc sono FUNZIONI scritte in lua. Consiglio a chi vuole programmare seriamente di evitare questa guida.
 
Premessa: questo forum vieta gli insulti, pertanto ogni volta che vedi due asterischi vicini (**), usa la tua immaginazione per sostituirli agli insulti che meno ti garbano.

Partiamo dal titolo:
[GUIDA]ALLE BASI DEL LUA ( 1000° POST)
Lasciamo perdere il fatto che hai 503 messaggi... Ma ** ** ** ** ** **, scrivere "guida alle basi del lua di Metin2" ti faceva schifo? C'è già troppa disinformazione in giro, con gente che crede che Lua == Metin2.

Poi, ;e per fare ciò si creano delle variabili come si e no. Ma almeno le rileggi le ** che scrivi?

Ancora, "elseif" che è la stessa cosa di un "if" cambia solo la posizione e meglio spiegare la stringa soprastante. NO, grandissimo **, l'elseif non è la stessa cosa di un if. Impara a "programmare" prima di fare le guide.

a ecco qua questo e tutto un npc cembra lungo ma è una cosa che se imparata si fa in 30 secondi Davvero, io son dell'idea che tu non legga affatto ciò che scrivi.

fin qua e semplice ametetelo voi che non avete mai capito il lua non comenterete ma secondo me questa guida vi sara stata utile =) detto ciò continuiamo

ora io gli fo creare delle opzioni ma dentro quelle opzioni dovro pur far fare qualcosa o no?

Sisi, utilissima, come un calcio nelle balle.


1. Bhe... il lua di metin ha un lua tutto particolare, non si mette in dubbio ma riguardo la sezione si intuisce.
2. lol questa bella xD non ci ho fatto caso sinceramente "Poi, ;e per fare ciò si creano delle variabili come si e no. "
3. non mettiamo in dubbio che un elseif sia uguale ad un if ù.ù.

In questa "guida" dici tutto e niente. Per esempio se io voglio scrivere una quest come inizio? Con un say_title ed un say?
Prima devi dichiarare il nome della quest, dichiari lo stato di start, poi dichiari l'npc o chi per esso che esegue l'azione, e poi viene la parte che hai spiegato tu.
In ogni caso questa non è una guida dato che con un say_title, un say ed un select non crei di certo una quest.
Se proprio devi creare una guida, creala con una base.
E non uscire con la scusa "ho detto che è solo una base", ma una base senza un inizio corretto non si regge in piedi senza contare che non basta un say per fare una vera quest.

1. Lui immagino abbiamo scritto come iniziare un .script non una quest, che non richiede:
quest nomequest begin
state start begin


--BOSSE
when value.use/chat ecc.. begin

2. si questo è vero un say_title, un say ed un select non possono creare una quest ma già danno un input per lo meno.

3. A me sembra una base per iniziare o_O poi non so tu

Questo non è lua, tu non spieghi niente in questa guida sul lua. Consiglio a chi vuole programmare seriamente di evitare questa guida.

Linkami una guida dove impasta tutto ciò che riguarda un linguaggio di programmazione in una sola guida.

N.B chi vuole iniziare a programmare "Seriamente" intanto si da un inizio con questa che è propio la base (con la manca di inizio quest come diceva Ryo), poi si cera altre sul web come si fa con ogni linguaggio...

Io la penso cosi.

Comunque riquoto quello che avevo scritto

Pero la continuerei aggiungendo altri comandi, tipo: pc . remove_item, pc . count_item, say_item, affect.remove_collect, wait (), pc.get_level, horse . ride, affect.add_collect, d . notice e via dicendo... la miglioreresti ulteriormente.
 
  • Mi piace
Reazioni: || A l i 3 N © ||
Ultima modifica:
Mi spieghi che ca**o significa?

tu in lua ti trovi il say_title, say_item, quest nome quest begin ecc... ? se vai per esempio in codepad li trova come errori, perché metin ha un lua particolare con funzioni apposite.
 
I say, ecc sono FUNZIONI scritte in lua.
:omfg:
il say è una funziona scritta in C/C++!
Anzi, ti passo le parole di d3vil <.<

"[29/07/2012 18:52:00] - d3v1l401 / AESVector -: ma non mi dire,forse perché le funzioni in LUA che usi sono in realtà parsate in C++ nel core?"
 
:omfg:
il say è una funziona scritta in C/C++!
Anzi, ti passo le parole di d3vil <.<

"[29/07/2012 18:52:00] - d3v1l401 / AESVector -: ma non mi dire,forse perché le funzioni in LUA che usi sono in realtà parsate in C++ nel core?"
Sì alcune sono nel questlib (in lua) altre nel game in c++. Non mi ricordavo il say.
 
Premessa: questo forum vieta gli insulti, pertanto ogni volta che vedi due asterischi vicini (**), usa la tua immaginazione per sostituirli agli insulti che meno ti garbano.

Partiamo dal titolo:
[GUIDA]ALLE BASI DEL LUA ( 1000° POST)
Lasciamo perdere il fatto che hai 503 messaggi... Ma ** ** ** ** ** **, scrivere "guida alle basi del lua di Metin2" ti faceva schifo? C'è già troppa disinformazione in giro, con gente che crede che Lua == Metin2.

Poi, ;e per fare ciò si creano delle variabili come si e no. Ma almeno le rileggi le ** che scrivi?

Ancora, "elseif" che è la stessa cosa di un "if" cambia solo la posizione e meglio spiegare la stringa soprastante. NO, grandissimo **, l'elseif non è la stessa cosa di un if. Impara a "programmare" prima di fare le guide.

a ecco qua questo e tutto un npc cembra lungo ma è una cosa che se imparata si fa in 30 secondi Davvero, io son dell'idea che tu non legga affatto ciò che scrivi.

fin qua e semplice ametetelo voi che non avete mai capito il lua non comenterete ma secondo me questa guida vi sara stata utile =) detto ciò continuiamo

ora io gli fo creare delle opzioni ma dentro quelle opzioni dovro pur far fare qualcosa o no?

Sisi, utilissima, come un calcio nelle balle.


-Se vuoi degli occhiali va dal oculista =) ce scrito chiaro

" ora prima di vedere "elseif" che è la stessa cosa di un "if" cambia solo la posizione e meglio spiegare la stringa soprastante"

-poi c'è ce scritto che che è per fare dialoghi npc e una base per iniziare

- i comandi volevo evitare di aggungerli perchè poi come in altre 3-4 guide ci sono i comandi ma non i significati =) ma grazie per il penziero

- si scusate se non ho messo che bisogna fare il file adesso provedo =)




- - - Updated - - -

Anche se è nel questlib.lua comunque "le funzioni sono parsate in c++ nel core" <.<

questo non so ma ci sono 2 file in ftp
questlib.lua = contiene le funzioni ecc....
quest_functions = contiene tutti i comandi
 
-Se vuoi degli occhiali va dal oculista =) ce scrito chiaro

" ora prima di vedere "elseif" che è la stessa cosa di un "if" cambia solo la posizione e meglio spiegare la stringa soprastante"

-poi c'è ce scritto che che è per fare dialoghi npc e una base per iniziare

- i comandi volevo evitare di aggungerli perchè poi come in altre 3-4 guide ci sono i comandi ma non i significati =) ma grazie per il penziero

- si scusate se non ho messo che bisogna fare il file adesso provedo =)




- - - Updated - - -



questo non so ma ci sono 2 file in ftp
questlib.lua = contiene le funzioni ecc....
quest_functions = contiene tutti i comandi
Codice:
.init:0804C0F8 ; Source File : 'questevent.cpp'.init:0804C0F8 ; Source File : 'questlua.cpp'
.init:0804C0F8 ; Source File : 'questlua_affect.cpp'
.init:0804C0F8 ; Source File : 'questlua_arena.cpp'
.init:0804C0F8 ; Source File : 'questlua_ba.cpp'
.init:0804C0F8 ; Source File : 'questlua_building.cpp'
.init:0804C0F8 ; Source File : 'questlua_danceevent.cpp'
.init:0804C0F8 ; Source File : 'questlua_dungeon.cpp'
.init:0804C0F8 ; Source File : 'questlua_forked.cpp'
.init:0804C0F8 ; Source File : 'questlua_game.cpp'
.init:0804C0F8 ; Source File : 'questlua_global.cpp'
.init:0804C0F8 ; Source File : 'questlua_guild.cpp'
.init:0804C0F8 ; Source File : 'questlua_horse.cpp'
.init:0804C0F8 ; Source File : 'questlua_item.cpp'
.init:0804C0F8 ; Source File : 'questlua_marriage.cpp'
.init:0804C0F8 ; Source File : 'questlua_mgmt.cpp'
.init:0804C0F8 ; Source File : 'questlua_monarch.cpp'
.init:0804C0F8 ; Source File : 'questlua_npc.cpp'
.init:0804C0F8 ; Source File : 'questlua_oxevent.cpp'
.init:0804C0F8 ; Source File : 'questlua_party.cpp'
.init:0804C0F8 ; Source File : 'questlua_pc.cpp'
.init:0804C0F8 ; Source File : 'questlua_quest.cpp'
.init:0804C0F8 ; Source File : 'questlua_target.cpp'
.init:0804C0F8 ; Source File : 'questmanager.cpp'
.init:0804C0F8 ; Source File : 'questnpc.cpp'
.init:0804C0F8 ; Source File : 'questpc.cpp'

Codice:
.text:08077F55 loc_8077F55:                            ; CODE XREF: _ZN9CHARACTER19ComputeBattlePointsEv+3F0j.text:08077F55                 mov     eax, ds:_ZN9singletonI17CHorseNameManagerE12ms_singletonE
.text:08077F5A                 mov     ebx, [edi+0F8h]
.text:08077F60                 test    eax, eax
.text:08077F62                 jz      loc_807823D
.text:08077F68
.text:08077F68 loc_8077F68:                            ; CODE XREF: _ZN9CHARACTER19ComputeBattlePointsEv+701j
.text:08077F68                 mov     eax, ds:_ZN9singletonI17CHorseNameManagerE12ms_singletonE
.text:08077F6D                 mov     [esp+4], ebx
.text:08077F71                 mov     [esp], eax
.text:08077F74                 call    _ZN17CHorseNameManager12GetHorseNameEj
.text:08077F79                 test    eax, eax
.text:08077F7B                 jz      short loc_8077F86
.text:08077F7D                 cmp     byte ptr [eax], 0
.text:08077F80                 jz      short loc_8077F86
.text:08077F82                 add     dword ptr [ebp-30h], 14h
Codice:
public _ZN5quest4_sayEP9lua_State_ZN5quest4_sayEP9lua_State proc near


var_FC= dword ptr -0FCh
var_F8= dword ptr -0F8h
var_F4= dword ptr -0F4h
var_F0= dword ptr -0F0h
var_EC= dword ptr -0ECh
var_E0= dword ptr -0E0h
var_D0= dword ptr -0D0h
var_CC= dword ptr -0CCh
var_C7= byte ptr -0C7h
var_C6= byte ptr -0C6h
var_C5= byte ptr -0C5h
var_C4= dword ptr -0C4h
var_C0= dword ptr -0C0h
var_BC= dword ptr -0BCh
var_B8= dword ptr -0B8h
var_B4= dword ptr -0B4h
var_B0= dword ptr -0B0h
var_AC= dword ptr -0ACh
var_A8= dword ptr -0A8h
var_A4= byte ptr -0A4h
var_A0= dword ptr -0A0h
var_9C= dword ptr -9Ch
var_98= dword ptr -98h
var_28= dword ptr -28h
var_24= byte ptr -24h
var_23= byte ptr -23h
var_20= dword ptr -20h
var_1C= dword ptr -1Ch
var_18= dword ptr -18h
var_14= dword ptr -14h
var_10= dword ptr -10h
arg_0= dword ptr  8
ecc.
 
-Se vuoi degli occhiali va dal oculista =) ce scrito chiaro

" ora prima di vedere "elseif" che è la stessa cosa di un "if" cambia solo la posizione e meglio spiegare la stringa soprastante"

-poi c'è ce scritto che che è per fare dialoghi npc e una base per iniziare

- i comandi volevo evitare di aggungerli perchè poi come in altre 3-4 guide ci sono i comandi ma non i significati =) ma grazie per il penziero

- si scusate se non ho messo che bisogna fare il file adesso provedo =)
Ma per cortesia, non arrampicarti sugli specchi. La descrizione di elseif ed if che hai fornito è a dir poco squallida. Ribadisco, impara prima di insegnare.
 
Il say è una funziona scritta in C/C++!
Sì, una funzione in lua equivalente al say è la seguente: (è un esempio)
PHP:
function say(...)
	for i,v in ipairs(arg) do
		raw_script(v)
	end
	raw_script("[ENTER]")
end

Vi ricordo che il lua è nato allo scopo di essere leggero e veloce (non ha switch, classi e tante altre cose) e per esser esteso (nella maggior parte dei casi) con delle librerie esterne in c++ (nel caso di metin è l'eseguibile ma si possono creare senza problemi anche librerie)
La versione che usa metin è la "5.0.3". (lua_version su game)

Sì, la guida è fatta con i piedi! ClickMe
 
  • Mi piace
Reazioni: xXIntelXx
Premessa: questo forum vieta gli insulti, pertanto ogni volta che vedi due asterischi vicini (**), usa la tua immaginazione per sostituirli agli insulti che meno ti garbano.

Partiamo dal titolo:
[GUIDA]ALLE BASI DEL LUA ( 1000° POST)
Lasciamo perdere il fatto che hai 503 messaggi... Ma ** ** ** ** ** **, scrivere "guida alle basi del lua di Metin2" ti faceva schifo? C'è già troppa disinformazione in giro, con gente che crede che Lua == Metin2.

Tralasciando il fatto se la guida sia utile o no ma credo che con 1000° post intendesse che è l'ennesimo post che riguarda questa guida (credo)
 
airiorax tu ai capito cosa intendevo xd
metin2hackning il tuo like e ironico? perchè non è arrivato
 
  • Mi piace
Reazioni: Aioriax
Complimenti, sia per l'ordine che per l'utilità senza di te non avrei mai potuto fare il mio primo script

se dovessi seguire la tua guida ecco il risultato di una quest

PHP:
state start begin
       when value.chat."Ciao" begin
       say_title("Npc:")
              say("Ciao")
               say("paga 5 yang perchè è così")
               pc.change_gold(-5)
         return
   end

Ecco l'utilità della tua guida....Compliementi...volete il +1 o il biscotto?
 
  • Mi piace
Reazioni: xXIntelXx
Complimenti, sia per l'ordine che per l'utilità senza di te non avrei mai potuto fare il mio primo script

se dovessi seguire la tua guida ecco il risultato di una quest

PHP:
state start begin
       when value.chat."Ciao" begin
       say_title("Npc:")
              say("Ciao")
               say("paga 5 yang perchè è così")
               pc.change_gold(-5)
         return
   end

Ecco l'utilità della tua guida....Compliementi...volete il +1 o il biscotto?
1€ <.<
 
  • Mi piace
Reazioni: DarkScorpS
Stato
Discussione chiusa ad ulteriori risposte.