-
Posts
439 -
Joined
-
Last visited
-
Days Won
26
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Posts posted by pajodex
-
-
Hi,
So, I've managed to do this pseudo-code but now I'm lost without direction, maybe some one can point me to it.
OnRegister: .Player_Array[getarraysize(.Player_Array)] = getcharid(3); donpcevent strnpcinfo(0)+"::OnStart"; mes "You have successfully joined a queue."; close; OnStart: if(getarraysize(.Player_Array) < 10) end; // checks if player registered are < 10 .player_per_team = getarraysize(.Player_Array) / 2; for(.@i = 0; .@i<getarraysize(.Player_Array); .@i++) { if (getarraysize(.Team1) < .player_per_team) { .Team1[getarraysize(.Team1)] = .Player_Array[.@i]; party_create "TEAM1"; // join party team 1 } else if (getarraysize(.Team2) < .player_per_team) { .Team2[getarraysize(.Team2)] = .Player_Array[.@i]; party_create "TEAM2"; // join party team 2 } }
So here are my questions: (I put everything here to avoid multiple post but its only related to one another)
- Will this set half of the total registered players to team 1 and team 2?
- If not, please do show me a pseudocode on how to or at least a free script for me to use as basis. I tried searching but most of Party v Party are outdated already.
Solved: thanks
-
1 minute ago, Jeroen said:
Is .@size defined?
try
for(.@i=0; .@i < getarraysize(.char_id); .@i++) { if (.char_id[.@i] == getcharid(0)) deletearray .char_id[.@i],1; }
Will this part of the code ".@i"
deletearray .char_id[.@i],1;
locate the char_id of the invoking character?
-
Hi,
So I tested out a lot of things but this part seemed to be not working.
for(.@i=0; .@i < .@size; .@i++) { if (.char_id[.@i] == getcharid(0)) cleararray .char_id[.@i],0,getcharid(0); }
This supposed to delete char_id to the array.
Is there an alternative where I can retrieve the char_id list so I can remove the specific char_id listed? To explain futher:
array .char_id: .char_id[0] = 150001 .char_id[1] = 150002 .char_id[2] = 150003 .char_id[3] = 150004 I want to remove .char_id[2] from the list. using: deletearray .char_id[2],1; so results will be: .char_id[0] = 150001 .char_id[1] = 150002 .char_id[2] = 150004
I also tried this:
for(.@i=0; .@i < .@size; .@i++) { if (.char_id[.@i] == getcharid(0)) deletearray .char_id[.@i],1; }
but I figured that .@i is not = 2... I know you get what I mean xD
Thanks for anybody interested in helping.
-
8 minutes ago, Feilor said:
do you plan to release it? If yes, will be free or paid? xD
I do have a plan to release this, someday, but definitely not for free
-
1 hour ago, iubantot said:
how much does this source mod costs if someone already has it?
As per Refine UI, you can check it here.
https://github.com/rathena/rathena/pull/2494
If you don't find this useful, just ignore.
-
9 hours ago, Feilor said:
Nice work! This is a good idea to have in server, makes people be more seriously in the server, since they will have to get nice equipments to go up in ranking
Thanks! Exactly why I made this script. A lot of players just abuse of feed their main character for kills to get to the top of the rankings. But with this, he'd be doubling his effort to cheat this system.
-
PVP MMR System
This is my original work which is inspired by 'DOTA MMR System' and 'DRAGON NEST PVP System'.
This system includes the following features:
Match making rank systemSpoiler- Inspired by DOTA's (HON, LOL, etc..) MMR system which players will be match with the same rank brackets.
- Uses Glicko-2 Rating System (an improved ELO rating algorithm )
Rank title systemSpoiler- Inspired by DN Ranking Title System
- When you reach a certain MMR Points, your rank title will be change.
- Trimmed down to 5 titles and a PVP Headgear with auto change looks as rank changes.
Game modesSpoiler- Solo mode : A 3 round 1v1 match. Winning Player gets MMR points while losing player loses MMR points
-
Party mode: A 3 vs 3 match. First party to win 2 rounds out of 3.
-
Listed below are OPTIONAL modes to add in this system :
- Captain Mode: A 5v5 Party Pvp in which players has to defend the Captain (Party leader). Each kill to Captain = 1 point to team.
- Capture the Flag: A 5v5 Party Pvp in which players has to capture enemy's flags and put it in your goal area. First team to clear all the flags from the other team wins the event.
- Ancient Defense: A 5v5(configurable) Battleground mode in which players has to destroy the opponent's Ancient. But you still need to kill 2 pillars protecting the Ancient Crystals in order to make it vulnerable. Ancient is also defended by Guardian Defenders but you still need to activate them by breaking the seal located near the enemy's base.
-
Listed below are OPTIONAL modes to add in this system :
PVP Ladder Points and PVP Ladder Shop (Needs rework)Spoiler- Pvp ladder points will be gain for every x - times of wins
- The higher your rank, the higher points you will get
- These points will be used to buy items at PVP Ladder Shop
- Upon buying items, you need to be on a certain rank to purchase them.
- Ex: Menu : <Rank1 Shop>, <Rank2 Shop>, etc..
- If you are currently at Rank1, you can only purchase on <Rank1 Shop>
- if you reach Rank2, you can now purchase <Rank2 Shop> and <Rank1 Shop> ... and so on...
PVP Ladder BoardSpoiler- Like other PVP Systems, player ranks are listed here. (TOP 10)
- Here, you can view your current ranking (if your not in TOP 10), MMR Points, Rank Title, Kills, and Deaths.
- This NPC also contains the PVP Ladder Shop
Other Features:Spoiler- IP check to prevent using dual clients therefore feeding the main character.
- Penalty system - penalizes player leaving the in the middle of ladder match.
- [NEW] All PVP Ladder matches uses INSTANCED BATTLEGROUND
- WTF??WHY??
- - Personally, I think BG mode / mapflag is more balanced in terms of PVP especially the damage output. Since this is a serious PVP system, mind as well use BG to balance all the damage output of the participants.
[VIDEO] Solo MMR with Glicko-2 Rating System
Spoiler[VIDEO] Party MMR with Glicko-2 Rating System
Spoiler[VIDEO] Ancient Defense
SpoilerSpecial Mention ~
I'd personally like to thank @AnnieRuru for your help by teaching me the ways on how to make a proper battleground, instance, advance sql and optimized script.. Although I had to re-write everything AGAIN from scratch, it was all worth-it when I compared it from the first version I made. Truly the BEST and BEAST scripter / mentor I've ever known
PS: Thanks to @Secrets for releasing Glicko-2 Rating System! This greatly helps at least trim down some problems and possible abuse to the system.
Note: Hi guys, I just want to show you my current work in-progress. I'm kinda happy with it, so I decided to showcase it. No hate please! Just love-
3
-
5
-
1 minute ago, iubantot said:
you did not get the question
sorry if I didn't anyways, you can ignore it if it is not useful
-
1 hour ago, iubantot said:
OnNPCKillEvent: if (killedrid == 1751 && rand(0,1000) > 950) { // Valkyrie Randgris getmapxy(.@map$,.@x,.@y,UNITTYPE_PC); setarray .@OptID[0],RDMOPT_ATTR_TOLERACE_NOTHING,RDMOPT_RACE_TOLERACE_HUMAN; setarray .@OptVal[0],10,5; setarray .@OptParam[0],0; makeitem3 2115,1,.@map$,.@x,.@y,0,0,0,0,0,0,0,.@OptID,.@OptVal,.@OptParam; } end;
So ive seen this script on the docs, but i want to make it drop beside the location of the mob. how do i make it like that?
if (killedrid == 1751 && rand(0,1000) > 950 && strnpcinfo(4) == "map here") { // Valkyrie Randgris
or this
if (killedrid == 1751 && rand(0,1000) > 950 && strcharinfo(3) == "map here") { // Valkyrie Randgris
1st - not tested if working
2nd - check if player who killed the mob is at the map
-
50 minutes ago, Subzero said:
which part should i change sir?
Everything is pretty much explained. Please do read the comments in the codebox
-
11 hours ago, Subzero said:
hello rA,may i ask again about random reward on disguise event
this is my current script https://pastebin.com/xgfupBjE
i like to make a random reward for disguise event example reward
7539,7420,671,672,673
Make it more exciting with this... Edit it by your own needs.
It adds chance to get the reward. You can add more according to your needs.
// setarray .@reward1, "chance", item id, item amount... setarray .@reward1, 5, 7539, 10; // Item ID 7539 x 10with chance of 5% in getting, You can add more.. setarray .@reward2, 15, 7420, 5; // Item ID 7420 x 5 with chance of 15% in getting, You can add more.. setarray .@reward3, 20, 671, 1; // etc... setarray .@reward4, 25, 672, 1; setarray .@reward5, 30, 673, 1; setarray .@reward7, 100, 673, 1; sleep2 300; set .@r, rand(100); while( .@r >= getd( ".@reward"+ .@i ) ) .@i++; .@rand_index = rand( 1,( getarraysize( getd( ".@reward"+ .@i ) ) -1 )/2 ) *2 -1; getitem getd( ".@reward"+ .@i +"["+ .@rand_index +"]" ), getd( ".@reward"+ .@i +"["+ (.@rand_index +1) +"]" );
-
1
-
-
TouchDown v2.0 (Original author Alayne)
Quote// [========================================================]
// [============ Battle Arena - Touch Down ==========]
// [========================================================]
// [ Version 1 ]
// [========================================================]
// [ Original script by: Alayne ]
// [========================================================]
// [ Description: ]
// [--------------------------------------------------------]
// [ ]
// [ - The Touch Down System ]
// [========================================================]
// [ Changelog: (5 last updates) ]
// [--------------------------------------------------------]
// [ ]
// [ v0: Creation ]
// [ ]
// [ ]
// [========================================================]
// [================= Edited by: pajodex ===================]
// [ Edit changelog:
// [--------------------------------------------------------]
// [ ~ Minor bug fixes ]
// [ ~ Converted to more rA friendly script ]
// [ ~ Added mapwarp to remove all players in map ]
// [ ~ Added Easier configurations ]
// [ ~ Added auto team cloth color change ]
// [ ]
// [========================================================]// Config starts here ---------------------- $maxTDMemberCount = 8; // Max players to start (if 4v4, settings should be = 8) $TDEntryPrice = 10000; // Zeny entry fee .pointPerKill = 1; // Points gained per kill $pointPerTouchDown = 5; // Points gained per touch down .pointPerVictory = 10; // Points gained per victory .reward = 7773; // Reward ID setarray .rewardMin[0], 5, 1; // Reward amt <WIN TEA>, <LOSE TEAM> setarray .rewardCnt[0], 10, 20; // Reward count setarray $TDDuration[0], 1, 10, 15; // Game time in minutes .buffs = 1; // Buff after death ( 1 = on ; 0 = off ) .redteam_color = 412; // Red team cloth color .blueteam_color = 300; // Blue team cloth color set $delayBetweenRounds, 2; // Delays between rounds (in seconds) // Config ends here --------------------------
DISCLAIMER: I DONT OWN OR HAVE THE RIGHTS IN THIS SCRIPT. I am just a mere fan of the author and decided to fix problems I encountered when installing the script. Original Author is @Alayne, this is modified and posted with permission from author herself.
-
Submitter
-
Submitted02/28/2018
-
Category
-
Video
-
Content AuthorAlayne, pajodex
-
1
-
-
DeathMatch v2.0 (Original author Alayne)
Quote// [========================================================]
// [============ Battle Arena - Death Match ==========]
// [========================================================]
// [ Version 1 ]
// [========================================================]
// [ Original script by: Alayne ]
// [========================================================]
// [ Description: ]
// [--------------------------------------------------------]
// [ ]
// [ - The Death Match System ]
// [========================================================]
// [ Changelog: (5 last updates) ]
// [--------------------------------------------------------]
// [ ]
// [ v0: Creation ]
// [ ]
// [ ]
// [========================================================]
// [================= Edited by: pajodex ===================]
// [ Edit changelog:
// [--------------------------------------------------------]
// [ ~ Minor bug fixes ]
// [ ~ Converted to more rA friendly script ]
// [ ~ Added mapwarp to remove all players in map ]
// [ ~ Added Easier configurations ]
// [ ~ Added auto team cloth color change ]
// [ ]
// [========================================================]// Config starts here ---------------------- $maxDMMemberCount = 8; // Max players to start (if 4v4, settings should be = 8) $DMEntryPrice = 10000; // Zeny entry fee .pointPerKill = 10; // Points gained per kill .pointPerVictory = 100; // Points gained per victory .reward = 7773; // Reward ID .redteam_color = 412; // Red team cloth color .blueteam_color = 300; // Blue team cloth color setarray .rewardMin[0], 5, 1; // Reward amt <WIN TEA>, <LOSE TEAM> setarray .rewardCnt[0], 10, 20; // Reward count .buffs = 1; // Buff after death ( 1 = on ; 0 = off ) setarray $DMDuration[0], 5, 10, 15; // Game time in minutes // Config ends here --------------------------
DISCLAIMER: I DONT OWN OR HAVE THE RIGHTS IN THIS SCRIPT. I am just a mere fan of the author and decided to fix problems I encountered when installing the script. Original Author is @Alayne, this is modified and posted with permission from author herself.
-
Submitter
-
Submitted02/28/2018
-
Category
-
Video
-
Content AuthorAlayne, pajodex
-
-
Captain v2.0 (Original author Alayne)
Quote// [========================================================]
// [============ Battle Arena - Captain ==========]
// [========================================================]
// [ Version 1 ]
// [========================================================]
// [ Original script by: Alayne ]
// [========================================================]
// [ Description: ]
// [--------------------------------------------------------]
// [ ]
// [ - The Captain System ]
// [========================================================]
// [ Changelog: (5 last updates) ]
// [--------------------------------------------------------]
// [ ]
// [ v0: Creation ]
// [ ]
// [ ]
// [========================================================]
// [ ]
// [========================================================]
// [================= Edited by: pajodex ===================]
// [ Edit changelog:
// [--------------------------------------------------------]
// [ ~ Minor bug fixes ]
// [ ~ Converted to more rA friendly script ]
// [ ~ Added mapwarp to remove all players in map ]
// [ ~ Added Easier configurations ]
// [ ~ Added auto team cloth color change ]
// [ ]
// [========================================================]// Config starts here ---------------------- $maxCMemberCount = 10; // Max players to start (if 5v5, settings should be = 10) set $CEntryPrice, 0; // Zeny entry fee set .pointPerVictory, 100; // Points gained per victory .reward = 7773; // Reward ID setarray .rewardMin[0], 5, 1; // Reward amt <WIN TEA>, <LOSE TEAM> setarray .rewardCnt[0], 10, 20; // Reward count setarray $CDuration[0], 5, 10, 15; // Game time in minutes .buffs = 1; // Buff after death ( 1 = on ; 0 = off ) .redteam_color = 412; // Red team cloth color .blueteam_color = 300; // Blue team cloth color // Config ends here --------------------------
DISCLAIMER: I DONT OWN OR HAVE THE RIGHTS IN THIS SCRIPT. I am just a mere fan of the author and decided to fix problems I encountered when installing the script. Original Author is @Alayne, this is modified and posted with permission from author herself.
-
Submitter
-
Submitted02/28/2018
-
Category
-
Video
-
Content AuthorAlayne, pajodex
-
-
3 hours ago, AOCzxc said:
i arleady edit this Max_LEVEL but same also
-
My Collectibles
I just decided to put my released scripts in here organization purposes and easier access for others who might want to add them to their servers.
I will keep on releasing my scripts, both Free and Paid, whenever it is ready!
You can also visit my gitlab for access of these files: https://github.com/pajodex/ScriptCollections
So here are my script collection!!
Free Release:
------- Not mine but I modified these then released with permission from author --------
Paid Release:
I hope you enjoy these scripts! Feel free to comment / suggest / or react on whichever script. Hoping to release more of these soon! ~ Have a good day~
SHOW CASE:
-
1
-
1
-
-
13 hours ago, AOCzxc said:
yes. how do that?
go to src/map/map.h then find:
MAX_LEVEL
-
PvP Wager Match (@wager)
Quote//===== rAthena Script =======================================
//= PvP Wager Match
//===== by: =============================
//= pajodex
//===== Current Version: =====================================
//= 1.0
//===== Compatible With: =====================================
//= rAthena Project (pajodex)
//===== Description: =========================================
/*
PvP Wager Match
Instead of boring @duel, I offer you a match where players
will need to bet zeny and item. Use @wager command to use
the NPC.
All are easily configured on the settings below.
Enjoy!*/
//=====******** Note ********=================================
//= if you find bugs or problem, please do tell DM me at
//= Discord (pajodex#1328) or rAthena (pajodex)
//= open for suggestions
//===== Additional Comments: =================================
/* 1.0 - Initial release
*/
//=============================================================You can find these settings here:
OnInit: // Start of config .item_bet = 501; // Item used for bet .map$ = "force_5-1"; // Map name setarray .challenger_coord, 75, 100; // Challenger Map coord <X>, <Y> setarray .challengee_coord, 125, 100; // Challengee Map coord <X>, <Y> .min_bet = 1000; // Minimum Zeny Bet .min_bet_item = 5; // Minimum Item Bet // End of config
Incase of updates or fixes, please immediately visit my Github: https://github.com/pajodex/ScriptCollections
Feel free to use and modify as you need as long as you follow my Terms of Service. Thank you!
By downloading this file, you agree with my Terms of Service:
• You are not allowed remove my signature from any of the included files.
• You are not allowed sell, resell or in any form for money or rewards using my work.
• You are not allowed claim my work as yours.
• I have the rights to change all the terms above without prior notice.
-
Submitter
-
Submitted02/27/2018
-
Category
-
Video
-
Content Authorpajodex
-
-
pajodex's BG Queue System
Quote//===== rAthena Script =======================================
//= BG Queue System
//===== By: ==================================================
//= pajodex
//===== Current Version: =====================================
//= 1.0
//===== Compatible With: =====================================
//= rAthena Project (pajodex)
//===== Description: =========================================
/*BG Queue SystemAllows player to use command @enterbg / @exitbg to join
a battle ground without using waiting rooms. This script
follows the 'npc/custom/battleground/unofficial/` scripts
of rAthena.
Players still has to choose which side they will fight
for (Guillaume or Croix). Everything else follows the default
settings of the battleground mechanics.
See each script of battle ground mechanics to see the
other settings you desire to set.
Remember to disable the 'npc/battleground/' scripts and
use these files.Enjoy!
*/
//=====******** Note ********=================================
//= if you find bugs or problem, please do tell DM me at
//= Discord (pajodex#1328) or rAthena (pajodex)
//= open for suggestions
//===== Additional Comments: =================================
/*------------------------------------------------------------
1.0 - Initial release-------------------------------------------------------------*/
//===== Special Credits goes to for a helping hand:============
//= Hurtsky
//= Alayne
//=============================================================You can find these settings on each customized bg scripts: (bg_tierra_01.txt, bg_tierra_02.txt, etc..)
// -------- Config starts here .player_start = 5; // min players to start on each team .min_level = 80; // min level requirement .max_level = 99; // max level requirement // -------- Config ends here
Files included:
1. bg_queue_system.txt // Disclaimer: I dont own the files below, I just edited it to make it work with my main script. 2. bg_common.txt 3. bg_tierra_01.txt 4. bg_tierra_02.txt 5. bg_flavius_01.txt 6. bg_flavius_02.txt 7. bg_kvm01.txt 8. bg_kvm02.txt 9. bg_kvm03.txt
NOT SUPPORTING ANYMORE :
SpoilerI will provide support if you encounter problems in the bg_queue_system I made.For any modification in this system, I will charge some fees depending on the modification you will need. Please do leave me DM in discord so I can assist you.Q > What are the possible modifications for this?A > Just DM me for modificationsNOTE: This script follows the 'npc/custom/battleground/unofficial/` scripts of rAthena. Make sure you disable the official battleground files then make back up before replacing using the edited versions. I dont own those files (except bg_queue_system), just edited to make it work with my script.
additional notes: This script will require the use of "bg_create/bg_join". If you are using an old svn, please refer to this commit https://github.com/rathena/rathena/commit/33cda977176a743da0385f2ee190950aa07d13ea
UPDATE:
SpoilerI will stop supporting this file. I have uploaded a new version of this one... For those who have a copy of this and wishes to update to the new version, please do leave me a message in discord.
By downloading this file, you agree with my Terms of Service:
• You are not allowed remove my signature from any of the included files.
• You are not allowed sell, resell or in any form for money or rewards using my work.
• You are not allowed claim my work as yours.
• I have the rights to change all the terms above without prior notice.
-
Submitter
-
Submitted02/22/2018
-
Category
-
Video
-
Content Authorpajodex
-
-
Hi,
I hope I can get my point right, How do I move arrays? SampleArrays: .player[0], .player[1], .player[2], .player[3]
How do I remove arrays 1 and 2 then move arrays 3 and 4 to arrays 1 and 2?
New Array: .player[0] --- from prev array player [2], player[1] --- from prev array player [3]
Someone help
Thaanks a lot!
EDIT: Forgot about deletearray. Please ignore me XD
-
1 hour ago, Subzero said:
hello its it posibble to make player need killed 5 poring before using this npc
here my script please help
// Add this on line 41. If(poringkill != 5) { mes "Sorry, you have to kill 5 porings before using my services"; close; }
// Add this before OnInit line at the bottom part OnNPCKillEvent: if(poringkill == 5) end; if ( getmonsterinfo( killedrid, 1002 )) { // 1002 = poring ID poringkill++; dispbottom "You have killed "+poringkill+" Porings."; end; }
-
Update (Bug fix):
- Fix getting negative value when spamming at command (bug report by: @Cyro
Goddess_Blessing_v1_3: https://pastebin.com/qVzKDDF4
Added to my GitHub: https://github.com/pajodex/ScriptCollections/
-
On 2/23/2018 at 4:34 AM, maken06 said:
i will check it later, i think i missed something at OnInit part. Thanks for reporting!
edit: im not at home right now
UPDATE! : Link is available below while waiting for approval from moderator
- Here is a new version and fix for the said bug by @maken06
- Added Limit players to get buffed only once per activation
Goddess_Blessing_v1.1 :
https://pastebin.com/7435vtNBUpdated to v1.2
- Added @goddessreset command for hot-fix like the bug above.
- Avoid changing ".delay_tick" once goddess blessing is activated.
Goddess_Blessing_v1.2 :
https://pastebin.com/Q2ARQBb5Disregard the previous links and use this :
https://pastebin.com/RCCCaL5X- 1st link (no hotfix)
- 2nd link (all players can use @goddessreset command)
-
1
-
Goddess Blessing
Quote//===== rAthena Script =======================================
//= Goddess Offering
//===== by: =============================
//= pajodex
//===== Current Version: =====================================
//= 1.0
//===== Compatible With: =====================================
//= rAthena Project (pajodex)
//===== Description: =========================================
/*
Goddess Offering
Goddess Patron collects a certain item from players which
will serve as an offering. Once the goal is reached, Goddess
Blessing will activate for a certain time which gives off buff
to every players who clicks the Goddess Patron.This script is mainly for fun or quest. All Players will farm
for this certain item for offering to enable the goddess's blessing.
Enjoy!*/
//=====******** Note ********=================================
//= if you find bugs or problem, please do tell DM me at
//= Discord (pajodex#1328) or rAthena (pajodex)
//= open for suggestions
//===== Additional Comments: =================================
/* 1.0 - Initial release*/
//=============================================================Config Table:
function goddessblessing { // ----- Add your desired SCs below! ----- sc_start SC_FOOD_STR_CASH,8640000,10; sc_start SC_FOOD_AGI_CASH,8640000,10; sc_start SC_FOOD_DEX_CASH,8640000,10; sc_start SC_FOOD_LUK_CASH,8640000,10; sc_start SC_FOOD_INT_CASH,8640000,10; sc_start SC_FOOD_VIT_CASH,8640000,10; sc_start SC_ITEMBOOST,8640000,50; sc_start SC_EXPBOOST,8640000,50; // -------- end of adding SC --------- return; } OnInit: // ---- Configuration starts ------ .goal = 100000; // Goal to reach .delay_tick = 60 * 60 * 4; // Blessing time active : 4hrs (seconds * mins * hours) .item_offering = 501; // Item to offer //----- Configuration ends-----
Special Credits for the Pseudocode by @Secrets
By downloading this file, you agree with my Terms of Service:
• You are not allowed remove my signature from any of the included files.
• You are not allowed sell, resell or in any form for money or rewards using my work.
• You are not allowed claim my work as yours.
• I have the rights to change all the terms above without prior notice.
-
Submitter
-
Submitted02/20/2018
-
Category
-
Video
-
Content Authorpajodex
-
3
-
1
-
modifying a script
in Scripting Support
Posted
You can try mine instead.
https://github.com/pajodex/ScriptCollections/blob/master/FreebiesNPC.txt