Azioni

Differenze tra le versioni di "YourCityMUD"

Da MontelLUG WIKI.

m
Riga 23: Riga 23:
  
 
==Progetto delle Classi==
 
==Progetto delle Classi==
+10:25, 14 Jul 2004 (CEST)10:25, 14 Jul 2004 (CEST)~~+
+
 
|dialog     |(Dumpable, Restorable)
+
 
+10:25, 14 Jul 2004 (CEST)10:25, 14 Jul 2004 (CEST)~~+
+
*dialog(Dumpable, Restorable)
 +
 
 
  id_dialog
 
  id_dialog
 
  mHaveSkills  
 
  mHaveSkills  
 
  mHotHaveSkills
 
  mHotHaveSkills
  lHaveFeats
+
  lHaveFeats
 
  lNotHaveFeats
 
  lNotHaveFeats
 
  lHaveRace
 
  lHaveRace
Riga 44: Riga 45:
 
  >canHear(*pg char) // valuta se il personaggio può sentire il dialogo
 
  >canHear(*pg char) // valuta se il personaggio può sentire il dialogo
  
+10:25, 14 Jul 2004 (CEST)10:25, 14 Jul 2004 (CEST)~~+
+
 
|phrase     |(Dumpable, Restorable)
+
*phrase(Dumpable, Restorable)
+10:25, 14 Jul 2004 (CEST)10:25, 14 Jul 2004 (CEST)~~+
+
 
 
  id_dialog
 
  id_dialog
 
  id_phrase
 
  id_phrase
Riga 76: Riga 77:
 
  >nextStep(char* risposta)
 
  >nextStep(char* risposta)
  
+10:25, 14 Jul 2004 (CEST)10:25, 14 Jul 2004 (CEST)~~+
+
 
|connection |
+
*connection
+10:25, 14 Jul 2004 (CEST)10:25, 14 Jul 2004 (CEST)~~+
+
 
 
  id_connection
 
  id_connection
 
  mHaveSkills  
 
  mHaveSkills  
Riga 93: Riga 94:
 
  >canPass(character* char) // verifica se il personaggio può passare
 
  >canPass(character* char) // verifica se il personaggio può passare
 
   
 
   
+10:25, 14 Jul 2004 (CEST)10:25, 14 Jul 2004 (CEST)~~+
+
 
|spell       |(Dumpable, Restorable)
+
*spell(Dumpable, Restorable)
+10:25, 14 Jul 2004 (CEST)10:25, 14 Jul 2004 (CEST)~~+
+
 
 
  id_spell
 
  id_spell
 
  sName
 
  sName
Riga 127: Riga 128:
 
  >cast(character* target)
 
  >cast(character* target)
  
+10:25, 14 Jul 2004 (CEST)10:25, 14 Jul 2004 (CEST)~~+
+
 
+|character   |(Container)
+
*character(Container)
|+10:25, 14 Jul 2004 (CEST)10:25, 14 Jul 2004 (CEST)~~+
+
 
| id_character
+
  id_character
| sName
+
  sName
| sDescription
+
  sDescription
| lRace
+
  lRace
| mClass //lista delle classi con livello  
+
  mClass //lista delle classi con livello  
| pLocation
+
  pLocation
| mSkills
+
  mSkills
| lFeats
+
  lFeats
| mTempSkills //mSkills modificate da magie etc.
+
  mTempSkills //mSkills modificate da magie etc.
| lTempFeats //lFeats piu' modifiche per magie etc
+
  lTempFeats //lFeats piu' modifiche per magie etc
| lSpells
+
  lSpells
| mActiveSpells /spells attivi e loro durata residua
+
  mActiveSpells /spells attivi e loro durata residua
| lObjects
+
  lObjects
| iPf
+
  iPf
| iPx
+
  iPx
| pOnHand1 //puntatore all'oggetto dell'inventario in mano destra
+
  pOnHand1 //puntatore all'oggetto dell'inventario in mano destra
| pOnHand2
+
  pOnHand2
| pOnHead
+
  pOnHead
| pOnNeck
+
  pOnNeck
| pOnFinger1
+
  pOnFinger1
| pOnFinger2
+
  pOnFinger2
| pOnBody1
+
  pOnBody1
| pOnBody2
+
  pOnBody2
| >fight(character* target)
+
  >fight(character* target)
| >flee()
+
  >flee()
| >move(connection* destination) //vai in un'altra location
+
  >move(connection* destination) //vai in un'altra location
| >give(object* item)
+
  >give(object* item)
|
+
 
|  +10:25, 14 Jul 2004 (CEST)10:25, 14 Jul 2004 (CEST)~~+
+
**character>>pg           (Dumpable, Restorable)
+~~|pg         |(Dumpable, Restorable)
+
 
|  +10:25, 14 Jul 2004 (CEST)10:25, 14 Jul 2004 (CEST)~~+
+
    sPassword
sPassword
+
    iPlayedTime
iPlayedTime
+
    mLocationVisited //mappa di location visitate e numero di visite
mLocationVisited //mappa di location visitate e numero di visite
+
    iPx //punti di esperienza
iPx //punti di esperienza
+
    iInactivityTime //tempo di inattività
iInactivityTime //tempo di inattività
+
    lQuestCompleted
lQuestCompleted
+
    lCurrentQuest
lCurrentQuest
+
    >talk(pg* target) //chat
>talk(pg* target) //chat
+
    >shout() //manda messaggio a tutti i pg nella tua stessa location
>shout() //manda messaggio a tutti i pg nella tua stessa location
+
    >talk(png* target) //start dialog
>talk(png* target) //start dialog
+
|
+
 
|  +10:25, 14 Jul 2004 (CEST)10:25, 14 Jul 2004 (CEST)~~+
+
**character>>png(Dumpable, Restorable)
+~~|png         |(Dumpable, Restorable)
+
 
  +10:25, 14 Jul 2004 (CEST)10:25, 14 Jul 2004 (CEST)~~+
 
 
     lKnownPG //lista dei pg conosciuti
 
     lKnownPG //lista dei pg conosciuti
 
     lDialog //lista ordinata dei dialoghi da tentare di fare
 
     lDialog //lista ordinata dei dialoghi da tentare di fare
 
     pDefaultDialog //Dialogo da fare nel caso nessuno nella lista possa essere fatto
 
     pDefaultDialog //Dialogo da fare nel caso nessuno nella lista possa essere fatto
  
  +10:25, 14 Jul 2004 (CEST)10:25, 14 Jul 2004 (CEST)~~+
+
 
+~|object     |(Dumpable, Restorable, Container, Magical, Wearable)
+
*object(Dumpable, Restorable, Container, Magical, Wearable)
| +10:25, 14 Jul 2004 (CEST)10:25, 14 Jul 2004 (CEST)~~+
+
 
id_object
+
  id_object
sName
+
  sName
sDescription
+
  sDescription
iWeight
+
  iWeight
mMagic //magie contenute con loro numero di cariche
+
  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)
+
  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
+
  iWeared //indica se e' indossato o no l'oggetto
WEARED_YES
+
  WEARED_YES
WEARED_NO
+
  WEARED_NO
LOC_HEAD
+
  LOC_HEAD
LOC_NECK
+
  LOC_NECK
LOC_BODY1
+
  LOC_BODY1
LOC_BODY2
+
  LOC_BODY2
LOC_FINGER1
+
  LOC_FINGER1
LOC_FINGER2
+
  LOC_FINGER2
LOC_HAND1
+
  LOC_HAND1
LOC_HAND2
+
  LOC_HAND2
>dump()
+
  >dump()
>restore()
+
  >restore()
>cast(spell* id_spell)
+
  >cast(spell* id_spell)
>isWearableOn(int wearLocation)
+
  >isWearableOn(int wearLocation)
|
+
|  +10:25, 14 Jul 2004 (CEST)10:25, 14 Jul 2004 (CEST)~~+
+
 
+~~|usable     |
+
**object>>usable
|  +10:25, 14 Jul 2004 (CEST)10:25, 14 Jul 2004 (CEST)~~+     
+
 
|    iMagicItem
+
    iMagicItem
|    MAGICITEM_YES
+
    MAGICITEM_YES
|    MAGICITEM_NO
+
    MAGICITEM_NO
|    iDuration
+
    iDuration
|    lAddFeats
+
    lAddFeats
|    lLoseFeats
+
    lLoseFeats
|    mAddSkills
+
    mAddSkills
|    mLoseSkills
+
    mLoseSkills
|    lAddItems
+
    lAddItems
|    lLoseItems
+
    lLoseItems
|    iAddPF
+
    iAddPF
|    iLosePF
+
    iLosePF
|    iNewLocation //dove fa spostare il target l'uso dell'oggetto
+
    iNewLocation //dove fa spostare il target l'uso dell'oggetto
|    iRandomPercentage //percentuale di variazione casuale intensit
+
    iRandomPercentage //percentuale di variazione casuale intensit
|    iNumCharges
+
    iNumCharges
|    >use(character* target)
+
    >use(character* target)
|   
+
 
+
**object>>container(Container)
|  +10:25, 14 Jul 2004 (CEST)10:25, 14 Jul 2004 (CEST)~~+
+
 
+~~|container   |(Container)
 
  +10:25, 14 Jul 2004 (CEST)10:25, 14 Jul 2004 (CEST)~~+     
 
 
     lContainedObject
 
     lContainedObject
 
     iMaxContainedWeight
 
     iMaxContainedWeight
Riga 235: Riga 233:
 
     >containedWeight()
 
     >containedWeight()
  
+10:25, 14 Jul 2004 (CEST)10:25, 14 Jul 2004 (CEST)[[User:82.48.226.244|82.48.226.244]]+
+
 
|fakeLocation |
+
*fakeLocation
+10:25, 14 Jul 2004 (CEST)10:25, 14 Jul 2004 (CEST)[[User:82.48.226.244|82.48.226.244]]+
+
 
 
  id_fakeLocation
 
  id_fakeLocation
 
  pN //puntatori alle altre connection che puntano alle alre fake location
 
  pN //puntatori alle altre connection che puntano alle alre fake location
Riga 253: Riga 251:
 
  iEmptyTime //tempo da quando nessun pg è nella location
 
  iEmptyTime //tempo da quando nessun pg è nella location
  
+10:25, 14 Jul 2004 (CEST)10:25, 14 Jul 2004 (CEST)[[User:82.48.226.244|82.48.226.244]]+
+
 
|location     |
+
*location
+10:25, 14 Jul 2004 (CEST)10:25, 14 Jul 2004 (CEST)[[User:82.48.226.244|82.48.226.244]]+
+
 
  id_location  
+
  id_location
 
  sName
 
  sName
 
  sShortDescription
 
  sShortDescription
Riga 264: Riga 262:
 
  >locationMsg(char* msg) //messaggio da mandare a tutti i pg nella location
 
  >locationMsg(char* msg) //messaggio da mandare a tutti i pg nella location
  
 +
*quest
 +
 +
...
 +
 +
==Convenzioni==
  
 
CONVENZIONI NEI NOMI DELLE VARIABILI
 
CONVENZIONI NEI NOMI DELLE VARIABILI
  
 
  La prima lettera indica il tipo:
 
  La prima lettera indica il tipo:
  p~>puntatore
+
  p=>puntatore
  i~>intero
+
  i=>intero
  m~>map, hash
+
  m=>map, hash
  l~>lista
+
  l=>lista
  s~>stringa
+
  s=>stringa
 
   
 
   
 
  Le parole che compongono la variabile vanno in minuscole con l'iniziale di ogni parola maiuscola.
 
  Le parole che compongono la variabile vanno in minuscole con l'iniziale di ogni parola maiuscola.

Versione delle 10:42, 14 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

  • 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