Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Fiesta Online
You last visited: Today at 17:25

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Quick-Release] GuildMaster switchen zeitlich begrenzen

Discussion on [Quick-Release] GuildMaster switchen zeitlich begrenzen within the Fiesta Online forum part of the MMORPGs category.

Reply
 
Old   #1
 
『  』's Avatar
 
elite*gold: 10
Join Date: Aug 2011
Posts: 1,328
Received Thanks: 914
[Quick-Release] GuildMaster switchen zeitlich begrenzen

Da ich in Skype gefragt wurde ob es eine möglichkeit gibt das switchen
des GildenMeisters in der Datenbank zeitlich zu begrenzen, habe ich
kurz drüber geschaut und wollte es mit euch Teilen - Because Sharing is Caring!

Leider weiß ich nicht in welchem Server (Zone, WM, Whatever) die
Prozedur gecallt wird, deswegen kann ich euch leider nicht sagen, wie Ihr die
Meldung "Meister kann nur alle xx geändert werden" angezeigt bekommt.

Naja okay - let's do it.

Kurzer Hinweiß:
Ich habe KEINEN Server, daher konnte ich das ganze nicht genaustens
Testen. Die Prozedur ansicht funktioniert hervorragend.
Sollten dennoch fehler auftreten bitte Ich euch diese direkt
zu melden, damit sie gefixt werden können!

__________________________________________________ ___________________

Zuerst verbindet ihr euch mit SQL Management Studio zu eurer Datenbank und
öffnet dort die xxx_Character DB.



Sobald Ihr diese Datenbank geöffnet habt, klickt ihr Oben Links im SQLMMS
auf "New Query" / "Neue Abfrage".



Dort fügt ihr folgendes ein:
Code:
/*
   Sonntag, 13. Juli 201416:38:46
   User: iKasu
   Server: (local)\DreckigeFiestaDB
   Database: w00_Character
   Application: 
*/

/* To prevent any potential data loss issues, you should review this script in detail before running it outside the context of the database designer.*/
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
ALTER TABLE dbo.tGuild ADD
	dMasterChange datetime NOT NULL CONSTRAINT DF_tGuild_dMasterChange DEFAULT ('2000-01-01 00:00:00.000')
GO
ALTER TABLE dbo.tGuild SET (LOCK_ESCALATION = TABLE)
GO
COMMIT
Wie ihr sehen könnt, wird der Tabelle "tGuild" eine neue Spalte namens
dMasterChange hinzugefügt. Diese wird später verwendet um festzustellen,
wann der letzte Meister geändert wurde.

Bevor wir diese Abfrage ausführen, stellt sicher, dass Ihr die
xxx_Character Datenbank ausgewählt habt (Im Bild das Grüne).
Wenn alles passt, einmal F5 oder auf "Execute Query" / "Abfrage ausführen" klicken.



Nun solltet ihr Unten bei "Message" / "Ausgabe" folgendes stehen haben:



Fals ihr einen Fehler bekommt, das die Datenbank aufgrund von Sicherheitseinstellungen
nicht geändert werden kann, schaut unten im FAQ!

Sobald diese Abfrage ausgeführt ist, öffnet in der Character DB die Gespeicherten
Prozeduren. (Programmierbarkeit -> Gespeicherte Prozeduren)



Dort sucht ihr nach der Prozedur: dbo.p_Guild_Member_SetGrade



Bei dieser Prozedur macht Ihr ein rechtsklick drauf und klickt auf "Ändern".



Nun solltet ihr auf der rechten Seite die Prozedur sehen.
Da ich wie bereits gesagt eine andere Datenbank haben könnte, merkt euch
bitte die ERSTE! Zeile der Prozedur.
Im Bild wäre das bei mir "USE [World00_Character]"



Nun ersetzt Ihr die gesamte Prozedur mit:
Code:
USE [CHANGEME]
GO
/****** Object:  StoredProcedure [dbo].[p_Guild_Member_SetGrade]    Script Date: 07/13/2014 15:53:47 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[p_Guild_Member_SetGrade]

/*
Set Guild Member Grade
2006.2 By CJC

Input:
	See SQL
	
Output:
	nRet = 0,  Error
	nRet = 1,  OK
*/

@nNo int,
@nCharNo int,
@nGrade tinyint,

@nRet tinyint output

AS

SET NOCOUNT ON
SET @nRet = 0

IF @nGrade = 0
	BEGIN
		IF DATEDIFF(hour, Convert(DateTime, (SELECT dMasterChange from tGuild WHERE nNo = @nNo)), GETDATE()) < 24
			BEGIN
				SET @nRet = 0
				RETURN
			END
		ELSE
			BEGIN
				UPDATE tGuild SET dMasterChange = GETDATE() WHERE nNo = @nNo
				SET @nRet = @@ROWCOUNT
				IF @@ERROR <> 0 OR @@ROWCOUNT <> 1
					BEGIN
						SET @nRet = 0
						RETURN
					END
				ELSE
					BEGIN
						UPDATE tGuildMember SET nGrade = @nGrade WHERE nNo = @nNo AND nCharNo = @nCharNo
						SET @nRet = @@ROWCOUNT

						IF @@ERROR <> 0 OR @@ROWCOUNT <> 1
						BEGIN
							SET @nRet = 0
							RETURN
						END
					END
			END
	END
ELSE
	BEGIN

		UPDATE tGuildMember SET nGrade = @nGrade WHERE nNo = @nNo AND nCharNo = @nCharNo
		SET @nRet = @@ROWCOUNT

		IF @@ERROR <> 0 OR @@ROWCOUNT <> 1
		BEGIN
			SET @nRet = 0
			RETURN
		END

	END
Achtet hier bitte auf die erste Zeile! - Dort ändert Ihr "USE [CHANGEME]" zu dem, was
ihr euch gemerkt habt.
In meinem bsp. wäre das: "USE [World00_Character]"

Sobald ihr die erste Zeile ersetzt habt könnt Ihr wieder einen klick auf
"Execute Query" / "Abfrage ausführen" machen oder F5 drücken.

Nun solltet ihr wieder die Meldug bekommen, dass das Script ausgeführt wurde.



Wenn das getan ist, seid Ihr damit fertig.
Nun sollte der Meister nurnoch alle 24h geändert werden können.

Fals Fragen diesbezüglich auftreten, schaut bitte in die FAQ.
Sollte eure Frage nicht beantwortet sein, schreibts in den Thread

__________________________________________________ ____________

__________________________________________________ _____________

FAQ:

Question: Ich bekomme einen Fehler wenn ich die erste Abfrage ausführen möchte

Question: Wie kann ich die Zeit einstellen?

『  』 is offline  
Thanks
7 Users
Old 07/14/2014, 11:27   #2
 
elite*gold: 0
Join Date: Oct 2010
Posts: 426
Received Thanks: 97
Gabs doch schon mal , nur halt nicht so detailliert.
Trotzdem danke für die ausführliche Erklärung, bekommen die meisten halt leider nicht ohne so etwas hin.

Trotzdem kann man es meiner Meinung nach nur benutzen, um den Bug mit zwei Gildenmeistern zu unterbinden, also auf ein paar Sekunden einstellen.
Denn ohne Anzeige werden sich massig Spieler beschweren, dass es "nen Bug gibt"



Achja btw: Wäre mal interessant zu wissen, wie man von den Returns aus den Prozeduren auf die IDs von den Nachrichten kommt. Also genau was Kasu gesagt hat, wo die Prozedur gecallt wird. Weiß das zufällig jemand?
DuOtto is offline  
Old 07/14/2014, 13:49   #3
 
『  』's Avatar
 
elite*gold: 10
Join Date: Aug 2011
Posts: 1,328
Received Thanks: 914
Quote:
Originally Posted by DuOtto View Post
Gabs doch schon mal , nur halt nicht so detailliert.
Trotzdem danke für die ausführliche Erklärung, bekommen die meisten halt leider nicht ohne so etwas hin.

Trotzdem kann man es meiner Meinung nach nur benutzen, um den Bug mit zwei Gildenmeistern zu unterbinden, also auf ein paar Sekunden einstellen.
Denn ohne Anzeige werden sich massig Spieler beschweren, dass es "nen Bug gibt"



Achja btw: Wäre mal interessant zu wissen, wie man von den Returns aus den Prozeduren auf die IDs von den Nachrichten kommt. Also genau was Kasu gesagt hat, wo die Prozedur gecallt wird. Weiß das zufällig jemand?
Hatte den Thread garnicht gesehen

Was die Nachricht betrifft, ich gehe mal stark davon aus, dass dies garnicht
in den Files drin ist, sonst wäre das ja schon standartmäßig in der Datenbank
so "eingetragen".

Steht ja in den Comments:
Code:
Output:
	nRet = 0,  Error
	nRet = 1,  OK
*/
Fals das im Server/Client schon drin sein sollte dann eventuell mal versuchen eine
2 oder -1 zu returnen - eventuell passiert ja dann schon etwas

Wenn nicht - dann gibts nur den umweg über RE im Client sowie im Server.
『  』 is offline  
Old 07/14/2014, 14:32   #4
 
elite*gold: 0
Join Date: Oct 2010
Posts: 426
Received Thanks: 97
Quote:
Originally Posted by ıKasu™ View Post
Hatte den Thread garnicht gesehen
Ist ja nicht schlimm, du hast es sowieso viel detaillierter gemacht



Quote:
Originally Posted by ıKasu™ View Post
Was die Nachricht betrifft, ich gehe mal stark davon aus, dass dies garnicht
in den Files drin ist, sonst wäre das ja schon standartmäßig in der Datenbank
so "eingetragen".

Steht ja in den Comments:
Code:
Output:
	nRet = 0,  Error
	nRet = 1,  OK
*/
Fals das im Server/Client schon drin sein sollte dann eventuell mal versuchen eine
2 oder -1 zu returnen - eventuell passiert ja dann schon etwas

Wenn nicht - dann gibts nur den umweg über RE im Client sowie im Server.
Ich denk auch, wahrscheinlich führt einer von den Diensten die Prozedur aus und schickt entsprechend der Rückgabe die ID aus den TextDatas an den Client.

Tja, so ist das halt, wenn man keinen Source hat
DuOtto is offline  
Thanks
1 User
Old 07/14/2014, 15:27   #5
 
『  』's Avatar
 
elite*gold: 10
Join Date: Aug 2011
Posts: 1,328
Received Thanks: 914
Quote:
Originally Posted by DuOtto View Post
Ich denk auch, wahrscheinlich führt einer von den Diensten die Prozedur aus und schickt entsprechend der Rückgabe die ID aus den TextDatas an den Client.

Tja, so ist das halt, wenn man keinen Source hat
Selbst wenn die Dienste bereits soweit sind diesen Fehler zurückzugeben,
müsste man trozdem im Client suchen, wo & WIE er mit der Rückgabe
umgeht. Sieht man ja alleine schon an dem einfachen Error. Rückgabe ist 0
und der Client gibt keine Meldung aus (Nichtmal das etwas schief gelaufen ist).

So hätte man wenigstens die Meldung umschreiben können und den Return
bei einem Fehler zu -1 oder 2 setzten können.

& ja - Mit Source wäre allllllles einfacher.


Edit:

Hab mir den Char_Release Dienst mal angeschaut und dort wird die Prozedur jedenfals gecallt.
Leider checkt er dort nur ob der Call Okay oder gefailt ist und gibt leider nichts dem Client
zurück wenn er failt. - Somit wäre das im Client denke ich ebenfals nicht vorhanden x.x
『  』 is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
[Release] Neue Bonis switchen
12/05/2013 - Metin2 PServer Guides & Strategies - 19 Replies
Moin, hab schon lange nix mehr von mir sehen lassen. Also hab ich mit einem Freund Kopf oder Zahl gespielt und verloren... ;( die Werte müsst ihr anpassen. Clientside könnt ihr vom Offi alles übernehmen. So sieht das ganze ingame aus: http://i.epvpimg.com/6l6Cc.png Danach könnt ihr die neuen bonis auch auf eurem Equipment switchen.
[Release] Wu7z Tools lite | Schnell Versionen switchen und mehr...
01/22/2012 - Minecraft Mods, Textures, Skins & Maps - 22 Replies
Neues Update ist da! (Safety Update, Passwort wird nun verschlüsselt gespeichert) Download jetzt über e*pvp für Downloadzahlen und weil adfly geblockt wird Hallo Leute, heute stelle ich euch mein neues Tool "Wu7z Tools lite" vor. Das Tool ist als eine Komplettüberarbeitung meines alten Tools "Wu7z Tools entstanden. Es enthält die Kernfeatures Clientmanager und Jar Launcher, sowie Autologin und Ram-Allocator.
[Python Release]Bonusswitcher Wir mehrere Sachen switchen ?
10/20/2011 - Metin2 Private Server - 9 Replies
Hi, Also ich hab es jetzt geschafft den Switcher zum laufen zu bringen dank nyzze, er funktioniert und ist einfach geil :D aber wie kann ich jetzt mehrere sachen switchen also nicht nur 1 in der beschreibung steht zwar es geht aber wie, wieder was in der game.py ändern ? lg.
[HELP]Quest -Online guild/guildmaster
01/11/2011 - Metin2 Private Server - 1 Replies
.



All times are GMT +1. The time now is 17:27.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.