You last visited: Today at 01:28
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,916
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,916
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 +2. The time now is 01:28 .