-
Публикаций
982 -
Зарегистрирован
-
Посещение
-
Победитель дней
3 -
Отзывы
0%
Тип контента
Профили
Форумы
Загрузки
Магазин
Инструкции
Весь контент Моветон
-
Конечно, контакты в профиле.
-
http://www.study.ru/support/transcription.html
-
Проверь бибас у виладж мастера, к которому обращаешься.
-
Помогу по серверу или веб-части любому, кто состоит в группе "Пользователи". От элементарной установки веба до фиксов и аддонов ядре. Контакты в профиле.
-
http://l2-dev.ru/elis-exclusive-live-interlude-server (не реклама)
-
Ищешь в добавляемых квестах сточку похожую на: QUEST = Quest(QN, qn, "custom") Ниже её ищешь строчки: CREATED = State('Start', QUEST) QUEST.setInitialState(CREATED) Если их нет, то добавь. PROFIT!
-
У подгружаемого чара character_quests.value=null. Видимо заливал кастом питон квесты, в которых была ошибка. Лечится так: Удаляешь запись в character_quests, где value=null. Исправляешь кастом питон квест.
-
Ты уж расскажи, как разобрался и в чём была проблема.
-
Идем в /java/net/sf/l2j/gameserver/clientpackets/ Нас интересует CharacterCreate.java Открываем его Ищем: L2PcTemplate template = newChar.getTemplate(); Ниже добавляем: newChar.addItem("Extract", АЙДИ_ИТЕМА, КОЛ-ВО, newChar, false); Можно добавить условие, например маг, не маг) У меня получилось вот так: L2PcTemplate template = newChar.getTemplate(); if (newChar.isMageClass()) { newChar.addItem("Extract", 858, 1, newChar, false); newChar.addItem("Extract", 889, 1, newChar, false); newChar.addItem("Extract", 858, 1, newChar, false); newChar.addItem("Extract", 889, 1, newChar, false); newChar.addItem("Extract", 920, 1, newChar, false); newChar.addItem("Extract", 8537, 1, newChar, false); newChar.addItem("Extract", 1467, 1, newChar, false); newChar.addItem("Extract", 3952, 1, newChar, false); newChar.addItem("Extract", 6377, 1, newChar, false); newChar.addItem("Extract", 728, 1, newChar, false); } else { newChar.addItem("Extract", 6376, 1, newChar, false); newChar.addItem("Extract", 6373, 1, newChar, false); newChar.addItem("Extract", 6374, 1, newChar, false); newChar.addItem("Extract", 6375, 1, newChar, false); newChar.addItem("Extract", 6378, 1, newChar, false); newChar.addItem("Extract", 858, 1, newChar, false); newChar.addItem("Extract", 889, 1, newChar, false); newChar.addItem("Extract", 858, 1, newChar, false); newChar.addItem("Extract", 889, 1, newChar, false); newChar.addItem("Extract", 920, 1, newChar, false); newChar.addItem("Extract", 6580, 1, newChar, false); newChar.addItem("Extract", 7577, 1, newChar, false); newChar.addItem("Extract", 1345, 1, newChar, false); newChar.addItem("Extract", 8537, 1, newChar, false); newChar.addItem("Extract", 1467, 1, newChar, false); newChar.addItem("Extract", 3952, 1, newChar, false); newChar.addItem("Extract", 6377, 1, newChar, false); newChar.addItem("Extract", 728, 1, newChar, false); } Магические классы получают своё, остальные, то есть файтеры - другое)
-
Удаляем Option.ini из /system и запускаем игру в режиме совместимости с Win XP sp3.
-
У меня наоборот без ; не воспринимает.
-
В сумме должно быть 100% То есть так вот можно: 14538;13900,1,50;-1,1,50;
-
crest.php: <? if(!empty($_GET['clan_crest'])){ $name = 'Crest'; $crest = $_GET['clan_crest']; } else if(!empty($_GET['ally_crest'])){ $name = 'AllyCrest'; $crest = $_GET['ally_crest']; } else die('No Crest!'); $file = fopen('ПУТЬ_ДО_ЗНАЧКОВ/crests/'.$name.'_'.$crest.'.bmp', 'r'); //fopen($filename,'rb'); $dds = fread($file,4); if ($dds!=='DDS ') die("Error: no hay imagen DDS"); //DDS header $hdrSize = readInt($file); $hdrFlags = readInt($file); $imgHeight = readInt($file)-4; $imgWidth = readInt($file); $imgPitch = readShort($file); //DXT1 header fseek($file, 84); $dxt1 = fread($file,4); if ($dxt1!=='DXT1') die("Error: no es formato DX1"); //here we go fseek($file, 128); header ("Content-type: image/png"); $img=imagecreatetruecolor($imgWidth,$imgHeight); for ($y=-1; $y<$imgHeight/4; $y++) { for ($x=0; $x<$imgWidth/4; $x++) { $color0_16 = readShort($file); $color1_16 = readShort($file); $r0 = ($color0_16 >> 11) << 3; $g0 = (($color0_16 >> 5) & 63) << 2; $b0 = ($color0_16 & 31) << 3; $r1 = ($color1_16 >> 11) << 3; $g1 = (($color1_16 >> 5) & 63) << 2; $b1 = ($color1_16 & 31) << 3; $color0_32 = imagecolorallocate($img,$r0,$g0,$b0); $color1_32 = imagecolorallocate($img,$r1,$g1,$b1); $color01_32 = imagecolorallocate($img,$r0/2+$r1/2,$g0/2+$g1/2,$b0/2+$b1/2); $black = imagecolorallocate($img,0,0,0); $data = readInt($file); for ($yy=0;$yy<4;$yy++) { for ($xx=0;$xx<4;$xx++) { $bb = $data & 3; $data = $data >> 2; switch ($bb) { case 0: $c = $color0_32; break; case 1: $c = $color1_32; break; case 2: $c = $color01_32; break; default: $c = $black; break; } imagesetpixel($img,$x*4+$xx,$y*4+$yy,$c); } } } } imagepng($img); ## Functions needed function readInt($file) { $b4 = ord(fgetc($file)); $b3 = ord(fgetc($file)); $b2 = ord(fgetc($file)); $b1 = ord(fgetc($file)); return ($b1<<24)|($b2<<16)|($b3<<8)|$b4; } function readShort($file) { $b2 = ord(fgetc($file)); $b1 = ord(fgetc($file)); return ($b1<<8)|$b2; } ?> connection.php: <?php $db_user = "USER"; $db_pass = "PASS"; $db_name = "l2jdb"; $db_serv = "localhost"; $db_port = "3306"; $res = mysql_connect ( $db_serv, $db_user, $db_pass, $db_port ) or die ("Coudn't connect to [$db_serv]"); mysql_select_db ( $db_name ); ?> Pkkills.php: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <style type="text/css"> <!-- body,td,th { color: #CCCCCC; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; } body { background-color: #000000; } --> </style> </head> <body> <table style="border: 1px solid; border-color: #444444; background-color:#222222;" align="center" width="100%"> <tr> <th class='Stil7' colspan="5">Top 100 PK</th> </tr> <tr> <th width="5%" style="border: 1px solid; border-color: #444444; background-color:#222222;"> Rank </th> <th width="35%" style="border: 1px solid; border-color: #444444; background-color:#222222;"> Name </th> <th width="19%" style="border: 1px solid; border-color: #444444; background-color:#222222;"> Clan </th> <th width="19%" style="border: 1px solid; border-color: #444444; background-color:#222222;"> Ally </th> <th width="20%" style="border: 1px solid; border-color: #444444; background-color:#222222;"> PK's </th> </tr> <?php require("Connection.php"); $activity = mysql_query("SELECT char_name,pkkills,clan_name as 'pname', ally_name as 'aname', clanid, clan_data.crest_id as 'pcrest', ally_crest_id as 'acrest' FROM characters LEFT JOIN clan_data ON clan_data.clan_Id = characters.clanId Where ((pkkills >=1) AND (accesslevel = 0)) ORDER BY pkkills DESC, char_name ASC limit 100"); $i = 1; while($row = mysql_fetch_array($activity)) { if (!($i%2)) echo "<tr bgcolor='#000000' align='center'>"; else echo "<tr bgcolor='#161616' align='center'>"; echo "<td>"."<center>".$i."</center>"."</td>"; echo "<td>"."<center>".$row['char_name']."</center>"."</td>"; echo "<td align='left'>"; if ($row['pcrest'] != 0) echo "<img src='crest.php?clan_crest=".$row['pcrest']."'/> ".$row['pname'].""; echo "</td>"; echo "<td align='left'>"; if ($row['acrest'] != 0) echo "<img src='crest.php?ally_crest=".$row['acrest']."'/> ".$row['aname'].""; echo "</td>"; echo "<td>"."<center>".$row['pkkills']."</center>"."</td>"; $i++; } ?> </table> </body> </html> PvPKills.php: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <style type="text/css"> <!-- body,td,th { color: #CCCCCC; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; } body { background-color: #000000; } --> </style> <body> <table style="border: 1px solid; border-color: #444444; background-color:#222222;" align="center" width="100%"> <tr> <th class='Stil7' colspan="5">Top 100 PvP</th> </tr> <tr> <th width="5%" style="border: 1px solid; border-color: #444444; background-color:#222222;"> Rank </th> <th width="35%" style="border: 1px solid; border-color: #444444; background-color:#222222;"> Nombre </th> <th width="19%" style="border: 1px solid; border-color: #444444; background-color:#222222;"> Clan</th> <th width="19%" style="border: 1px solid; border-color: #444444; background-color:#222222;"> Ally</th> <th width="20%" style="border: 1px solid; border-color: #444444; background-color:#222222;"> PvP's </th> </tr> <?php require("Connection.php"); $activity = mysql_query("SELECT char_name,pvpkills,clan_name as 'pname', ally_name as 'aname', clan_data.crest_id as 'pcrest', ally_crest_id as 'acrest' FROM characters LEFT JOIN clan_data ON clan_data.clan_Id = characters.clanId Where ((pvpkills >=1) AND (accesslevel = 0)) ORDER BY pvpkills DESC, char_name ASC limit 100"); $i = 1; while($row = mysql_fetch_array($activity)) { if (!($i%2)) echo "<tr bgcolor='#000000' align='center'>"; else echo "<tr bgcolor='#161616' align='center'>"; echo "<td>"."<center>".$i."</center>"."</td>"; echo "<td>"."<center>".$row['char_name']."</center>"."</td>"; echo "<td align='left'>"; if ($row['pcrest'] != 0) echo "<img src='crest.php?clan_crest=".$row['pcrest']."'/> ".$row['pname'].""; echo "</td>"; echo "<td align='left'>"; if ($row['acrest'] != 0) echo "<img src='crest.php?ally_crest=".$row['acrest']."'/> ".$row['aname'].""; echo "</td>"; echo "<td>"."<center>".$row['pvpkills']."</center>"."</td>"; $i++; } ?> </table> </body> </html> Теперь нужно придумать, как сливать эмблемы с сервера на веб-сайт. Отписываем свои соображения)
-
http://aofy.ru/ (не реклама) Лучше взять впску минимализм. Уверен, что там и помогут в настройке)
-
import sys from net.sf.l2j.gameserver.model.quest import State from net.sf.l2j.gameserver.model.quest import QuestState from net.sf.l2j.gameserver.model.quest import QuestStateManager from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest from java.util import Iterator qn = "q905_GoddnessArmor" ## нпц NPC = 80001 ## Мобы MOBS = [21376,21377,21378,21394,21652,21379,21653,21380,21383,21654,21382] #босс BOSS = 25450 ## Дроп #id Сплава ADAMANIT = 10596 #сколько нужно? ADAMANIT_NEED = 1000 #шанс дропа, % ADAMANIT_CHANCE = 100 #id итема с босса BOSS_ITEM = 10598 ##Награда #id Коина COIN = 10599 class Quest (JQuest) : def __init__(self,id,name,descr) : JQuest.__init__(self,id,name,descr) def onEvent (self,event,st) : htmltext = event if event == "accept.htm": st.setState(State.STARTED) st.playSound("ItemSound.quest_accept") st.set("cond","1") elif event == "finish.htm": if st.getQuestItemsCount(ADAMANIT) >= ADAMANIT_NEED and st.getQuestItemsCount(BOSS_ITEM) >= 1: st.takeItems(ADAMANIT, -1) st.takeItems(BOSS_ITEM, -1) st.giveItems(COIN, 1) st.set("cond","0") st.playSound("ItemSound.quest_finish") st.setState(State.CREATED) else: htmltext = "mobs.htm" return htmltext def onTalk (self,npc,player): st = player.getQuestState(qn) if not st: return "<html><body>You are either not on a quest that involves this NPC, or you don't meet this NPC's minimum quest requirements.</body></html>" npcId = npc.getNpcId() idd = st.getState() cond = st.getInt("cond") if npcId == NPC: if idd == State.Completed : htmltext = "completed.htm" if idd == State.CREATED : htmltext = "hello1.htm" elif cond == 1: if st.getQuestItemsCount(ADAMANIT) >= ADAMANIT_NEED and st.getQuestItemsCount(BOSS_ITEM) >= 1: htmltext = "mobs2.htm" else: htmltext = "mobs.htm" return htmltext def onKill(self,npc,player,isPet): st = player.getQuestState(qn) if not st or st.getInt("cond") != 1: return npcId = npc.getNpcId() reward = 0 limit = 1 chance = 100 if npcId in MOBS: reward = ADAMANIT limit = ADAMANIT_NEED chance = ADAMANIT_CHANCE if npcId == BOSS: reward = BOSS_ITEM limit = 1 if reward > 0: party = player.getParty() if party: for member in party.getPartyMembers(): if not member.isAlikeDead(): st = member.getQuestState("q905_GoddnessArmor") if st and st.getQuestItemsCount(reward) < limit and st.getRandom(100) <= chance: st.giveItems(reward, 1) st.playSound("ItemSound.quest_itemget") if st.getQuestItemsCount(reward) >= limit: st.playSound("ItemSound.quest_middle") else: if st.getQuestItemsCount(reward) < limit and st.getRandom(100) <= chance: st.giveItems(reward, 1) st.playSound("ItemSound.quest_itemget") return QUEST = Quest(905, qn, "Goddness Armor") CREATED = State('Start', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(NPC) QUEST.addTalkId(NPC) QUEST.addKillId(BOSS) for m in MOBS: QUEST.addKillId(m) Попробуйте вот так вот)
-
Пишите все что угодно) Материал есть) Я вот например пофотошожабил немного и запилил текстурку в клиент, которую потом и запилил в бипас. Смотрится очень эффектно) Но можно просто иконками сделать, тоже будет неплохо смотреться.
-
Первая ошибка значит то, что в чарквесты не записалась стадия квеста. Лечится так: import sys from net.sf.l2j.gameserver.model.quest import State from net.sf.l2j.gameserver.model.quest import QuestState from net.sf.l2j.gameserver.model.quest import QuestStateManager from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest qn = "q905_GoddnessArmor" ## нпц NPC = 80028 ## Мобы MOBS = [21376,21377,21378,21394,21652,21379,21653,21380,21383,21654,21382] #босс BOSS = 25450 ## Дроп #id Сплава ADAMANIT = 10596 #сколько нужно? ADAMANIT_NEED = 1000 #шанс дропа, % ADAMANIT_CHANCE = 100 #id итема с босса BOSS_ITEM = 10598 ##Награда #id Коина COIN = 10599 class Quest (JQuest) : def __init__(self,id,name,descr) : JQuest.__init__(self,id,name,descr) def onEvent (self,event,st) : htmltext = event if event == "accept.htm": st.setState(State.STARTED) st.playSound("ItemSound.quest_accept") st.set("cond","1") elif event == "finish.htm": if st.getQuestItemsCount(ADAMANIT) >= ADAMANIT_NEED and st.getQuestItemsCount(BOSS_ITEM) >= 1: st.takeItems(ADAMANIT, -1) st.takeItems(BOSS_ITEM, -1) st.giveItems(COIN, 1) st.set("cond","0") st.playSound("ItemSound.quest_finish") st.setState(State.CREATED) else: htmltext = "mobs.htm" return htmltext def onTalk (self,npc,player): st = player.getQuestState(qn) if not st: return "<html><body>You are either not on a quest that involves this NPC, or you don't meet this NPC's minimum quest requirements.</body></html>" npcId = npc.getNpcId() idd = st.getState() cond = st.getInt("cond") if npcId == NPC: if idd == State.COMPLETED : htmltext = "completed.htm" if idd == State.CREATED : htmltext = "hello1.htm" elif cond == 1: if st.getQuestItemsCount(ADAMANIT) >= ADAMANIT_NEED and st.getQuestItemsCount(BOSS_ITEM) >= 1: htmltext = "mobs2.htm" else: htmltext = "mobs.htm" return htmltext def onKill(self,npc,player,isPet): st = player.getQuestState(qn) if not st or st.getInt("cond") != 1: return npcId = npc.getNpcId() reward = 0 limit = 1 chance = 100 if npcId in MOBS: reward = ADAMANIT limit = ADAMANIT_NEED chance = ADAMANIT_CHANCE if npcId == BOSS: reward = BOSS_ITEM limit = 1 if reward > 0: party = player.getParty() if party: for member in party.getPartyMembers(): if not member.isAlikeDead(): st = member.getQuestState("q905_GoddnessArmor") if st and st.getQuestItemsCount(reward) < limit and st.getRandom(100) <= chance: st.giveItems(reward, 1) st.playSound("ItemSound.quest_itemget") if st.getQuestItemsCount(reward) >= limit: st.playSound("ItemSound.quest_middle") else: if st.getQuestItemsCount(reward) < limit and st.getRandom(100) <= chance: st.giveItems(reward, 1) st.playSound("ItemSound.quest_itemget") return QUEST = Quest(905, qn, "Goddness Armor") CREATED = State('Start', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(NPC) QUEST.addTalkId(NPC) QUEST.addKillId(BOSS) for m in MOBS: QUEST.addKillId(m) Вторая ошибка значит, что в /quest.State нет метода КОМПЛИТ Сейчас подумаю как решить и отпишусь
-
Разве никому не надоели мультиселлы и байлисты? Тем более это даёт возможность всё очень красиво оформить. Те же бипасы под текстурками) Уникал контент так сказать)
-
На некоторых сборка можно поймать еррор: java.lang.NullPointerException at net.sf.l2j.gameserver.model.quest.Quest.playerEnter(Quest.java:517) at net.sf.l2j.gameserver.clientpackets.EnterWorld.runImpl(EnterWorld.java:272) at net.sf.l2j.gameserver.clientpackets.L2GameClientPacket.run(L2GameClientPacket.java:70) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Лечится так: В скрипте после строчки: QUEST = Quest(2062, qn, "custom") Добавляем: CREATED = State('Start', QUEST) QUEST.setInitialState(CREATED)
-
Приведу пример на продаже ЛСов и Ц-грейд гемстонов на лыжеподобных сборках. Идем в \data\scripts\custom\ Создаём папку, к примеру 2062_LSShop В папке создаём файлы: __init__.py, 1.htm, 2.htm Содержимое __init__.py: import sys from net.sf.l2j.gameserver.model.quest import State from net.sf.l2j.gameserver.model.quest import QuestState from net.sf.l2j.gameserver.model.quest import QuestStateManager from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest from java.util import Iterator qn = "2062_LSShop" #Itemz ADENA = 57 COUNT = 1 # NPCz NPC = 80000 class Quest (JQuest) : def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr) def onTalk (self,npc,player) : st = player.getQuestState(qn) npcId = npc.getNpcId() htmltext = " " if not st : return htmltext if npcId == NPC: htmltext = "1.htm" return htmltext def onEvent (self,event,st) : count=st.getQuestItemsCount(57) htmltext = "1.htm" htmltext1 = "2.htm" if event == "1" : if count < 1 : return htmltext1 else : st.giveItems(8762,4) st.takeItems(57,1) if event == "2" : if count < 1 : return htmltext1 else : st.giveItems(2131,15000) st.takeItems(57,1) return htmltext QUEST = Quest(2062, qn, "custom") QUEST.addStartNpc(NPC) QUEST.addTalkId(NPC) print "LS Trade Manager Loaded." Содержимое 1.htm: <html> <body> <center> <font color=LEVEL>Обмен</font><br><br><br> <img src="L2UI.SquareWhite" width=260 height=1> <br><br> <a action="bypass -h Quest 2062_LSShop 1">1 Adena - 4 Life Stone's</a><br> <a action="bypass -h Quest 2062_LSShop 2">1 Adena - 15,000 GemStone C</a><br> <br> <img src="L2UI.SquareWhite" width=260 height=1><br> <br><br> </center> </body> </html> Содержимое 2.htm: <html> <body> <center> Недостаточно предметов.<br> <a action="bypass -h Quest 2062_LSShop 1.htm">"Вернутся назад."</a> </center> </body> </html> В \data\scripts\custom\__init__.py добавляем строчку '2062_LSShop', Создаем NPC c id 80000, или меняем id в скрипте на свой Бибас для вызова диалога: <a action="bypass -h Quest 2062_LSShop 1"> Зачем это всё нужно, если есть мультиселлы? Да просто мультиселлы уже за***ли)