Jump to content

GodLesZ

Members
  • Posts

    186
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by GodLesZ

  1. Try to plug it out & in again, just to be sure.

    If it dosnt help, reset your color & lightning/brightness settings.

    If anything fails, try another monitor (+ cable!) instead. If it looks like normally, your other monitor seems to be bugged.

    If the second monitor looks also like the first, your graphics card maybe has some problems.

    • Upvote 1
  2. but, i would like to modify it / add a check on

    certain cell / coordinate cant use @AFK

    by refering to this 2 cell

    cell_novending	6
    cell_nochat	7

    Example :

    if i have an area that already run with either cell_nochat / cell_novending then it will display a message to inform you cant use @AFK at this spot.

    This is how its done /oh

    /*==========================================
    * @afk
    * Turns on/off logout on player
    *------------------------------------------*/
    ACMD_FUNC(afk)
    {
    nullpo_retr(-1, sd);
    // Map checks
    if (
    	   map[sd->bl.m].flag.novending // No vending on the whole map
    	|| map[sd->bl.m].flag.nochat // No chats on the whole map
    	|| map[sd->bl.m].flag.autotrade != battle_config.autotrade_mapflag // Autotrade config dosnt match
    ) {
    	clif_displaymessage(fd, "AFK is not allowed on this map.");
    	return -1;
    }
    
    // Cell checks
    if (
    	   map_getcell(sd->bl.m, sd->bl.x, sd->bl.y, CELL_CHKNOVENDING) // No vending on the current cell
    	|| map_getcell(sd->bl.m, sd->bl.x, sd->bl.y, CELL_CHKNOCHAT) // No chats on the current cell
    ) {
    	clif_displaymessage(fd, "AFK is not allowed on this spot.");
    	return -1;
    }
    
    // All checks passed
    sd->state.monster_ignore = 0;
    sd->state.autotrade = 1;
    if( battle_config.at_timeout )
    {
    	int timeout = atoi(message);
    	status_change_start(&sd->bl, SC_AUTOTRADE, 10000, 0, 0, 0, 0, ((timeout > 0) ? min(timeout,battle_config.at_timeout) : battle_config.at_timeout) * 60000, 0);
    }
    clif_authfail_fd(fd, 15);
    
    return 0;
    }

    • Upvote 1
  3. Even if the problem itself is solved, just to correct you & as info for any other looking in this topic..

    prontera,159,193,3	script	Job Changer	65,{
    enablewaitingroomevent {" Job Changer"};
    

    Please look @ the wiki: [wiki]enablewaitingroomevent[/wiki]

    The bracklets { and } means that this argument/parameter is optional.

    And also, the syntax for calling embedded functions is (using enableWaitingRoomEvent as example)

    enableWaitingRoomEvent;
    enableWaitingRoomEvent();
    enableWaitingRoomEvent "NPC name";
    enableWaitingRoomEvent("NPC name");

    As you can see, it isent case intensitive. so you dont need to write all in lowercase, uppercase or any other format.

    I'm preffer camel-case style, but thats just my favorite.

  4. Written from scratch, more an idea, so please dont bother me..

    // Variable syntax
    // $PARADIGM_<CharID>_<ParadigmType>_COUNT
    // $PARADIGM_<CharID>_<ParadigmType>_ID[<index>]
    // $PARADIGM_<CharID>_<ParadigmType>_LV[<index>]
    
    // CharID to store vars
    set .@cID, getCharID(0);
    
    // Paradigm menu
    mes("Paradigm management");
    next;
    set .@paradigmType, select("Offensive", "Defensive", "Magic");
    
    // Display skills of the paradigm
    mes("^FF0000Current skills^000000");
    set .@count, getD("$PARADIGM_" + .@cID + "_" + .@paradigmType + "_COUNT");
    for (set .@i, 0; .@i < .@count; set .@i, .@i + 1) {
    set .@skillID, getD("$PARADIGM_" + .@cID + "_" + .@paradigmType + "_ID[" + .@i + "]");
    set .@skillName$, skillID2Name(.@skillID);
    mes(" - " + .@skillName$);
    }
    
    // Enable to manage
    set .@manage, select("+ Add skills", "- Delete skills", "= Apply paradigm");
    
    if (.@manage == 1) {
    //-------------------------------------------
    // Add skills to paradigm
    //-------------------------------------------
    mes("Please choose the skill to be add to the paradigm");
    
    // At this step we had to reset the existing paradigm tree and grant all standard skills the character had before
    // because we need to fetch all skills the character currently have to allow them to be added to the paradigm
    // TODO: reset skilltree function
    
    // After reset, fetch all skills and build a menu
    getSkillList();
    set .@menu$, "";
    for (set .@i, 0; .@i < @skilllist_count; set .@i, .@i + 1) {
    	// TODO: Search all existing skills in the paradigm and dont display them to prevent the same skills more than once
    	set .@skillID, @skilllist_id[.@i];
    	set .@skillName$, skillID2Name(.@skillID);
    	set .@menu$, (.@menu$ == "" ? "" : .@menu$ + ":") + "+ " + .@skillName$;
    }
    
    // Display menu & get selected skillID
    set .@choice, select(.@menu$) - 1;
    set .@choosenSkillID, @skilllist_id[.@choice];
    set .@choosenSkillLv, getSkillLv(.@choosenSkillID);
    // Get new index fror the skillID
    set .@skillCount, getD("$PARADIGM_" + .@cID + "_" + .@paradigmType + "_COUNT");
    // Append to paradigm and raise skill count
    setD("$PARADIGM_" + .@cID + "_" + .@paradigmType + "_ID[" + .@skillCount + "]", .@choosenSkillID);
    setD("$PARADIGM_" + .@cID + "_" + .@paradigmType + "_LV[" + .@skillCount + "]", .@choosenSkillLv);
    setD("$PARADIGM_" + .@cID + "_" + .@paradigmType + "_COUNT", .@skillCount + 1);
    
    // TODO: Back to management menu..
    
    } else if (.@manage == 2) {
    //-------------------------------------------
    // Remove skills from paradigm
    //-------------------------------------------
    mes("Please choose the skill to be removed from the paradigm");
    
    // Build menu based on all skills in the paradigm
    set .@menu$, "";
    set .@skillCount, getD("$PARADIGM_" + .@cID + "_" + .@paradigmType + "_COUNT");
    for (set .@i, 0; .@i < .@skillCount; set .@i, .@i + 1) {
    	// TODO: Search all existing skills in the paradigm and dont display them to prevent the same skills more than once
    	set .@skillID, getD("$PARADIGM_" + .@cID + "_" + .@paradigmType + "_ID[" + .@i + "]");
    	set .@skillName$, skillID2Name(.@skillID);
    	set .@menu$, (.@menu$ == "" ? "" : .@menu$ + ":") + "- " + .@skillName$;
    }
    
    // Display menu and get choosen skill index
    set .@choice, select(.@menu$) - 1;
    // Delete skill index
    setD("$PARADIGM_" + .@cID + "_" + .@paradigmType + "_ID[" + .@choice + "]", 0);
    setD("$PARADIGM_" + .@cID + "_" + .@paradigmType + "_LV[" + .@choice + "]", 0);
    // TODO: reorder array to fill the wasted space
    // Redurce skill count in the paradigm
    setD("$PARADIGM_" + .@cID + "_" + .@paradigmType + "_COUNT", .@skillCount - 1);
    
    // TODO: Back to management menu..
    
    } else if (.@manage == 3) {
    //-------------------------------------------
    // Apply paradigm
    //-------------------------------------------
    
    // Reset the skills
    resetSkill();
    // Remove skill points
    set SkillPoint, 0;
    // Grand all skills form the paradigm
    set .@skillCount, getD("$PARADIGM_" + .@cID + "_" + .@paradigmType + "_COUNT");
    for (set .@i, 0; .@i < .@skillCount; set .@i, .@i + 1) {
    	set .@skillID, getD("$PARADIGM_" + .@cID + "_" + .@paradigmType + "_ID[" + .@i + "]");
    	set .@skillLv, getD("$PARADIGM_" + .@cID + "_" + .@paradigmType + "_Lv[" + .@i + "]");
    	// Grant the skill
    	skill(.@skillID, .@skillLv, 0);
    }
    }

    Of course global vars arent that good, but without a source mod i cant see any other ways for storing them.

    Before granting the first paradigm or maby on the first npc visit you have to save the current skill tree to reset them later on.

    €dit: I forgot the skillID2Name script command..

    BUILDIN_FUNC(skillid2name)
    {
       int skillID = script_getnum(st, 2);
    
       script_pushstrcopy(st, skill_get_name(skillID));
    
       return 0;
    }

  5. I guess you wouldn't have to turn it off... but, rather than give people a place to "play" which is what I see would end up happening, you make it a place of "work" beta testing, doesn't mean... "Oh sweet, I can do whatever I want all day long..." it's used primarily for trying to find bugs in the said problem...

    I just see it end up being a playground if it's 24x7

    If we allow only specific members aka "beta tester" to join the server, i dont think could be happen.

    If its puplic access, of course, this will end up as a playground :)

    Anyways, i think this could be nice idea, if we had everything done right, i.e. a build bot.

    • Upvote 1
  6. AFAIK the expire time display can't be changed on serverside because of it's just a entry in the message string table in your client.

    So you need some assembler knowledge to change the display in the way you want.

  7. Elemental Stuffs doesn't have slots right?.

    Sure they have.

    Forged equipment can't have slots, because of the infos about the forger is saved in the places of the slots, so no space is left for card ID's or something else.

    Equipment with an attack or defence element are still able to be slotted or forged.

  8. nvm. Close the topic please.

    Maybe someone else is interested in this too?

    If you solved your problem, you should also say how.

    Basicly, there are 2 simple ways.

    #1 check for users on the battleground map, i.e.

    getmapusers("bat_b02"); // Flavius
    getmapusers("bat_a01"); // Tierra
    

    #2 after joining the battleground you receive a quest. Each Battleground has its own quest.

    So just check the quest i.e.

    set(.@questTime, checkQuest(2070, PLAYTIME));
    // Value of .@questTime (taken from script_commands.txt)
    
    -1 = Quest not started (not in quest log)
    0  = the time limit has not yet been reached
    1  = the time limit has not been reached but the quest is marked as complete
    2  = the time limit has been reached
    

    • Upvote 1
  9. Nice, i never tought there is developing on it again.

    Good luck with it! :D

    PS: You should try to post or sync the news posts with your svn log.

    Everytime i visited the site, i didnt see any changes on the news & left it afterwards. ;)

    Could you also? do a 'VOTE FOR POINTS' on Ceres?

    Looking forward in this Topic.

    Regards,

    Mindless

    I've released one long time before in the old eAthena.ws forum: here.

    Its a simple addon and should still working for simple purposes.

    Maybe a hint for @Brian to come up with? :)

    • Upvote 1
  10. Number One:

    All Item and Equipment in Current GRF or Whatever it's called (from RO) I want all images, items, equipment, npc's and everything!

    I've got a bunch of scripts/tools @ home for extracting & converting sprites from a folder or GRF.

    If no one comes up, i will send it to you today in the evening or @ least tomorrow.

  11. Yes! I am curious how convenient or inconvenient it would be for the majority of users if we used Google Code's issue tracker.

    Yuki: I use Google Docs docs too :D

    Sounds nice, i like there tracker.

    I'm using many google services & have a gmail account too ;)

    "Google Plus"-style: "+1 for the issue tracker idea <3

  12. Done, sub-forums added!

    Yea, I was wondering what do people consider low/mid/high nowadays?

    • Low = up to 25x ?
    • Mid = up to 500x ish ?
    • High = over 1k ?

    Maybe I'm a bit old-school or outdated, but in my opinion its something like:

    • Low up to 25x
    • Mid up to 500x
    • High up to 2.000x
    • Super high above 2.000x

    But we should reserv some space to deal with it.

    A description on each sub-forum like "1x - <50x" on Low Rates and so on.

    Just to let the user know which rates are found in the sub-forum, regardless if its called "low", "mid" or "high".

    Btw, no sub-forum for "super high"? I think they are important today for many players.

  13. Yeah, I think I have to change some more files to fix that.

    I dont think so.

    The object status is sent to client in this function.

    Also updates should be passed through it.

    Where could I find that clip_updatestatus?

    clif_updatestatus can be found in clif.c

    This is how eAthena orders there namespaces..

    clif_* functions are in clif.c, pc_* functions in pc.c, and so on.

    By the way... I'd like to 1:1 chat with someone who's very knowledgeable with Hexes and stuffs like that. I have so much to edit but I have limited knowledge. lol. If you're interested, just pm me. Thanks.

    Just PM & ask, i will try to answer as soon as possible.

  14. if (sd->sc.count && //no "chatting" while muted.

    ((sd->sc.data[SC_NOCHAT] && sd->sc.data[SC_NOCHAT]->val1&MANNER_NOCHAT) ||

    (sd->sc.data[SC_DEEPSLEEP] && sd->sc.data[SC_DEEPSLEEP]->val2) ||

    sd->sc.data[SC_SATURDAYNIGHTFEVER]))

    return -1;

    can be this way? cause i see the starting should be in ((sd->sc.count && and end at fever]))

    Yep, here the same a bit better:

    // No "chatting" while muted
    if (
       sd->sc.count &&
       (
           (sd->sc.data[sC_NOCHAT] && sd->sc.data[sC_NOCHAT]->val1&MANNER_NOCHAT) ||
           (sd->sc.data[sC_DEEPSLEEP] && sd->sc.data[sC_DEEPSLEEP]->val2) ||
           sd->sc.data[sC_SATURDAYNIGHTFEVER]
       )
    )
       return -1;

    If I remember correctly it's also a client issue (the client avoid to send talk packet to server when you are berserk)

    Strange if so. But yea, this sounds like Gravity :D

  15. so it should be..

    -   (sd->sc.data[sC_BERSERK] ||

    something like this only?

    Without the beginning (, yes.

    The block should be

    if (sd->sc.count && //no "chatting" while muted.
    ((sd->sc.data[sC_NOCHAT] && sd->sc.data[sC_NOCHAT]->val1&MANNER_NOCHAT) ||
    (sd->sc.data[sC_DEEPSLEEP] && sd->sc.data[sC_DEEPSLEEP]->val2) ||
    sd->sc.data[sC_SATURDAYNIGHTFEVER]))
    return -1;

  16. Nice, i never tought there is developing on it again.

    Good luck with it! :D

    PS: You should try to post or sync the news posts with your svn log.

    Everytime i visited the site, i didnt see any changes on the news & left it afterwards. ;)

    • Upvote 2
  17. I would try a combination of hex edit and faking.

    Search the Strings of HP and SP; change them (HP to SP and SP to HP) and edit clif_updatestatus to send status.hp instead of SP and so on.

    I dont know if this breaks other things, but i would give it a try.

    The HP and SP values on clientside are taken form offsets, so you cant change them without decent assembler knowledge.

×
×
  • Create New...