|
You last visited: Today at 18:11
Advertisement
[[NO]RELEASE/FRAGE] Switchbotv4 PlugIn-System
Discussion on [[NO]RELEASE/FRAGE] Switchbotv4 PlugIn-System within the Metin2 Hacks, Bots, Cheats, Exploits & Macros forum part of the Metin2 category.
03/22/2012, 18:51
|
#1
|
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
|
[[NO]RELEASE/FRAGE] Switchbotv4 PlugIn-System
Hallo :P
Der Titel ist eventuell etwas schwer verständlich..
WENN DU KEIN PROGRAMMIERER BIST, GEH WIEDER! Du verstehst GAR NICHTS!
Hier gehts um das PlugIn-System, das im Switchbotv4 eingebaut sein wird...
Damit gebe ich euch die Möglichkeit, einen "Hack" oder ähnliches zu schreiben, ohne euch selbst um allzuviel kümmern zu müssen (GUI, etc)
Wie funktioniert das ganze?
Ganz einfach: Ich stelle euch eine Klasse zur Verfügung, die ihr dann in eurem Projekt einfach einbinden müsst. Ihr MÜSST allerdings mit wxWidgets 2.8.12 (und vermutlich mit dem Microsoft Visual C++ 2010-Compiler) arbeiten (ob man auch andere Compiler benutzen kann, ist unklar)
Die Headerdatei zu meiner Klasse gibts erstmal hier:
Code:
#ifndef SBV4_PLUGIN_TRANSFER_CLASS_H
#define SBV4_PLUGIN_TRANSFER_CLASS_H
// Class for the Switchbotv4-Plugin system
//
// Developed by Padmak, (c) 2012 | http://padmak.de/
#include <wx/frame.h>
#include <windows.h>
#include <stdint.h>
#include <string>
struct sbv4_basic_info
{
std::string sversion;
float fversion;
};
class sbv4_plugin_transfer_class
{
public:
sbv4_plugin_transfer_class( sbv4_basic_info* inf );
~sbv4_plugin_transfer_class();
// This headerfile MUST NOT BE CHANGED!!!!!!
// Otherwise it will destroy the vtable for this class!
// Used to get the VNUM of an item laying on the provided slot
// If there is no item or the slot is bigger than 101, it returns 0
// Will return 0 aswell if the inventararry isn't initialized or did cause an error while initiating
virtual uint32_t GetInventoryVNUM(uint8_t slot);
// Same like GetInventarVNUM, just some special specifications:
// The slot MUST NOT be bigger than 44, it will return 0
// If no shop is opened, an undefined value is returned!
virtual uint32_t GetShopVNUM(uint8_t slot);
// Returns the version of the Switchbotv4, provided as std::string with additional infomation
// e.g. 4000_alpha_3
virtual std::string GetSwitchbotVersionAsString()
{
return sbv4_info->sversion;
}
// Returns the version of the Switchbotv4, provided as float without additional information
// e.g. 4.000
virtual float GetSwitchbotVersionAsFloat()
{
return sbv4_info->fversion;
}
protected:
private:
// A ptr to the sbv4_basic_info structure provided by the Switchbotv4
// Do not free this, it will close the Switchbotv4 instant if somebody tries to access this struct!
sbv4_basic_info* sbv4_info;
};
#endif // SBV4_PLUGIN_TRANSFER_CLASS_H
Damit habt ihr schonmal prinzipiell Zugriff auf den Bot, um in meiner GUI was darstellen zu können, müsst ihr aber zusätzlich noch eine Klasse erstellen, die ein wxPanel bereitstellt.
Klingt im ersten Moment etwas kompliziert, ist aber ganz einfach:
Ihr erstellt eure Klasse so wie ihr wollt, das ist mir vollkommen egal. Ihr bekommt von mir einen Pointer auf das Haupt-Tabwidget im Switchbot
Dort fügt ihr dann euren Tab hinzu
Wer noch nie mit wxWidgets gearbeitet hat, versteht natürlich nun gar nichts
Was genau zu tun ist, wirds auch noch als Videotutorial geben, jedoch brauche ich nun erstmal eure Ideen.
Was könnte man alles von meinem Bot wollen können?
Das primäre Ziel ist es, eine einheitliche Basis zu schaffen, womit PlugIns entwickelt werden können, die den Switchbotv4 um Funktionen erweitern, ohne den Switchbot-Code zu haben
Code für ein Beispielprojekt:
[main.cpp]
Code:
#include <windows.h>
#include "sbv4_plugin.hpp"
BOOL WINAPI DllMain(
__in HINSTANCE hinstDLL,
__in DWORD fdwReason,
__in LPVOID lpvReserved
)
{
switch(fdwReason)
{
case DLL_PROCESS_ATTACH:
return TRUE;
break;
}
return TRUE;
}
[sbv4_plugin_base.hpp]
Code:
#ifndef SBV4_PLUGIN_H
#define SBV4_PLUGIN_H
#include <wx/artprov.h>
#include <wx/xrc/xmlres.h>
#include <wx/string.h>
#include <wx/button.h>
#include <wx/gdicmn.h>
#include <wx/font.h>
#include <wx/colour.h>
#include <wx/settings.h>
#include <wx/sizer.h>
#include <wx/panel.h>
#include <wx/notebook.h>
#include <wx/frame.h>
#include <wx/aui/auibook.h>
#include <windows.h>
#include <Y:\svn_code\code\cb_projects\switchbotv4\src\sbv4_plugin_transfer_class.h>
class sbv4_plugin : public wxFrame
{
public:
sbv4_plugin( wxNotebook* parent );
~sbv4_plugin();
wxNotebook* parent;
wxPanel* MainPanel;
wxButton* btnTest;
void SetMC( sbv4_plugin_transfer_class* ptr );
protected:
private:
virtual void OnClickClickMe( wxCommandEvent& event );
sbv4_plugin_transfer_class* main_class;
};
extern "C" __declspec(dllexport) void __cdecl GetPlugin( wxNotebook* parent );
extern "C" __declspec(dllexport) void __cdecl SetMainClass( sbv4_plugin_transfer_class* ptr );
#endif // SBV4_PLUGIN_H
[sbv4_plugin_base.cpp]
Code:
#include "sbv4_plugin.hpp"
namespace glb
{
sbv4_plugin* plg = 0;
};
void GetPlugin( wxNotebook* parent )
{
glb::plg = new sbv4_plugin(parent);
}
void __cdecl SetMainClass( sbv4_plugin_transfer_class* ptr )
{
glb::plg->SetMC(ptr);
}
sbv4_plugin::sbv4_plugin( wxNotebook* parent )
{
MainPanel = new wxPanel( parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
wxBoxSizer* bSizer3;
bSizer3 = new wxBoxSizer( wxVERTICAL );
btnTest = new wxButton( MainPanel, wxID_ANY, wxT("ClickMe!"), wxDefaultPosition, wxDefaultSize, 0 );
bSizer3->Add( btnTest, 0, wxALL, 5 );
MainPanel->SetSizer( bSizer3 );
MainPanel->Layout();
bSizer3->Fit( MainPanel );
parent->AddPage( MainPanel, wxT("Test"), false );
parent->SetSizer( bSizer3 );
parent->Layout();
btnTest->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( sbv4_plugin::OnClickClickMe ), NULL, this );
}
sbv4_plugin::~sbv4_plugin()
{
btnTest->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( sbv4_plugin::OnClickClickMe ), NULL, this );
}
void sbv4_plugin::SetMC( sbv4_plugin_transfer_class* ptr)
{
this->main_class = ptr;
}
void sbv4_plugin::OnClickClickMe( wxCommandEvent& event )
{
printf("%d \n", this->main_class->GetInventoryVNUM(0));
printf("%s\n", this->main_class->GetSwitchbotVersionAsString().c_str());
printf("%f\n", this->main_class->GetSwitchbotVersionAsFloat());
}
Könnt ihr natürlich noch nicht testen, wie auch, den Bot hat ja noch keiner (das wird auch noch dauern, bin gerade erst mittendrin)
Es gibt eh Fragen, stellt sie einfach & ich werde sie hoffentlich beantworten können
€: Das ganze ist bewusst in dieser Section, da daraus definitiv Hacks entstehen werden. Wenns wirklich gar nicht geht, einfach dorthin moven wo es besser passt... Ich hab nichts gefunden
Padmak
|
|
|
03/22/2012, 18:53
|
#2
|
elite*gold: 780
Join Date: Oct 2009
Posts: 305
Received Thanks: 53
|
nice freu mich schon
|
|
|
03/22/2012, 18:56
|
#3
|
elite*gold: 0
Join Date: Feb 2008
Posts: 2,754
Received Thanks: 1,748
|
Bin leider zu unkreativ und wüsste nicht, was man da als Plugin so noch einbauen könnte.. Aber nicht schlecht  Schöne Idee!
//edit:
Woo! 2300th Post!
|
|
|
03/22/2012, 19:18
|
#4
|
elite*gold: 122
Join Date: Sep 2009
Posts: 1,085
Received Thanks: 2,538
|
Die Idee gefällt mir verdammt sehr <.<
Wie kommt genau DU nur auf solche Ideen xD
Mit freundlichen Grüßen
JohnSilver1992
Die Idee gefällt mir verdammt sehr <.<
Wie kommt genau DU nur auf solche Ideen xD
Mit freundlichen Grüßen
JohnSilver1992
|
|
|
03/22/2012, 20:00
|
#5
|
elite*gold: 405
Join Date: Dec 2007
Posts: 6,615
Received Thanks: 6,358
|
Quote:
Originally Posted by JohnSilver1992
Die Idee gefällt mir verdammt sehr <.<
Wie kommt genau DU nur auf solche Ideen xD
Mit freundlichen Grüßen
JohnSilver1992
|
Ich find die Idee auch nicht schlecht, aber es ist jetzt nicht so, dass Padmak der Erfinder des Pluginsystems ist.. o.O
|
|
|
03/22/2012, 20:42
|
#6
|
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
|
Saugeile Antwort, schade dass man nur 1x Thx geben kann 
Tatsache ist: Ich hab mein eigenes System entwickelt, nicht mehr
Is an sich nichts besonderes, bisher hats das nur noch nie gebraucht (und ob's hier was bringt, weiß ich auch noch nich)
Padmak
|
|
|
03/22/2012, 21:10
|
#7
|
elite*gold: 596
Join Date: Sep 2011
Posts: 923
Received Thanks: 2,344
|
Schönes Teil!
Mfg -_HackGamer
|
|
|
03/22/2012, 22:45
|
#8
|
elite*gold: 1
Join Date: Oct 2008
Posts: 51
Received Thanks: 5
|
An sich schöne Idee, die allerdings nur bedingt Potential hat. Die Leute, die sich mit der Materie näher auskennen, wollen denke ich mal etwas eigens machen bzw. unabhängig sein. Für die anderen ist es zu kompliziert. Ich bin lieber für Open-Source Projekte, schaden tun sie dem Autor des Programms eigentlich nicht, anderen wird die Möglichkeit gegeben nicht ewig die gleichen Fehler wie der Orginalautor zu machen. Ich glaube, dass ich hier in der Section eher alleine mit der Ansicht bis auf ein paar Ausnahmen dar stehe. Zu Padmak muss ich sagen, deine Tutorials helfen wirklich sehr, ohne diese würde die Section noch deutlich langsamerer vorankommen.
|
|
|
03/23/2012, 08:00
|
#9
|
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
|
Danke :P
Ich biet hier halt die Möglichkeit, "vereinfacht" mit Metin zu arbeiten, da ich einiges an Schnittstellen bereitstellen kann (Muss man mich halt fragen, dann bau ichs auch ein  )
Das große Problem an OS-Hacks ist: Man weiß exakt wie sie funktionieren und kann sie dann entsprechend fixen
Natürlich könnte ich alles bis auf die Kernfunktionen als Code veröffentlichen, aber bringt irgendwem was, wie ich mir die UI zusammengepfuscht bzw. hingebogen hab?^^
Ich hab auch mit pmbp (Portmonit-Client by Padmak  ) einen quelloffenen Client für Hanashi's Portmonit-System geschrieben (Den Code gibts auf Anfrage, der war zum Releasezeitpunkt schlicht zu schlecht)
Außerdem bietet das Plugin-System für mich auch attraktive Möglichkeiten, so kann ich die Plugins einzeln aktualisieren ohne irgendwas am Bot machen zu müssen^^
Außerdem bin ich ja nach wie vor noch Azubi in einem IT-fernen Bereich und kann so schon alles mal lernen, was ich in meiner späteren eventuellen Karriere als Softwareentwickler noch brauchen könnte^^
Ich würde auch gerne mehr Tutorials machen, dazu bräuchte ich aber mal Vorschläge was noch fehlt
Padmak
|
|
|
03/29/2012, 17:30
|
#10
|
elite*gold: 0
Join Date: Jan 2011
Posts: 59
Received Thanks: 0
|
When will be version v4 ?
v3 does not work !!!!!!!!!!!!!!!!!!!!!!
|
|
|
03/29/2012, 22:11
|
#11
|
elite*gold: 35
Join Date: May 2010
Posts: 648
Received Thanks: 316
|
Find ich eine schöne Sache vielleicht fällt ja dem ein oder anderen User was gutes ein.
Weiter so daraus kann sich denke ich was nützliches entwickeln  .
Gruß
|
|
|
04/03/2012, 22:28
|
#12
|
elite*gold: 19
Join Date: Jun 2010
Posts: 1,405
Received Thanks: 146
|
***, tolle Idee! Wird bestimmt eine sehr geile neue Version.  Ich freu mich drauf!
|
|
|
04/05/2012, 17:39
|
#13
|
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
|
Btw. hat sich die Schnittstelle schon etwas geändert, ich hab es ein bisschen umstrukturiert.
Sobald der Bot fertig ist (naja, zumindest kurz davor) werde ich noch ein Videotutorial zur kompletten Einrichtung erstellen, mit einem Beispiel-Plugin
Finde, das wirkt immer am besten
Padmak
|
|
|
 |
Similar Threads
|
Plugin Frage
02/19/2012 - Minecraft - 1 Replies
Hallo ich suche ein Plugin das es ermöglicht in Minecraft nur den untersten Blog von Bäumen ab zu hacken und der rest fliegt automatisch runter. wie heißt es oder link wer sehr nett mfg juli
|
Plugin Frage
11/25/2011 - Minecraft - 9 Replies
Hi
ich versuch mich grad an meinem ersten Minecraft Server
(zum Test noch auf meinem PC, in 2 Wochen dann auf einem Router)
doch irgendwie Will das nicht ganz so Klappen wie die Youtube videos mir das zeigen
INFO: meine Map heist "NEW World"
mein Erstes Problem ist das Bukkit Permissions überhaupt nicht Greift
|
Plugin Frage
06/27/2011 - Minecraft - 6 Replies
Hallo
Ich habe eine Frage und zwar gibt es ein plugin mit dem ich sehen kann wie lane ein User schon nicht mehr auf dem Server war????
Für Bukkit bräucht ich das wenn es so was gibt.
MFG Jeffrey
P.S.: Vielen Dank im Vorraus
|
Plugin frage
04/01/2011 - Minecraft - 1 Replies
wie heißt der Plugin da wo Lava,TnT gesperrt wird?(blockiert )
|
frage zu nem plugin
03/27/2011 - Minecraft - 3 Replies
also kennt bestimmt fast jeder:
dieser glas teppich mit dem man in der luft rumrennen kann^^
welcher plugin ist das ?^^
|
All times are GMT +1. The time now is 18:16.
|
|