Sevenfoldia
-
Posts
27 -
Joined
-
Last visited
-
Feedback
0%
Content Type
Forums
Store
Third Party - Providers Directory
Feature Plan
Release Notes
Docs
Events
Posts posted by Sevenfoldia
-
-
Hello everyone,
In PythonItem.cpp, there is function for original effect for items on the ground.
void CPythonItem::Create() { CEffectManager::Instance().RegisterEffect2("d:/ymir work/effect/etc/dropitem/dropitem.mse", &m_dwDropItemEffectID); }
I want to add effects for different item IDs separately. For example: for item ID 71084, 71085 I want to use effect dropitem_rare.mse and for all other items I want to use original dropitem.mse,
Can somebody help me with this please?
Thank you for all your advices.
-
4 hours ago, dumita123 said:
This problem was a pain in the ass, but it was because of the worldmatrix. The sash system also has a scale system, so we need to also update the shake function matrix, since the sash system is updating our deform functions over in ThingInstance.
Enough talking, let's fix it:
GameLib/ActorInstanceBattle.cppSearch:
void CActorInstance::ShakeProcess()
Replace
m_worldMatrix._41 += v3Pos.x; m_worldMatrix._42 += v3Pos.y; m_worldMatrix._43 += v3Pos.z;
With
m_TransformMatrix._41 += v3Pos.x; m_TransformMatrix._42 += v3Pos.y; m_TransformMatrix._43 += v3Pos.z;
It works! Than you very much!
-
char.cpp
find:
if (GetLevel() >= 5) PointChange(POINT_SKILL, 1);
-
6 hours ago, Syreldar said:
void CActorInstance::__ProcessDataAttackSuccess(const NRaceData::TAttackData& c_rAttackData, CActorInstance& rVictim, const D3DXVECTOR3& c_rv3Position, UINT uiSkill, BOOL isSendPacket)
else if (rVictim.IsStone() || rVictim.IsDoor()) { __HitStone(rVictim); }
void CActorInstance::__HitStone(CActorInstance& rVictim) { if (rVictim.IsStun()) { rVictim.Die(); } else { rVictim.__Shake(100); // This is what triggers the shake, make sure it's there. } }
Thank you for your advice. I have this this code in ActorInstanceBattle.cpp but it doesnt work.
It is not working after I added shoulder sash system. When I load backup without sash, metin stones shaking normally.
Maybe I added some code badly, but there is no changes in ActorInstanceBattle.cpp
-
I have the same problem. Did you find solution?
-
Thak you! It works.
-
On 7/29/2022 at 3:27 PM, Karbust said:
Use this queries instead
For player ranking:
SELECT p.id, p.`name`, p.job, p.playtime, p.`level`, p.exp, g.`name` AS g_name FROM player AS p INNER JOIN guild_member AS gm ON gm.pid = p.id INNER JOIN guild AS g ON g.id = gm.guild_id WHERE p.`name` NOT LIKE '[%]%' ORDER BY p.`level` DESC, p.exp DESC, playtime DESC LIMIT 100
For guild ranking:
SELECT g.`name`, g.`level`, g.exp, g.win, g.draw, g.loss, g.ladder_point, p.`name`, p.id FROM player AS p INNER JOIN guild_member AS gm ON p.id = gm.pid INNER JOIN guild AS g ON g.id = gm.guild_id WHERE p.`name` NOT LIKE '[%]%' ORDER BY ladder_point DESC LIMIT 100
Thank you for this. I edit some lines and It works pretty well. But there is a problem at player rankings. It shows only player who are in guild. Players without guilds are not in ladder. When i delete the "guild" part from query it shows all players
My rankings.php:
<div class="content"> <div class="content-bg"> <div class="content-bg-bottom"> <h2>100 nejlepších hráčů - podle dosažené úrovně a zkušeností </h2> <div id="ranking"> <br /> <table border="1"> <tr> <th width="10">Umístění</th> <th width="100">Jméno</th> <th width="70">Level</th> <th width="70">Zkušeností</th> <th width="80">Cech</th> <th width="70">Rasa</th> <th width="40">Říše</th> </tr> <?php mysqli_select_db($sqlServ, 'player'); $rank = "SELECT p.id, p.account_id, p.`name`, p.job, p.playtime, p.`level`, p.exp, g.`name` AS g_name, i.empire AS empire FROM player AS p INNER JOIN guild_member AS gm ON gm.pid = p.id INNER JOIN guild AS g ON g.id = gm.guild_id INNER JOIN player_index AS i ON i.id = p.account_id WHERE p.`name` NOT LIKE '[%]%' ORDER BY p.`level` DESC, p.exp DESC, playtime DESC LIMIT 100"; $query = mysqli_query($sqlServ, $rank); $i = 0; while($array = mysqli_fetch_array($query)) { $i = $i + 1; echo "<tr> <th width=\"10\"><font color=\"black\">" . $i . "</font></th> <th width=\"100\"><font color=\"black\">" . $array["name"] . "</font></th> <th width=\"70\"><font color=\"black\">" . $array["level"] . "</font></th> <th width=\"70\"><font color=\"black\">" . $array["exp"] . "</font></th> <th width=\"80\"><font color=\"black\">" . $array["g_name"] . "</font></th>"; if($array["job"] == 0) { echo "<th width=\"70\" td align=\"center\"><img src=\"img/warrior_m.png\"></th>"; } elseif($array["job"] == 1) { echo "<th width=\"70\" td align=\"center\"><img src=\"img/assassin_w.png\"></th>"; } elseif($array["job"] == 2) { echo "<th width=\"70\" td align=\"center\"><img src=\"img/sura_m.png\"></th>"; } elseif($array["job"] == 3) { echo "<th width=\"70\" td align=\"center\"><img src=\"img/shaman_w.png\"></th>"; } elseif($array["job"] == 4) { echo "<th width=\"70\" td align=\"center\"><img src=\"img/warrior_w.png\"></th>"; } elseif($array["job"] == 5) { echo "<th width=\"70\" td align=\"center\"><img src=\"img/assassin_m.png\"></th>"; } elseif($array["job"] == 6) { echo "<th width=\"70\" td align=\"center\"><img src=\"img/sura_w.png\"></th>"; } else { echo "<th width=\"70\" td align=\"center\"><img src=\"img/shaman_m.png\"></th>"; } if($array["empire"] == 1) { echo "<th width=\"40\" td align=\"center\"><img src=\"img/1_s.png\"></th></tr>"; } elseif($array["empire"] == 2) { echo "<th width=\"40\" td align=\"center\"><img src=\"img/2_s.png\"></th></tr>"; } else { echo "<th width=\"40\" td align=\"center\"><img src=\"img/3_s.png\"></th></tr>"; } } echo "</table>"; ?> <br /> </div> <center><strong><a class="btn" href="?s=guildrank">Žebříček cechů</a></strong><br /></center> <br class="clearfloat" /> </div> </div> </div> <div class="shadow"> </div>
Can you help me with this?
-
Hello everyone. I am using [Replica] Old Metin2 Website. I edited pretty much things, but I need help with query for guild at player ranking page and guild leader at guild ranking page.
I tried so many variants like $guild = "SELECT example FROM example WHERE example = " . $array["example"] . ""; etc.
But i didnt find the right solution
Here my rankings.php
<div class="content"> <div class="content-bg"> <div class="content-bg-bottom"> <h2>100 nejlepších hráčů - podle dosažené úrovně a zkušeností </h2> <div id="ranking"> <br /> <table border="1"> <tr> <th width="10">Umístění</th> <th width="100">Jméno</th> <th width="70">Level</th> <th width="70">Zkušeností</th> <th width="80">Cech</th> <th width="70">Rasa</th> <th width="40">Říše</th> </tr> <?php mysqli_select_db($sqlServ, 'player'); $rank = "SELECT * from player WHERE name NOT LIKE '[%]%' order by level desc, exp desc, playtime desc limit 100"; $query = mysqli_query($sqlServ, $rank); $i = 0; while($array = mysqli_fetch_array($query)) { $i = $i + 1; echo "<tr> <th width=\"10\"><font color=\"black\">" . $i . "</font></th> <th width=\"100\"><font color=\"black\">" . $array["name"] . "</font></th> <th width=\"70\"><font color=\"black\">" . $array["level"] . "</font></th> <th width=\"70\"><font color=\"black\">" . $array["exp"] . "</font></th> <th width=\"80\"><font color=\"black\">" . $array["guild"] . "</font></th>"; //placeholder for right guild query $job = "SELECT job from player where job = " . $array["job"] . ""; $query2 = mysqli_query($sqlServ, $job); $array2 = mysqli_fetch_array($query2); if($array2["job"] == 0) { echo "<th width=\"70\" td align=\"center\"><img src=\"img/warrior_m.png\"></th>"; } elseif($array2["job"] == 1) { echo "<th width=\"70\" td align=\"center\"><img src=\"img/assassin_w.png\"></th>"; } elseif($array2["job"] == 2) { echo "<th width=\"70\" td align=\"center\"><img src=\"img/sura_m.png\"></th>"; } elseif($array2["job"] == 3) { echo "<th width=\"70\" td align=\"center\"><img src=\"img/shaman_m.png\"></th>"; } elseif($array2["job"] == 4) { echo "<th width=\"70\" td align=\"center\"><img src=\"img/warrior_w.png\"></th>"; } elseif($array2["job"] == 5) { echo "<th width=\"70\" td align=\"center\"><img src=\"img/assassin_m.png\"></th>"; } elseif($array2["job"] == 6) { echo "<th width=\"70\" td align=\"center\"><img src=\"img/sura_w.png\"></th>"; } else { echo "<th width=\"70\" td align=\"center\"><img src=\"img/shaman_w.png\"></th>"; } $reich = "SELECT empire from player_index where id = " . $array["account_id"] . ""; $query3 = mysqli_query($sqlServ, $reich); $array3 = mysqli_fetch_array($query3); if($array3["empire"] == 1) { echo "<th width=\"40\" td align=\"center\"><img src=\"img/1_s.png\"></th></tr>"; } elseif($array3["empire"] == 2) { echo "<th width=\"40\" td align=\"center\"><img src=\"img/2_s.png\"></th></tr>"; } else { echo "<th width=\"40\" td align=\"center\"><img src=\"img/3_s.png\"></th></tr>"; } } echo "</table>"; ?> <br /> </div> <center><strong><a class="btn" href="?s=guildrank">Žebříček cechů</a></strong><br /></center> <br class="clearfloat" /> </div> </div> </div> <div class="shadow"> </div>
and here is my guild rank.php
<div class="content"> <div class="content-bg"> <div class="content-bg-bottom"> <h2>100 nejlepších cechů - podle dosažených bodů ve válkách</h2> <div id="ranking"> <br /> <table border="1"> <tr> <th width="10">Umístění</th> <th width="90">Název</th> <th width="50">Level</th> <th width="50">Vítězství</th> <th width="50">Remízy</th> <th width="40">Prohry</th> <th width="50">Body</th> <th width="70">Vůdce</th> <th width="40">Říše </th> </tr> <?php mysqli_select_db($sqlServ, 'player'); $rank = "SELECT * from guild order by ladder_point desc limit 100"; $query = mysqli_query($sqlServ, $rank); $i = 0; while($array = mysqli_fetch_array($query)) { $i = $i + 1; echo "<tr> <th width=\"10\"><font color=\"black\">" . $i . "</font></th> <th width=\"90\"><font color=\"black\">" . $array["name"] . "</font></th> <th width=\"50\"><font color=\"black\">" . $array["level"] . "</font></th> <th width=\"50\"><font color=\"black\">" . $array["win"] . "</font></th> <th width=\"50\"><font color=\"black\">" . $array["draw"] . "</font></th> <th width=\"40\"><font color=\"black\">" . $array["loss"] . "</font></th> <th width=\"50\"><font color=\"black\">" . $array["ladder_point"] . "</font></th> <th width=\"50\"><font color=\"black\">" . $array["guild_leader"] . "</font></th>"; //placeholder for right guild leader query $reich = "SELECT empire from player_index where id = " . $array2["account_id"] . ""; $query2 = mysqli_query($sqlServ, $reich); if($array2["empire"] == 1) { echo "<th width=\"40\" td align=\"center\"><img src=\"img/1_s.png\"></th></tr>"; } elseif($array2["empire"] == 2) { echo "<th width=\"40\" td align=\"center\"><img src=\"img/2_s.png\"></th></tr>"; } else { echo "<th width=\"40\" td align=\"center\"><img src=\"img/3_s.png\"></th></tr>"; } } echo "</table>"; ?> <br /> </div> <center><strong><a class="btn" href="?s=rankings">Žebříček hráčů</a></strong><br /></center> <br class="clearfloat" /> </div> </div> </div> <div class="shadow"> </div>
There is screenshot of my ranking page
There is screeshot of my guild rank page
It is in Czech language so there are some translations if you need: cech = guild, vůdce = leader
Can someone please help me to setup right query?
Thank you for all advices.
-
Thanks, very usefull.
With this tutorial I figured out how to implement effects for various effects for potions.
-
Hello community,
I have a little problem with this system. Everything works good, except options for experience, items and currency.
Experience does nothing
Items hides recieved experience
Currency hides recieved yangs and items at the same timeAnybody knows how to solve it? I uploaded all touched files from this system in the link bellow, so you can check all my files.
I tried to implement this system 3 times with the same results.
The same problem has @blaxis on this topic, but there is no solution.
Thanks for every suggestions.
- 21
- 3
- 1
-
Hello community,
First of all, I added switchbot and then make a button at inventory window for bonus switcher (Like this), which was good enough for me in the moment.
Then I added Official character details by Mali
and decided to move button for switchbot from inventory window to character details window (Like this)
I created a new button and added it to the character details window but the bonus switcher does not open without any error.
I followed this tutorial for make it work in inventory window:
Spoiler#in root/uiinventory.py
#Add:
import bonusswitcher
#Find:
self.isOpenedBeltWindowWhenClosingInventory = 0
#Add above:
self.okno2 = bonusswitcher.Bot()
#Find:
self.costumeButton = self.GetChild2("CostumeButton")
#Add under:
self.nowyButton2 = self.GetChild2("Button2")
#Find:
self.wndMoneySlot.SetEvent(ui.__mem_func__(self.OpenPickMoneyDialog))
#Add under:
self.nowyButton2.SetEvent(ui.__mem_func__(self.Okno2))
#Find:
def ClickMallButton(self):
#Add above:
def Okno2(self):
if self.okno2.IsShow():
self.okno2.Close()
else:
self.okno2.Open()
In locale/xx/ui/inventorywindow.py I simply added a button with ("name":"Button2",) and everything works fine.
When I put ("name":"Button2",) to the button I created in character details window, nothing happens even when I try to put there ("name" : "DSSButton",)
I tried to put functions to root/uicharacterdeails.py and also to root/uicharacter.py but every time I ended with some missing attribute errors.
I found some threads people asking for similar questions, but mostly it was for buttons at inventory window and nothing was really helpfull for me.
So can you help me make this button work please?
Thank you for your replies and sorry for my english.
-
-
Anyone can help me please?
-
Hello community,
I'm using Metin2 Project 2014.1 | Kraizy Updated Edition and I have a problem, that the belts gives me bonuses, but I can't see them in description. I compared uitooltip from another client, everything is the same.
Edit: Also I can't see slots when I put diamonds on belts.
Can anybody help me with this?
Spoiler- 1
- 1
-
On 2/7/2020 at 1:57 PM, Nirray said:
root/uitooltip.py
Find:def __AppendAccessoryMetinSlotInfo(self, metinSlot, mtrlVnum)
Replace whole function:
def __AppendAccessoryMetinSlotInfo(self, metinSlot, mtrlVnum): ACCESSORY_SOCKET_MAX_SIZE = 4 cur=min(metinSlot[0], ACCESSORY_SOCKET_MAX_SIZE) end=min(metinSlot[1], ACCESSORY_SOCKET_MAX_SIZE) affectType1, affectValue1 = item.GetAffect(0) affectList1=[0, max(1, affectValue1*10/100), max(2, affectValue1*20/100), max(3, affectValue1*40/100), max(4, affectValue1*60/100)] affectType2, affectValue2 = item.GetAffect(1) affectList2=[0, max(1, affectValue2*10/100), max(2, affectValue2*20/100), max(3, affectValue2*40/100), max(4, affectValue1*60/100)] affectType3, affectValue3 = item.GetAffect(2) affectList3=[0, max(1, affectValue3*10/100), max(2, affectValue3*20/100), max(3, affectValue3*40/100), max(4, affectValue1*60/100)] mtrlPos=0 mtrlList=[mtrlVnum]*cur+[player.METIN_SOCKET_TYPE_SILVER]*(end-cur) for mtrl in mtrlList: affectString1 = self.__GetAffectString(affectType1, affectList1[mtrlPos+1]-affectList1[mtrlPos]) affectString2 = self.__GetAffectString(affectType2, affectList2[mtrlPos+1]-affectList2[mtrlPos]) affectString3 = self.__GetAffectString(affectType3, affectList3[mtrlPos+1]-affectList3[mtrlPos]) leftTime = 0 if cur == mtrlPos+1: leftTime=metinSlot[2] self.__AppendMetinSlotInfo_AppendMetinSocketData(mtrlPos, mtrl, affectString1, affectString2 ,affectString3, leftTime) mtrlPos+=1
Then search:
def __AppendMetinSlotInfo_AppendMetinSocketData(self, index, metinSlotData, custumAffectString="", custumAffectString2="", custumAffectString3="",leftTime=0):
And also replace:
def __AppendMetinSlotInfo_AppendMetinSocketData(self, index, metinSlotData, custumAffectString="", custumAffectString2="", custumAffectString3="",leftTime=0): slotType = self.GetMetinSocketType(metinSlotData) itemIndex = self.GetMetinItemIndex(metinSlotData) if 0 == slotType: return self.AppendSpace(5) slotImage = ui.ImageBox() slotImage.SetParent(self) slotImage.Show() ## Name nameTextLine = ui.TextLine() nameTextLine.SetParent(self) nameTextLine.SetFontName(self.defFontName) nameTextLine.SetPackedFontColor(self.NORMAL_COLOR) nameTextLine.SetOutline() nameTextLine.SetFeather() nameTextLine.Show() self.childrenList.append(nameTextLine) if player.METIN_SOCKET_TYPE_SILVER == slotType: slotImage.LoadImage("d:/ymir work/ui/game/windows/metin_slot_silver.sub") elif player.METIN_SOCKET_TYPE_GOLD == slotType: slotImage.LoadImage("d:/ymir work/ui/game/windows/metin_slot_gold.sub") self.childrenList.append(slotImage) if localeInfo.IsARABIC(): slotImage.SetPosition(self.toolTipWidth - slotImage.GetWidth() - 9, self.toolTipHeight-1) nameTextLine.SetPosition(self.toolTipWidth - 50, self.toolTipHeight + 2) else: slotImage.SetPosition(9, self.toolTipHeight-1) nameTextLine.SetPosition(50, self.toolTipHeight + 2) metinImage = ui.ImageBox() metinImage.SetParent(self) metinImage.Show() self.childrenList.append(metinImage) if itemIndex: item.SelectItem(itemIndex) ## Image try: metinImage.LoadImage(item.GetIconImageFileName()) except: dbg.TraceError("ItemToolTip.__AppendMetinSocketData() - Failed to find image file %d:%s" % (itemIndex, item.GetIconImageFileName()) ) nameTextLine.SetText(item.GetItemName()) ## Affect affectTextLine = ui.TextLine() affectTextLine.SetParent(self) affectTextLine.SetFontName(self.defFontName) affectTextLine.SetPackedFontColor(self.POSITIVE_COLOR) affectTextLine.SetOutline() affectTextLine.SetFeather() affectTextLine.Show() if localeInfo.IsARABIC(): metinImage.SetPosition(self.toolTipWidth - metinImage.GetWidth() - 10, self.toolTipHeight) affectTextLine.SetPosition(self.toolTipWidth - 50, self.toolTipHeight + 16 + 2) else: metinImage.SetPosition(10, self.toolTipHeight) affectTextLine.SetPosition(50, self.toolTipHeight + 16 + 2) if custumAffectString: affectTextLine.SetText(custumAffectString) elif itemIndex!=constInfo.ERROR_METIN_STONE: affectType, affectValue = item.GetAffect(0) affectString = self.__GetAffectString(affectType, affectValue) if affectString: affectTextLine.SetText(affectString) else: affectTextLine.SetText(localeInfo.TOOLTIP_APPLY_NOAFFECT) self.childrenList.append(affectTextLine) if custumAffectString2: affectTextLine = ui.TextLine() affectTextLine.SetParent(self) affectTextLine.SetFontName(self.defFontName) affectTextLine.SetPackedFontColor(self.POSITIVE_COLOR) affectTextLine.SetPosition(50, self.toolTipHeight + 16 + 2 + 16 + 2) affectTextLine.SetOutline() affectTextLine.SetFeather() affectTextLine.Show() affectTextLine.SetText(custumAffectString2) self.childrenList.append(affectTextLine) self.toolTipHeight += 16 + 2 if custumAffectString3: affectTextLine = ui.TextLine() affectTextLine.SetParent(self) affectTextLine.SetFontName(self.defFontName) affectTextLine.SetPackedFontColor(self.POSITIVE_COLOR) affectTextLine.SetPosition(50, self.toolTipHeight + 16 + 2 + 16 + 2) affectTextLine.SetOutline() affectTextLine.SetFeather() affectTextLine.Show() affectTextLine.SetText(custumAffectString3) self.childrenList.append(affectTextLine) self.toolTipHeight += 16 + 2 if 0 != leftTime: timeText = (localeInfo.LEFT_TIME + " : " + localeInfo.SecondToDHM(leftTime)) timeTextLine = ui.TextLine() timeTextLine.SetParent(self) timeTextLine.SetFontName(self.defFontName) timeTextLine.SetPackedFontColor(self.POSITIVE_COLOR) timeTextLine.SetPosition(50, self.toolTipHeight + 16 + 2 + 16 + 2) timeTextLine.SetOutline() timeTextLine.SetFeather() timeTextLine.Show() timeTextLine.SetText(timeText) self.childrenList.append(timeTextLine) self.toolTipHeight += 16 + 2 else: nameTextLine.SetText(localeInfo.TOOLTIP_SOCKET_EMPTY) self.toolTipHeight += 45 self.ResizeToolTip()
Should work nowWork very vell, but for other who will need this, take care of tabs.
thank you.
-
Thank you very much, I’ll try it later
-
Hello community,
can you help me please how to edit displayed bonuses in jewelry when you add an ore?
I added 3 bonuses into earings, and when I add ore, there are displayed only 2. Works all 3 of them, but they are not in the description as you can in in the picture.
I did not find anything like that.
Thank you and sorry for my english.Spoiler- 1
-
Thank you it helpend.
For anyone who need this too, you need to replace function in questlib.lua
-
-
32 minutes ago, thespeedy said:
can you pm to?
You have it in PM
-
-
-
-
dropitem effect
in Community Support - Questions & Answers
Posted · Edited by Metin2 Dev
Core X - External 2 Internal
Thank you very much! It is awesome.
Here is image