Bitte melden Sie sich an, um diesen Link zu sehen.
Ratatatatatata
Beiträge von LightCore
-
-
Da einige danach fragen :
Code- Client Src:
- Locale_inc.h/Defines.h
- #define ENABLE_MOVESPEED
- Packet.h:
- packet_add_char so ändern
- typedef struct packet_add_char
- {
- uint8_t header;
- uint32_t dwVID;
- float angle;
- long x;
- long y;
- long z;
- uint8_t bType;
- uint16_t wRaceNum;
- #ifdef ENABLE_MOVESPEED
- WORD bMovingSpeed;
- #else
- BYTE bMovingSpeed;
- #endif
- uint8_t bAttackSpeed;
- uint8_t bStateFlag;
- uint32_t dwAffectFlag[2]; // ??
- } TPacketGCCharacterAdd;
- packet_add_char2 so abändern
- typedef struct packet_add_char2
- {
- uint8_t header;
- uint32_t dwVID;
- char name[CHARACTER_NAME_MAX_LEN + 1];
- float angle;
- long x;
- long y;
- long z;
- uint8_t bType;
- uint16_t wRaceNum;
- uint16_t awPart[CHR_EQUIPPART_NUM];
- #ifdef ENABLE_MOVESPEED
- WORD bMovingSpeed;
- #else
- BYTE bMovingSpeed;
- #endif
- uint8_t bAttackSpeed;
- uint8_t bStateFlag;
- uint32_t dwAffectFlag[2]; // ??
- uint8_t bEmpire;
- uint32_t dwGuild;
- int16_t sAlignment;
- uint8_t bPKMode;
- uint32_t dwMountVnum;
- } TPacketGCCharacterAdd2;
- packet_update_char so ändern
- typedef struct packet_update_char
- {
- uint8_t header;
- uint32_t dwVID;
- uint16_t awPart[CHR_EQUIPPART_NUM];
- #ifdef ENABLE_MOVESPEED
- WORD bMovingSpeed;
- #else
- BYTE bMovingSpeed;
- #endif
- uint8_t bAttackSpeed;
- uint8_t bStateFlag;
- uint32_t dwAffectFlag[2];
- uint32_t dwGuildID;
- int16_t sAlignment;
- uint8_t bPKMode;
- uint32_t dwMountVnum;
- } TPacketGCCharacterUpdate;
- packet_update_char2 so ändern
- typedef struct packet_update_char2
- {
- uint8_t header;
- uint32_t dwVID;
- uint16_t awPart[CHR_EQUIPPART_NUM];
- #ifdef ENABLE_MOVESPEED
- WORD bMovingSpeed;
- #else
- BYTE bMovingSpeed;
- #endif
- uint8_t bAttackSpeed;
- uint8_t bStateFlag;
- uint32_t dwAffectFlag[2];
- uint32_t dwGuildID;
- int16_t sAlignment;
- uint8_t bPKMode;
- uint32_t dwMountVnum;
- } TPacketGCCharacterUpdate2
- Server Src:
- service.h /CommonDefines.h
- #define ENABLE_MOVESPEED
- #ifdef ENABLE_MOVESPEED
- #define MOVESPEED 400 // ändern falls man mehr haben will
- #define MOVESPEED_CAP 600// ändern falls man mehr haben will
- #endif
- Char.cpp
- Suche :
- int CHARACTER::GetPoint
- Änder
- #ifdef ENABLE_MOVESPEED
- int CHARACTER::GetPoint(WORD type) const
- #else
- int CHARACTER::GetPoint(BYTE type) const
- #endif
- suche int CHARACTER::GetLimitPoint:
- Änder
- #ifdef ENABLE_MOVESPEED
- int CHARACTER::GetLimitPoint(WORD type) const
- #else
- int CHARACTER::GetLimitPoint(BYTE type) const
- #endif
- Suche :
- int void CHARACTER::SetPoint
- Änder
- #ifdef ENABLE_MOVESPEED
- void CHARACTER::SetPoint(WORD type, int val)
- #else
- void CHARACTER::SetPoint(BYTE type, int val)
- #endif
- Suche in
- void CHARACTER::ComputePoints()
- SetPoint(POINT_MOV_SPEED, 200);
- SetPoint(POINT_ATT_SPEED, 100);
- PointChange(POINT_ATT_SPEED, GetPoint(POINT_PARTY_HASTE_BONUS));
- SetPoint(POINT_CASTING_SPEED, 100);
- änder in
- SetPoint(POINT_MOV_SPEED, MOVESPEED);
- SetPoint(POINT_ATT_SPEED, 100);
- PointChange(POINT_ATT_SPEED, GetPoint(POINT_PARTY_HASTE_BONUS));
- SetPoint(POINT_CASTING_SPEED, 100);
- suche in int CHARACTER::GetLimitPoint(WORD type) const
- case POINT_MOV_SPEED:
- ändere
- if (IsPC())
- limit = MOVESPEED_CAP;
- else
- limit = 350;
- break;
- char.h
- Ändere so
- #ifdef ENABLE_MOVESPEED
- void SetPoint(WORD idx, int val);
- int GetPoint(WORD idx) const;
- int GetLimitPoint(WORD idx) const;
- #else
- void SetPoint(BYTE idx, int val);
- int GetPoint(BYTE idx) const;
- int GetLimitPoint(BYTE idx) const;
- #endif
- packet.h
- typedef struct packet_add_char
- {
- BYTE header;
- DWORD dwVID;
- float angle;
- long x;
- long y;
- long z;
- BYTE bType;
- WORD wRaceNum;
- #ifdef ENABLE_MOVESPEED
- WORD bMovingSpeed;
- #else
- BYTE bMovingSpeed;
- #endif
- BYTE bAttackSpeed;
- BYTE bStateFlag;
- DWORD dwAffectFlag[2]; // 효과
- } TPacketGCCharacterAdd;
- typedef struct packet_update_char
- {
- BYTE header;
- DWORD dwVID;
- WORD awPart[CHR_EQUIPPART_NUM];
- #ifdef ENABLE_MOVESPEED
- WORD bMovingSpeed;
- #else
- BYTE bMovingSpeed;
- #endif
- BYTE bAttackSpeed;
- BYTE bStateFlag;
- DWORD dwAffectFlag[2];
- DWORD dwGuildID;
- short sAlignment;
- BYTE bPKMode;
- DWORD dwMountVnum;
- //WORD wRaceNum;
- } TPacketGCCharacterUpdate;
Kein besonderes Schönes tut
-
Welcome back flightm0de Du musst auch Client src ändern schreib mir wenn du das nicht hin kriegst mache dir das gratis
-
-
-
also
Nives bei mir funkt das vllt was falsch eingebaut ? -
install htop , better view about this infos
-
Ich arbeite derzeit an ein paar Economy Anpassungen für den M2 Markt, also Shops und die in den Shops enthaltenen Items.
Da sind mehrere Sachen geplant, in Arbeit oder fertig. Die jeweiligen "Systeme" update ich dann hier wenn irgendwas noch mal überarbeitet wurde oder neu dazu kommt.
Grundkonzept:
Alle Items (in den NPC Shops) haben einen Kaufpreis und Verkaufspreis. Das Thema sollte jeder kennen, beispielsweise um auf neuen Servern zu testen ob es irgendwo einen Yang Bug gibt.
Zusätzlich zu den jeweiligen Preisen habe ich jetzt ein ganz simples "Nachfrage-Prinzip" hinzugefügt, welches die Einkaufs- sowie Verkaufspreise anpasst.
Bitte melden Sie sich an, um diesen Anhang zu sehen.
Wie funktioniert der ganze Kram?
Bitte melden Sie sich an, um diesen Link zu sehen.
Wird ein Item aus dem Shop gekauft steigt die Nachfrage im Einkauf, was dann dafür sorgt dass der Einkaufspreis nach unten korrigiert wird. Gleichzeitig sinkt die Nachfrage im Verkauf, was dafür sorgt dass der Verkaufspreis nach oben korrigiert wird.
Wird ein Item verkauft dreht sich die Logik einmal um, der Einkaufspreis steigt und der Verkaufspreis sinkt.
Bitte melden Sie sich an, um diesen Anhang zu sehen.
Das Prinzip ist nicht nur auf die Items aus dem Shop begrenzt. Wenn bei einem Shop ein Gegenstand verkauft wird der nicht zu dem Sortiment gehört, dann wird der Gegenstand an den entsprechenden Shop "angeheftet" und der Preis, für den die Spieler das Item bei dem NPC Shop verkaufen können, mit jedem Verkauf angepasst.
Bitte melden Sie sich an, um diesen Anhang zu sehen.
Bitte melden Sie sich an, um diesen Anhang zu sehen.
Sonst noch was?
Joa, Preis- sowie Nachfrageänderungen werden live an alle Spieler synchronisiert während sie im Shop sind.
Steuerung vom Nachfrage Impact
Über die Config vom jeweiligen Core können die Impacts auf die Einkaufs- bzw. Verkaufspreise gesteuert werden. Zusätzlich dazu ab wann die Anpassungen an den Preisen (positiv als auch negativ) unterbunden werden sollen.
Config Token Datentyp Default Wirkung MAX_DEMAND_PURCH_CHANGE float 1,50 Pro Einkauf beim Shop wird zwischen 0,00 und dem angegeben Wert die Nachfrage verändert. MAX_DEMAND_SALES_CHANGE float 3,00 Pro Verkauf beim Shop wird zwischen 0,00 und dem angegeben Wert die Nachfrage verändert. PURCHASE_FLOOR_PCT float 10,00 Um wie viel % kann der standard Einkaufspreis ("price" aus item_proto) angepasst werden. SALES_ROOF_PCT float 20,00 Um wie viel % kann der standard Verkaufspreis ("shopBuyPrice" aus item_proto) angepasst werden. SALES_ROOF_ABSOLUTE long 1 Was ist der absolute Mindestverkaufspreis? Code
[[Versteckter Inhalt]]Grundkonzept
Der fahrende Händler von den 2. Reichsmaps ist eher lame, daher habe ich mir folgendes überlegt.
Einem NPC wird ein Shop zugeordnet, welcher "zufällige" Items beinhaltet. Die Idee ist, dass die Items des Shops aus einem verfügbaren Pool gezogen werden. Der Pool könnte wie Truheninhalte oder Mob Drops definiert werden, das ist erstmal mein Plan.
Die Items in dem Shop können nicht wahllos von jedem Spieler in jeder Menge gekauft werden, sie bekommen einen gewissen Lagerbestand. Mit jedem Kauf von dem Shop verringert sich die Menge.
Der Shop existiert auch nicht über die gesamte Lebensdauer des game Prozesses. Nach einer Zeitspanne X, z.B. 30 Minuten, oder wenn der Shop leer gekauft ist verschwindet der NPC mit seinem Shop wieder und spawnt dann irgendwann mit anderen Items an einer anderen Position oder auch Map wieder.Zusätzlich habe ich vor es zu ermöglichen dem Shop-NPC eine Route zum Laufen auf den Maps zu geben. Über eine Liste von Koordinaten kann dann der Laufweg bestimmt werden.
Wenn ihr hier noch Vorschläge habt gerne her damit, das Projekt existiert erstmal nur in meinem Kopf und hier als Beschreibung.
Sollte es hier noch Anregungen oder Vorschläge geben immer her damit.
Bilder bzw. deine attachments funkt. nicht
-
Bitte melden Sie sich an, um diesen Link zu sehen.
-
1.
Bitte melden Sie sich an, um diesen Link zu sehen. -
-
evtl kannst du damit was anfangen
Bitte melden Sie sich an, um diesen Link zu sehen. -
-
Am besten fliege fragen
-
Bitte melden Sie sich an, um diesen Link zu sehen.
Bitte
-
entweder per quest nach der erstellung oder per server source
wenn dir hier keiner weiterhilft pn mich einfach oder am besten Syntax
-
moin, jemand hatte mich in discord nach sowas gefragt und berichtet, das er sich dies gerade für 35€ coden lässt. Fand ich doch etwas happig für 10-15 zeilen code aber hier wäre meine version des gewünschten features.
Ermöglicht auf Cores über den config eintrag "DISABLE_PVP: 1" den pk mode und reich damage zu deaktivieren, so das spieler sich nicht töten können auf den maps dieser core. Ist nothing special und wahrscheinlich ausbaufähig.
[[Versteckter Inhalt]]hab vielleicht nicht alles bedacht, habs grob getestet und funktionierte. As i said, nothing special. Am längsten daran dauertes es, die richtigen Funktionen zu finden wo man ansetzen muss.
Perfekt wurde ich schon öfters gefragt!
-
Snus Kann dir safe helfen HJAHAHA
-
Evlt mehr infos
Welches shining system hast du ?
hast du nochmal alles überpüft?
Evtl eine Update funkt. vergessen ?an sonsten wende dich an
-
Lumiis Lohnt sich 100%