Jump to content

Daegaladh

Developer
  • Posts

    230
  • Joined

  • Last visited

  • Days Won

    9

Posts posted by Daegaladh

  1. I think the main functions templates (Manager, gard, df and RL) should be as the WOE FE one, 1 npc working for all the castles, because making duplicates for each castle multiplies memory and CPU usage.

  2. This bug is on Athena since it was created, so I think it's time to get rid of it...

    In Aegis, the NPCs with waitingrooms are always logged into the chatroom.

    Here's a bugfix I made with the help of SnakeDrak some time ago. But I need a core dev to check it and improve the code if possible.

    The code is functional and I was using it on my server for 2 years without any problem.

    Index: chat.c
    ===================================================================
    --- chat.c	(revision 13405)
    +++ chat.c	(working copy)
    @@ -106,7 +106,7 @@
    nullpo_retr(0, sd);
    cd = (struct chat_data*)map_id2bl(chatid);
    
    -	if( cd == NULL || cd->bl.type != BL_CHAT || cd->bl.m != sd->bl.m || sd->vender_id || sd->chatID || cd->users >= cd->limit )
    +	if( cd == NULL || cd->bl.type != BL_CHAT || cd->bl.m != sd->bl.m || sd->vender_id || sd->chatID || ((cd->owner->type == BL_NPC) ? cd->users+1 : cd->users) >= cd->limit )
    {
    	clif_joinchatfail(sd,0);
    	return 0;
    Index: clif.c
    ===================================================================
    --- clif.c	(revision 13405)
    +++ clif.c	(working copy)
    @@ -2861,7 +2861,7 @@
    WBUFL(buf, 4) = cd->owner->id;
    WBUFL(buf, 8) = cd->bl.id;
    WBUFW(buf,12) = cd->limit;
    -	WBUFW(buf,14) = cd->users;
    +	WBUFW(buf,14) = (cd->owner->type == BL_NPC) ? cd->users+1 : cd->users;
    WBUFB(buf,16) = type;
    strncpy((char*)WBUFP(buf,17), cd->title, strlen(cd->title)); // not zero-terminated
    
    @@ -2892,7 +2892,7 @@
    WBUFL(buf, 4) = cd->usersd[0]->bl.id;
    WBUFL(buf, 8) = cd->bl.id;
    WBUFW(buf,12) = cd->limit;
    -	WBUFW(buf,14) = cd->users;
    +	WBUFW(buf,14) = (cd->owner->type == BL_NPC) ? cd->users+1 : cd->users;
    WBUFB(buf,16) = cd->pub;
    strncpy((char*)WBUFP(buf,17), cd->title, strlen(cd->title)); // not zero-terminated
    
    @@ -2948,7 +2948,7 @@
    int clif_joinchatok(struct map_session_data *sd,struct chat_data* cd)
    {
    int fd;
    -	int i;
    +	int i,t;
    
    nullpo_retr(0, sd);
    nullpo_retr(0, cd);
    @@ -2956,13 +2956,25 @@
    fd = sd->fd;
    if (!session_isActive(fd))
    	return 0;
    -	WFIFOHEAD(fd, 8 + (28*cd->users));
    +
    +	t = (int)(cd->owner->type == BL_NPC);
    +	WFIFOHEAD(fd, 8 + (28*(cd->users+t)));
    WFIFOW(fd, 0) = 0xdb;
    -	WFIFOW(fd, 2) = 8 + (28*cd->users);
    +	WFIFOW(fd, 2) = 8 + (28*(cd->users+t));
    WFIFOL(fd, 4) = cd->bl.id;
    +
    +	if(cd->owner->type == BL_NPC){
    +		WFIFOL(fd, 30) = 1;
    +		WFIFOL(fd, 8) = 0;
    +		memcpy(WFIFOP(fd, 12), ((struct npc_data *)cd->owner)->name, NAME_LENGTH);
    +		for (i = 0; i < cd->users; i++) {
    +			WFIFOL(fd, 8+(i+1)*28) = 1;
    +			memcpy(WFIFOP(fd, 8+(i+t)*28+4), cd->usersd[i]->status.name, NAME_LENGTH);
    +		}
    +	}else
    for (i = 0; i < cd->users; i++) {
    	WFIFOL(fd, 8+i*28) = (i != 0 || cd->owner->type == BL_NPC);
    -		memcpy(WFIFOP(fd, 8+i*28+4), cd->usersd[i]->status.name, NAME_LENGTH);
    +		memcpy(WFIFOP(fd, 8+(i+t)*28+4), cd->usersd[i]->status.name, NAME_LENGTH);
    }
    WFIFOSET(fd, WFIFOW(fd, 2));

  3. I made a little mod for GMs to hide on login, but have a little problem: when you log on a pvp map, the pvp things (time attack logo and 1/1) won't show and I cannot target players without shift.

    Any ideas of what is causing this and how to fix it? Thanks.

    Here's my code:

    pc.c

    -    if (pc_can_use_command(sd, "hide", COMMAND_ATCOMMAND))
    -        sd->status.option &= (OPTION_MASK | OPTION_INVISIBLE);
    -    else
           sd->status.option &= OPTION_MASK;

       /**
        * Check if player have any item cooldowns on
        **/
       pc_itemcd_do(sd,true);
    
    +    //Hide on login
    +    if (pc_can_use_command(sd, "hide", COMMAND_ATCOMMAND)) {
    +        sd->sc.option |= OPTION_INVISIBLE;
    +        sd->vd.class_ = INVISIBLE_CLASS;
    +        clif_changeoption(&sd->bl);
    +    }
    
       // Request all registries (auth is considered completed whence they arrive)
       intif_request_registry(sd,7);
       return true;
    

  4. I think it would be useful to add a can_attack permission, so you can prevent GMs to attack monsters or players (to prevent corruption acts like: tanking players, get items to give to players, etc...).

    I've just coded it by myself, so here's the code ;)

    Edit: I think I should add a check to pets, homunculus, mercenaries and elementals too...

    pc_groups.c

     { "use_changemaptype", PC_PERM_USE_CHANGEMAPTYPE },
     { "all_commands", PC_PERM_USE_ALL_COMMANDS },
     { "receive_requests", PC_PERM_RECEIVE_REQUESTS },
    + { "can_attack", PC_PERM_ATTACK},
    };
    
    /**

    pc.h

     PC_PERM_USE_CHANGEMAPTYPE   = 0x04000,
     PC_PERM_USE_ALL_COMMANDS	= 0x08000,
     PC_PERM_RECEIVE_REQUESTS	= 0x10000,
    + PC_PERM_ATTACK			  = 0x20000,
    };
    
    #define pc_setdead(sd)		( (sd)->state.dead_sit = (sd)->vd.dead_sit = 1 )

    clif.c :

     case 0x00: // once attack
     case 0x07: // continuous attack
    
    + if( !pc_has_permission(sd, PC_PERM_ATTACK) )
    + return;
    +
     if( pc_cant_act(sd) || sd->sc.option&OPTION_HIDE )
     return;

     if( skilllv < 1 ) skilllv = 1; //No clue, I have seen the client do this with guild skills :/ [skotlex]
    
    + if( !pc_has_permission(sd, PC_PERM_ATTACK) )
    + return;
    +
     tmp = skill_get_inf(skillnum);
     if (tmp&INF_GROUND_SKILL || !tmp)
     return; //Using a ground/passive skill on a target? WRONG.

    /// There are various variants of this packet, some of them have padding between fields.
    void clif_parse_UseSkillToPos(int fd, struct map_session_data *sd)
    {
    + if( !pc_has_permission(sd, PC_PERM_ATTACK) )
    + return;
     if (pc_cant_act(sd))
     return;
     if (pc_issit(sd))

    • Upvote 3
  5. Anybody knows what to change to use PDT instead of IPN in lib/PaymentNotifyRequest.php? I know variables are basically the same for PDT, but I'm not sure about what to change to make FluxCP works with PDT.

    I want to do it because Paypal only allows 1 IPN URL, and I have more than 1 website.

    I found an easier way to do it using IPN.

    In saved buttons, you can set notify_url=http//myflux.com/?module=donate&action=notify and disable global IPN in profile.

    For another site, do the same, create another button and set notify_url=http//myotherflux.com/?module=donate&action=notify

    Of course, you have to overwrite FluxCP's default paypal button with your saved one in data\paypal\button.php

  6. -@ipban

    -Split npc folder into renewal and pre-renewal, because many scripts have been updated to renewal and there are no pre-renewal version of them, also quest exp is different in pre and re.

    -Focusing on new exes support

    • Upvote 2
  7. @Daegaladh:

    I have installed it to github because it allows you to easily download a zip copy of the latest SVN with no client necessary.

    I know, but I mean, for example: I have flux installed, and only want to update to the lastest rev. With github I have to do it manually. :S

    I think it would be better to use svn and make pre-packed downloads periodically for people that dont use svn.

  8. Hola espero y alguien me pueda responder u_u, tengo el mismo problema pero con la version 3ceam rev 661, utilizo cliente 2011-11-22aRagexeRE.exe y pack_ver:28 y me marca el mismo error en PuTTY:clif_parse:Disconnecting session#7 with unknown packet version espero y me puedan ayudar y entender D:

    SALUDOS /paz

    English: First, this is the international forum section, if you're looking for spanish support, please use the correct one. And second, this is rAthena support boards, not 3ceam... so there's no support for that mod.

    Español: En primer lugar, esto es la sección internacional del foro, si estás buscando soporte en español, por favor, utiliza la sección correspondiente. Y en segundo lugar, esto es el foro de soporte de rAthena, no de 3ceam... así que no se da soporte para este mod.

    @ROZEN, try using older clients then :S

  9. Pues yo no creo que la sección hispana llegue a ningún sitio, es absurdo tener 2 comunidades hispanas del RO, no hay más que ver el número de post aquí y el número de redirecciones a DivineRO...

    • Upvote 1
  10. I did and doesn't work...

    At the moment I'm trying in another way, changing the place require_once("SSI.php") is placed (it's supposed that it needs to be somewhere before the html label http://docs.simplema...0#post_ssi_call). I've tried to put it in the root index.php, on flux.php and some other places, and when I did it worked, but leaves a lot of error because headers from smf and flux are colliding:

    Notice: SSI.php was unable to load a session! This may cause problems with logout and other functions - please make sure SSI.php is included before *anything* else in all your scripts! in /x/x/x/forum/SSI.php on line 170

    Warning: Cannot modify header information - headers already sent by (output started at /x/x/x/forum/Sources/Load.php(2155) : eval()'d code:1) in /x/x/x/flux/lib/Flux/Template.php on line 233

    Warning: ini_set() [ref.outcontrol]: Cannot change zlib.output_handler - headers already sent in /x/x/x/flux/lib/Flux/Template.php on line 234

    Warning: ini_set() [ref.outcontrol]: Cannot change zlib.output_compression - headers already sent in /x/x/x/flux/lib/Flux/Template.php on line 235

    Any ideas about where it should be placed?

  11. Yes, it works but isn't a solution, it fix the news, but broke the rest of my web because it's coded in utf-8... XD

    I need Flux to get the news directly in utf-8, but dunno how...

    I have no idea why is not receiving the news correctly.. if you make a simple web to test using utf-8, and loading news from SSI, it works perfectly... it get the news in utf-8 and show them correctly...

    But not in flux! ,___, seems somehow it suddenly changes into iso-8859-1... why? ._.

    Thanks anyway :)

×
×
  • Create New...