RPG Zone, Italian Forum & Community for role playing video games - ex Gothic Zone

[Tutorial] Classi C_NPC e C_ITEM in dettaglio, Appendice B

« Older   Newer »
  Share  
view post Posted on 25/2/2015, 13:09     +1   +1   -1

Gothic Modder

Group:
Moderatore
Posts:
1,391
Rpg Point:
+83
Location:
L'Urbe!

Status:


Ciao a tutti. Questo sarà un'appendice in cui spiegherò più dettagliatamente le proprietà delle classi e i possibili valori, cosa che non potevo fare senza dilungarmi troppo nelle lezioni specifiche.
Esse infatti servono per capire quali proprietà sono necessarie per mostri e umani, qui vediamo invece tutti i possibili valori.

C_NPC

CODICE
class C_Npc
{
       var int id;
       var string name[5];
       var string slot;
       var string effect;
       var int npcType;
       var int flags;
       var int attribute[ATR_INDEX_MAX];
       var int HitChance[MAX_HITCHANCE];
       var int protection[PROT_INDEX_MAX];
       var int damage[DAM_INDEX_MAX];
       var int damagetype;
       var int guild;
       var int level;
       var func mission[5];
       var int fight_tactic;
       var int weapon;
       var int voice;
       var int voicePitch;
       var int bodymass;
       var func daily_routine;
       var func start_aistate;
       var string spawnPoint;
       var int spawnDelay;
       var int senses;
       var int senses_range;
       var int aivar[100];
       var string wp;
       var int exp;
       var int exp_next;
       var int lp;
       var int bodyStateInterruptableOverride;
       var int noFocus;
};


id: identificativo ASSOLUTO degli npc. Potete inserire un qualsiasi numero che non sia ripetuto ma è buona norma seguire delle norme: Ogni gilda infatti ha gli identificati che aumentano di uno da un numero iniziale (900 per contadini, 1000 per banditi, ecc..). Uno stesso personaggio presente in più mondi possiede classi diverse per ogni mondo o l'id è lo stesso ma moltiplato per 10 (con uno zero in più alla fine).

name[5]: l'unica posizione dell'array utilizzata è name[0]. Questa indica il nome che comparirà sul personaggio

slot: non usata

effect: non usata

npcType: indica il tipo di npc (generico = senza nome con dialogo standard; principale: con nome e dialoghi personalizzati)

    • NPCTYPE_AMBIENT: personaggio generico

    • NPCTYPE_MAIN: personaggio principale

    • NPCTYPE_FRIEND: amico

    • da qui in poi ci sono diverse eccezioni

    • NPCTYPE_OCAMBIENT: personaggio generico di campo vecchio

    • NPCTYPE_OCMAIN: personaggio principale di campo vecchio

    • NPCTYPE_BL_AMBIENT: personaggio generico dentro il campo dei banditi a jharkendar

    • NPCTYPE_TAL_AMBIENT: personaggio generico fuori dal campo dei banditi a jharkendar

    • NPCTYPE_BL_MAIN: personaggio principale dentro il campo dei banditi a jharkendar


flags: proprietà speciali degli npc

    • NPC_FLAG_FRIEND: amico

    • NPC_FLAG_IMMORTAL: personaggio immortale

    • NPC_FLAG_GHOST: fantasma


attribute[ATR_INDEX_MAX]: attributi degli npc

    • ATR_HITPOINTS: vita attuale

    • ATR_HITPOINTS_MAX: vita massima

    • ATR_MANA: mana

    • ATR_MANA_MAX: mana massimo

    • ATR_STRENGTH: forza

    • ATR_DEXTERITY: destrezza

    • ATR_REGENERATEHP: rigenerazione vita al secondo (non usato)

    • ATR_REGENERATEMANA: rigenerazione mana al secondo (non usato)


HitChance[MAX_HITCHANCE]: possibilità di critico e di centrare il bersaglio

    • NPC_TALENT_UNKNOWN: non usato

    • NPC_TALENT_1H: percentuale di critico ad una mano

    • NPC_TALENT_2H: percentuale di critico a due mani

    • NPC_TALENT_BOW: percentuale di prendere il persaglio con l'arco (dipende anche dalla distanza)

    • NPC_TALENT_CROSSBOW: percentuale di prendere il persaglio con la balestra (dipende anche dalla distanza)


protection: varie protezioni

    • PROT_BARRIER: protezione dalla barriera suppongo, non usato

    • PROT_BLUNT: protezione da colpi contundenti

    • PROT_EDGE: protezione da armi da taglio

    • PROT_FIRE: protezione dal fuoco

    • PROT_FLY: protezione dai colpi che ti fanno volare (golem, troll, ecc..)

    • PROT_MAGIC: protezione dalla magia

    • PROT_POINT: protezione da frecce e dardi

    • PROT_FALL: protezione da caduta


damage: danno di una specifica tipologia di colpi (ne possono essere usati più d'uno se il danno viene da diverse fonti contemporaneamente)

    • DAM_INDEX_BARRIER: danni dalla barriera suppongo, non usato

    • DAM_INDEX_BLUNT: danni da colpi contundenti

    • DAM_INDEX_EDGE: danni da armi da taglio

    • DAM_INDEX_FIRE: danni dal fuoco

    • DAM_INDEX_FLY: danni dai colpi che ti fanno volare (golem, troll, ecc..)

    • DAM_INDEX_MAGIC: danni dalla magia

    • DAM_INDEX_POINT: danni da frecce e dardi

    • DAM_INDEX_FALL: danni da caduta


damageType: il tipo di danno applicato se non si utilizzano armi (possono essere applicate più tipologie per volta utilizzando l'unione |)

    • DAM_BARRIER: danni dalla barriera suppongo, non usato

    • DAM_BLUNT: danni da colpi contundenti

    • DAM_EDGE: danni da armi da taglio

    • DAM_FIRE: danni dal fuoco

    • DAM_FLY: danni dai colpi che ti fanno volare (golem, troll, ecc..)

    • DAM_MAGIC: danni dalla magia

    • DAM_POINT: danni da frecce e dardi

    • DAM_FALL: danni da caduta


guild: gilda di appartenenza (con ciò non viene conclusa la lista di mostri perché come noterete alcuni hanno la stessa gilda ma diverso aivar)

    • GIL_NONE: nessuna gilda

    • GIL_HUMAN: gilda speciale, usata SOLO nel file Species.d per impostare gli stessi valori a tutti gli umani

    • GIL_PAL: paladini

    • GIL_MIL: miliziani

    • GIL_VLK: cittadini

    • GIL_KDF: maghi del fuoco

    • GIL_NOV: novizi

    • GIL_DJG: cacciatori di draghi

    • GIL_SLD: mercenari

    • GIL_BAU: contadino

    • GIL_BDT: banditi

    • GIL_STRF: schiavi

    • GIL_DMT: cercatori

    • GIL_OUT: per chi è fuori dalle zone principali

    • GIL_PIR: pirati

    • GIL_KDW: maghi dell'acqua

    • GIL_EMPTY_D: vuota

    • GIL_PUBLIC: utilizzata solo nei portali (cambi di zone esterna/interna) per delimitare le zone pubbliche

    • GIL_SEPERATOR_HUM: classe utilizzata dall'IA per delimitare tutte le gilde umane e non

    • GIL_MEATBUG: scarafaggi

    • GIL_SHEEP: pecore

    • GIL_GOBBO: goblin

    • GIL_GOBBO_SKELETON: goblin scheletri

    • GIL_SUMMONED_GOBBO_SKELETON: goblin scheletri evocati

    • GIL_SCAVENGER: saprofagi

    • GIL_GIANT_RAT: ratti giganti

    • GIL_GIANT_BUG: raziatori dei campi

    • GIL_BLOODFLY: sanguimosche

    • GIL_WARAN: lucertole

    • GIL_WOLF: lupi

    • GIL_SUMMONED_WOLF: lupi evocati

    • GIL_MINECRAWLER: scavaragni

    • GIL_LURKER: predatori

    • GIL_SKELETON: scheletri

    • GIL_SUMMONED_SKELETON: scheletri evocati

    • GIL_SKELETON_MAGE: scheletri maghi

    • GIL_ZOMBIE: zombie

    • GIL_SNAPPER: squartatori

    • GIL_SHADOWBEAST: bestie d'ombra

    • GIL_SHADOWBEAST_SKELETON: bestie d'ombra non-morte

    • GIL_HARPY: arpie

    • GIL_STONEGOLEM: golem di pietra

    • GIL_FIREGOLEM: golem di fuoco

    • GIL_ICEGOLEM: golem di ghiaccio

    • GIL_SUMMONED_GOLEM: golem evocati

    • GIL_DEMON: demoni

    • GIL_SUMMONED_DEMON: demoni evocati

    • GIL_TROLL: troll

    • GIL_SWAMPSHARK: squali di palude

    • GIL_DRAGON: draghi

    • GIL_MOLERAT: ratti talpa

    • GIL_ALLIGATOR: alligatori

    • GIL_SWAMPGOLEM: golem di palude

    • GIL_STONEGUARDIAN: sentinella di pietra

    • GIL_GARGOYLE: pantera

    • GIL_EMPTY_A: vuota

    • GIL_SUMMONEDGUARDIAN: sentinella di pietra evocata

    • GIL_SUMMONEDZOMBIE: zombie evocato

    • GIL_EMPTY_B: vuota

    • GIL_SEPERATOR_ORC: classe utilizzata dall'IA per separare le gilde di mostri e di orchi

    • GIL_ORC: orchi

    • GIL_FRIENDLY_ORC: orchi amichevoli

    • GIL_UNDEADORC: orchi non morti

    • GIL_DRACONIAN: uomini lucertola

    • GIL_EMPTY_X: vuota

    • GIL_EMPTY_Y: vuota

    • GIL_EMPTY_Z: vuota


level: livello del npc

mission[MAX_MISSIONS]: non usato

fight_tactic: tattiche di combattimento (i nomi sono gli stessi delle gilde)

    • FAI_HUMAN_COWARD

    • FAI_HUMAN_NORMAL

    • FAI_HUMAN_STRONG

    • FAI_HUMAN_MASTER

    • FAI_MONSTER_COWARD: i mostri "giovani" all'inizio del gioco

    • FAI_NAILED: deprecata usata per umani. Usare invece FAI_HUMAN_XXX

    • FAI_GOBBO

    • FAI_SCAVENGER

    • FAI_GIANT_RAT

    • FAI_GIANT_BUG

    • FAI_BLOODFLY

    • FAI_WARAN

    • FAI_WOLF

    • FAI_MINECRAWLER

    • FAI_LURKER

    • FAI_ZOMBIE

    • FAI_SNAPPER

    • FAI_SHODOWBEAST

    • FAI_HARPY

    • FAI_STONEGOLEM

    • FAI_DEMON

    • FAI_TROLL

    • FAI_SWAMPSHARK

    • FAI_DRAGON

    • FAI_MOLERAT

    • FAI_ORC

    • FAI_DRACONIAN

    • FAI_ALLIGATOR

    • FAI_GARGOYLE

    • FAI_BEAR: ???????

    • FAI_STONEGUARDIAN


weapon: non usata

voice: la voce degli npc durante i dialoghi generici non sottotitolati. Ci 17 voci disponibili tranne la 15 che è dell'eroe

voicePitch: non usata

bodymass: non usata

daily_routine: routine giornaliera (quelle con l'asterisco richiedono un mob)

    • TA_Announce_Herold: lettura del discorso dal patibolo

    • TA_Cook_Cauldron*: cucinare col calderone

    • TA_Cook_Pan*: cucinare con la padella

    • TA_Dance: ballare

    • TA_FleeToWp: scappare verso un waypoint

    • TA_Follow_Player: seguire il giocatore

    • TA_Guard_Passage: fare le guardia agli ingressi

    • TA_Guide_Player: guidare il giocatore

    • TA_Pee: fare pipì

    • TA_Pick_FP: scavare per terra col piccone

    • TA_Pick_Ore: estrarre il metallo dai giacimenti

    • TA_Play_Lute: suonare il liuto

    • TA_Potion_Alchemy*: miscelare pozioni

    • TA_Practice_Magic: fare pratica di magia

    • TA_Pratice_Sword: fare pratica con la spada

    • TA_Pray_Sleeper_FP: pregare il dormiente

    • TA_Pray_Sleeper*: pregare il dormiente

    • TA_Pray_Innos_FP: pregare innos

    • TA_Pray_Innos*: pregare innos

    • TA_Preach_Vatras: omelia di vatras

    • TA_Read_Bookstand*: leggere un libro

    • TA_Repair_Hut: riparare il rifugio

    • TA_Roast_Scavenger: arrostire il saprofago

    • TA_RunToWP: correre verso un waypoint

    • TA_Sit_Bench*: sedersi su una panchina

    • TA_Sit_Campfire: sedersi attorno al fuoco

    • TA_Sit_Chair*: sedersi su una sedia

    • TA_Sit_Throne*: sedersi sul trono

    • TA_Sleep*: dormire

    • TA_Smalltalk: chiacchierata

    • TA_Smith_Anvil*: battere il metallo sull'incudine

    • TA_Smith_Cool*: raffredare il metallo nell'acqua

    • TA_Smith_Fire*: riscaldare il metallo nella forgia

    • TA_Smith_Sharp*: affilare il metallo sulla pietra

    • TA_Smoke_Joint: fumarsi una canna

    • TA_Smoke_Waterpipe*: fumare il narghilè

    • TA_Spit_Fire: ???

    • TA_Stand_ArmsCrossed: stare in piedi a braccia incrociate

    • TA_Stand_Drinking: stare in piedi a bere

    • TA_Stand_Eating: stare in piedi mangiando

    • TA_Stand_Guarding: stare in piede a fare la guardia

    • TA_Stand_WP: stare in piedi

    • TA_Stomp_Herb*: tritare le erbe nel calderone

    • TA_Sweep_FP: pulire con la scopa

    • TA_Wash_FP: lavare per terra

    • TA_Stand_Sweeping: pulire con la scopa

    • TA_Rake_FP: usare la vanga nei campi

    • TA_Cook_Stove: cucinare ai fornelli

    • TA_Saw*: segare

    • TA_Circle: rituale dei maghi

    • TA_Stand_Dementor: cercatori in piedi

    • TA_Guard_Hammer: fare la guardia al martello di innos

    • TA_Study_WP*: studiare

    • TA_Concert: concerto

    • TA_Sleep_Deep: dormire profondamente

    • TA_RangerMeeting: incontro dell'anello dell'acqua

    • TA_Ghost: fantasma in piedi

    • TA_GhostWusel: fantasma che vaga


start_aistate: stato di partenza. Non usato in genere per gli umani tranne per banditi (ZS_Bandit), e cercatori (ZS_Stand_Dementor), usare quindi solo in questi casi. Per i mostri viene usato generalmente ZS_MM_AllScheduler

spawnPoint: non usata

spawnDelay: non usata

senses: i sensi con i quali gli npc percepiscono altri (se ne possono utilizzare più d'uno con l'unione |)

    • SENSE_SEE: vista

    • SENSE_HEAR: udito

    • SENSE_SMELL: olfatto


senses_range: l'ampiezza dei sensi

    • PERC_DIST_SUMMONED_ACTIVE_MAX: per i mostri evocati

    • PERC_DIST_MONSTER_ACTIVE_MAX: per tutti gli altri mostri

    • PERC_DIST_ORC_ACTIVE_MAX: per gli orchi

    • PERC_DIST_DRAGON_ACTIVE_MAX: per i draghi


aivar[100]: variabili dell'IA tenute in un array. Non posso elencarvele tutte perché sono 89 e molte di queste hanno tanti valori possibili diversi. Sono tutte contenute in AI_Contasts con il prefisso AIV_

exp: l'attuale esperienza

exp_next: l'esperienza per passare di livello. Nel file B_GivePlayerXP, nell'omonia funzioen troverete la formula per calcolarla

lp: gli lp attuali

bodyStateInterruptableOverride: se è impostato su vero l'npc non può essere interrotto in nessun caso

noFocus: se è impostato su vero non compariranno il nome e la vita dell'npc al focus


Passiamo ora gli oggetti:

C_ITEM


CODICE
class C_Item
{
       var int id;
       var string name;
       var string nameID;
       var int hp;
       var int hp_max;
       var int mainflag;
       var int flags;
       var int weight;
       var int value;
       var int damagetype;
       var int damageTotal;
       var int damage[DAM_INDEX_MAX];
       var int wear;
       var int protection[PROT_INDEX_MAX];
       var int nutrition;
       var int cond_atr[3];
       var int cond_value[3];
       var int change_atr[3];
       var int change_value[3];
       var func magic;
       var func on_equip;
       var func on_unequip;
       var func on_state[4];
       var func owner;
       var int ownerGuild;
       var int disguiseGuild;
       var string visual;
       var string visual_change;
       var string effect;
       var int visual_skin;
       var string scemeName;
       var int material;
       var int munition;
       var int spell;
       var int range;
       var int mag_circle;
       var string description;
       var string text[6];
       var int count[6];
       var int inv_zbias;
       var int inv_rotx;
       var int inv_roty;
       var int inv_rotz;
       var int inv_animate;
};


id: non usato per gli oggetti

name: il nome dell'oggetto (apparirà al focus)

nameID: non usato

hp: non usato

hp_max: non usato

mainflag: la tipologia principale principali dell'oggetto

    • ITEM_KAT_NONE: varie

    • ITEM_KAT_NF: armi corpo a corpo

    • ITEM_KAT_FF: armi a distanza

    • ITEM_KAT_MUN: munizioni

    • ITEM_KAT_ARMOR: armature

    • ITEM_KAT_FOOD: cibo

    • ITEM_KAT_DOCS: documenti

    • ITEM_KAT_POTIONS: pozioni

    • ITEM_KAT_LIGHT: sorgenti luminose???

    • ITEM_KAT_RUNE: rune

    • ITEM_KAT_MAGIC: anelli, amuleti e cinture

    • ITEM_KAT_KEYS: non usato (usare ITEM_KAT_NONE per le chiavi)


flags: attributi secndari dell'oggetto

    • ITEM_DAG: obsoleto!

    • ITEM_SWD: spade ad una mano

    • ITEM_AXE: asce ad una mano

    • ITEM_2HD_SWD: spade a due mani

    • ITEM_2HD_AXE: asce a due mani

    • ITEM_SHIELD: scudi (non usato)

    • ITEM_BOW: archi

    • ITEM_CROSSBOW: balestre

    • ITEM_RING: anelli

    • ITEM_AMULET: amuleti

    • ITEM_BELT: cinture

    • ITEM_DROPPED: oggetti caduti a terra (INTERNO NON UTILIZZARE!)

    • ITEM_MISSION: oggetti di missione; se un npc che ha un oggetto avente questa flag, dovesse morire, il corpo non scomparirà per non precludere il completamento della missione

    • ITEM_MULTI: impilabile (più d'uno nello stesso slot)

    • ITEM_NFOCUS: INTERNO NON UTILIZZARE!

    • ITEM_CREATEAMMO: crea munizione automaticamente (non usato)

    • ITEM_NSPLIT: non impilabile nello stesso slot

    • ITEM_DRINK: obsoleto!

    • ITEM_TORCH: torcia

    • ITEM_THROW: obsoleto!

    • ITEM_ACTIVE: INTERNO NON UTILIZZARE!


weight: non usato

value: valore in oro

damageType: il tipo di danno applicato se non si utilizzano armi

    • DAM_BARRIER

    • DAM_BLUNT

    • DAM_EDGE

    • DAM_FIRE

    • DAM_FLY

    • DAM_MAGIC

    • DAM_POINT

    • DAM_FALL


damageTotal: il danno total dell'arma

damage: danno di una specifica tipologia di colpi (ne possono essere usati più d'uno se il danno viene da diverse fonti contemporaneamente)

    • DAM_INDEX_BARRIER

    • DAM_INDEX_BLUNT

    • DAM_INDEX_EDGE

    • DAM_INDEX_FIRE

    • DAM_INDEX_FLY

    • DAM_INDEX_MAGIC

    • DAM_INDEX_POINT

    • DAM_INDEX_FALL


wear: l'effetto che si avrà indossando l'oggetto

    • WEAR_TORSO: per le armature

    • WEAR_HEAD: per gli elmi

    • WEAR_EFFECT: per tutti gli altri oggetti equipaggiabili NON ARMI (anelli, cinture, amuleti, pergamene, ecc..)


protection: varie protezioni

    • PROT_BARRIER

    • PROT_BLUNT

    • PROT_EDGE

    • PROT_FIRE

    • PROT_FLY

    • PROT_MAGIC

    • PROT_POINT

    • PROT_FALL


nutrition: non usato

cond_atr[3]: array di tre elementi che indica gli attributi necessari per l'equippagiamento (se ne può usare uno slo come tutti e tre)

cond_value[3]: ad ogni elemento di cond_atr va specificato un valore

change_atr[3]: probabilmente il cambio di un attributo dopo l'equippaggiamento, non viene mai usato perché ciò avviene in altri modi, non testato!

change_value[3]: rispettivo aumento dell'attributi in change_atr

magic: non usato

on_equip: nome della funzione che viene chiamata all'equipaggiamento (usato anche per modificare gli attributi)

on_unequip: nome della funzione che viene chiamata al disequipaggiamento

on_state[4]: in genere viene utilizzato solo on_state[0], indica la funzione che viene chiamata ad ogni uso

owner: utilizzato solo nel caso del martello sacro indica il possessore dell'oggetto

ownerGuild: indica la gilda posseditrice dell'oggetto (non usato)

disguiseGuild: probabilmente la gilda che rifiuta quell'ogggetto (non usato)

visual: la visuale 3D dell'oggetto, scrivere qui il nome del file .3ds non compilato

visual_change: la visuale 3D dell'armature indossata, scrivere qui il nome del file .asc non compilato

effect: l'effetto che verrà applicato sopra l'oggetto (qui una lista)

visual_skin: forse (???) se l'oggetto si vede sulla pelle, forse perché tale attributo è usato praticamente sempre ma sempre impostato su 0

scemeName: indica una stringa di riconoscimento dell'oggetto, vedere altri oggetti simili per l'utilizzo

material: indica il materiale dell'oggetto e quindi il suono che farà quando cadrà a terra

    • MAT_WOOD: legno

    • MAT_STONE: pietra

    • MAT_METAL: metallo

    • MAT_LEATHER: cuoio

    • MAT_CLAY: argilla

    • MAT_GLAS: vetro


munition: istanza delle munizioni per le armi a distanza

spell: indica l'incatesimo della pergamena o runa

range: l'ampiezza dell'arma

description: il nome che comparirà nell'inventario (in genere uguale a name)

text[ITM_TEXT_MAX] e count[ITM_TEXT_MAX]: rispettivamente stringa e valore per la descrizione dell'oggetto, ciò che comparirà quando passerete il cursore sopra l'oggetto nell'inventario; massimo 5 valori

inv_zbias: la lontananza della visuale dell'oggetto nell'inventario

inv_rotx e inv_roty e inv_rotxz: la rotazione sullo specifico asse della visuale dell'oggetto nell'inventario

inv_animate: rotazione dinamica della visuale dell'oggetto nell'inventario (non usata e mai testata)



Spero di essere stato abbastanza dettagliato, se avete domande chiedete pure.

Ciao :camberman.gif: :camberman.gif:

Torna all'indice delle lezioni



Edited by Frank-95 - 15/10/2015, 13:50
 
Top
0 replies since 25/2/2015, 13:09   141 views
  Share