Jump to content

[GR]Jobs: <<θα αφήσω την τελευταία μου πνοή πολεμώντας το Android>>.


Recommended Posts

Posted

ΧΑΧΑΧΑΧΑΧΑ! Πατέντα και το Slide to unlock από την Apple! Τι άλλο θα δούμε;

Posted

Βαρέθηκα να λογομαχώ για την Apple. Το ανοιχτό λογισμικό ΔΕΝ είναι πάντα το καλύτερο. Είμαι υπέρ του ανοιχτού λογισμικού αλλά όχι στην περίπτωση του Android, για λόγους που εξήγησα πιο πάνω...

Posted

Βαρέθηκα να λογομαχώ για την Apple. Το ανοιχτό λογισμικό ΔΕΝ είναι πάντα το καλύτερο. Είμαι υπέρ του ανοιχτού λογισμικού αλλά όχι στην περίπτωση του Android, για λόγους που εξήγησα πιο πάνω...

 

posa lefta prepei na dwseis stin Apple gia na eisai "ok" ? se 8ema apps kai ena soro apo ti stigmi pou to idio to Android sta exei ola dwrean! Prosopika den 8elw na plironw markes gia na lew parte mouri ti exw egw alla 8elw na douleuei auta pou to 8elw na kanei, me liga logia kai iphone na eixa an den to eixa kanei jailbreak ( xaxaxaxaxaxaxaxaxaxaxa mono gia auto to logo peftei katigoria apo to Android ) den 8a mou xrisimeue se tipota allo apo to na pernw tilefona kai na paizei me to slide

Posted

posa lefta prepei na dwseis stin Apple gia na eisai "ok" ? se 8ema apps kai ena soro apo ti stigmi pou to idio to Android sta exei ola dwrean! Prosopika den 8elw na plironw markes gia na lew parte mouri ti exw egw alla 8elw na douleuei auta pou to 8elw na kanei, me liga logia kai iphone na eixa an den to eixa kanei jailbreak ( xaxaxaxaxaxaxaxaxaxaxa mono gia auto to logo peftei katigoria apo to Android ) den 8a mou xrisimeue se tipota allo apo to na pernw tilefona kai na paizei me to slide

 

Λυπάμαι που στο λέω αλλά από προσωπική εμπειρία (κι εγώ Android έχω τώρα, λόγω έλλειψης χρημάτων) μπορώ να σου πω ότι αυτά που πλασάρονται ως free στο Android και υπόσχονται ίδια απόδοση με αντίστοιχα της Apple είναι απλά ελεεινά και τρισάθλια τόσο στο UI τους όσο και στο functionallity τους. Μην κοροϊδευόμαστε. Ο ελληνικός λαός λέει "ό,τι πληρώνεις παίρνεις" και δεν το λέει τυχαία. Α! Και ας μην ξεχνάμε ότι ΚΑΙ στο Android υπάρχουν paid-apps και rooting (το αντίστοιχο jailbreak που ισχυρίζεσαι ότι ρίχνει το iPhone σε κατηγορία).

 

Α και btw, όταν είναι να δώσω φράγκα για ένα υπερ-γαμάτο-υπολογιστή-like κινητό, είμαι διαθέσιμος να δώσω και 0.99 για μια εφαρμογή. Η τιμή του τηλεφώνου σας διώχνει από αυτό, όχι το iOS.

 

Άιντε...

Posted

Λυπάμαι που στο λέω αλλά από προσωπική εμπειρία (κι εγώ Android έχω τώρα, λόγω έλλειψης χρημάτων) μπορώ να σου πω ότι αυτά που πλασάρονται ως free στο Android και υπόσχονται ίδια απόδοση με αντίστοιχα της Apple είναι απλά ελεεινά και τρισάθλια τόσο στο UI τους όσο και στο functionallity τους. Μην κοροϊδευόμαστε. Ο ελληνικός λαός λέει "ό,τι πληρώνεις παίρνεις" και δεν το λέει τυχαία. Α! Και ας μην ξεχνάμε ότι ΚΑΙ στο Android υπάρχουν paid-apps και rooting (το αντίστοιχο jailbreak που ισχυρίζεσαι ότι ρίχνει το iPhone σε κατηγορία).

 

Α και btw, όταν είναι να δώσω φράγκα για ένα υπερ-γαμάτο-υπολογιστή-like κινητό, είμαι διαθέσιμος να δώσω και 0.99 για μια εφαρμογή. Η τιμή του τηλεφώνου σας διώχνει από αυτό, όχι το iOS.

 

Άιντε...

 

ta Android exoun epilogi stis ru8miseis gia an 8es na to kaneis unlock i lock... kai an to alla3eis den xaneis ta panta apo mesa apla epanerxete stis ergostasiakes ri8miseis. kai poiotita sta apps briskeis analoga me tous developer pou to ftiaxnoun, prosopika opos eipes kai esu oti plironeis perneis giauto den 8elw na dwsw tosa lefta gia ena uper-gamato-upologisti-like-kinito gia na trexw apps gia na akouw mousikoules i na paizw agriemena poulia kai na kounaw autaki. 8elw na to fernw sto kokkino mexri na bgazei pixels i o8oni apo ti 8ermotita tou epe3ergasti, thats all:3 ta iphones den m parexoun toso megales efarmoges

Posted

polu mprosta

apple ka8e 2 aiwnes updates kai mono akriva pragmata

magkes osoi exoun iphone oxi epidi exoun "kinitara" alla epidi mostraroun tin timi tou

telos android da best.

Posted

ta Android exoun epilogi stis ru8miseis gia an 8es na to kaneis unlock i lock... kai an to alla3eis den xaneis ta panta apo mesa apla epanerxete stis ergostasiakes ri8miseis. kai poiotita sta apps briskeis analoga me tous developer pou to ftiaxnoun, prosopika opos eipes kai esu oti plironeis perneis giauto den 8elw na dwsw tosa lefta gia ena uper-gamato-upologisti-like-kinito gia na trexw apps gia na akouw mousikoules i na paizw agriemena poulia kai na kounaw autaki. 8elw na to fernw sto kokkino mexri na bgazei pixels i o8oni apo ti 8ermotita tou epe3ergasti, thats all:3 ta iphones den m parexoun toso megales efarmoges

 

Μάλλον δεν έχεις ψαχτεί αρκετά για να συγκρίνεις κάτι άχρηστο με κάτι χρήσιμο...

 

anyway, opinions, opinions, opinios...

 

polu mprosta

apple ka8e 2 aiwnes updates kai mono akriva pragmata

magkes osoi exoun iphone oxi epidi exoun "kinitara" alla epidi mostraroun tin timi tou

telos android da best.

 

Ναι σκυλάκι μου, ναι! Έχεις δίκιο. Άκου πάντα τι σου λέει ο κολλητός σου και οι χιλιάδες android developers που μιλάς!

 

Cheers!

Posted

iPhone-4S-hands-on-2.jpg

 

Το κινητό που ετοιμάζομαι να γράψω πριν από τέσσερα χρόνια αποτελούσε μια κατηγορία από μόνο του. Το 2007 που βγήκε το πρώτο iPhone, έσπασε τη βαρεμάρα των πλήκτρων. Όλοι οι υπόλοιποι κατασκευαστές από τη Nokia και τη Sony Ericsson μέχρι την LG και τη Samsung, ακολούθησαν. Είχε ένα επαναστατικό λειτουργικό σύστημα υπάκουο στην αφή και ήταν η πρώτη φορά στην ιστορία, που χρησιμοποιήθηκε σε συσκευή ευρείας παραγωγής οθόνη capacitive. Κάτι σαν PDA αλλά με ευχρηστία συμβατικού τηλεφώνου. Το μειονέκτημα; Το «κλειστό» λειτουργικό. Αυτό. Τέλος. Από εκεί και πέρα ήταν ένα κινητό που έκανε τα πάντα να μοιάζουν εξωφρενικά απλά. Ένα smartphone για dummies… Τώρα μπορείς να καταλάβεις γιατί έκανα αυτόν τον πρόλογο. Γιατί το 4S, εν έτει 2011, έχει όλη τη μαγεία του πρώτου iPhone, έχοντας πάει ταυτόχρονα το concept πολλά βήματα μπροστά. Επίσης, όντας κάτοχος εδώ και μερικές ημέρες του νεότερου κινητού της Apple, έλυσα πρόσφατα μια υπαρξιακή μου απορία: γιατί η Apple δεν ανακοίνωσε εξαρχής το iPhone 5 να τελειώνουμε; Θα μου πεις, μα καλά, τόσο άσχετος είσαι; Το τέσσερα πουλάει ακόμη σαν τρελό, η πλειοψηφία αδιαφορεί επιδεικτικά για τεχνικά και επιδόσεις, το loyalty των πελατών της Apple σκοτώνει, θέλει και ανάλυση; Πως λένε ότι ομάδα που κερδίζει δεν την αλλάζεις; Σε ένα forum μάλιστα είδα το εύστοχο ότι «αρκούσε να ανανεωθεί το iOS και η Apple θα μπορούσε να λανσάρει το προϊόν της από την αρχή». Τέσσερα εκατομμύρια 4S διατέθηκαν τις τρεις πρώτες ημέρες κυκλοφορίας του και αυτό από μόνο του λέει κάτι. Γράψε «fastest ever selling product» στο Google και δες γιατί την ώρα που πληκτρολογώ τις γραμμές αυτές δε βρίσκει η μύτη μου στο πληκτρολόγιο, αλά Πινόκιο…

 

iPhone-4S-hands-on-3.jpg

 

Κανονικά όταν παρουσιάζεται ένα καινούργιο smartphone, αυτό που κάνουν οι περισσότεροι άνθρωποι είναι να διαβάσουν πρώτα τις δοκιμές που έχουν γραφτεί και μετά να αποφασίσουν. Το θέμα είναι ότι τουλάχιστον για το σχεδιασμό, δεν υπάρχουν πολλά που μπορείς να πεις για την άρτι αφιχθείσα συσκευή. Επειδή είναι copy-paste η παλιά. Δηλαδή είναι άμεσα αναγνωρίσιμη από ολόκληρο τον τεχνολογικό πλανήτη, ενώ ενδεικτικό είναι ότι ακόμη και στις χώρες που δε διατίθεται επίσημα, κυκλοφορεί τουλάχιστον μια μαϊμού version… Παρόλα αυτά, δεν έχει αλλάξει τίποτα. Πως να το πω διαφορετικά, τα iPhone 4 και 4S μοιάζουν σαν δυο σταγόνες νερό. Θα μπορούσε να μιλήσει κανείς για το βάρος που έφτασε αισίως στα 140 γραμμάρια από τα 137 του παρελθόντος. Ά, και για το πλήκτρο που απενεργοποιεί τον ήχο κλήσης το οποίο άλλαξε θέση. Πως είναι το CDMA iPhone που κυκλοφόρησε στις αρχές του έτους στην Αμερική; Έ, αυτό. Η «ψαγμένη» λεπτομέρεια για την φιλολογία της καφετέριας ειναι ότι το S έχει δυο επιπλέον εγκοπές στο επάνω κομμάτι του πλαισίου, ενδεικτικό ότι η κεραία έχει μετατοπιστεί. Για να μην την πάθεις λοιπόν σαν αρχάριος, αν σκοπεύεις να αποκτήσεις σύντομα την ανανεωμένη έκδοση πρόσεξε τα εξής: εφόσον οι θήκες που έχεις ήδη στην κατοχή σου έχουν κενό ανάμεσα στα πλήκτρα, μπορείς να τις χρησιμοποιήσεις και στο νέο τηλέφωνο. Το αυθεντικό bumper θα ταιριάξει μόνο αν η αρχική του συσκευασία είχε λευκό backround (και σιγά τώρα μη δεν την έχεις πετάξει…), γιατί από το Μάρτιο και μετά, η Apple ανασχεδίασε το αξεσουάρ ώστε να ταιριάζει στο Verizon iPhone. Αυτά για το κέλυφος. Πάντως το home key παραμένει ίδιο με αυτό στο τεσσάρι, οπότε μάντεψε τι πρόκειται να χαλάσει γρήγορα στο S…

 

iPhone-4S-hands-on-4.jpg

Παρατήρησε τη διαφορά στο ύψος του πλήκτρου που απενεργοποιεί τον ήχο. Αριστερά το iPhone 4, δεξιά το iPhone 4S

 

Αν ψάχνεις για extreme τεχνικά και ριζικές βελτιώσεις στο hardware, το S θα σε απογοητεύσει. Ξεκάθαρα. Αρκέσου στο γεγονός ότι ο Α5 επεξεργαστής, που μετάγγισε -επιτέλους- η Apple στο νέο τηλέφωνο, κάνει θαύματα. Έστω και αν είναι υποχρονισμένος στα 800MHz… Τα διπύρηνα chipsets ακολουθούν συνήθως τη λογική του marketing αλλά αυτό εδώ είναι για case study. Δηλαδή πως γίνεται ένα χρόνο μετά την κυκλοφορία του να σαρώνει στα συγκριτικά; Αν το iOS 4 ήταν smooth στο «τεσσάρι», το iOS 5 στο «ες» μοιάζει να έχει πάρει Red Bull. Πετάει… Μπορεί στο on/off να μη δεις διαφορά, και σε κάποια μενού η αίσθηση να είναι φτυστή τέσσερα, αλλά το rendering στα γραφικά σκοτώνει, η διαφορά σε απαιτητικά παιχνίδια είναι χαοτική και εσύ μένεις να απολαμβάνεις τη χρήση ενός κινητού που ζει και αναπνέει για τις εφαρμογές. Το μόνο που δεν καταλαβαίνωι είναι το αψυχολόγητο με την επιλογή της μνήμης RAM που σταματάει κλασικά στα 512MB. Δηλαδή πόσο θα κόστιζε ένα κινέζικο ολοκληρωμένο στο 1GB; Παρεμπιπτόντως μόλις αποκάλυψα ένα χαρακτηριστικό του επερχόμενου iPhone πέντε…

 

Επίσης ακούγεται κάπως τη στιγμή που η Apple προσφέρει 5GB online αποθηκευτικού χώρου μέσω iCloud, να διαθέτει για πρώτη φορά σε iPhone νέα εκδοχή στα 64GB. Γιατί με απλά μαθηματικά προκύπτει πως ακόμη και η «φτηνή έκδοση»αγγίζει σε χωρητικότητα τα 21GB (16+5), άρα είναι μάλλον περιττό να επενδύσεις 900 τόσα ευρώ σε ένα κινητό που είναι μονίμως online και σου δίνει αμέτρητες λύσεις storage -οι περισσότερες εκ των οποίων δωρεάν. Αστεία, αστεία ίσα που προλαβαίνεις να μπεις στο box.net και να εκμεταλλευτείς την προσφορά με τα 50GB for free.

 

iPhone-4S-hands-on-5.jpg

Καλά βλέπεις. Είναι ο καιρός στο Hong Kong. Έχει και καλά το επάγγελμα...

 

Πάντως έχουν γίνει και άλλες σημαντικές αλλαγές. Όπως στον δέκτη που εκτός του ότι είναι πλέον παγκόσμιος (ταυτόχρονη υποστήριξη δικτύων CDMA και GSM), προσφέρει μεγαλύτερες ταχύτητες λήψης δεδομένων (από 7,2 Mpbs πήγε στα 14,4), ενώ βελτιώθηκε δραματικά στη λήψη σήματος. Ναι, το iPhone 4S δηλώνει απαλλαγμένο από το σύνδρομο του «death grip». Πιάστο το όπως θέλεις, δεν πρόκειται να χάσεις κλήσεις. Έστω αν και αυτό έπρεπε να θεωρείται από την πρώτη στιγμή δεδομένο… Ενιγούει, όπως λένε και στο χωριό μου. Τώρα θα μου πεις όλα αυτά δεν επηρέασαν τον ευαίσθητο τομέα της αυτονομίας; Ναι τον επηρέασαν, προς το χειρότερο. Που πας με 1.430mAh μπαταρία και διπύρηνο επεξεργαστή; Προσωπικά περισσότερο από μια ημέρα αυτονομίας, ιδίως αν χρησιμοποιώ εντατικά τη συσκευή. Η δραματική αλλαγή εντοπίζεται ωστόσο στους χρόνους αναμονής. Εκατό ώρες λιγότερες ανακοινώνει η Apple, κάπου στο 1/3 σε σχέση με το προηγούμενο τηλέφωνο να υπολογίζεις εσύ.

 

iPhone-4S-hands-on-6.jpg

Μισή ίντσα παραπάνω δεν θα έβλαπτε κανέναν. Να τι άλλο μπορείς να περιμένεις από το επόμενο iPhone...

 

Όσον αφορά στην οθόνη το iPhone 4S δεν έχει καμία διαφορά με το τέσσερα. Για να σου κάνω όμως ένα refresh στα τεχνικά το S έχει τη γνωστή retina display της LG με ανάλυση 960×640 pixels, η οποία ήταν για καιρό η υψηλότερη του κόσμου, μέχρι που ανακοινώθηκαν τα Samsung Galaxy Nexus και Note. Παρόλα αυτά συνεχίζει να κρατάει τα σκήπτρα στο pixel density με το κοσμοϊστορικό 326ppi (pixels per inch), έναντι των 316 του νέου Google phone. Επίσης ο λόγος αντίθεσης του πανελ αγγίζει το επικό 800:1, που σημαίνει ότι οι πληροφορίες είναι ορατές ακόμη και υπό γωνίες σχεδόν 90 μοιρών… Στα ίδια κορυφαία επίπεδα παραμένει και η αναγνωσιμότητα (ακόμη και κάτω από δυνατό φως), ενώ για όσους κακολογούν την οθόνη για το μικρό της μέγεθος (3,5 ίντσες από την εποχή του πρώτου 2G), υπάρχει πάντα το αντεπιχείρημα ότι μπορεί να την αξιοποιήσει κανείς με ένα δάχτυλο, και συγκεκριμένα με τον αντίχειρα, τη στιγμή που ο ανταγωνισμός θέλει ελεύθερα και τα δύο χέρια. Γράψε πάντως ότι όπως και στο τεσσάρι έτσι και εδώ, η οθόνη που τοποθετείται στο iPhone 4S διαφέρει από συσκευή σε συσκευή. Με άλλα λόγια η δική σου μπορεί να είναι ελαφρώς κόκκινη, τη στιγμή που του γείτονα είναι κίτρινη και του κολλητού μοιάζει ψυχρή – έντονο φαινόμενο σε iPhone λευκού χρώματος. Τώρα μην με ρωτήσεις πως, αλλά συμβαίνει.

 

iPhone_4S_hands-on_1.jpg

Παρατήρησε το κόψιμο στο επάνω μέρος του πλαισίου. Δεν υπήρχε στο τέσσερα. Μόνο αυτό γιατί κατά τα άλλα οι συσκευές είναι καρμπόν

 

Έφτασε λοιπόν η στιγμή της κάμερας… Τα 8 megapixel ακούγονται πολλά για προϊόν της Apple που δεν έχει εκπαιδεύσει το κοινό σε τρικ εντυπωσιασμού, κάποιες φορές όμως τον λόγο τον έχει το μάρκετινγκ. Σε κάθε περίπτωση οι επιδόσεις της κάμερας του 4S σε σχέση με τον προκάτοχο είναι καλύτερες. Ο φακός βγάζει τον καλύτερο του εαυτό είτε μιλάμε για τη λήψη φωτογραφιών, είτε βίντεο, το οποίο πλέον έχει σκαρφαλώσει στα 1080p στα 30 καρέ. Μάλιστα, υπάρχει η δυνατότητα να χρησιμοποιήσεις το πλήκτρο με το σύμβολο «+» (που σε όλες τις άλλες περιπτώσεις αυξάνει την ένταση του ήχου), για να πραγματοποιήσεις μια λήψη, ενώ οι προεπιλεγμένες ρυθμίσεις προσφέρουν σχεδόν στο 100% των περιπτώσεων το καλύτερο δυνατό αποτέλεσμα. Αν επρέπε πάντως να το συγκρίνω τον ανταγωνισμό τότε μάλλον θα έλεγα ότι το Samsung Galaxy S II προσφέρει ελαφρώς καλύτερα αποτελέσματα, αν και επιφυλάσσομαι μέχρι το αναλυτικό συγκριτικό που θα δεις από το digitallife σύντομα.

 

Ναι το ξέρω ότι ξέρεις καλά το iOS λειτουργικό, αλλά να σου και εγώ με τη σειρά μου, ότι με εξαίρεση τη λειτουργία Siri το πέντε προσφέρει πολλά νέα χαρακτηριστικά, αλλά αυτό που πρέπει κατά βάση να θυμάσαι είναι ότι το σύστημα ειδοποιήσεων έχει αλλάξει δραματικά. Ή ακόμη καλύτερα έκανε για πρώτη φορά την εμφάνιση του… Πλέον μπορείς να βλέπεις αναπάντητες κλήσεις, εισερχόμενα μηνύματα, ενημερώσεις για κοινωνικά δίκτυα απευθείας από την οθόνη ξεκλειδώματος. Παρόλα αυτά οι όποιες βλακώδεις ελλείψεις παρέμειναν, όπως η απουσία αναφοράς παράδοσης στα SMS (εντάξει, «δεν υπάρχει»…), η δυνατότητα ανταλλαγής αρχείων μέσω Bluetooth (συνεχίζει να χρησιμοποιείται αποκλειστικά για audio), αλλά και το γεγονός ότι η συσκευή δεν υποστηρίζει Adobe Flash, άρα δεν μπορείς να δεις ένα μεγάλο αριθμό ιστοσελίδων. Ευτυχώς το πρόβλημα με την υποχρεωτική σύνδεση της συσκευής με το iTunes λύθηκε οριστικά, αν και παραμένει εκείνο της περιορισμένης παραμετροποίησης, που σημαίνει ότι αν θέλεις να εκμεταλλευτείς το hardware της συσκευής στο έπακρο, θα πρέπει να καταφύγεις στη λύση του jailbreak.

 

Γενικά αυτό που συμβαίνει με την περίπτωση του iPhone είναι μια καλή περίπτωση που πρέπει να διδάσκεται στα πανεπιστήμια. Την έχουν στα σεμινάρια για το πως κρατάς την δημοτικότητα ενός προϊόντος ψηλά, τη στιγμή που τα τεχνικά του δεν είναι on par με την εποχή τους. Ή αν προτιμάς, έχουμε ένα κινητό που παρουσιάζει ελλείψεις, αλλά να είναι ελκυστικό λόγω των αμέτρητων εφαρμογών, της απροβλημάτιστης χρήσης και του σήματος στο καπάκι – έστω για κάποιους…

 

Να σου απαντήσω λοιπόν και στην κρίσιμη ερώτηση… Αξίζει η αναβάθμιση αν είσαι κάτοχος iPhone 4 σε «ες»; Ξεκάθαρα όχι. Είναι πολλά τα λεφτά Άρη, ιδίως σε μια εποχή που όλοι σφίγγουν τη ζώνη και πρώτο θέμα στα μίντια παραμένει το μνημόνιο και το σενάριο χρεοκοπίας. Περιμένε καλύτερα για το πεντάρι. Αν σου έχουν μείνει μέχρι τότε λεφτά…

 

 

Specs: Apple iPhone 4S (Αναμένεται)

 

Λειτουργικό iOS5

Επεξεργαστής Dual-core 1,4GHz

Μνήμη 512MΒ RAM, 16/32.64 GB storage

Οθόνη 3,5″, TFT αφής, 640×960 pixels

Κάμερα 0,3MP (πρόσθια), 8MP (οπίσθια) με LED φλας

Συνδεσιμότητα HSDPA, CDMA, Bluetooth, Wi-Fi, A-GPS, είσοδος ήχου 3,5 χιλ.

Αυτονομία 200 ώρες αναμονή, 840 λεπτά ομιλία

Διαστάσεις 115,2×58,6×9,3 χιλ.

Βάρος 140 γρ.

 

Δες τώρα και το βίντεο…

 

!

 

 

 

Posted

milame gia to simera blane...

simera ta iphone exoun minei pisw

an nomizeis pws oxi sto logismiko

sto iliko pio pisw apo prin 2 xronia+

vgikan 3d kai megaliteres o8ones kameres flash megales mpataries

kai esu mou les gia iphone pou twra 8imi8ike oti uparxei kamera anw twn 5 MP

to mono kalitero eixe iphone 4 einai tin analisi i opia exei minei pali pisw se sxesi me ta nea smartphones kai ta nea upcoming...

pote 8a valei 3d? pote den 8a xriazete alli SIM pote 8a riksei tin timi se epipeda agoras gia olous pote 8a kanei pio an8ektiko to iliko kataskevis oxi mono tis o8onis alla kai olo to kinito ama pesei mia fora katw egine kommatia 8ripsala

pote!!!!!!!!!!!

akoma kai to flexible glass pou i8elan na valoun to exei idi to HTC sensation

 

ena uper arketo smarthphone

http://www.samsung.com/global/microsite/galaxynote/note/index.html?type=find

Posted

milame gia to simera blane...

simera ta iphone exoun minei pisw

an nomizeis pws oxi sto logismiko

sto iliko pio pisw apo prin 2 xronia+

vgikan 3d kai megaliteres o8ones kameres flash megales mpataries

kai esu mou les gia iphone pou twra 8imi8ike oti uparxei kamera anw twn 5 MP

to mono kalitero eixe iphone 4 einai tin analisi i opia exei minei pali pisw se sxesi me ta nea smartphones kai ta nea upcoming...

pote 8a valei 3d? pote den 8a xriazete alli SIM pote 8a riksei tin timi se epipeda agoras gia olous pote 8a kanei pio an8ektiko to iliko kataskevis oxi mono tis o8onis alla kai olo to kinito ama pesei mia fora katw egine kommatia 8ripsala

pote!!!!!!!!!!!

akoma kai to flexible glass pou i8elan na valoun to exei idi to HTC sensation

 

ena uper arketo smarthphone

http://www.samsung.com/global/microsite/galaxynote/note/index.html?type=find

 

Αδερφέ άμα είναι κουβαλάω και το mbp μαζί μου, δεν τρέχει θέμα. Όσο για αυτά που ανέφερες ότι δεν έχει η Apple μάλλον γελιέσαι γιατί από προσωπική μου εμπειρία έχω δει και πόσο ανθεκτικό υλικό έχουν, την ποιότητα κατασκευής κτλπ. Μην είναι μπούφος σε παρακαλώ...

 

Σκέψου πριν γράψεις. Σημασία βρε, έχει να έχει 3D οθόνη ή να σε ικανοποιεί το UI του και οι δυνατότητες που σου προσφέρει;

 

Άιντε πρωί πρωί πάλι μαλακίες... -.-" (μόλις ξύπνησα)

Posted

gt einai kako na exeis perissoteres dinatotites?

3 filoi mou exoun iphone to 4 epese kai espase i o8oni

sto 3 espase i perioxi dipla apo to pliktro kai ston allo i pisw meria

emena to desire hd 6 fores exei pesi kai 3i fora ekane grantzounia ligo efige to xrwma se mia perioxi

oi alloi dinoun 50arika gia 1 pesimo kai egw tpt

oso gia an8ektiko iliko auto enow...

ase tin poiotita

i poiotita fenete otan den kolaei kai auta ola ta kinita exoun poiotita an den einai kinezikes antigrafes kai moufes

8es na mou peis oi alles megales etairies den exoun piotita

plirwneis stin apple tin leksi poiotita xoaoxaox

na sou pw ti plirwneis? aksiopistia plirwneis dld sony ericsson sta 1k kommatia 2 einai skarta vgikan strava

enw stin apple kanena apla den 8a tixei na xrisimopiisis tin egkiisi

Posted

Το Android δεν είναι τίποτα άλλο παρά μία φτηνή απομίμηση του iOS.Και η αλήθεια τσούζει.

Πες τα.

Επειδή έχετε οι περισσότεροι από σας Android, δεν το κάνει και καλύτερο.

Posted

Φήμες θέλουν το πολυαναμενόμενο iPhone 4S να κυκλοφορεί επιτέλους στην Ελλάδα.

 

Στις 11 Νοεμβρίου όπως δείχνουν όλες οι πληροφορίες, έρχεται στην Ελλάδα, το νέο smartphone της Apple, iPhone 4S.

 

Όλοι λοιπόν οι φανατικοί της Apple, θα μπορούν σε λίγες μέρες να αποκτήσουν το νεο iPhone 4S σε τιμές που θα ξεκινούν από 669€ και θα φτάνουν μέχρι τα 889€.

 

Συγκεκριμένα το μοντέλο των 16GB αναμένεται να κοστίζει 669€ το μοντέλο των 32GB θα κοστίζει 789€ και τέλος 889€ θα κοστίζει το μοντέλο των 64GB.

 

Για την ώρα δεν έχει γίνει γνωστό ποια μοντέλα θα είναι άμεσα διαθέσιμα στο κοινό καθώς και το αν θα είναι διαθέσιμα και στα δύο χρώματα (λευκό - μαύρο)

 

Τέλος, με την κυκλοφορία του νέου iPhone 4S στην ελληνική αγορά η τιμή του iPhone 4 αναμένεται να πέσει, το πόσο όμως ακόμα δεν έχει γίνει γνωστό όμως αν πάρουμε για παράδειγμα την πτώση που είχε το iPhone 3GS με την κυκλοφορία του iPhone 4 τότε το ποσό της μείωσης θα είναι κοντά στα 100€.

 

A re , thelw na dw pragmatika posoi tha kratisun ta android otan paei sta 550 to modelo ton 16gb sto 4.

 

Posted

Φήμες θέλουν το πολυαναμενόμενο iPhone 4S να κυκλοφορεί επιτέλους στην Ελλάδα.

 

Στις 11 Νοεμβρίου όπως δείχνουν όλες οι πληροφορίες, έρχεται στην Ελλάδα, το νέο smartphone της Apple, iPhone 4S.

 

Όλοι λοιπόν οι φανατικοί της Apple, θα μπορούν σε λίγες μέρες να αποκτήσουν το νεο iPhone 4S σε τιμές που θα ξεκινούν από 669€ και θα φτάνουν μέχρι τα 889€.

 

Συγκεκριμένα το μοντέλο των 16GB αναμένεται να κοστίζει 669€ το μοντέλο των 32GB θα κοστίζει 789€ και τέλος 889€ θα κοστίζει το μοντέλο των 64GB.

 

Για την ώρα δεν έχει γίνει γνωστό ποια μοντέλα θα είναι άμεσα διαθέσιμα στο κοινό καθώς και το αν θα είναι διαθέσιμα και στα δύο χρώματα (λευκό - μαύρο)

 

Τέλος, με την κυκλοφορία του νέου iPhone 4S στην ελληνική αγορά η τιμή του iPhone 4 αναμένεται να πέσει, το πόσο όμως ακόμα δεν έχει γίνει γνωστό όμως αν πάρουμε για παράδειγμα την πτώση που είχε το iPhone 3GS με την κυκλοφορία του iPhone 4 τότε το ποσό της μείωσης θα είναι κοντά στα 100€.

 

A re , thelw na dw pragmatika posoi tha kratisun ta android otan paei sta 550 to modelo ton 16gb sto 4.

 

Ρε απλό είναι.

Επειδή είναι πανάκριβο, προτιμάνε να πάρουν κάτι πιο φτηνό με Android και μετά θέλουν να μας πείσουν ότι το Android>iOS.

 

Αν τους έλεγες όμως σου δίνω τζάμπα ένα iPhone ή ένα άλλο με Android, για μάντεψε την επιλογή τους..

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.




  • Posts

    • [Release] Solo PvP Zone System 🔹 Compatible with: aCis 401+ 📜 Features: ✅ Automatic Exit on Restart: Players are removed from the zone if a restart occurs or logout. ✅ Custom Exit Command: Players can exit the Solo Zone with the voice command .exit. ✅ Teleport NPC Command: new bypass solopvp for gatekeeper. ✅ Random Name Generator: Generates random names. ✅ PvP Flag: The players are flagged within this zone.   xml preview & java code backup code -> https://pastebin.com/974V2p2p   SoloZone.xml <?xml version="1.0" encoding="UTF-8"?> <list> <zone shape="NPoly" minZ="-5200" maxZ="-4680"><!-- Frintezza Solo Zone --> <stat name="name" val="Solo PvP Zone" /> <stat name="locs" val="174244,-89089,-5112;174260,-86881,-5112;173184,-88090,-5112;175309,-88018,-5112;174231,-88019,-5112;175136,-88828,-5104;174962,-87025,-5104;173149,-87142,-5104;173470,-88908,-5112" /> <stat name="restrictedClasses" val="15,16,97" /> <node x="172031" y="-90127"/> <node x="176428" y="-90089"/> <node x="176428" y="-74051"/> <node x="172057" y="-74108"/> </zone> </list> SoloZone Code: diff --git a/java/net/sf/l2j/gameserver/taskmanager/SoloZoneTaskManager.java b/java/net/sf/l2j/gameserver/taskmanager/SoloZoneTaskManager.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/taskmanager/SoloZoneTaskManager.java @@ -0,0 +1,98 @@ +package net.sf.l2j.gameserver.taskmanager; + +import java.security.SecureRandom; +import java.util.ArrayList; +import java.util.logging.Logger; + +import net.sf.l2j.commons.random.Rnd; + +import net.sf.l2j.gameserver.data.manager.ZoneManager; +import net.sf.l2j.gameserver.enums.ZoneId; +import net.sf.l2j.gameserver.handler.voicecommandhandlers.VoiceExitSoloZone; +import net.sf.l2j.gameserver.model.World; +import net.sf.l2j.gameserver.model.actor.Player; +import net.sf.l2j.gameserver.model.location.Location; +import net.sf.l2j.gameserver.model.zone.type.SoloZone; + + +/** + * @author MarGaZeaS + */ +public class SoloZoneTaskManager implements Runnable { + + private static final Location EXIT_LOCATION = VoiceExitSoloZone.getExitLocation(); // Λαμβάνουμε την έξοδο από το VoiceExitSoloZone + + @Override + public void run() + { + // Διασχίζουμε όλους τους παίκτες του κόσμου + for (Player player : World.getInstance().getPlayers()) + { + // Ελέγχουμε αν ο παίκτης είναι στο SoloZone + if (player.isInsideZone(ZoneId.SOLO)) + { + // Μεταφέρουμε τον παίκτη στην έξοδο + player.teleportTo(EXIT_LOCATION.getX(), EXIT_LOCATION.getY(), EXIT_LOCATION.getZ(), 0); + player.sendMessage("The server is restarting, you have been moved out of the Solo Zone."); + } + } + } + + private int _id; + + private static final Logger _log = Logger.getLogger(SoloZoneTaskManager.class.getName()); + private static final ArrayList<String> _rndNames = new ArrayList<>(); + private static final int RANDOM_NAMES = 500; + private static final String CHARS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; + private int _playersInSoloZone = 0; + + public int getPlayersInside() { + return _playersInSoloZone; + } + + public void setPlayersInside(int val) { + _playersInSoloZone = val; + } + + public SoloZoneTaskManager() { + _log.info("Solo Zone System: Loading..."); + for (int i = 0; i < RANDOM_NAMES; i++) { + String name = generateName(); + _rndNames.add(name); + _log.info("Generated name: " + name); + } + _log.info("Solo Zone System: Loaded " + _rndNames.size() + " names."); + } + + public String getAName() { + if (_rndNames.isEmpty()) { + _log.warning("SoloZoneManager: No random names available."); + return "Unknown"; + } + return _rndNames.get(Rnd.get(5, RANDOM_NAMES - 5)); + } + + private static String generateName() { + SecureRandom rnd = new SecureRandom(); + StringBuilder sb = new StringBuilder(15); + for (int i = 0; i < 15; i++) { + sb.append(CHARS.charAt(rnd.nextInt(CHARS.length()))); + } + return sb.toString(); + } + + public int getZoneId() + { + return _id; + } + + public final static SoloZone getCurrentZone() { + return ZoneManager.getInstance().getAllZones(SoloZone.class) + .stream() + .findFirst() // Επιστρέφει την πρώτη SoloZone (αν υπάρχει μόνο μία) + .orElse(null); + } + + public static SoloZoneTaskManager getInstance() { + return SingletonHolder._instance; + } + + private static class SingletonHolder { + private static final SoloZoneTaskManager _instance = new SoloZoneTaskManager(); + } +} diff --git a/aCis_gameserver/java/net/sf/l2j/gameserver/taskmanager/PvpFlagTaskManager.java b/aCis_gameserver/java/net/sf/l2j/gameserver/taskmanager/PvpFlagTaskManager.java index a707ce5..d247e2e 100644 --- a/aCis_gameserver/java/net/sf/l2j/gameserver/taskmanager/PvpFlagTaskManager.java final Player player = entry.getKey(); final long timeLeft = entry.getValue(); + if(player.isInsideZone(ZoneId.SOLO)) + continue; if(player.isInsideZone(ZoneId.BOSS)) continue; // Time is running out, clear PvP flag and remove from list. if (currentTime > timeLeft) diff --git a/aCis_gameserver/java/net/sf/l2j/gameserver/network/clientpackets/RequestCharacterCreate.java b/aCis_gameserver/java/net/sf/l2j/gameserver/network/clientpackets/RequestCharacterCreate.java index a707ce5..d247e2e 100644 +++ b/aCis_gameserver/java/net/sf/l2j/gameserver/network/clientpackets/RequestCharacterCreate.java if (Config.ALLOW_FISH_CHAMPIONSHIP) FishingChampionshipManager.getInstance(); + if (Config.ENABLE_STARTUP) + StartupManager.getInstance(); diff --git a/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminMaintenance.java b/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminMaintenance.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminMaintenance.java if (!st.hasMoreTokens()) { sendHtmlForm(player); return; } try { switch (st.nextToken()) { case "shutdown": + SoloZoneTaskManager exitTask = new SoloZoneTaskManager(); + ThreadPool.schedule(exitTask, 0); Shutdown.getInstance().startShutdown(player, null, Integer.parseInt(st.nextToken()), false); break; case "restart": + exitTask = new SoloZoneTaskManager(); + ThreadPool.schedule(exitTask, 0); Shutdown.getInstance().startShutdown(player, null, Integer.parseInt(st.nextToken()), true); break; case "abort": Shutdown.getInstance().abort(player); break; diff --git a/java/net/sf/l2j/gameserver/handler/voicecommandhandlers/VoiceExitSoloZone.java b/java/net/sf/l2j/gameserver/handler/voicecommandhandlers/VoiceExitSoloZone.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/handler/voicecommandhandlers/VoiceExitSoloZone.java +package net.sf.l2j.gameserver.handler.voicecommandhandlers; + +import net.sf.l2j.commons.pool.ThreadPool; + +import net.sf.l2j.gameserver.enums.ZoneId; +import net.sf.l2j.gameserver.handler.IVoiceCommandHandler; +import net.sf.l2j.gameserver.model.actor.Player; +import net.sf.l2j.gameserver.model.location.Location; +import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUse; + +/** + * Handles the voice command for exiting the Solo Zone with delay and effects. + * + * @author MarGaZeaS + */ +public class VoiceExitSoloZone implements IVoiceCommandHandler +{ + private static final String[] VOICE_COMMANDS = + { + "exit" + }; + + // Default location to teleport players when exiting the Solo Zone + private static final Location EXIT_LOCATION = new Location(81318, 148064, -3464); // Replace with your desired coordinates + + // Προσθήκη της μεθόδου για να πάρουμε την τοποθεσία εξόδου + public static Location getExitLocation() { + return EXIT_LOCATION; + } + + @Override + public void useVoiceCommand(Player player, String command) + { + if (command.equalsIgnoreCase("exit")) + { + if (!player.isInsideZone(ZoneId.SOLO)) + { + player.sendMessage("You are not inside the Solo Zone."); + return; + } + + // Notify the player about the delay + player.sendMessage("You will be teleported out of the Solo Zone in 2 seconds."); + + // Cast skill effect (Skill ID: 2100, Level: 1) + player.broadcastPacket(new MagicSkillUse(player, player, 2100, 1, 2000, 0)); + + // Schedule the teleportation after a 2-second delay + ThreadPool.schedule(() -> { + // Teleport the player to the designated exit location + player.teleportTo(EXIT_LOCATION.getX(), EXIT_LOCATION.getY(), EXIT_LOCATION.getZ(), 0); + + // Inform the player + player.sendMessage("You have exited the Solo Zone."); + }, 2000); // Delay in milliseconds (2000ms = 2 seconds) + } + } + + @Override + public String[] getVoiceCommandList() + { + return VOICE_COMMANDS; + } +} diff --git a/java/net/sf/l2j/gameserver/handler/VoiceCommandHandler.java b/java/net/sf/l2j/gameserver/handler/VoiceCommandHandler.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/handler/VoiceCommandHandler.java public class VoiceCommandHandler { private final Map<String, IVoiceCommandHandler> _entries = new HashMap<>(); protected VoiceCommandHandler() { ............ ............ + registerHandler(new VoiceExitSoloZone()); } public void registerHandler(IVoiceCommandHandler handler) { for (String command : handler.getVoiceCommandList()) _entries.put(command, handler); } diff --git a/java/net/sf/l2j/gameserver/model/actor/Npc.java b/java/net/sf/l2j/gameserver/model/actor/Npc.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/model/actor/Npc.java else if (command.startsWith("Chat")) { int val = 0; try { val = Integer.parseInt(command.substring(5)); } catch (final IndexOutOfBoundsException ioobe) { } catch (final NumberFormatException nfe) { } showChatWindow(player, val); + ) + else if (command.startsWith("solopvp")) + { + SoloZoneTaskManager.getInstance(); + player.teleportTo(SoloZoneTaskManager.getCurrentZone().getLoc(), 25); + } else if (command.startsWith("Link")) { final String path = command.substring(5).trim(); if (path.indexOf("..") != -1) return; final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId()); html.setFile("data/html/" + path); html.replace("%objectId%", getObjectId()); player.sendPacket(html); } diff --git a/java/net/sf/l2j/gameserver/network/clientpackets/RequestRestartPoint.java b/java/net/sf/l2j/gameserver/network/clientpackets/RequestRestartPoint.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/network/clientpackets/RequestRestartPoint.java // Fixed. - else if (_requestType == 4) - { - if (!player.isGM() && !player.isFestivalParticipant()) - return; - - loc = player.getPosition(); - } + if (_requestType == 4) + { + // Έλεγχος αν ο παίκτης δεν είναι GM, δεν είναι μέρος του φεστιβάλ και δεν είναι στην Solo Zone + if (!player.isGM() && !player.isFestivalParticipant() && !player.isInsideZone(ZoneId.SOLO)) + { + return; + } + + SoloZoneTaskManager.getInstance(); + SoloZone currentZone = SoloZoneTaskManager.getCurrentZone(); + if (currentZone != null && currentZone.getLoc() != null) + { + // Αν υπάρχει ζώνη και οι τοποθεσίες δεν είναι κενές, χρησιμοποιούμε τυχαία τοποθεσία από την ζώνη + loc = currentZone.getLoc(); + } else + { + // Διαφορετικά, κάνουμε respawn στην τρέχουσα θέση του παίκτη + loc = player.getPosition(); + } + } diff --git a/java/net/sf/l2j/gameserver/network/clientpackets/RequestRestart.java b/java/net/sf/l2j/gameserver/network/clientpackets/RequestRestart.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/network/clientpackets/RequestRestart.java if (player.isFestivalParticipant() && FestivalOfDarknessManager.getInstance().isFestivalInitialized()) { player.sendPacket(SystemMessageId.NO_RESTART_HERE); sendPacket(RestartResponse.valueOf(false)); return; } + if (player.isInsideZone(ZoneId.SOLO)) + { + player.sendMessage("You cannot restart your character while in Solo Zone. Use .exit to leave"); + player.setFakeName(null); + sendPacket(RestartResponse.valueOf(false)); + return; + } player.removeFromBossZone(); diff --git a/java/net/sf/l2j/gameserver/network/clientpackets/Logout.java b/java/net/sf/l2j/gameserver/network/clientpackets/Logout.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/network/clientpackets/Logout.java player.removeFromBossZone(); player.logout(true); } } + + if (player.isInsideZone(ZoneId.SOLO)) + { + player.sendMessage("You cannot logout or restart your character while in Solo Zone. Use .exit to leave"); + player.setFakeName(null); + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } + player.removeFromBossZone(); player.logout(true); } } diff --git a/java/net/sf/l2j/gameserver/model/zone/type/SoloZone.java b/java/net/sf/l2j/gameserver/model/zone/type/SoloZone.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/model/zone/type/SoloZone.java +package net.sf.l2j.gameserver.model.zone.type; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import net.sf.l2j.commons.random.Rnd; + +import net.sf.l2j.Config; +import net.sf.l2j.gameserver.enums.MessageType; +import net.sf.l2j.gameserver.enums.ZoneId; +import net.sf.l2j.gameserver.handler.voicecommandhandlers.VoiceExitSoloZone; +import net.sf.l2j.gameserver.model.World; +import net.sf.l2j.gameserver.model.actor.Creature; +import net.sf.l2j.gameserver.model.actor.Player; +import net.sf.l2j.gameserver.model.location.Location; +import net.sf.l2j.gameserver.model.zone.type.subtype.ZoneType; +import net.sf.l2j.gameserver.network.SystemMessageId; +import net.sf.l2j.gameserver.network.serverpackets.EtcStatusUpdate; +import net.sf.l2j.gameserver.taskmanager.PvpFlagTaskManager; +import net.sf.l2j.gameserver.taskmanager.SoloZoneTaskManager; + +/** + * @author MarGaZeaS + * + */ +public class SoloZone extends ZoneType +{ + private String _name; + private List<Location> _locations = new ArrayList<>(); + + public SoloZone(int id) + { + super(id); + } + + @Override + public void setParameter(String name, String value) + { + if (name.equals("name")) + _name = value; + else if (name.equals("locs")) + { + for (String locs : value.split(";")) + { + String[] coordinates = locs.split(","); + if (coordinates.length == 3) + { + int x = Integer.parseInt(coordinates[0]); + int y = Integer.parseInt(coordinates[1]); + int z = Integer.parseInt(coordinates[2]); + _locations.add(new Location(x, y, z)); + } + else + { + LOGGER.warn("Invalid location format: " + locs); + } + } + } + } + + + @Override + protected void onEnter(Creature character) + { + if (character instanceof Player) + { + final Player player = (Player) character; + + if ((player.getClassId().getId() == 15 || player.getClassId().getId() == 16 || player.getClassId().getId() == 97)) + { + Location respawnLocation = VoiceExitSoloZone.getExitLocation(); + player.instantTeleportTo(respawnLocation, 20); + player.sendMessage("Your class is not allowed in this zone."); + return; + } + + String randomName = SoloZoneTaskManager.getInstance().getAName(); + if (randomName == null || randomName.isEmpty() || !isValidName(randomName)) + { + randomName = generateRandomName(); + } + if (isNameAlreadyTaken(randomName)) + { + randomName = generateRandomName(); + } + player.setFakeName(randomName); + player.sendMessage("Welcome to the Solo Zone, your random name is: " + randomName); + player.sendPacket(SystemMessageId.ENTERED_COMBAT_ZONE); + character.setInsideZone(ZoneId.SOLO, true); + character.setInsideZone(ZoneId.NO_STORE, true); + character.setInsideZone(ZoneId.NO_SUMMON_FRIEND, true); + + if (player.getParty() != null) + { + player.getParty().removePartyMember(player, MessageType.DISCONNECTED); + } + + if (player.getPvpFlag() > 0) + PvpFlagTaskManager.getInstance().remove(player, true); + + player.updatePvPStatus(); + player.broadcastUserInfo(); + } + } + + private static boolean isValidName(String name) { + return name.matches("[a-zA-Z0-9_]+"); + } + + private static String generateRandomName() { + Random rand = new Random(); + int nameLength = rand.nextInt(12) + 4; + StringBuilder nameBuilder = new StringBuilder(); + + for (int i = 0; i < nameLength; i++) { + char randomChar = (char) (rand.nextInt(26) + 'a'); + nameBuilder.append(randomChar); + } + + return nameBuilder.toString(); + } + + private static boolean isNameAlreadyTaken(String name) { + return World.getInstance().getPlayers().stream().anyMatch(player -> player.getFakeName().equals(name)); + } + + @Override + protected void onExit(Creature character) + { + character.setInsideZone(ZoneId.SOLO, false); // Solo zone + character.setInsideZone(ZoneId.NO_STORE, false); // Allow making a store + character.setInsideZone(ZoneId.NO_SUMMON_FRIEND, false); // Allow summon + + if (character instanceof Player) + { + final Player player = (Player) character; + + if (player.getFakeName() != null) + { + player.setFakeName(null); + } + + player.sendPacket(SystemMessageId.LEFT_COMBAT_ZONE); + { + if(!player.isInObserverMode() && player.getPvpFlag() > 0) + PvpFlagTaskManager.getInstance().add(player, Config.PVP_NORMAL_TIME); + + player.sendPacket(new EtcStatusUpdate(player)); + player.broadcastUserInfo(); + } + } + } + + public String getName() + { + return _name; + } + + public Location getLoc() + { + if (_locations.isEmpty()) + { + return null; // Αν η λίστα είναι κενή, επιστρέφουμε null + } + return _locations.get(Rnd.get(0, _locations.size() - 1)); // Επιλέγουμε τυχαία τοποθεσία + } +} diff --git a/java/net/sf/l2j/gameserver/GameServer.java b/java/net/sf/l2j/gameserver/GameServer.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/GameServer.java if (Config.ALLOW_FISH_CHAMPIONSHIP) FishingChampionshipManager.getInstance(); + StringUtil.printSection("Custom Features"); + SoloZoneTaskManager.getInstance(); StringUtil.printSection("Handlers"); LOGGER.info("Loaded {} admin command handlers.", AdminCommandHandler.getInstance().size()); diff --git a/java/net/sf/l2j/gameserver/GameServer.java b/java/net/sf/l2j/gameserver/Shutdown.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/Shutdown.java // disconnect players try { disconnectAllPlayers(); LOGGER.info("All players have been disconnected."); } catch (Exception e) { // Silent catch. } + // Restore real names for players in SoloZone + restoreRealNamesInSoloZone(); // stop all threadpolls ThreadPool.shutdown(); try { LoginServerThread.getInstance().interrupt(); } catch (Exception e) { // Silent catch. } // avoids new players from logging in if (_secondsShut <= 60 && LoginServerThread.getInstance().getServerType() != ServerType.DOWN) LoginServerThread.getInstance().setServerType(ServerType.DOWN); _secondsShut--; Thread.sleep(1000); } } catch (InterruptedException e) { } } + // This method restores the real names of players in SoloZone + private static void restoreRealNamesInSoloZone() + { + for (Player player : World.getInstance().getPlayers()) + { + // Check if player is inside the SoloZone + if (player.isInsideZone(ZoneId.SOLO)) + { + // Restore the real name by removing the fake name + if (player.getFakeName() != null) + { + player.setFakeName(null); // Restore the real name + LOGGER.info("Player {}'s fake name has been removed and real name restored.", player.getName()); + } + } + } + } private static void sendServerQuit(int seconds) { World.toAllOnlinePlayers(SystemMessage.getSystemMessage(SystemMessageId.THE_SERVER_WILL_BE_COMING_DOWN_IN_S1_SECONDS).addNumber(seconds)); } diff --git a/java/net/sf/l2j/gameserver/enums/ZoneId.java b/java/net/sf/l2j/gameserver/enums/ZoneId.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/enums/ZoneId.java public enum ZoneId { PVP(0), PEACE(1), SIEGE(2), MOTHER_TREE(3), CLAN_HALL(4), NO_LANDING(5), WATER(6), JAIL(7), MONSTER_TRACK(8), CASTLE(9), SWAMP(10), NO_SUMMON_FRIEND(11), NO_STORE(12), TOWN(13), HQ(14), DANGER_AREA(15), CAST_ON_ARTIFACT(16), NO_RESTART(17), SCRIPT(18), - BOSS(19), + BOSS(19), + SOLO(20); private final int _id; private ZoneId(int id) { _id = id; } diff --git a/java/net/sf/l2j/gameserver/network/serverpackets/Die.java b/java/net/sf/l2j/gameserver/network/serverpackets/Die.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/network/serverpackets/Die.java if (creature instanceof Player) { Player player = (Player) creature; - _allowFixedRes = player.getAccessLevel().allowFixedRes(); + _allowFixedRes = player.getAccessLevel().allowFixedRes() || player.isInsideZone(ZoneId.SOLO); _clan = player.getClan(); } diff --git a/java/net/sf/l2j/gameserver/model/actor/Player.java b/java/net/sf/l2j/gameserver//model/actor/Player.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java // Attacker or spectator logging into a siege zone will be ported at town. if (player.isInsideZone(ZoneId.SIEGE) && player.getSiegeState() < 2) player.teleportTo(TeleportType.TOWN); + if (player.isInsideZone(ZoneId.SOLO)) + { + ThreadPool.schedule(() -> { + Location exitLocation = VoiceExitSoloZone.getExitLocation(); + + if (exitLocation != null) + { + player.teleportTo(exitLocation.getX(), exitLocation.getY(), exitLocation.getZ(), 0); + player.sendMessage("You have been moved to the exit of the SoloZone."); + } + }, 5000); // 5000 milliseconds (5sec) + } diff --git a/java/net/sf/l2j/gameserver/model/actor/Player.java b/java/net/sf/l2j/gameserver/model/actor/Player.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/model/actor/Player.java @Override public void doRevive() { super.doRevive(); stopEffects(EffectType.CHARM_OF_COURAGE); sendPacket(new EtcStatusUpdate(this)); getStatus().setCpHpMp(getStatus().getMaxCp(), getStatus().getMaxHp(), getStatus().getMaxMp()); _reviveRequested = 0; _revivePower = 0; if (isMounted()) startFeed(_mountNpcId); + if (isInsideZone(ZoneId.SOLO)) + { + // Give Nobless (1323 ID) + L2Skill no = SkillTable.getInstance().getInfo(1323, 1); + no.getEffects(this, this); + sendMessage("You have received the Nobless status in the Solo Zone."); + } + }   If anyone thinks the code is wrong, please make an update and upload it here so I can update the post. A part was edited with chatgpt
    • Always remember, when you buy files, just compare with my files that I publish for free. and you will know that you are being ripped off. Greetings to all community!!! 🙂
    • Thank you for sharing. You are a capable and skilled person. Thank you again for your selfless dedication, Guytis🫡
    • he kept his promise! i think it's a good idea to unban his old account. he shares files with the community and could help both new and veteran l2off users! good job, Guytis!
  • Topics

×
×
  • Create New...