Jump to content

Kenpachi

Members
  • Posts

    764
  • Joined

  • Last visited

  • Days Won

    4

Posts posted by Kenpachi

  1. Das steht im Quelltext des Clients. Reverse engineering ist das einzige, was da hilft.
    Im Groben läuft es aber so ab:

    - Server sendet Datenpaket für einen Mobspawn

    - Client empfängt Datenpaket

    - Client wertet Datenpaket aus

    - Client zeigt den Mob auf der Map an

    Möglicherweise kannst du deinen Plan ja auch umsetzen, indem du die vom Server gesendeten Pakete modifizierst...

  2. Try something like:
     
    OnPCLoadMapEvent:
    getmapxy .Maroll$,@x,@y,0;
    if ( .@mapname$ == "bat_room" ) {
    if (query_sql("SELECT login.account_id FROM login LEFT JOIN `char` ON login.account_id=`char`.account_id WHERE login.last_ip=(SELECT last_ip FROM login WHERE account_id="+getcharid(3)+") AND `char`.online=1", .@account_id) > 5) {
    warp "new_pront",156,177;
    dispbottom "You exceeded the maximum accounts allowed in this area.";
    end;
    	}
    }

    Aaaah, so his question was: "How do I check which map was entered?". I see...

    rqueen, your script wont work, because .@mapname$ doesn't have a value.

    Try this:

    OnPCLoadMapEvent:
      if (strcharinfo(3) == "bat_room" && query_sql("SELECT login.account_id FROM login LEFT JOIN `char` ON login.account_id=`char`.account_id WHERE login.last_ip=(SELECT last_ip FROM login WHERE account_id="+getcharid(3)+") AND `char`.online=1", .@account_id) > 5)
      {
        dispbottom "You exceeded the maximum accounts allowed in this area.";
        warp "new_pront",156,177;
      }
      end;
    
  3. Yes, if a castle is taken, its investments are resetted.

    From agit_main.txt:

    ...
    
    OnAgitBreak:
    	
    	...
    	
    	// Refresh castle data, disable Kafra and reset Invest information.
    	donpcevent strnpcinfo(0)+"::OnRecvCastle";
    	disablenpc "Kafra Staff#"+strnpcinfo(2);
    	for( set .@i, 4; .@i <= 9; set .@i, .@i+1 ) {
    		SetCastleData strnpcinfo(2), .@i, 0;
    	}
    	
    	...
    
  4. If you just want to axe those messages, comment out or delete the following part:

    if ( killerrid != getcharid(3) && ( .msg_die || .msg_kill ) ) {
    			if ( .msg_die ) message strcharinfo(0),"You have been killed by "+ rid2name(killerrid);
    			if ( .msg_kill ) message rid2name(killerrid),"You just killed "+ strcharinfo(0);
    		}
    
  5. Change

    if (BaseLevel != .@MaxBLevel && JobLevel != .@MaxJLevel && LReward != 1) end;
    

    to

    if (BaseLevel != .@MaxBLevel || JobLevel != .@MaxJLevel || LReward == 1) end;
    

    That means, don't give the reward if:

    - BaseLevel is not max BaseLevel
    OR

    - JobLevel is not max JobLevel

    OR

    LReward equals 1 (reward already obtained)

    • Upvote 1
×
×
  • Create New...