Jump to content

Technoken

Members
  • Posts

    505
  • Joined

  • Days Won

    8

Posts posted by Technoken

  1. Can you give a screenshot of your console errors?

    Have you also set the username and password on your database?

    And try to use localhost ip on these:

    char_athena.conf

    // Login Server IP
    // The character server connects to the login server using this IP address.
    // NOTE: This is useful when you are running behind a firewall or are on
    // a machine with multiple interfaces.
    login_ip: 127.0.0.1

    map_athena.conf

    // Character Server IP
    // The map server connects to the character server using this IP address.
    // NOTE: This is useful when you are running behind a firewall or are on
    // a machine with multiple interfaces.
    char_ip: 127.0.0.1

    subnet_athena.conf

    subnet: 255.0.0.0:127.0.0.1:127.0.0.1

     

  2. Quote

    MSVS 2008, 2010, and 2012 have been removed because their support from Microsoft has ended. We are sorry for the inconvenience and we understand these tools are fairly large for people to have to acquire again but this refactor has laid a foundation for the future development of rAthena!

     

    There's no rathena10.sln bc it was removed from this update

    But you can check this guide to compile your trunk 

     

  3. On login_athena.conf

    // Can you use _M/_F to make new accounts on the server?
    new_account: yes

    just change it to no

    33 minutes ago, celeron0134 said:

    how can i connect my website to my sql database for registration purposes

    You need to install your fluxcp and allow access to your server database.
    There are lot's of guides on the forum

     

     

  4. You can do it via sql query

     query_sql( "UPDATE `guild_member` SET `position` = "+.@position+" WHERE `char_id` = "+.@char_id+" LIMIT 1" );

    Hmm. But why would you use an npc based while guild leaders can change the guild member positions via guild tab(alt + g) ?

  5. You can try to add callsub under the script after creating instance.

    case 1:
    				if( instance_create(.@md_name$) < 0 ) {
    					mes "Party Name: "+ getpartyname(.@party_id);
    					mes "Party Leader: "+strcharinfo(0);
    					mes "^0000ff"+.@md_name$+" ^000000- Reservation Failed!";
    					close;
    				}
    				//mes "^0000ff"+.@md_name$+"^000000 - Try to reserve";
    				//mes "After making a reservation, you have to talk to NPC behind and select the menu 'Enter the Dungeon' to enter the dungeon.";
    				//close;
    				callsub L_Enter,0,1,1;
    				end;

     

    • Upvote 1
  6. Just make sure that when you warped the whole party, all of them should go thru 'setquest' and set the variables that is needed when the player entered the instance.

    I think you should also use "instance_enter" instead of "warp" to make sure they are on the right instance map.

    I recently made an instance that warps the whole party when the party leader enter the instance for the first time. I use the script from endless tower and modified the warping part.

    This one was the script. PS: I removed some checking part bc it was long so i wont recommend just copy pasting this one. Just wanted to give u an idea how warping was made

    	.@party_id = getcharid(1);
    	.@md_name$ = "Dragons Dungeon";
    	.@dragon_timer = checkquest(25000,PLAYTIME); // Cooldown 24 Hours
    	.@dragon_timer2 = checkquest(25001,PLAYTIME); // Time Limit 3 hours
    	if( !instance_check_party(.@party_id,2) ) {
    		mes "Make or join a party with more than 1 member and try again.";
    		close;
    	}
    	switch( .@dragon_timer ) {
    	case -1:
    		if( getcharid(0) == getpartyleader(.@party_id,2) ) {
    			mes "Confirmed the party has been made. Would you like to reserve entrance to the Dragons Dungeon?";
    			next;
    			switch( select("Generate dungeon "+.@md_name$+":Enter the dungeon:Cancel") ) {
    			case 1:
    				if( instance_create(.@md_name$) < 0 ) {
    					mes "Party Name: "+ getpartyname(.@party_id);
    					mes "Party Leader: "+strcharinfo(0);
    					mes "^0000ff"+.@md_name$+" ^000000- Reservation Failed!";
    					close;
    				}
    				mes "^0000ff"+.@md_name$+"^000000 - Try to reserve";
    				mes "After making a reservation, you have to talk to NPC behind and select the menu 'Enter the Dungeon' to enter the dungeon.";
    				close;
    			case 2:
    				callsub L_Enter,0,1,1;
    			case 3:
    				close;
    			}
    		}
    		switch( select("Enter the "+.@md_name$+":Cancel") ) {
    		case 1:
    				callsub L_Enter,1,1,0;
    		case 2:
    			end;
    		}
    	case 0:
    	case 1:
    		if( .@dragon_timer2 < 2 && getcharid(1) == dragonq_partyid ) {
    			mes "If you have the dungeon generated already, you can enter it. ";
    			next;
    			switch(select("Enter the "+.@md_name$+":Cancel")) {
    			case 1:
    				callsub L_Enter,0,0,0;
    			case 2:
    				close;
    			}
    		} else {
    			.@dun_lim_time = dragonq_timer + 86400; // 24 hours
    			.@dun_cur_time = gettimetick(2);
    			.@dun_ent_t = (.@dun_lim_time - .@dun_cur_time);
    			.@dun_h = (.@dun_ent_t / 3600);
    			.@dun_m = (.@dun_ent_t - (.@dun_h * 3600)) / 60;
    			.@dun_s = .@dun_ent_t - ((.@dun_h * 3600) + (.@dun_m * 60));
    			mes "You cannot enter the Dragons Dungeon right now, " + .@dun_h + "hours " + .@dun_m + "minutes " + .@dun_s + "seconds left to enter the dungeon.";
    			close;
    		}
    	case 2:
    		dragonq_timer = 0;
    		erasequest 25000;
    		erasequest 25001;
    		mes "^0000ffThe records related to the Dragons Dungeon have been removed. You can generate and enter the Dragons Dungeon again.^000000";
    		close;
    	}
    
    L_Enter:
    	switch( instance_enter("Dragons Dungeon") ) {
    	case IE_OTHER:
    		mes "An unknown error has occurred.";
    		close;
    	case IE_NOINSTANCE:
    		mes "The Dragons Dungeon does not exist.";
    		mes "The party leader did not generate the dungeon yet.";
    		close;
    	case IE_NOMEMBER:
    		mes "You can enter the dungeon after making the party.";
    		close;
    	case IE_OK:
    		if( getarg(2) ) {
    			.@myRID = getcharid(3);
    			.@myPID	= getcharid(1);
    			mapannounce "prontera", "The party, "+ getpartyname( .@myPID ) +", is entering the Dragons Dungeon.",bc_map,"0x00ff99",FW_NORMAL,12;
    			addrid(2), 0, .@myPID;
    			if( getcharid(3) != .@myRID ) {
    				if( instance_enter("Dragons Dungeon") == IE_OK ) {
    					dragonq_timer = gettimetick(2);
    					dragonq_partyid = getcharid(1);
    					setquest 25000;
    					setquest 25001;
    					end;
    				} else {
    					mes "An unknown error has occurred.";
    					close;
    				}
    			}
    		} else
    			mapannounce "prontera", strcharinfo(0) +" of the party, "+ getpartyname( getcharid(1) ) +", is entering the Dragons Dungeon.",bc_map,"0x00ff99",FW_NORMAL,12;
    		if( getarg(1) ) {
    			dragonq_timer = gettimetick(2);
    			dragonq_partyid = getcharid(1);
    			setquest 25000;
    			setquest 25001;
    		}
    		if( getarg(0) == 0 ) close;
    		else end;
    	}

     

    This one was the warping part

    case IE_OK:
    		if( getarg(2) ) {
    			.@myRID = getcharid(3);
    			.@myPID	= getcharid(1);
    			mapannounce "prontera", "The party, "+ getpartyname( .@myPID ) +", is entering the Dragons Dungeon.",bc_map,"0x00ff99",FW_NORMAL,12;
    			addrid(2), 0, .@myPID;
    			if( getcharid(3) != .@myRID ) {
    				if( instance_enter("Dragons Dungeon") == IE_OK ) {
    					dragonq_timer = gettimetick(2);
    					dragonq_partyid = getcharid(1);
    					setquest 25000;
    					setquest 25001;
    					end;
    				} else {
    					mes "An unknown error has occurred.";
    					close;
    				}
    			}
    		}

     

    • Upvote 1
  7. Try

    prontera,156,180,3	script	Disguise Event	795,{
    
    	// Currently set to run every two hours.
    	// To change times, edit the OnClock labels below.
    
    	set .@GMLevel,99;	// GM level required to access NPC.
    	set .@n$,"[^0000FFDisguise NPC^000000]";
    
    	if (getgmlevel()>=.@GMLevel) {
    		mes .@n$;
    		mes "Select an option.";
    		next;
    		switch(select("Turn ON/OFF Event:Event Settings")) {
    		case 1:
    			mes .@n$;
    			if (.EventON) {
    				mes "The Event is currently: [^0000FFON^000000]";
    				mes "Would you like to turn it OFF?";
    			} else {
    				mes "The Event is currently: [^FF0000OFF^000000]";
    				mes "Would you like to turn it ON?";
    			}
    			if(select("Yes:No")==2) close;
    			if (.EventON) {
    				set .EventON,0; set .Timer,0;
    				setnpctimer 0; stopnpctimer;
    				announce "A GM has decided to turn the Disguise Event off. As a result no further prizes will be given.",0,0x00CCFF;
    				deletepset 1;
    				setnpcdisplay "Disguise Event",795;
    				close;
    			}
    			set .EventON,1; set .Timer,1; setnpctimer 0; initnpctimer;
    			set .ResetCounter,.ResetCounter+1;
    			announce "The Disguise Event will begin in 3 minutes.",0,0x00CCFF;
    			announce "The Event is being held at the Middle Of prontera ",0,0x00CCFF;
    			close;
    		case 2:
    			mes .@n$;
    			mes "Pick a setting to modify.";
    			next;
    			switch(select("Monster Display:Number of Rounds:Prize Settings")) {
    			case 1:
    				setarray .@r$[0],"Disguise as all monsters.","Disguise as MVPs only.";
    				mes .@n$;
    				mes "Choose a disguise rule.";
    				next;
    				set .Rule, select(implode(.@r$,":"));
    				mes .@n$;
    				mes "The Disguise Rule has been set:";
    				mes "  > ^0055FF"+.@r$[.Rule-1]+"^000000";
    				close;
    			case 2:
    				mes .@n$;
    				mes "Input the number of rounds you want the event to last.";
    				mes "Current number: [^0000FF"+.Rounds+"^000000]";
    				next;
    				input .@Rounds;
    				set .Rounds,.@Rounds;
    				mes .@n$;
    				mes "The number of rounds has been changed to "+.Rounds+".";
    				close;
    			case 3:
    				mes .@n$;
    				mes "Input the Item ID of the prize given each round.";
    				mes "Current item: [^0000FF"+getitemname(.Prize)+"^000000] (ID #"+.Prize+")";
    				next;
    				input .@Prize;
    				mes .@n$;
    				if (getitemname(.@Prize)=="" || getitemname(.@Prize)=="null") {
    					mes "That item does not exist. Please try again.";
    					close;
    				}
    				set .Prize,.@Prize;
    				mes "Input the amount to be given.";
    				next;
    				input .@amount;
    				mes .@n$;
    				if (.@amount<=0 || .@amount>=10000) {
    					mes "That amount is invalid. Using default ammount of 1.";
    					set .@amount,1;
    					next;
    					mes .@n$;
    				}
    				set .PrizeAmt,.@amount;
    				mes "The Prize has been changed successfully.";
    				mes "Prize: "+.PrizeAmt+"x [^0000FF"+getitemname(.Prize)+"^000000]";
    				close;
    			}
    		}
    	}
    	if (.EventON) end;
    	mes .@n$;
    	mes "Welcome.";
    	mes "How may I be of assistance?";
    	if(select("Information:Nothing, just passing through.")==2) close;
    	next;
    	mes .@n$;
    	mes "This event is quite simple.";
    	mes "At the start of the event, I will";
    	mes "disguise myself as a random";
    	mes "monster. You have to shout";
    	mes "that monter's name out loud.";
    	next;
    	mes "If you are correct, you will receive";
    	mes "a prize. If not, keep trying!";
    	mes "That's all that there is to this event.";
    	close;
    
    OnInit:
    	set .EventON,0;
    	set .Wait,0;
    	set .Winner,0;
    	set .ResetCounter,0;
    	set .Rounds,10;
    	set .Prize,675;
    	set .PrizeAmt,1;
    	set .Rule,1;
    	setarray .MVP[0],1038,1039,1046,1059,1086,1087,1112,1115,1147,1150,1157,1159,1190,1251,1252,1272,1312,1373,
    	                  1389,1399,1418,1492,1502,1511,1583,1623,1630,1646,1647,1648,1649,1650,1651,1658,1685,1688,
    				   1708,1719,1734,1751,1768,1779,1785,1802,1832,1871,1874,1885,1917,1980,2022,2068,2087,2131,
    				   2156,2165;
    	set .BlackList$, "1003,1006,1017,1021,1022,1027,1043,1075,1136,1137,1168," + 
    	    "1171,1172,1173,1181,1187,1210,1217,1218,1222,1223,1224,1225,1226,1227,1228," + 
    	    "1233,1284,1407,1411,1414,1495,1501,1900,1996,2000,2001,2002,2003,2004," + 
    	    "2005,2006,2007,2011,2012,2025,2028,2029,2030,2031,2032,2033,2034,2035," + 
    	    "2036,2037,2038,2039,2040,2041,2042,2043,2044,2045,2046,2047,2048,2049," + 
    	    "2050,2051,2052,2053,2054,2055,2056,2057,2058,2059,2060,2061,2062,2063," + 
    	    "2064,2065,2066,2067,2075,2076,2077,2078,2079,2080,2081,2083,2084,2085," + 
    	    "2086,2087,2088,2089,2090,2091,2092,2093,2094,2095,2096,2097,2098,2099," + 
    	    "2100,2101,2012,2103,2104,2105,2106,2107,2108,2109,2110,2111,2112,2113," + 
    	    "2114,2115,2116,2117,2118,2119,2120,2121,2123,2124,2125,1496,";
    	disablenpc "Disguise Event";
    	end;
    OnClock0000:
    OnClock0400:
    OnClock0800:
    OnClock1200:
    OnClock1600:
    OnClock2000:
    	enablenpc "Disguise Event";
    	set .ResetCounter,.ResetCounter+1;
    	set .EventON,1;
    	set .Timer,1;
    	set .Wait,1;
    	announce "The Disguise Event will begin in 3 minutes.",0,0x00CCFF;
    	announce "The Event is being held in Prontera Middle.",0,0x00CCFF;
    	setnpctimer 0;
    	initnpctimer;
    	end;
    OnTimer10000:
    	if (.Timer || .Change) end;
    	set .Wait,0;
    	goto iDisguise;
    	end;
    OnTimer30000:
    	if (.Timer) end;
    	set .Change,0;
    	setnpcdisplay "Disguise Event",795;
    	npctalk "You took too long to guess what I was. Please wait 10 seconds while I disguise again.";
    	specialeffect 725;
    	set $MonsterName$,"";
    	deletepset 1;
    	stopnpctimer;
    	setnpctimer 0;
    	initnpctimer;
    	end;
    OnTimer60000:
    	if (.Timer!=1) end;
    	announce "The Disguise Event will begin in 2 minutes.",0,0x00CCFF;
    	announce "The Event is being held in Prontera Middle",0,0x00CCFF;
    	end;
    OnTimer120000:
    	if (.Timer!=1) end;
    	announce "The Disguise Event will begin 1 minute.",0,0x00CCFF;
    	announce "The Event is being held in Prontera Middle",0,0x00CCFF;
    	end;
    OnTimer180000:
    	if (.Timer!=1) end;
    	announce "The Disguise Event has begun!",0,0x00CCFF;
    	announce "The Event is being held in Prontera Middle",0,0x00CCFF;
    	set .Timer,0; stopnpctimer;
    	setnpctimer 0; initnpctimer;
    iDisguise:
    	if (.Rule==1) {
    		set .Winner,0;
    		set .Monster,1000+rand(1,995);
    		if (compare(","+.BlackList$+"," , ","+.Monster+",")) goto iDisguise;
    		if (.Monster==.LastMonster) goto iDisguise;
    		set .LastMonster,.Monster;
    		set $MonsterName$,getmonsterinfo(.Monster,0);
    	}
    	if (.Rule==2) {
    		set .Winner,0;
    		set .Monster,rand(49);
    		set $MonsterName$,getmonsterinfo(.MVP[.Monster],0);
    	}
    	deletepset 1;
    	defpattern 1,"([^:]+):.\\s*"+$MonsterName$+".*", "iCorrect";
    	activatepset 1;
    	if (.Rule==1) setnpcdisplay "Disguise Event",.Monster;
    	if (.Rule==2) setnpcdisplay "Disguise Event",.MVP[.Monster];
    	set .Change,1;
    	setnpctimer 0;
    	end;
    iCorrect:
    	if (.Winner) {
    		dispbottom "Someone has already won this round.";
    		end;
    	}
    	set .Winner,1;
    	set .RoundCount,.RoundCount+1;
    	deletepset 1;
    	activatepset 1;
    	getitem .Prize,.PrizeAmt;
    	announce strcharinfo(0)+" is correct! I was disguised as: "+$MonsterName$+"",0,0x00CCFF;
    	if (.RoundCount>=.Rounds) {
    		setnpcdisplay "Disguise Event",795;
    		set .RoundCount,0; set .Change,0; set .EventON,0;
    		setnpctimer 0; stopnpctimer;
    		npctalk "Thank you all for playing. That was the last round of the Disguise Event. Come play again later.";
    		sleep 2000;
    		disablenpc "Disguise Event";
    		end;
    	}
    	setnpcdisplay "Disguise Event",795;
    	set .Change,0;
    	setnpctimer 0;
    	end;
    }

     

    The problem though, GM's won't be able to access the configuration since the npc will only be enabled during it was started.

    • Upvote 1
×
×
  • Create New...