Azioni

Differenze tra le versioni di "YourCityMUD"

Da MontelLUG WIKI.

Riga 23: Riga 23:
  
 
==Progetto delle Classi==
 
==Progetto delle Classi==
 
+
[[ClassiMUD|La versione provvisoria delle classi del server]]
 
 
*dialog(Dumpable, Restorable)
 
 
 
id_dialog
 
mHaveSkills
 
mHotHaveSkills
 
lHaveFeats
 
lNotHaveFeats
 
lHaveRace
 
lNotHaveRace
 
lHaveClass
 
lNotHaveClass
 
lHaveObject
 
lNotHaveObject
 
lHaveQuestCompleted
 
lNotHaveQuestCompleted
 
lHaveCurrentQuest
 
lNotHaveCurrentQuest
 
pStartingPhrase
 
>canHear(*pg char) // valuta se il personaggio può sentire il dialogo
 
 
 
 
 
*phrase(Dumpable, Restorable)
 
 
 
id_dialog
 
id_phrase
 
pPngSpeaking //personaggio che stà parlando in questo momento
 
mHaveSkills
 
mHotHaveSkills
 
lHaveFeats 
 
lNotHaveFeats
 
lHaveRace
 
lNotHaveRace
 
lHaveClass
 
lNotHaveClass
 
lHaveObject
 
lNotHaveObject
 
  lHaveQuestCompleted
 
lNotHaveQuestCompleted
 
lHaveCurrentQuest
 
lNotHaveCurrentQuest
 
sFrase
 
sResponse1 //risposta che viene mostrata come possibilità
 
iAction1 //azione che intraprende il png se si sceglie questa risposta
 
pId_frase1 //frase cui si rimanda se questa risposta viene scelta
 
sResponse2
 
iAction2
 
pId_frase2
 
sResponse3
 
iAction3
 
pId_frase3
 
>nextStep(char* risposta)
 
 
 
 
 
*connection
 
 
 
id_connection
 
mHaveSkills
 
mHotHaveSkills
 
lHaveFeats 
 
lNotHaveFeats
 
lHaveRace
 
lNotHaveRace
 
lHaveClass
 
lNotHaveClass
 
lHaveObject
 
lNotHaveObject
 
pToLocation
 
>canPass(character* char) // verifica se il personaggio può passare
 
 
 
 
*spell(Dumpable, Restorable)
 
 
 
id_spell
 
sName
 
iSpellContainer
 
TYPE_AREA //incantesimo ad area
 
TYPE_TARGET //incantesimo a targhet
 
TYPE_PERSONAL //incantesimo personale
 
iType //uno dei valori sopra
 
mHaveSkills
 
mHotHaveSkills
 
lHaveFeats 
 
lNotHaveFeats
 
lHaveRace
 
lNotHaveRace
 
lHaveClass
 
lNotHaveClass
 
iHaveObject //oggetto magico, compoonente materiale, etc..
 
sLongDesc
 
iDuration
 
lAddFeats
 
lLoseFeats
 
mAddSkills
 
mLoseSkills
 
lAddItems
 
lLoseItems
 
iAddPF
 
iLosePF
 
iNewLocation
 
iRandomPercentage //percentuale di variazione casuale intensit
 
>cast()
 
>cast(character* target)
 
 
 
 
 
*character(Container)
 
 
 
  id_character
 
  sName
 
  sDescription
 
  lRace
 
  mClass //lista delle classi con livello
 
  pLocation
 
  mSkills
 
  lFeats
 
  mTempSkills //mSkills modificate da magie etc.
 
  lTempFeats //lFeats piu' modifiche per magie etc
 
  lSpells
 
  mActiveSpells /spells attivi e loro durata residua
 
  lObjects
 
  iPf
 
  iPx
 
  pOnHand1 //puntatore all'oggetto dell'inventario in mano destra
 
  pOnHand2
 
  pOnHead
 
  pOnNeck
 
  pOnFinger1
 
  pOnFinger2
 
  pOnBody1
 
  pOnBody2
 
  >fight(character* target)
 
  >flee()
 
  >move(connection* destination) //vai in un'altra location
 
  >give(object* item)
 
 
 
**character>>pg          (Dumpable, Restorable)
 
 
 
    sPassword
 
    iPlayedTime
 
    mLocationVisited //mappa di location visitate e numero di visite
 
    iPx //punti di esperienza
 
    iInactivityTime //tempo di inattività
 
    lQuestCompleted
 
    lCurrentQuest
 
    >talk(pg* target) //chat
 
    >shout() //manda messaggio a tutti i pg nella tua stessa location
 
    >talk(png* target) //start dialog
 
 
 
 
**character>>png(Dumpable, Restorable)
 
 
 
    lKnownPG //lista dei pg conosciuti
 
    lDialog //lista ordinata dei dialoghi da tentare di fare
 
    pDefaultDialog //Dialogo da fare nel caso nessuno nella lista possa essere fatto
 
 
 
 
 
*object(Dumpable, Restorable, Container, Magical, Wearable)
 
 
 
  id_object
 
  sName
 
  sDescription
 
  iWeight
 
  mMagic //magie contenute con loro numero di cariche
 
  lWearingPlaces //lista di posti in cui e' possibile indossarlo (se ha magie possono funzionare solo se indossato)
 
  iWeared //indica se e' indossato o no l'oggetto
 
  WEARED_YES
 
  WEARED_NO
 
  LOC_HEAD
 
  LOC_NECK
 
  LOC_BODY1
 
  LOC_BODY2
 
  LOC_FINGER1
 
  LOC_FINGER2
 
  LOC_HAND1
 
  LOC_HAND2
 
  >dump()
 
  >restore()
 
  >cast(spell* id_spell)
 
  >isWearableOn(int wearLocation)
 
 
 
 
**object>>usable
 
 
 
    iMagicItem
 
    MAGICITEM_YES
 
    MAGICITEM_NO
 
    iDuration
 
    lAddFeats
 
    lLoseFeats
 
    mAddSkills
 
    mLoseSkills
 
    lAddItems
 
    lLoseItems
 
    iAddPF
 
    iLosePF
 
    iNewLocation //dove fa spostare il target l'uso dell'oggetto
 
    iRandomPercentage //percentuale di variazione casuale intensit
 
    iNumCharges
 
    >use(character* target)
 
 
 
**object>>container(Container)
 
 
 
    lContainedObject
 
    iMaxContainedWeight
 
    >addObject(object* object)
 
    >removeObject(object* object)
 
    >removeObject(object* nomeOggetto)
 
    >containedWeight()
 
 
 
 
 
*fakeLocation
 
 
 
id_fakeLocation
 
pN //puntatori alle altre connection che puntano alle alre fake location
 
pNE
 
pE
 
pSE
 
pS
 
pSW
 
pW
 
pNW
 
pUP
 
pDW
 
pLocation //puntatore alla location associata alla fakeLocation
 
lPg //lista dei pg presenti nella location
 
iEmptyTime //tempo da quando nessun pg è nella location
 
 
 
 
 
*location
 
 
 
id_location
 
sName
 
sShortDescription
 
sLongDescription
 
lObjects
 
lPng
 
>locationMsg(char* msg) //messaggio da mandare a tutti i pg nella location
 
 
 
*quest
 
 
 
...
 
 
 
==Convenzioni==
 
 
 
CONVENZIONI NEI NOMI DELLE VARIABILI
 
 
 
La prima lettera indica il tipo:
 
p=>puntatore
 
i=>intero
 
m=>map, hash
 
l=>lista
 
s=>stringa
 
 
Le parole che compongono la variabile vanno in minuscole con l'iniziale di ogni parola maiuscola.
 
 
 
La seconda lettera va maiuscola.
 
 
 
CONVENZIONE NEI NOMI DELLE COSTANTI
 
 
 
Vanno tutte in maiuscole.
 
 
 
CONVENZIONI NEI NOMI DEI METODI
 
 
 
Sono preceduti da > che non fa parte del nome
 

Versione delle 10:57, 15 lug 2004

Cos'è un MUD?

Un MUD è un sostanzialmente un gioco di ruolo multiutente. Ogni giocatore ha un personaggio con determinate caratteristiche e abilità da guidare e far interagire con gli altri personaggi in una ambientazione virtuale. Classicamente i MUD hanno ambientazione fantasy, del tipo: Sei un elfo chierico con forza 52, difesa 36, capacità di volare ecc. ecc.

Cos'è in breve YourCityMud?

YourCityMUD (nome provvisorio) sarà (o quantomeno vorremmo fosse) un MUD molto flessibile ed efficiente, rilasciato sotto la GPL. Chi costruirà le ambientazioni potrà scegliere più o meno tutto: potrà scegliere gilde del tipo Fighetti, Reppettoni, Punkabestia ecc... abilità come "Resistenza all'alcool" ed ambientare il tutto nella sua città, provincia, mondo immaginario. Si potranno ideare quest sia automatiche sia scritte di pugno dai creatori dell'ambientazione.

Realizzazione

YourCityMUD sarà scritto in C++, appoggiandosi un po' sul PostgreSQL. Il C++ è stato scelto perché il codice sarà pesantemente ad oggetti e per assicurare efficienza al programma. Ci appoggeremo al PostgreSQL (che gestisce l'ereditarietà tra tabelle) per tenere memoria delle ambientazioni e per gestirle e crearle facilmente via web. YourCityMUD sarà costituito da un server e un numero imprecisato di client (telnet, grafici, via web, ecc.) che comunicheranno direttamente col server in XML o con un modulo che gestirà le comunicazioni in XML col server (per il telnet, per es.).

Stato del progetto

Il progetto è per buona parte chiaro nelle nostre menti :) Stiamo scrivendo le interfacce delle varie classi C++ e definendo le tabelle SQL. Probabilmente riprenderemo a lavorare in modo serio a settembre, dopo le vacanze.

Progetto delle Classi

La versione provvisoria delle classi del server