diff --git a/Erupe/server/signserver/dbutils.go b/Erupe/server/signserver/dbutils.go
index 4cec89c96..1b5662dc8 100644
--- a/Erupe/server/signserver/dbutils.go
+++ b/Erupe/server/signserver/dbutils.go
@@ -162,7 +162,7 @@ func (s *Server) getGuildmatesForCharacters(chars []character) ([]members) {
charGuildmates[i].CID = char.ID
}
guildmates = append(guildmates, charGuildmates...)
- }
+ }
}
if len(guildmates) > 255 { // Uint8
guildmates = guildmates[:255]
@@ -176,7 +176,13 @@ func (s *Server) deleteCharacter(cid int, token string) error {
if err != nil {
return err // Invalid token
}
- _, err = s.db.Exec("UPDATE characters SET deleted = true WHERE id = $1", cid)
+ var isNew bool
+ err = s.db.QueryRow("SELECT is_new_character FROM characters WHERE id = $1", cid).Scan(&isNew)
+ if isNew {
+ _, err = s.db.Exec("DELETE FROM characters WHERE id = $1", cid)
+ } else {
+ _, err = s.db.Exec("UPDATE characters SET deleted = true WHERE id = $1", cid)
+ }
if err != nil {
return err
}
diff --git a/Erupe/server/signserver/session.go b/Erupe/server/signserver/session.go
index cb4a3619c..af900a84a 100644
--- a/Erupe/server/signserver/session.go
+++ b/Erupe/server/signserver/session.go
@@ -63,6 +63,10 @@ func (s *Session) handlePacket(pkt []byte) error {
characterID := int(bf.ReadUint32())
s.server.deleteCharacter(characterID, loginTokenString)
sugar.Infof("Deleted character ID: %v\n", characterID)
+ err := s.cryptConn.SendPacket([]byte{0x01}) // DEL_SUCCESS
+ if err != nil {
+ return nil
+ }
default:
sugar.Infof("Got unknown request type %s, data:\n%s\n", reqType, hex.Dump(bf.DataFromCurrent()))
}
diff --git a/Erupe/www/erupe/js/script.js b/Erupe/www/erupe/js/script.js
index 1171c8d8d..5288414fb 100644
--- a/Erupe/www/erupe/js/script.js
+++ b/Erupe/www/erupe/js/script.js
@@ -305,6 +305,18 @@ function checkAuth() {
document.getElementById('processing').style.display = 'none';
}
+function checkDelete() {
+ let deleteResult = window.external.getLastAuthResult();
+ if (deleteResult == 'DEL_PROGRESS') {
+ setTimeout(checkDelete, 10);
+ return;
+ } else if (deleteResult == 'DEL_SUCCESS') {
+ doLogin(0);
+ switchPrompt();
+ toggleModal(0);
+ }
+}
+
function launch() {
document.getElementById('game_starting').style.display = 'block';
try {
@@ -326,6 +338,11 @@ function launch() {
}, 3000);
}
+function deleteCharacter(id) {
+ window.external.deleteCharacter(id);
+ checkDelete();
+}
+
function autoWarning() {
let autoBox = document.getElementById('auto_box');
if (autoBox.checked) {
@@ -404,18 +421,16 @@ function setModalContent(preset, url) {
it will be gone forever. \
\
';
- modal.querySelector('.dialog .btns').innerHTML = ' \
+ modal.querySelector(".dialog .btns").innerHTML = ' \