Du bist nicht angemeldet.

1

Mittwoch, 13. Juli 2011, 07:58

[F] Familysystem Snippet

Huhu

wollt mal Fragen ob noch jemand das Familysystem Snippet hat.
Über die Google Cache konnte es leider nicht mehr gefunden werden.
Danke schon mal :)

Lg Chris

2

Mittwoch, 13. Juli 2011, 08:33

Autor: ???
Quelle: Banana-Coding vor dem Umbau
___________________________________________________________
Schritt 1:

in db "account" folgendes einbauen

MySQL-Abfrage(n)

1
2
3
`familydate` date NOT NULL
  `famcheckdate` date NOT NULL
  `famcheck` tinyint(3) unsigned NOT NULL DEFAULT '0' 


Und in der Tabelle "channelstyles" wird 1 Zelle eingefügt.

MySQL-Abfrage(n)

1
`fam` varchar(11) NOT NULL 


Schritt 2:

Client.java


Unter

Java-Quelltext

1
2
3
...
private int spam;
private long lastAction; 


Wird das noch hinzugefügt

Java-Quelltext

1
2
3
4
5
//Familymitglied
private byte famcheck;
private String famcheckdate;
private String famseit;
//Familymitglied 


Danach ändern wir

Java-Quelltext

1
2
3
4
5
6
7
8
9
10
11
private boolean isVIP() {
    return rank >= 1;
}

public boolean isModerator() {
    return rank >= 2;
}

public boolean isAdministrator() {
    return rank >= 3;
} 


in

Java-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
private boolean isVIP() {
    return rank == 1;
}

public boolean isModerator() {
    return rank == 2;
}

public boolean isAdministrator() {
    return rank == 3;
}

//Familymitglied
public boolean isFam() {
    return rank == 5;
}
public byte isFamcheck() {
    return famcheck;
}
public String getFamseit() {
    return famseit;
}
public String getFamcheckdate() {
    return famcheckdate;
}
//Familymitglied


Danach Sucht ihr

Java-Quelltext

1
2
3
4
String[] registration = rs.getString("registration").split(" ");
            String[] date = registration[0].split("-");
            registrationDate = String.format("%s.%s.%s", date[2], date[1], date[0]);
            registrationTime = registration[1].split("\\.")[0];


Da drunter kommt

Java-Quelltext

1
2
3
4
5
6
7
8
9
//Familymitglied
            String famrech = rs.getString("familydate");
            String[] fdate = famrech.split("-");
            famseit = String.format("%s.%s.%s", fdate[2], fdate[1], fdate[0]);            
            famcheck = rs.getByte("famcheck");
            String dfamcheck = rs.getString("famcheckdate");
            String[] fmdate = dfamcheck.split("-");
            famcheckdate = String.format("%s.%s.%s", fmdate[2], fmdate[1], fmdate[0]);
            //Familymitglied 


Schritt 3:

ChannelStyle.java
So jetzt zu der UserColor ihn der UserList.

Java-Quelltext

1
2
3
4
5
6
7
private String
        foreground,
        background,
        red,
        blue,
        administrator,
        moderator; 


Ändern in
PHP-Code:

Java-Quelltext

1
2
3
4
5
6
7
8
private String
        foreground,
        background,
        red,
        blue,
        administrator,
        moderator,
        fam;

Danach unter

Java-Quelltext

1
moderator = rs.getString("moderator"); 





Fügen wir das ein

Java-Quelltext

1
fam = rs.getString("fam"); 





Danach Unter

Java-Quelltext

1
2
3
if (client.isModerator()) {
        return moderator;
    } 





Fügen wir das ein

Java-Quelltext

1
2
3
4
5
//Familymitglied
    if (client.isFam()) {
        return fam;
    }
//Familymitglied 




3

Mittwoch, 13. Juli 2011, 08:33

Schritt 4:

CommandParser.java
So jetzt Fügen wir den Rank noch ihn die Whois Liste ein.

Unter knuddels(da wo ihn der Whois Liste angezeigt wird Wieviele Knuddels man hat.)Wird Das hier hinzugefügt

Java-Quelltext

1
2
3
4
5
6
7
8
9
10
whois.append("°°##");
        if (target.getRank() == 1){
             whois.append(String.format("°%°Vip seit dem ?."));
        }else if(target.isModerator()){
            whois.append(String.format("°%°Moderator seit dem ?."));
        }else if(target.isFam()){
            whois.append(String.format("°%°Familymitglied seit dem "+client.getFamseit()+"."));
        }else if(target.isAdministrator()){
            whois.append(String.format("°%°Sysadmin seit dem ?."));
        } 


okay haben wir das.

Schritt: 5

JoinChannelHandeler.java
So jetzt wird überpruft ob der Familymitglied schon bescheitbekommen hat ob er Family geworden ist.

Unter

Java-Quelltext

1
2
3
client.joinChannel(channel);
    	client.send(PacketCreator.channelFrame(channel, client.getName()));
    	channel.join(client); 




kommt das hier rein

Java-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
if (client.isFamcheck() == 0){

    	}else if (client.isFamcheck() == 1){
         	Popup popup = new Popup("Herzlichen Glückwunsch",  "Herzlichen Glückwunsch", String.format("°>CENTER<°  °>sm/sm_jubi_fireworks1.gif<° _Familymitglied_  °>sm/sm_jubi_fireworks1.gif<° ### Du Wurdest in die  _Familymitgliedschaft_ aufgenommen ist das nicht  °>sm/sm_11.gif<°.Du hast jetzt noch mehr Befehle und kannst jetzt  auch dein °>fullheart.gif<° einmal im Monat Vergeben und  Vielleicht wirst du im Nächsten Monat auch noch StammChatter.#Also Viel  Glück °>sm/smll_mau_w.gif<°.   ### Mit freundlichen Grüßen # Sven  °>sm/sm_abo_11.gif<° "), 400, 300);
            	popup.addPanel(null);
            	//popup.addComponent(new Button("   OK   "));
            	client.send(popup.toString());
            	try {
        	String gdate = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
        	Connection con = pcon.connect();
         	ps = con.prepareStatement("UPDATE `accounts` SET `rank` = ?,  `familydate` = ?, `famcheck` = ?, `famcheckdate` = ? WHERE `name` =  ?");
        	ps.setString(1, "5");
        	ps.setString(2, gdate);
        	ps.setString(3, "2");
        	ps.setString(4, gdate);
        	ps.setString(5, client.getName());
        	ps.executeUpdate();
    	} catch (SQLException e) {
        	e.printStackTrace();
    	} finally {
        	if (ps != null) {
            	try {
                	ps.close();
            	} catch (SQLException e) {
            	}
        	}

        	pcon.close();
    	}
    	} 


Okay haben wird das auch.

WICHTIG

Als Import:

import java.text.SimpleDateFormat;
import java.util.Date;

Schritt 6 (letzter Schritt):

LeavChannelHandler.java
So jetzt zu dem Wichtigsten teil das Zufallsprinzip.

Unter

Java-Quelltext

1
2
3
if (channel == null || !channel.getClients().contains(client)) {
        	return;
    	} 




Das hier einfügen

Java-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
//Fam
    	String date = new SimpleDateFormat("dd.MM.yyyy").format(new Date());
    	if (date.equals(client.getFamcheckdate())){
    	}else{

    	if (client.getRank() == 0){
        	if (client.getOnlineTime() >= 45000 || client.getOnlineTime() == 45000){
        	if (client.isFamcheck() == 0){
        	//double zahl = Math.abs(Math.random()*100+1);
        	Random rnd = new Random();
        	int zahl = rnd.nextInt(10);
        	if (zahl == 10 || zahl == 1){
    	PoolConnection pcon = ConnectionPool.getConnection();
    	PreparedStatement ps = null;

             	//Popup popup = new Popup("Herzlichen Glückwunsch",  "Herzlichen Glückwunsch", String.format("°>CENTER<°  °>sm/sm_jubi_fireworks1.gif<° _Familymitglied_  °>sm/sm_jubi_fireworks1.gif<° ### Du Wurdes in die  _Familymitgliedschaft_ aufgenommen ist das nicht °>sm/sm_11.gif<°.  Du hast jetzt noch mehr Befehle und kannst jetzt auch dein  °>fullheart.gif<° einmal im Monat Vergeben. Und Vielleicht wirst  du im Nächsten Monat auch noch Stammchatter. Also Viel Glück  °>sm/smll_mau_w.gif<°.   ### Mit freundlichen Grüßen # Sven  °>sm/sm_abo_11.gif<° "+zahl), 400, 300);
            	//popup.addComponent(new Button("   OK   "));
            	//client.send(popup.toString());

    	try {
        	Connection con = pcon.connect();
         	ps = con.prepareStatement("UPDATE `accounts` SET `rank` = ?,  `familydate` = ?, `famcheck` = ?, `famcheckdate` = ?, `monatstime` = ?  WHERE `name` = ?");
        	ps.setString(1, "5");
        	ps.setString(2, new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
        	ps.setString(3, "1");
        	ps.setString(4, new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
        	ps.setInt(5, client.getOnlineTime());
        	ps.setString(6, client.getName());
        	ps.executeUpdate();
    	} catch (SQLException e) {
        	e.printStackTrace();
    	} finally {
        	if (ps != null) {
            	try {
                	ps.close();
            	} catch (SQLException e) {
            	}
        	}

        	pcon.close();
    	}
        	}else {
            	
            	PoolConnection pcon = ConnectionPool.getConnection();
            	PreparedStatement ps = null;

             	//Popup popup = new Popup("Herzlichen Glückwunsch",  "Herzlichen Glückwunsch", String.format("°>CENTER<°  °>sm/sm_jubi_fireworks1.gif<° _Familymitglied_  °>sm/sm_jubi_fireworks1.gif<° ### Du Wurdes in die  _Familymitgliedschaft_ aufgenommen ist das nicht °>sm/sm_11.gif<°.  Du hast jetzt noch mehr Befehle und kannst jetzt auch dein  °>fullheart.gif<° einmal im Monat Vergeben. Und Vielleicht wirst  du im Nächsten Monat auch noch Stammchatter. Also Viel Glück  °>sm/smll_mau_w.gif<°.   ### Mit freundlichen Grüßen # Sven  °>sm/sm_abo_11.gif<° "+zahl), 400, 300);
            	//popup.addComponent(new Button("   OK   "));
            	//client.send(popup.toString());

    	try {
        	Connection con = pcon.connect();
        	String gdate = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
         	ps = con.prepareStatement("UPDATE `accounts` SET `rank` = ?,  `familydate` = ?, `famcheck` = ?, `famcheckdate` = ? WHERE `name` =  ?");
        	ps.setString(1, "0");
        	ps.setString(2, gdate);
        	ps.setString(3, "2");
        	ps.setString(4, gdate);
        	ps.setString(5, client.getName());
        	ps.executeUpdate();
    	} catch (SQLException e) {
        	e.printStackTrace();
    	} finally {
        	if (ps != null) {
            	try {
                	ps.close();
            	} catch (SQLException e) {
            	}
        	}

        	pcon.close();
    	}
    	
        	}
        	}else if(client.isFamcheck() == 1 || client.isFamcheck() == 2) {
                	
        	}
    	}
    	}

	}
    	//Fam end 




WICHTIG

Java-Quelltext

1
2
3
4
5
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.*;
import tools.database.ConnectionPool;
import tools.database.PoolConnection;

4

Samstag, 16. Juli 2011, 19:33

Hallo hat soweit alles geklapt nur der zeigt mir das nicht im profil an habe schon andere sachen ausprobiert das woanders hinzushcieben nur hat nicht geklapt

5

Samstag, 16. Juli 2011, 19:52

Hab das jetzt nur mal überflogen, aber scheint mir sehr unsauber programmiert zu sein. Wenn man das 1-zu-1 übernimmt dürften Moderator-Funktionen für Administratoren nicht mehr funktionieren.
Tschüß.

6

Samstag, 16. Juli 2011, 19:55

Also ich habe auch shcon andre rang versucht und so bei 1 kommt mod und so und shceint ergentwien icht so zu funkt.

7

Samstag, 16. Juli 2011, 19:58

Ich kann gerne hilfe anbieten :)

Das Snippet ist aber älter (Vor dem "neuen" Forum) und der Autor mir leider unbekannt >.<

Ich benutze zwar das gleiche Familysystem, jedoch auch mit anderen Rängen wie Stammi etc. (rosenversand bin ich gerade bei *.*), deshalb ist es bei mir nicht wichtig ob der Admin das gleiche kann wie der Mod.

8

Samstag, 16. Juli 2011, 20:01

Das wäre nett sein möcht nämlich das es Funkt.

9

Samstag, 16. Juli 2011, 20:05

Also ich habe auch shcon andre rang versucht und so bei 1 kommt mod und so und shceint ergentwien icht so zu funkt.
Poste mal aus der Client.java die Zeilen in der, der User als Family-Mitglied "abgestempelt" wird :)

Bei mir sieht das momentan so aus:

Java-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	public byte getRank() {
    	return rank;
	}
	
	public boolean isFamily() {
    	return rank == 1;
	}

	public boolean isStammuser() {
    	return rank == 2;
	}

 [...]

	public boolean isAdministrator() {
    	return rank >= 6;
	}


Die Punkte symbolisieren hier natürlich einen Teil der fehlt :D

-------------------------------

P.s. Moderatoren werden immernoch als Rank = 1 definiert. Family´s sind 5. Fiel mir gerade wieder ein :pinch:

10

Samstag, 16. Juli 2011, 20:09

Also bei mir isehts so aus habe bishcen mehr jetzt kopiert

Zitat

//Familymitglied


public Client(Socket socket) {
channels = new ArrayList<Channel>();
this.socket = socket;

if (socket == null) {
return;
}

try {
out = socket.getOutputStream();
} catch (IOException e) {
}
}

public List<Pair<String, Integer>> getIcons() {
return icons;
}

private void addIcon(String icon, int size) {
Pair<String, Integer> pair = new Pair<String, Integer>(icon, size);
icons.add(pair);

for (Channel channel : getChannels()) {
String add = PacketCreator.addIcon(channel.getName(), name, pair);

for (Client target : channel.getClients()) {
target.send(add);
}
}
}

private void removeIcon(String icon) {
for (Pair<String, Integer> pair : icons) {
if (pair.getLeft().equals(icon)) {
icons.remove(pair);
break;
}
}

for (Channel channel : getChannels()) {
String remove = PacketCreator.removeIcon(channel.getName(), name, icon);

for (Client target : channel.getClients()) {
target.send(remove);
}
}
}

public String getName() {
return name;
}


public byte getRank() {
return rank;
}

private boolean isVIP() {
return rank == 1;
}

public boolean isModerator() {
return rank == 2;
}

public boolean isAdministrator() {
return rank == 3;
}

//Familymitglied
public boolean isFam() {
return rank == 5;
}
public byte isFamcheck() {
return famcheck;
}
public String getFamseit() {
return famseit;
}
public String getFamcheckdate() {
return famcheckdate;
}
//Familymitglied