Перейти к содержанию
Авторизация  
joof

Переписать с Python на Java

Рекомендуемые сообщения

Добрый вечер.

Помогите пожалуйста переписать скрипт с Python на Java.

Зарание спасибо.

# Made by disKret
import sys
from com.l2scoria import Config
from com.l2scoria.util.random import Rnd
from com.l2scoria.gameserver.model import Inventory
from com.l2scoria.gameserver.model.actor.instance import L2ItemInstance
from com.l2scoria.gameserver.model.quest import State
from com.l2scoria.gameserver.model.quest import QuestState
from com.l2scoria.gameserver.model.quest.jython import QuestJython as JQuest

qn = "9990_CraftSystem"

#NPC
NPC_ID = 30086

#QUEST ITEM
PACKAGE = 7263

ONE_TYPE_WEAPON = [1, 2, 3, 4]
ONE_TYPE_DROP_ID = [4037, 57, 4356, 4357, 6673]
ONE_TYPE_DROP_COUNT = 1
ONE_TYPE_DROP_CHANCE = 100
ONE_MOB_ID = [18342, 18341, 18343, 18330, 18331]

TWO_TYPE_WEAPON = [1, 2, 3, 4]
TWO_TYPE_DROP_ID = [1, 2, 3, 4, 5]
TWO_TYPE_DROP_COUNT = 1
TWO_TYPE_DROP_CHANCE = 100
TWO_MOB_ID = [111, 111, 111, 111, 111]

THREE_TYPE_WEAPON = [1, 2, 3, 4]
THREE_TYPE_DROP_ID = [1, 2, 3, 4, 5]
THREE_TYPE_DROP_COUNT = 1
THREE_TYPE_DROP_CHANCE = 100
THREE_MOB_ID = [111, 111, 111, 111, 111]

FO_TYPE_WEAPON = [1, 2, 3, 4]
FO_TYPE_DROP_ID = [1, 2, 3, 4, 5]
FO_TYPE_DROP_COUNT = 1
FO_TYPE_DROP_CHANCE = 100
FO_MOB_ID = [111, 111, 111, 111, 111]

FIVE_TYPE_WEAPON = [1, 2, 3, 4]
FIVE_TYPE_DROP_ID = [1, 2, 3, 4, 5]
FIVE_TYPE_DROP_COUNT = 1
FIVE_TYPE_DROP_CHANCE = 100
FIVE_MOB_ID = [111, 111, 111, 111, 111]


print "E6aTb KoIIaTb 3arpy3uJIocb!"

class Quest (JQuest) :

 def __init__(self,id,name,descr):
     JQuest.__init__(self,id,name,descr)
     self.questItemIds = [PACKAGE]

 def onTalk (self,npc,player):
   htmltext = "<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>"
   st = player.getQuestState(qn)
   if not st : return
   st.setState(State('Started', QUEST))
   return

 def onAttack (self, npc, player, damage, isPet): 
   st = player.getQuestState(qn)
   if not st : return
   player = st.getPlayer()
   npcId = npc.getNpcId()
   if player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_LRHAND) != None:
       type = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_LRHAND)
   elif player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND) != None:
	   type = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND)
   else :
       return

   itemId = type.getItemId()
   if itemId in ONE_TYPE_WEAPON and npcId in ONE_MOB_ID:
       if itemId == ONE_TYPE_WEAPON[0] :
           if ONE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
               st.giveItems(ONE_TYPE_DROP_ID[0], ONE_TYPE_DROP_COUNT)
           if ONE_TYPE_DROP_CHANCE > Rnd.get(1, 100):
               st.giveItems(ONE_TYPE_DROP_ID[1], ONE_TYPE_DROP_COUNT)
  ........................................
 
   else :
       return
       
   return
   
   
QUEST       = Quest(9990, qn, "Craft System")

for i in ONE_MOB_ID :
    QUEST.addAttackId(i)
for i in TWO_MOB_ID :
    QUEST.addAttackId(i)
for i in THREE_MOB_ID :
    QUEST.addAttackId(i)
for i in FO_MOB_ID :
    QUEST.addAttackId(i)
for i in FIVE_MOB_ID :
    QUEST.addAttackId(i)

QUEST.addStartNpc(NPC_ID)
QUEST.addTalkId(NPC_ID)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
package net.sf.l2j.gameserver.scripting.quests;

import net.sf.l2j.commons.random.Rnd;
import net.sf.l2j.gameserver.model.itemcontainer.Inventory;
import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.scripting.Quest;
import net.sf.l2j.gameserver.scripting.QuestState;

public class 9990_CraftSystem extends Quest
{
	private static final String qn = "9990_CraftSystem";
	
	// Item
	private static final int PACKAGE = 7263;
	private static final int ONE_TYPE_DROP_COUNT = 1;
	private static final int[] ONE_TYPE_WEAPON =
		{
			21314,
			21316,
			21317,
			21319,
			21321,
			21322
		};
	private static final int[] ONE_TYPE_DROP_ID =
		{
			4037,
			57,
			4356,
			4357,
			6673
		};
	// NPC
	private static final int NPC_ID = 30086;
	
	// Chance
	private static final int ONE_TYPE_DROP_CHANCE = 100;
	
	// Monster
	private static final int[] ONE_MOB_ID =
		{
			18342,
			18341,
			18330,
			18343,
			18331
		};
	
	public 9990_CraftSystem()
	{
		super(9990, "CraftSystem");
		
		setItemsIds(PACKAGE);
		
		addStartNpc(NPC_ID);
		
		addKillId(ONE_MOB_ID);
	}
	
	@Override
	public String onTalk(L2Npc npc, L2PcInstance player)
	{
		String htmltext = getNoQuestMsg();
		QuestState st = player.getQuestState(qn);
		if (st == null)
			return htmltext = "0-01.htm";
		
	}
	public String onAttack(L2Npc npc, L2PcInstance player, int damage, boolean isPet)
	{
		QuestState st = player.getQuestState(qn);
		if (st == null)
			return;
		L2PcInstance player = st.getPlayer();
		int npcId = npc.getNpcId();
		ItemInstance type = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND);
		if (type == null)
		{
		return;
		}
		int itemId = type.getItemId();

Часть переделал, но не знаю правильно ли и как дальше переписать...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
59 минут назад, Роман_Тверской сказал:

сколько платиш

Не знаю сколько такое стоит...

100 руб. готов заплатить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как правильно написать кусок кода:

if (ONE_TYPE_WEAPON[itemId] && ONE_MOB_ID[npcId])

Ошибка bad operand types for binary operator '&&'

В питоне использовался оператор "and"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1000 руб, ели устраивает контакты в профиле

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проще по этому написать новый квест. Хроники ит? В 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
4 минуты назад, casdepri сказал:

Проще по этому написать новый квест. Хроники ит? В 

да

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, Solution сказал:

1000 руб, ели устраивает контакты в профиле

1000 рублей? Дядь, ну это перебор, его переписать 2 минуты это максимум. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 минуту назад, gvb сказал:

1000 рублей? Дядь, ну это перебор, его переписать 2 минуты это максимум. 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, joof сказал:

Как правильно написать кусок кода:


if (ONE_TYPE_WEAPON[itemId] && ONE_MOB_ID[npcId])

Ошибка bad operand types for binary operator '&&'

В питоне использовался оператор "and"

так ты не приравниваешь эти элементы
у тебя написано типо такого: if (x && y), а надо if(x == 5 && y == 18)

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

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