Sziasztok.
Valaki nem tudja véletlen, hogy hogyan tudom beazonosítani, hogy hol helyezkedik el a karakter választóban a karakterem, pontos pozícióban? Úgy értem, hogy ha változik a képernyő felbontás akkor is ahhoz mérten szeretném a karater pozicióját lekérni.
Pythonban szeretném az X és Y poziciókat.
Nem tudom lekérni a GetLocalPositionnal, mert az nem python board elem, van rá valami mód?
IntroSelect.py-ben ezzel a kóddal helyezi el a karaktert:
screenWidth = wndMgr.GetScreenWidth()
screenHeight = wndMgr.GetScreenHeight()
newScreenWidth = float(screenWidth - 340)
newScreenHeight = float(screenHeight)
grp.SetViewport(340.0/screenWidth, 0.0, newScreenWidth/screenWidth, newScreenHeight/screenHeight)
app.SetCenterPosition(0.0, 0.0, 0.0)
app.SetCamera(1550.0, 15.0, 180.0, 95.0)
grp.SetPerspective(13.0, newScreenWidth/newScreenHeight, 1000.0, 3000.0)
https://www.elitepvpers.com/forum/metin2-pserver-discussions-questions/4048550-character-select-coding-scale-position-char.html Itt is az volt a hiba, neki sikerült megoldani .:)
Szóval a SetCamera pozicionálja a karakter?
De ebből felbontás dinamikusan hogy tudok konkrét pixel x,y pozíció értéket kiszedni?
Nézelődök hátha valami megoldás van rá, matematikai szempontból, vissza fejteni.
Üzenet összefésülés: 2017-11-19, 14:40:41
Ebből nem lehet kiszedni, nem befolyásolja a pozicionálást hanem csak méretezi, forgatja a képernyőn a karakter
Ha láttál már teleport hacket akkor tudnád melyik kód felel érte ;D
[spoiler]chr.SetPixelPosition(int(x), int(y), 30)
[/spoiler]
De én nem set-elni szeretném, hanem get-elni, azaz kikérni a pozíciót...
Nincs get erre, de am nem nehéz beleírni 1 új sorba h elmentse ezeket a koordinátákat :-X :o
Vagy írsz 1 get metódust indító forrásban és tudsz getelni.
Valami módon akkor is el helyezi a karaktert a választóban hogy ott legyen ahol van. Valahol valahogy...
Igen azzal a settel, előtte meg szépen kiszámolja az X és Y-t.
distance = 50.0
rotRadian = self.curRotation[i] * (math.pi*2) / 360.0
x = distance*math.sin(rotRadian) + distance*math.cos(rotRadian)
y = distance*math.cos(rotRadian) - distance*math.sin(rotRadian)
Haver te már megint nem teljesen értesz.
Egyrészt nem a forgatás pozícióját akarom lekérni, mivel te az előbbi kódot a karakter rotRadian forgatásából idézted, aminek semmi köze a screen object elhelyezéshez. Másrészt nekem nincs benne forgatás mint a régi kliensekben. Jobbra-balra és egyszerre egy karaktert mutat. Remélem nem bántottalak meg a felvilágosítással.
Te nem érted a dolgot...
Igen az a forgatás valóban, de abban bennevan a vég/kezdőpozíció ahol megáll a karakter :o :o :o
Medzsik
De fogadjunk, hogy nincs hatással rá...
Mivel nekem mint már írtam nincs ilyen a kódomban. Mivel el lett távolítva a forgatás.
def OnUpdate(self):
chr.Update()
localtime = localtime = time.strftime("[%H:%M:%S]")
self.SzerverTime.SetText(localtime)
for i in xrange(4):
self.curGauge[i] += (self.destGauge[i] - self.curGauge[i]) / 10.0
if abs(self.curGauge[i] - self.destGauge[i]) < 0.005:
self.curGauge[i] = self.destGauge[i]
self.GaugeList[i].SetPercentage(self.curGauge[i], 1.0)
for i in xrange(self.SLOT_COUNT):
if False == chr.HasInstance(i):
continue
chr.SelectInstance(i)
#######################################################
if -1 != self.startIndex:
## Temporary
## BackGroundLoading이 지원 될때까지 임시로..
if app.GetTime() - self.startReservingTime > 3.0:
if False == self.openLoadingFlag:
chrSlot=self.stream.GetCharacterSlot()
net.DirectEnter(chrSlot)
self.openLoadingFlag = True
playTime=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_PLAYTIME)
import player
player.SetPlayTime(playTime)
import chat
chat.Clear() ## 들어갈때 Chat 을 초기화. 임시 Pos.
## Temporary
#######################################################
Create
...
SCRIPT_SetPixelPosition(float(c_rkCreateData.m_lPosX), float(c_rkCreateData.m_lPosY));
...
Köszi pati hogy próbáltál segíteni!
Végül nem tudtam kiszedni a pozíciót, így idáig matematikára hagyatkozva számolgattam, aztán az előbb össze jött egy képlet ami pár rész adattal, mint például a képernyő aktuális méretei és a karakter szélessége - magassága, valamint a képernyő scale értéke megadta a kívánt eredményt.