die wurden damals auf epvp releast. Wenn du es findest poste den link bitte, ich bräuchte das shining der waffen
Beiträge von 'Asasel
-
-
Set the shops inside your shop and shop_item table, then call them using the func arg.
If you're skilled enough with lua, you can write a clean shop opening quest, like this.Java- quest shop begin
- state start begin
- function GetData()
- local data = {
- -- [NPC_VNUM] = {["vnum"] = The vnum of the shop, ["name"] = The name of the shop},
- [9002] = {
- [1] = {["vnum"] = YOUR_SHOP_VNUM_HERE, ["name"] = "Krieger-Sura Waffen"},
- [2] = {["vnum"] = YOUR_SHOP_VNUM_HERE, ["name"] = "Ninja Waffen"},
- [3] = {["vnum"] = YOUR_SHOP_VNUM_HERE, ["name"] = "Schamanen Waffen"},
- [4] = {["vnum"] = YOUR_SHOP_VNUM_HERE, ["name"] = "Lykaner Waffen"}
- -- You can insert more shops for this npc here
- },
- -- You can insert more npcs here
- };
- return data;
- end -- function
- when 9002.click --[[or ANOTHER_NPC_VNUM.click]] begin
- -- You can add as many as you want, the code is recursive and bound to the GetData() function
- local shop_data = shop.GetData()[npc.get_race()];
- say_title(string.format("%s:[ENTER]", mob_name(npc.get_race())))
- say_reward("Was willst du tun?[ENTER]")
- local selection_table = {};
- for index, shop in ipairs(shop_data) do
- table.insert(selection_table, shop["name"]);
- end -- for
- table.insert(selection_table, "Abbruch");
- local selection = select_table(selection_table);
- if (selection < table.getn(selection_table)) then
- npc.open_shop(shop_data[selection]["vnum"]);
- end -- if
- end -- when
- end -- state
- end -- quest
why should someone write a quest with 500 lines when you can write it with same function in 30 lines 100% without bugs ? xD
-
machs einfach gescheit übern Source per DelayedDisconnect
darüber hab ich garnicht nachgedacht. Das sollte sogar leichter werden als den kack richtig in der quest zu verbauen xD
-
Hier:
Bitte melden Sie sich an, um diesen Link zu sehen.
Bitteschön.
PS: Ist nicht von mir.Habe es genauso eingebaut, jedoch passiert nichts wenn es getriggert wird^^
Server sysrr:
SYSERR: Mar 5 18:45:27 :: operator(): QUEST NOT END RUNNING on Login/Logout - test_logout
SYSERR: Mar 5 18:45:29 :: Select: wrong QUEST_SELECT request! : 17Edit: wenn ich den close befehl direkt unter das erste "end" klatsche klappt es, aber dann kann ich kein Text mehr anzeigen lassen vorher, jemand da ne idee wie ich trotzdem noch ein text anzeigen lassen kann und erst nach klicken des buttons soll es schließen?
-
cmdchat("exit") in der Quest
Und in der game.py den command handeln und app.Exit() callen.
Leider habe ich kaum bis garkeine Erfahrung in Python, hast du die genauen teile dafür?
-
Kann man via Quest den clienten beenden lassen oder den Char ausloggen OHNE das man es abbrechen kann?
-
welche files nutz du denn? also bisher hat das von allen files geklappt Òo
Neros letzte releaste version seines Sources. Sehe gerade das Sanii in seinem Thread weit hinten die Funktion für Waffenkostüme editiert hat, aber nicht im Startpost hinzugefügt hat. Das erklärt warum es bei mir beim Einbau nicht mit drinne war weil es nur auf der vorletzten seite zu finden war. Ändert leider nichts dran das es für mich nicht funktioniert da ich kein value3 Waffenkostümsystem habe sondern eins das nur auf type und subtype basiert, welches bei Neros letztem Source so verbaut war
Meins funktioniert so:
subtype 28, type 9 = kostüm schwert value3 0
subtype 28, type 12 = kostüm 2hand value3 0
subtype 28, type 10 = kostüm dolche value3 0 (immer 0 bei allen)Habe das system versucht umzuschreiben, ergebnis: Schwerter, 2 hand, glocke und fächer funktioniert, dolche haben nur auf 1 hand die waffe, auf pferd auch, fächer auf pferd auch nur 1 in der hand statt 2, bogen sitzt komplett in der falschen hand. Hab an den Abfragen rumgespielt (WEAPON_BOW usw) und an den IsMounting kack, jedoch ändert sich nirgendwo die position der "Kostüme".
-
also keine ahnung
bei mir gehts aber genauso wie Shinici
Bitte melden Sie sich an, um diesen Link zu sehen.
weil du wohl seine Änderungen drinne hast die er oben gepostet hat (die nicht aus dem offiziellen Thread stammen) und dein Waffenkostümsystem mit value3 arbeitet, was in seinen Files die ich nutze nicht der fall ist
-
C
- bool CInstanceBase::SetWeapon(DWORD eWeapon)
- {
- if (IsPoly())
- {
- return false;
- }
- if (__IsShapeAnimalWear())
- {
- return false;
- }
- if (__IsChangableWeapon(eWeapon) == false)
- {
- eWeapon = 0;
- }
- m_GraphicThingInstance.AttachWeapon(eWeapon);
- m_awPart[CRaceData::PART_WEAPON] = eWeapon;
- CItemData* pItemData;
- if (CItemManager::Instance().GetItemDataPointer(eWeapon, &pItemData))
- {
- #ifdef __COSTUME_WEAPON__
- if (pItemData->GetType() == CItemData::ITEM_TYPE_COSTUME)
- __ClearWeaponRefineEffect();
- #endif
- __GetRefinedEffect(pItemData);
- #ifdef ENABLE_SHINING_SYSTEM
- __GetShiningEffect(pItemData);
- #endif
- }
- else
- {
- {
- __ClearWeaponRefineEffect();
- #ifdef ENABLE_SHINING_SYSTEM
- __ClearWeaponShiningEffect();
- #endif
- }
- }
- return true;
- }
- void CInstanceBase::ChangeWeapon(DWORD eWeapon)
- {
- if (eWeapon == m_GraphicThingInstance.GetPartItemID(CRaceData::PART_WEAPON))
- return;
- if (SetWeapon(eWeapon))
- RefreshState(CRaceMotionData::NAME_WAIT, true);
- }
und noch hier:
Code- void CInstanceBase::__GetShiningEffect(CItemData* pItem)
- {
- //Set this to true if you want to hide the refine effect if there's a shining for this item.
- bool removeRefineEffect = true;
- //Check correctly for ItemSubTypes. Costumes Weapon-SubType is in Value3 (Official Costumes)
- bool isWeapon = pItem->GetType() == CItemData::ITEM_TYPE_WEAPON;
- #ifdef __COSTUME_WEAPON__
- bool isCostumeWeapon = pItem->GetType() == CItemData::ITEM_TYPE_COSTUME && pItem->GetSubType() == CItemData::COSTUME_WEAPON;
- #endif
- bool isArmor = pItem->GetType() == CItemData::ITEM_TYPE_ARMOR && pItem->GetSubType() == CItemData::ARMOR_BODY;
- bool isCostumeArmor = CItemData::ITEM_TYPE_COSTUME && pItem->GetSubType() == CItemData::COSTUME_BODY;
- #ifdef __COSTUME_WEAPON__
- BYTE subType = isCostumeWeapon ? pItem->GetValue(3) : pItem->GetSubType();
- #else
- BYTE subType = pItem->GetSubType();
- #endif
- CItemData::TItemShiningTable shiningTable = pItem->GetItemShiningTable();
- #ifdef __COSTUME_WEAPON__
- if (isWeapon || isCostumeWeapon)
- #else
- if (isWeapon)
- #endif
- {
- __ClearWeaponShiningEffect();
- if (shiningTable.Any() && removeRefineEffect)
- {
- __ClearWeaponRefineEffect();
- }
- for (int i = 0; i < CItemData::ITEM_SHINING_MAX_COUNT; i++)
- {
- if (strcmp(shiningTable.szShinings[i], ""))
- {
- //Bow is left handed only.
- if (subType == CItemData::WEAPON_BOW)
- {
- __AttachWeaponShiningEffect(i, shiningTable.szShinings[i], "PART_WEAPON_LEFT");
- }
- else
- {
- //Check for double sided weapons or fan which is attached on both sides when mounted.
- #ifdef ENABLE_WOLFMAN
- bool twoSidedWeapon = subType == CItemData::WEAPON_DAGGER || (IsMountingHorse() && subType == CItemData::WEAPON_FAN) || subType == CItemData::WEAPON_CLAW;
- #else
- bool twoSidedWeapon = subType == CItemData::WEAPON_DAGGER || (IsMountingHorse() && subType == CItemData::WEAPON_FAN);
- #endif
- if (twoSidedWeapon)
- {
- __AttachWeaponShiningEffect(i, shiningTable.szShinings[i], "PART_WEAPON_LEFT");
- }
- __AttachWeaponShiningEffect(i, shiningTable.szShinings[i], "PART_WEAPON");
- }
- }
- }
- }
- if (isArmor || isCostumeArmor)
- {
- __ClearArmorShiningEffect();
- if (shiningTable.Any() && removeRefineEffect)
- {
- __ClearArmorRefineEffect();
- }
- for (int i = 0; i < CItemData::ITEM_SHINING_MAX_COUNT; i++)
- {
- if (strcmp(shiningTable.szShinings[i], ""))
- {
- __AttachArmorShiningEffect(i, shiningTable.szShinings[i]);
- }
- }
- }
- }
- //Attaching the shining effect.
- //BoneName can be "PART_WEAPON" or "PART_WEAPON_LEFT" to get the attaching bone name dynamically.
- //If boneName is not given "Bip01" is used as boneName.
- void CInstanceBase::__AttachWeaponShiningEffect(int effectIndex, const char* effectFileName, const char* boneName)
- {
- if (IsAffect(AFFECT_INVISIBILITY))
- {
- return;
- }
- if (effectIndex >= CItemData::ITEM_SHINING_MAX_COUNT)
- {
- return;
- }
- CEffectManager::Instance().RegisterEffect(effectFileName, false, false);
- if (!strcmp(boneName, "PART_WEAPON"))
- {
- const char* c_szRightBoneName;
- m_GraphicThingInstance.GetAttachingBoneName(CRaceData::PART_WEAPON, &c_szRightBoneName);
- if (strcmp(c_szRightBoneName, ""))
- {
- m_weaponShiningEffects[0][effectIndex] = m_GraphicThingInstance.AttachEffectByName(0, c_szRightBoneName, effectFileName);
- }
- }
- else if (!strcmp(boneName, "PART_WEAPON_LEFT"))
- {
- const char* c_szLeftBoneName;
- m_GraphicThingInstance.GetAttachingBoneName(CRaceData::PART_WEAPON_LEFT, &c_szLeftBoneName);
- if (strcmp(c_szLeftBoneName, ""))
- {
- m_weaponShiningEffects[1][effectIndex] = m_GraphicThingInstance.AttachEffectByName(0, c_szLeftBoneName, effectFileName);
- }
- }
- else
- {
- Tracef("Invalid partname for getting attaching bone name. %s - %s", effectFileName, boneName);
- }
- }
- //Attaching the armor shining effect.
- //If boneName is not given "Bip01" is used as boneName.
- void CInstanceBase::__AttachArmorShiningEffect(int effectIndex, const char* effectFileName, const char* boneName)
- {
- if (IsAffect(AFFECT_INVISIBILITY))
- {
- return;
- }
- if (effectIndex >= CItemData::ITEM_SHINING_MAX_COUNT)
- {
- return;
- }
- if (!strcmp(boneName, ""))
- {
- Tracef("Empty bone name for attaching armor shining. Effect Index: %i, EffectFileName: %s", effectIndex, effectFileName);
- return;
- }
- CEffectManager::Instance().RegisterEffect(effectFileName, false, false);
- m_armorShiningEffects[effectIndex] = m_GraphicThingInstance.AttachEffectByName(0, boneName, effectFileName);
- }
- //Clears all weapon shining effects. Left & Right if set.
- void CInstanceBase::__ClearWeaponShiningEffect(bool detaching)
- {
- if (detaching)
- {
- for (int i = 0; i < CItemData::ITEM_SHINING_MAX_COUNT; i++)
- {
- if (m_weaponShiningEffects[0][i])
- {
- __DetachEffect(m_weaponShiningEffects[0][i]);
- }
- if (m_weaponShiningEffects[1][i])
- {
- __DetachEffect(m_weaponShiningEffects[1][i]);
- }
- }
- }
- memset(&m_weaponShiningEffects, 0, sizeof(m_weaponShiningEffects));
- }
- //Clears all armor shining effects.
- void CInstanceBase::__ClearArmorShiningEffect(bool detaching)
- {
- if (detaching)
- {
- for (int i = 0; i < CItemData::ITEM_SHINING_MAX_COUNT; i++)
- {
- if (m_armorShiningEffects[i])
- {
- __DetachEffect(m_armorShiningEffects[i]);
- }
- }
- }
- memset(&m_armorShiningEffects, 0, sizeof(m_armorShiningEffects));
- }
- #endif
Ist für ein Waffenkostüm, was mit value3 arbeitet oder was das war.
Welches Waffenkostüm verwendest du? Ich nutze das, was in deinen Files schon verbaut war, das arbeitet nicht mit "value3". Auch gibts bei mir den itemdata teil "COSTUME_WEAPON" Nicht
Bitte melden Sie sich an, um dieses Bild zu sehen.
-
Bitte melden Sie sich an, um diesen Link zu sehen.
Magst du sagen wie du es angepasst hast? Im Offiziellen Thread heißt es auch, das es NICHT für Kostüme ausgelegt ist, weder für Waffen noch für Rüstungen. Ich habs mir noch mal angeguckt und es kann standardmäßig garnicht funktionieren weil die codestellen fehlen für den Waffen effekt bei typ "costume". Du musst folglich irgendwas hinzugefügt haben, wäre klasse wenn du das posten könntest^^
Ich hatte es damals so probiert:
Bitte melden Sie sich an, um dieses Bild zu sehen.
(auch mit anderen ausführungen wie "m_swordRefineEffectRight" usw usw, nichts hatte damals funktioniert.
-
Bei mir gehts...
Glaube ich nicht, habe mehrere Leute gefragt die das System eingebaut haben, bei keinem geht es über die Shiningtable, auch im offiziellen Thread wurde das gefragt, da hieß es auch das es NICHT geht da es dafür nicht ausgelegt ist.
-
^
Hat jemand ne idee? Hab das shining ohne python von sanii drinne. Über shiningtable geht es nicht, muss also direkt über den clientsource gemacht werden. Wie man normalen Rüstungskostümen ein shining gibt im src weis ich aber bei waffen ist es dann doch deutlich anders. Weis jemand wie?
-
Liegt bei mir von in der Version 30er/75er/90er/105er jede Rasse rum.
Interesse?Ja hau mal die 105er raus, die anderen sind ja schon hier public. Die 105er gibts wahrscheinlich in irgendwelchen ausländischen foren aber ka wonach man da suchen soll xD
-
Suche mesh Waffen die auf originalen DE waffen basieren. 30er,75er und 80er waffen habe ich schon. Habe mal irgendwo die 105er Waffen von DE als mesh gesehen, gibts die irgendwo?
-
mit gm chars getestet oder mit normalen ?
den gms müssen immer erst auf feindlich stellen..Natürlich mit normalen Charakteren^^
-
Mir ist aufgefallen das man bei den Nero Files den PvP Modus erst auf Feindlich stellen muss, um an leuten aus dem eigenen Reich Damage machen zu können. Weis jemand wie man das umstellt ?
-
No, I dont have this bug, everything works. Dont use "RefreshAffect()".
how?
-
After u use this, the "heal" skill from healing shaman gives u unlimited hp, castspeed and damage. Test it. cast heal again and again, u get more and more hp, cast speed and damage until u relog.
-
Ein vernünftiges System schreiben/nutzen, welches die Punkte Updated wenn sie geladen, genutzt oder aufgeladen werden...
Bitte melden Sie sich an, um diesen Link zu sehen. meine Hilfe steht nach wie vor, wenn du dich melden würdest oder antworten.So ein System zu schreiben schaffen die wenigsten. Also eins, welches komplett übe MySQL & C++ funktioniert (wie Yang), deshalb gibts auch seit Jahren keins public. Wäre also schon geil wenn du so ein System schreiben könntest, welches komplett ohne Timer funktioniert
-
Meld dich in Skype bei mir heute Abend.
Ich schleif dir die Werte fix durch...
#Btw:
Wusste gar nicht dass so ein Bullshit aufm Markt ist ... nen Looptimer der ne Query zum aktualisieren nutzt. Aua aua.
Weist du wie man das ohne son verkackten loop timer realisieren kann? Wenn ja, release das mal