hel

woody

New member
Messages
42
Points
0
morocc,155,99,4 script party_dungeon_warper 96,{ .@nom$ = "["+strnpcinfo(0)+"]"; mes .@nom$; mes "Hello there, I'm in charge of managing the entrance to "+.dungeon_name$+"."; next; mes .@nom$; mes "I can only give access to a party of ^0000ff"+.min_party_size+" players or more^000000."; mes "Only the ^0000ffparty leader^000000 can ask for the entrance access."; mes ""; mes "^ff0000It costs "+.amount+" "+getitemname(.item)+" to reserve an access.^000000"; next; mes .@nom$; if (.Dungeon) { //someone is in the dungeon mes "A group of "+.PlayerCount+" players has currently access to the dungeon"; mes .AlivePlayerCount+" of them are still alive"; mes "^0000ff"+.WaitingCount+"^000000 group(s) are waiting for the entrance access."; } else mes "No one is currently in the dungeon."; mes ""; mes "What do you want to do?"; getpartymember getcharid(1),1 ; getpartymember getcharid(1),2; for ( .@i = 0; .@i < $@partymembercount; .@i++ ) if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) .@count_online++; .@DungeonReserved = 0; for (.@i = 0 ; .@i < getarraysize(.PartyIDs) ; .@i++) if (getcharid(1) == .PartyIDs[.@i]) .@DungeonReserved = 1; switch(select("Enter the dungeon:Reserve access:Leave")) { next ; mes .@nom$; case 1: if (!.@DungeonReserved) { //the dugeon isn't reserved yet mes "You didn't reserve access yet."; mes "Please reserve access before entering the dungeon."; close; } else if (.PartyIDs[0] != getcharid(1)) { //dungeon reserved but in the waiting room mes "You are in the waiting list sir, you cannot enter the dungeon yet."; mes "Your position in the waiting list : ^0000ff"+callsub(S_Position,getcharid(1))+"^000000."; mes "You will be informed when you can enter the dungeon."; close; } else if (@dungeon == 0) { //player already died in the dungeon mes "You already died in the dungeon and so cannot enter it again."; close; } else if (@warped == 1) { //player warped out of the dungeon mes "You warped out of the dungeon and so cannot enter it again."; close; } @warped = 1; .PlayerCount = .@count_online; .EnteredPlayers++ ; .AlivePlayerCount++; warp .warpzone$,.warpx,.warpy; end; case 2: if (.@DungeonReserved) { //has already reserved access mes "You already reserved access to the dungeon."; mes "Your position in the waiting list : ^0000ff"+callsub (S_Position,getcharid(1))+"^000000."; if (callsub (S_Position,getcharid(1))) mes "You will be informed when you can enter the dungeon."; close; } else if (.@count_online < .min_party_size) { //not enough players online or not in a party mes "You need a party of "+.min_party_size+" players online to reserve the dungeon."; close; } else if (getpartyleader(getcharid(1),1) != getcharid(3)) { //not party leader mes "Only the party leader can reserve access to the dungeon."; close; } else if (getarraysize(.PartyIDs)) { //people already waiting setarray .PartyIDs[getarraysize(.PartyIDs)] , getcharid(1); mes "You successfully reserved the entrance."; mes "Your position in the waiting list : ^0000ff"+callsub (S_Position,getcharid(1))+"^000000."; mes "You will be informed when you can enter the dungeon."; close; } if (countitem(.item) < .amount) { mes "You don't have "+.amount+" "+getitemname(.item)+"."; mes "^ff0000It costs "+.amount+" "+getitemname(.item)+" to reserve an access.^000000"; close; } delitem .item,.amount; .Dungeon = 1; setarray .PartyIDs[0] , getcharid(1); mes "^ff0000You can now enter the dungeon.^000000"; mes "If none of the party members enter the dungeon before "+.delay+" minutes, the dungeon will be automatically closed."; initnpctimer ; .TimeDelay = 0; addrid(2,0,.PartyIDs[0]) ; @dungeon = 1 ; @warped = 0; end; case 3: end; }OnTimer300000: .TimeDelay = 1; if (.AlivePlayerCount == 0) callsub S_NextParty; end;S_Position: for (.@i = 0 ; .@i < getarraysize(.PartyIDs) ; .@i++) if (.PartyIDs[.@i] == getarg(0)) .@j = .@i; return .@j;S_CheckCount: debugmes "checkcount"; if (.AlivePlayerCount == 0 /*|| (.Delay && .AlivePlayerCount == .EnteredPlayers)*/) callsub S_NextParty; return;S_NextParty: addrid(2,0,.PartyIDs[0]); announce "Everyone is dead, you lost access to the dungeon."; deletearray .PartyIDs[0],1; if (.PartyIDs[0]) { detachrid ; addrid(2,0,.PartyIDs[0]); announce "Your party can now enter the dungeon.",bc_self; announce "Please enter it before a "+.delay+" minutes delay, else you will loose access.",bc_self; initnpctimer; .TimeDelay = 0; } end; OnPCDieEvent: getmapxy(.@map$,.@x,.@y,0); if (.@map$ == .warpzone$) @dungeon = 0 ; .AlivePlayerCount -= 1 ; warp .exitzone$,.exitx,.exity ; callsub S_CheckCount; end; OnPCLogoutEvent: //if player logs out in the dungeon, he's counted as dead getmapxy(.@map$,.@x,.@y,0); if (.@map$ == .warpzone$) @dungeon = 0 ; .AlivePlayerCount -= 1 ; callsub S_CheckCount; end;OnPCLoginEvent: //if player logs in in the dungeon, he's warped out of it getmapxy(.@map$,.@x,.@y,0); if (.@map$ == .warpzone$) warp .exitzone$,.exitx,.exity; end; OnInit://===============================set this up========================================== .dungeon_name$ = "the Fire dungeon"; .item = 671; //item required (gold coin) .amount = 1; //amount required .min_party_size = 1; //minimum amount of players needed to enter the dungeon .delay = 5; //delay after wich dungeon is closed if all the players in it are dead .warpzone$ = "mus_arena01" ; .warpx = 62 ; .warpy = 48; //entrance warp coordinates .exitzone$ = "mus_arena03" ; .exitx = 116 ; .exity = 193; //exit coordinates//=============================end of user setup====================================== mapwarp .warpzone$,.exitzone$,.exitx,.exity; .Dungeon = .PlayerCount = .AlivePlayerCount = .WaitingCount = 0; setarray .PartyIDs[0],0;}
The Npc cant click

 
Did you insert the <tab>'s ???

instead of <space bar> you should use <tab> in here:

morocc,155,99,4<tab>script<tab>party_dungeon_warper<tab>96,{
If, have already, please send a screenshot from the map log

 
Did you insert the <tab>'s ???

instead of <space bar> you should use <tab> in here:

morocc,155,99,4<tab>script<tab>party_dungeon_warper<tab>96,{
If, have already, please send a screenshot from the map log
error.png


 
Did you insert the <tab>'s ???

instead of <space bar> you should use <tab> in here:

morocc,155,99,4<tab>script<tab>party_dungeon_warper<tab>96,{
If, have already, please send a screenshot from the map log
error.png
Try this way:

Code:
morocc,155,99,4	script	party_dungeon_warper	96,{	set .@nom$,"["+strnpcinfo(0)+"]";	mes .@nom$;	mes "Hello there, I'm in charge of managing the entrance to "+.dungeon_name$+".";	next;	mes .@nom$;	mes "I can only give access to a party of ^0000ff"+.min_party_size+" players or more^000000.";	mes "Only the ^0000ffparty leader^000000 can ask for the entrance access.";	mes "";	mes "^ff0000It costs "+.amount+" "+getitemname(.item)+" to reserve an access.^000000";	next;	mes .@nom$;	if (.Dungeon) { //someone is in the dungeon		mes "A group of "+.PlayerCount+" players has currently access to the dungeon";		mes .AlivePlayerCount+" of them are still alive";		mes "^0000ff"+.WaitingCount+"^000000 group(s) are waiting for the entrance access.";	}	else mes "No one is currently in the dungeon.";	mes "";	mes "What do you want to do?";	getpartymember getcharid(1),1 ; getpartymember getcharid(1),2;	for ( .@i = 0; .@i < $@partymembercount; .@i++ )		if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) )			.@count_online++;	set .@DungeonReserved,0;	for (.@i = 0 ; .@i < getarraysize(.PartyIDs) ; .@i++)		if (getcharid(1) == .PartyIDs[.@i])			.@DungeonReserved = 1;	switch(select("Enter the dungeon:Reserve access:Leave")) { next ; mes .@nom$; 	case 1:	if (!.@DungeonReserved) { //the dugeon isn't reserved yet		mes "You didn't reserve access yet.";		mes "Please reserve access before entering the dungeon.";		close;	}	else if (.PartyIDs[0] != getcharid(1)) { //dungeon reserved but in the waiting room		mes "You are in the waiting list sir, you cannot enter the dungeon yet.";		mes "Your position in the waiting list : ^0000ff"+callsub(S_Position,getcharid(1))+"^000000.";		mes "You will be informed when you can enter the dungeon.";		close;	}	else if (@dungeon == 0) { //player already died in the dungeon		mes "You already died in the dungeon and so cannot enter it again.";		close;	}	else if (@warped == 1) { //player warped out of the dungeon		mes "You warped out of the dungeon and so cannot enter it again.";		close;	}	set @warped,1;	set .PlayerCount,.@count_online;	.EnteredPlayers++ ; .AlivePlayerCount++;	warp .warpzone$,.warpx,.warpy;	end;		case 2:	if (.@DungeonReserved) { //has already reserved access		mes "You already reserved access to the dungeon.";		mes "Your position in the waiting list : ^0000ff"+callsub (S_Position,getcharid(1))+"^000000.";		if (callsub (S_Position,getcharid(1))) mes "You will be informed when you can enter the dungeon.";		close;	}	else if (.@count_online < .min_party_size) { //not enough players online or not in a party		mes "You need a party of "+.min_party_size+" players online to reserve the dungeon.";		close;	}	else if (getpartyleader(getcharid(1),1) != getcharid(3)) { //not party leader		mes "Only the party leader can reserve access to the dungeon.";		close;	}	else if (getarraysize(.PartyIDs)) { //people already waiting		setarray .PartyIDs[getarraysize(.PartyIDs)] , getcharid(1);		mes "You successfully reserved the entrance.";		mes "Your position in the waiting list : ^0000ff"+callsub (S_Position,getcharid(1))+"^000000.";		mes "You will be informed when you can enter the dungeon.";		close;	}	if (countitem(.item) < .amount) {		mes "You don't have "+.amount+" "+getitemname(.item)+".";		mes "^ff0000It costs "+.amount+" "+getitemname(.item)+" to reserve an access.^000000";		close;	}	delitem .item,.amount;	set .Dungeon,1;	setarray .PartyIDs[0] , getcharid(1);	mes "^ff0000You can now enter the dungeon.^000000";	mes "If none of the party members enter the dungeon before "+.delay+" minutes, the dungeon will be automatically closed.";	initnpctimer ; .TimeDelay = 0;	addrid(2,0,.PartyIDs[0]) ; @dungeon = 1 ; @warped = 0;	end;		case 3:	end;	} OnTimer300000:	set .TimeDelay,1;	if (.AlivePlayerCount == 0) callsub S_NextParty;	end; S_Position:	for (.@i = 0 ; .@i < getarraysize(.PartyIDs) ; .@i++) if (.PartyIDs[.@i] == getarg(0)) .@j = .@i;	return .@j; S_CheckCount:	debugmes "checkcount";	if (.AlivePlayerCount == 0 /*|| (.Delay && .AlivePlayerCount == .EnteredPlayers)*/) callsub S_NextParty;	return; S_NextParty:	addrid(2,0,.PartyIDs[0]);	announce "Everyone is dead, you lost access to the dungeon.";	deletearray .PartyIDs[0],1;	if (.PartyIDs[0]) {		detachrid ; addrid(2,0,.PartyIDs[0]);		announce "Your party can now enter the dungeon.",bc_self;		announce "Please enter it before a "+.delay+" minutes delay, else you will loose access.",bc_self;		initnpctimer;		.TimeDelay = 0;	}	end;	OnPCDieEvent:	getmapxy(.@map$,.@x,.@y,0);	if (.@map$ == .warpzone$) @dungeon = 0 ; .AlivePlayerCount -= 1 ; warp .exitzone$,.exitx,.exity ; callsub S_CheckCount;	end;	OnPCLogoutEvent: //if player logs out in the dungeon, he's counted as dead	getmapxy(.@map$,.@x,.@y,0);	if (.@map$ == .warpzone$) @dungeon = 0 ; .AlivePlayerCount -= 1 ; callsub S_CheckCount;	end; OnPCLoginEvent: //if player logs in in the dungeon, he's warped out of it	getmapxy(.@map$,.@x,.@y,0);	if (.@map$ == .warpzone$) warp .exitzone$,.exitx,.exity;	end;	OnInit://===============================set this up==========================================	set .dungeon_name$,"the Fire dungeon";	set .item,671; //item required (gold coin)	set .amount,1; //amount required	set .min_party_size,1; //minimum amount of players needed to enter the dungeon	set .delay,5; //delay after wich dungeon is closed if all the players in it are dead	set .warpzone$,"mus_arena01" ; set .warpx,62 ; set .warpy,48; //entrance warp coordinates	.exitzone$ = "mus_arena03" ; .exitx = 116 ; .exity = 193; //exit coordinates//=============================end of user setup======================================	mapwarp .warpzone$,.exitzone$,.exitx,.exity;	.Dungeon = .PlayerCount = .AlivePlayerCount = .WaitingCount = 0;	setarray .PartyIDs[0],0;}
 
Last edited by a moderator:
Did you insert the <tab>'s ???

instead of <space bar> you should use <tab> in here:

morocc,155,99,4<tab>script<tab>party_dungeon_warper<tab>96,{
If, have already, please send a screenshot from the map log
error.png
Try this way:

morocc,155,99,4 script party_dungeon_warper 96,{ set .@nom$,"["+strnpcinfo(0)+"]"; mes .@nom$; mes "Hello there, I'm in charge of managing the entrance to "+.dungeon_name$+"."; next; mes .@nom$; mes "I can only give access to a party of ^0000ff"+.min_party_size+" players or more^000000."; mes "Only the ^0000ffparty leader^000000 can ask for the entrance access."; mes ""; mes "^ff0000It costs "+.amount+" "+getitemname(.item)+" to reserve an access.^000000"; next; mes .@nom$; if (.Dungeon) { //someone is in the dungeon mes "A group of "+.PlayerCount+" players has currently access to the dungeon"; mes .AlivePlayerCount+" of them are still alive"; mes "^0000ff"+.WaitingCount+"^000000 group(s) are waiting for the entrance access."; } else mes "No one is currently in the dungeon."; mes ""; mes "What do you want to do?"; getpartymember getcharid(1),1 ; getpartymember getcharid(1),2; for ( .@i = 0; .@i < $@partymembercount; .@i++ ) if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) .@count_online++; set .@DungeonReserved,0; for (.@i = 0 ; .@i < getarraysize(.PartyIDs) ; .@i++) if (getcharid(1) == .PartyIDs[.@i]) .@DungeonReserved = 1; switch(select("Enter the dungeon:Reserve access:Leave")) { next ; mes .@nom$; case 1: if (!.@DungeonReserved) { //the dugeon isn't reserved yet mes "You didn't reserve access yet."; mes "Please reserve access before entering the dungeon."; close; } else if (.PartyIDs[0] != getcharid(1)) { //dungeon reserved but in the waiting room mes "You are in the waiting list sir, you cannot enter the dungeon yet."; mes "Your position in the waiting list : ^0000ff"+callsub(S_Position,getcharid(1))+"^000000."; mes "You will be informed when you can enter the dungeon."; close; } else if (@dungeon == 0) { //player already died in the dungeon mes "You already died in the dungeon and so cannot enter it again."; close; } else if (@warped == 1) { //player warped out of the dungeon mes "You warped out of the dungeon and so cannot enter it again."; close; } set @warped,1; set .PlayerCount,.@count_online; .EnteredPlayers++ ; .AlivePlayerCount++; warp .warpzone$,.warpx,.warpy; end; case 2: if (.@DungeonReserved) { //has already reserved access mes "You already reserved access to the dungeon."; mes "Your position in the waiting list : ^0000ff"+callsub (S_Position,getcharid(1))+"^000000."; if (callsub (S_Position,getcharid(1))) mes "You will be informed when you can enter the dungeon."; close; } else if (.@count_online < .min_party_size) { //not enough players online or not in a party mes "You need a party of "+.min_party_size+" players online to reserve the dungeon."; close; } else if (getpartyleader(getcharid(1),1) != getcharid(3)) { //not party leader mes "Only the party leader can reserve access to the dungeon."; close; } else if (getarraysize(.PartyIDs)) { //people already waiting setarray .PartyIDs[getarraysize(.PartyIDs)] , getcharid(1); mes "You successfully reserved the entrance."; mes "Your position in the waiting list : ^0000ff"+callsub (S_Position,getcharid(1))+"^000000."; mes "You will be informed when you can enter the dungeon."; close; } if (countitem(.item) < .amount) { mes "You don't have "+.amount+" "+getitemname(.item)+"."; mes "^ff0000It costs "+.amount+" "+getitemname(.item)+" to reserve an access.^000000"; close; } delitem .item,.amount; set .Dungeon,1; setarray .PartyIDs[0] , getcharid(1); mes "^ff0000You can now enter the dungeon.^000000"; mes "If none of the party members enter the dungeon before "+.delay+" minutes, the dungeon will be automatically closed."; initnpctimer ; .TimeDelay = 0; addrid(2,0,.PartyIDs[0]) ; @dungeon = 1 ; @warped = 0; end; case 3: end; } OnTimer300000: set .TimeDelay,1; if (.AlivePlayerCount == 0) callsub S_NextParty; end; S_Position: for (.@i = 0 ; .@i < getarraysize(.PartyIDs) ; .@i++) if (.PartyIDs[.@i] == getarg(0)) .@j = .@i; return .@j; S_CheckCount: debugmes "checkcount"; if (.AlivePlayerCount == 0 /*|| (.Delay && .AlivePlayerCount == .EnteredPlayers)*/) callsub S_NextParty; return; S_NextParty: addrid(2,0,.PartyIDs[0]); announce "Everyone is dead, you lost access to the dungeon."; deletearray .PartyIDs[0],1; if (.PartyIDs[0]) { detachrid ; addrid(2,0,.PartyIDs[0]); announce "Your party can now enter the dungeon.",bc_self; announce "Please enter it before a "+.delay+" minutes delay, else you will loose access.",bc_self; initnpctimer; .TimeDelay = 0; } end; OnPCDieEvent: getmapxy(.@map$,.@x,.@y,0); if (.@map$ == .warpzone$) @dungeon = 0 ; .AlivePlayerCount -= 1 ; warp .exitzone$,.exitx,.exity ; callsub S_CheckCount; end; OnPCLogoutEvent: //if player logs out in the dungeon, he's counted as dead getmapxy(.@map$,.@x,.@y,0); if (.@map$ == .warpzone$) @dungeon = 0 ; .AlivePlayerCount -= 1 ; callsub S_CheckCount; end; OnPCLoginEvent: //if player logs in in the dungeon, he's warped out of it getmapxy(.@map$,.@x,.@y,0); if (.@map$ == .warpzone$) warp .exitzone$,.exitx,.exity; end; OnInit://===============================set this up========================================== set .dungeon_name$,"the Fire dungeon"; set .item,671; //item required (gold coin) set .amount,1; //amount required set .min_party_size,1; //minimum amount of players needed to enter the dungeon set .delay,5; //delay after wich dungeon is closed if all the players in it are dead set .warpzone$,"mus_arena01" ; set .warpx,62 ; set .warpy,48; //entrance warp coordinates .exitzone$ = "mus_arena03" ; .exitx = 116 ; .exity = 193; //exit coordinates//=============================end of user setup====================================== mapwarp .warpzone$,.exitzone$,.exitx,.exity; .Dungeon = .PlayerCount = .AlivePlayerCount = .WaitingCount = 0; setarray .PartyIDs[0],0;}
stil same , i think it's that 3ceam  im using dont support it ...

 
 stil same , i think it's that 3ceam  im using dont support it ...
I guess the error could have changed in the log!! Could you send another ss

I think I already where is it!!

 
change to

Code:
for (set .@i,0; .@i < $@partymembercount; .@i++ ){
 
Should be "for" instead "or"

Code:
for (set .@i,0; .@i < $@partymembercount; .@i++ ){
 
to define a variable in 3ceam you'll need to use set. [varname] = [value]; won't work on 3ceam. Check your script and replace all these lines with set [varname],[value];

 
Last edited by a moderator:
Hercules support the affectation with "=" char. 

I agree with RodRich, the current error is on the "for" loop.

 
Back
Top