[Frage]An die Phytonprofis

07/27/2014 18:58 lfcmaus#1
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 DasSchwarzeT#2
Wieso Python und nicht LUA?
07/27/2014 22:10 Zander##3
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 xGr33n#4
[denk wut="luawtf"]
[/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 lfcmaus#5
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 noahrmal#6
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 DasSchwarzeT#7
Quote:
Originally Posted by xGr33n View Post
[denk wut="luawtf"]
[/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 lfcmaus#8
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 noahrmal#9
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 .Kori#10
Also sollte es so sein ? Oder versteh ich das falsch ?

Also hier mal Bsp :D 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 lfcmaus#11
So funktioniert das einloggen aber immer der selbe effekt

PHP Code:
    SkillLevelplayer.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 Poccix#12
Quote:
Originally Posted by lfcmaus View Post
So funktioniert das einloggen aber immer der selbe effekt

PHP Code:
    SkillLevelplayer.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 lfcmaus#13
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() == 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 PDDS™#14
Quote:
Originally Posted by lfcmaus View Post
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 lfcmaus#15
Und was mach ich dann hier?

END_STRING = constInfo.aura !?!?!?