romax 18 Опубликовано 6 февраля, 2017 Скрипт проверяет последнюю запись на страничке. бонус получать те у кого упомянуто о сервере (ссылка текст...) if (inputLine.contains("ссылка ...")) player.addItem("Vk", 57, 1000, null, true); package net.sf.l2j.gameserver.arf; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import net.sf.l2j.commons.concurrent.ThreadPool; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; public class VkBonus implements Runnable { private static Map<L2PcInstance, String> vkBonusArr = new HashMap<>(); private static VkBonus jInstance; /** * @return the jVkList */ public static Map<L2PcInstance, String> getjVkList() { return vkBonusArr; } public VkBonus() { ThreadPool.schedule(this, 10_000); } public static VkBonus getInstance() { if (jInstance == null) jInstance = new VkBonus(); return jInstance; } /** * @param command * @param player */ public void setjVkList(L2PcInstance player, String command ) { if (vkBonusArr.containsKey(player) || vkBonusArr.containsValue(command.substring(4))) { player.sendMessage("ID уже зарегистрировано!"); return; } vkBonusArr.put(player, command.substring(4)); } public void addBonus(L2PcInstance player, String id) { String inputLine; try { URL jUrl = new URL("https://api.vk.com/api.php?oauth=1&method=wall.get&owner_id=" + id + "&count=1"); BufferedReader in = new BufferedReader(new InputStreamReader(jUrl.openStream())); while ((inputLine = in.readLine()) != null) { if (inputLine.contains("id=0")) player.addItem("Vk", 57, 1000, null, true); else vkBonusArr.remove(player); } } catch (Exception e) { e.printStackTrace(); } } @[member='override'] public void run() { for (; { jTime(10); for (Entry<L2PcInstance, String> entry : vkBonusArr.entrySet()) { addBonus(entry.getKey(), entry.getValue()); } } } private static void jTime(int sec) { while (sec > 1) { sec = sec - 2; long oneSec = System.currentTimeMillis(); while (oneSec + 2000L > System.currentTimeMillis()) { try { Thread.sleep(2000); } catch (InterruptedException ie) { /* NOP */} } } } } package net.sf.l2j.gameserver.model.actor.instance; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.util.HashMap; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import net.sf.l2j.gameserver.arf.VkBonus; import net.sf.l2j.gameserver.cache.HtmCache; import net.sf.l2j.gameserver.model.actor.template.NpcTemplate; import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage; public class JVkNpcInstance extends L2NpcInstance { private Map vkFirstLastName = new HashMap<>(); public JVkNpcInstance(int objectId, NpcTemplate template) { super(objectId, template); } @[member='override'] public void onBypassFeedback(L2PcInstance player, String command) { if (command.startsWith("jvk")) VkBonus.getInstance().setjVkList(player, command); } @[member='override'] public void showChatWindow(L2PcInstance playerInstance, int val) { if (playerInstance == null) return; String htmFile = "data/html/mods/JVkNpc/"; if (VkBonus.getjVkList().containsKey(playerInstance)) { htmFile += "is.htm"; String htmContent = HtmCache.getInstance().getHtm(htmFile); if (htmContent != null) { NpcHtmlMessage npcHtmlMessage = new NpcHtmlMessage(getObjectId()); npcHtmlMessage.setHtml(htmContent); npcHtmlMessage.replace("%jvkName%", String.valueOf(getLastFirstName(playerInstance))); playerInstance.sendPacket(npcHtmlMessage); } } else { if (vkFirstLastName.containsKey(playerInstance)) vkFirstLastName.remove(playerInstance); htmFile += "add.htm"; String htmContent = HtmCache.getInstance().getHtm(htmFile); if (htmContent != null) { NpcHtmlMessage npcHtmlMessage = new NpcHtmlMessage(getObjectId()); npcHtmlMessage.setHtml(htmContent); npcHtmlMessage.replace("%objectId%", String.valueOf(getObjectId())); playerInstance.sendPacket(npcHtmlMessage); } } } /** * * @param playerInstance * @return Фамилия Имя в vk */ private String getLastFirstName(L2PcInstance playerInstance) { if (vkFirstLastName.containsKey(playerInstance)) return vkFirstLastName.get(playerInstance); try { URL jUrl = new URL( "https://api.vk.com/method/users.get?user_ids=" + VkBonus.getjVkList().get(playerInstance)); String reader = new BufferedReader(new InputStreamReader(jUrl.openStream())).readLine(); Matcher last = Pattern.compile("\"last_name\":\"(.[^\"]*)\"").matcher(reader); Matcher first = Pattern.compile("\"first_name\":\"(.[^\"]*)\"").matcher(reader); if (last.find() && first.find()) vkFirstLastName.put(playerInstance, last.group(1) + " " + first.group(1)); } catch (Exception e) { e.printStackTrace(); } return vkFirstLastName.get(playerInstance); } } ,> <npc id="4" idTemplate="31615" name="Pashka" title="Vk Bonus"> <set name="usingServerSideName" val="true"/> <set name="usingServerSideTitle" val="true"/> <set name="level" val="70"/> <set name="radius" val="8.5"/> <set name="height" val="23.5"/> <set name="rHand" val="0"/> <set name="lHand" val="0"/> <set name="type" val="JVkNpc"/> <set name="exp" val="0"/> <set name="sp" val="0"/> <set name="hp" val="2444.46819"/> <set name="mp" val="1345.8"/> <set name="hpRegen" val="7.5"/> <set name="mpRegen" val="2.7"/> <set name="pAtk" val="688.86373"/> <set name="pDef" val="295.91597"/> <set name="mAtk" val="470.40463"/> <set name="mDef" val="216.53847"/> <set name="crit" val="4"/> <set name="atkSpd" val="253"/> <set name="str" val="40"/> <set name="int" val="21"/> <set name="dex" val="30"/> <set name="wit" val="20"/> <set name="con" val="43"/> <set name="men" val="20"/> <set name="corpseTime" val="7"/> <set name="walkSpd" val="50"/> <set name="runSpd" val="120"/> <set name="dropHerbGroup" val="0"/> <ai type="DEFAULT" ssCount="0" ssRate="0" spsCount="0" spsRate="0" aggro="0" canMove="true" seedable="false"/> <skills> <skill id="4045" level="1"/> <skill id="4416" level="18"/> </skills> </npc> JVkNpcInstance.java.txt VkBonus.java.txt 3 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Edgar 356 Опубликовано 6 февраля, 2017 проверку надо реализовть по ип через базу, и желательно еще по аккаунту Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
FromHell 0 Опубликовано 7 февраля, 2017 + Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
romax 18 Опубликовано 9 февраля, 2017 проверку надо реализовть по ип через базу, и желательно еще по аккаунту как это и зачем? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Edgar 356 Опубликовано 9 февраля, 2017 как это и зачем? будут делать левые страницы и получать бонус Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Corrective 22 Опубликовано 9 февраля, 2017 (изменено) как это и зачем? будут делать левые страницы и получать бонус Ну и как ты определишь айпи адрес странички вк? Допустим попросили друга. Изменено 9 февраля, 2017 пользователем Corrective Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Edgar 356 Опубликовано 9 февраля, 2017 Ну и как ты определишь айпи адрес странички вк? Допустим попросили друга. причем тут ИП адрес странички? награду 1 раз на 1 ип что б можно было получить Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
La2Hero 71 Опубликовано 11 февраля, 2017 как это и зачем? будут делать левые страницы и получать бонус Клепать левые страницы вк это такое...) я лично создавая одну обплевался Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SmokiMo 892 Опубликовано 11 февраля, 2017 У нас есть раздел файлов, залейте в него Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Angelika 622 Опубликовано 11 февраля, 2017 Ну и как ты определишь айпи адрес странички вк? Допустим попросили друга. в скрипте ID Указан а не айпи страничек ) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты