[devRev4] Disappearing mobs - problems with spawn system.

Put your bugs you find in osRose here

Moderators: osRose dev team, ospRose dev team, osiRose dev team, Moderators

[devRev4] Disappearing mobs - problems with spawn system.

Postby kismetbecomes on Mon May 20, 2013 6:11 pm

There are frequent instances that an INVISIBLE mob is attacking the players.
There are spawns that is invisible to the player, if you cast aoe in that spawn area, that spawn will attack you - (or die if its weak) - however you won't see any mobs attacking - yet you get damaged over time.

Also, I've experience it myself that if you run away from the previous mob you are attacking, and go far away to make it vanish and clear the battle - if you go back to that spot where it spawn/is spawning you won't see that mob anymore, and you'll start getting damaged if its aggressive.

This fixes in relog.

Another observation is that when a player is already attacking a mob, and you just arrived in the spot you won't see the mob even if you relog, you just see them standing there, but the real thing is that they are on battle.

Sometimes the players even disappear.
RoseZa v437 - HueRose Test Project -- http://hueroseonline.no-ip.biz
kismetbecomes
Rackie
Rackie
 
Posts: 299
Joined: Mon Feb 06, 2012 12:41 am

Re: [devRev4] Disappearing mobs - problems with spawn system

Postby XxXshidoXxX on Wed May 22, 2013 4:32 pm

Funny,i remember fixing this bugg back in 2008.

Did you recently update the client version you were using ? Because i don't think that devrev4 had this bugg at its release.

Well that's one of Osrose problem i guess,dev with a client that keeps changing is quite the pain in the ass,the bugg you fix yesterday comes back tomorrow.
Imo Osrose should continue its development with a single client and then let the private servers develop the things they want to implant (but that's only my idea)

Basically what i think is happening is that there are too much monsters created for one spawn,making them invisible.
Well i'm pretty sure of that since i played around with respawn values once and when more than 20 monster where created on one point they would go invisible.

In order to fix this i think you need to reinitialize the clock when a new monster is created or give it a delay to spawn. (i noticed osrose had some kind of delayed timer included already,maybe you could just try setting a longer one or even a new one (yay for /rate respawn :D purplewillunderstand) )
My collection ( Tools, clients sources...)
https://mega.nz/#F!AdcFnQDL!sKp3O9tWGGdWvLEj_EYfwA
osrose mobile project
viewtopic.php?f=34&t=5787
OsRose Mobile development + Titan Rose redesign
https://github.com/shid0x
XxXshidoXxX
osiRose dev
osiRose dev
 
Posts: 445
Joined: Mon Aug 27, 2007 11:44 am

Re: [devRev4] Disappearing mobs - problems with spawn system

Postby kismetbecomes on Wed May 22, 2013 4:44 pm

To explain this problem clearer, I will post screenies. :lol:


Here's the mob:
Image



Attacking:
Image



Runnin away from it, making it vanish from my view and make it reload (triggering the bug):
Image


Coming back... and its gone..
Image


Just assuring its gone... it always does that tho... its really gone.. that's for sure... :lol:
Image


Now this happens not only in boss mobs, but to all, there are mobs that spawns in an area but you don't see it... they're there, might attack you if aggresive but you won't see them. Another problem is that, if you attacked the mob alone and nobody's around - then someone comes right after you attacked the mob, they couldn't see the mobs you've attacked, only your avatar STANDING there.
RoseZa v437 - HueRose Test Project -- http://hueroseonline.no-ip.biz
kismetbecomes
Rackie
Rackie
 
Posts: 299
Joined: Mon Feb 06, 2012 12:41 am

Re: [devRev4] Disappearing mobs - problems with spawn system

Postby XxXshidoXxX on Wed May 22, 2013 4:47 pm

Oh that.
Well i didn't get the problem before.

Have you updated your client version recently ?
My collection ( Tools, clients sources...)
https://mega.nz/#F!AdcFnQDL!sKp3O9tWGGdWvLEj_EYfwA
osrose mobile project
viewtopic.php?f=34&t=5787
OsRose Mobile development + Titan Rose redesign
https://github.com/shid0x
XxXshidoXxX
osiRose dev
osiRose dev
 
Posts: 445
Joined: Mon Aug 27, 2007 11:44 am

Re: [devRev4] Disappearing mobs - problems with spawn system

Postby kismetbecomes on Wed May 22, 2013 4:48 pm

XxXshidoXxX wrote:Funny,i remember fixing this bugg back in 2008.

Did you recently update the client version you were using ? Because i don't think that devrev4 had this bugg at its release.

Well that's one of Osrose problem i guess,dev with a client that keeps changing is quite the pain in the ass,the bugg you fix yesterday comes back tomorrow.
Imo Osrose should continue its development with a single client and then let the private servers develop the things they want to implant (but that's only my idea)

Basically what i think is happening is that there are too much monsters created for one spawn,making them invisible.
Well i'm pretty sure of that since i played around with respawn values once and when more than 20 monster where created on one point they would go invisible.

In order to fix this i think you need to reinitialize the clock when a new monster is created or give it a delay to spawn. (i noticed osrose had some kind of delayed timer included already,maybe you could just try setting a longer one or even a new one (yay for /rate respawn :D purplewillunderstand) )


I just updated my rev yesterday, recompiled it, implemented my minor changes (return scrolls, exp boosters, none of which should trigger any bug like this) and then recompiled, still the same.
RoseZa v437 - HueRose Test Project -- http://hueroseonline.no-ip.biz
kismetbecomes
Rackie
Rackie
 
Posts: 299
Joined: Mon Feb 06, 2012 12:41 am

Re: [devRev4] Disappearing mobs - problems with spawn system

Postby PurpleYouko on Thu May 23, 2013 2:21 pm

This sounds like a glitch in the visibility lists, possibly related to lmame's grid system.

Start by looking in the SpawnToPlayer() function. Possibly add some code there to give a few useful debug messages then test in a deserted map where you will only get messages from the one monster you are interested in.
I'm betting that the monster is being found in the wrong grid location and is therefore being ignored by the code that sends it to the client.
Need to lookup information on NARose items, skills, quests?
Now featuring a newly completed skill tree for all classes
Formatting fixed for different resolutions
Image

"A Gazelle is nothing but a giraffe plotted logarithmicaly"
User avatar
PurpleYouko
Rose Guru
Rose Guru
 
Posts: 4733
Joined: Fri Aug 10, 2007 2:05 pm

Re: [devRev4] Disappearing mobs - problems with spawn system

Postby kismetbecomes on Thu May 23, 2013 3:44 pm

Here are the parts inside playerfunctions that I think holds the glitch:

// update visibility list
  1.  
  2. bool CPlayer::VisiblityList( )
  3. {
  4.     std::vector<CPlayer*>   newVisiblePlayers;
  5.     std::vector<CDrop*>         newVisibleDrops;
  6.  
  7.     //LMATEST
  8.     //std::vector<CMonster*>        newVisibleMonsters;
  9.     std::vector<unsigned int>        newVisibleMonsters;
  10.  
  11.     std::vector<CNPC*>          newVisibleNPCs;
  12.     // Clients
  13.     CMap* map = GServer->MapList.Index[Position->Map];
  14.     for(UINT i=0;i<map->PlayerList.size();i++)
  15.     {
  16.         CPlayer* otherclient = map->PlayerList.at(i);
  17.         if ( this==otherclient || !otherclient->Session->inGame)
  18.         {
  19.             continue;
  20.         }
  21.         float distance = GServer->distance( this->Position->current, otherclient->Position->current );
  22.         if ( GServer->IsVisible( this, otherclient ) )
  23.         {
  24.             //LMA: now invisible players are just usual users.
  25.             //if ( distance < MAXVISUALRANGE && !otherclient->isInvisibleMode )
  26.             if ( distance < MAXVISUALRANGE)
  27.             {
  28.                 newVisiblePlayers.push_back( otherclient );
  29.  
  30.             }
  31.             else
  32.             {
  33.  
  34.             ClearObject( otherclient->clientid );
  35.             }
  36.         }
  37.         else
  38.         {
  39.             //LMA: now invisible players are just usual users.
  40.             //if ( distance < MINVISUALRANGE && !otherclient->isInvisibleMode )
  41.             if ( distance < MINVISUALRANGE)
  42.             {
  43.                 newVisiblePlayers.push_back( otherclient );
  44.                 otherclient->SpawnToPlayer(this, otherclient);
  45.             }
  46.         }
  47.     }
  48.     // Monsters
  49.     bool monster_seen=false;
  50.     int bon_sp_mp=0;
  51.     int bon_sp_hp=0;
  52.     int bon_nb_mp=0;
  53.     int bon_nb_hp=0;
  54.  
  55.     for(UINT i=0;i<map->MonsterList.size();i++)
  56.     {
  57.         CMonster* thismon = map->MonsterList.at( i );
  58.         float distance = GServer->distance ( this->Position->current, thismon->Position->current );
  59.         monster_seen=false;
  60.         if ( GServer->IsVisible( this, thismon ) )
  61.         {
  62.             if (distance < MAXVISUALRANGE )
  63.             {
  64.                 //LMATEST
  65.                 //newVisibleMonsters.push_back( thismon );
  66.             newVisibleMonsters.push_back( thismon->clientid );
  67.                 monster_seen=true;
  68.             }
  69.             else
  70.             {
  71.                 ClearObject( thismon->clientid );
  72.             }
  73.         }
  74.         else
  75.         {
  76.             if ( distance< MINVISUALRANGE )
  77.             {
  78.                  //LMATEST
  79.                 //newVisibleMonsters.push_back( thismon );
  80.                 newVisibleMonsters.push_back( thismon->clientid );
  81.                 thismon->SpawnMonster(this, thismon );
  82.                 monster_seen=true;
  83.             }
  84.         }
  85.     }
  86.  
  87.     //LMA: bonus from bonfires / salamender.  (all done by AIP now)
  88.     //One update so we divide if several bonuses
  89.     //regen will be updated faster, that's all.
  90.     nb_mp=bon_nb_mp;
  91.     nb_hp=bon_nb_hp;
  92.     sp_hp=bon_sp_hp;
  93.     sp_mp=bon_sp_mp;
  94.     //Log(MSG_INFO,"SIP %i,%i,%i,%i",nb_mp,nb_hp,sp_hp,sp_mp);
  95.  






And, this is the only place significant place I found spawntoplayer:

  1.  
  2. bool CPlayer::SpawnToPlayer( CPlayer* player, CPlayer* otherclient )
  3. {
  4.     BEGINPACKET ( pak, 0x793 );
  5.     ADDWORD     ( pak, clientid);                                       // Client ID
  6.     ADDFLOAT    ( pak, Position->current.x*100 );                       // Position X
  7.     ADDFLOAT    ( pak, Position->current.y*100 );                       // Position Y
  8.     ADDFLOAT    ( pak, Position->destiny.x*100 );                       // Position X
  9.     ADDFLOAT    ( pak, Position->destiny.y*100 );                       // Position Y
  10.  
  11. // Observe: 430 Extra Bytes
  12.     ADDDWORD    ( pak, 0 );                                             // ??
  13.     ADDWORD     ( pak, 0 );                                             // ??
  14. // End
  15.  
  16.     switch (Status->Stance)
  17.     {
  18.     case WALKING:
  19.         ADDBYTE ( pak, 0x00 );                                          // Walking
  20.     break;
  21.     case RUNNING:
  22.         ADDBYTE ( pak, 0x01 );                                          // Running
  23.     break;
  24.     case DRIVING:
  25.     case MOUNTED:
  26.         ADDBYTE ( pak, 0x02 );                                          // Driving // Observe: Mounts aswell
  27.     break;
  28.     default:
  29.         ADDBYTE ( pak, 0x00 );                                          // Default: Running
  30.     }
  31.  
  32.     if(Status->Stance == 0x01)
  33.     {
  34.         ADDWORD ( pak, 0x000a );
  35.         ADDWORD ( pak, 0x0000 );
  36.     } else if(IsDead())
  37.     {
  38.         ADDWORD ( pak, 0x0003 );
  39.         ADDWORD ( pak, 0x0000 );
  40.     } else if(Position->destiny.x != Position->current.y || Position->destiny.y != Position->current.y) {
  41.         ADDWORD ( pak, 0x0001 );
  42.         ADDWORD ( pak, Battle->atktarget );
  43.     } else if(Battle->atktarget != 0) {
  44.         ADDWORD ( pak, 0x0002 );
  45.         ADDWORD ( pak, Battle->atktarget );
  46.     } else {
  47.         ADDDWORD( pak, 0x00000000 );
  48.     }
  49.  
  50.     pvp_id = otherclient->ReturnPvp(player,otherclient);
  51.     ADDDWORD    (pak, pvp_id);
  52.  
  53.     ADDDWORD    ( pak, GServer->BuildBuffs( this ) );                       // Buffs
  54.     ADDBYTE     ( pak, CharInfo->Sex );                                     // Gender
  55.     ADDDWORD    ( pak, Stats->Move_Speed );                                 // Movement Speed
  56.     ADDBYTE     ( pak, CharInfo->HairColor );                               // HairColor
  57.     ADDDWORD    ( pak, CharInfo->Face );                                    // Face Type
  58.     ADDDWORD    ( pak, CharInfo->Hair );                                    // Hair Type
  59.     if(items[142].itemnum != 0)                                             // Cap
  60.     {
  61.         ADDWORD ( pak, items[142].itemnum );
  62.         ADDWORD ( pak, GServer->BuildItemRefine( items[142]));
  63.     } else {
  64.         ADDWORD ( pak, items[2].itemnum );
  65.         ADDWORD ( pak, GServer->BuildItemRefine( items[2]));
  66.     }
  67.     if(items[143].itemnum != 0)                                             // Body
  68.     {
  69.         ADDWORD ( pak, items[143].itemnum );
  70.         ADDWORD ( pak, GServer->BuildItemRefine( items[143]));
  71.     } else {
  72.         ADDWORD ( pak, items[3].itemnum );
  73.         ADDWORD ( pak, GServer->BuildItemRefine( items[3]));
  74.     }
  75.     if(items[144].itemnum != 0)                                             // Gloves
  76.     {
  77.         ADDWORD ( pak, items[144].itemnum );
  78.         ADDWORD ( pak, GServer->BuildItemRefine( items[144]));
  79.     } else {
  80.         ADDWORD ( pak, items[5].itemnum );
  81.         ADDWORD ( pak, GServer->BuildItemRefine( items[5]));
  82.     }
  83.     if(items[145].itemnum != 0)                                             // Shoes
  84.     {
  85.         ADDWORD ( pak, items[145].itemnum );
  86.         ADDWORD ( pak, GServer->BuildItemRefine( items[145]));
  87.     } else {
  88.         ADDWORD ( pak, items[6].itemnum );
  89.         ADDWORD ( pak, GServer->BuildItemRefine( items[6]));
  90.     }
  91.     if(items[146].itemnum != 0)                                             // Mask
  92.     {
  93.         ADDWORD ( pak, items[146].itemnum );
  94.         ADDWORD ( pak, GServer->BuildItemRefine( items[146]));
  95.     } else {
  96.         ADDWORD ( pak, items[1].itemnum );
  97.         ADDWORD ( pak, GServer->BuildItemRefine( items[1]));
  98.     }
  99.     if(items[147].itemnum != 0)                                             // Back
  100.     {
  101.         ADDWORD ( pak, items[147].itemnum );
  102.         ADDWORD ( pak, GServer->BuildItemRefine( items[147]));
  103.     } else {
  104.         ADDWORD ( pak, items[4].itemnum );
  105.         ADDWORD ( pak, GServer->BuildItemRefine( items[4]));
  106.     }
  107.     ADDWORD     ( pak, items[7].itemnum );                                  // Weapon
  108.     ADDWORD     ( pak, GServer->BuildItemRefine( items[7] )  );
  109.     ADDWORD     ( pak, items[8].itemnum );                                  // Sub-Weapon
  110.     ADDWORD     ( pak, GServer->BuildItemRefine( items[8] )  );
  111.  
  112.     ADDWORD     ( pak, (items[132].itemnum << 5));                          // Arrows
  113.     ADDWORD     ( pak, (items[133].itemnum << 5));                          // Bullets
  114.     ADDWORD     ( pak, (items[134].itemnum << 5));                          // Cannons
  115.  
  116.     ADDWORD     ( pak, CharInfo->Job );                                     // Class
  117.     ADDBYTE     ( pak, Stats->Level );                                      // Level
  118.     ADDWORD     ( pak, items[135].itemnum);                                 // Frame
  119.     ADDWORD     ( pak, GServer->BuildItemRefine(items[135]));
  120.     ADDWORD     ( pak, items[136].itemnum );                                // Engine
  121.     ADDWORD     ( pak, GServer->BuildItemRefine(items[136]));
  122.     ADDWORD     ( pak, items[137].itemnum );                                // Wheels
  123.     ADDWORD     ( pak, GServer->BuildItemRefine(items[137]));
  124.     ADDWORD     ( pak, items[138].itemnum );                                // Weapon
  125.     ADDWORD     ( pak, GServer->BuildItemRefine(items[138]));
  126.     ADDWORD     ( pak, items[139].itemnum );                                // Ability
  127.     ADDWORD     ( pak, GServer->BuildItemRefine(items[139]));
  128.  
  129. // Observe: 434 Extra Bytes
  130.     if(Status->Stance != MOUNTED)
  131.     {
  132.         ADDDWORD    ( pak, 0 );                                                 // ??
  133.         ADDWORD     ( pak, 0 );                                                 // ??
  134.     } else {
  135.         ADDBYTE     ( pak, 1 );
  136.         ADDDWORD    ( pak, CharInfo->Mount );
  137.         ADDBYTE     ( pak, 0 );
  138.     }
  139. // End 434
  140.  
  141.     ADDWORD     ( pak, (Stats->HP <= 0)?0x00:0xea7b );                      // HP
  142.  
  143.     if(Shop->open)
  144.     {
  145.         ADDWORD ( pak, 0x0002 );                                            // Shop
  146.     }
  147.     else if(otherclient->isInvisibleMode && !player->isInvisibleMode)
  148.     {
  149.         ADDWORD ( pak, 0x0001 );                                            // Invisible
  150.     }
  151.     else
  152.     {
  153.         ADDWORD ( pak, 0x0000 );                                            // Visible
  154.     }
  155.     ADDBYTE     ( pak, 0x00 );                                              // Fairy?
  156.     ADDBYTE     ( pak, 0 );
  157.     ADDBYTE     ( pak, CharInfo->HairColor );                               // Another HairColor??
  158.     ADDSTRING   ( pak, CharInfo->charname );                                // Character Name
  159.     ADDBYTE     ( pak, 0x00 );
  160.  
  161.     if(Shop->open)
  162.     {
  163.        ADDWORD  ( pak, Shop->ShopType);                                     // Shop Type
  164.        ADDSTRING( pak, Shop->name);                                         // Shopname
  165.        ADDBYTE  ( pak, 0x00);
  166.     }
  167.  
  168.     if (!IsDead())
  169.     {
  170.         if (Status->HP_up != 0xff)
  171.         {
  172.             ADDWORD ( pak, MagicStatus[Status->HP_up].Value );
  173.         }
  174.  
  175.         if (Status->Dash_up != 0xff)
  176.         {
  177.             ADDWORD ( pak, MagicStatus[Status->Dash_up].Value );
  178.         }
  179.  
  180.         if (Status->Haste_up != 0xff)
  181.         {
  182.             ADDWORD ( pak, MagicStatus[Status->Haste_up].Value );
  183.         }
  184.  
  185.     }
  186.  
  187.     if(Clan->clanid != 0)
  188.     {
  189.         ADDDWORD( pak, Clan->clanid );
  190.         ADDWORD ( pak, Clan->back );
  191.         ADDWORD ( pak, Clan->logo );
  192.         ADDBYTE ( pak, Clan->grade );
  193.         ADDBYTE ( pak, Clan->clanrank );
  194.        ADDSTRING( pak, Clan->clanname );
  195.         ADDBYTE ( pak, 0x00 )
  196.     }
  197.  
  198.     player->client->SendPacket(&pak);
  199.  
  200.     if( Party->party != NULL && Party->party == player->Party->party)
  201.     {
  202.         BEGINPACKET( pak, 0x7d5 );
  203.         ADDDWORD   ( pak, CharInfo->charid );
  204.         ADDWORD    ( pak, clientid );
  205.         ADDDWORD    ( pak, GetMaxHP( ) );
  206.         ADDDWORD    ( pak, Stats->HP );
  207.         ADDDWORD   ( pak, GServer->BuildBuffs( this ));
  208.         ADDDWORD   ( pak, 0x00000000 );
  209.         ADDDWORD   ( pak, 0x00000000 );
  210.         ADDWORD    ( pak, 0x0000 );
  211.         ADDWORD    ( pak, 0x1388 );
  212.         player->client->SendPacket( &pak );
  213.  
  214.         RESETPACKET( pak, 0x7f5);
  215.         ADDDWORD(pak, Stats->HP);
  216.         ADDDWORD(pak, Stats->MP);
  217.         ADDDWORD(pak, 0x00000003);
  218.         ADDDWORD(pak, 0x00000001);
  219.         ADDWORD    ( pak, clientid );
  220.         player->client->SendPacket( &pak );
  221.     }
  222.  
  223.     /*if( Group->group != NULL && Group->group == player->Group->group)
  224.     {
  225.         BEGINPACKET( pak, 0x7d5 );
  226.         ADDDWORD   ( pak, CharInfo->charid );
  227.         ADDWORD    ( pak, clientid );
  228.         ADDDWORD    ( pak, GetMaxHP( ) );
  229.         ADDDWORD    ( pak, Stats->HP );
  230.         ADDDWORD   ( pak, GServer->BuildBuffs( this ));
  231.         ADDDWORD   ( pak, 0x00000000 );
  232.         ADDDWORD   ( pak, 0x00000000 );
  233.         ADDWORD    ( pak, 0x0000 );
  234.         ADDWORD    ( pak, 5000 );
  235.         player->client->SendPacket( &pak );
  236.  
  237.         RESETPACKET( pak, 0x7f5);
  238.         ADDDWORD(pak, Stats->HP);
  239.         ADDDWORD(pak, Stats->MP);
  240.         ADDDWORD(pak, 0x00000003);
  241.         ADDDWORD(pak, 0x00000001);
  242.         ADDWORD    ( pak, clientid );
  243.         player->client->SendPacket( &pak );
  244.     }*/
  245.  
  246.     if( Ride->Ride )
  247.     {
  248.         CPlayer* rideclient = GServer->GetClientByCID( Ride->charid, Position->Map );
  249.         if(rideclient==NULL)
  250.         {
  251.             Ride->Ride = false;
  252.             Ride->Drive= false;
  253.             Ride->charid = 0;
  254.             return true;
  255.         }
  256.         if( GServer->IsVisible( player, rideclient ) || player->CharInfo->charid == rideclient->CharInfo->charid )
  257.         {
  258.             BEGINPACKET( pak, 0x796 );
  259.             if( Ride->Drive )
  260.             {
  261.                 ADDWORD    ( pak, rideclient->clientid );
  262.                 ADDFLOAT   ( pak, rideclient->Position->current.x*100 );
  263.                 ADDFLOAT   ( pak, rideclient->Position->current.y*100 );
  264.             } else {
  265.                 ADDWORD    ( pak, clientid );
  266.                 ADDFLOAT   ( pak, Position->current.x*100 );
  267.                 ADDFLOAT   ( pak, Position->current.y*100 );
  268.             }
  269.             ADDWORD    ( pak, 0x0000 );
  270.             player->client->SendPacket( &pak );
  271.  
  272.             RESETPACKET( pak, 0x7dd );
  273.             ADDBYTE    ( pak, 0x02 );
  274.             if( rideclient->Ride->Drive )
  275.             {
  276.                 ADDWORD    ( pak, rideclient->clientid );
  277.                 ADDWORD    ( pak, clientid );
  278.             }
  279.             else
  280.             {
  281.                 ADDWORD    ( pak, clientid );
  282.                 ADDWORD    ( pak, rideclient->clientid );
  283.             }
  284.             player->client->SendPacket( &pak );
  285.         }
  286.     }
  287.     return true;
  288. }
  289.  


At the moment, I don't have an idea why to try or do, I don't even have an idea where to put logs for that debugging you suggested.
RoseZa v437 - HueRose Test Project -- http://hueroseonline.no-ip.biz
kismetbecomes
Rackie
Rackie
 
Posts: 299
Joined: Mon Feb 06, 2012 12:41 am

Re: [devRev4] Disappearing mobs - problems with spawn system

Postby kismetbecomes on Thu May 23, 2013 4:29 pm

I thought I should lay all cases out, here I'am with my screenies again. :D Hopefully this might shed some light.

Here I'am busy killing some MOB and some other player comes just after I attacked / this is what I see:
Image


What they see:
My character is just standing there, good that the drops can be seen. Does that omit the possibility of a wrong grid problem?
Image



Now the players just went into the battle by AOE'ing in that AREA, the mob is there and I can see the other players' damage to the mob. The battle is now between the newly arrived player and that MOB.
Image

by typing /here he can then see the mob
Image


I think what happens is that the MONSTER is owned (by owned I mean only they can see it) by the attacker and all the characters in visual range with that MOB before the attack starts.
RoseZa v437 - HueRose Test Project -- http://hueroseonline.no-ip.biz
kismetbecomes
Rackie
Rackie
 
Posts: 299
Joined: Mon Feb 06, 2012 12:41 am

Re: [devRev4] Disappearing mobs - problems with spawn system

Postby kismetbecomes on Sat May 25, 2013 8:17 am

PurpleYouko wrote:This sounds like a glitch in the visibility lists, possibly related to lmame's grid system.

Start by looking in the SpawnToPlayer() function. Possibly add some code there to give a few useful debug messages then test in a deserted map where you will only get messages from the one monster you are interested in.
I'm betting that the monster is being found in the wrong grid location and is therefore being ignored by the code that sends it to the client.


Hi PY, I reread this suggestion and still don't see where should I add the code in spawntoplayer. And what to add. Sorry, I'm still learning these things. :D
RoseZa v437 - HueRose Test Project -- http://hueroseonline.no-ip.biz
kismetbecomes
Rackie
Rackie
 
Posts: 299
Joined: Mon Feb 06, 2012 12:41 am


Return to Bugs

Who is online

Users browsing this forum: No registered users and 10 guests

cron