-
Posts
24 -
Joined
-
Last visited
-
Days Won
1 -
Feedback
0%
Content Type
Forums
Store
Third Party - Providers Directory
Feature Plan
Release Notes
Docs
Events
Posts posted by ShuzZzle
-
-
technically you can "fix" the function but i wouldn't recommend as well.
Snippet(In item_manager.cpp):
if (item->GetCount() > 1) { item->SetCount(item->GetCount() - 1); }
-
I honestly do not know what I'm Zetsu in your team, or how you do not really understand or Metin2? times such luck.
WHaaaaaaaaat?
Nice Presentation Keep up the good work
- 1
-
Why do you think that's Pseudocode?
This code is found in Extern/YmirBase/AntiAccess.h!
I wasn't talking about this HeaderFile. I meant the creation of the first fileextractor where no source existed^^
-
These "evil"-process checks are prone to false positives (or different definitions of "evil") and too easily bypassed. Also I consider killing other processes bad practice (even if they're "evil"). Not even XTrap / HackShield do this.
To the file checks: Why delete these files?
If you don't want your client to load e.g. loginInfo.py, then remove the relevant code from your shipping client (or use the new xml-based loginInfo). Or hard-code the pack list if you don't want people to mess with it. Same goes for Miles and its extension modules.
Most of these checks are vulnerable to race conditions anyway (e.g. I can use the time between the check for *.mix files and Miles actually trying to load all of them)
PS: You should really add a call to time.sleep() to your loop. Currently you're spending a huge amount of CPU time on these checks which will surely cause problems for users with low-end hardware.
You absolutely right. I only released this because somebody requested it this way. I was just doing what I supposed to do
-
i recommend mainline
- 1
-
You cant actually copy 1:1 i think. Isnt it just pseudo code?
yep but with the pseudo code you can kinda rewrite the source code
-
CFileName I think is supposed to be a string but it is not declared therefore CFileName doesnt not have access to the members of a string. (just a guess)
-
@Kori Where is your problem? I thought its pretty straight forward.
-
just use a god damn hex editor and replace the key LOL.
-
Nvm. You can download the Libs from the Python website
-
I extended that shit massively tho
As you can see i also did it for the weapons
Screen(This Version would only enable to you do the armor shining without prototype or item_proto):
-
def __init__(self):
is the python constructor
def __del__(self):
is the python deconstructor
- 1
-
In your game.py under the python constructor
-
Thanks a lot ricky92. Totally forgot that
-
Iam currently stuck with a Singleton Class problem (err:https://metin2.download/picture/r3F9504x09DVmF8K988YXgTtGTP6KMUj/.gif).
In my header file i bequeathed the singleton class to my CMyClass Class
class CMyClass: public singleton<CMyClass>
Do I have to something else apart from bequeathing? Because Everytime i try to execute the function I get the error above. Without the Singleton Function it is working.
So there is no logic mistake.
Can Somebody explain me what i have to do in order to use the ymir Singleton template Class?
Kind Regards
- 1
-
Whats that screen supposed to mean?
It looks like it's not showing the currently equipped items in the slots.
Because they forgot to extend the max_slots and max_inventory_pages in the client
-
ARRRRRGG Google Translate. I personally recommend enigma. i think its better
-
#FIRST YEAH
Hi Guys,
Just a Simple "python Security script". Just include the file in your root for example and import in prototype.py.
Its really not a big deal. Somebody asked for it. And you have to have Python 2.7
Code:import subprocess import app import threading import os import time Evil_ProcessList = ["notepad++.exe"] Evil_FileNameList = [".sdsd",".asd",".asds"] class SuperUnsecureAndNotEnoughProtectionOfferingScript(object): def __init__(self): self.LoadSuperUnsecureSystem() def __del__(self): pass def LoadSuperUnsecureSystem(self): while 1: self.CheckForEvilFiles() self.CheckForEvilProcesses() def KillProcess(self, processname): try: os.system("taskkill /f /im %s" % processname) except: app.Exit() def DeleteFile(self, filename): try: os.remove(filename) except IOError: app.Exit() def CheckForEvilFiles(self): for file in os.listdir(os.getcwd()): for filename in Evil_FileNameList: if file.endswith(filename): self.DeleteFile(file) def CheckForEvilProcesses(self): for evil in Evil_ProcessList: if evil in subprocess.Popen("tasklist", stdout=subprocess.PIPE, shell=False).communicate()[0]: self.KillProcess(evil) if __name__ == '__main__': threading.Thread(target=SuperUnsecureAndNotEnoughProtectionOfferingScript, args=()).start()
- 4
-
Yes You Can Change the Sequence Table manually in sequence.cpp
But why would you?
-
Very Nice. Keep up the good Work.
Many Thanks,
ShuzZzle
- 1
-
Hey Guys,
Since this is my first post i want to release a little module i wrote 5 minutes ago.
First of all this is for everybody who hates sockets(like me) and don't want to use item_proto for Shinings/Effects whatever.
The Code is quiet "crappy" but it is working flawlessly.
So lets get started.You wanna create something like this where you declare your maps to store the vnum and effectfilepath
#include <map> #ifndef ShiningSettings_H #define ShiningSettings_H 1 extern std::map<int, char*> shiningdata; extern std::map<int, char*>::iterator shiningit; #endif
Then you wanna create your function for your python module
#include "StdAfx.h" #include "ShiningSettings.h" PyObject* addEffect(PyObject* poSelf, PyObject* poArgs) { int vnum; char* effectpath; if(!PyTuple_GetInteger(poArgs, 0, &vnum)) { return Py_BuildException(); } if(!PyTuple_GetString(poArgs, 1, &effectpath)) { return Py_BuildException(); } if(!shiningdata.count(vnum)){ shiningdata[vnum] = effectpath; } return Py_BuildNone(); } void initShining() { static PyMethodDef s_methods[] = { { "Add", addEffect, METH_VARARGS }, { NULL, NULL }, }; Py_InitModule("Shining", s_methods); }
Make also sure you start your function in UserInterface.cppbool RunMainScript(CPythonLauncher& pyLauncher, const char* lpCmdLine){ //Otherfunctions initShining(); }
AND in stdafx.h
add this
void initShining();
After that open up your InstanceBase.cpp
and define your early declared maps also include boost algorithm
Just copy this at the start of the file
#include "boost/algorithm/string.hpp" std::map<int, char*> shiningdata; std::map<int, char*>::iterator shiningit;
Then search for if (12010 <= vnum && vnum <= 12049)
and copy the following code after the if-clause
if(!shiningdata.empty()){ for (shiningit=shiningdata.begin(); shiningit!=shiningdata.end(); shiningit++) if (shiningit->first == vnum) { std::string substr(shiningit->second); std::vector<string> chars; boost::split(chars, substr, boost::is_any_of("#")); for(std::vector<string>::size_type i = 0; i != chars.size(); i++) { __AttachEffectToArmours(chars[i]); } } } }
This will split after a # for multiple shining attached to one amour.
Then you need to declare and define a function in InstanceBaseEffect.cpp and InstanceBase.h
InstanceBaseEffect.cpp
DWORD CInstanceBase::__AttachEffectToArmours(string effectfilename) { const char * effectpath = effectfilename.c_str(); CEffectManager::Instance().RegisterEffect(effectpath, false, false); return m_GraphicThingInstance.AttachEffectByName(0, "Bip01", effectpath); }
Again if you wish you can modify it. I already hardcoded the bonename and the boneindex.
In InstanceBase.h
Search for this:
protected: DWORD __AttachEffect(UINT eEftType); DWORD __AttachEffectToArmours(string effectfilename); void __DetachEffect(DWORD dwEID);
Replace with this:
protected: DWORD __AttachEffect(UINT eEftType); DWORD __AttachEffectToArmours(string effectfilename); DWORD __AttachEffect(char filename[128]); void __DetachEffect(DWORD dwEID);
Oh Yeah watch out that your filename is no longer than 128 characters.
Last but not least:
Create a Python Script in your root Folder (call it whatever you like)
import Shining ##Modded Version # Implemented Delim for C++ # delimiter : # EffectTable = { 11290 : ["d:/ymir work/pc/common/effect/armor/armor-4-2-2.mse"], 11291 : ["d:/ymir work/pc/common/effect/armor/armor-4-2-2.mse"], 11292 : ["d:/ymir work/pc/common/effect/armor/armor-4-2-2.mse"], 11293 : ["d:/ymir work/pc/common/effect/armor/armor-4-2-2.mse"], 11294 : ["d:/ymir work/pc/common/effect/armor/armor-4-2-2.mse"], 11295 : ["d:/ymir work/pc/common/effect/armor/armor-4-2-2.mse"], 11296 : ["d:/ymir work/pc/common/effect/armor/armor-4-2-2.mse"], 11297 : ["d:/ymir work/pc/common/effect/armor/grun_shining.mse#d:/ymir work/pc/common/effect/armor/armor-4-2-1.mse"], 11298 : ["d:/ymir work/pc/common/effect/armor/armor-4-2-2.mse#d:/ymir work/pc/common/effect/armor/armor-4-2-1.mse"], 11299 : ["d:/ymir work/pc/common/effect/armor/armor-4-2-2.mse#d:/ymir work/pc/common/effect/armor/armor-4-2-1.mse"], 11259 : ["d:/ymir work/pc/common/effect/armor/armor-4-2-2.mse#d:/ymir work/pc/common/effect/armor/armor-4-2-1.mse"], 11269 : ["d:/ymir work/pc/common/effect/armor/armor-4-2-2.mse#d:/ymir work/pc/common/effect/armor/armor-4-2-1.mse"] } def LoadEffectTable(): for effect in EffectTable: for i in range(len(EffectTable[effect])): vnum = effect effectpath = EffectTable[effect][i] Shining.Add(vnum, effectpath)
As you can see 2 Shinings are seperated with an "#".
Last but no least import your file in your game
and add the following line under the python constructor
effecttable.LoadEffectTable()
I Hope i didn't forgot anything
- 1
- 18
[ Dead Download Link ] [How To] Remove just one skillbook (Source - 40k) C++ [ We Need You ]
in Temporary
Posted
It seems like you struggling with reading. Think about it before you point out the obvious.