Jump to content

Recommended Posts

Posted (edited)

there is a big bug when you try to add reputation points, sometimes you add 1000 rep points and is multiplying the ammount ...

 

http://www.maxcheaters.com/topic/165828-hi5-services-npc/?p=2241888

 

It's buggy cuz it gets your actual reputation number [ aka player.getClan().getReputationScore() ] ++ the points that you want add.

 

My interlude version is bugless if you want.

Edited by SweeTs
Posted

yes I have tryed with: player.getClan().addReputationScore(reputationPointsCount);  but give error, I got the last beta high five version, do you know how to convert it for h5?

Posted (edited)

yes I have tryed with: player.getClan().addReputationScore(reputationPointsCount);  but give error, I got the last beta high five version, do you know how to convert it for h5?

 

Just search over Eclipse for "addReputationScore" / "setReputationScore" / "ReputationScore" and you will see what is the correct method.

 

As I see it's correct method, so there shouldn't be any error. Anyway, post the error/screen here or create new topic in request help, as you wish.

Edited by SweeTs
Posted

public synchronized void addReputationScore(int value, boolean save)
Just...

player.getClan().addReputationScore(reputationPointsCount, true);
  • 1 month later...
Posted

Hey mate, awesome work you did there! I found a small bug though. When I use the function "Clan level up" the clan levels up, but it isn't saved in the DB so after every server restart, the clan level is being reset to 0... Not getting any errors though :/ Would be awesome if you could look into it :D I will check it out a bit more myself but I am a rookie so I kinda doubt I will find a solution :/

Posted

Hey mate, awesome work you did there! I found a small bug though. When I use the function "Clan level up" the clan levels up, but it isn't saved in the DB so after every server restart, the clan level is being reset to 0... Not getting any errors though :/ Would be awesome if you could look into it :D I will check it out a bit more myself but I am a rookie so I kinda doubt I will find a solution :/

 

http://www.maxcheaters.com/topic/167407-services-npc/?p=2294525

Posted

i Add it agan and again.. and is the same, code is correctly. lock.

 

/*

 * Copyright © 2004-2013 L2J DataPack
 *
 * This file is part of L2J DataPack.
 *
 * L2J DataPack is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * L2J DataPack is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 */
package custom.Services;
 
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.logging.Logger;
 
import com.l2jserver.L2DatabaseFactory;
import com.l2jserver.gameserver.datatables.CharNameTable;
import com.l2jserver.gameserver.datatables.ClanTable;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.olympiad.OlympiadManager;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState;
import com.l2jserver.gameserver.network.serverpackets.MagicSkillUse;
 
/**
 * @author Colet
 */
public class Services extends Quest
{
    public static final Logger _log = Logger.getLogger(Services.class.getName());
   
    // NPC Id
    int servicesNpc = 9013;
   
    // Noble Items
    int nobleItemId = 57;
    long nobleItemCount = 1;
   
    // PK Reduce Items
    int pkReduceItemId = 57;
    long pkReduceItemCount = 1000;
   
    // Change Name Items
    int changeNameItemId = 57;
    long changeNameItemCount = 1000000;
    boolean logNameChanges = true;
   
    // Change Clan Name Items
    int changeClanNameItemId = 57;
    long changeClanNameItemCount = 50000;
    boolean logClanNameChanges = true;
    int clanMinLevel = 5;
    
    // Clan Level Items
    int[] clanLevelItemsId =
    {
    57, // Level 5 to 6
    57, // Level 6 to 7
    57, // Level 7 to 8
    57, // Level 8 to 9
    57, // Level 9 to 10
    57 // Level 10 to 11
    };
    
    long[] clanLevelItemsCount =
    {
    6, // Level 5 to 6
    7, // Level 6 to 7
    8, // Level 7 to 8
    9, // Level 8 to 9
    10, // Level 9 to 10
    11 // Level 10 to 11
    };
    
    // Clan Reputation Points Items
    int clanReputationPointsItemId = 57;
    long clanReputationPointsItemCount = 5;
    
    // Change Gender Items
    int changeGenderItemId = 57;
    long changeGenderItemCount = 50;
    
    public Services(int questId, String name, String descr)
    {
        super(questId, name, descr);
       
        addStartNpc(servicesNpc);
        addFirstTalkId(servicesNpc);
        addTalkId(servicesNpc);
    }
   
    public static void main(String[] args)
    {
        new Services(-1, Services.class.getSimpleName(), "custom");
    }
   
    public String onFirstTalk(L2Npc npc, L2PcInstance player)
    {
        if (player.getQuestState(getName()) == null)
        {
            newQuestState(player);
        }
        else if (player.isInCombat())
        {
        return "Services-Blocked.htm";
        }
        else if (player.getPvpFlag() == 1)
        {
        return "Services-Blocked.htm";
        }
        else if (player.getKarma() != 0)
        {
        return "Services-Blocked.htm";
        }
        else if (OlympiadManager.getInstance().isRegistered(player))
        {
        return "Services-Blocked.htm";
        }
        
        return "Services.htm";
    }
   
    public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
    {
        String htmlText = event;
        QuestState st = player.getQuestState(getName());
       
        if (event.equals("setNoble"))
        {
            if (!player.isNoble())
            {
                if (st.getQuestItemsCount(nobleItemId) >= nobleItemCount)
                {
                    st.takeItems(nobleItemId, nobleItemCount);
                    player.setNoble(true);
                    player.setTarget(player);
                    player.broadcastPacket(new MagicSkillUse(player, 5103, 1, 1000, 0));
                    player.broadcastUserInfo();
                    return "NoblesseServices-Success.htm";
                }
                else
                {
                    return "NoblesseServices-NoItems.htm";
                }
            }
            else
            {
                return "NoblesseServices-AlredyNoble.htm";
            }
        }
        else if (event.equals("levelUpClan"))
        {
        if (!player.isClanLeader())
        {
        return "ClanLevelUp-NoLeader.htm";
        }
        else
        {
        if (player.getClan().getLevel() == 11)
        {
        return "ClanLevelUp-MaxLevel.htm";
        }
        else
        {
        if (((player.getClan().getLevel() <= 1) || (player.getClan().getLevel() == 2) || (player.getClan().getLevel() == 3) || (player.getClan().getLevel() == 4)))
        {
            player.getClan().setLevel(player.getClan().getLevel() + 1);
            player.getClan().broadcastClanStatus();
            player.sendMessage("Your clan is now level " + player.getClan().getLevel() + ".");
                        player.setTarget(player);
                        player.broadcastPacket(new MagicSkillUse(player, 5103, 1, 1000, 0));
                        return "ClanLevelUp.htm";
        }
        else if (player.getClan().getLevel() == 5)
        {
        if (st.getQuestItemsCount(clanLevelItemsId[0]) >= clanLevelItemsCount[0])
        {
            st.takeItems(clanLevelItemsId[0], clanLevelItemsCount[0]);
            player.getClan().setLevel(player.getClan().getLevel() + 1);
            player.getClan().broadcastClanStatus();
                player.sendMessage("Your clan is now level " + player.getClan().getLevel() + ".");
                            player.setTarget(player);
                            player.broadcastPacket(new MagicSkillUse(player, 5103, 1, 1000, 0));
                            return "ClanLevelUp.htm";
        }
        else
        {
        return "ClanLevelUp-NoItems.htm";
        }
        }
        else if (player.getClan().getLevel() == 6)
        {
        if (st.getQuestItemsCount(clanLevelItemsId[1]) >= clanLevelItemsCount[1])
        {
            st.takeItems(clanLevelItemsId[1], clanLevelItemsCount[1]);
            player.getClan().setLevel(player.getClan().getLevel() + 1);
            player.getClan().broadcastClanStatus();
                player.sendMessage("Your clan is now level " + player.getClan().getLevel() + ".");
                            player.setTarget(player);
                            player.broadcastPacket(new MagicSkillUse(player, 5103, 1, 1000, 0));
                            return "ClanLevelUp.htm";
        }
        else
        {
        return "ClanLevelUp-NoItems.htm";
        }
        }
        else if (player.getClan().getLevel() == 7)
        {
        if (st.getQuestItemsCount(clanLevelItemsId[2]) >= clanLevelItemsCount[2])
        {
            st.takeItems(clanLevelItemsId[2], clanLevelItemsCount[2]);
            player.getClan().setLevel(player.getClan().getLevel() + 1);
            player.getClan().broadcastClanStatus();
                player.sendMessage("Your clan is now level " + player.getClan().getLevel() + ".");
                            player.setTarget(player);
                            player.broadcastPacket(new MagicSkillUse(player, 5103, 1, 1000, 0));
                            return "ClanLevelUp.htm";
        }
        else
        {
        return "ClanLevelUp-NoItems.htm";
        }
        }
        else if (player.getClan().getLevel() == 8)
        {
        if (st.getQuestItemsCount(clanLevelItemsId[3]) >= clanLevelItemsCount[3])
        {
            st.takeItems(clanLevelItemsId[3], clanLevelItemsCount[3]);
            player.getClan().setLevel(player.getClan().getLevel() + 1);
            player.getClan().broadcastClanStatus();
                player.sendMessage("Your clan is now level " + player.getClan().getLevel() + ".");
                            player.setTarget(player);
                            player.broadcastPacket(new MagicSkillUse(player, 5103, 1, 1000, 0));
                            return "ClanLevelUp.htm";
        }
        else
        {
        return "ClanLevelUp-NoItems.htm";
        }
        }
        else if (player.getClan().getLevel() == 9)
        {
        if (st.getQuestItemsCount(clanLevelItemsId[4]) >= clanLevelItemsCount[4])
        {
            st.takeItems(clanLevelItemsId[4], clanLevelItemsCount[4]);
            player.getClan().setLevel(player.getClan().getLevel() + 1);
            player.getClan().broadcastClanStatus();
                player.sendMessage("Your clan is now level " + player.getClan().getLevel() + ".");
                            player.setTarget(player);
                            player.broadcastPacket(new MagicSkillUse(player, 5103, 1, 1000, 0));
                            return "ClanLevelUp.htm";
        }
        else
        {
        return "ClanLevelUp-NoItems.htm";
        }
        }
        else if (player.getClan().getLevel() == 10)
        {
        if (st.getQuestItemsCount(clanLevelItemsId[5]) >= clanLevelItemsCount[5])
        {
            st.takeItems(clanLevelItemsId[5], clanLevelItemsCount[5]);
            player.getClan().setLevel(player.getClan().getLevel() + 1);
            player.getClan().broadcastClanStatus();
                player.sendMessage("Your clan is now level " + player.getClan().getLevel() + ".");
                            player.setTarget(player);
                            player.broadcastPacket(new MagicSkillUse(player, 5103, 1, 1000, 0));
                            return "ClanLevelUp.htm";
        }
        else
        {
        return "ClanLevelUp-NoItems.htm";
        }
        }
       
                    try (Connection con = L2DatabaseFactory.getInstance().getConnection();
                    PreparedStatement statement = con.prepareStatement("UPDATE clan_data SET clan_level=? WHERE clan_id=?"))
                    {
                    statement.setInt(1, player.getClan().getLevel());
                    statement.setInt(2, player.getClan().getClanId());
                    statement.execute();
                    statement.close();
                    }
                    catch (Exception e)
                    {
                    _log.info("Error updating clan level for player " + player.getName() + ". Error: " + e);
                    }
                    
        player.getClan().broadcastClanStatus();
        return "ClanLevelUp.htm";
        }
        }
        }
        else if (event.equals("changeGender"))
        {
        if (st.getQuestItemsCount(changeGenderItemId) >= changeGenderItemCount)
        {
            st.takeItems(changeGenderItemId, changeGenderItemCount);
            player.getAppearance().setSex(player.getAppearance().getSex() ? false : true);
                player.setTarget(player);
                player.broadcastPacket(new MagicSkillUse(player, 5103, 1, 1000, 0));
            player.broadcastUserInfo();
            return "ChangeGender-Success.htm";
        }
        else
        {
        return "ChangeGender-NoItems.htm";
        }
        }
        else if (event.startsWith("changeName"))
        {
            try
            {
                String newName = event.substring(11);
               
                if (st.getQuestItemsCount(changeNameItemId) >= changeNameItemCount)
                {                                                      
                    if (newName == null)
                    {                                                      
                        return "ChangeName.htm";
                    }
                    else
                    {
                        if (!newName.matches("^[a-zA-Z0-9]+$"))
                        {
                            player.sendMessage("Incorrect name. Please try again.");
                            return "ChangeName.htm";
                        }
                        else if (newName.equals(player.getName()))
                        {
                            player.sendMessage("Please, choose a different name.");
                            return "ChangeName.htm";
                        }
                        else if (CharNameTable.getInstance().doesCharNameExist(newName))
                        {
                            player.sendMessage("The name " + newName + " already exists.");
                            return "ChangeName.htm";
                        }
                        else
                        {
                            if (logNameChanges)
                            {
                                String fileName = "log/Services/Name Change - " + player.getName() + ".txt";
                                new File(fileName);
                                FileWriter fileText = new FileWriter(fileName);
                                BufferedWriter fileContent = new BufferedWriter(fileText);
                                fileContent.write("Character name change info:\r\n\r\nCharacter original name: " + player.getName() + "\r\nCharacter new name: " + newName);
                                fileContent.close();
                            }
                           
                            st.takeItems(changeNameItemId, changeNameItemCount);
                            player.setName(newName);
                            player.store();
                            player.sendMessage("Your new character name is " + newName);
                            player.broadcastUserInfo();
                            return "ChangeName-Success.htm";
                        }
                    }
                }
                else
                {
                    return "ChangeName-NoItems.htm";
                }
            }
            catch (Exception e)
            {
                player.sendMessage("Please, insert a correct name.");
                return "ChangeName.htm";
            }
        }
        else if (event.startsWith("reducePks"))
        {
            try
            {
                String pkReduceString = event.substring(10);
                int pkReduceCount = Integer.parseInt(pkReduceString);
                
                if (player.getPkKills() != 0)
                {
                    if (pkReduceCount == 0)
                    {
                        player.sendMessage("Please, put a higher value.");
                        return "PkServices.htm";
                    }
                    else
                    {
                        if (st.getQuestItemsCount(pkReduceItemId) >= pkReduceItemCount)
                        {
                            st.takeItems(pkReduceItemId, pkReduceItemCount * pkReduceCount);
                            player.setPkKills(player.getPkKills() - pkReduceCount);
                            player.sendMessage("You have successfuly cleaned " + pkReduceCount + " PKs.");
                            player.broadcastUserInfo();
                            return "PkServices-Success.htm";
                        }
                        else
                        {
                            return "PkServices-NoItems.htm";
                        }
                    }
                }
                else
                {
                    return "PkServices-NoPks.htm";
                }
            }
            catch (Exception e)
            {
                player.sendMessage("Incorrect value. Please try again.");
                return "PkServices.htm";
            }
        }
        else if (event.startsWith("changeClanName"))
        {
        if (player.getClan() == null)
        {
        return "ChangeClanName-NoClan.htm";
        }
        else
        {
        try
        {
        String newClanName = event.substring(15);
       
        if (st.getQuestItemsCount(changeClanNameItemId) >= changeClanNameItemCount)
        {
        if (newClanName == null)
        {
        return "ChangeClanName.htm";
        }
                   else
                   {
                       if (!player.isClanLeader())
                       {
                        player.sendMessage("Only the clan leader can change the clan name.");
                        return "ChangeClanName.htm";
                       }
                       else if (player.getClan().getLevel() < clanMinLevel)
                       {
                        player.sendMessage("Your clan must be at least level " + clanMinLevel + " to change the name.");
                        return "ChangeClanName.htm";
                       }
                    else if (!newClanName.matches("^[a-zA-Z0-9]+$"))
                       {
                           player.sendMessage("Incorrect name. Please try again.");
                           return "ChangeClanName.htm";
                       }
                       else if (newClanName.equals(player.getClan().getName()))
                       {
                           player.sendMessage("Please, choose a different name.");
                           return "ChangeClanName.htm";
                       }
                       else if (null != ClanTable.getInstance().getClanByName(newClanName))
                       {
                           player.sendMessage("The name " + newClanName + " already exists.");
                           return "ChangeClanName.htm";
                       }
                       else
                       {
                           if (logClanNameChanges)
                           {
                               String fileName = "log/Services/Clan Name Change - " + player.getClan().getName() + ".txt";
                               new File(fileName);
                               FileWriter fileText = new FileWriter(fileName);
                               BufferedWriter fileContent = new BufferedWriter(fileText);
                               fileContent.write("Clan name change info:\r\n\r\nClan original name: " + player.getClan().getName() + "\r\nClan new name: " + newClanName + "\r\nClan Leader: " + player.getName());
                               fileContent.close();
                           }
                           
                           st.takeItems(changeNameItemId, changeNameItemCount);
                           player.getClan().setName(newClanName);
                           
                           try (Connection con = L2DatabaseFactory.getInstance().getConnection();
                            PreparedStatement statement = con.prepareStatement("UPDATE clan_data SET clan_name=? WHERE clan_id=?"))
                           {
                            statement.setString(1, newClanName);
                            statement.setInt(2, player.getClan().getClanId());
                            statement.execute();
                            statement.close();
                           }
                           catch (Exception e)
                           {
                            _log.info("Error updating clan name for player " + player.getName() + ". Error: " + e);
                           }
                           
                           player.sendMessage("Your new clan name is " + newClanName);
                           player.getClan().broadcastClanStatus();
                           return "ChangeClanName-Success.htm";
                       }
                   }
        }
        else
        {
        return "ChangeClanName-NoItems.htm";
        }
        }
        catch (Exception e)
        {
               player.sendMessage("Please, insert a correct name.");
               return "ChangeClanName.htm";
        }
        }
        }
        else if (event.startsWith("setReputationPoints"))
        {
            try
            {
                String reputationPointsString = event.substring(20);
                int reputationPointsCount = Integer.parseInt(reputationPointsString);
                
                if (player.getClan() == null)
                {
                return "ClanReputationPoints-NoClan.htm";
                }
                else if (!player.isClanLeader())
                {
                return "ClanReputationPoints-NoLeader.htm";
                }
                else
                {
               if (reputationPointsCount == 0)
               {
                   player.sendMessage("Please, put a higher value.");
                   return "ClanReputationPoints.htm";
               }
               else
               {
                   if (st.getQuestItemsCount(clanReputationPointsItemId) >= clanReputationPointsItemCount)
                   {
                       st.takeItems(clanReputationPointsItemId, clanReputationPointsItemCount * reputationPointsCount);
                       player.getClan().addReputationScore(player.getClan().getReputationScore() + reputationPointsCount, true);
                       player.getClan().broadcastClanStatus();
                       return "ClanReputationPoints-Success.htm";
                   }
                   else
                   {
                       return "ClanReputationPoints-NoItems.htm";
                   }
               }
                }
            }
            catch (Exception e)
            {
                player.sendMessage("Incorrect value. Please try again.");
                return "ClanReputationPoints.htm";
            }
        }
        
        return htmlText;
}
}

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



  • Posts

    • I’ve been playing with LLM-driven autofarm bots too, and giving them some visual cues made a big difference. I ended up using art pieces from https://allcorrectgames.com/service/game-art/ as placeholders while training my detection prompts, and it actually helped the models parse scenes more reliably. If you add a bit of lightweight state tracking on top, your fake players start behaving way more naturally.
    • Roblox has become one of the world’s most influential user‑generated gaming platforms, attracting millions of players and creators every day. What makes Roblox unique is that it is not just a place to play games—it is a place where anyone can build their own. With Roblox Studio, even complete beginners can design immersive worlds, interactive experiences, and full‑fledged games. This guide will walk you through the essential steps to create your first Roblox game, while also helping you understand how features like Roblox Robux fit into the creator ecosystem.       1. What Is Roblox Studio and Why Use It? Roblox Studio is the official development environment used to create every game on the platform. It is free, accessible, and designed for creators of all skill levels. Whether you want to build a simple obstacle course or a complex simulation game, Roblox Studio provides the tools you need. The platform’s success comes from its user‑generated content model. Players can create games, publish them, and even earn Roblox Robux through in‑game purchases, game passes, or developer products. While earning Robux is not the focus for beginners, understanding its role can motivate you to improve your creations over time.   2. Setting Up Roblox Studio Before you start building, you need to install and set up Roblox Studio. Steps to get started Download Roblox Studio from the official Roblox website. Install and open the application. Log in using your Roblox account. Choose a template or start with a blank Baseplate. For beginners, templates like Obby, Village, or Racing provide a structured starting point. They include pre‑built elements that help you learn how different parts of a game work.   3. Understanding the Interface Roblox Studio may look overwhelming at first, but each panel has a clear purpose. Learning the interface early will make your development process smoother. Key panels Explorer: Shows all objects in your game world. Properties: Displays editable settings for selected objects. Viewport: The 3D workspace where you build your world. Toolbox: Contains free models, scripts, and assets. Home / Model / Test tabs: Provide tools for building, editing, and testing. Spend a few minutes clicking around, selecting objects, and adjusting their properties. This hands‑on exploration helps you understand how everything fits together.   4. Building Your First Game World Once you’re familiar with the interface, it’s time to start building. Using Parts Roblox Studio uses “Parts” as the basic building blocks. You can insert: Blocks Spheres Cylinders Wedges These can be resized, rotated, and moved to create platforms, walls, buildings, or obstacles. Using the Toolbox The Toolbox allows you to drag pre‑made assets into your game. This is extremely helpful for beginners, but choose assets carefully. Some community models include unnecessary scripts that may affect performance. Look for items marked as “Verified” or created by trusted developers. Organizing Your Workspace As your game grows, organization becomes important. Use folders in the Explorer panel to group objects logically: “Obstacles” “SpawnPoints” “Decorations” Good organization saves time and prevents confusion later.   5. Adding Gameplay with Scripts Roblox games use Lua, a beginner‑friendly scripting language. You don’t need to be a programmer to start, but learning basic scripting will greatly expand what you can create. Simple scripts you can try Making a part disappear when touched Creating a moving platform Adding checkpoints Giving players speed boosts Here’s a simple example: a script that prints a message when a player touches a part. Lua: local part = script.Parent   part.Touched:Connect(function(hit)     print("A player touched the part!") end) Even small scripts like this help you understand how interactions work in Roblox.   6. Testing Your Game Testing is essential. Roblox Studio provides several testing modes to simulate gameplay. Use the “Play” button to: Walk around your world Test scripts Check spawn points Look for bugs Ensure platforms and obstacles work correctly You can also use Play Here, Run, and Play Solo to test different aspects of your game.   7. Adding UI and Game Logic A polished game needs more than objects—it needs user interface elements and clear rules. Common UI elements Timers Score counters Health bars Buttons Pop‑up messages You can create UI using ScreenGui objects inside the StarterGui folder. Roblox provides templates for text labels, buttons, and frames, making it easy to design simple interfaces.   8. Optimizing Your Game A smooth game keeps players engaged. Here are some optimization tips: Remove unused parts and scripts. Avoid too many moving objects. Use low‑poly models when possible. Test on mobile devices—many Roblox players use phones. Keep lighting simple to improve performance. Optimization ensures your game runs well for all players, not just those with powerful devices.   9. Publishing Your Game Once your game is playable, you can publish it to Roblox. Steps to publish Click File → Publish to Roblox. Enter a name, description, and genre. Choose whether the game is public or private. Set permissions and access settings. After publishing, you can share the link with friends or the Roblox community. If you eventually want to monetize your game, you can add game passes or developer products that players can purchase using Roblox Robux. This is optional for beginners, but it becomes important as your game grows.   10. Improving Your Game Over Time The best Roblox games are updated regularly. After publishing, pay attention to: Player feedback Bug reports Suggestions from friends Analytics (visits, playtime, retention) Add new levels, improve visuals, or introduce new mechanics to keep players coming back.   11. Learning and Growing as a Creator Roblox provides many resources to help you improve: Roblox Creator Hub Developer Forum YouTube tutorials Community Discord servers The more you practice, the more confident you’ll become. Many successful developers started as beginners just like you—and some now earn significant amounts of Roblox Robux through their creations.   Final Thoughts Creating your first Roblox game is an exciting journey. You don’t need advanced skills or expensive tools—just creativity and curiosity. Start small, experiment with templates, learn basic scripting, and gradually build your skills. With time and persistence, you can create a game that players around the world will enjoy.
    • Hello it seems you can't receive PMs, it won't let me, do you use discord?
    • Hello after returning to lineage 2, I was wanting to start some local server development for a few friends and me to play around with but for some reason I'm having trouble after so many years to find a stable high five client. The clients I have found either have crash issue, many errors in the client log files or freeze after only a day or two of playing (autofarming for a day for example, you'll go to teleport after a farm session and the client freezes).   I've played a few High Five servers and it seems a lot of them have been able to optimize it to avoid these problems.  We are running multiple clients per PC so this does sound essential.   I've heard one major feature that is helping client stability is the ability to clear cache/memory without restarting the game or something along those lines.   So I'm wondering if anyone can point me in the direction of obtaining a High Five client that is clean, optimized and decrypted to be able to add customs items etc. for a fair price.  
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..