|
You last visited: Today at 14:28
Advertisement
[Source] Items in bestimmte Maps durch einer .inc Datei verbieten
Discussion on [Source] Items in bestimmte Maps durch einer .inc Datei verbieten within the Flyff PServer Guides & Releases forum part of the Flyff Private Server category.
11/24/2012, 15:50
|
#1
|
elite*gold: 0
Join Date: Dec 2008
Posts: 252
Received Thanks: 188
|
[Source] Items in bestimmte Maps durch einer .inc Datei verbieten
Hi,
Mich hat jemand gefragt ob ich eine Änderung in der Source machen kann, damit man Items durch eine Datei auf bestimmte Maps verbieten kann.
Skill Version: 
Ich finde es besser direkt in der Source zu verbieten, weil es Sourcen schonender ist aber wer es gerne so möchte bitte sehr:
_Common\Project.cpp
Unter:
Code:
for( i = 0; i < m_colorText.GetSize(); i++ )
{
tagColorText* lpText = m_colorText.GetAt(i);
if( lpText && lpText->lpszData )
free( lpText->lpszData );
}
Das hier:
Code:
#ifdef __WORLDSERVER
#ifdef __ITEMALLOWINDATA
for( i = 0; i < m_ItemAllow_v.GetSize(); i++ )
{
ItemAllow_v* _ItemAllow_v = m_ItemAllow_v.GetAt(i);
if( _ItemAllow_v )
SAFE_DELETE(_ItemAllow_v);
}
#endif //__ITEMALLOWINDATA
#endif //__WORLDSERVER
Unter:
Code:
#ifdef __WORLDSERVER
#ifdef __COLOSSEUM
CColosseumMng::GetInstance()->LoadScript();
#endif // __COLOSSEUM
#endif
Das hier:
Code:
#ifdef __WORLDSERVER
#ifdef __ITEMALLOWINDATA
LoadItemAllow("ItemAllow.inc");
#endif //__ITEMALLOWINDATA
#endif //__WORLDSERVER
Über:
Code:
void CProject::InterpretRandomItem(LPRANDOM_ITEM pRandomItem,CScript& script)
{
script.GetToken(); // {
script.GetToken();
while(*script.token != '}')
{
if(script.Token == ";")
{
script.GetToken();
continue;
}
script.GetToken();
}
}
Das hier:
Code:
#ifdef __WORLDSERVER
#ifdef __ITEMALLOWINDATA
BOOL CProject::LoadItemAllow( LPCTSTR szFileName )
{
CScript script;
if(script.Load(szFileName)==FALSE)
return FALSE;
DWORD dwItemID = script.GetNumber();
while( script.tok != FINISHED)
{
if(script.GetNumber() == 1) {
ItemAllow_v *_ItemAllow_v = new ItemAllow_v;
_ItemAllow_v->dwItemID = dwItemID;
script.GetToken(); // "{"
script.GetToken();
while( script.Token != "}") {
if(script.Token == "Maps") {
script.GetToken(); //(
DWORD dwWorldID = script.GetNumber();
while( *script.Token != ')') {
_ItemAllow_v->vWorldID.push_back(dwWorldID);
dwWorldID = script.GetNumber();
}
}else if(script.Token == "Continent") {
script.GetToken(); //(
DWORD dwContinent = script.GetNumber();
while( *script.Token != ')') {
_ItemAllow_v->vContinent.push_back(dwContinent);
dwContinent = script.GetNumber();
}
}else if(script.Token == "XYZ-Area") {
script.GetToken(); //(
script.GetToken();
while( script.Token != "coordinates") {
script.GetToken(); //(
ItemAllow_v_coordinates _ItemAllow_v_coordinates;
_ItemAllow_v_coordinates.fLocationX1 = script.GetFloat();
script.GetToken(); //,
_ItemAllow_v_coordinates.fLocationY1 = script.GetFloat();
script.GetToken(); //,
_ItemAllow_v_coordinates.fLocationX2 = script.GetFloat();
script.GetToken(); //,
_ItemAllow_v_coordinates.fLocationY2 = script.GetFloat();
script.GetToken(); //)
_ItemAllow_v->vCoordinates.push_back(_ItemAllow_v_coordinates);
script.GetToken();
}
}
script.GetToken();
}
m_ItemAllow_v.Add(_ItemAllow_v);
}
dwItemID = script.GetNumber();
}
m_ItemAllow_v.Optimize();
return TRUE;
}
#endif //__ITEMALLOWINDATA
#endif //__WORLDSERVER
_Common\Project.h
Unter:
Code:
CFixedArray< tagColorText > m_colorText;
Das hier:
Code:
#ifdef __WORLDSERVER
#ifdef __ITEMALLOWINDATA
CFixedArray< ItemAllow_v > m_ItemAllow_v;
#endif //__ITEMALLOWINDATA
#endif //__WORLDSERVER
Unter:
Code:
BOOL LoadPiercingAvail( LPCTSTR lpszFileName );
Das hier:
Code:
#ifdef __WORLDSERVER
#ifdef __ITEMALLOWINDATA
BOOL LoadItemAllow( LPCTSTR lpszFileName );
#endif // __ITEMALLOWINDATA
#endif //__WORLDSERVER
_Common\MoverSkill.cpp
Unter:
Code:
if( pWorld && pWorld->GetID() == WI_WORLD_GUILDWAR )
{
if( m_nGuildCombatState == 0 )
{
if( IsPlayer() )
((CUser*) this)->AddText( prj.GetText( TID_GAME_GUILDCOMBAT_STANDS_NOTUSEITEM ) ); //"¼öÁ¤ÇؾßÇÔ : °üÁß¼®¿¡¼*´Â ¾ÆÀÌÅÛÀ» »ç¿ëÇÒ¼ö ¾ø½À´Ï´Ù" );
return FALSE;
}
}
Das hier:
Code:
#ifdef __ITEMALLOWINDATA
for(int i = 0; i < prj.m_ItemAllow_v.GetSize(); i++) {
if((CUser*)this && prj.m_ItemAllow_v.GetAt(i)->dwItemID == pItemProp->dwID) {
for(int u = 0; u < prj.m_ItemAllow_v.GetAt(i)->vWorldID.size(); u++) {
if(pWorld && pWorld->m_dwWorldID == prj.m_ItemAllow_v.GetAt(i)->vWorldID[u]){
((CUser*)this)->AddText(prj.GetText( TID_ITEM_DISABLE ));
return FALSE;
}
}
for(int u = 0; u < prj.m_ItemAllow_v.GetAt(i)->vContinent.size(); u++) {
if(CContinent::GetInstance()->GetContinent( (CUser*)this ) == prj.m_ItemAllow_v.GetAt(i)->vContinent[u]){
((CUser*)this)->AddText(prj.GetText( TID_ITEM_DISABLE ));
return FALSE;
}
}
float coordinatesX = ((CUser*)this)->GetPos().x;
float coordinatesY = ((CUser*)this)->GetPos().y;
for(int u = 0; u < prj.m_ItemAllow_v.GetAt(i)->vCoordinates.size(); u++) {
if(prj.m_ItemAllow_v.GetAt(i)->vCoordinates[u].fLocationX1 >= coordinatesX <= prj.m_ItemAllow_v.GetAt(i)->vCoordinates[u].fLocationX2 ||
prj.m_ItemAllow_v.GetAt(i)->vCoordinates[u].fLocationY1 >= coordinatesY <= prj.m_ItemAllow_v.GetAt(i)->vCoordinates[u].fLocationY2){
((CUser*)this)->AddText(prj.GetText( TID_ITEM_DISABLE ));
return FALSE;
}
}
}
}
#endif // __ITEMALLOWINDATA
_Common\MoverSkill.ProjectCmn.h
Unter:
Code:
struct tagColorText
{
DWORD dwColor;
TCHAR * lpszData;
};
Das hier:
Code:
#ifdef __WORLDSERVER
#ifdef __ITEMALLOWINDATA
struct ItemAllow_v_coordinates
{
float fLocationX1;
float fLocationY1;
float fLocationX2;
float fLocationY2;
};
struct ItemAllow_v
{
DWORD dwItemID;
vector< DWORD > vWorldID;
vector< DWORD > vContinent;
vector< ItemAllow_v_coordinates > vCoordinates;
};
#endif // __ITEMALLOWINDATA
#endif // __WORLDSERVER
WorldServer/VersionCommon.h
Code:
#define __ITEMALLOWINDATA
defineText.h
Code:
#define TID_ITEM_DISABLE 4702
textClient.inc
Code:
TID_ITEM_DISABLE 0xffffffff
{
IDS_TEXTCLIENT_INC_003350 // Zahl Anpassen
}
textClient.txt.txt
Code:
IDS_TEXTCLIENT_INC_003350 Item wurde für diese Map bzw. für diese Kordinaten gesperrt
ItemAllow.inc //Selber erstellen im Resourcen Ordner
II_GEN_FOO_INS_LOLLIPOP 1
{
Maps
(
WI_WORLD_ARENA
WI_DUNGEON_VOLCANE
WI_WORLD_MADRIGAL
)
Continent
(
242
241
)
XYZ-Area(
coordinates( 1 , 1 , 1 , 1)
coordinates( 2 , 2 , 2 , 2)
coordinates( 4 , 5 , 4 , 5)
)
}
Dieser Aufbau kann so oft wiederholt werden wie ihr wollt. So gesehen könnt ihr es für jedes Item machen.
Wichtig: Je mehr Items ihr macht, desto mehr Ressourcen(RAM) wird gebraucht.
Legende:
Item
Aktiv: 1=Aktiv, 0=Deaktiviert
X1
Y1
X2
Y2
Ich habe es bereits für Skill gemacht. Es werde es später Releasen.
mfg. Vincitore
|
|
|
11/24/2012, 15:52
|
#2
|
elite*gold: 74
Join Date: Apr 2009
Posts: 5,908
Received Thanks: 2,386
|
Guter Realse  , wird bestimmt Hilfreich sein ^^..
|
|
|
11/24/2012, 16:39
|
#3
|
ベトナム警察
elite*gold: 0
Join Date: Jan 2012
Posts: 16,497
Received Thanks: 3,519
|
Super gemacht. 
Kann ich gut gebrauchen.
Das andere Tut hättest du auch in diesem Thread mit einbinden können. ^^
|
|
|
11/24/2012, 17:51
|
#4
|
elite*gold: 0
Join Date: Dec 2008
Posts: 252
Received Thanks: 188
|
Ich bin immer noch nicht sicher ob es nützlich ist, aber ich bin nur der programmiere und muss es nicht nutzen.
Hab gar nicht dran gedacht die beiden zusammen zu legen. Ist mir später erst aufgefallen und hab deswegen gegenseitig verlinkt.
|
|
|
11/24/2012, 21:00
|
#5
|
ベトナム警察
elite*gold: 0
Join Date: Jan 2012
Posts: 16,497
Received Thanks: 3,519
|
Verstehe das hier nicht..
Quote:
Continent
(
242
)
XYZ-Area(
coordinates( 1 , 1 , 1 , 1)
)
}
Dieser Aufbau kann so oft wiederholt werden wie ihr wollt. So gesehen könnt ihr es für jedes Item machen.
Wichtig: Je mehr Items ihr macht, desto mehr Ressourcen(RAM) wird gebraucht.
Legende:
Item
Aktiv: 1=Aktiv, 0=Deaktiviert
X1
Y1
X2
Y2
|
|
|
|
11/24/2012, 21:12
|
#6
|
elite*gold: 0
Join Date: Mar 2008
Posts: 665
Received Thanks: 230
|
Good but instead having two files that do the basically same, you can do both (skill and map) in one and add options to each function to be able to read all you need.
|
|
|
11/24/2012, 21:27
|
#7
|
elite*gold: 380
Join Date: Oct 2008
Posts: 2,262
Received Thanks: 382
|
sehr nette sache,
werd es evtl nutzen^^
hast n thx verdient
|
|
|
11/25/2012, 18:11
|
#8
|
elite*gold: 18
Join Date: Sep 2009
Posts: 20,174
Received Thanks: 14,475
|
Ist ja das selbe wie skills nur für items. Ein Thread haette gereicht.
Dennoch gut gemacht wobei ich das mit der Token Abfrage für ";" unnötig finde.
|
|
|
12/14/2012, 17:13
|
#9
|
elite*gold: 6
Join Date: Oct 2011
Posts: 506
Received Thanks: 84
|
kan mich irren aber braucht man hiervor:
Moverskill.cpp
Code:
for(int i = 0; i < prj.m_ItemAllow_v.GetSize(); i++) {
if((CUser*)this && prj.m_ItemAllow_v.GetAt(i)->dwItemID == pItemProp->dwID) {
nicht noch das:
Code:
ItemProp* pItemProp = NULL;
|
|
|
02/09/2014, 12:48
|
#10
|
elite*gold: 215
Join Date: Jan 2012
Posts: 1,229
Received Thanks: 214
|
Weiß jemand wie ich diese warnings weg bekomme? warning C4018: '<' : signed/unsigned mismatch und warning C4804: '<=' : unsafe use of type 'bool' in operation
Das Warning in warning C4018: '<' : signed/unsigned mismatch
Code:
for(int u = 0; u < prj.m_ItemAllow_v.GetAt(i)->vWorldID.size(); u++) {
for(int u = 0; u < prj.m_ItemAllow_v.GetAt(i)->vContinent.size(); u++) {
for(int u = 0; u < prj.m_ItemAllow_v.GetAt(i)->vCoordinates.size(); u++) {
Und das warning C4804: '<=' : unsafe use of type 'bool' in operation in
Code:
if(prj.m_ItemAllow_v.GetAt(i)->vCoordinates[u].fLocationX1 >= coordinatesX <= prj.m_ItemAllow_v.GetAt(i)->vCoordinates[u].fLocationX2 ||
prj.m_ItemAllow_v.GetAt(i)->vCoordinates[u].fLocationY1 >= coordinatesY <= prj.m_ItemAllow_v.GetAt(i)->vCoordinates[u].fLocationY2){
|
|
|
02/09/2014, 13:39
|
#11
|
elite*gold: 0
Join Date: Mar 2008
Posts: 598
Received Thanks: 465
|
Den ersten error solltest du eigentlich selber lösen können...
Die ganzen .size() -Funktionen liefern einen unsigned integer Typ zurück während deine Zählvariable ein signed integer ist.
Code:
prj.m_ItemAllow_v.GetAt(i)->vCoordinates[u].fLocationX1 >= coordinatesX <= prj.m_ItemAllow_v.GetAt(i)->vCoordinates[u].fLocationX2
Mach daraus 2 Abfragen
Code:
(prj.m_ItemAllow_v.GetAt(i)->vCoordinates[u].fLocationX1 >= coordinatesX
&& coordinatesX<= prj.m_ItemAllow_v.GetAt(i)->vCoordinates[u].fLocationX2)
Du kannst 2 Vergleiche nicht ohne ein && kombinieren ohne Bugs zu riskieren.
|
|
|
 |
Similar Threads
|
Aus einer .html Datei bestimmte Werte auslesen.
09/22/2012 - AutoIt - 1 Replies
Hallo,
kann mit jemand kurz helfen, ich bekomme es einfach nicht gebacken :(
Der Bot soll aus einer .html Datei wie dieses rot markierte Wert "fbid=387511387985027&" untereinander im Edit-Box anzeigen.(Also..alle 15 Werte vor fbid=)
|
[Howto] Bestimmte GM Codes verbieten (Clientseite)
03/15/2012 - Metin2 PServer Guides & Strategies - 19 Replies
Hallo,
es gab zwar schon viele Diskussionen wie man bestimmte GM Codes verbieten kann. Diese haben aber meist mehr oder weniger gut funktioniert.
Diesmal also die Ultimative Lösung GM Codes ein für alle mal abzuschalten, egal welche Rechte der GM hat:
ihr entpackt zuerst die root Dateien (sollte bekannt sein).
Dann öffnet ihr die uichat.py und sucht nach:
def __SendChatPacket(self, text, type):
|
[Bukkit]Plugin Gesucht(Nur bestimmte Gruppen dürfen bestimmte Items craften/benutzen)
03/08/2012 - Minecraft - 6 Replies
Ich suche ein Plugin wo mit man verschiedene Gruppen verschiedene Items benutzen lassen kann. Wie man Gruppen erstellt weis ich (Permission). Z.B
- niemand darf tnt craften/benutzen außer die admin und vips
- oder nur Bogenschützen dürfen borgen und pfeile craften/benutzen
usw.
Danke im vorraus
|
Bestimmte GM Codes verbieten
07/06/2011 - Metin2 PServer Guides & Strategies - 8 Replies
Guten Abend :)
Hab mal die DB nachgeforscht und jenes gefunden: Wie man GM Codes Befehle verbieten.
Navicat-->DB---> "banword" suchen. Einfach die Codes einfügen die nicht gestattet sind.
z.B
/shutdown
/dc
|
All times are GMT +1. The time now is 14:28.
|
|