Toggle guild nick feature in config.php

Fix #407
TFS 1.3 has a potential unresolved crash bug related to guild nicks.
You can check out the details here: https://github.com/otland/forgottenserver/issues/2561#issuecomment-633101435
This commit is contained in:
Znote 2020-06-01 23:32:09 +02:00
parent 31c233d559
commit 5a80034915
3 changed files with 268 additions and 259 deletions

View File

@ -620,6 +620,11 @@
// Do you need to have premium account to create a guild? // Do you need to have premium account to create a guild?
$config['guild_require_premium'] = true; $config['guild_require_premium'] = true;
// There is a TFS 1.3 bug related to guild nicks
// https://github.com/otland/forgottenserver/issues/2561
// So if your using TFS 1.x, you might need to disable guild nicks until the crash has been fixed.
$config['guild_allow_nicknames'] = true;
$config['guildwar_enabled'] = false; $config['guildwar_enabled'] = false;
// Use htaccess rewrite? (basically this makes website.com/username work instead of website.com/characterprofile.php?name=username // Use htaccess rewrite? (basically this makes website.com/username work instead of website.com/characterprofile.php?name=username

View File

@ -436,7 +436,7 @@ function update_player_guildnick($cid, $nick) {
mysql_update("UPDATE `players` SET `guildnick`='$nick' WHERE `id`=$cid"); mysql_update("UPDATE `players` SET `guildnick`='$nick' WHERE `id`=$cid");
} else { } else {
mysql_update("UPDATE `players` SET `guildnick`= NULL WHERE `id`=$cid"); mysql_update("UPDATE `players` SET `guildnick`='' WHERE `id`=$cid");
} }
} }
function update_player_guildnick_10($cid, $nick) { function update_player_guildnick_10($cid, $nick) {
@ -445,7 +445,7 @@ function update_player_guildnick_10($cid, $nick) {
if (!empty($nick)) { if (!empty($nick)) {
mysql_update("UPDATE `guild_membership` SET `nick`='$nick' WHERE `player_id`=$cid"); mysql_update("UPDATE `guild_membership` SET `nick`='$nick' WHERE `player_id`=$cid");
} else { } else {
mysql_update("UPDATE `guild_membership` SET `nick`= NULL WHERE `player_id`=$cid"); mysql_update("UPDATE `guild_membership` SET `nick`='' WHERE `player_id`=$cid");
} }
} }

View File

@ -400,22 +400,24 @@ if ($highest_access >= 2) {
// Change Guild Nick // Change Guild Nick
if (!empty($_POST['player_guildnick'])) { if (!empty($_POST['player_guildnick'])) {
$p_cid = user_character_id($_POST['player_guildnick']); if ($config['guild_allow_nicknames']) {
$p_guild = get_player_guild_data($p_cid); $p_cid = user_character_id($_POST['player_guildnick']);
if (preg_match("/^[a-zA-Z_ ]+$/", $_POST['guildnick']) || empty($_POST['guildnick'])) { $p_guild = get_player_guild_data($p_cid);
// Only allow normal symbols as guild nick if (preg_match("/^[a-zA-Z_ ]+$/", $_POST['guildnick']) || empty($_POST['guildnick'])) {
$p_nick = sanitize($_POST['guildnick']); // Only allow normal symbols as guild nick
if ($p_guild['guild_id'] == $gid) { $p_nick = sanitize($_POST['guildnick']);
if ($config['ServerEngine'] !== 'TFS_10') $chardata = user_character_data($p_cid, 'online'); if ($p_guild['guild_id'] == $gid) {
else $chardata['online'] = (user_is_online_10($p_cid)) ? 1 : 0; if ($config['ServerEngine'] !== 'TFS_10') $chardata = user_character_data($p_cid, 'online');
if ($chardata['online'] == 0) { else $chardata['online'] = (user_is_online_10($p_cid)) ? 1 : 0;
if ($config['ServerEngine'] !== 'TFS_10') update_player_guildnick($p_cid, $p_nick); if ($chardata['online'] == 0) {
else update_player_guildnick_10($p_cid, $p_nick); if ($config['ServerEngine'] !== 'TFS_10') update_player_guildnick($p_cid, $p_nick);
header('Location: guilds.php?name='. $_GET['name']); else update_player_guildnick_10($p_cid, $p_nick);
exit(); header('Location: guilds.php?name='. $_GET['name']);
} else echo '<font color="red" size="4">Character not offline.</font>'; exit();
} } else echo '<font color="red" size="4">Character not offline.</font>';
} else echo '<font color="red" size="4">Character guild nick may only contain a-z, A-Z and spaces.</font>'; }
} else echo '<font color="red" size="4">Character guild nick may only contain a-z, A-Z and spaces.</font>';
} else echo '<font color="red" size="4">Change guild nickname feature has been disabled.</font>';
} }
// Promote character to guild position // Promote character to guild position
@ -696,32 +698,34 @@ if ($highest_access >= 2) {
</li> </li>
</ul> </ul>
</form> </form>
<!-- FORMS TO CHANGE GUILD NICK --> <?php if ($config['guild_allow_nicknames']): ?>
<form action="" method="post"> <!-- FORMS TO CHANGE GUILD NICK -->
<ul> <form action="" method="post">
<li> <ul>
Change Guild Nick:<br> <li>
<select name="player_guildnick"> Change Guild Nick:<br>
<?php <select name="player_guildnick">
//$gid = get_guild_id($_GET['name']); <?php
//$players = get_guild_players($gid); //$gid = get_guild_id($_GET['name']);
//$players = get_guild_players($gid);
foreach ($players as $player) { foreach ($players as $player) {
if ($player['rank_level'] != 3) { if ($player['rank_level'] != 3) {
echo '<option value="'. $player['name'] .'">'. $player['name'] .'</option>';
} else {
if ($highest_access == 3) {
echo '<option value="'. $player['name'] .'">'. $player['name'] .'</option>'; echo '<option value="'. $player['name'] .'">'. $player['name'] .'</option>';
} else {
if ($highest_access == 3) {
echo '<option value="'. $player['name'] .'">'. $player['name'] .'</option>';
}
} }
} }
} ?>
?> </select>
</select> <input type="text" name="guildnick" maxlength="15" placeholder="leave blank to erase">
<input type="text" name="guildnick" maxlength="15" placeholder="leave blank to erase"> <input type="submit" value="Change Nick">
<input type="submit" value="Change Nick"> </li>
</li> </ul>
</ul> </form>
</form> <?php endif; ?>
<!-- END FORMS TO CHANGE GUILD NICK --> <!-- END FORMS TO CHANGE GUILD NICK -->
<?php if ($members > 1) { ?> <?php if ($members > 1) { ?>
<!-- FORMS TO PROMOTE CHARACTER--> <!-- FORMS TO PROMOTE CHARACTER-->