Jump to content

Golem1988

Members
  • Posts

    162
  • Joined

  • Last visited

Everything posted by Golem1988

  1. Well, I son't know exactly, but there are some private servers with properly working camouflage which increases crit and damage while being hidden... I have spoted that in rA this stuff isn't implement... Any comments or support please?
  2. Emistry, thanks a lot, thats exactly What I was asking for Thanks )
  3. Well, the last version gives me next: Why It happens? Any support please?
  4. Hello, I have basic npc that allows to become a premium user... But, I want to make some changes in it, and don't know how. Here it is: prontera,164,168,3 script Премиум Сервис 618,{ // Settings: ----------------------------- set .@Cost, 1000; // Cash Points required set .@Time, 1 * 7 * 24 * 60 * 60; // Time in Seconds = 4 weeks, 7 days per week, 24 hours per day, 60 minutes per day, 60 seconds per minute. = 1 month in this sample. set .@Time$, "1 week"; // --------------------------------------- mes "[Premium Account]"; mes "I am the premium account seller."; if( #PremiumUser > gettimetick(2) ) mes "Your premium account expires in ^FF0000" + callfunc("Time2Str",#PremiumUser) + "^000000."; mes "What can I do for you?"; next; // isPremium() returns 1 if the current user account is premium and it have not expired. // It works together with #Premium_Tick, which is a account Var set with a Unix Time value, representing when the premium account expires. // isPremium() is the same as #Premium_Tick > gettimetick(2) switch( select("Pay for premium Time:About premium Account") ) { case 1: mes "[Premium Account]"; if( #PremiumUser > gettimetick(2) ) mes "Do you really want to extend your premium Time?"; else mes "You do really want to convert your account to premium?"; mes "Premium Time is ^FF0000" + .@Time$ + "^000000"; mes "Value is ^FF0000" + .@Cost + "^000000 Cash Points."; next; if( select("Yes:No") == 2 ) { mes "[Premium Account]"; mes "Come back if you change your mind."; close; } if( #CASHPOINTS < .@Cost ) { mes "[Premium Account]"; mes "You don't have enough Cash Points."; close; } if( #PremiumUser > gettimetick(2) ) set #PremiumUser, #PremiumUser + .@Time; // Time Extension else set #PremiumUser, gettimetick(2) + .@Time; // New premium Account query_sql "UPDATE `login` SET group_id = '1' WHERE account_id = "+getcharid(3)+""; set #CASHPOINTS, #CASHPOINTS - .@Cost; mes "[Premium Account]"; mes "Поздравляю!"; mes "До истечения времени Премиум аккаунта осталось: ^FF0000" + callfunc("Time2Str",#PremiumUser) + "^000000."; next; mes "Чтобы изменения статуса вступили в силу, пожалуйста, перезайдите в игру."; close; case 2: // Edit this messages to explain your Users about the premium account in your server. // ---------------------------------------------------------------------------------- mes "[Premium Account]"; mes "Премиум аккаунты пока нахдятся в стадии разработки."; mes ""; mes ""; close; } OnPCLoginEvent: if( #PremiumUser > gettimetick(2) ) { // sc_start SC_ITEMBOOST,( #PremiumUser - gettimetick(2) ),50; // sc_start SC_EXPBOOST,( #PremiumUser - gettimetick(2) ),50; dispbottom "До истечения времени Премиум аккаунта осталось: " + callfunc("Time2Str",#PremiumUser) + ""; } if( #PremiumUser <= gettimetick(2) ) { dispbottom "Premium time is over."; // query_sql "UPDATE `login` SET group_id = '0' WHERE account_id = "+getcharid(3)+""; } end; } the clue is next: I want my premiums gain new group_id to get some commands work, thatswhy I need next: players loosing their premium status will loose their group_id as well. What I want is: If player is GM (has gm level 2 or more) his group id will not be changed while becoming premium, cause I have playing moderators on my server. And, when premium time runs out, their group id wont change to 0... That's the basic stuff that I want to ask I think this isn't that hard to do, I just have no ideas how to do that... ( And, Is it possible not display the dispbottom "Premium time is over."; anytime player will log in if the premium time was run out? So, just once... than just remove #premiumuser from global reg table... Kindly asking to help in this script. Thanks a lot anyway, waiting for you'r support )
  5. Requesting NPC that will give daily quest in Eden group, and will reward with random (maybe not) item... This npc was seen on off servers I think.
  6. By the way, changes in that file doesn't affect indoors... I don't know why, but camera still has fixed zoom in that maps... Fixed again, works fine
  7. One question more, If I want to make towns as questwarp, what should I put than? This way? addMain("Aldebaran",2, "questwarp", 1); Ahh, tested, think that this way is right one And, could we all have 1.0.1 version if warper were updated? And could you do the very nice option for questwarp? Basicly I want to unlocked dungeons would be shown in list first, than unlocked... This is not neccesarry through, cause there is nice "favourites" option
  8. Thanks for your reply... Wanted to ask about quest warper function. If I will put: addMain("Payon Dungeon",25, "questwarp", 1); addMap("Payon Dungeon Entrance","pay_arche",1,"srcmap","pay_dun00"); Will it trigger and save location by entering pay_arche or only entering pay_dun00? This is quite important, because I very like present system- he warps to the entrance, and It will be very usefull for high-level dungeons. I rule my low-rate and this script will be just brilliant. And one more question, sir- I can add up to 255 maps to get this warper work? For example I need 48 dungeons with only 1 level warp (it will warp only to level 1 of each dungeon, as I plain- to the entrance of each dungeon). Will it be able to do? Cause the warper in the SVN can't store more than 30 dungeons (dungeons, not levels in summ)... Thanks for next reply
  9. You have lost the clue ) I have made this already And, the man post-up from you told the true thing ) Thanks, solved.
  10. Bravo! I gonna use this! Especially quest warp ability, just because it has more available dungeons and much more abilities than quest warper in SVN. would be perfect, if this one would have some in-game settings for GM accounts just like main quest warper has. So, allows to enable and configure settings in- game ) Anyway, wrm first sight it's just a brilliant warper
  11. Is that skill working properly? I want say, is is working as it should? Can someone test it and give me an answer? some of my players are complaining about non-working snap/body relocation. Wanted to ask someone to confirm or reject this bugreport of my players.
  12. Don't know in which section to put this question, which is next: How to remove fixed camera zoom in some locations? There is some camera zoom abuse in racvhel, it makes some restriction to do more zoom that map allows. And wanted to ask, how to remove forced camera zoom from *_in maps? For example I want my players be able to use camera zoom in prt_in maps. At the moment prt_in maps force players to use fixed maximal camera zoom, which is about 50% from normal at the moment. I suppose to think, It's some mapflag, but dunno which one it is... Thanks for support.
  13. I wonder if someone still use data folder... (( And there seems to be some differences maybe? Ragexe (kro) and Sak exe... there is some extra variables for sakexe I think... In-game shop for example... I have some doubt through...
  14. About warg skills by ranger. Should be: 2243,9,6,1,0,0,0,5,1,no,0,0,0,weapon,0, RA_WUGSTRIKE,Warg Strike 2244,9,6,1,0,0,0,5,1,no,0,0,0,weapon,0, RA_WUGBITE,Warg Bite At the moment is: 2243,9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0, RA_WUGSTRIKE,Warg Strike 2244,9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0, RA_WUGBITE,Warg Bite second (at the moment) is wrong, cause warg always use only neutral property, regardless of what property master has. Thanks.
  15. 2.6.1.66 I think ) Wow, lol, I opened some eyes at Thor patcher :D
  16. yeah, why not? wow. how did you do that? [NoticeBox:Box1] Width=181 Height=128 Left=641 Top=359 URL='http://your_website/status.php'
  17. А сорри, реально сорри, подумал что ты совсем про другие слоты А ты имел ввиду слот для одевания одежды. Или скорее место. Я не думаю что просто хексом тут можно обойтись, потому как в сорсу это тоже прописывать надо будет. @Лилит, я так понимаю с кастомными спрайтами тут попроще? Вчера рыл форум на наличие системы смены аур итд, нашел пока только какойто мусор и один дифф для еА... Мож есть какая ссылка на норм систему смены аур, а то вроде как это не сложно делается... в принципе над будет попробовать с этим диффом разобраться... Index: common/mmo.h =================================================================== --- common/mmo.h (revision 150) +++ common/mmo.h (working copy) @@ -301,6 +301,9 @@ int father; int mother; int child; + + //Aura System + int aura; unsigned int base_exp,job_exp; int zeny; Index: map/atcommand.c =================================================================== --- map/atcommand.c (revision 150) +++ map/atcommand.c (working copy) @@ -9060,8 +9060,46 @@ return 0; } +/*========================================== +* Original code by [TwiTerror] +* Redone by Advi +* @auraset (aura) (character) +*------------------------------------------ +*/ +int atcommand_auraset( +const int fd, struct map_session_data* sd, +const char* command, const char* message) +{ +struct map_session_data *pl_sd = 0; +int type = 0; +if (!message || !*message || sscanf(message, "%d %[^\n]", &type, atcmd_player_name) < 2) { +if (!message || !*message || sscanf(message, "%d", &type) < 1) { +clif_displaymessage(fd, "Please, enter at least an option (usage: @auraset <aura> <char>)."); +return -1; +} +atcmd_player_name[0] = 0; +pl_sd = sd; +} +if (pl_sd != sd){ +if ((pl_sd = map_nick2sd(atcmd_player_name)) != NULL || ((pl_sd = map_id2sd(atoi(atcmd_player_name))) != NULL && pl_sd->state.active)) { +} else { +return -1; +} +} + +pl_sd->status.aura = type; +pc_setglobalreg(pl_sd,"USERAURA",type); + +pc_setpos(pl_sd, pl_sd->mapindex, pl_sd->bl.x, pl_sd->bl.y, 3); + +clif_displaymessage(fd, "Aura set."); + +return 0; +} + + /*========================================== * atcommand_info[] structure definition *------------------------------------------*/ @@ -9373,6 +9411,7 @@ { "whosell", 60,99, atcommand_shopsearch }, { "nochat", 0,10, atcommand_nochat}, { "requestgm", 0,10, atcommand_requestgm }, + { "auraset", 60,60, atcommand_auraset }, //Aura System }; Index: map/clif.c =================================================================== --- map/clif.c (revision 150) +++ map/clif.c (working copy) @@ -1077,6 +1077,9 @@ case BL_PC: { TBL_PC *sd = ((TBL_PC*)bl); + + clif_sendauras((TBL_PC*)bl, SELF); //Aura System + if (sd->spiritball > 0) clif_spiritball(sd); if(sd->state.size==2) // tiny/big players [Valaris] @@ -3963,6 +3966,14 @@ if(&sd->bl == bl) break; clif_getareachar_unit(sd,bl); + + //Aura System + if (bl->type == BL_PC) { + struct map_session_data *tsd = (struct map_session_data *)bl; + clif_sendaurastoone(sd,tsd); + clif_sendaurastoone(tsd,sd); + } + break; } return 0; @@ -4047,6 +4058,8 @@ if (sd && sd->fd) { //Tell sd that tbl walked into his view clif_getareachar_unit(sd,tbl); + clif_sendaurastoone(sd,tsd); //Aura System + clif_sendaurastoone(tsd,sd); //Aura System } return 0; } @@ -14369,3 +14382,80 @@ add_timer_func_list(clif_delayquit, "clif_delayquit"); return 0; } + +/*========================================== + * Aura System + *------------------------------------------*/ + +void clif_sendauras( struct map_session_data *sd, int target ) +{ +int effect1; +effect1 = sd->status.aura; + +if (sd->status.option & OPTION_HIDE) +return; + +if (effect1 > 0) +clif_specialeffect(&sd->bl, effect1, target); +} + + +/*========================================== + * Aura System + *------------------------------------------*/ +void clif_sendaurastoone( struct map_session_data *sd, struct map_session_data *dsd ) +{ +int effect1; +effect1 = sd->status.aura; + +if (sd->status.option & OPTION_HIDE) +return; + +if (effect1 > 0) +clif_specialeffecttoone(&sd->bl, &dsd->bl, effect1); +} + +/*========================================== + * Aura System + *------------------------------------------*/ +int clif_specialeffecttoone(struct block_list *bl, struct block_list *dst, int type) { + +struct map_session_data *sd = (struct map_session_data *)dst; + +WFIFOW(sd->fd,0) = 0x1f3; +WFIFOL(sd->fd,2) = bl->id; +WFIFOL(sd->fd,6) = type; +WFIFOSET(sd->fd, packet_len(0x1f3)); + +return 0; + +} + +/*========================================== + * Aura System + *------------------------------------------*/ +void clif_getareachar_char2(struct map_session_data* sd,struct block_list *bl) +{ +map_foreachinarea(clif_insight2, bl->m, bl->x-AREA_SIZE, bl->y-AREA_SIZE, bl->x+AREA_SIZE, bl->y+AREA_SIZE, BL_PC, bl); +} + +/*========================================== + * Aura System + *------------------------------------------*/ +int clif_insight2(struct block_list *bl,va_list ap) +{ +struct block_list *tbl; +TBL_PC *sd, *tsd; +tbl=va_arg(ap,struct block_list*); + +if (bl == tbl) return 0; + +sd = BL_CAST(BL_PC, bl); +tsd = BL_CAST(BL_PC, tbl); + +if (sd && sd->fd) +{ //Tell sd that tbl walked into his view +clif_getareachar_unit(sd,tbl); +} +return 0; +} Index: map/clif.h =================================================================== --- map/clif.h (revision 150) +++ map/clif.h (working copy) @@ -465,3 +465,10 @@ void clif_progressbar(struct map_session_data * sd, unsigned long color, unsigned int second); void clif_progressbar_abort(struct map_session_data * sd); #endif /* _CLIF_H_ */ + +// Aura System +int clif_specialeffecttoone(struct block_list *bl, struct block_list *dst, int type); +void clif_sendauras( struct map_session_data *sd, int target ); +void clif_sendaurastoone(struct map_session_data *sd, struct map_session_data *dsd); +void clif_getareachar_char2(struct map_session_data* sd,struct block_list *bl); +int clif_insight2(struct block_list *bl,va_list ap); Index: map/pc.c =================================================================== --- map/pc.c (revision 150) +++ map/pc.c (working copy) @@ -1019,6 +1019,9 @@ sd->change_level = pc_readglobalreg(sd,"jobchange_level"); sd->die_counter = pc_readglobalreg(sd,"PC_DIE_COUNTER"); + + //Aura System + sd->status.aura = pc_readglobalreg(sd,"USERAURA"); // Cash shop sd->cashPoints = pc_readaccountreg(sd,"#CASHPOINTS"); Index: map/pc.h =================================================================== --- map/pc.h (revision 150) +++ map/pc.h (working copy) @@ -297,6 +297,9 @@ int hprecov_rate,sprecov_rate; int matk_rate; int critical_rate,hit_rate,flee_rate,flee2_rate,def_rate,def2_rate,mdef_rate,mdef2_rate; + + //Aura System + int aura; int itemid; short itemindex; //Used item's index in sd->inventory [skotlex] Index: map/status.c =================================================================== --- map/status.c (revision 150) +++ map/status.c (working copy) @@ -5397,6 +5397,14 @@ } break; case SC_HIDING: + + //Aura System + if (sd && sd->status.aura > 0){ + sd->status.aura *= -1; + clif_clearunit_area(&sd->bl, 4); + clif_getareachar_char2(sd, &sd->bl); + } + val2 = tick/1000; tick = 1000; val3 = 0; // unused, previously speed adjustment @@ -6651,6 +6659,13 @@ break; case SC_HIDING: + + //Aura System + if (sd && sd->status.aura < 0){ + sd->status.aura *= -1; + clif_sendauras(sd, AREA_WOS); + } + sc->option &= ~OPTION_HIDE; opt_flag|= 2|4; //Check for warp trigger + AoE trigger break;
  18. мой же постitemslotcounttable = itemslotcounttable.txt в папке дата либо в грф файле. Но таки да, видимо открыть текстовый файл это снова челленж для избранных @Лилит, есть ли возможность забубенить привязку спрайта к чармам? Ну или ауру чтоли... Тоесть чарм попадает к тебе в инвентарь и у тебя меняется аура... Просто не хочу никаких бонусов итд, хочу внешних изменений ) и аура как-то больше мне нравится как вариант чем спрайты... Надеюсь, на чистой рА можно использовать несколько видов аур без изменения сорса?
  19. Thanks a lot... but could You please answer the main question? Is rA going re-balance way or not?
  20. +1 --- and I'm sorry if 000000 is black, if so, than I used FFFFFF, thor patcher config applyer sees white as transparent and I have tryied magenta as transparent, didn't work )
×
×
  • Create New...