|
You last visited: Today at 14:47
Advertisement
[Frage]An die Phytonprofis
Discussion on [Frage]An die Phytonprofis within the Metin2 Private Server forum part of the Metin2 category.
07/27/2014, 18:58
|
#1
|
elite*gold: 205
Join Date: Jun 2010
Posts: 5,334
Received Thanks: 2,510
|
[Frage]An die Phytonprofis
Hallo,
ich bräuchte in Phyton eine funktion die folgendes ausführt
Ist der Skill x auf Stufe <= 19 dann
ist skill x auf stufe <=29 dann
ist skill x auf stufe <=39 dann
ist skill x auf stufe 40 dann
|
|
|
07/27/2014, 22:00
|
#2
|
elite*gold: 399
Join Date: Sep 2011
Posts: 5,323
Received Thanks: 3,937
|
Wieso Python und nicht LUA?
|
|
|
07/27/2014, 22:10
|
#3
|
elite*gold: 14
Join Date: Feb 2011
Posts: 1,450
Received Thanks: 1,044
|
Mit ner Client-Quest Kommunikation könntest du das ganze schlau lösen 
nur mit Python wirds schwer, denke ich
Gruß,
Zander
PS: Und Nein, ich bin kein Profi, jedoch würde ich es rein von der Logik her so angehen
|
|
|
07/27/2014, 22:32
|
#4
|
elite*gold: 5
Join Date: Mar 2013
Posts: 1,986
Received Thanks: 2,254
|
[denk wut="luawtf"]
hmm schauen wir mal die Modulliste an...
Was würde Sinn machen? Entweder ein Modul "skill" oder das Modul "player" weil es was mit dem Char zu tun hat...
Im Skill-Modul ist nichts passendes. Mal ins Player-Modul schauen. Hmm wat ist denn das:
player.GetSkillLevel(Position)
PS:
das ist an die mit LUA. Uff das muss doch schon weh tun
[/denk]
player.GetSkillLevel(Position)
Sollte dir etwas weiterhelfen. Wird unter anderem in der uiCharacter.py benutzt falls du ein Beispiel zum verwenden benötigtst
|
|
|
07/27/2014, 22:33
|
#5
|
elite*gold: 205
Join Date: Jun 2010
Posts: 5,334
Received Thanks: 2,510
|
ich hab ja es ja nen stückchen schon jedoch gibt er mir falsche werte aus -.-
Code:
level = str(player.GetStatus(player.LEVEL))
END_STRING = level
chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+1, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_" + END_STRING + "_sword_loop.mse")
chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+2, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_" + END_STRING + "_spear_loop.mse")
syserr.txt
Quote:
0727 22:30:16212 :: CInstanceBase::RegisterEffect(eEftType=24, c_szEftAttachBone=equip_right_hand, c_szEftName=d:/ymir work/pc/warrior/effect/geom_-415579686_sword_loop.mse, isCache=0) - Error
0727 22:30:16212 :: CEffectManager::RegisterEffect - LoadScript(d:/ymir work/pc/warrior/effect/geom_-415579686_spear_loop.mse) Error
|
|
|
|
07/27/2014, 22:58
|
#6
|
elite*gold: 726
Join Date: Jul 2010
Posts: 14,233
Received Thanks: 7,915
|
Beschreibe mal bitte, was du genau vor hast.
Das Skill-Level eine Skills erhält man durch die Formel:
Code:
level = player.GetSkillLevel(SkillSlot) + player.GetSkillGrade(SkillSlot) * 10
|
|
|
07/27/2014, 23:06
|
#7
|
elite*gold: 399
Join Date: Sep 2011
Posts: 5,323
Received Thanks: 3,937
|
Quote:
Originally Posted by xGr33n
[denk wut="luawtf"]
hmm schauen wir mal die Modulliste an...
Was würde Sinn machen? Entweder ein Modul "skill" oder das Modul "player" weil es was mit dem Char zu tun hat...
Im Skill-Modul ist nichts passendes. Mal ins Player-Modul schauen. Hmm wat ist denn das:
player.GetSkillLevel(Position)
PS:
das ist an die mit LUA. Uff das muss doch schon weh tun
[/denk]
player.GetSkillLevel(Position)
Sollte dir etwas weiterhelfen. Wird unter anderem in der uiCharacter.py benutzt falls du ein Beispiel zum verwenden benötigtst
|
Problem ist nur, dass es einem in Python nichts bringt. Ich weiß ja nicht, was der TE damit machen will, wirklich Funktionen dahinter setzten (die nicht missbraucht werden können) macht man nun mal mit LUA.
|
|
|
07/27/2014, 23:06
|
#8
|
elite*gold: 205
Join Date: Jun 2010
Posts: 5,334
Received Thanks: 2,510
|
Ich möchte das er prüft welches Level der Skill 4 zb hat
ist der zb 1-19 dann soll er effekt 1 laden
ist der level über 19 also 20-29 dann effekt 2
ist der level über 29 also 30-39 dann den dritten und wenn er 40 genau ist dann den vierten effekt
ich hab da jetzt shcon einiges versucht jedoch klappen tut irgendwie nichts so richtig
momentan bin ich dabei das zu testen
Quote:
END_STRING = int(player.GetSkillLevel(4))
chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+1, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_" + END_STRING + "_sword_loop.mse")
chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+2, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_" + END_STRING + "_spear_loop.mse")
|
bzw das
Quote:
END_STRING = int(player.GetSkillLevel(4))
END_STRING = level
chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+1, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_" + END_STRING + "_sword_loop.mse")
chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+2, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_" + END_STRING + "_spear_loop.mse")
|
beim letzteren sagt er mir erfindet geom_0_spear_loop.mse nicht
der skill ist aber stufe 10 derzeit
alles sehr verwirrend
|
|
|
07/28/2014, 00:00
|
#9
|
elite*gold: 726
Join Date: Jul 2010
Posts: 14,233
Received Thanks: 7,915
|
player.GetSkillGrade(SkillSlot)
1-19 = returnt dir 0
M1-M10 = returnt dir 1
G1-G10 = returnt dir 2
P = returnt dir 3
|
|
|
07/28/2014, 00:16
|
#10
|
elite*gold: 1435
Join Date: Apr 2014
Posts: 362
Received Thanks: 786
|
Also sollte es so sein ? Oder versteh ich das falsch ?
Also hier mal Bsp  will es ja auch mal wissen
Code:
SkillLevel= player.GetSkillGrade(SkillSlot)
if SkillLevel == 0:
chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+1, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_sword_loop.mse")
chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+2, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_spear_loop.mse")
elif SkillLevel 1:
chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+1, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_2_sword_loop.mse")
chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+2, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_2_spear_making.mse")
elif SkillLevel >= 2:
chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+1, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_3_sword_loop.mse")
chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+2, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_3_spear_making.mse")
elif SkillLevel == 3:
chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+1, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_4_sword_loop.mse")
chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+2, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_4_spear_making.mse")
|
|
|
07/28/2014, 00:46
|
#11
|
elite*gold: 205
Join Date: Jun 2010
Posts: 5,334
Received Thanks: 2,510
|
So funktioniert das einloggen aber immer der selbe effekt
PHP Code:
SkillLevel= player.GetSkillGrade(4) if SkillLevel == 0: chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+1, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_sword_loop.mse") chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+2, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_spear_loop.mse") elif SkillLevel == 1: chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+1, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_2_sword_loop.mse") chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+2, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_2_spear_making.mse") elif SkillLevel == 2: chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+1, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_3_sword_loop.mse") chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+2, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_3_spear_making.mse") elif SkillLevel == 3: chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+1, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_4_sword_loop.mse") chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+2, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_4_spear_making.mse")
PHP Code:
SkillSlot = 4 END_STRING = str(player.GetSkillGrade(SkillSlot)) chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+1, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_" + END_STRING + "_sword_loop.mse") chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+2, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_" + END_STRING + "_spear_loop.mse")
Damit hat es bisher am meisten erfolge gegeben
wenn ich es so einfüe kann ich einlogen und er gibt mir eine 0 aus
aber upgrade ich den skill checkt er es nciht und es wechselt nicht zu 1 2 3 wie auf page 1 beschrieben
|
|
|
07/28/2014, 02:46
|
#12
|
elite*gold: 44
Join Date: Dec 2009
Posts: 1,696
Received Thanks: 3,833
|
Quote:
Originally Posted by lfcmaus
So funktioniert das einloggen aber immer der selbe effekt
PHP Code:
SkillLevel= player.GetSkillGrade(4)
if SkillLevel == 0:
chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+1, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_sword_loop.mse")
chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+2, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_spear_loop.mse")
elif SkillLevel == 1:
chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+1, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_2_sword_loop.mse")
chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+2, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_2_spear_making.mse")
elif SkillLevel == 2:
chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+1, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_3_sword_loop.mse")
chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+2, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_3_spear_making.mse")
elif SkillLevel == 3:
chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+1, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_4_sword_loop.mse")
chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+2, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_4_spear_making.mse")
PHP Code:
SkillSlot = 4
END_STRING = str(player.GetSkillGrade(SkillSlot))
chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+1, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_" + END_STRING + "_sword_loop.mse")
chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+2, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_" + END_STRING + "_spear_loop.mse")
Damit hat es bisher am meisten erfolge gegeben
wenn ich es so einfüe kann ich einlogen und er gibt mir eine 0 aus
aber upgrade ich den skill checkt er es nciht und es wechselt nicht zu 1 2 3 wie auf page 1 beschrieben
|
Könntest deinen Endstring via OnUpdate immer wieder neuladen lassen.
|
|
|
07/28/2014, 03:27
|
#13
|
elite*gold: 205
Join Date: Jun 2010
Posts: 5,334
Received Thanks: 2,510
|
Ist ja toll für den vorschlag da abr nichts funktioniert bringt mich da sgerade nicht weiter derzeit versuche ich es wie mit den Ringeffkten zu realisieren.
ich hänge aber an dieser stelle.:
END_STRING = constInfo.aura
chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+1, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_" + END_STRING + "_sword_loop.mse")
chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+2, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_" + END_STRING + "_spear_loop.mse")
Ich weiß nicht wie ich die Variable aus der Constinfo wieder raushole.
Code:
game.py.:
serverCommandList={
"auraeffect_1" : self.auraeffect_1,
"auraeffect_2" : self.auraeffect_2,
"auraeffect_3" : self.auraeffect_3,
"auraeffect_4" : self.auraeffect_4,
}
def auraeffect_1(self, zahl):
constInfo.aura = 1
def auraeffect_2(self, zahl):
constInfo.aura = 2
def auraeffect_3(self, zahl):
constInfo.aura = 3
def auraeffect_4(self, zahl):
constInfo.aura = 4
PHP Code:
quest.:
quest aurasystem begin state start begin when login with pc.get_job() == 0 and pc.get_skill_group() == 1 begin aura = pc.get_skill_level(4) chat(""..aura.."") if aura < 20 then cmdchat(""..auraeffect_1.."") chat(""..aura.."") elseif aura >= 20 and aura < 30 then cmdchat(""..auraeffect_2.."") chat(""..aura.."") elseif aura >= 30 and aura < 39 then cmdchat(""..auraeffect_3.."") chat(""..aura.."") elseif aura == 40 then cmdchat(""..auraeffect_4.."") chat(""..aura.."") end end end end
jemand hier ne lösung?
|
|
|
07/28/2014, 09:09
|
#14
|
elite*gold: 97
Join Date: May 2014
Posts: 777
Received Thanks: 202
|
Quote:
Originally Posted by lfcmaus
Ich weiß nicht wie ich die Variable aus der Constinfo wieder raushole.
|
Neue Variable erstellen und ihr den Wert aus der ConsInfo zuweisen?
Gruß
|
|
|
07/28/2014, 11:05
|
#15
|
elite*gold: 205
Join Date: Jun 2010
Posts: 5,334
Received Thanks: 2,510
|
Und was mach ich dann hier?
END_STRING = constInfo.aura !?!?!?
|
|
|
All times are GMT +1. The time now is 14:47.
|
|