Selaa lähdekoodia

Fixed Attacking Mobs by using a file from FREYA (thanks MagicalTux and Yor)

git-svn-id: https://svn.code.sf.net/p/rathena/svn/athena@141 54d463be-8e91-2dee-dedb-b68131a5f0ec
codemaster 20 vuotta sitten
vanhempi
commit
39fd1c7e8b
4 muutettua tiedostoa jossa 272 lisäystä ja 450 poistoa
  1. 252 428
      src/map/clif.c
  2. 5 15
      src/map/clif.h
  3. 10 4
      src/map/intif.c
  4. 5 3
      src/map/map.h

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 252 - 428
src/map/clif.c


+ 5 - 15
src/map/clif.h

@@ -1,13 +1,11 @@
-// $Id: clif.h,v 1.4 2004/09/25 05:32:18 MouseJstr Exp $
+// $Id: clif.h 1952 2004-10-23 14:05:01Z Yor $
 #ifndef _CLIF_H_
 #define _CLIF_H_
 
-#include <sys/types.h>
-
-#ifdef _WIN32
-#include <winsock.h>
+#ifdef __WIN32
 typedef unsigned int in_addr_t;
 #else
+#include <sys/types.h>
 #include <sys/socket.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
@@ -15,14 +13,6 @@ typedef unsigned int in_addr_t;
 
 #include "map.h"
 
-#define MAX_PACKET_DB			0x220
-
-struct packet_db {
-	short len;
-	void (*func)();
-	short pos[20];
-};
-
 void clif_setip(char*);
 void clif_setport(int);
 
@@ -98,9 +88,9 @@ int clif_changechatstatus(struct chat_data*);	// chat
 void clif_emotion(struct block_list *bl,int type);
 void clif_talkiebox(struct block_list *bl,char* talkie);
 void clif_wedding_effect(struct block_list *bl);
-void clif_sitting(struct map_session_data *sd);
+//void clif_sitting(int fd, struct map_session_data *sd);
 //void clif_callpartner(struct map_session_data *sd);
-//void clif_sitting(struct map_session_data *sd);
+void clif_sitting(struct map_session_data *sd);
 void clif_soundeffect(struct map_session_data *sd,struct block_list *bl,char *name,int type);
 
 // trade

+ 10 - 4
src/map/intif.c

@@ -623,20 +623,26 @@ int intif_parse_WisMessage(int fd) { // rewritten by [Yor]
 //		printf("intif_parse_wismessage: %d %s %s %s\n",id,RFIFOP(fd,6),RFIFOP(fd,30),RFIFOP(fd,54) );
 	
 	sd=map_nick2sd(RFIFOP(fd,32));	// 送信先を探す
-	if(sd!=NULL){
+	if(sd!=NULL && strcmp(sd->status.name, RFIFOP(fd,32)) == 0){
+/*
 		for(i=0;i<MAX_WIS_REFUSAL;i++){	//拒否リストに名前があるかどうか判定してあれば拒否
 			if(strcmp(sd->wis_refusal[i],RFIFOP(fd,8))==0){
 				j++;
 				break;
 			}
 		}
-		if(sd->wis_all)
-			intif_wis_replay(id,3);	// 受信拒否
+*/
+		if(sd->ignoreAll == 1)
+			intif_wis_replay(RFIFOL(fd,4), 2);	// 受信拒否
+/*
 		else if(j>0)
 			intif_wis_replay(id,2);	// 受信拒否
+
 		else{
+*/
+		if(i == MAX_IGNORE_LIST) {
 			clif_wis_message(sd->fd,RFIFOP(fd,8),RFIFOP(fd,56),RFIFOW(fd,2)-56);
-			intif_wis_replay(id,0);	// 送信成功
+			intif_wis_replay(RFIFOL(fd,4),0);	// 送信成功
 		}
 	}else
 		intif_wis_replay(id,1);	// そんな人いません

+ 5 - 3
src/map/map.h

@@ -31,7 +31,7 @@
 #define MAX_LEVEL 255
 #define MAX_WALKPATH 48
 #define MAX_DROP_PER_MAP 48
-#define MAX_WIS_REFUSAL 14
+#define MAX_IGNORE_LIST 80
 
 #define DEFAULT_AUTOSAVE_INTERVAL 60*1000
 
@@ -179,8 +179,10 @@ struct map_session_data {
 	char npc_str[256];
 	unsigned int chatID;
 
-	char wis_refusal[MAX_WIS_REFUSAL][24];	//Refuse Whispers
-	int wis_all;	//Ignore all Whispers
+	struct{
+		char name[24];
+	} ignore[MAX_IGNORE_LIST];
+	int ignoreAll;
 
 	int attacktimer;
 	int attacktarget;

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä