Post: [PI] Real Membership Count Down Days
03-21-2015, 08:25 PM #1
Stunz
Former Staff
(adsbygoogle = window.adsbygoogle || []).push({});
Step 1:

Add this variables to class Player

    
public int startDate;
public boolean membership;


Step 2:
Add this class
    
package server.model.players;

import server.model.players.Client;
import server.model.players.PlayerSave;
import java.util.GregorianCalendar;
import java.util.Calendar;

public class Membership {

public Client c;

public Membership(Client c) {
this.c = c;
}

private int getTodayDate(Client c) {
Calendar cal = new GregorianCalendar();
int day = cal.get(Calendar.DAY_OF_MONTH);
int month = cal.get(Calendar.MONTH);
int year = cal.get(Calendar.YEAR);
return (month * 100 + day);
}

public void giveMembership(Client c) {
c.startDate = getTodayDate(c);
c.membership = true;
PlayerSave.saveGame(c);
c.sendMessage("@blu@You have just recieved a month membership!");
c.sendMessage("@blu@You are now a member. Please relog safely for your membership to take place.");
}

public void checkDate(Client c) {
if(c.membership && c.startDate <= 0) {
c.startDate = getTodayDate(c);
PlayerSave.saveGame(c);
c.sendMessage("Date Given.");
} else if(getDaysLeft(c) <= 0) {
c.membership = false;
c.startDate = -1;
PlayerSave.saveGame(c);
c.sendMessage("@red@Your membership has expired!");
}
}

public int getDaysLeft(Client c) {
return (31 - (getTodayDate(c) - c.startDate));
}
}


Step 3:

Go to PlayerSave
Add
    
else if (token.equals("membership")) {
p.membership = Boolean.parseBoolean(token2);
} else if (token.equals("startdate")) {
p.startDate = Integer.parseInt(token2);
}

Below
    
if (token.equals("character-height")) {
p.heightLevel = Integer.parseInt(token2);
}


Add
    
characterfile.write("membership = ", 0, 13);
characterfile.write(Boolean.toString(p.membership), 0, Boolean.toString(p.membership).length());
characterfile.newLine();
characterfile.write("startdate = ", 0, 12);
characterfile.write(Integer.toString(p.startDate), 0, Integer.toString(p.startDate).length());
characterfile.newLine();

Below
    
characterfile.write("fightMode = ", 0, 12);
characterfile.write(Integer.toString(p.fightMode), 0, Integer.toString(p.fightMode).length());
characterfile.newLine();


Step 4:
Add this to class Client
    
private Membership membership2 = new Membership(this);
public Membership membership() {
return membership2;
}


Add this to packets > commands
    
else if (playerCommand.startsWith("membership")) {
try {
String player2 = playerCommand.substring(11);
for(int i = 0; i < Config.MAX_PLAYERS; i++) {
if(Server.playerHandler.players[i] != null) {
if(Server.playerHandler.players[i].playerName.equalsIgnoreCase(player2)) {
Client c2 = (Client)Server.playerHandler.players[i];
c2.membership().giveMembership(c2);
}
}
}
} catch(Exception e) {
c.sendMessage("Player must be offline.");
}
}


Step 5:

Search for
    
outStream.createFrame(249);
outStream.writeByteA(1);
outStream.writeWordBigEndianA(playerId);

replace with
    
outStream.createFrame(249);
outStream.writeByteA(membership ? 1 : 0);
outStream.writeWordBigEndianA(playerId);


Step 6:
class Client above
    
outStream.createFrame(249);

add
    
membership().checkDate(this);


Step 7:

Client Sided
Go to the client and open class client, search for

    private int anInt1046;


And replace it with

    public static int anInt1046;

Go to Class ItemDef and search for

    if(!isMembers && itemDef.membersObject) {

Replace that with

    if(client.anInt1046 == 0 && itemDef.membersObject) {


And it works 100% even for custom items.


So if you add it correctly you should have count down membership staring 31 days, member items, minor things on interfaces, some npcs and objects.
(adsbygoogle = window.adsbygoogle || []).push({});

Copyright © 2026, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo