-
Content Count
403 -
Joined
-
Last visited
-
Days Won
10
Posts posted by Winterfox
-
-
I can't see any error that 4144 didn't mention before, but is it intended to use a temporary character variable?
Since anyone could reset the @dead_pts variable just by returning to char select and log back in.
-
@@mrlongshen Well, i just don't know if the bindatcmd works on disabled @commands, in case it doesn't, i provided the other script, that implements it as a own command. I am looking forward to hear how it is working out.
-
I dont know if that works, but maybe you can disable it via groups.conf for GMs below 60 and use that script:
- script mobspawn_restriction -1,{ OnInit: bindatcmd("monster", strnpcinfo(3) + "::OnAtcommand"); .maxMobsPerSpawn = 5; end; OnAtcommand: if(getgmlevel() >= 60 || getgmlevel() == 0) end; .@mobCount = (.@atcmd_parameters$[1] == "") ? 1 : atoi(.@atcmd_parameters$[1]); if(.@mobCount > .maxMobsPerSpawn) { dispbottom("You can't spawn more than " + .@mobCount + " mobs at a time."); end; } atcommand("@monster " + .@atcmd_parameters$[0] + " " + .@mobCount); end;}
I don't know if this doesn't fail when the @monster command is restricted but how it should work is, it blocks the original monster command, hooks it and starts the atcommand via script and restricts the monster spawn. If a user with a gm level below 1 or above 60 uses @monster, the script just ends itself instead of doing anything since users below gm level 1 shouldn't be able to use it and users above 60 aren't restricted so the original should work.
If that approach fails or you don't mind having a second monster command you also could use this:
- script mobspawn_restriction -1,{ OnInit: bindatcmd("monster2", strnpcinfo(3) + "::OnAtcommand"); .maxMobsPerSpawn = 5; end; OnAtcommand: if(getgmlevel() == 0) end; .@mobCount = (.@atcmd_parameters$[1] == "") ? 1 : atoi(.@atcmd_parameters$[1]); if(.@mobCount > .maxMobsPerSpawn) { dispbottom("You can't spawn more than " + .@mobCount + " mobs at a time."); end; } atcommand("@monster " + .@atcmd_parameters$[0] + " " + .@mobCount); end;}
Can be used like @monster you just have to use @monster2 it ignores everything below gm level 1. If used by any gm it works like a restricted @monster. All you have to do is to restrict the original @monster command for gms below 60 in the groups.conf.
mrlongshen reacted to this -
@@mrlongshen Didn't you see my last post? In http://pastebin.com/BU4kry6p this error shouldn't be there.
mrlongshen reacted to this -
@@Dastgir I see thanks for the info. I thought it would work like that since the server didn't output a message if i directly tried to cast it like that and put it as array key afterwards.
May i ask you something else too? I use the IDs of the mobs as array keys to have not have to loop trough the whole list when i want to find out if a certain mob is part of it.
But i noticed that hercules seems to create as much elements as the biggest key i use, so i was wondering if it is a good idea to do it like that or if it is just better to use loops instead or if there is a way to prevent hercules from creating all this overhead elements.
Nevermind, i didn't read the doc properly that getarraysize returns the biggest index and not the real count of items.
-
I still had a typo in this one. Check this version out: http://pastebin.com/BU4kry6p
It automatically adds the MVPs now.
.@mobIdListStr$ can be used to add custom monsters etc.
.@mobFilterListStr$ can be used to exclude monsters.
The syntax for both is like this.@mobIdListStr$ = "ID, ID, ID". Make sure to insert the space after every comma or it won't work properly.
The other two variables stayed the same.
-
You have to change the .@mobIds array to the ids of the mobs you want to give rewards for, in your case the MVPs. I am sorry for this inconvinience but i couldn't find a solution that can tell if a certain mob id is a mvp. :/
To adjust the amounts of cash points the player gets you can use .mobRewardPoints and pvpRewardPoints, just change it to your needs.
The MVP one will announce it on all maps, the pvp on only on the according map.
mrlongshen reacted to this -
Well... http://pastebin.com/p9V5sYf4 just replace the content of the file /npc/merchants/refine.txt with that paste.
I am not sure if there is a specific Shadow Blacksmith, but i couldn't find one.
-
To transform you can use atcommand "@disguise monstername" if you want to use that with an item, you have to put that on the onequip script part.
And to undo you can put atcommad "@undisguise" in the unequip part of the item.
Additional stats are also part of the itemscript.
You can find about how they work here:
https://github.com/HerculesWS/Hercules/blob/master/doc/script_commands.txt
What you want is the *bonus function.
NVM, zhao has the better answer, i didn't know there was a disguise command.
-
Well, the check for the equipped items just checks the slots till the lower headgear which is number 10.
The EQ you want to check for (the costumes) range from 11-14. If you want to make them refinable you will have to extend your blacksmith accordingly.
For a list of which slots you can access you can go here: https://github.com/HerculesWS/Hercules/blob/master/doc/script_commands.txt
and search for *getequipid(<equipment slot>).
To add costumes you need to modify your refiner like this:
setarray .@position$[1], "Head","Body","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3", "Costume Head Low", "Costume Head Mid", "Costume Head Top", "Costume Garment";.@menu$ = "";for(.@i = 1; .@i <= 14; ++.@i) { if(getequipisequiped(.@i)) { .@menu$ += .@position$[.@i] + "-" + "[" + getequipname(.@i) + "]"; .@equipped = 1; } .@menu$ += ":";}
You can find this refiner at: /npc/merchants/refine.txt
If you also want to be able to refine shadow gear, you just have to extend the .@positions$ array by each equip slot and add it to the runs of the for loop which is currently 14 on line 616.
But if you are lazy and want it quick just copy and replace the content of the refiner starting at line 614 with:
setarray .@position$[1], "Head","Body","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3", "Costume Head Low", "Costume Head Mid", "Costume Head Top", "Costume Head Garment", "Shadow Armor", "Shadow Weapon", "Shadow Shield", "Shadow Shoes", "Shadow Accessory Right", "Shadow Accessory Left";.@menu$ = "";for(.@i = 1; .@i <= getarraysize(.@position$); ++.@i) { if(getequipisequiped(.@i)) { .@menu$ += .@position$[.@i] + "-" + "[" + getequipname(.@i) + "]"; .@equipped = 1; } .@menu$ += ":";}
-
Isn't thast just a normal refiner that gives you a second chance if the upgrade fails? Atleast i didn't see anything about shadow gear.
-
Here is how i would do it, but be aware i didn't test it. So possibly have to fix slight mistakes. But you should be able to abstract what you need from it.
prontera,150,150,5 script Sample 89,{ // if the random card id was never set or the timer exceeds 5 minutes, create a new random card id and reinit the timer. if(.randCID == 0 || ((getnpctimer(0) / 1000) / 60) >= 5) { .randCID = rand(1,494); initnpctimer; } npctalk "I'm missing a " + .allCNames$[.randCID] + ". I can offer " + .allCPoints[.randCID] + " premium points in return."; end; // Setup a internal database of all the cards. OnInit: .@[member=start] = 0; .@end = 128; // Fetch all cards from the database with workaround for the 128 entry limit. for(.@i = 1; .@i <= 4; .@i++) { if(.@i > 1) { .@[member=start] = (.@i - 1) * 128; .@end = .@i * 128; } .@cardQuery = query_sql("SELECT `cards`,`card_name`,`points`,`id` FROM `cards`",.@ccards,.@cnames$,.@cpoints,.@cids) + " LIMIT " + .@[member=start] + "," + .@end); for(.@y = 0; .@y < getarraysize(.@ccards); .@y++) { .allCards[.@cids[.@y]] = .@ccards[.@y]; .allCNames$[.@cids[.@y]] = .@cnames$[.@y]; .allCPoints[.@cids[.@y]] = .@cpoints[.@y]; } } end;}
-
You could checkout the script documentation first before you ask since it is well documented. You can find it here: https://github.com/HerculesWS/Hercules/blob/master/doc/script_commands.txt
The answer you are searching for is:
*query_sql("your MySQL query"{, <array variable>{, <array variable>{, ...}}});*query_logsql("your MySQL query"{, <array variable>{, <array variable>{, ...}}});Executes an SQL query. A 'select' query can fill array variables with upto 128 rows of values, and will return the number of rows (the array size).Note that 'query_sql' runs on the main database while 'query_logsql' runson the log database.Example:.@nb = query_sql("select name,fame from `char` ORDER BY fame DESC LIMIT 5", .@name$, .@fame);mes "Hall Of Fame: TOP5";mes "1."+.@name$[0]+"("+.@fame[0]+")"; // Will return a person with the biggest fame value.mes "2."+.@name$[1]+"("+.@fame[1]+")";mes "3."+.@name$[2]+"("+.@fame[2]+")";mes "4."+.@name$[3]+"("+.@fame[3]+")";mes "5."+.@name$[4]+"("+.@fame[4]+")"; -
Hi everyone,
is there a way to dynamically influence mob stats either on spawn or afterwards?
The only way i can think of would be to create copies of the monster with different stats and put a switch in front of the spawn command to get the most fitting one. But thats not a road i'd like to take so i am searching for a different alternative.
I tried to check how the guardians in WoE do it, since their stats should be raisable based on guild investment, but i couldn't figure out if and where they are influenced.
Any suggestions are welcome and thanks in advance.
Paypal scam problem
in Off Topic
Posted · Edited by Winterfox
It looks kind of bad for you since the only thing that would protect you from that scam is the ebay seller protection. This isn't eligible for seller protection since it falls under digital content and service.
As stated on https://www.paypal.com/webapps/mpp/ua/useragreement-full?country.x=US&locale.x=en_US#11:
I would try it anyway, but i wouldn't hold my hopes up high and would keep that in mind for the future.