|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Quests::Plugins & Mods Completed plugins for public use as well as modifications. |
|
|
|
12-02-2010, 10:28 PM
|
|
Administrator
|
|
Join Date: Feb 2009
Location: MN
Posts: 2,072
|
|
plugin::SendToInstance Instancing Made Easy
I've had this plugin made for quite some time, and I've been wanting to make some advanced modifications to it later. But it is still very performant and reliable as is right now. I've used this plugin for 6 months and haven't had any issues with it using all types of instances.
Usage:
plugin::SendToInstance("solo/guild/group/public", "Zone Short Name", Version, X, Y, Z, "Identifier", duration in seconds");
Code:
plugin::SendToInstance("public", "ashengate", 1, 0, 0, 0, "EXP", 604800);
The above tells the plugin that the instance type will be public and available to everyone. The instance is directed to the zone short name "ashengate", Instance Version is 1, with coordinates X - 0, Y - 0, Z - 0
EXP is simply an identifier in the qglobals once it becomes written, so looking in the database it is easier to distinguish what you are looking at. For example it will look something like this for the public instance above:
pub_EXP_ashengate
604800 seconds is pretty obvious given that the instance and qglobal will last exactly one week. When it expires the player simply needs to re-request the instance and it will boot back up again.
Requirements:
A globals.pl modification used to be able to use '$qglobals' in plugins (Thanks Trevius) You can get this by checking out from the repository in the sticky thread.
This also requires a modified group_utility.pl function that grabs the group ID for the group portion of the plugin.
THIS REQUIRES NPC TO BE QGLOBALS ENABLED
And of course the plugin, this should make things quite easier for most people trying to create instances on the fly, very very simply. Showing some of the potential of creating plugins/functions.
Code:
###############################################################################################################################
###plugin::SendToInstance("solo/guild/group/public", "Zone Short Name", Version, X, Y, Z, "Identifier", duration in seconds");
###Akkadius###
###############################################################################################################################
sub SendToInstance{
my $InstanceType = $_[0];
my $ZoneSN = $_[1];
my $InstVersion = $_[2];
my $GotoX = $_[3];
my $GotoY = $_[4];
my $GotoZ = $_[5];
my $InstanceName = $_[6];
my $InstanceDuration = $_[7];
my $qglobals = plugin::var('qglobals');
my $client = plugin::val('$client');
my $npc = plugin::val('$npc');
my $name = plugin::val('$name');
my $uguild_id = plugin::val('$uguild_id');
my $accountid = $client->AccountID();
my $accountname = $client->AccountName();
my $GETGROUP = plugin::GetGroupID();
my $space = "_";
my $ZoneSNTOID = plugin::ListZoneSNToID($ZoneSN);
%InstType = (
"solo" => "$name",
"guild" => "$uguild_id",
"group" => "$GETGROUP",
"public" => "pub",
);
my $TYPE = $InstType{$InstanceType};
###quest::say("DEBUG: InstanceType = $InstanceType Zone SN = $ZoneSN InstVer = $InstVersion InstDur = $InstanceDuration ZONEID = $ZoneSNTOID ");
if ($qglobals->{"$TYPE$space$InstanceName$space$ZoneSN"}) { ### IF THERE IS AN INSTANCE ASSIGNED!
my $InstID = $qglobals->{"$TYPE$space$InstanceName$space$ZoneSN"};
quest::AssignToInstance($InstID);
quest::MovePCInstance($ZoneSNTOID, $InstID, $GotoX, $GotoY, $GotoZ);
}
else { ### IF THERE ISN'T AN INSTANCE ASSIGNED, ASSIGN IT!
my $InstID = quest::CreateInstance("$ZoneSN", $InstVersion, $InstanceDuration);
quest::AssignToInstance($InstID);
$client->SetGlobal("$TYPE$space$InstanceName$space$ZoneSN", $InstID, 7, "S$InstanceDuration");
quest::write("InstanceLogs/$TYPE$space$InstanceName$space$ZoneSN.txt","[$timestamp] : $name has created instance $zoneln");
quest::MovePCInstance($ZoneSNTOID, $InstID, $GotoX, $GotoY, $GotoZ);
}
}
###############################################################################################################################
###Plugin::ListZoneSNToID("Zone Short Name Here")
###Converts the zone short name to ID in use for Akkadius's Instance plugin
###############################################################################################################################
sub ListZoneSNToID{
my $ZoneSN = $_[0];
my $text = plugin::val('$text');
%ZoneList = (
"qeynos" => 1,
"qeynos2" => 2,
"qrg" => 3,
"qeytoqrg" => 4,
"highpass" => 5,
"highkeep" => 6,
"freportn" => 8,
"freportw" => 9,
"freporte" => 10,
"runnyeye" => 11,
"qey2hh1" => 12,
"northkarana" => 13,
"southkarana" => 14,
"eastkarana" => 15,
"beholder" => 16,
"blackburrow" => 17,
"paw" => 18,
"rivervale" => 19,
"kithicor" => 20,
"commons" => 21,
"ecommons" => 22,
"erudnint" => 23,
"erudnext" => 24,
"nektulos" => 25,
"nektulos" => 25,
"cshome" => 26,
"lavastorm" => 27,
"nektropos" => 28,
"halas" => 29,
"everfrost" => 30,
"soldunga" => 31,
"soldungb" => 32,
"misty" => 33,
"nro" => 34,
"sro" => 35,
"befallen" => 36,
"oasis" => 37,
"tox" => 38,
"hole" => 39,
"neriaka" => 40,
"neriakb" => 41,
"neriakc" => 42,
"neriakd" => 43,
"najena" => 44,
"qcat" => 45,
"innothule" => 46,
"feerrott" => 47,
"cazicthule" => 48,
"oggok" => 49,
"rathemtn" => 50,
"lakerathe" => 51,
"grobb" => 52,
"aviak" => 53,
"gfaydark" => 54,
"akanon" => 55,
"steamfont" => 56,
"lfaydark" => 57,
"crushbone" => 58,
"mistmoore" => 59,
"kaladima" => 60,
"felwithea" => 61,
"felwitheb" => 62,
"unrest" => 63,
"kedge" => 64,
"guktop" => 65,
"gukbottom" => 66,
"kaladimb" => 67,
"butcher" => 68,
"oot" => 69,
"cauldron" => 70,
"airplane" => 71,
"fearplane" => 72,
"permafrost" => 73,
"kerraridge" => 74,
"paineel" => 75,
"hateplane" => 76,
"arena" => 77,
"fieldofbone" => 78,
"warslikswood" => 79,
"soltemple" => 80,
"droga" => 81,
"cabwest" => 82,
"swampofnohope" => 83,
"firiona" => 84,
"lakeofillomen" => 85,
"dreadlands" => 86,
"burningwood" => 87,
"kaesora" => 88,
"sebilis" => 89,
"citymist" => 90,
"skyfire" => 91,
"frontiermtns" => 92,
"overthere" => 93,
"emeraldjungle" => 94,
"trakanon" => 95,
"timorous" => 96,
"kurn" => 97,
"erudsxing" => 98,
"stonebrunt" => 100,
"warrens" => 101,
"karnor" => 102,
"chardok" => 103,
"dalnir" => 104,
"charasis" => 105,
"cabeast" => 106,
"nurga" => 107,
"veeshan" => 108,
"veksar" => 109,
"iceclad" => 110,
"frozenshadow" => 111,
"velketor" => 112,
"kael" => 113,
"skyshrine" => 114,
"thurgadina" => 115,
"eastwastes" => 116,
"cobaltscar" => 117,
"greatdivide" => 118,
"wakening" => 119,
"westwastes" => 120,
"crystal" => 121,
"necropolis" => 123,
"templeveeshan" => 124,
"sirens" => 125,
"mischiefplane" => 126,
"growthplane" => 127,
"sleeper" => 128,
"thurgadinb" => 129,
"erudsxing2" => 130,
"shadowhaven" => 150,
"bazaar" => 151,
"nexus" => 152,
"echo" => 153,
"acrylia" => 154,
"sharvahl" => 155,
"paludal" => 156,
"fungusgrove" => 157,
"vexthal" => 158,
"sseru" => 159,
"katta" => 160,
"netherbian" => 161,
"ssratemple" => 162,
"griegsend" => 163,
"thedeep" => 164,
"shadeweaver" => 165,
"hollowshade" => 166,
"grimling" => 167,
"mseru" => 168,
"letalis" => 169,
"twilight" => 170,
"thegrey" => 171,
"tenebrous" => 172,
"maiden" => 173,
"dawnshroud" => 174,
"scarlet" => 175,
"umbral" => 176,
"akheva" => 179,
"arena2" => 180,
"jaggedpine" => 181,
"nedaria" => 182,
"tutorial" => 183,
"load" => 184,
"load2" => 185,
"hateplaneb" => 186,
"shadowrest" => 187,
"tutoriala" => 188,
"tutorialb" => 189,
"clz" => 190,
"codecay" => 200,
"pojustice" => 201,
"poknowledge" => 202,
"potranquility" => 203,
"ponightmare" => 204,
"podisease" => 205,
"poinnovation" => 206,
"potorment" => 207,
"povalor" => 208,
"bothunder" => 209,
"postorms" => 210,
"hohonora" => 211,
"solrotower" => 212,
"powar" => 213,
"potactics" => 214,
"poair" => 215,
"powater" => 216,
"pofire" => 217,
"poeartha" => 218,
"potimea" => 219,
"hohonorb" => 220,
"nightmareb" => 221,
"poearthb" => 222,
"potimeb" => 223,
"gunthak" => 224,
"dulak" => 225,
"torgiran" => 226,
"nadox" => 227,
"hatesfury" => 228,
"guka" => 229,
"ruja" => 230,
"taka" => 231,
"mira" => 232,
"mmca" => 233,
"gukb" => 234,
"rujb" => 235,
"takb" => 236,
"mirb" => 237,
"mmcb" => 238,
"gukc" => 239,
"rujc" => 240,
"takc" => 241,
"mirc" => 242,
"mmcc" => 243,
"gukd" => 244,
"rujd" => 245,
"takd" => 246,
"mird" => 247,
"mmcd" => 248,
"guke" => 249,
"ruje" => 250,
"take" => 251,
"mire" => 252,
"mmce" => 253,
"gukf" => 254,
"rujf" => 255,
"takf" => 256,
"mirf" => 257,
"mmcf" => 258,
"gukg" => 259,
"rujg" => 260,
"takg" => 261,
"mirg" => 262,
"mmcg" => 263,
"gukh" => 264,
"rujh" => 265,
"takh" => 266,
"mirh" => 267,
"mmch" => 268,
"ruji" => 269,
"taki" => 270,
"miri" => 271,
"mmci" => 272,
"rujj" => 273,
"takj" => 274,
"mirj" => 275,
"mmcj" => 276,
"chardokb" => 277,
"soldungc" => 278,
"abysmal" => 279,
"natimbi" => 280,
"qinimi" => 281,
"riwwi" => 282,
"barindu" => 283,
"ferubi" => 284,
"snpool" => 285,
"snlair" => 286,
"snplant" => 287,
"sncrematory" => 288,
"tipt" => 289,
"vxed" => 290,
"yxtta" => 291,
"uqua" => 292,
"kodtaz" => 293,
"ikkinz" => 294,
"qvic" => 295,
"inktuta" => 296,
"txevu" => 297,
"tacvi" => 298,
"qvicb" => 299,
"wallofslaughter" => 300,
"bloodfields" => 301,
"draniksscar" => 302,
"causeway" => 303,
"chambersa" => 304,
"chambersb" => 305,
"chambersc" => 306,
"chambersd" => 307,
"chamberse" => 308,
"chambersf" => 309,
"provinggrounds" => 316,
"anguish" => 317,
"dranikhollowsa" => 318,
"dranikhollowsb" => 319,
"dranikhollowsc" => 320,
"dranikcatacombsa" => 328,
"dranikcatacombsb" => 329,
"dranikcatacombsc" => 330,
"draniksewersa" => 331,
"draniksewersb" => 332,
"draniksewersc" => 333,
"riftseekers" => 334,
"harbingers" => 335,
"dranik" => 336,
"broodlands" => 337,
"stillmoona" => 338,
"stillmoonb" => 339,
"thundercrest" => 340,
"delvea" => 341,
"delveb" => 342,
"thenest" => 343,
"guildlobby" => 344,
"guildhall" => 345,
"barter" => 346,
"illsalin" => 347,
"illsalina" => 348,
"illsalinb" => 349,
"illsalinc" => 350,
"dreadspire" => 351,
"drachnidhive" => 354,
"drachnidhivea" => 355,
"drachnidhiveb" => 356,
"drachnidhivec" => 357,
"westkorlach" => 358,
"westkorlacha" => 359,
"westkorlachb" => 360,
"westkorlachc" => 361,
"eastkorlach" => 362,
"eastkorlacha" => 363,
"shadowspine" => 364,
"corathus" => 365,
"corathusa" => 366,
"corathusb" => 367,
"nektulosa" => 368,
"arcstone" => 369,
"relic" => 370,
"skylance" => 371,
"devastation" => 372,
"devastationa" => 373,
"rage" => 374,
"ragea" => 375,
"takishruins" => 376,
"takishruinsa" => 377,
"elddar" => 378,
"elddara" => 379,
"theater" => 380,
"theatera" => 381,
"freeporteast" => 382,
"freeportwest" => 383,
"freeportsewers" => 384,
"freeportacademy" => 385,
"freeporttemple" => 386,
"freeportmilitia" => 387,
"freeportarena" => 388,
"freeportcityhall" => 389,
"freeporttheater" => 390,
"freeporthall" => 391,
"northro" => 392,
"southro" => 393,
"crescent" => 394,
"moors" => 395,
"stonehive" => 396,
"mesa" => 397,
"roost" => 398,
"steppes" => 399,
"icefall" => 400,
"valdeholm" => 401,
"frostcrypt" => 402,
"sunderock" => 403,
"vergalid" => 404,
"direwind" => 405,
"ashengate" => 406,
"highpasshold" => 407,
"commonlands" => 408,
"oceanoftears" => 409,
"kithforest" => 410,
"befallenb" => 411,
"highpasskeep" => 412,
"innothuleb" => 413,
"toxxulia" => 414,
"mistythicket" => 415,
"kattacastrum" => 416,
"thalassius" => 417,
"atiiki" => 418,
"zhisza" => 419,
"silyssar" => 420,
"solteris" => 421,
"barren" => 422,
"buriedsea" => 423,
"jardelshook" => 424,
"monkeyrock" => 425,
"suncrest" => 426,
"deadbone" => 427,
"blacksail" => 428,
"maidensgrave" => 429,
"redfeather" => 430,
"shipmvp" => 431,
"shipmvu" => 432,
"shippvu" => 433,
"shipuvu" => 434,
"shipmvm" => 435,
"mechanotus" => 436,
"mansion" => 437,
"steamfactory" => 438,
"shipworkshop" => 439,
"gyrospireb" => 440,
"gyrospirez" => 441,
"dragonscale" => 442,
"lopingplains" => 443,
"hillsofshade" => 444,
"bloodmoon" => 445,
"crystallos" => 446,
"guardian" => 447,
"steamfontmts" => 448,
"cryptofshade" => 449,
"dragonscaleb" => 451,
"oldfieldofbone" => 452,
"oldkaesoraa" => 453,
"oldkaesorab" => 454,
"oldkurn" => 455,
"oldkithicor" => 456,
"oldcommons" => 457,
"oldhighpass" => 458,
"thevoida" => 459,
"thevoidb" => 460,
"thevoidc" => 461,
"thevoidd" => 462,
"thevoide" => 463,
"thevoidf" => 464,
"thevoidg" => 465,
"oceangreenhills" => 466,
"oceangreenvillage" => 467,
"oldblackburrow" => 468,
"bertoxtemple" => 469,
"discord" => 470,
"discordtower" => 471,
"oldbloodfield" => 472,
"precipiceofwar" => 473,
"olddranik" => 474,
"toskirakk" => 475,
"korascian" => 476,
"rathechamber" => 477,
"brellsrest" => 480,
"underquarry" => 482,
"coolingchamber" => 483,
"arthicrex" => 485,
"foundation" => 486,
"pellucid" => 488,
"stonesnake" => 489,
"convorteum" => 491,
"brellsarena" => 492,
"feerrott2" => 700,
"thulehouse1" => 701,
"thulehouse2" => 702,
"housegarden" => 703,
"thulelibrary" => 704,
"well" => 705,
"fallen" => 706,
"morellcastle" => 707,
"somnium" => 708,
"alkabormare" => 709,
"miragulmare" => 710,
"thuledream" => 711,
"neighborhood" => 712,
"arttest" => 996,
"fhalls" => 998,
"apprentice" => 999,
);
$ZoneList{$ZoneSN};
}
return 1;
|
|
|
|
12-04-2010, 11:11 PM
|
|
Administrator
|
|
Join Date: Feb 2009
Location: MN
Posts: 2,072
|
|
For anyone looking to create instances, this simplifies the process BIG TIME. I plan on looking on making a SQL integrated way to track players and expeditions through Perl. But it will probably be a little bit before I get time for it.
|
12-05-2010, 12:23 PM
|
Dragon
|
|
Join Date: Dec 2007
Posts: 658
|
|
I just tried this out and it's working perfectly for me. Thank you for posting this. It's a big help
|
05-29-2011, 10:43 PM
|
|
Administrator
|
|
Join Date: Feb 2009
Location: MN
Posts: 2,072
|
|
Updated the first post to include House of Thule and Underfoot zones in the ListZoneSNToID plugin for the Instance plugin for anyone who grabs this bit of code not from the SVN.
|
10-26-2011, 11:39 PM
|
Sarnak
|
|
Join Date: Jan 2010
Location: USA
Posts: 51
|
|
Sorry to revive an old thread, but is there any chance someone might explain this further? I've got the part down to spawn the instance and stuff, but how do I then add options to enter/delete the instance and stuff?
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -4. The time now is 11:22 PM.
|
|
|
|
|
|
|
|
|
|
|
|
|