
Bungie LLC
Joined: Dec 29, 2013
friendly neighborhood contrarian funposter
|
Posted: Mar 10, 2016 09:58 AM
Msg. 1 of 11
I know a thing or two about player list indexes, and how much emphasis they've received in the new OS scripting interfaces. There's a large realm of possibilities involving these scripts, I just need a method for creating an environment where their application would be practical.
"player_local_get" is a new command that will return the end user's own player list index.
Is it possible to have a system where the game constantly makes a check from index 1 - 15 (for the 16 potential players, excluding the host) using the command “player_data_get_integer <0-15> <kills_this_lifetime>”, where any value greater than 0 for “kills_this_lifetime” will result in the placement of a “bounty” on the player, in the form of a waypoint, or other means of identification, until the player either has their bounty revoked by the host, or is slain by another player? This is all being focused on a new system for a cops and robbers mod I've been working on lately.
|
|
|

altis94
Joined: Oct 5, 2012
Join my Discord https://discord.gg/GDVEaRD
|
Posted: Mar 10, 2016 10:21 AM
Msg. 2 of 11
I don't think it would be possible. Did you consider SAPP's lua scripting?
|
|
|

Bungie LLC
Joined: Dec 29, 2013
friendly neighborhood contrarian funposter
|
Posted: Mar 10, 2016 10:46 AM
Msg. 3 of 11
Yeah, I've looked around at some of the SAPP stuff and it's features. Only issues I have is that I don't think SAPP supports OpenSauce, or at least .yelo cache files, and that we usually play user-hosted games as opposed to dedicated, but that's only a minor issue.
I feel like Kirby might have more to say about my particular situation.
|
|
|

altis94
Joined: Oct 5, 2012
Join my Discord https://discord.gg/GDVEaRD
|
Posted: Mar 10, 2016 11:20 AM
Msg. 4 of 11
Why do you need a .yelo?
|
|
|

Bungie LLC
Joined: Dec 29, 2013
friendly neighborhood contrarian funposter
|
Posted: Mar 10, 2016 11:48 AM
Msg. 5 of 11
Well, in order for me to access the extended script features, I would need to compile with memory upgrades (.yelo).
I would rather try to achieve what I can without relying on anything other than just the game itself.
|
|
|

A Juicy Frank
Joined: Oct 28, 2013
|
Posted: Mar 10, 2016 01:54 PM
Msg. 6 of 11
It sounds like it should be possible, assuming this one idea I have works. Obviously to start there would need to be a script that the host/server runs to cycle through the players while checking if their killcount is higher than 0, and for good measure higher than the current largest killstreak. The trick then would be determining what the host and the client should do to identify who to put the navpoint on, since I don't think the navpoint commands work if the host were to try to set it for everyone.
Here's the long shot. Have the host or server use (custom_animation <unit> <animation_graph> <string> <boolean>) on a random player, and see if the individual player's machines can run (unit_is_playing_custom_animation <unit>) on each player to find the one running the animation. The idea is the host can determine what player to put the waypoint on, but can't actually place it. It instead sets a condition on that player that the other players can hopefully check, and get the other player's index relative to their machine.
Or if anything else I'd imagine using what altis and kirby did in bigass should work if you don't mind them not working through walls. Have the host attach and detach an object with its model being a giant arrow, or a particle effect using the navpoint graphic. The problem is getting the bounty identified, right? Edited by A Juicy Frank on Mar 10, 2016 at 02:44 PM
|
|
|

Bungie LLC
Joined: Dec 29, 2013
friendly neighborhood contrarian funposter
|
Posted: Mar 10, 2016 10:23 PM
Msg. 7 of 11
Coincidentally, the latter method you described was actually the general idea I had for an easy way to accomplish the waypoint business. While it may not be visible through other structures, this is actually ideal for the type of waypoint system I want to implement, and would be preferable to a waypoint that is always visible, like certain gametype objectives, assuming that option is enabled in it's respective gametype.
As far as simply having a wanted system where if a player kills another player, I imagine it would truly be as simple as having a constant check for each of the client-controlled indexes (1-15) to see if their "kills_this_lifetime" variable exceeds any value greater than 0. When they accumulate kills, a script will then attach an effect with a .particle (which would stay attached to the marker it is assigned to) on the 'head' marker of the biped that resembles a navpoint.
I actually don't see there being an issue with getting the bounty identified in this case, because it wouldn't exactly be necessary. If the player becomes wanted, they are at a much higher risk of being targeted by all other players. If they wish their wanted status to be revoked, they make a plea to the "cops" (the host or his allies), the host will ask the player for their list index via "player_local_get," and based on the index the wanted player has, the host will remove the wanted parameter, and place the player in question in jail for a period of time.
If this doesn't happen, and the player continues down their inevitable path of notoriety, they will maintain their wanted status as long as they are alive. If they are eventually slain, their "kills_this_lifetime" will revert back to 0 once they respawn, thus ending their wanted status, since kills_this_lifetime will only keep track of the player's kills since their last death.
The only issue I see is perhaps implementing a system where if players kill a wanted individual, they don't accumulate a kill on their index and become wanted themselves. I'd like to have an environment where players can kill other wanted players without penalty. Though, this would only further the complexity of the scripting required.
|
|
|

A Juicy Frank
Joined: Oct 28, 2013
|
Posted: Mar 11, 2016 03:31 AM
Msg. 8 of 11
Would it be important to have the overall scoreboard counting every kill properly, for the carnage report? I'll be honest, I'm not too familiar with the gametype or the objective. I mean most of my experience is from joining CnR clan servers on HPC yeeaars ago, but I always thought that it was just a clan tag. I'd go in guns blazing and end up getting kicked. Feel bad about it now.
If it isn't an issue then I could suggest when a player has the waypoint placed on them, have the script change that unit's collision permutation to a custom one you make that uses an unused material as well. When anyone's bullet impacts this other material no impact damage is done, but the impact effect that plays will create a damage effect equal to the bullet's damage that only hurts that material. If that player is killed by this damage, it should say they were killed by the guardians rather than the one shooting at him, and prevent that kill from being added to the shooter's lifetime kills- penalizing him.
If it is, there could be some grace count system per player that is used to deduct from their lifetime kills when determining if they have too many unforgivable kills. Kirby created something that could tell who killed what, but mentioned that it isn't too accurate as it would award assists as the kill and all. I want to say it is an OS script function that does this, but I'm not sure. Either way, a separate script would be running concurrently that would check a dead bounty's recent killer. If it returns an object, then the script would check that object against every player in the object until it finds the matching player. With the player and his index found, it would finally add 1 to whatever stores that individual player's grace count. Of course this would need to be reset on death, otherwise the guy will die, have his lifetime kills reset, and retain his 20 grace kills to go on a rampage with.
|
|
|

kirby_422
Joined: Jan 22, 2006
Apparently public enemy number 1?
|
Posted: Mar 12, 2016 05:52 PM
Msg. 9 of 11
(global object bounty_00 none) (global short bounty_00_indx -1) (global object bounty_01 none) (global short bounty_01_indx -1) (global object bounty_02 none) (global short bounty_02_indx -1) (global object bounty_03 none) (global short bounty_03_indx -1)
(global object sortingBucket none) (global short sortingBucket_indx -1) (global short plyr 0) (script static unit player (unit (player_data_get_object plyr "slave_unit"))) ;;OS player indexes, and the object_list (players) are in different orders. (script static unit loc_player (unit (player_data_get_object (player_local_get) "slave_unit"))) (script static void resort_p1 ;;Reorganize variables, and if someone dies, remove navpoint. ;;;;;;;;;;;;;;;;;;;;;;; Clear corpses (if (!= none bounty_00) (if (<= (unit_get_health (unit bounty_00)) 0) (begin (deactivate_nav_point_object (loc_player) bounty_00) (set bounty_00 none) ))) (if (!= none bounty_01) (if (<= (unit_get_health (unit bounty_01)) 0) (begin (deactivate_nav_point_object (loc_player) bounty_01) (set bounty_01 none) ))) (if (!= none bounty_02) (if (<= (unit_get_health (unit bounty_02)) 0) (begin (deactivate_nav_point_object (loc_player) bounty_02) (set bounty_02 none) ))) (if (!= none bounty_03) (if (<= (unit_get_health (unit bounty_03)) 0) (begin (deactivate_nav_point_object (loc_player) bounty_03) (set bounty_03 none) ))) ;;;;;;;;;;;;;;;;;;; Move positions up if empty slots; does three times, incase triple kill. (if (and (= bounty_00 none) (!= bounty_01 none)) (begin (set bounty_00 bounty_01) (set bounty_00_indx bounty_01_indx) (set bounty_01 none) )) (if (and (= bounty_01 none) (!= bounty_02 none)) (begin (set bounty_01 bounty_02) (set bounty_01_indx bounty_02_indx) (set bounty_02 none) )) (if (and (= bounty_02 none) (!= bounty_03 none)) (begin (set bounty_02 bounty_03) (set bounty_02_indx bounty_03_indx) (set bounty_02 none) )) ;;2 (if (and (= bounty_00 none) (!= bounty_01 none)) (begin (set bounty_00 bounty_01) (set bounty_00_indx bounty_01_indx) (set bounty_01 none) )) (if (and (= bounty_01 none) (!= bounty_02 none)) (begin (set bounty_01 bounty_02) (set bounty_01_indx bounty_02_indx) (set bounty_02 none) )) (if (and (= bounty_02 none) (!= bounty_03 none)) (begin (set bounty_02 bounty_03) (set bounty_02_indx bounty_03_indx) (set bounty_02 none) )) ;;3 (if (and (= bounty_00 none) (!= bounty_01 none)) (begin (set bounty_00 bounty_01) (set bounty_00_indx bounty_01_indx) (set bounty_01 none) )) (if (and (= bounty_01 none) (!= bounty_02 none)) (begin (set bounty_01 bounty_02) (set bounty_01_indx bounty_02_indx) (set bounty_02 none) )) (if (and (= bounty_02 none) (!= bounty_03 none)) (begin (set bounty_02 bounty_03) (set bounty_02_indx bounty_03_indx) (set bounty_02 none) ))
;;;;;;;;;;;;Pick a part 2; sort by kills, or sort by nearest ) (script static void resort_p3_indexes ;;;;;;;;;;;;Deal with bounty indexes. (cond ((= (player_data_get_object 0 "slave_unit") bounty_00) (set bounty_00_indx 0)) ((= (player_data_get_object 1 "slave_unit") bounty_00) (set bounty_00_indx 1)) ((= (player_data_get_object 2 "slave_unit") bounty_00) (set bounty_00_indx 2)) ((= (player_data_get_object 3 "slave_unit") bounty_00) (set bounty_00_indx 3)) ((= (player_data_get_object 4 "slave_unit") bounty_00) (set bounty_00_indx 4)) ((= (player_data_get_object 5 "slave_unit") bounty_00) (set bounty_00_indx 5)) ((= (player_data_get_object 6 "slave_unit") bounty_00) (set bounty_00_indx 6)) ((= (player_data_get_object 7 "slave_unit") bounty_00) (set bounty_00_indx 7)) ((= (player_data_get_object 8 "slave_unit") bounty_00) (set bounty_00_indx 8)) ((= (player_data_get_object 9 "slave_unit") bounty_00) (set bounty_00_indx 9)) ((= (player_data_get_object 10 "slave_unit") bounty_00) (set bounty_00_indx 10)) ((= (player_data_get_object 11 "slave_unit") bounty_00) (set bounty_00_indx 11)) ((= (player_data_get_object 12 "slave_unit") bounty_00) (set bounty_00_indx 12)) ((= (player_data_get_object 13 "slave_unit") bounty_00) (set bounty_00_indx 13)) ((= (player_data_get_object 14 "slave_unit") bounty_00) (set bounty_00_indx 14)) ((= (player_data_get_object 15 "slave_unit") bounty_00) (set bounty_00_indx 15)) (true (set bounty_00_indx -1)) ) (cond ((= (player_data_get_object 0 "slave_unit") bounty_01) (set bounty_01_indx 0)) ((= (player_data_get_object 1 "slave_unit") bounty_01) (set bounty_01_indx 1)) ((= (player_data_get_object 2 "slave_unit") bounty_01) (set bounty_01_indx 2)) ((= (player_data_get_object 3 "slave_unit") bounty_01) (set bounty_01_indx 3)) ((= (player_data_get_object 4 "slave_unit") bounty_01) (set bounty_01_indx 4)) ((= (player_data_get_object 5 "slave_unit") bounty_01) (set bounty_01_indx 5)) ((= (player_data_get_object 6 "slave_unit") bounty_01) (set bounty_01_indx 6)) ((= (player_data_get_object 7 "slave_unit") bounty_01) (set bounty_01_indx 7)) ((= (player_data_get_object 8 "slave_unit") bounty_01) (set bounty_01_indx 8)) ((= (player_data_get_object 9 "slave_unit") bounty_01) (set bounty_01_indx 9)) ((= (player_data_get_object 10 "slave_unit") bounty_01) (set bounty_01_indx 10)) ((= (player_data_get_object 11 "slave_unit") bounty_01) (set bounty_01_indx 11)) ((= (player_data_get_object 12 "slave_unit") bounty_01) (set bounty_01_indx 12)) ((= (player_data_get_object 13 "slave_unit") bounty_01) (set bounty_01_indx 13)) ((= (player_data_get_object 14 "slave_unit") bounty_01) (set bounty_01_indx 14)) ((= (player_data_get_object 15 "slave_unit") bounty_01) (set bounty_01_indx 15)) (true (set bounty_01_indx -1)) ) (cond ((= (player_data_get_object 0 "slave_unit") bounty_02) (set bounty_02_indx 0)) ((= (player_data_get_object 1 "slave_unit") bounty_02) (set bounty_02_indx 1)) ((= (player_data_get_object 2 "slave_unit") bounty_02) (set bounty_02_indx 2)) ((= (player_data_get_object 3 "slave_unit") bounty_02) (set bounty_02_indx 3)) ((= (player_data_get_object 4 "slave_unit") bounty_02) (set bounty_02_indx 4)) ((= (player_data_get_object 5 "slave_unit") bounty_02) (set bounty_02_indx 5)) ((= (player_data_get_object 6 "slave_unit") bounty_02) (set bounty_02_indx 6)) ((= (player_data_get_object 7 "slave_unit") bounty_02) (set bounty_02_indx 7)) ((= (player_data_get_object 8 "slave_unit") bounty_02) (set bounty_02_indx 8)) ((= (player_data_get_object 9 "slave_unit") bounty_02) (set bounty_02_indx 9)) ((= (player_data_get_object 10 "slave_unit") bounty_02) (set bounty_02_indx 10)) ((= (player_data_get_object 11 "slave_unit") bounty_02) (set bounty_02_indx 11)) ((= (player_data_get_object 12 "slave_unit") bounty_02) (set bounty_02_indx 12)) ((= (player_data_get_object 13 "slave_unit") bounty_02) (set bounty_02_indx 13)) ((= (player_data_get_object 14 "slave_unit") bounty_02) (set bounty_02_indx 14)) ((= (player_data_get_object 15 "slave_unit") bounty_02) (set bounty_02_indx 15)) (true (set bounty_02_indx -1)) ) (cond ((= (player_data_get_object 0 "slave_unit") bounty_03) (set bounty_03_indx 0)) ((= (player_data_get_object 1 "slave_unit") bounty_03) (set bounty_03_indx 1)) ((= (player_data_get_object 2 "slave_unit") bounty_03) (set bounty_03_indx 2)) ((= (player_data_get_object 3 "slave_unit") bounty_03) (set bounty_03_indx 3)) ((= (player_data_get_object 4 "slave_unit") bounty_03) (set bounty_03_indx 4)) ((= (player_data_get_object 5 "slave_unit") bounty_03) (set bounty_03_indx 5)) ((= (player_data_get_object 6 "slave_unit") bounty_03) (set bounty_03_indx 6)) ((= (player_data_get_object 7 "slave_unit") bounty_03) (set bounty_03_indx 7)) ((= (player_data_get_object 8 "slave_unit") bounty_03) (set bounty_03_indx 8)) ((= (player_data_get_object 9 "slave_unit") bounty_03) (set bounty_03_indx 9)) ((= (player_data_get_object 10 "slave_unit") bounty_03) (set bounty_03_indx 10)) ((= (player_data_get_object 11 "slave_unit") bounty_03) (set bounty_03_indx 11)) ((= (player_data_get_object 12 "slave_unit") bounty_03) (set bounty_03_indx 12)) ((= (player_data_get_object 13 "slave_unit") bounty_03) (set bounty_03_indx 13)) ((= (player_data_get_object 14 "slave_unit") bounty_03) (set bounty_03_indx 14)) ((= (player_data_get_object 15 "slave_unit") bounty_03) (set bounty_03_indx 15)) (true (set bounty_03_indx -1)) ) ) (script static void resort_p2_byKills (if (and (!= bounty_00 none) (!= bounty_01 none)) (if (> (player_data_get_integer bounty_01_indx "kills_this_lifetime") (player_data_get_integer bounty_00_indx "kills_this_lifetime")) (begin (set sortingBucket bounty_00) (set sortingBucket_indx bounty_00_indx) (set bounty_00 bounty_01) (set bounty_00_indx bounty_01_indx) (set bounty_01 sortingBucket) (set bounty_01_indx sortingBucket_indx) )) ) (if (and (!= bounty_02 none) (!= bounty_01 none)) (if (> (player_data_get_integer bounty_02_indx "kills_this_lifetime") (player_data_get_integer bounty_01_indx "kills_this_lifetime")) (begin (set sortingBucket bounty_02) (set sortingBucket_indx bounty_02_indx) (set bounty_02 bounty_01) (set bounty_02_indx bounty_01_indx) (set bounty_01 sortingBucket) (set bounty_01_indx sortingBucket_indx) )) ) (if (and (!= bounty_02 none) (!= bounty_03 none)) (if (> (player_data_get_integer bounty_03_indx "kills_this_lifetime") (player_data_get_integer bounty_02_indx "kills_this_lifetime")) (begin (set sortingBucket bounty_02) (set sortingBucket_indx bounty_02_indx) (set bounty_02 bounty_03) (set bounty_02_indx bounty_03_indx) (set bounty_01 sortingBucket) (set bounty_01_indx sortingBucket_indx) )) )
)
(script static void resort_p2_byDistance (if (and (!= bounty_00 none) (!= bounty_01 none)) (if (> (objects_distance_to_object (loc_player) (player_data_get_object bounty_00_indx "slave_unit") ) (objects_distance_to_object (loc_player) (player_data_get_object bounty_01_indx "slave_unit") ) ) (begin (set sortingBucket bounty_00) (set sortingBucket_indx bounty_00_indx) (set bounty_00 bounty_01) (set bounty_00_indx bounty_01_indx) (set bounty_01 sortingBucket) (set bounty_01_indx sortingBucket_indx) ) ) )
(if (and (!= bounty_02 none) (!= bounty_01 none)) (if (> (objects_distance_to_object (loc_player) (player_data_get_object bounty_01_indx "slave_unit") ) (objects_distance_to_object (loc_player) (player_data_get_object bounty_02_indx "slave_unit") ) ) (begin (set sortingBucket bounty_02) (set sortingBucket_indx bounty_02_indx) (set bounty_02 bounty_01) (set bounty_02_indx bounty_01_indx) (set bounty_01 sortingBucket) (set bounty_01_indx sortingBucket_indx) ) ) ) (if (and (!= bounty_02 none) (!= bounty_03 none)) (if (> (objects_distance_to_object (loc_player) (player_data_get_object bounty_02_indx "slave_unit") ) (objects_distance_to_object (loc_player) (player_data_get_object bounty_03_indx "slave_unit") ) ) (begin (set sortingBucket bounty_02) (set sortingBucket_indx bounty_02_indx) (set bounty_02 bounty_03) (set bounty_02_indx bounty_03_indx) (set bounty_03 sortingBucket) (set bounty_03_indx sortingBucket_indx) ) ) )
) (script continuous target_bad_people_TOP_KILLS ;;Use this OR the other version; not both at the same time, since they overlap globals. (if (= plyr (player_local_get)) (set plyr (+ plyr 1))) ;Never check self. (if (> plyr 15) (set plyr 0)) ;;roll around when cap hit. (if (> (player_data_get_integer plyr "kills_this_lifetime") 0) (if (not (or (= (player) bounty_00) (= (player) bounty_01) (= (player) bounty_02) (= (player) bounty_03))) (if (= none bounty_03) (begin (set bounty_03_indx plyr) (set bounty_03 (player)) (activate_nav_point_object default (loc_player) bounty_03 0.1) ) (if (> (player_data_get_integer plyr "kills_this_lifetime") (player_data_get_integer bounty_00_indx "kills_this_lifetime")) (begin (deactivate_nav_point_object (loc_player) bounty_03) (set bounty_03_indx plyr) (set bounty_03 (player)) (activate_nav_point_object default (loc_player) bounty_03 0.1) ) ) ) ) (set plyr (+ plyr 1)) (resort_p1) (resort_p2_byKills) ;;Probably should run this 3 times in a row to maximize success. (resort_p3_indexes) )
(script continuous target_bad_people_CLOSEST ;;Use this OR the other version; not both at the same time, since they overlap globals. (if (= plyr (player_local_get)) (set plyr (+ plyr 1))) ;Never check self. (if (> plyr 15) (set plyr 0)) ;;roll around when cap hit. (if (> (player_data_get_integer plyr "kills_this_lifetime") 0) (if (not (or (= (player) bounty_00) (= (player) bounty_01) (= (player) bounty_02) (= (player) bounty_03))) (if (= none bounty_03) (begin (set bounty_03_indx plyr) (set bounty_03 (player)) (activate_nav_point_object default (loc_player) bounty_03 0.1) ) (if (> (objects_distance_to_object (loc_player) bounty_03) (objects_distance_to_object (loc_player) (player))) (begin (deactivate_nav_point_object (loc_player) bounty_03) (set bounty_03_indx plyr) (set bounty_03 (player)) (activate_nav_point_object default (loc_player) bounty_03 0.1) ) ) ) ) ) (set plyr (+ plyr 1)) (resort_p1) (resort_p2_byDistance) ;;Probably should run this 3 times in a row to maximize success. (resort_p3_indexes) ) I havent tested this, and wont have time too; the fact it took this long to only write that much shows how little free time I have lol. There is a limit on how many navpoints can be active at once; I dont remember, but I think its 4, so I have it to limit it to 4; there is two options here; decide which 4 to show, based off of whose killed the most, or which killers are closest to the local player. Guess I should have done the sorting from back to from to solve issues.. but whatever, you guys can reorder them if you want. tl;dr, I have no time, test it yourself; if bugs exist, they're probably minimal. Choose one of the colored scripts at teh bottom to go with the top.
|
|
|

Bungie LLC
Joined: Dec 29, 2013
friendly neighborhood contrarian funposter
|
Posted: Mar 12, 2016 06:22 PM
Msg. 10 of 11
@Juicy Frank
Sorry for the late response. It probably would've been helpful if I had described the general idea for how the game will be played, because it isn't exactly the same as "cops and robbers" in a typical sense.
Essentially, the game is set up as a free-for-all over a large map (in this case, desertdunes). The map is populated with a multitude of towns and vehicles. Weapons are located all across the map in either of the three gunstores, or in special/hidden areas. The game is user-hosted, and the host is the player who assumes the role of the "cop" and bump possesses a special biped before other players are allowed to join the server. The game runs mostly off of a system of "honor rules." Other players can occasionally become "deputies" and assist the cop, but this is usually only one other player. All other players are "robbers," "civilians," etc., who have free roam of the map and can do whatever their hearts desire. This includes stocking up vehicles, weapons, occupying "hideouts," whatever.
Ultimately, however, the determining factor of who wins or loses the game is decided by who has the most kills, or comes out on top of other players on the scoreboard by the end of the game. This includes both the cops and the robbers: robbers win if they outperform their peers and the cops, cops win if they outperform the robbers, though cops are only allowed to kill wanted players, while robbers kill on a whim. Robbers will often times split up into player-created alliances, or "gangs", and cops are obligated to assist each other, etc.
This gametype system has always worked out fine in the past, but I think adding a scripted bounty system - something that's real, and not necessarily imaginary - would be an interesting change of pace, and would no doubt get some "oohs and ahhs" from the crowd.
@Kirby
Thank you very much for going through the trouble of drafting a script for me to use, despite how busy you are. I'll be skimming through that and making sense of it shortly. If I run into any issues or questions, I'll be sure to post them here, though I'm pretty sure I'll be able to figure out any kinks just fine.
|
|
|

A Juicy Frank
Joined: Oct 28, 2013
|
Posted: Mar 12, 2016 07:35 PM
Msg. 11 of 11
No worries. Assuming I'm comparing them correctly, it sounds a bit like those terrorist town or murder games with a bit of roleplaying thrown in. Those have been fun as hell to watch at least, so I can imagine how much better playing something like this would be especially with scripts actually keeping everything in line. Also +1 for Kirby. Appreciate the stuff you do for everyone. Quote: --- Original message by: Jesse the Enlightened Kirby is a lazy bum.
We love him because he always proves us wrong, then we know things can be done. When he shows his half-finished work, we beg and plead. When we ask him to finish what he started, He says no indeed.
I can't untangle, what he works on most. Scripting isn't my thing, that's left up to those.
If it is said it can't be done.
He'll come 'round, with solutions in tow. Careful now, you should know what you sow Edited by A Juicy Frank on Mar 12, 2016 at 07:48 PM
|
|
|
| |
|
|
 |
|