Domanda Domande varie

Stato
Discussione chiusa ad ulteriori risposte.

sumotara

Utente Silver
11 Aprile 2017
50
9
11
51
Io e il mio compagno amoroso siamo bloccati su questi punti :frog-police::frog-arrested:

1 spown mob nei metin
2 spown mob nelle mappe
3 pozioni e mantello infinito
4 item nel craft
5 anello anti exp come settare
6 come cambiare nome e descrizione item

Nel caso sapete rispondere a qualche domanda, con quest o codice mi fareste un gran favore a velocizzare le cose. Nel caso rispondete con il numero almeno non ci incasiniamo. <3
 
1) dovete mettere il vnum del GROUP (non del mob, questo vnum lo trovate in group.txt della cartella italy o germany su winscp) in attack_speed e mov_speed nel mob proto (che non saranno quindi le velocità di attacco e movimento del metin, ma i due group da questo spawnati)

2) cartella map in germany/italy. Dentro ci sono varie cartelle con le mappe. Una volta trovata quella di interesse, inserisci i mob prendendo esempio dal file "regen.txt" per i mob normali, "stone.txt" per i metin e "npc.txt" per gli npc mi pare (non ho la roba sotto, forse npc txt l'ho inventato io ora). Porto sotto una riga presa in giro su internet per spiegare meglio cosa dicono i vari numeri:
m 1301 703 10 10 0 0 30m 100 1 2515 (ogni spazio è un [TAB])
m = mob, potresti mettere anche g (group) e r (group_group -> un gruppo di gruppi, reperibile in group_group.txt). Puoi inoltre aggiungere a -> ma (mob aggressivo), ga e ra, e anche c (mc, gc e rc) che sta invece per codardo, mob che scappa a vista come i tanaka.

1301 = x
703 = y
10 = range di x di variabilità (1291-1311 -> ecco come mai i mob escono non sempre nello stesso punto)
10 = stessa cosa ma per la y
0 = direi sia la coordinata z
0 = direzione -> dove il mob guarda (puoi far spawnare un mob che guarda verso nord o sud a tua discrezione, in senso antiorario 1 3 5 7 sono credo nord ovest sud est o partono da sud non ricordo e coi numeri pari invece fai tipo sud est)
30m = tempo di respawn, puoi mettere anche a secondi -> 60s. 0s dovrebbe non farli respawnare ma non avendo letto il codice che carica questo file eviterei cose del genere
100 = percentuale di spawn
1 = quanti mob o gruppi spawna (può anche spawnarne 10 insieme)
2515 = finalmente il value del mob o gruppo

3) la modifica si fa in char_item.cpp -> date le domande precedenti suppongo che quello che ti dirò non ti dirà molto, ma se posti il tuo char item cpp del sorgente (se lo hai) possiamo aiutarti. In ogni caso si tratta di commentare (rendere non effettivo) un pezzettino di codice che rimuove l'item dopo l'utilizzo, o meglio aggiungere un if che checka un value sull'item proto (magari più tardi metto qualche immagine se vado sull'altro pc)

4) devi aggiungerli al cube.txt nella germany italy sempre, cercando su internet ho trovato un template di craft sul cube.txt:

NOMECRAFT
section
npc 20348
item 50721 1
reward 50801 1
percent 100
end

5) forse si può fare in lua ma non ricordo se c'è già qualche funzione pronta all'uso, in ogni caso basta creare un item che al suo click, lato quest o lato game (item type 3 sub 10 ad esempio per lato game diretto) setti un flag a 1. Con flag settato a 1 l'exp non viene data al pg, nel metodo CHARACTER::Reward() credo (vado molto a memoria). Ricliccando l'item vede il flag a 1 e lo riporta a 0, e con flag 0 non blocca l'exp. -> anche qui se riesco dopo imposto meglio la risposta ma comunque questa è un'opzione

6) item proto -> locale_name mi pare lo cambi lato database poi, ammesso che tu abbia i file 40k devi convertire i file sql in txt, e poi i txt in proto client, con il proto dump reperibile in giro. (la prima conversione è più complicata di solito, ma si fa con dei convert_item.py reperibili sempre in giro, anche qui direi, o meglio con dei convertitori forniti da venditori come martysama). per la descrizione invece devi andare in locale_desc.txt mi pare si chiami il file, in locale_it->locale->it (se non la trovi proprio li cercala in altre directory li in giro). Segui il pattern delle altre righe per creare la tua descrizione, dovrebbe essere:
value[TAB]NOME[TAB]DESCRIZIONE[TAB]DESCRIZIONE DORATA
5000-TAAAAAB-spada bella-TAAAAAB-è una spada bella (descrizione dorata non necessaria)
 
Difficile dire qualcosa dopo quello che ha detto Marco, ha detto tutto,

Ti lascio la quest anti exp


Codice:
quest antiexp begin
    state start begin
        when login begin
            if pc.getqf("antiexp") == 1 then
                pc.block_exp()
                chat("Anti EXP non e attivato")
            end
        end
        when letter begin
            cmdchat("AntiEXP "..q.getcurrentquestindex())
        end
        when button or info begin
            if pc.getqf("antiexp") == 0 then
                pc.block_exp()
                pc.setqf("antiexp", 1)
                chat("Anti EXP e stato attivato.")
            elseif pc.getqf("antiexp") == 1 then
                pc.unblock_exp()
                pc.setqf("antiexp", 0)
                chat("Anti EXP e stato disattivato.")
            end
        end
    end
end
 
  • Mi piace
Reazioni: sumotara
Preciso per il punto 6
è molto più semplice di com'è stato scritto in realtà

Lato server
Vai in item_names, cerchi il value, cambi il nome
(non serve neanche convertire in xml)

Lato client,
apri locale, apri item_desc, cerchi il value e modifichi la descrizione a fianco,
ricompatta ovviamente locale e rimettila nel client
 
Quindi tu stai affermando che per cambiare il nome di un item non serve aggiornare l'item proto nel client? lo trovo un po' strano, in quel caso il nome modificato lo vedresti quando lo raccogli ad esempio, ma passandoci sopra il mouse dovresti vedere il nome vecchio, e per cambiarlo dovrebbe servire modificare l'item proto client, passaggio che però tu non menzioni
 
  • Mi piace
Reazioni: nikolai93
Difficile dire qualcosa dopo quello che ha detto Marco, ha detto tutto,

Ti lascio la quest anti exp


Codice:
quest antiexp begin
    state start begin
        when login begin
            if pc.getqf("antiexp") == 1 then
                pc.block_exp()
                chat("Anti EXP non e attivato")
            end
        end
        when letter begin
            cmdchat("AntiEXP "..q.getcurrentquestindex())
        end
        when button or info begin
            if pc.getqf("antiexp") == 0 then
                pc.block_exp()
                pc.setqf("antiexp", 1)
                chat("Anti EXP e stato attivato.")
            elseif pc.getqf("antiexp") == 1 then
                pc.unblock_exp()
                pc.setqf("antiexp", 0)
                chat("Anti EXP e stato disattivato.")
            end
        end
    end
end





Certo.. e la funzione pc.block_exp da dove la prendi?? Inutilizzabile la quest.
 
if pc.getqf("antiexp") == 0 then pc.block_exp() pc.setqf("antiexp", 1) chat("Anti EXP e stato attivato.")

Veramente c'è la funzione.

Quello di cui parli tu è semplicemente un getqf che attiva la funzione pc.block_exp se uguagliato a 1 ( ==1 ), funzione che in source non è presente di base.

Dunque, pc.block_exp() & pc.block_exp() non sono due funzioni standard di metin2.

Quindi per far avviare quella funzione lua ci deve essere una parte in questlua_pc.cpp, che in questo caso è inesistente.
 
  • Mi piace
Reazioni: [Joker]
Stato
Discussione chiusa ad ulteriori risposte.