Jump to content

iraciz

Members
  • Posts

    562
  • Joined

  • Last visited

  • Days Won

    7

Posts posted by iraciz

  1. Edit your pal grf, you have to import the kro default palletes just for the hairstyles! not bodies to your first read grf..... save and problem will be solved.. by the way.. diff your exe with char name height to 17 to show the whole name in the char creation panel.

  2. : DB error - Table 'ragnarok.autotrade_merchants' doesn't exist
    [Debug]: at C:\Users\Mario Zicari\Desktop\rAthena\src\map\script.cpp:16996 - SELECT `login`.`account_id` FROM `login` INNER JOIN `char` ON `char`.`account_id` = `login`.`account_id` WHERE `last_ip` = '127.0.0.1' AND `char`.`online` = 1 AND `login`.`account_id` NOT IN ( SELECT `account_id` FROM `autotrade_merchants` )
    [Debug]: Source (NPC): Only1perIP (invisible/not on a map)
  3. Solved by my own means.

    satanbitch1.thumb.png.d8ffa6cbd9e309af3d33d0eaa7efb26e.png

    Autotrade merchants are not counting in the multi login ip filter,
    Only 3 accounts per IP and the fourth was kicked.

    Also added an exception, just in case there are confirmed brothers, couples, etcm in different pcs but using same ip:

    if (#brothers) end;

     

    -	script	Only3perIP	-1,{
    OnPCLoginEvent:
    if (getgmlevel() >= 99) end;
    if (#brothers) end;
    set .@myname$, strcharinfo(0);
    if (query_sql("SELECT `char`.`name` FROM `char` LEFT JOIN login ON `char`.account_id=login.account_id WHERE login.last_ip='"+getcharip()+"' AND `char`.online=1 AND `char`.char_id!="+getcharid(0), .@name$) >= 2) {
    	for (set .@i,0; .@i<getarraysize(.@name$); set .@i,.@i+1) {
    		if (!checkvending(.@name$[.@i]) )
    			set .@sameip, .@sameip +1;
    	}
    	if (.@sameip >= 3) {
    		announce "Lo sentimos, Solo se permite un maximo de 3 cuentas logeadas por IP.", bc_self;
    		mes "Suzaku Ro";
    		mes "Lo sentimos, solo  se permite un maximo de 3 cuentas logeadas por IP!";
    		sleep 4000;
    		atcommand "@kick " + .@myname$;
    	}
    }
    end;
    }

     

    • Like 1
  4. 9 minutes ago, IsabelaFernandez said:

    oh, I just check, this?

     

    case TK_JUMPKICK:
      skillratio += -70 + 10*skill_lv;
      if (sc && sc->data[SC_COMBO] && sc->data[SC_COMBO]->val1 == skill_id)
      skillratio += 10*status_get_lv(src)/3; //Tumble bonus
      if (wd.miscflag)
      {
      skillratio += 10*status_get_lv(src)/3; //Running bonus (TODO: What is the real bonus?)
      if( sc && sc->data[SC_SPURT] ) // Spurt bonus
      skillratio *= 2;
      }
      break;

    You have to replace that, for the one I provided and compile your server.

    		case TK_JUMPKICK:
    			//Different damage formulas depending on damage trigger
    			if (sc && sc->data[SC_COMBO] && sc->data[SC_COMBO]->val1 == skill_id)
    				skillratio += -100 + 4 * status_get_lv(src); //Tumble formula [4%*baselevel]
    			else if (wd->miscflag) {
    				skillratio += -100 + 4 * status_get_lv(src); //Running formula [4%*baselevel]
    				if (sc && sc->data[SC_SPURT]) //Spurt formula [8%*baselevel]
    					skillratio *= 2;
    			}
    			else
    				skillratio += -70 + 10 * skill_lv;
    			break;

     

  5. Can't reproduce your issue in latest revision
     

    Please go to the battle.c in your SCR and check your damage formula,  your line must be the same as below:

    		case TK_JUMPKICK:
    			//Different damage formulas depending on damage trigger
    			if (sc && sc->data[SC_COMBO] && sc->data[SC_COMBO]->val1 == skill_id)
    				skillratio += -100 + 4 * status_get_lv(src); //Tumble formula [4%*baselevel]
    			else if (wd->miscflag) {
    				skillratio += -100 + 4 * status_get_lv(src); //Running formula [4%*baselevel]
    				if (sc && sc->data[SC_SPURT]) //Spurt formula [8%*baselevel]
    					skillratio *= 2;
    			}
    			else
    				skillratio += -70 + 10 * skill_lv;
    			break;

     

  6. On 6/12/2020 at 9:29 PM, Emistry said:
    
    function Go {
    	if ((getmapflag(getarg(0), mf_gvg_castle) || getmapflag(getarg(0), mf_gvg_dungeon))
    		&& (getcharid(2) == 0 || getcharid(2) != getcastledata(getarg(0), 1))
    	) {
    		mes "^0000FFAgente Warp^000000";
    		cutin "jpn_mid03",2;
    		mes "You are not an owner of any this Casttle, or member of any guild who owns one.";
    		next;
    		mes "^0000FFAgente Warp^000000";
    		mes "Conquest the castle, or join a guild who owns one in order to access!";
    		close3;
    	}
    	else {
    		set lastwarp$, getarg(0);
    		set lastwarpx, getarg(1,0);
    		set lastwarpy, getarg(2,0);
    		warp getarg(0),getarg(1,0),getarg(2,0);
    	}
    	end;
    }

     

    Dont know how or where to apply this, sorry for taking your time.

  7. Good Day,
    I found this script, and it's working fine, but is also counting the autotrade merchants! to the point if you have an autotrade logged out, you can't dual login!

    Any possible way to not count the autotrade merchants in this script? In order to keep an autotrade vending and still log with two maximun same ip accounts.

    Thanks in advance.

    -	script	Only2perIP	-1,{
    OnPCLoginEvent:
    if (getgmlevel() >= 99) end;
    set .@myname$, strcharinfo(0);
    if (query_sql("SELECT `char`.`name` FROM `char` LEFT JOIN login ON `char`.account_id=login.account_id WHERE login.last_ip='"+getcharip()+"' AND `char`.online=1 AND `char`.char_id!="+getcharid(0), .@name$) >= 2) {
    	for (set .@i,0; .@i<getarraysize(.@name$); set .@i,.@i+1) {
    		if (checkvending(.@name$[.@i]) != 2)
    			set .@sameip, .@sameip +1;
    	}
    	if (.@sameip >= 2) {
    		announce "Sorry, only 2 accounts per IP can be logged in at a time.", bc_self;
    		sleep 1000;
    		atcommand "@kick " + .@myname$;
    	}
    }
    end;
    }

     

  8. 13 minutes ago, Kreustoo said:

    Hello,

    I think you just need to add an else to make it work they wya you want:

    
    if (getgmlevel()>=99)
    	showscript strcharinfo(0)+" : Admin Level Account Confirmed!.";
    	
    else if (vip_status(VIP_STATUS_ACTIVE)){

    if a gm => admin level
    else if a vip => vip confirmed
    else => (not a gm nor a vip) => kick

     

    Thank you, that was just the scripting lesson I needed! Now is woking fine... This will prevent GM's recalling normal users to enjoy the vip features map..

    by the way, I noticed that the VIP status will be updated on player relog , if the vip timer expires in an account, she/he will still vip until reloggin.

  9. I need help to let only vip accounts and game masters lvl 99 stay in the script map "vip".

    Is difficult for me because I have to apply 3 filters and I'm not good scripter.

    //-----VIP MAP FILTER ACCES-----
    -	script	VIPFILTER	-1,{
    	
    	OnPCLoadMapEvent:
    	if (getgmlevel()>=99)
    	showscript strcharinfo(0)+" : Admin Level Account Confirmed!.";
    	
    	if (vip_status(VIP_STATUS_ACTIVE)){
    	showscript strcharinfo(0)+" : VIP Account Confirmed!.";
    	}else{
    	showscript strcharinfo(0)+" : Your account is not VIP! or i'ts time has expired! Defaulting Save Point.";
    	sleep2 2000;
    	specialeffect2 18;
    	savepoint "new_1-1",47,63;
    	sleep2 2000;
    	warp "new_1-1",47,63;
    	end;
    	}
    }
    
    //------Enable map OnPCLoadMapEvent-------------------
    vip	mapflag	loadevent

    Non VIP accounts and Not GM's, who enter "vip" map will have their save point defaulted and also be warped to that spot,

    GMs and vip will have the allowance message! and can stay there, I tried my best but i can't get it work as expected, could you lend me a hand? upvote spolier. /heh

  10. Edit:

    I managed to stop them a little bit changing some numbers..

            //Make sure walk delay is not decreased
            if (DIFF_TICK(ud->canmove_tick, tick+delay) > 450)

            //Immune to being stopped for double the flinch time
        if (DIFF_TICK(ud->canmove_tick, tick-delay) > 300)

    I don't understand C+ but I think those are the timers for the walk delay time applied and the can move time after the delay, and it's applied in a kind of cycle.

     

    I wish to make this timers tighter, Not so much walk delay and not so much imune to walk delay time.

     

    In the attached video bellow you wil see, the damage move delay and the can move grace time

    The whole lines in unit.c

    /**
     * Applies a walk delay to a unit
     * @param bl: Object to apply walk delay to
     * @param tick: Current tick
     * @param delay: Amount of time to set walk delay
     * @param type: Type of delay
     *	0: Damage induced delay; Do not change previous delay
     *	1: Skill induced delay; Walk delay can only be increased, not decreased
     * @return Success(1); Fail(0);
     */
    int unit_set_walkdelay(struct block_list *bl, t_tick tick, t_tick delay, int type)
    {
    	struct unit_data *ud = unit_bl2ud(bl);
    
    	if (delay <= 1 || !ud)
    		return 0;
    
    	if (type) {
    		//Bosses can ignore skill induced walkdelay (but not damage induced)
    		if(bl->type == BL_MOB && status_has_mode(status_get_status_data(bl),MD_STATUS_IMMUNE))
    			return 1;
    		//Make sure walk delay is not decreased
    		if (DIFF_TICK(ud->canmove_tick, tick+delay) > 450)
    			return 1;
    	} else {
    		// Don't set walk delays when already trapped.
    		if (!unit_can_move(bl)) {
    			unit_stop_walking(bl,4); //Unit might still be moving even though it can't move
    			return 0;
    		}
    		//Immune to being stopped for double the flinch time
    	if (DIFF_TICK(ud->canmove_tick, tick-delay) > 300)
    			return 0;
    	}
    
    	ud->canmove_tick = tick + delay;
    
    	if (ud->walktimer != INVALID_TIMER) { // Stop walking, if chasing, readjust timers.
    		if (delay == 100) // Minimal delay (walk-delay) disabled. Just stop walking.
    			unit_stop_walking(bl,0);
    		else {
    			// Resume running after can move again [Kevin]
    			if(ud->state.running)
    				add_timer(ud->canmove_tick, unit_resume_running, bl->id, (intptr_t)ud);
    			else {
    				unit_stop_walking(bl,4);
    
    				if(ud->target)
    					add_timer(ud->canmove_tick+1, unit_walktobl_sub, bl->id, ud->target);
    			}
    		}
    	}
    
    	return 1;
    }

     

  11. Nice script Emistry! But the edited lines are not blocking the access to the guild dungeons, they are blocking the casttle maps instead.

    @Emistry Can I attach my script, so you can note what I want exactly? I will be totally grateful and indebted to you, if you help me with this part

     I need to PREVENT non castle owners access
    to the second edition guild dungeon warper in my warper script but I can't do it, I tried copying the flower script but it's difficult to know their arrays.

    Line 3653 and line 3654 block that users for going into Guild dungeons

     

     

    //-NEED RACHEL CASTTLE OWNER FILTER	Go("arug_dun01",0,0);
    //-NEED YUNO CASTTLE ONWER FILTER	Go("schg_dun01",0,0);

     

    warper.txt

  12. 7 minutes ago, IsabelaFernandez said:
     
     
    
    the mob is not attacking alone, it is necessary to hit first to be attacked

    Ok you mean the aggresive mode, you can guide using the mob db structure

    // Structure of Database :
    // ID,Sprite_Name,kROName,iROName,LV,HP,SP,EXP,JEXP,Range1,ATK1,ATK2,DEF,MDEF,STR,AGI,VIT,INT,DEX,LUK,Range2,Range3,Scale,Race,Element,Mode,Speed,aDelay,aMotion,dMotion,MEXP,MVP1id,MVP1per,MVP2id,MVP2per,MVP3id,MVP3per,Drop1id,Drop1per,Drop2id,Drop2per,Drop3id,Drop3per,Drop4id,Drop4per,Drop5id,Drop5per,Drop6id,Drop6per,Drop7id,Drop7per,Drop8id,Drop8per,Drop9id,Drop9per,DropCardid,DropCardper

    0x3095

    1585,MIME_MONKEY,Mime Monkey,MimeMonkey,40,6000,0,200,22,3,300,350,40,40,1,40,40,40,40,30,10,12,1,3,21,0x3095,400,1872,672,480,0,0,0,0,0,0,0,909,7000,1202,100,938,400,512,1000,713,1500,741,5,619,20,0,0,0,0,0,0

     

  13. 3 hours ago, IsabelaFernandez said:
    
    hello everyone, i would like to know how to edit a mob to attack any target, and have a 100% chance to use the skill (271 / MO_EXTREMITYFIST) with 
    a 2 second cast. 
    Mob ID: 1585

    El mime monkey eh?

    agregale la skill al mob_skill_db

    1585,Mime Monkey@MO_EXTREMITYFIST,chase,271,5,1000,2000,0,no,target,always,0,,,,,,,

    si quieres que pase un tiempo entre reuso de skill agregale el delay al cero antes del no en milisegundos

     

    Tambien puedes ver la estructura, no hace daño aprender un poco.

    // Structure of Database:
    // MobID,Dummy value (info only),State,SkillID,SkillLv,Rate,CastTime,Delay,Cancelable,Target,Condition type,Condition value,val1,val2,val3,val4,val5,Emotion,Chat

  14. On 6/4/2020 at 7:41 PM, Brynner said:

    i still update a make a working diff patch for the extended battleground so it can still be active and works on the latest git hash thats why im wondering it was been hidden now. but its okay atleast i know what just happen.

    Pheww..

    I knew this was going to happen

     

    Thankyou my friend, because of your last diff, I managed to get those battleground in my server, I feel myself lucky. 

  15. Same problem Here! help
    attend.png.fb59209b4a1af2baa8596d51529272e4.png

    CheckAttendance.lub

    Config = {
    	StartDate = 20200601,
    	EndDate = 20201231
    }
    
    Reward = {
    	{ 1, 501, 1 },
    	{ 2, 501, 1 },
    	{ 3, 501, 5 },
    	{ 4, 501, 5 },
    	{ 5, 501, 1 },
    	{ 6, 501, 1 },
    	{ 7, 501, 3 },
    	{ 8, 501, 5 },
    	{ 9, 501, 5 },
    	{ 10, 501, 1 },
    	{ 11, 501, 2 },
    	{ 12, 501, 3 },
    	{ 13, 501, 5 },
    	{ 14, 501, 5 },
    	{ 15, 501, 5 },
    	{ 16, 501, 5 },
    	{ 17, 501, 5 },
    	{ 18, 501, 5 },
    	{ 19, 501, 10 },
    	{ 20, 501, 1 }
    }
    
    function main()
    	result, msg = InsertCheckAttendanceConfig(Config.EvendOnOff, Config.StartDate, Config.EndDate)
    	if not result then
    		return false, msg
    	end
    	for k, rewardtbl in pairs(Reward) do
    		result, msg = InsertCheckAttendanceReward(rewardtbl[1], rewardtbl[2], rewardtbl[3])
    		if not result then
    			return false, msg
    		end
    	end
    	return true, "success"
    end

    Attendance YML

    # This file is a part of rAthena.
    #   Copyright(C) 2019 rAthena Development Team
    #   https://rathena.org - https://github.com/rathena
    #
    # This program is free software: you can redistribute it and/or modify
    # it under the terms of the GNU General Public License as published by
    # the Free Software Foundation, either version 3 of the License, or
    # (at your option) any later version.
    #
    # This program is distributed in the hope that it will be useful,
    # but WITHOUT ANY WARRANTY; without even the implied warranty of
    # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    # GNU General Public License for more details.
    #
    # You should have received a copy of the GNU General Public License
    # along with this program. If not, see <http://www.gnu.org/licenses/>.
    #
    ###########################################################################
    # Attendance Database
    ###########################################################################
    #
    # Attendance Settings
    #
    ###########################################################################
    # - Start                   Start date.
    #   End                     End date.
    #   Rewards:                List of rewards for each day.
    #     - Day                 Reward day.
    #       ItemId              Item ID.
    ###########################################################################
    
    Header:
      Type: ATTENDANCE_DB
      Version: 1
     
    Body:
      - Start: 20200601
        End: 20201231
        Rewards:
          - Day: 1
            ItemId: 501
            Amount: 2
          - Day: 2
            ItemId: 501
            Amount: 2
          - Day: 3
            ItemId: 501
            Amount: 2
          - Day: 4
            ItemId: 501
            Amount: 2
          - Day: 5
            ItemId: 501
            Amount: 2
          - Day: 6
            ItemId: 501
            Amount: 2
          - Day: 7
            ItemId: 501
            Amount: 2
          - Day: 8
            ItemId: 501
            Amount: 2
          - Day: 9
            ItemId: 501
            Amount: 2
          - Day: 10
            ItemId: 501
            Amount: 2
          - Day: 11
            ItemId: 501
            Amount: 2
          - Day: 12
            ItemId: 501
            Amount: 2
          - Day: 13
            ItemId: 501
            Amount: 2
          - Day: 14
            ItemId: 501
            Amount: 2
          - Day: 15
            ItemId: 501
            Amount: 2
          - Day: 16
            ItemId: 501
            Amount: 2
          - Day: 17
            ItemId: 501
            Amount: 2
          - Day: 18
            ItemId: 501
            Amount: 2
          - Day: 19
            ItemId: 501
            Amount: 2
          - Day: 20
            ItemId: 501
            Amount: 2

    Battleconf checked

    Permissions checked.

    Why still giving me the currently no attendance check event?

    I used your generator from this link
    https://secretdataz.github.io/attendance-generator/

    Is not  opening!

  16. Good day, I added a shortcut in the warper to go guild dungeons, I want limit this only to the respective casttle owners.
    But my script is ignoring the castle owner condition, and everyone can warp too, I want to avoid this,
    could you lendme a hand to fix this?

    Rachgd:
    if (getcharid(2) != 0 && getcharid(2) == getcastledata("arug_cas01",1))	goto chek2;
    Go("arug_dun01",200,36);
    
    chek2:
    if (getcharid(2) != 0 && getcharid(2) == getcastledata("arug_cas02",1))	goto chek3;
    Go("arug_dun01",200,36);
    
    chek3:
    if (getcharid(2) != 0 && getcharid(2) == getcastledata("arug_cas03",1))	goto chek4;
    Go("arug_dun01",200,36);
    
    chek4:
    if (getcharid(2) != 0 && getcharid(2) == getcastledata("arug_cas04",1))	goto chek5;
    Go("arug_dun01",200,36);
    
    chek5:
    if (getcharid(2) != 0 && getcharid(2) == getcastledata("arug_cas05",1))	goto Falta;
    Go("arug_dun01",200,36);
    
    Falta:
    mes "^0000FFAgente Warp^000000";
    cutin "jpn_mid03",2;
    mes "You are not an owner of any Arunafeltz Rachel Casttle, or member of any guild who owns one.";
    next;
    mes "^0000FFAgente Warp^000000";
    mes "Conquest an Arunafeltz casttle in Rachel, or join a guild who owns one in order to access!";
    close3;

     

  17. On 5/13/2020 at 10:40 PM, iseeyou21 said:

    I don't know what I did, but I also changed itemID 1219, saved it using the "Compact" option (redirecting indexes) and it worked. I didn't need to do that layer thing, but maybe it'll be better if I did. I'll look into merging the layers.

    EDIT: I have merged the layers, and now it looks a lot better. It's true it only reads the first layer in the game, that's why the last frame of the attack doesn't show the weapon, only the swish effect. Thank you again!

    Could you explain the merge layer and the compact save option?

    I am using that Program, and I don't find such thing as COMPACT or Redirect Index option.


    I'm having problems because I edit my act and is not showing the frames in game.

    1398019504_.thumb.png.fc0d9b61af9efc6a17f9060736c3b6be.png

    Now in Game is not showing it, dunno what to do! PLEASE HELP
    1451106855_.png.703634615f35a3730642a0a95d089104.png

×
×
  • Create New...