mirror of
https://github.com/RYGhub/royalnet.git
synced 2024-11-23 19:44:20 +00:00
Removed obsolete files
This commit is contained in:
parent
15173323e4
commit
8b3333ae01
4 changed files with 0 additions and 730 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -15,4 +15,3 @@ Lib/*
|
|||
Scripts/*
|
||||
tcl/*
|
||||
pip-selfcheck.json
|
||||
sentry.txt
|
||||
|
|
327
adventure.py
327
adventure.py
|
@ -1,327 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import sys
|
||||
import random
|
||||
import time
|
||||
from telegram import sendmessage
|
||||
from telegram import getupdates
|
||||
|
||||
# Gruppo di destinazione
|
||||
target_group = -2141322
|
||||
|
||||
# Vita iniziale!
|
||||
hp = 100
|
||||
|
||||
# La candela!
|
||||
candela = False
|
||||
|
||||
|
||||
# Scrivi la storia!
|
||||
def racconto(testo):
|
||||
sendmessage(chr(128172) + " " + testo, target_group)
|
||||
|
||||
|
||||
# Apri una tastiera con due scelte
|
||||
def trescelte(puno, pdue, ptre):
|
||||
time.sleep(4)
|
||||
sendmessage(chr(10067) + " Cosa volete fare?\n/1: " + puno + "\n/2: " + pdue + "\n/3: " + ptre, target_group)
|
||||
# Aspetta una risposta...
|
||||
while True:
|
||||
msg = getupdates()
|
||||
if 'text' in msg:
|
||||
if msg['text'] == "/1":
|
||||
return 1
|
||||
elif msg['text'] == "/2":
|
||||
return 2
|
||||
elif msg['text'] == "/3":
|
||||
return 3
|
||||
|
||||
|
||||
# Modifica la vita. Mettere valori negativi per ridurla, positivi per aumentarla.
|
||||
def vita(var):
|
||||
global hp
|
||||
hp = hp + var
|
||||
sendmessage(chr(10084) + ' ' + str(var) + "\n" + "Ora avete " + str(hp) + " punti vita.", target_group)
|
||||
if hp <= 0:
|
||||
sendmessage("Hai finito la vita! Game over!", target_group)
|
||||
sys.exit()
|
||||
|
||||
|
||||
# Qui inizia la storia...
|
||||
# Copyright @MaxSensei 2015
|
||||
sendmessage("Benvenuto a Royal Bot Adventures !\nStoria scritta da @MaxSensei", target_group)
|
||||
racconto("Vi svegliate in un luogo del tutto buio, sentite un flebile respiro da qualche parte nel buio."
|
||||
" Tastate la vostra fedelissima spada. Cercate di ricordare qualcosa ma con scarso successo (originale eh?). ")
|
||||
while True:
|
||||
s = trescelte("Brandite la spada verso i respiri nel buio", "Chiedete chi è ad alta voce", "State zitti e immobili")
|
||||
if s == 1:
|
||||
racconto("Ahia! Tu e la tua compagnia vi colpite a vicenda con le spade.")
|
||||
vita(-15)
|
||||
elif s == 2:
|
||||
racconto("Riconoscete i vostri amici e vi ritenete fortunati di non aver ferito nessuno.")
|
||||
break
|
||||
elif s == 3:
|
||||
racconto("Che codardi, tanto non succede nulla...")
|
||||
break
|
||||
racconto("Siete in un luogo del tutto buio, ma vedete della luce molto lontano.")
|
||||
while True:
|
||||
s = trescelte("Esaminate il luogo circostante", "Muovetevi nella direzione della luce",
|
||||
"Controllate i vostri vestiti")
|
||||
if s == 1:
|
||||
racconto(
|
||||
"Sembrate constatare che il pavimento sia fatto di dura roccia e le parenti intorno non si sentono,"
|
||||
" tastate per terra quello che sembra una candela spenta (utile eh?).")
|
||||
candela = True
|
||||
elif s == 2:
|
||||
if not candela:
|
||||
racconto(
|
||||
"Brancolate nel buio nella direzione della luce,"
|
||||
" inciampate in qualcosa e vi spaccate il naso per terra.")
|
||||
vita(-10)
|
||||
racconto(
|
||||
"Notate che nel pavimento c'è qualcosa di simile a una radice,"
|
||||
" ma grossa e sembra quasi che si stia muovendo.")
|
||||
c = trescelte("Proseguite verso la luce con cautela", "Correte in direzione opposta", "Tornate indietro")
|
||||
else:
|
||||
racconto(
|
||||
"La candela per fortuna si é rivelata essere elettrica per mancanza di fantasia dell'autore,"
|
||||
" e premendo un pulsantino sul lato illumina l'area circostante."
|
||||
" \nLa luce non é abbastanza da illuminare del tutto la caverna,"
|
||||
" ma potete almeno vedere ciò su cui camminate.")
|
||||
racconto(
|
||||
"Vi dirigete verso la luce, ma scoprite che un enorme pianta vi intralcia la strada."
|
||||
" \nSi sentono soffocati fruscii nel terreno in cui penetrano le radici.")
|
||||
c = trescelte("Proseguite verso la luce sicuri di non inciampare", "Correte in direzione opposta",
|
||||
"Esaminate la pianta")
|
||||
if c == 1 and candela:
|
||||
racconto(
|
||||
"Vi addentrate nella caverna, dove una sala si estende nelle profondità della terra."
|
||||
" \nAd un certo punto del cammino siete costretti a interrompere il viaggio a causa di un bivio."
|
||||
" La luce che stavate seguendo prima risplende sulla sinistra,"
|
||||
" ma allo stesso momento qualcosa emana una luce rossa di suo sulla destra...")
|
||||
while True:
|
||||
v = trescelte("Controllate a sinistra", "Procedete spavaldi verso destra",
|
||||
"Inventate il primo *facewall*")
|
||||
if v == 1:
|
||||
racconto(
|
||||
"Svoltate a sinistra verso lo scintillio."
|
||||
" Trovate un ascia, circondata da rune naniche,"
|
||||
" per terra. Mentre la pulite dall'enorme quantità di ragnatele,"
|
||||
" vi accorgete di essere a vostra volta avvolti da fili duri e sottili."
|
||||
" Un ragno mostruoso vi spunta davanti.")
|
||||
r = trescelte("Affrontate il ragno usando l'ascia", "Scappate urlando come ragazzine",
|
||||
"Vi pisciate addosso molto forte")
|
||||
if r == 1:
|
||||
racconto(
|
||||
"Il piccolo ragnetto impaurito esplode sotto l'enorme peso della vostra ascia. "
|
||||
"Quest'ultima però si rompe in mille schegge a causa dell'urto.")
|
||||
racconto("Congratulazioni, vi siete salvati!")
|
||||
sendmessage("Conclusione #3! Rigiocate per scoprire le altre.", target_group)
|
||||
break
|
||||
elif r == 2:
|
||||
racconto(
|
||||
"Cercate di scappare, ma inciampate nelle ragnatele."
|
||||
" Cadete di faccia sul povero ragnetto, spiaccicandolo. Svenite."
|
||||
" (Molto anticlimatico, lo so, ma siete voi che fate scelte da imbranati)")
|
||||
sendmessage("Conclusione #4! Rigiocate per scoprire le altre.", target_group)
|
||||
break
|
||||
elif r == 3:
|
||||
racconto(
|
||||
"La piscia cola dai vostri pantaloni,"
|
||||
" inondando la caverna e lasciandovi senza ossigeno."
|
||||
" Il ragnetto vi osserva stupito e si nasconde nelle ragnatele.")
|
||||
vita(-100)
|
||||
elif v == 2:
|
||||
racconto(
|
||||
"Man mano che vi addentrate sempre di più nelle profondità del tunnel,"
|
||||
" una luce rossa pervade le pareti, sempre più luminosa,"
|
||||
" finchè non svoltate. Ai vostri occhi si rivela un gigantesco portone nanico,"
|
||||
" ornato da una moltitudine di rune e circondato da un ruscello di lava.")
|
||||
racconto(
|
||||
"All'improvviso sentite la terra tremare e udite un ruggito potentissimo echeggiare."
|
||||
" Pochi secondi dopo un corno risuona nelle vicinanze,"
|
||||
" e i portoni iniziano lentamente a chiudersi (Sto pensando a te, portale nero di Mordor)")
|
||||
p = trescelte("Correte più veloce che potete attraverso le porte",
|
||||
"Vi nascondete e cercate un riparo nella caverna", "Vi grattate le palle")
|
||||
if p == 1:
|
||||
racconto(
|
||||
"Più veloce che potete correte verso gli enormi portoni che si stanno "
|
||||
"lentamente chiudendo di fronte a voi."
|
||||
" Col cuore a mille vedete crollare stalattiti ovunque,"
|
||||
" una delle quali vi colpisce forte sulla spalla, "
|
||||
"ma riuscite a saltare un secondo prima di venire schiacciati.")
|
||||
vita(-35)
|
||||
racconto(
|
||||
"Di fronte a voi si estende una delle più grandi città naniche del mondo, "
|
||||
"ma storditi e feriti, "
|
||||
"non riuscite a coglierne tutta la sua bellezza. "
|
||||
"Le case più fragili crollano intorno e piccoli ma robusti omini nel panico cercano un"
|
||||
" rifugio in un grande castello. Sentite un altro ruggito, e il mondo si trasforma in "
|
||||
"zolfo ed esplosioni. L'ultima cosa che ricordate sono dolori atroci ovunque...")
|
||||
sendmessage("Conclusione #5! Rigiocate per scoprire le altre.", target_group)
|
||||
break
|
||||
elif p == 2:
|
||||
racconto(
|
||||
"Rinunciate ad attraversare i portoni, "
|
||||
"siete infatti dubbiosi dell'ospitalità dei nani. "
|
||||
"\nPiuttosto decidete di cercare riparo nella caverna. "
|
||||
"\nVi nascondete dentro una cavità nella parete dall'aspetto solido. "
|
||||
"\nSentite suoni di esplosioni e roccia sgretolarsi ovunque,"
|
||||
" e dalla paura vi viene un infarto.")
|
||||
vita(-100)
|
||||
elif p == 3:
|
||||
racconto("Mmmmh, che bello grattarsi! Ora però sentite prurito al culo...")
|
||||
trescelte("Grattatevi", "Grattatevi", "Grattatevi")
|
||||
racconto("Aaaaah, che piacere! Ma vi viene prurito al pancino...")
|
||||
trescelte("Grattatevi", "Grattatevi", "Grattatevi")
|
||||
racconto(
|
||||
"Una stalattite enorme cade molto vicino a voi,"
|
||||
" e sentite diffondersi un prurito incredibile nelle ascelle...")
|
||||
trescelte("Grattatevi", "Grattatevi", "Grattatevi")
|
||||
racconto(
|
||||
"Una stalattite vi arriva in testa,"
|
||||
" vi buca il cervello e morite. Il tutto mentre avevate prurito al naso...")
|
||||
vita(-100)
|
||||
elif v == 3:
|
||||
x = str(random.randint(1, 10))
|
||||
racconto("Ahi, che male! La vostra intelligenza aumenta di " + x + " punti.")
|
||||
vita(-10)
|
||||
# Coso buttato lì perchè non mi viene in mente un modo migliore per fare the end. Eh, vabbè.
|
||||
break
|
||||
elif c == 1:
|
||||
racconto(
|
||||
"Osservate da vicino quella che pare essere un'enorme radice che inizia dai meandri oscuri del soffitto"
|
||||
" e scende giù, perforando con facilità il duro granito."
|
||||
" La radice affonda sempre più giù e potete sentire come rompe e sgretola la terra sottostante...")
|
||||
vita(-2)
|
||||
elif c == 2:
|
||||
racconto(
|
||||
"Avanzate correndo verso la parete opposta, ma inciampate in altre radici, subendo solo dei danni."
|
||||
" Notate un piccolo varco nella parete."
|
||||
" I vostri occhi, ormai abituati al buio, non distinguono chiaramente quello che c'è oltre.")
|
||||
vita(-10)
|
||||
elif c == 3 and candela:
|
||||
racconto("Vedete crepe ovunque, e la pianta che penetra nel terreno creandone altre...")
|
||||
if c == 1 or c == 2 or (c == 3 and candela):
|
||||
racconto(
|
||||
"La terra inizia a tremare e grosse crepe iniziano a comprarire nel terreno. "
|
||||
"\nGrosse radici, ora illuminate dalla luce del sole, "
|
||||
"vengono rapidamente rissuchiate nel soffito immenso. "
|
||||
"\nUn orribile ruggito vi spacca le orecchie. Siete assordati, e non potete sentire nulla.")
|
||||
racconto("Avete il presentimento che qualcosa di terribile stia per accadere.")
|
||||
b = trescelte("Buttatevi fuori dalla zona crepata", "Rimanete come idioti a guardare l'avvenimento",
|
||||
"Correte in direzione dello scintillio che si vede in lontananza")
|
||||
if b == 1:
|
||||
racconto(
|
||||
"Vi buttate fuori dal buco appena in tempo, e sentite una forte esplosione alle vostre spalle... "
|
||||
"Con una forza possente venite spinti giù dalla montagna. "
|
||||
"Cadete facendo un'incredibile fracasso e sentite un male allucinante. "
|
||||
"Siete sull'orlo di svenire. Con le ultime forze vi girate ad osservare la scena."
|
||||
" Un enorme creatura grande come il picco della montagna si stava levando in cielo, "
|
||||
"una mastodontica isola composta da tentacoli e occhi gialli. "
|
||||
"Un enorme tentacolo continuava ad essere attaccato nel centro di quello che una"
|
||||
" volta era un gigantesco picco, finchè non crollò su se stesso ed implose."
|
||||
" La grossa nube volava lentamente, emettendo il suo ruggito di trionfo sopra di voi,"
|
||||
" e in quel preciso istante le palpebre divennero troppo pesanti e cedettero.")
|
||||
sendmessage("Conclusione #1! Rigiocate per scoprire le altre.", target_group)
|
||||
break
|
||||
elif b == 2:
|
||||
racconto(
|
||||
"Il soffito all'improvviso si stacca con un forte boato,"
|
||||
" inondando la caverna di luce."
|
||||
" Grossi tentacoli si ritraggono da sotto il suolo, "
|
||||
"e la terra inizia a sgretolarsi sotto i vostri piedi. "
|
||||
"Fate in tempo a vedere un enorme tentacolo al centro del pavimento. "
|
||||
"Improvvisamente, il tentacolo inizia a gonfiarsi e tutto il mondo intorno implode. Svenite.")
|
||||
sendmessage("Conclusione #2! Rigiocate per scoprire le altre.", target_group)
|
||||
break
|
||||
elif b == 3:
|
||||
racconto(
|
||||
"Siete proprio pirla... "
|
||||
"Intravedete qualcosa a forma di ascia, "
|
||||
"ma non fate in tempo a raggiungerla che la montagna si avvolge su sè stessa e, "
|
||||
"avvolti da lava e roccia, spiaccicati con una forza enorme, perite.")
|
||||
vita(-100)
|
||||
elif s == 3:
|
||||
racconto("Vi ritrovate in dei vestiti pesanti e grossi, pieni di tasche.")
|
||||
racconto(
|
||||
"Ad una accurata ispezione trovate una bottiglia contenente qualcosa che sembra liquido. "
|
||||
"Sull'etichetta vi è raffigurata una lucciola.")
|
||||
while True:
|
||||
s = trescelte("Bevete il liquido", "Vi spalmate addosso il liquido", "Introducete nella cavità anale")
|
||||
if s == 1:
|
||||
racconto("Ha un sapore orribile!\nVi sentite male...")
|
||||
vita(-10)
|
||||
elif s == 2:
|
||||
racconto("Congratulazioni, ora siete coperti di merda di origini sconosciute!")
|
||||
vita(-2)
|
||||
elif s == 3:
|
||||
racconto(
|
||||
"Sentite all'improvviso una forza sconosciuta pervadervi tutto il corpo; "
|
||||
"vi concentrate, e riuscite a far splendere le vostre splendide chiappe più del sole in estate.")
|
||||
racconto(
|
||||
"Le vostre chiappe risplendono più del sole, e illuminano tutta la caverna."
|
||||
" Vi stupite dalla sua immensità: sembra il picco di una montagna,"
|
||||
" ma avvolto da una specie di enorme pianta, le cui radici entrano qua e là nel terreno."
|
||||
" \nOsservate anche tante sfere gialle alle estremità della caverna."
|
||||
" Esattamente al centro, c'é una specie di enorme pilastro...")
|
||||
while True:
|
||||
h = trescelte("Lodate la bellezza delle vostre chiappe", "Esaminate le radici",
|
||||
"Esaminate il grosso pilastro")
|
||||
if h == 1:
|
||||
racconto("Lodate la bellezza del vostro culo e ammirate il modo in cui non succede niente!")
|
||||
elif h == 2:
|
||||
racconto(
|
||||
"Quelle che a prima vista sembravano radici in realtà sono grossi tentacoli verdognoli "
|
||||
"che penetrano dal soffito verso il terreno, scavandolo in profondità. "
|
||||
"\nNotate alla chiara luce dei vostri glutei che sono semitrasparenti, "
|
||||
"e potete vedere un liquido rossastro e luminoso scorrere al loro interno.")
|
||||
break
|
||||
elif h == 3:
|
||||
racconto(
|
||||
"Esaminate l'enorme pilastro al centro della caverna per scoprire che in realtà é un enorme"
|
||||
" tentacolo! Dentro potete vedete confluire altri tentacoli. "
|
||||
"\nNotate che é semitrasparente, e potete vedere come pietra incandescente e "
|
||||
"lava scorrono al suo interno. \nNotate anche un luccichio che sembra provenire da"
|
||||
" gemme all'interno.")
|
||||
break
|
||||
racconto(
|
||||
"All'improvviso la terra inizia a tremare e i tentacoli uno ad uno vengono risucchiati nel "
|
||||
"soffito, mentre il tentacolo madre inizia a gonfiarsi, raggiungendo dimensioni enormi...")
|
||||
racconto("In una parete notate una crepa che potrebbe condurvi all'uscita della caverna.")
|
||||
b = trescelte("Andate verso la crepa", "Aggrappatevi ad un tentacolo",
|
||||
"Abbracciate il grosso tentacolo centrale, magari ha solo bisogno di amore")
|
||||
if b == 1:
|
||||
racconto(
|
||||
"Raggiungete la crepa e cercate di attraversarla, ma notate che il vostro culo oltre a "
|
||||
"illuminarsi si é anche ingrandito! \nRimanete incastrati nella fessura. "
|
||||
"All'improvviso sentite un fortissimo ruggito, e le vostre chiappe,"
|
||||
" in preda alla paura, si contraggono, esplodendo e rilasciando tutta la luminescenza in forma "
|
||||
"di propulsione. \nSchizzate alla velocità della luce fuori dalla montagna, "
|
||||
"e fuori dai confini della città nanica al suo esterno. "
|
||||
"L'ultima cosa che vedete é una casetta sull'albero in un bosco. "
|
||||
"La attraversate come un proiettile e svenite.")
|
||||
sendmessage("Conclusione #5! Rigiocate per scoprire le altre.", target_group)
|
||||
elif b == 2:
|
||||
racconto(
|
||||
"Vi aggrappate al tentacolo più vicino, e appena lo toccate questo schizza verso alto, "
|
||||
"entrando nel soffito e portandovi dietro. "
|
||||
"\nAll'improvviso l'intera pianta si stacca dalla montagna e inizia a volare sempre più in alto"
|
||||
" nel cielo."
|
||||
" \nGuardate sotto e vedete come l'enorme tentacolo madre sia ancora attaccato alla montagna."
|
||||
" \nNon aveste mai pensato che esso si rimpicciolisse all'istante,"
|
||||
" rilasciando sotto forma di vapore la roccia incandescente,"
|
||||
" facendo esplodere la montagna e dando un'ulteriore spinta all'isola pianta volante... "
|
||||
"\nIl tentacolo a cui pensavate di essere aggrappati invece si aggrappa a sua volta a voi "
|
||||
"e vi risucchia all'interno di una strana membrana... "
|
||||
"Svenite e sognate unicorni che sparano arcobaleni e bagni nello spazio profondo.")
|
||||
sendmessage("Conclusione #6! Rigiocate per scoprire le altre.", target_group)
|
||||
elif b == 3:
|
||||
racconto(
|
||||
"Abbracciate il tentacolo madre con un sorriso stampato sulle labbra. "
|
||||
"Vi divertite tantissimo a raccontare in paradiso di come siete esplosi "
|
||||
"e di come i vostri pezzettini siano stati ritrovati nei 5 continenti.")
|
||||
vita(-100)
|
||||
break
|
||||
# Coso buttato lì perchè non mi viene in mente un modo migliore per fare the end. Eh, vabbè.
|
||||
break
|
||||
sendmessage("THE END!", target_group)
|
396
mifia.py
396
mifia.py
|
@ -1,396 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import telegram
|
||||
import configparser
|
||||
import random
|
||||
|
||||
|
||||
class Player:
|
||||
telegramid = int()
|
||||
username = str()
|
||||
role = 0 # 0 normale | 1 rryg | 2 resistenza
|
||||
alive = True
|
||||
votedfor = str()
|
||||
special = False
|
||||
|
||||
def message(self, text):
|
||||
"""Manda un messaggio al giocatore
|
||||
:param text: Testo del messaggio
|
||||
"""
|
||||
telegram.sendmessage(text, self.telegramid)
|
||||
|
||||
|
||||
partiteincorso = list()
|
||||
|
||||
|
||||
class Game:
|
||||
groupid = int()
|
||||
adminid = int()
|
||||
players = list()
|
||||
tokill = list()
|
||||
joinphase = True
|
||||
|
||||
def __del__(self):
|
||||
print("Partita {0} eliminata.\n".format(self.groupid))
|
||||
|
||||
def message(self, text):
|
||||
"""Manda un messaggio alla chat generale del gioco
|
||||
:param text: Testo del messaggio
|
||||
"""
|
||||
telegram.sendmessage(text, self.groupid)
|
||||
|
||||
def adminmessage(self, text):
|
||||
"""Manda un messaggio all'admin del gioco
|
||||
:param text: Testo del messaggio
|
||||
"""
|
||||
telegram.sendmessage(text, self.adminid)
|
||||
|
||||
def evilmessage(self, text):
|
||||
"""Manda un messaggio al team dei nemici del gioco
|
||||
:param text: Testo del messaggio
|
||||
"""
|
||||
for player in self.players:
|
||||
if player.role == 1:
|
||||
telegram.sendmessage("\U0001F608: " + text, player.telegramid)
|
||||
telegram.sendmessage("\U0001F608: " + text, self.adminid)
|
||||
|
||||
def status(self) -> str:
|
||||
"""Restituisci lo stato attuale della partita in una stringa"""
|
||||
tosend = "Stato attuale del gioco: \n"
|
||||
for player in self.players:
|
||||
if not player.alive:
|
||||
tosend += "\U0001F480 "
|
||||
else:
|
||||
tosend += "\U0001F636 "
|
||||
tosend += player.username + "\n"
|
||||
return tosend
|
||||
|
||||
def mifiastatus(self) -> str:
|
||||
"""Restituisci lo stato attuale della partita (per mifiosi) in una stringa"""
|
||||
tosend = "Stato attuale del gioco: \n"
|
||||
for player in self.players:
|
||||
if not player.alive:
|
||||
tosend += "\U0001F480 "
|
||||
elif player.role == 1:
|
||||
tosend += "\U0001F608 "
|
||||
else:
|
||||
tosend += "\U0001F610 "
|
||||
tosend += player.username + "\n"
|
||||
return tosend
|
||||
|
||||
def fullstatus(self) -> str:
|
||||
"""Restituisci lo stato attuale della partita (per admin?) in una stringa"""
|
||||
tosend = str(self.groupid) + "\n"
|
||||
for player in self.players:
|
||||
if not player.alive:
|
||||
tosend += "\U0001F480 "
|
||||
elif player.role == 1:
|
||||
tosend += "\U0001F608 "
|
||||
elif player.role == 2:
|
||||
tosend += "\U0001F575 "
|
||||
else:
|
||||
tosend += "\U0001F610 "
|
||||
tosend += player.username + "\n"
|
||||
return tosend
|
||||
|
||||
def findusername(self, fusername) -> Player:
|
||||
"""Trova un giocatore con un certo nome utente
|
||||
:param fusername: Nome utente da cercare
|
||||
"""
|
||||
for player in self.players:
|
||||
if player.username == fusername.capitalize():
|
||||
return player
|
||||
else:
|
||||
return None
|
||||
|
||||
def findid(self, telegramid) -> Player:
|
||||
"""Trova un giocatore con un certo ID di telegram
|
||||
:param telegramid: ID da cercare
|
||||
"""
|
||||
for player in self.players:
|
||||
if player.telegramid == telegramid:
|
||||
return player
|
||||
else:
|
||||
return None
|
||||
|
||||
def addplayer(self, player):
|
||||
"""Aggiungi un giocatore alla partita
|
||||
:param player: Oggetto del giocatore da aggiungere
|
||||
"""
|
||||
self.players.append(player)
|
||||
|
||||
def mostvoted(self) -> Player:
|
||||
"""Trova il giocatore più votato"""
|
||||
votelist = dict()
|
||||
for player in self.players:
|
||||
if player.votedfor != str() and player.alive:
|
||||
if player.votedfor not in votelist:
|
||||
votelist[player.votedfor] = 1
|
||||
else:
|
||||
votelist[player.votedfor] += 1
|
||||
mostvoted = str()
|
||||
mostvotes = int()
|
||||
for player in votelist:
|
||||
if mostvoted == str():
|
||||
mostvoted = player
|
||||
mostvotes = votelist[player]
|
||||
else:
|
||||
if votelist[player] > mostvotes:
|
||||
mostvoted = player
|
||||
mostvotes = votelist[player]
|
||||
if mostvoted is not None:
|
||||
return self.findusername(mostvoted)
|
||||
else:
|
||||
return None
|
||||
|
||||
def endday(self):
|
||||
votedout = self.mostvoted()
|
||||
self.message(votedout.username + " è il più votato del giorno e sarà ucciso.")
|
||||
self.tokill.append(votedout)
|
||||
for killed in self.tokill:
|
||||
tosend = killed.username + " è stato ucciso.\n"
|
||||
if killed.role == 0:
|
||||
tosend += "Era un \U0001F610 Royal."
|
||||
elif killed.role == 1:
|
||||
tosend += "Era un \U0001F608 Mifioso!"
|
||||
elif killed.role == 2:
|
||||
tosend += "Era un \U0001F575 Detective!"
|
||||
self.message(tosend)
|
||||
killed.alive = False
|
||||
for player in self.players:
|
||||
player.votedfor = str()
|
||||
if player.role != 0:
|
||||
player.special = True
|
||||
self.message(self.displaycount())
|
||||
mifia = self.mifiacount()
|
||||
royal = self.royalcount()
|
||||
if mifia == 0:
|
||||
self.message("*Il Team Royal ha vinto!*\n"
|
||||
"Tutti i Mifiosi sono stati eliminati.")
|
||||
partiteincorso.remove(findgame(self.groupid))
|
||||
if mifia >= royal:
|
||||
self.message("*Il Team Mifia ha vinto!*\n"
|
||||
"I Mifiosi rimasti sono tanti quanti i Royal.")
|
||||
self.tokill = list()
|
||||
|
||||
def mifiacount(self) -> int:
|
||||
mifia = 0
|
||||
for player in self.players:
|
||||
if player.alive:
|
||||
if player.role == 1:
|
||||
mifia += 1
|
||||
return mifia
|
||||
|
||||
def royalcount(self) -> int:
|
||||
royal = 0
|
||||
for player in self.players:
|
||||
if player.alive:
|
||||
if player.role == 0 or player.role == 2:
|
||||
royal += 1
|
||||
return royal
|
||||
|
||||
def displaycount(self) -> str:
|
||||
msg = "*Royal*: {0} persone rimaste\n" \
|
||||
"*Mifia*: {1} persone rimaste".format(str(self.royalcount()), str(self.mifiacount()))
|
||||
return msg
|
||||
|
||||
# Ricordatemi perchè ho deciso di salvare i dati in un ini invece che in un file json
|
||||
def save(self):
|
||||
status = configparser.ConfigParser()
|
||||
status['General'] = {
|
||||
"groupid": self.groupid,
|
||||
"adminid": self.adminid,
|
||||
}
|
||||
for player in self.players:
|
||||
status[player.username] = {
|
||||
"telegramid": player.telegramid,
|
||||
"role": player.role,
|
||||
"alive": player.alive,
|
||||
}
|
||||
try:
|
||||
f = open(str(self.groupid) + ".ini", "w")
|
||||
except OSError:
|
||||
open(str(self.groupid) + ".ini", "x")
|
||||
f = open(str(self.groupid) + ".ini", "w")
|
||||
status.write(f)
|
||||
|
||||
def endjoin(self):
|
||||
self.message("La fase di join è finita.")
|
||||
self.joinphase = False
|
||||
|
||||
|
||||
def findgame(chatid) -> Game:
|
||||
for game in partiteincorso:
|
||||
if game.groupid == chatid:
|
||||
return game
|
||||
else:
|
||||
return None
|
||||
|
||||
|
||||
def loadgame(chatid) -> Game:
|
||||
l = Game()
|
||||
loaded = configparser.ConfigParser()
|
||||
loaded.read(str(chatid) + ".ini")
|
||||
# General non è un giocatore, quindi toglilo
|
||||
playerlist = loaded.sections()
|
||||
playerlist.remove("General")
|
||||
for player in playerlist:
|
||||
lp = Player()
|
||||
lp.alive = bool(loaded[player]['alive'])
|
||||
lp.username = player
|
||||
lp.role = int(loaded[player]['role'])
|
||||
if lp.role == 1 or lp.role == 2:
|
||||
lp.special = True
|
||||
lp.telegramid = int(loaded[player]['telegramid'])
|
||||
l.players.append(lp)
|
||||
l.groupid = int(loaded['General']['groupid'])
|
||||
l.adminid = int(loaded['General']['adminid'])
|
||||
return l
|
||||
|
||||
random.seed()
|
||||
|
||||
while True:
|
||||
t = telegram.getupdates()
|
||||
if 'text' in t:
|
||||
g = findgame(t['chat']['id'])
|
||||
if g is None:
|
||||
if t['text'].startswith("/newgame"):
|
||||
g = Game()
|
||||
g.groupid = t['chat']['id']
|
||||
g.adminid = t['from']['id']
|
||||
partiteincorso.append(g)
|
||||
g.message("Partita creata!")
|
||||
elif t['text'].startswith("/loadgame"):
|
||||
g = loadgame(t['chat']['id'])
|
||||
partiteincorso.append(g)
|
||||
g.message("Partita caricata!\n_Forse._")
|
||||
elif t['text'].startswith("/status"):
|
||||
telegram.sendmessage("Nessuna partita in corso in questo gruppo.", t['chat']['id'], t['message_id'])
|
||||
else:
|
||||
xtra = t['text'].split(' ', 2)
|
||||
try:
|
||||
g = findgame(int(xtra[0]))
|
||||
except ValueError:
|
||||
g = None
|
||||
if g is not None:
|
||||
if xtra[1].lower() == "special":
|
||||
if g.findid(t['from']['id']).role == 1 and g.findid(t['from']['id']).special:
|
||||
target = g.findusername(xtra[2])
|
||||
if target is not None:
|
||||
g.tokill.append(target)
|
||||
g.findid(t['from']['id']).special = False
|
||||
g.evilmessage("Il bersaglio di " + t['from']['username'] + " è *" + target.username +
|
||||
"*.")
|
||||
elif g.findid(t['from']['id']).role == 2 and g.findid(t['from']['id']).special:
|
||||
target = g.findusername(xtra[2])
|
||||
p = g.findid(t['from']['id'])
|
||||
if target is not None:
|
||||
if target.role == 0:
|
||||
p.message(target.username + " è un \U0001F610 Royal.")
|
||||
elif target.role == 1:
|
||||
p.message(target.username + " è un \U0001F608 Mifioso.")
|
||||
elif target.role == 2:
|
||||
p.message(target.username + " è un \U0001F575 Detective.")
|
||||
p.special = False
|
||||
elif xtra[1].lower() == "chat":
|
||||
if g.findid(t['from']['id']).role == 1:
|
||||
g.evilmessage(xtra[2])
|
||||
else:
|
||||
if t['text'].startswith("/join"):
|
||||
if g.joinphase and g.findid(t['from']['id']) is None:
|
||||
p = Player()
|
||||
p.telegramid = t['from']['id']
|
||||
# Qui crasha se non è stato impostato un username. Fare qualcosa?
|
||||
p.username = t['from']['username'].capitalize()
|
||||
# Assegnazione dei ruoli
|
||||
r = random.randrange(0, 100)
|
||||
# Spiegare meglio cosa deve fare ogni ruolo?
|
||||
if r < 15 and g.mifiacount() < 3:
|
||||
p.role = 1
|
||||
p.special = True
|
||||
p.message("Sei stato assegnato alla squadra \U0001F608 *MIFIA*.\n"
|
||||
"Apparirai agli altri come un membro del team ROYAL.\n"
|
||||
"Depistali e non farti uccidere!\n"
|
||||
"Il team ROYAL ucciderà la persona più votata di ogni turno.\n"
|
||||
"Per votare, scrivi `/vote username`!\n"
|
||||
"Scrivi in questa chat `{0} CHAT messaggio` per mandare un"
|
||||
" messaggio segreto al tuo team.\n"
|
||||
"Scrivi in questa chat `{0} SPECIAL username` per uccidere"
|
||||
" qualcuno alla fine del giorno.\n"
|
||||
"La squadra Mifia vince se tutta la Royal Games è eliminata.\n"
|
||||
"Perdi se vieni ucciso."
|
||||
.format(g.groupid))
|
||||
elif r > 90:
|
||||
p.role = 2
|
||||
p.special = True
|
||||
p.message("Sei stato assegnato alla squadra *ROYAL* con il ruolo di \U0001F575 *DETECTIVE*.\n"
|
||||
"Apparirai agli altri come un membro del team ROYAL.\n"
|
||||
"Non attirare l'attenzione dei Mifiosi su di te!\n"
|
||||
"Il team ROYAL ucciderà la persona più votata di ogni turno.\n"
|
||||
"Per votare, scrivi `/vote username`!\n"
|
||||
"Tra di voi si nascondono dei Mifiosi.\n"
|
||||
"Stanateli e uccideteli votando per le persone giuste!\n"
|
||||
"La squadra Royal vince se tutti i Mifiosi sono morti.\n"
|
||||
"La squadra Royal perde se sono vivi solo Mifiosi.\n"
|
||||
"Scrivi in questa chat `{0} SPECIAL nomeutente` per usare il tuo "
|
||||
" potere di detective e indagare sul ruolo di qualcuno per un giorno."
|
||||
.format(g.groupid))
|
||||
else:
|
||||
p.role = 0
|
||||
p.special = True
|
||||
p.message("Sei stato assegnato alla squadra \U0001F610 *ROYAL*.\n"
|
||||
"Il team ROYAL ucciderà la persona più votata di ogni turno.\n"
|
||||
"Per votare, scrivi `/vote username`!\n"
|
||||
"Tra di voi si nascondono dei Mifiosi.\n"
|
||||
"Stanateli e uccideteli votando per le persone giuste!\n"
|
||||
"La squadra Royal vince se tutti i Mifiosi sono morti.\n"
|
||||
"La squadra Royal perde se sono vivi solo Mifiosi.")
|
||||
g.addplayer(p)
|
||||
g.message(p.username + " si è unito alla partita!")
|
||||
g.adminmessage(g.fullstatus())
|
||||
g.save()
|
||||
else:
|
||||
g.message("\u26A0\uFE0F Non puoi unirti alla partita.\n"
|
||||
"La fase di unione è terminata o ti sei già unito in precedenza.")
|
||||
elif t['text'].startswith("/status"):
|
||||
if not g.joinphase:
|
||||
g.message(g.status() + "\n" + g.displaycount())
|
||||
else:
|
||||
g.message(g.status())
|
||||
p = g.findid(t['from']['id'])
|
||||
if p is not None and p.role == 1:
|
||||
p.message(g.mifiastatus())
|
||||
elif t['text'].startswith("/fullstatus"):
|
||||
if t['from']['id'] == g.adminid:
|
||||
g.adminmessage(g.fullstatus() + "\n" + g.displaycount())
|
||||
else:
|
||||
g.message("\u26A0\uFE0F Non sei il creatore della partita; non puoi vedere lo status completo.")
|
||||
elif t['text'].startswith("/save"):
|
||||
if t['from']['id'] == g.adminid:
|
||||
g.save()
|
||||
g.message("Partita salvata!\n_Funzione instabile, speriamo che non succedano casini..._")
|
||||
else:
|
||||
g.message("\u26A0\uFE0F Non sei il creatore della partita; non puoi salvare la partita.")
|
||||
elif t['text'].startswith("/endday"):
|
||||
if t['from']['id'] == g.adminid:
|
||||
g.endday()
|
||||
else:
|
||||
g.message("\u26A0\uFE0F Non sei il creatore della partita; non puoi finire il giorno.")
|
||||
elif t['text'].startswith("/vote"):
|
||||
if not g.joinphase:
|
||||
username = t['text'].split(' ')
|
||||
if len(username) > 1 and g.findusername(username[1]) is not None:
|
||||
voter = g.findid(t['from']['id'])
|
||||
if voter is not None:
|
||||
if voter.alive:
|
||||
voter.votedfor = username[1]
|
||||
g.message("Hai votato per " + username[1] + ".")
|
||||
else:
|
||||
g.message("_La tua votazione riecheggia nel nulla._\n"
|
||||
"\u26A0\uFE0F Sei morto, e i morti non votano.")
|
||||
else:
|
||||
g.message("\u26A0\uFE0F La persona selezionata non esiste.")
|
||||
else:
|
||||
g.message("\u26A0\uFE0F La partita non è ancora iniziata; non puoi votare.")
|
||||
elif t['text'].startswith("/endjoin"):
|
||||
if t['from']['id'] == g.adminid:
|
||||
g.endjoin()
|
|
@ -1,6 +0,0 @@
|
|||
import requests
|
||||
|
||||
|
||||
def getserverstatus(url):
|
||||
r = requests.get(url)
|
||||
return r
|
Loading…
Reference in a new issue