Перейти к содержанию

0000

Пользователи
  • Публикаций

    68
  • Зарегистрирован

  • Посещение

  • Отзывы

    0%

Сообщения, опубликованные 0000


  1. 3 часа назад, SteveDogs сказал:

    Решить вопрос с offline Трейдом возможно, но у тебя дальше будут возникать вопросы по спойлу/крафту/квестам по этому это не имеет смысла пвсофт не адаптирован под лоу-рейт или крафт-пвп или мультикрафт сервера. 

    Понимаю, но основные нужные квесту я проверил пашут на ура, а чтобы все прям вряд ли такой онлайн ещё соберём так что тех что проверил достаточно, и крафт потыкал, рецепт исчезает когда добавляешь его свой список, на некоторых сборка он не исчезает, а у нас исчезает если уровень рецепта не тот, а гномом если уровень тот то все норм. Так что это не так критично, хоть куда ковырять с трейдом можешь подсказать ? уверен у многих этот вопрос возник и уже решено все,  будет полезен в дальнейшем ещё кому. Может сборка или есть ядро рабочее скиньте пожалуйста, сам попробую разобраться 


  2. 22 часа назад, SteveDogs сказал:

    ну во первых мы не знаем какая у тебя сборка, за какую дату как минимум.
    во вторых Николай(фокстрот) в свое время выключал специально offline из-за дюпа.

    Сборка исходники которые в шаре, и что это никак нельзя его норм запустить ? Хочу х100 на pow, знаю щас налетите тип идиот есть люся для этого и тд. но я хочу так. А без офлайн треда на х100 не особо, хотя можно тупо выставить чтобы не восстанавливались, тогда как крафтом заниматься :(


  3. Привет всем! Кто знает как исправить офлайн трейд на PW SOFT?

    Проблема такая, садишься продавать все нормально, но как только делаешь рестарт не восстанавливает, в гс ошибка. Всех кто посоветует смотреть тему которая посвящена это вопросу, там нету ответа, точнее не работает то что предложно. Кто знает как решить данный вопрос, даже не верится что такая ошибка может быть в сборке которой около 10 лет :( 


  4. 21 час назад, ammy сказал:

    Нет всплывающего окна ?     %class_master_list%  

    Спойлер
    
    <html><title>Class Master</title><body><center><br>
    	
    	<font color="e15800">Смена професси для %classname%</font>
    	<img src="l2ui.squaregray" width="295" height="1">
    	<table width=295>
    		%classlist%
    	</table>
    <img src="l2ui.squaregray" width="295" height="1"><br>
    </center></body></html>

     

    Когда всплывает(команда .classmaster или уровень нужный), то выскакивает это окно.

    Ну вообще по идее почти полностью изменен файл L2ClassMasterInstance.java так что окна те что должны по идее

     

    А может кто-то знает про эту функцию в PW SOFT, в конфигах есть во многих шаровых ядрах и в исхонике так же, но она не пашет и вот мучаюсь с этим окном...

    JOB_WINDOW = Boolean.parseBoolean(altSettings.getProperty("JobWindow", "False"));

     

     

    Есть какие то мануалы или pw ядро с этим проф окном у кого нибудь, хотя бы через alt+b, поделитесь пожалуйста или ссылку скиньте!


  5. 7 минут назад, CalypsoToolz сказал:

    ну тогда только добавить логирование/дебаг и смотреть на каком моменте останавливается выполнение

    Спойлер
    
    2020.08.20 00:54:09,817	INFO	1	net.sf.l2j.gameserver.AutoRestart	#Auto Restart: scheduled at 5 hour. (1685 minutes remaining.)
    2020.08.20 00:54:09,840	SEVERE	264	net.sf.l2j.gameserver.datatables.CustomServerData	GameServer [ERROR]: Failed to restore offline traders. Reason: null
    2020.08.20 00:54:09,883	INFO	263	net.sf.l2j.gameserver.datatables.FakePlayersTablePlus	FakePlayersTablePlus: Cached 6000 players.
    2020.08.20 00:54:11,496	WARNING	98	net.sf.l2j.gameserver.ai.AbstractAI	Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead.
    2020.08.20 00:54:12,480	WARNING	41	net.sf.l2j.gameserver.ai.AbstractAI	Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead.
    2020.08.20 00:54:17,778	CONFIG	266	net.sf.l2j.gameserver.datatables.SpawnTable	SpawnTable [XML]: spawned 4 territories.
    2020.08.20 00:54:23,011	WARNING	45	net.sf.l2j.gameserver.ai.AbstractAI	Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead.
    2020.08.20 00:54:28,594	WARNING	118	net.sf.l2j.gameserver.ai.AbstractAI	Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead.
    2020.08.20 00:54:30,139	WARNING	98	net.sf.l2j.gameserver.ai.AbstractAI	Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead.
    2020.08.20 00:54:33,273	WARNING	88	net.sf.l2j.gameserver.ai.AbstractAI	Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead.
    2020.08.20 00:54:51,963	WARNING	77	net.sf.l2j.gameserver.ai.AbstractAI	Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead.
    2020.08.20 00:55:00,044	WARNING	135	net.sf.l2j.gameserver.ai.AbstractAI	Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead.
    2020.08.20 00:55:01,558	WARNING	48	net.sf.l2j.gameserver.ai.AbstractAI	Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead.
    2020.08.20 00:55:08,532	WARNING	128	net.sf.l2j.gameserver.ai.AbstractAI	Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead.
    2020.08.20 00:55:14,795	WARNING	31	net.sf.l2j.gameserver.ai.AbstractAI	Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead.
    2020.08.20 00:55:16,914	WARNING	97	net.sf.l2j.gameserver.ai.AbstractAI	Wrong Delay Set in Npc Walker Functions = 0 secs, using default delay: 0 secs instead.

     

    Ничего не показывает ( 

    вот у меня есть догадка, но это так мысль 

    старое окно профы имеет вид  

    <td><center><a action="bypass -h npc_%objectId%_class_master">Получить профессию</a></center></td>

    новое такой 

     

    <td><center><a action="bypass -h vch_classmaster">Получить профессию</a></center></td>

    Может в этом есть что то куда можно ковырнуть, на другом ядре то пашет все :mellow:


  6. Да, вот скрин в игре, выбарешь дальше никакой реакции или ошибок в гс

     

    Спойлер
    
    /*
     * This program 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 2, or (at your option)
     * any later version.
     *
     * This program 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, write to the Free Software
     * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
     * 02111-1307, USA.
     *
     * http://www.gnu.org/copyleft/gpl.html
     */
    package scripts.commands;
    
    import java.util.Map;
    import java.util.logging.Logger;
    
    import javolution.util.FastMap;
    import net.sf.l2j.Config;
    import scripts.commands.voicedcommandhandlers.*;
    import net.sf.l2j.util.log.AbstractLogger;
    
    /**
     * This class ...
     *
     * @version $Revision: 1.1.4.5 $ $Date: 2005/03/27 15:30:09 $
     */
    public class VoicedCommandHandler {
    
        private static Logger _log = AbstractLogger.getLogger(VoicedCommandHandler.class.getName());
        private static VoicedCommandHandler _instance;
        private Map<String, IVoicedCommandHandler> _datatable;
    
        public static VoicedCommandHandler getInstance() {
            if (_instance == null) {
                _instance = new VoicedCommandHandler();
            }
            return _instance;
        }
    
        private VoicedCommandHandler() {
            _datatable = new FastMap<String, IVoicedCommandHandler>();
            if (Config.CMD_ADENA_COL) {
                registerVoicedCommandHandler(new AdenaCol());
            }
            if (Config.CMD_EVENTS) {
                registerVoicedCommandHandler(new Events());
            }
            if (Config.CMD_MENU) {
                registerVoicedCommandHandler(new Menu());
            }
            if (Config.ALT_ALLOW_OFFLINE_TRADE) {
                registerVoicedCommandHandler(new Offline());
            }
            if (Config.L2JMOD_ALLOW_WEDDING) {
                registerVoicedCommandHandler(new Wedding());
            }
            registerVoicedCommandHandler(new Silence());
    
            registerVoicedCommandHandler(new BlockBuff());
            registerVoicedCommandHandler(new Security());
            //модераторы
            registerVoicedCommandHandler(new ModBanChat());
            registerVoicedCommandHandler(new ModKick());
            registerVoicedCommandHandler(new ModTitle());
            registerVoicedCommandHandler(new ModHelp());
            registerVoicedCommandHandler(new ModSpecial());
    		    if (Config.ALLOW_CLASS_MASTERS)
          registerVoicedCommandHandler((IVoicedCommandHandler)new ClassMaster()); 
    
            _log.config("VoicedCommandHandler: Loaded " + _datatable.size() + " handlers.");
        }
    
        public void registerVoicedCommandHandler(IVoicedCommandHandler handler) {
            String[] ids = handler.getVoicedCommandList();
            for (int i = 0; i < ids.length; i++) {
                //if (Config.DEBUG) _log.fine("Adding handler for command "+ids[i]);
                _datatable.put(ids[i], handler);
            }
        }
    
        public IVoicedCommandHandler getVoicedCommandHandler(String voicedCommand) {
            String command = voicedCommand;
            if (voicedCommand.indexOf(" ") != -1) {
                command = voicedCommand.substring(0, voicedCommand.indexOf(" "));
            }
            //if (Config.DEBUG)
            //_log.fine("getting handler for command: "+command+" -> "+(_datatable.get(command) != null));
            return _datatable.get(command);
        }
    
        /**
         * @return
         */
        public int size() {
            return _datatable.size();
        }
    }

     

     

    Безымянный.jpg


  7. Полностью, вытащил и закинул(не тупо, а именно вникая что куда). Думаю что зарегистрирован(в игре .classmaster появляется окно) Честно не совсем понял о чем именно речь, в каком файле регистрируется ? 


  8. Всем привет! Добавил себе в ядро PW фишку которой не хватает .classmaster, все прекрасно при достижении 20/40/80 лвл появляется окно, выбираешь профу ничего не происходит, вообще никаких ошибок не показывает! Даже через кота не хочет братся профа. Извлек скрипт из ядра другого pw, полностью то есть конфиги и тд. успешно скомпил без ошибок! Уже неделю ищу, но никаких зацепок даже.

     Кто может хоть чем то помочь, зацепку хотя бы ?

    Спойлер
    
    package scripts.commands.voicedcommandhandlers;
    
    import java.util.List;
    import net.sf.l2j.Config;
    import net.sf.l2j.Config.EventReward;
    import net.sf.l2j.gameserver.cache.HtmCache;
    import net.sf.l2j.gameserver.cache.Static;
    import net.sf.l2j.gameserver.datatables.CharTemplateTable;
    import net.sf.l2j.gameserver.datatables.ClassRewardsData;
    import net.sf.l2j.gameserver.datatables.ItemTable;
    import net.sf.l2j.gameserver.model.L2ItemInstance;
    import net.sf.l2j.gameserver.model.L2Object;
    import net.sf.l2j.gameserver.model.PcInventory;
    import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
    import net.sf.l2j.gameserver.model.base.ClassId;
    import net.sf.l2j.gameserver.model.base.ClassLevel;
    import net.sf.l2j.gameserver.model.base.PlayerClass;
    import net.sf.l2j.gameserver.model.base.SubClass;
    import net.sf.l2j.gameserver.network.serverpackets.L2GameServerPacket;
    import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
    import scripts.commands.IVoicedCommandHandler;
    
    public class ClassMaster implements IVoicedCommandHandler {
      private static final String[] VOICED_COMMANDS = new String[] { "classmaster" };
      
      public boolean useVoicedCommand(String command, L2PcInstance player, String target) {
        if (command.equalsIgnoreCase("classmaster")) {
          showWelcome(player);
        } else if (command.startsWith("classmaster_")) {
          String classmaster = command.substring(12).trim();
          if (classmaster.startsWith("changeclass")) {
            int class_id = Integer.parseInt(classmaster.substring(11).trim());
            profList(player, class_id);
          } else if (classmaster.startsWith("reward")) {
            int set_id = Integer.parseInt(classmaster.substring(6).trim());
            giveReward(player, set_id);
          } 
        } 
        return true;
      }
      
      private void giveReward(L2PcInstance player, int set_id) {
        if (!player.getShadeItems())
          return; 
        player.setShadeItems(false);
        PcInventory pcInventory = player.getInventory();
        List<ClassRewardsData.ClassReward> classreward = (List<ClassRewardsData.ClassReward>)ClassRewardsData.getInstance().getClassRewards().get(set_id);
        if (classreward == null) {
          player.sendCritMessage("Ошибка, набора не существует");
          return;
        } 
        for (ClassRewardsData.ClassReward value : classreward) {
          L2ItemInstance item = ItemTable.getInstance().createItem("ClassReward", value.id, value.count, player);
          player.addItem("ClassReward", item, null, true);
          if (value.equip && item.isEquipable())
            pcInventory.equipItem(item); 
          if (value.enchant > 0 && item.canBeEnchanted())
            item.setEnchantLevel(value.enchant); 
        } 
        player.sendChanges();
        player.sendItems(true);
        ClassLevel classLevel = PlayerClass.values()[player.getClassId().getId()].getLevel();
        if ((classLevel == ClassLevel.Second && player.getLevel() >= 40) || (classLevel == ClassLevel.Third && player.getLevel() >= 76))
          useVoicedCommand("classmaster", player, null); 
      }
      
      private void showWelcome(L2PcInstance player) {
        ClassId class_id = player.getClassId();
        int class_level = class_id.level();
        int new_class_level = class_level + 1;
        int p_level = player.getLevel();
        if (((p_level >= 20 && class_level == 0) || (p_level >= 40 && class_level == 1) || (p_level >= 76 && class_level == 2)) && class_id.getId() < 88) {
          NpcHtmlMessage htm = new NpcHtmlMessage(0);
          htm.setFile("data/html/classmaster/ClassList.htm");
          StringBuilder html = new StringBuilder();
          for (ClassId child : ClassId.values()) {
            if (child.childOf(class_id) && child.level() == new_class_level)
              html.append("<tr><td align=center><a action=\"bypass -h vch_classmaster_changeclass ").append(child.getId()).append("\">").append(CharTemplateTable.getClassNameById(child.getId())).append("</a></td></tr>"); 
          } 
          htm.replace("%classname%", CharTemplateTable.getClassNameById(class_id.getId()));
          htm.replace("%classlist%", html.toString());
          player.sendPacket((L2GameServerPacket)htm);
        } else {
          switch (class_level) {
            case 0:
              player.sendCritMessage("Попробуйте, когда получите 20 уровень.");
              break;
            case 1:
              player.sendCritMessage("Попробуйте, когда получите 40 уровень.");
              break;
            case 2:
              player.sendCritMessage("Попробуйте, когда получите 76 уровень.");
              break;
            case 3:
              player.sendCritMessage("Нет доступных профессий.");
              break;
          } 
        } 
      }
      
      private void profList(L2PcInstance player, int class_id) {
        int class_level = player.getClassId().level();
        int new_class_level = class_level + 1;
        int p_level = player.getLevel();
        EventReward pay = (EventReward)Config.CLASS_MASTERS_PRICES.get(Integer.valueOf(new_class_level));
        if (pay != null) {
          if (player.getItemCount(pay.id) < pay.count) {
            player.sendCritMessage("C" + pay.count + " " + ItemTable.getInstance().getTemplate(pay.id).getName());
            return;
          } 
          player.destroyItemByItemId("clasmaster", pay.id, pay.count, (L2Object)player, true);
        } 
        changeClass(player, class_id);
        player.checkAllowedSkills();
        if (class_id >= 88) {
          player.sendPacket((L2GameServerPacket)Static.THIRD_CLASS_TRANSFER);
        } else {
          player.sendPacket((L2GameServerPacket)Static.CLASS_TRANSFER);
        } 
        if (Config.REWARD_CLASS)
          if ((Config.REWARD_FIRST_CLASS && class_level == 0) || (Config.REWARD_SECOND_CLASS && class_level == 1) || (Config.REWARD_THIRD_CLASS && class_level == 2)) {
            player.setShadeItems(true);
            NpcHtmlMessage html = NpcHtmlMessage.id(0);
            String htm = HtmCache.getInstance().getHtm("data/html/classmaster/Up_" + new_class_level + ".htm");
            html.setHtml(htm);
            html.replace("%ClassName%", CharTemplateTable.getClassNameById(player.getClassId().getId()));
            player.sendPacket((L2GameServerPacket)html);
          }  
        if ((!Config.REWARD_CLASS && ((new_class_level == 1 && p_level >= 40) || (new_class_level == 2 && p_level >= 76))) || (!Config.REWARD_FIRST_CLASS && class_level == 0) || (!Config.REWARD_SECOND_CLASS && class_level == 1))
          showWelcome(player); 
      }
      
      private void changeClass(L2PcInstance player, int val) {
        player.abortAttack();
        player.abortCast();
        player.setIsParalyzed(true);
        player.setClassId(val);
        if (player.isSubClassActive()) {
          ((SubClass)player.getSubClasses().get(Integer.valueOf(player.getClassIndex()))).setClassId(player.getActiveClass());
        } else {
          player.setBaseClass(player.getActiveClass());
        } 
        player.rewardSkills();
        player.store();
        player.broadcastUserInfo();
        player.setIsParalyzed(false);
      }
      
      public String[] getVoicedCommandList() {
        return VOICED_COMMANDS;
      }
    }
    Спойлер
    
    
    <html><title>Class Master</title><body><center><br>
    	
    	<font color="e15800">Смена професси для %classname%</font>
    	<img src="l2ui.squaregray" width="295" height="1">
    	<table width=295>
    		%classlist%
    	</table>
    <img src="l2ui.squaregray" width="295" height="1"><br>
    </center></body></html>

     

     

     


  9.  

    Привет всем! Скачал исходник pw, возникли две проблемы кто поможет ? 

    1) Решил добавить .classmaster, взял другое ядро PW где пашет, все вытащил и добавляю себе, вроде все хорошо, но выдает 1 ошибку, в чем проблема может быть ? 

    Спойлер
    
    init:
        [mkdir] Created dir: C:\workspace\5\build
        [mkdir] Created dir: C:\workspace\5\build\classes
    compile:
        [javac] Compiling 1441 source files to C:\workspace\5\build\classes
        [javac] C:\workspace\5\src\scripts\commands\voicedcommandhandlers\ClassMaster.java:136: error: incompatible types: net.sf.l2j.Config.EventReward cannot be converted to net.sf.l2j.gameserver.model.EventReward
        [javac] /* 136 */     EventReward pay = (EventReward)Config.CLASS_MASTERS_PRICES.get(Integer.valueOf(new_class_level));
        [javac]                                                                             ^
        [javac] Note: Some input files use or override a deprecated API.
        [javac] Note: Recompile with -Xlint:deprecation for details.
        [javac] Note: Some input files use unchecked or unsafe operations.
        [javac] Note: Recompile with -Xlint:unchecked for details.
        [javac] 1 error
    
    BUILD FAILED
    C:\workspace\5\build.xml:31: Compile failed; see the compiler error output for details.

     

     

    Спойлер
    
    /*     */ package scripts.commands.voicedcommandhandlers;
    /*     */ 
    /*     */ import java.util.List;
    /*     */ import net.sf.l2j.Config;
    /*     */ import net.sf.l2j.gameserver.cache.HtmCache;
    /*     */ import net.sf.l2j.gameserver.cache.Static;
    /*     */ import net.sf.l2j.gameserver.datatables.CharTemplateTable;
    /*     */ import net.sf.l2j.gameserver.datatables.ClassRewardsData;
    /*     */ import net.sf.l2j.gameserver.datatables.ItemTable;
    /*     */ import net.sf.l2j.gameserver.model.EventReward;
    /*     */ import net.sf.l2j.gameserver.model.L2ItemInstance;
    /*     */ import net.sf.l2j.gameserver.model.L2Object;
    /*     */ import net.sf.l2j.gameserver.model.PcInventory;
    /*     */ import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
    /*     */ import net.sf.l2j.gameserver.model.base.ClassId;
    /*     */ import net.sf.l2j.gameserver.model.base.ClassLevel;
    /*     */ import net.sf.l2j.gameserver.model.base.PlayerClass;
    /*     */ import net.sf.l2j.gameserver.model.base.SubClass;
    /*     */ import net.sf.l2j.gameserver.network.serverpackets.L2GameServerPacket;
    /*     */ import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
    /*     */ import scripts.commands.IVoicedCommandHandler;
    /*     */ 
    /*     */ public class ClassMaster
    /*     */   implements IVoicedCommandHandler {
    /*  25 */   private static final String[] VOICED_COMMANDS = new String[] { "classmaster" };
    /*     */ 
    /*     */ 
    /*     */   
    /*     */   public boolean useVoicedCommand(String command, L2PcInstance player, String target) {
    /*  30 */     if (command.equalsIgnoreCase("classmaster")) {
    /*     */       
    /*  32 */       showWelcome(player);
    /*     */     }
    /*  34 */     else if (command.startsWith("classmaster_")) {
    /*     */       
    /*  36 */       String classmaster = command.substring(12).trim();
    /*  37 */       if (classmaster.startsWith("changeclass")) {
    /*     */         
    /*  39 */         int class_id = Integer.parseInt(classmaster.substring(11).trim());
    /*  40 */         profList(player, class_id);
    /*     */       }
    /*  42 */       else if (classmaster.startsWith("reward")) {
    /*     */         
    /*  44 */         int set_id = Integer.parseInt(classmaster.substring(6).trim());
    /*  45 */         giveReward(player, set_id);
    /*     */       } 
    /*     */     } 
    /*     */     
    /*  49 */     return true;
    /*     */   }
    /*     */ 
    /*     */   
    /*     */   private void giveReward(L2PcInstance player, int set_id) {
    /*  54 */     if (!player.getShadeItems()) {
    /*     */       return;
    /*     */     }
    /*  57 */     player.setShadeItems(false);
    /*     */     
    /*  59 */     PcInventory pcInventory = player.getInventory();
    /*     */     
    /*  61 */     List<ClassRewardsData.ClassReward> classreward = (List<ClassRewardsData.ClassReward>)ClassRewardsData.getInstance().getClassRewards().get(set_id);
    /*     */     
    /*  63 */     if (classreward == null) {
    /*     */       
    /*  65 */       player.sendCritMessage("Ошибка, набора не существует");
    /*     */       
    /*     */       return;
    /*     */     } 
    /*  69 */     for (ClassRewardsData.ClassReward value : classreward) {
    /*     */       
    /*  71 */       L2ItemInstance item = ItemTable.getInstance().createItem("ClassReward", value.id, value.count, player);
    /*  72 */       player.addItem("ClassReward", item, null, true);
    /*  73 */       if (value.equip && item.isEquipable())
    /*  74 */         pcInventory.equipItem(item); 
    /*  75 */       if (value.enchant > 0 && item.canBeEnchanted()) {
    /*  76 */         item.setEnchantLevel(value.enchant);
    /*     */       }
    /*     */     } 
    /*  79 */     player.sendChanges();
    /*  80 */     player.sendItems(true);
    /*     */     
    /*  82 */     ClassLevel classLevel = PlayerClass.values()[player.getClassId().getId()].getLevel();
    /*  83 */     if ((classLevel == ClassLevel.Second && player.getLevel() >= 40) || (classLevel == ClassLevel.Third && player.getLevel() >= 76)) {
    /*  84 */       useVoicedCommand("classmaster", player, null);
    /*     */     }
    /*     */   }
    /*     */   
    /*     */   private void showWelcome(L2PcInstance player) {
    /*  89 */     ClassId class_id = player.getClassId();
    /*  90 */     int class_level = class_id.level();
    /*  91 */     int new_class_level = class_level + 1;
    /*  92 */     int p_level = player.getLevel();
    /*     */     
    /*  94 */     if (((p_level >= 20 && class_level == 0) || (p_level >= 40 && class_level == 1) || (p_level >= 76 && class_level == 2)) && class_id.getId() < 88) {
    /*     */       
    /*  96 */       NpcHtmlMessage htm = new NpcHtmlMessage(0);
    /*  97 */       htm.setFile("classmaster/ClassList.htm");
    /*  98 */       StringBuilder html = new StringBuilder();
    /*     */       
    /* 100 */       for (ClassId child : ClassId.values()) {
    /*     */         
    /* 102 */         if (child.childOf(class_id) && child.level() == new_class_level) {
    /* 103 */           html.append("<tr><td align=center><a action=\"bypass -h vch_classmaster_changeclass ").append(child.getId()).append("\">").append(CharTemplateTable.getClassNameById(child.getId())).append("</a></td></tr>");
    /*     */         }
    /*     */       } 
    /* 106 */       htm.replace("%classname%", CharTemplateTable.getClassNameById(class_id.getId()));
    /* 107 */       htm.replace("%classlist%", html.toString());
    /* 108 */       player.sendPacket((L2GameServerPacket)htm);
    /*     */     }
    /*     */     else {
    /*     */       
    /* 112 */       switch (class_level) {
    /*     */         
    /*     */         case 0:
    /* 115 */           player.sendCritMessage("Попробуйте, когда получите 20 уровень.");
    /*     */           break;
    /*     */         case 1:
    /* 118 */           player.sendCritMessage("Попробуйте, когда получите 40 уровень.");
    /*     */           break;
    /*     */         case 2:
    /* 121 */           player.sendCritMessage("Попробуйте, когда получите 76 уровень.");
    /*     */           break;
    /*     */         case 3:
    /* 124 */           player.sendCritMessage("Нет доступных профессий.");
    /*     */           break;
    /*     */       } 
    /*     */     } 
    /*     */   }
    /*     */ 
    /*     */   
    /*     */   private void profList(L2PcInstance player, int class_id) {
    /* 132 */     int class_level = player.getClassId().level();
    /* 133 */     int new_class_level = class_level + 1;
    /* 134 */     int p_level = player.getLevel();
    /*     */     
    /* 136 */     EventReward pay = (EventReward)Config.CLASS_MASTERS_PRICES.get(Integer.valueOf(new_class_level));
    /* 137 */     if (pay != null) {
    /*     */       
    /* 139 */       if (player.getItemCount(pay.id) < pay.count) {
    /*     */         
    /* 141 */         player.sendCritMessage("Cтоимость получения профессии " + pay.count + " " + ItemTable.getInstance().getTemplate(pay.id).getName());
    /*     */         return;
    /*     */       } 
    /* 144 */       player.destroyItemByItemId("clasmaster", pay.id, pay.count, (L2Object)player, true);
    /*     */     } 
    /*     */     
    /* 147 */     changeClass(player, class_id);
    /* 148 */     player.checkAllowedSkills();
    /*     */     
    /* 150 */     if (class_id >= 88) {
    /* 151 */       player.sendPacket((L2GameServerPacket)Static.THIRD_CLASS_TRANSFER);
    /*     */     } else {
    /* 153 */       player.sendPacket((L2GameServerPacket)Static.CLASS_TRANSFER);
    /*     */     } 
    /* 155 */     if (Config.REWARD_CLASS)
    /*     */     {
    /* 157 */       if ((Config.REWARD_FIRST_CLASS && class_level == 0) || (Config.REWARD_SECOND_CLASS && class_level == 1) || (Config.REWARD_THIRD_CLASS && class_level == 2)) {
    /*     */         
    /* 159 */         player.setShadeItems(true);
    /* 160 */         NpcHtmlMessage html = NpcHtmlMessage.id(0);
    /* 161 */         String htm = HtmCache.getInstance().getHtm("classmaster/Up_" + new_class_level + ".htm");
    /* 162 */         html.setHtml(htm);
    /* 163 */         html.replace("%ClassName%", CharTemplateTable.getClassNameById(player.getClassId().getId()));
    /* 164 */         player.sendPacket((L2GameServerPacket)html);
    /*     */       } 
    /*     */     }
    /*     */     
    /* 168 */     if ((!Config.REWARD_CLASS && ((new_class_level == 1 && p_level >= 40) || (new_class_level == 2 && p_level >= 76))) || (!Config.REWARD_FIRST_CLASS && class_level == 0) || (!Config.REWARD_SECOND_CLASS && class_level == 1)) {
    /* 169 */       showWelcome(player);
    /*     */     }
    /*     */   }
    /*     */   
    /*     */   private void changeClass(L2PcInstance player, int val) {
    /* 174 */     player.abortAttack();
    /* 175 */     player.abortCast();
    /* 176 */     player.setIsParalyzed(true);
    /* 177 */     player.setClassId(val);
    /*     */     
    /* 179 */     if (player.isSubClassActive()) {
    /* 180 */       ((SubClass)player.getSubClasses().get(Integer.valueOf(player.getClassIndex()))).setClassId(player.getActiveClass());
    /*     */     } else {
    /* 182 */       player.setBaseClass(player.getActiveClass());
    /*     */     } 
    /* 184 */     player.rewardSkills();
    /* 185 */     player.store();
    /* 186 */     player.broadcastUserInfo();
    /* 187 */     player.setIsParalyzed(false);
    /*     */   }
    /*     */ 
    /*     */ 
    /*     */   
    /*     */   public String[] getVoicedCommandList() {
    /* 193 */     return VOICED_COMMANDS;
    /*     */   }
    /*     */ }

     

     

    2) В каком именно файле стоит запрет на использование банки НР при смерти ??? хочу ACP доделать(юзается банка НР когда мертв)

    Есть ядро с фиксом, но какой именной файл отвечает за запрет на использование банки?? 


  10. Частично решил все

    1) Спасибо за скрипт CalypsoToolz,  сам разобрался, но плюс дал, надо добавить false. Более того нашел ядро с отдельным HP/MP/CP !

    2) Есть приглашение на эвенты EventRegPopUp = True

    3) Не нашел решения (

    появился вопрос

    4) Реально ли добавить проф окно при 20/40/76 без npc, как понял это в ядро надо, нельзя его без ядра реализовать ? или если есть скрипт поделитесь 

    Спойлер
    
    package scripts.commands.voicedcommandhandlers;
    
    import net.sf.l2j.Config;
    import net.sf.l2j.gameserver.datatables.SkillTable;
    import net.sf.l2j.gameserver.model.L2Skill;
    import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
    import net.sf.l2j.gameserver.datatables.xml.CharTemplateData;
    import net.sf.l2j.gameserver.model.base.ClassId;
    import net.sf.l2j.gameserver.model.base.ClassLevel;
    import net.sf.l2j.gameserver.model.base.PlayerClass;
    import net.sf.l2j.gameserver.model.quest.Quest;
    import net.sf.l2j.gameserver.network.SystemMessageId;
    import net.sf.l2j.gameserver.network.serverpackets.ActionFailed;
    import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUse;
    import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
    
    public class ClassMass  implements IVoicedCommandHandler
    
    {
    
      private static final String[] VOICED_COMMANDS = { "classmaster","change_class"};
    
     
    
      public boolean useVoicedCommand(String command, L2PcInstance player, String target)
    
      {
    
      if (command.equalsIgnoreCase("classmaster"))
    
      {
    
        ClassId classId = player.getClassId();
    
        int jobLevel = 0;
    
        int level = player.getLevel();
    
        ClassLevel lvl = PlayerClass.values()[classId.getId()].getLevel();
    
        switch (lvl)
    
        {
    
         case First:jobLevel = 1;break;
    
         case Second:jobLevel = 2;break;
    
         case Third:jobLevel = 3;break;
    
         default:jobLevel = 4;
    
        }
    
        if (player.isGM()) showChatWindowChooseClass(player);
    
        else if (((level >= 20 && jobLevel == 1) || (level >= 40 && jobLevel == 2)) && Config.ALLOW_CLASS_MASTER)
    
         showChatWindow(player, classId.getId());
    
        else if (level >= 76 && Config.ALLOW_CLASS_MASTER && classId.getId() < 88)
    
        {
    
         for (int i = 0; i < SECONDN_CLASS_IDS.length; i++)
    
         {
    
          if (classId.getId() == SECONDN_CLASS_IDS)
    
          {
    
           NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
    
           StringBuilder sb = new StringBuilder();
    
           sb.append("<html><body<table width=200>");
    
           sb.append("<tr><td><center>" + CharTemplateData.getInstance().getClassNameById(player.getClassId().getId()) + " Class Master:</center></td></tr>");
    
           sb.append("<tr><td><br></td></tr>");
    
           sb.append("<tr><td><a action=\"bypass -h npc_" + getObjectId() + "_change_class " + (88 + i) + "\">Advance to " + CharTemplateData.getInstance().getClassNameById(88 + i) + "</a></td></tr>");
    
           sb.append("<tr><td><br></td></tr>");
    
           sb.append("</table></body></html>");
    
           html.setHtml(sb.toString());
    
           player.sendPacket(html);
    
           break;
    
          }
    
         }
    
        }
    
        else
    
        {
    
         NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
    
         StringBuilder sb = new StringBuilder();
    
         sb.append("<html><body>");
    
         switch (jobLevel)
    
         {
    
          case 1:
    
           sb.append("Come back here when you reach level 20 to change your class.<br>");
    
          break;
    
          case 2:
    
           sb.append("Come back here when you reach level 40 to change your class.<br>");
    
          break;
    
          case 3:
    
           sb.append("There are no more class changes for you.<br>");
    
          break;
    
         }
    
         for (Quest q : Quest.findAllEvents())
    
          sb.append("Event: <a action=\"bypass -h Quest " + q.getName() + "\">" + q.getDescr() + "</a><br>");
    
         sb.append("</body></html>");
    
         html.setHtml(sb.toString());
    
         player.sendPacket(html);
    
        }
    
        player.sendPacket(ActionFailed.STATIC_PACKET);
    
      }
    
      else if (command.startsWith("change_class"))
    
      {
    
       int val = Integer.parseInt(command.substring(13));
    
       ClassId classId = player.getClassId();
    
       int level = player.getLevel();
    
       int jobLevel = 0;
    
       int newJobLevel = 0;
    
       ClassLevel lvlnow = PlayerClass.values()[classId.getId()].getLevel();
    
       if (player.isGM())
    
       {
    
        changeClass(player, val);
    
        player.rewardSkills();
    
        if (val >= 88)
    
         player.sendPacket(SystemMessageId.THIRD_CLASS_TRANSFER);
    
        else
    
         player.sendPacket(SystemMessageId.CLASS_TRANSFER);
    
        NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
    
        StringBuilder sb = new StringBuilder();
    
        sb.append("<html><body>");
    
        sb.append("You have now become a <font color=\"LEVEL\">" + CharTemplateData.getInstance().getClassNameById(player.getClassId().getId()) + "</font>.");
    
        sb.append("</body></html>");
    
        html.setHtml(sb.toString());
    
        player.sendPacket(html);
    
        return;
    
       }
    
       switch (lvlnow)
    
       {
    
        case First:
    
         jobLevel = 1;
    
        break;
    
        case Second:
    
         jobLevel = 2;
    
        break;
    
        case Third:
    
         jobLevel = 3;
    
        break;
    
        default:
    
         jobLevel = 4;
    
       }
    
       if (jobLevel == 4)
    
        return; // no more job changes
    
       ClassLevel lvlnext = PlayerClass.values()[val].getLevel();
    
       switch (lvlnext)
    
       {
    
        case First:
    
         newJobLevel = 1;
    
        break;
    
        case Second:
    
         newJobLevel = 2;
    
        break;
    
        case Third:
    
         newJobLevel = 3;
    
        break;
    
        default:
    
         newJobLevel = 4;
    
       }
    
       // prevents changing between same level jobs
    
       if (newJobLevel != jobLevel + 1)
    
        return;
    
       if (level < 20 && newJobLevel > 1)
    
        return;
    
       if (level < 40 && newJobLevel > 2)
    
        return;
    
       if (level < 75 && newJobLevel > 3)
    
        return;
    
       changeClass(player, val);
    
       player.rewardSkills();
    
       if (val >= 88)
    
        player.sendPacket(SystemMessageId.THIRD_CLASS_TRANSFER); // system sound 3rd occupation
    
       else
    
        player.sendPacket(SystemMessageId.CLASS_TRANSFER); // system sound for 1st and 2nd occupation
    
       player.broadcastPacket(new MagicSkillUse(player, player, 5103, 1, 1000, 0));
    
       HtmlShow(player);
    
       checks(player);
    
       checkAutoEq(player,newJobLevel);
    
      }
    
        return true;
    
      }
    
    private void changeClass(L2PcInstance player, int val)
    
    {
    
      final ClassId currentClassId = player.getClassId();
    
      if (getMinLevel(currentClassId.level()) > player.getLevel())
    
       return;
    
      if (!validateClassId(currentClassId, val))
    
       return;
    
      player.setClassId(val);
    
      if (player.isSubClassActive()){player.getSubClasses().get(player.getClassIndex()).setClassId(player.getActiveClass());}
    
      else
    
      {
    
       ClassId classId = ClassId.getClassIdByOrdinal(player.getActiveClass());
    
                if (classId.getParent() != null){while (classId.level() == 0){classId = classId.getParent();}}
    
                player.setBaseClass(classId);
    
      }
    
      player.broadcastUserInfo();
    
    } 
    
      public String[] getVoicedCommandList(){return VOICED_COMMANDS;}
    
    }

     

     


  11. Всем добра! Сборка ласт PW,  подскажите кому не сложно с меня +

    1) нужно реализовать ACP, знаю оно есть через ctrl, MP/CP прекрасно работают, но там когда умирает персонаж банка НР юзается быстро без останки

    Кто может в этом разобрался или как исправить посоветуйте пожалуйста....

     Выдернул скрипт из другой сборки pwsoft, там прекрасно работает! У меня выдает эти ошибки 

    Как исправить эти ошибки ниже?

     

    2) Есть ли в PW фишка ??? выскакивает приглашение на эвенты или на РБ видел на l2code реализован.

    3) Снимается CP когда убивает моб, не критично но есть ли решение ??

    ----------
    1. ERROR in \AutoCombatPotions.java (at line 107)
            handler.useItem(player, potions);
                    ^^^^^^^
    The method useItem(L2PlayableInstance, L2ItemInstance, boolean) in the type IIte
    mHandler is not applicable for the arguments (L2PcInstance, L2ItemInstance)
    ----------
    2. ERROR in \AutoCombatPotions.java (at line 121)
            handler.useItem(player, potions);
                    ^^^^^^^
    The method useItem(L2PlayableInstance, L2ItemInstance, boolean) in the type IIte
    mHandler is not applicable for the arguments (L2PcInstance, L2ItemInstance)
    ----------
    3. ERROR in \AutoCombatPotions.java (at line 135)
            handler.useItem(player, potions);
                    ^^^^^^^
    The method useItem(L2PlayableInstance, L2ItemInstance, boolean) in the type IIte
    mHandler is not applicable for the arguments (L2PcInstance, L2ItemInstance)
    ----------
    3 problems (3 errors)
    The method useItem(net.sf.l2j.gameserver.model.actor.instance.L2PlayableInstance
    , net.sf.l2j.gameserver.model.L2ItemInstance, boolean) in the type scripts.items
    .IItemHandler is not applicable for the arguments (net.sf.l2j.gameserver.model.a
    ctor.instance.L2PcInstance, net.sf.l2j.gameserver.model.L2ItemInstance)
    The method useItem(net.sf.l2j.gameserver.model.actor.instance.L2PlayableInstance
    , net.sf.l2j.gameserver.model.L2ItemInstance, boolean) in the type scripts.items
    .IItemHandler is not applicable for the arguments (net.sf.l2j.gameserver.model.a
    ctor.instance.L2PcInstance, net.sf.l2j.gameserver.model.L2ItemInstance)
    The method useItem(net.sf.l2j.gameserver.model.actor.instance.L2PlayableInstance
    , net.sf.l2j.gameserver.model.L2ItemInstance, boolean) in the type scripts.items
    .IItemHandler is not applicable for the arguments (net.sf.l2j.gameserver.model.a
    ctor.instance.L2PcInstance, net.sf.l2j.gameserver.model.L2ItemInstance)
    Failed executing script: C:\12345\server\gameserver\data\scripts\calypso\AutoCom
    batPotions.java. See AutoCombatPotions.java.error.log for details.
    ##############################

     

    Вот сам скрипт 

    package calypso;
    
    import java.util.HashMap;
    import java.util.concurrent.ScheduledFuture;
    import java.util.logging.Logger;
    
    import net.sf.l2j.gameserver.ThreadPoolManager;
    import net.sf.l2j.gameserver.model.L2ItemInstance;
    import net.sf.l2j.gameserver.model.PcInventory;
    import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
    import scripts.commands.IVoicedCommandHandler;
    import scripts.commands.VoicedCommandHandler;
    import scripts.items.IItemHandler;
    import scripts.items.ItemHandler;
    
    /**
     * 
     * @author Calypso
     *
     */
    
    public class AutoCombatPotions implements IVoicedCommandHandler {
    
    	private final static Logger _log = Logger.getLogger(AutoCombatPotions.class.getName());
    
    	// разрешить юз банок
    	private static boolean ALLOW_CP = true, ALLOW_HP = true, ALLOW_MP = true;
    	// проценты для юза
    	private static int PERCENT_CP = 90, PERCENT_HP = 90, PERCENT_MP = 90;
    	// банки, ищутся в сумке чара, юзается первая попавшаяся
    	private static final int[] CP_POTIONS = { 5592 }, HP_POTIONS = { 1539 }, MP_POTIONS = { 728 };
    	// как часто запускать поток для юза всех банок (это значение будет максимальной погрешностью)
    	private static long RUN_DELAY = 500;
    	// реюз каждого типа банок (нет смысла устанавливать менее RUN_DELAY)
    	private static long CP_DELAY = 500, HP_DELAY = 15000, MP_DELAY = 1000;
    	// только для премиумов
    	private static boolean ONLY_PREMIUM = false;
    
    	private static HashMap<Integer, ScheduledFuture<?>> runnedAcps = new HashMap<Integer, ScheduledFuture<?>>();
    	private static HashMap<String, Long> reuses = new HashMap<String, Long>();
    
    	@Override
    	public String[] getVoicedCommandList() {
    		return new String[] { "acpon", "acpoff", "acpof" };
    	}
    
    	@Override
    	public boolean useVoicedCommand(String command, L2PcInstance player, String target) {
    		if (player == null)
    			return false;
    
    		if (command.toLowerCase().equals("acpon")) {
    			if (ONLY_PREMIUM && !player.isPremium()) {
    				player.sendMessage("Only for Premium-players!");
    				return false;
    			}
    			if (runnedAcps.containsKey(player.getObjectId())) {
    				player.sendMessage("ACP already started!");
    				return false;
    			}
    			runnedAcps.put(player.getObjectId(), ThreadPoolManager.getInstance()
    					.scheduleAiAtFixedRate(new PotionUseTask(player), RUN_DELAY, RUN_DELAY));
    			player.sendMessage("ACP success started!");
    		} else if (command.toLowerCase().equals("acpoff") || command.toLowerCase().equals("acpof")) {
    			if (runnedAcps.containsKey(player.getObjectId())) {
    				cancelTask(player.getObjectId());
    				player.sendMessage("ACP is stoped!");
    				return false;
    			} else
    				player.sendMessage("ACP already stoped!");
    		}
    		return false;
    	}
    
    	private class PotionUseTask implements Runnable {
    		private L2PcInstance player;
    		private int safeObjId;
    
    		public PotionUseTask(L2PcInstance player) {
    			this.player = player;
    			safeObjId = player.getObjectId();
    		}
    
    		@Override
    		public void run() {
    			try {
    				if (player == null) {
    					_log.info("ACP: player is null!!! WTF? ObjID " + safeObjId);
    					cancelTask(safeObjId);
    					return;
    				}
    				if (player.isOnline() != 1) {
    					cancelTask(safeObjId);
    					return;
    				}
    
    				PcInventory inv = player.getInventory();
    				IItemHandler handler = null;
    				L2ItemInstance potions = null;
    				if (ALLOW_CP && checkReuse(safeObjId, "CP")) {
    					potions = getPotionFromInv(inv, "CP");
    					if (potions != null) {
    						if ((player.getCurrentCp() / player.getMaxCp()) * 100 < PERCENT_CP) {
    							handler = ItemHandler.getInstance().getItemHandler(potions.getItemId());
    							if (handler != null)
    							{
    								handler.useItem(player, potions);
    								setReuse(safeObjId, "CP");
    							}
    						}
    					}
    				}
    
    				if (ALLOW_HP && checkReuse(safeObjId, "HP")) {
    					potions = getPotionFromInv(inv, "HP");
    					if (potions != null) {
    						if ((player.getCurrentHp() / player.getMaxHp()) * 100 < PERCENT_HP) {
    							handler = ItemHandler.getInstance().getItemHandler(potions.getItemId());
    							if (handler != null)
    							{
    								handler.useItem(player, potions);
    								setReuse(safeObjId, "HP");
    							}
    						}
    					}
    				}
    
    				if (ALLOW_MP && checkReuse(safeObjId, "MP")) {
    					potions = getPotionFromInv(inv, "MP");
    					if (potions != null) {
    						if ((player.getCurrentMp() / player.getMaxMp()) * 100 < PERCENT_MP) {
    							handler = ItemHandler.getInstance().getItemHandler(potions.getItemId());
    							if (handler != null)
    							{
    								handler.useItem(player, potions);
    								setReuse(safeObjId, "MP");
    							}
    						}
    					}
    				}
    			} catch (Exception e) {
    				runnedAcps.get(safeObjId).cancel(false);
    			}
    		}
    	}
    
    	private boolean checkReuse(int objId, String type)
    	{
    		String pair = String.valueOf(objId) + ":" + type;
    		if(!reuses.containsKey(pair))
    			return true;
    		long lastUse = reuses.get(pair);
    		if(System.currentTimeMillis() - lastUse >= getReuseForPotion(type))
    			return true;
    		return false;
    	}
    
    	private void setReuse(int objId, String type)
    	{
    		String pair = String.valueOf(objId) + ":" + type;
    		reuses.put(pair, System.currentTimeMillis());
    	}
    
    	private long getReuseForPotion(String type)
    	{
    		type = type.toLowerCase();
    		if(type.equals("cp"))
    			return CP_DELAY;
    		if(type.equals("hp"))
    			return HP_DELAY;
    		if(type.equals("mp"))
    			return MP_DELAY;
    		return 0;
    	}
    
    	private L2ItemInstance getPotionFromInv(PcInventory inv, String type) {
    		L2ItemInstance result = null;
    		int[] search = null;
    
    		if (type.toLowerCase().equals("cp"))
    			search = CP_POTIONS;
    		if (type.toLowerCase().equals("hp"))
    			search = HP_POTIONS;
    		if (type.toLowerCase().equals("mp"))
    			search = MP_POTIONS;
    
    		if (search == null)
    			_log.warning(
    					"ACP: getPotionFromInv() == null, invalid potion type or unsetted id of potions! Type: " + type);
    
    		for (int id : search) {
    			result = inv.getItemByItemId(id);
    			if (result != null)
    				break;
    		}
    		return result;
    	}
    
    	private void cancelTask(int objId) {
    		runnedAcps.remove(objId).cancel(false);
    	}
    
    	public static void main(String... arguments) {
    		VoicedCommandHandler.getInstance().registerVoicedCommandHandler(new AutoCombatPotions());
    		_log.info("### ACP service by Calypso loaded!");
    	}
    }

     


  12. Спасибо Phoenix! Реально помог!

    Кому интересно или столкнется с подобными, в sw есть кнопка очистить КЕШ, ну и нового пользователя в БД с правами для безопасности.

    • Like 1

  13. 17 минут назад, Hotaka сказал:

    а в чем заключается ваше не могу? 

    На сайте нужна регистрация и чтобы статистика показывала, а она не хочет пишет ошибка базы данных 


  14. Приветствую всех и за ранее спасибо что откликнулись! 

    Никак не могу связать базу сервера с сайтом, выдает ошибку 0, если включить показ. ошибок. Перечитал кучу тем и мануалов, все по идее правильно! Реально устал ковырять, поэтому прошу помощи у профи.

    Самое странное что все вчера прекрасно работало все и рег и статситика, единственное SSL включил на хосте, хз это влияет или нет... 

     сразу скажу:

    1) Порты 7777, 2106, 3306 открыты смотрел через 2ип, статический IP

    2) Sql sw13, залил в базу сервера

    3) Ввожу все правильно в админке, ну потому что пару дней назад делал и он прекрасно работал

    4) Использую в админке sw пользователя root

    кто сможет подсказать? 

    Ошибка MySQL!
    ========================

    MySQL вернул ошибку:


    Номер ошибки:
    0 


  15. В базе данных, в зависимости как ты их расставлял, Custom_spawn или просто spawn и так далее есть столбей Respawn_delay, он в секундах если я не ошибаюсь, вот там и выставляй

     

    от анонса о пявлении РБ ты ни как не избавишься, для этого нужны исходы, так что даже хз чем тебе помочь)

    Вот такая таблица есть я ее настроил, а еще есть конфиг в нпс хз где делать и там и там время одинаковое но появляется после смерти

    image692536.jpg


  16. Привет всем. Вопрос как настроить спавн рб сборка pw soft. Каждый раз после рестарта появляется объявление о том что валакас анатарас.... и тд эпики живы, а на деле если тп к никого нету, точнее не все есть. Так вот как сделать чтоб после убийства появлялись через некоторое(заданое) время и не спавнились после рестарта сами ? Сам расствавил рб но если их убить то они сразу ж снова появляются ( Где настроить все это ?

×
×
  • Создать...