du musst das jeweils unter den case des richtigen types und applytypes eintragen
also:
dann jeweils ändern in z.B.
du musst das jeweils unter den case des richtigen types und applytypes eintragen
also:
dann jeweils ändern in z.B.
Ich wüsste jetzt nicht wie man über die Skillproto einstellt wie gut ein Skill trifft sowohl clientside als auch svside tust du das eig nicht über ne skillproto regeln, ich schätze sowas muss man im svsource nachprüfen
Die Trefferwahrscheinlichkeit von Zauberaufheben kann er verändern indem er den Wert der "PointPoly2" Spalte verändert
Bitte melden Sie sich an, um dieses Bild zu sehen.
Die Wahrscheinlichkeit kannste dann ausrechnen, hier noch die Definition von der Variable k
Bitte melden Sie sich an, um dieses Bild zu sehen.
da
füg einfach in der 'def AddItemData'über 'self.showotoltip()' (ganz am ende folgendes ein:
aber musst die abfrage ja nicht skippen kannst auch einfach quicksell like
It's clientside, check out your locale/%s/map folder that you have %s_point.txt
in the map folder i have for example this file metin2_map_c1_point.txt
it contains this:Alles anzeigenCode
- //num type x y Ç¥½ÃÅؽºÆ®
- //type : "OPC", "OPCPVP", "OPCPVPSELF", "NPC", "MONSTER", "WARP", "WAYPOINT"
- //---------------------------------------------------------------------------------------------------
- 0 NPC 43000 60800 "¹«±â»óÁ¡ ÁÖÀÎ"
- 1 NPC 40300 58500 "¹æ¾î±¸»óÁ¡ ÁÖÀÎ"
- 2 NPC 38300 69300 "ÀâÈ»óÁ¡ ÁÖÀÎ"
- 3 NPC 31500 56000 "¼Æò¹ÝÁ¡ ÇҾƹöÁö"
- 4 NPC 41700 67100 "³ëÆÄ"
- 5 WARP 13700 12600 "¹Ú¶óÇö"
- 6 NPC 71100 23400 "¾îºÎ"
- 7 NPC 73200 39000 "¾îºÎ"
- 8 NPC 77200 47200 "¾îºÎ"
- 9 NPC 76300 80900 "¾îºÎ"
- 10 NPC 77300 90500 "¾îºÎ"
- 11 NPC 42800 48000 "¾îºÎ"
- 12 NPC 38600 84900 "¾îºÎ"
- 13 NPC 81900 31500 "¾îºÎ"
- 14 WARP 12500 111800 "³ëÀÎ"
does your code worked in the past?
do you use a multi language system ? (in this case check if the path is correct)
any sysrr output?
you also can disable the ENABLE_NEW_ATLAS_MARK_INFO define for test (then it shows you the position by npc.txt)
If you want you can send me your Anydesk ID and I will take a closer look
it depends how you read out the positions of the npcs, either clientside by txt (for example: map/%s_point.txt) or serverside.
check out your CPythonMiniMap::__LoadAtlasMarkInfo function, for more information
Thank you for the answer, this is my CPythonMiniMap::__LoadAtlasMarkInfo, I'm trying to understand where it should load the npc in the atlas map but can't understand it
Alles anzeigenCode
- #define ENABLE_NEW_ATLAS_MARK_INFO
- #ifdef ENABLE_NEW_ATLAS_MARK_INFO
- #include "PythonNonPlayer.h"
- #endif
- void CPythonMiniMap::__LoadAtlasMarkInfo()
- {
- ClearAtlasMarkInfo();
- ClearGuildArea();
- CPythonBackground & rkBG=CPythonBackground::Instance();
- if (!rkBG.IsMapOutdoor())
- return;
- CMapOutdoor & rkMap=rkBG.GetMapOutdoorRef();
- // LOCALE
- char szAtlasMarkInfoFileName[64+1];
- _snprintf(szAtlasMarkInfoFileName, sizeof(szAtlasMarkInfoFileName), "%s/map/%s_point.txt", LocaleService_GetLocalePath(), rkMap.GetName().c_str());
- // END_OF_LOCALE
- CTokenVectorMap stTokenVectorMap;
- if (!LoadMultipleTextData(szAtlasMarkInfoFileName, stTokenVectorMap))
- {
- Tracef(" CPythonMiniMap::__LoadAtlasMarkInfo File Load %s ERROR\n", szAtlasMarkInfoFileName);
- return;
- }
- const std::string strType[TYPE_COUNT] = { "OPC", "OPCPVP", "OPCPVPSELF", "NPC", "MONSTER", "WARP", "WAYPOINT" };
- for (DWORD i = 0; i < stTokenVectorMap.size(); ++i)
- {
- char szMarkInfoName[32+1];
- _snprintf(szMarkInfoName, sizeof(szMarkInfoName), "%d", i);
- if (stTokenVectorMap.end() == stTokenVectorMap.find(szMarkInfoName))
- continue;
- const CTokenVector & rVector = stTokenVectorMap[szMarkInfoName];
- TAtlasMarkInfo aAtlasMarkInfo;
- #ifdef ENABLE_NEW_ATLAS_MARK_INFO
- if (rVector.size() == 3)
- {
- const std::string & c_rstrType = strType[3]; // FULL NPC
- const std::string & c_rstrPositionX = rVector[0].c_str();
- const std::string & c_rstrPositionY = rVector[1].c_str();
- const std::string & c_rstrText = rVector[2].c_str();
- int iVNum = atoi(c_rstrText.c_str());
- aAtlasMarkInfo.m_fX = atof(c_rstrPositionX.c_str());
- aAtlasMarkInfo.m_fY = atof(c_rstrPositionY.c_str());
- aAtlasMarkInfo.m_strText = CPythonNonPlayer::Instance().GetMonsterName(iVNum);
- }
- else
- #endif
- {
- const std::string & c_rstrType = rVector[0].c_str();
- const std::string & c_rstrPositionX = rVector[1].c_str();
- const std::string & c_rstrPositionY = rVector[2].c_str();
- const std::string & c_rstrText = rVector[3].c_str();
- for (int i = 0; i < TYPE_COUNT; ++i)
- {
- if (0 == c_rstrType.compare(strType[i]))
- aAtlasMarkInfo.m_byType = (BYTE)i;
- }
- aAtlasMarkInfo.m_fX = atof(c_rstrPositionX.c_str());
- aAtlasMarkInfo.m_fY = atof(c_rstrPositionY.c_str());
- aAtlasMarkInfo.m_strText = c_rstrText;
- }
- aAtlasMarkInfo.m_fScreenX = aAtlasMarkInfo.m_fX / m_fAtlasMaxX * m_fAtlasImageSizeX - (float)m_WhiteMark.GetWidth() / 2.0f;
- aAtlasMarkInfo.m_fScreenY = aAtlasMarkInfo.m_fY / m_fAtlasMaxY * m_fAtlasImageSizeY - (float)m_WhiteMark.GetHeight() / 2.0f;
- switch (aAtlasMarkInfo.m_byType)
- {
- case TYPE_NPC:
- m_AtlasNPCInfoVector.push_back(aAtlasMarkInfo);
- break;
- case TYPE_WARP:
- m_AtlasWarpInfoVector.push_back(aAtlasMarkInfo);
- break;
- }
- }
- }
It's clientside, check out your locale/%s/map folder that you have %s_point.txtBitte melden Sie sich an, um diesen Link zu sehen.
Bitte melden Sie sich an, um diesen Link zu sehen.
it depends how you read out the positions of the npcs, either clientside by txt (for example: map/%s_point.txt) or serverside.
check out your CPythonMiniMap::__LoadAtlasMarkInfo function, for more information
Es geht um das quetschen. Nehme ich jetzt bspw. ein Titel wie IchBinDerCoolste wird dieser doch dazwischen gequetscht und dadurch entsteht Verschwommenheit bzw. Unschärfe an sich oder nicht? habe es selber nie gemacht, deshalb die Frage. Es wäre schöner wenn auf Titel usw. Rücksicht genommen werden würde
Was der Threadersteller will ist den Rang über dem Namen anzeigen lassen, das heißt:
Er geht wie Eclipse sagte in die pythontexttail und ändert:
- Die Position vom Rang auf die Position von der Gilde
- Verschiebt die Position von der Gilde nochmal um die ursprüngliche Differenz von Namen und Gilde
- verschiebt das Level auf die ursprüngliche Rank position und passt ggf. den Abstand nochmal an
0226 20:02:23978 :: File "uiTarget.py", line 371, in OnRunMouseWheel
0226 20:02:23978 :: AttributeError
0226 20:02:23978 :: 'NoneType' object has no attribute 'IsShow'
Bitte melden Sie sich an, um diesen Link zu sehen.
musst ihn noch in der msm aktivieren
bspw. bei der Gemi:
es hat die gleichen Auswirkungen, als wenn die Spieler ihren Status selber auf 90 setzten
Die Spieler können aber nicht alles von ihrem Status auf 90 setzen. Darum gehts derzeit. Danke dir trotzdem.
Wenn du es so machst wie zuvor beschrieben hat der Spieler alle Statuspunkte direkt auf 90, falls es dir penibel darum geht, dass es nicht möglich ist mit Level 105 alle Statuspunkte auf 90 zu besitzen lässt du das hier stehen
gehst in die constants und passt die berechnung für die jeweilige klasse an
Bitte melden Sie sich an, um diesen Link zu sehen.
Alles anzeigenso danke an cream er hat das für mich getan mit includen
aber ingame sagt er mir immer noch subtype 8 jetzt bin ich verwirrt
Bitte melden Sie sich an, um diesen Link zu sehen.
Code
- 79501 Archers Quiver ITEM_WEAPON WEAPON_QUIVER 1 ANTI_MUSA | ANTI_SURA | ANTI_MUDANG | ANTI_DROP | ANTI_GIVE | ANTI_MYSHOP | ANTI_SAFEBOX ITEM_STACKABLE | ITEM_SLOW_QUERY WEAR_ARROW NONE 100000 0 0 0 0 REAL_TIME 86400 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 17 4 0 25 0 0 0 0 0
- 79502 Archers Quiver ITEM_WEAPON WEAPON_QUIVER 1 ANTI_MUSA | ANTI_SURA | ANTI_MUDANG | ANTI_DROP | ANTI_GIVE | ANTI_MYSHOP | ANTI_SAFEBOX ITEM_STACKABLE | ITEM_SLOW_QUERY WEAR_ARROW NONE 550000 0 0 0 0 REAL_TIME 604800 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 17 4 0 25 0 0 0 0 0
- 79503 Archers Quiver ITEM_WEAPON WEAPON_QUIVER 1 ANTI_MUSA | ANTI_SURA | ANTI_MUDANG | ANTI_DROP | ANTI_GIVE | ANTI_MYSHOP | ANTI_SAFEBOX ITEM_STACKABLE | ITEM_SLOW_QUERY WEAR_ARROW NONE 0 0 0 0 0 REAL_TIME 1296000 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 17 4 0 25 0 0 0 0 0
- 79504 Archers Quiver ITEM_WEAPON WEAPON_QUIVER 1 ANTI_MUSA | ANTI_SURA | ANTI_MUDANG | ANTI_DROP | ANTI_GIVE | ANTI_MYSHOP | ANTI_SAFEBOX ITEM_STACKABLE | ITEM_SLOW_QUERY WEAR_ARROW NONE 0 0 0 0 0 REAL_TIME 2592000 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 17 4 0 25 0 0 0 0 0
Bitte melden Sie sich an, um dieses Bild zu sehen.Bitte melden Sie sich an, um dieses Bild zu sehen.
0 = weapon_sword
[...]
8 = weapon_quiver
also stimmt alles. davor war es client = 9, serverside = 8 jetzt ist es =8 =8 (durch das rauslöschen des "=") die feste definition verwendest du z.b. wenn du lykaner klingen dazwischen hast, diese aber nicht aktiv sind. sodass keine ungleichheit ensteht
das bedeutet das deine define nicht aktiv ist
Warum nicht mit dem event "onlogin" über die funktion "pc.set_level" den spieler direkt auf 120 setzten? Warum den Spieler das selber 120 eintippen lassen. Wenn man es denn über Quest regen will.
oder in der DB direkt den Default wert auf 120 setzten.Bei mir ist es das selbe wenn ich den Default wert auf 120 setzte über den Source kann man keine Statuspunkte verteilen.
geh in die input_login
dort findest du
das änderst du dann ab wie du möchtest z.b.
ENVIORMENT_DATA fehlt in deiner costinfo
import net
Aber irgendwas stimmt nicht, ingame:
Bitte melden Sie sich an, um diesen Link zu sehen.
Muss ich noch irgendwo etwas eintragen?
danke schonmal
Dein Problem ist in der Skilltable, wahrscheinlich irgendetwas an der Struktur verkackt.
Bitte melden Sie sich an, um diesen Link zu sehen.