Advertisement
Guest User

Untitled

a guest
Oct 26th, 2019
2,032
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 23.12 KB | None | 0 0
  1. 🐇🐇🐇Today at 12:32 AM
  2. @master2015hp this individual is 99% certain to have just simply cut and pasted code from my Victory Aftermath Level Up plugin and just pasted it on Olivia's
  3. https://master2015hp.itch.io/olivia-victory-addon
  4. itch.io
  5. Olivia Victory UI's addon _ Extra Actor Info window| Rpgmaker Plug...
  6. add extra windows to give detail info about Levelup Actors
  7.  
  8. https://img.itch.zone/aW1hZ2UvNDY3NjY4LzIzODg0MTAuanBn/original/nxwpbO.jpg
  9.  
  10. And they're reselling it
  11. https://master2015hp.itch.io/addon-yepgridfreedoodads this one is also apparently just key bindings attached to code I've made that they're also reselling
  12. itch.io
  13. addon for YEP Grid Free Doodad | Rpgmaker Plugin by Isabella Ava
  14. make it more convenient to work with Yanfly Grid Free Doodad
  15.  
  16. I'm going to suggest you guys get rid of this person from the server
  17.  
  18. Resi ♥Today at 12:38 AM
  19. Is anything going to be done about him essentially selling your code?
  20.  
  21. 🐇🐇🐇Today at 12:41 AM
  22. Already reporting them on itch.io
  23. Going to get them taken down
  24. @master2015hp banned from the Portal server for theft and resell
  25. I suggest you guys do the same
  26.  
  27. Czar ZarslaToday at 12:51 AM
  28. Doesn't this break MV EULA:
  29. https://master2015hp.itch.io/mv-database-wizard
  30. I believe it does but I may be wrong
  31. itch.io
  32. MV Database Wizard by Isabella Ava
  33. simple software for modifying RPGMV 's Classes database
  34.  
  35.  
  36. 🐇🐇🐇Today at 12:59 AM
  37. I still see them on this server
  38.  
  39. Resi ♥Today at 1:58 AM
  40. @🐇🐇🐇 It's taken care of.
  41.  
  42. BakuToday at 1:58 AM
  43. Just one second before I could do it xD
  44. I just woke up.
  45.  
  46. SRDudeToday at 2:43 AM
  47. I'm a little confused, so I hope you don't mind me asking for clarification, but what aspect of the plugin is so damning that is must be plagiarism? While both look similar, surely it could just be the design that is being used, not the original YEP Aftermath Levelup code itself? @🐇🐇🐇
  48. As for the second plugin, I mean, how do we know it isn't just an extension plugin that only uses original code? It seems to make it very clear that it relies upon YEP Grid Free Doodads, so I can't imagine it does anything besides perform runtime modifications?
  49.  
  50. BakuToday at 3:41 AM
  51. :Thinking: yea I just looked into it now, do we have more proof that the code is stolen?
  52.  
  53. BakuToday at 3:49 AM
  54. Actually... I shouldn't get involved in this. I don't want trouble.
  55.  
  56. SRDudeToday at 4:03 AM
  57. Welp, I really, REALLY hate to do this, but I have to give my two cents. I think what just happened here was really not OK.
  58.  
  59. While this person undoubtedly based their plugin's design off of Yanfly's, there is no evidence that any code was taken. Yanfly's article refers to a "distict" way the numbers as displayed, but the way the numbers are displayed is a very typical method used in RPGs and RPG Maker plugins. Just look at MogHunter's Battle Results, while not the same design, the numbers' structure is the same. It's the same as most equipment plugins and vanilla RM equipment. It's not that bizarre.
  60.  
  61. Another uncomfortable part about Yanfly's article is the second message of the person. It was very clear the second I read it they were referring to the core RPG Maker MV API (drawRect from rpg_core.js is what they're almost certainly referring to). Yet this seems to have been misinterpreted as them using Yanfly's API? Despite the uncertainty, this is treated as solid evidence of their plagiarism.
  62.  
  63. I went into the RPG Maker Portal, I read the entire context. There wasn't much. Irina immediately labeled them as a plagiarist, and Yanfly stated that they reported them to itch.io. This was before they even came into defend themselves. When they arrived, they were already treated like they had done something wrong. In a matter of a couple confused messages, they were banned. I will admit, they should have provided the source code to Yanfly in a DM asap, but it's very clear that there was a lot of confusion there, and English is not their strongest suit. While you can look at their actions from the perspective of someone guilty and it lines up, I think an argument can be made that their actions also line up with an innocent person's. If they have done nothing wrong, why should they have to go through so much effort to defend themselves? I'm sure they were thinking something along those lines.
  64. .
  65. Of course, I wouldn't be writing this message if this was all. But it was enough to push me to go and purchase the plugin myself to be 100% certain. After comparing this plugin and Yanfly's Level UP Aftermath, it is pretty clear they did not plagiarize from it (I'm sure it's still possible they could've plagiarized some other plugin, but that's the only one I compared). Their plugin takes a very PIXI/Object Oriented approach to the design, it definitely feels like a completely unique take on a similar design. There is clearly a lot more animation, and plenty of twists on the design itself. I will link after this message for people to compare themselves.
  66.  
  67. If Yanfly wants to take the perspective of "you shouldn't sell an extension plugin without permission" that is one thing, but this person is clearly being attacked for plagiarism. That's a serious accusation, and I think way more should have been put into the investigation.
  68. .
  69. Yanfly, I love you, I really do, but I also think some of your behavior was really unacceptable. You used your authority to immediately destroy this person everywhere. While I understand that it is justified if their crime was real, it happened so fast, without any second thought.
  70.  
  71. Furthermore, pressuring the mods on here to immediately ban this person with messages like: "I still see them on this server" is not cool, especially on such flimsy evidence. It's OK if they remain in the server for a couple more hours, I think the people who run this server have the right to make that decision on their own.
  72.  
  73. Your authority is also something you should take into account. The messages Baku sent above says everything. They are too afraid to even question the idea that this person is innocent because you are so certain they are guilty. Such certainty should not have been laid down, because there was no certainty in this case. Even I am... very uncomfortable writing this message, because I don't want to be hated or laughed at because of my rightful uncertainty. But I do feel it is my duty as another figure in this community to call out something like this, so I am. Even if I end up wrong, there is something I overlooked, and it ends up this person did plagiarize, I still feel that my doubts are justified. So I hope if it does turn out I'm wrong, that you can understand where I am coming from. But, I am writing this because I am fairly certain that I am not wrong, and the person who was immediately banned and defamed on your site is also not wrong.
  74. Attachment file type: code
  75. master2015hp_OliviaVictoryAddon.js
  76. 22.44 KB
  77.  
  78. ᴅairnonToday at 4:22 AM
  79. the one this is being compared to is YEP_X_AftermathLevelUp? @SRDude
  80.  
  81. SRDudeToday at 4:24 AM
  82. @ᴅairnon yes
  83.  
  84. ᴅairnonToday at 4:24 AM
  85. I'm having a very hard time to see any similarities between the two
  86.  
  87. SRDudeToday at 4:25 AM
  88. I'm glad you agree. It's, like, not even close. -_-
  89. Like, I totally understand Yanfly and Irina's perspective, based on what was available from that person it didn't look good; but... plagiarism is so serious, it really needs a lot of evidence before something like what happened is done.
  90.  
  91. ᴅairnonToday at 4:27 AM
  92. like seriously
  93. what specifically am I supposed to be eying as directly copying
  94. This seems really standard way to take on the objective at hand
  95.  
  96. 🐇🐇🐇Today at 8:05 AM
  97. @Resi ♥ thanks, they've also been caught on RMW for lots of rule breaking and suspicious behavior as well
  98.  
  99. First off, thank you SRD for what I assume you purchased the product to check it. However, if an event like this arises in the future again, I advise you to not do it again since you should always be cautious of your flow of money. But thanks to that, we are able to check the code and yes, you are correct, that the code is not similar, but only at first glance. Let me explain:
  100.  
  101. YEP:
  102. Window_VictoryLevelUp.prototype.refresh = function() {
  103. this.contents.clear();
  104. var bitmap = ImageManager.loadFace(this._actor.faceName());
  105. if (bitmap.width <= 0) return setTimeout(this.refresh.bind(this), 5);
  106. this.resetFontSettings();
  107. this.resetTextColor();
  108. this.drawActorAppearance();
  109. this.drawDarkRects();
  110. this.drawStatChanges();
  111. this.drawLearnedSkillsTitle();
  112. };
  113.  
  114.  
  115. Theirs:
  116. Window_ActorLevelUp.prototype.refresh = function() {
  117. this.contents.clear();
  118. this.drawBackground();
  119. this.drawBackgroundRewardStrip(actorStat_x - 20, actorStat_y - this.lineHeight(), actorStat_w - 100, 100);
  120. this.contents.fontSize = cFontSize;
  121. this.drawText(str1, actorStat_x - 20 + ckeIndent * 5, actorStat_y - this.lineHeight(), actorStat_w - 100, this.lineHeight(), 'left');
  122. //this.drawForeground();
  123. };
  124.  
  125.  
  126. Seems innocent enough right? However, that's where the inexperienced eye just looks at a few more things and stops.
  127.  
  128. Theirs:
  129. Window_ActorLevelUp.prototype.createSubWindows = function() {
  130. this.createPortraitWindow();
  131. this.createStatWindow();
  132. this.createContinueWindow();
  133. };
  134.  
  135.  
  136. continued into next post:
  137.  
  138. 🐇🐇🐇Today at 8:12 AM
  139. Hmm? Am I unable to type here?
  140. Okay, Discord's being unfair, but I'll chop it up
  141. They split up the refresh function into a trio of other windows where the code is then disassembled.
  142.  
  143. YEP:
  144. Window_VictoryLevelUp.prototype.drawStatChanges = function() {
  145. this.contents.fontSize = Yanfly.Param.ALUFontSize;
  146. for (var i = 0; i < 9; ++i) {
  147. var rect = this.itemRect(i);
  148. this.drawRightArrow(rect);
  149. this.drawParamName(i, rect);
  150. this.drawCurrentParam(i, rect);
  151. this.drawNewParam(i, rect);
  152. this.drawParamDifference(i, rect);
  153. }
  154. };
  155.  
  156.  
  157. In my example above, if you are familiar with RPG Maker MV, the usual index that stops for base parameters is 7, not 8. Yet:
  158. Theirs:
  159. Window_ActorStats.prototype.createSubWindows = function() {
  160. var statData = "";
  161. for(i = 0; i < 9; i++) {
  162. switch(i) {
  163. case 0: statData = "Level"; break;
  164. case 1: statData = "Max HP"; break;
  165. case 2: statData = "Max MP"; break;
  166. case 3: statData = "ATK"; break;
  167. case 4: statData = "DEF"; break;
  168. case 5: statData = "MAT"; break;
  169. case 6: statData = "MDF"; break;
  170. case 7: statData = "AGI"; break;
  171. case 8: statData = "LUK"; break;
  172. default: statData = "Test";
  173. }
  174. this._subWindows = new Window_SubStats(statData);
  175. this.addChild(this._subWindows);
  176. subStat_y += this.lineHeight();
  177. }
  178. }
  179.  
  180. Hmmmm, so why use such an arbitrary system that's like YEP Aftermath instead of drawing level separately and then go the usual 0 to 7 loop?
  181.  
  182. This leads into the splitting of code even further down the road. I would go ahead and post the code to take a look at the second level and further but Discord's 2000 character limitation stops that from being done elegantly so I'll just type up the function names instead:
  183. YEP:
  184. Window_VictoryLevelUp.prototype.drawStatChanges and functions called inside are basically transcribed into these:
  185.  
  186. Theirs:
  187. Window_SubStats.prototype.getData
  188. Window_SubStats.prototype.getDataOld
  189. Window_SubStats.prototype.drawData
  190.  
  191. The major difference is that they have all the plugin parameter fluff inside it removed from the YEP Aftermath Level Up plugin.
  192.  
  193. 🐇🐇🐇Today at 8:20 AM
  194. I'll leave the intricate details but let's see what happens if I strip away the plugin parameter fluff:
  195.  
  196. this.drawText(TextManager.param(index - 1), x, y, this._paramNameWidth);
  197. this.drawText(Yanfly.Util.toGroup(this._actor._preVictoryParams[index - 1]), x, y, this._paramValueWidth, 'right');
  198. this.drawText('\u2192', x, y, dw, 'center');
  199. var newValue = this._actor._postVictoryParams[index - 1];
  200. var diffvalue = newValue - this._actor._preVictoryParams[index - 1];
  201. if (diffvalue === 0) return;
  202. var text = Yanfly.Util.toGroup(diffvalue);
  203. if (diffvalue > 0) {
  204. text = ' (+' + text + ')';
  205. } else {
  206. text = ' (' + text + ')';
  207. }
  208. this.drawText(text, x, y, this._bonusValueWidth, 'left');
  209.  
  210.  
  211. theirs:
  212. this.drawText(this.title, ckeIndent, 0, this.width, this.height, 'left');
  213. this.drawText(String(this.valueOld), 150, 0, this.width, this.height, 'left');
  214. if (this.valueOld != this.value) {
  215. this.drawText('→', 200, 0, this.width, this.height, 'left');
  216. this.drawText(String(this.value), 250, 0, this.width, this.height, 'left');
  217. var str = '(+' + String(this.value - this.valueOld) + ')';
  218. this.changeTextColor(this.textColor(3));
  219. this.drawText(str, 300, 0, this.width, this.height, 'left');
  220. }
  221. I'm not going to dive layer upon layer upon layer because that's just going to be repetitive
  222. However, I will say this
  223. This is a case of where "to hide a body, you have to chop it up into little pieces first"
  224.  
  225. I gave them a chance to defend themselves, they didn't do it. In fact, I always give people chances to defend themselves. While I did say I would report it, such an action has not yet been concluded as of yet. But the important thing here is the fact that they did not want to defend themselves, making it come off as that they have something to hide, but then reacted as if they did.
  226. Now, I can continue on with this if you want, but I'd rather go onto my next point, which I deem to be more important
  227.  
  228. 🐇🐇🐇Today at 8:32 AM
  229. Point #2: The article was not to instate proof of plagiarism but instead, awareness. In fact, the "plagiarism" and similar root words haven't even been used in the article. While I will agree that the article is not painting them in a welcome light, its purpose is not to do such a thing due to their shady behavior. However, before you accuse others of attacking an individual for plagiarism, you also have to make sure they are accusing them of such a thing in the first place.
  230.  
  231. Furthermore, things happened behind the scenes regarding this individual:
  232.  
  233. Archeia did verify it to me that Isabella Ava was banned from RMW for reasons disclosed (rule breaking and other offenses).
  234. The quick ban to action was a result of the confirmation and adhering to Portal's rules.
  235.  
  236. So if you thought I acted recklessly in regards to this matter, I suggest you revise your train of thought to make the pieces fall back together.
  237. Now, all that having been said
  238. Point #3 is something I wanted to bring up for a long time
  239. A really really really long time
  240. Someone from 4chan brought this up to me
  241.  
  242. Can you explain to me what this is about?
  243. I ignored it for a while since you've done a decent service to the community, but as you're putting the spotlight on me in regards to my stances on plagiarism, I suppose I should do the same to you.
  244. But of course, as I mentioned before, I always give people a chance to defend themselves.
  245. I'll be returning later tonight to check up on any messages as I'll be gone for the day for errands.
  246. See you all later.
  247.  
  248. Czar ZarslaToday at 8:44 AM
  249. @🐇🐇🐇 I have a question. If someone is making a paid plugin, and ends up for compatibility reasons ends up using you're code, would it be better to just turn that part of the code into a patch for users that's free to download?
  250.  
  251. 🐇🐇🐇Today at 8:44 AM
  252. Make the paid plugin separate, leave a free to download compatibility patch
  253. However, if they ran it through me first for permission, I'm usually okay with it
  254. The difference here is, this person did not run the permission through me
  255. And instead, is selling it as their own product
  256. Where the only things they've really done is just dissect the code into smaller bits and pasted it on top of Olivia's Victory UI
  257.  
  258. Czar ZarslaToday at 8:46 AM
  259. @🐇🐇🐇 I see. also thank you for the explanation.
  260.  
  261. ArcheiaToday at 10:09 AM
  262. I also think its to note that this person shouldn’t be profiting from olivia paid plugin and selling it this way. They didn’t get permission?
  263. As far as im aware olivia isnt mit either
  264. Thats like me in a scenario getting rtp, editing and reselling my edits to public
  265. But that’s just opinion
  266.  
  267. Resi ♥Today at 10:56 AM
  268. I'm guilty of repurposing your code in my projects too yanfly as you solve a lot of issues many people have and it's easy to use code that exists to make something work
  269.  
  270. SRDudeToday at 12:06 PM
  271. Wow, that's a lot to digest. I apologize for the delay, my sleep schedule is wonky on the weekends.
  272.  
  273. Um, I'll try to address everything. But before that, let me first respond to Archeia's input, because it is an interesting one. I would agree that it's sort of a gray area to sell extension plugins, but let's not forget that RPG Maker MV itself is a commercial product. By selling any sort of plugin, you are relying upon the engine's privately licensed code and "profiting" from it in the same way one is "profiting" off of extending someone else's plugin. I think as long as a plugin isn't literally copying the entire engine into the code, and instead forces the users to have their own copy, then there's nothing wrong with that. Since, after all, the modifications, while dependent on another's code, are still owned by the creator of said modifications.
  274.  
  275. The same applies to this case, as this Ava's plugin doesn't copy Olivia's code, it simply assumes its existence and attempts to make additional modifications on their own ground. So it's within their right to sell it. That's my perspective on the matter at least.
  276.  
  277. SRDudeToday at 12:18 PM
  278. Now, of course, I should probably delve directly into the plagiarism accusations against myself. These are especially interesting, because they do highlight issues with the perception of plagiarism.
  279.  
  280. First of all, the biggest ones, the middle two which involve counting files/directories in the system, I distinctly recall relying on StackOverflow for this. If I type "list files with png extension nodejs" into google, this one pops up first, which uses an identical structure to the one shared between our plugins: https://stackoverflow.com/questions/25460574/find-files-by-extension-html-under-a-folder-in-nodejs
  281.  
  282. When it comes to the NodeJS API, there is only one way to really accomplish what we both needed in this situation. A list of files, appropriate for both Doodads and the runtime Character Creator. Now admittedly, the variable names are similar, and I can only blame this on coincidence. If you want, I can probably go through other plugins and find instances of me using "result" and "fs" all over the place.
  283.  
  284. The setTimeout usage on the other hand is 100% based on your method. I have no doubt that I read a Yanfly plugin and got the idea from there. But does that mean that I'm no longer allowed to ever use it for such a function? setTimeout is a built in JavaScript function that is made for that specific purpose, and I have no doubt that at the time of writing said plugin, it was simply the method I relied upon without needed to reference any of your plugins. This is... once again a gray area. I would not consider this plagiarism, and clearly the implementation was done in a different fashion that would only be logical of someone who clearly understood how the function worked. This is something that should require consultancy from other programmers, but in my experience, understanding and adapting abstract methods is not the same as directly copying code.
  285. Stack Overflow
  286. find files by extension, *.html under a folder in nodejs
  287. I'd like to find all *.html files in src folder and all its sub folders using nodejs. What is the best way to do it?
  288.  
  289. var folder = '/project1/src';
  290. var extension = 'html';
  291. var cb = function(err, r...
  292.  
  293.  
  294. ArcheiaToday at 12:24 PM
  295. Rmmv codwbase for game engine is open source btw amd has been in github. Not editor code.
  296. I still count that as different
  297.  
  298. SRDudeToday at 12:26 PM
  299. I don't know how to respond to the top comparison however. I don't know how that could possibly occur on accident. I thought that was something from the RM codebase, but as stated, it's not present. I often have your most popular plugins installed in my project when developing in order to maintain a decent amount of compatibility. I suppose it's possible I mistook one of your plugins as a core file, and referenced the regular expressions and usage from there. It's a stretch, but there's no way I would do something like that on purpose.
  300.  
  301. I do feel that if that comparison I legitimate, I sincerely messed up and would be more than happy to take responsibility in any way possible. Even as a mistake, it is inexcusable, and I would be down to resolve the issue in anyway possible. I will publicly admit my fault and remove the plugins in question if you so desire. I think the other comparison's are a stretch just built to support the main one, but I certainly feel the first one is my fault. I hope we can discuss this more at a later time.
  302. .
  303. Really? You can use the RM engine without purchasing RPG Maker MV? :thinking:
  304.  
  305. ArcheiaToday at 12:28 PM
  306. Yes
  307. The game engine
  308. Osscript iirc
  309.  
  310. inVictorToday at 12:28 PM
  311. We all learned some coding from looking at Yanfly’s plugins, I thought that was the idea, specially considering that there was a T&T section on his Patreon for a very long time in which he helped us minor developers with code. I don’t see how it’s an issue that some of the code looks alike, specially considering SRDude never did plugins for a profit :thinking: I mean, Yanfly should be proud he inspired people’s coding. I don’t think this is a case of plagiarism but again I look at the definition of plagiarism from an academic perspective.
  312.  
  313. ArcheiaToday at 12:30 PM
  314. Donations can count as profit but thats always debated. Its why yanfly said he never mentioned it till now
  315.  
  316. SRDudeToday at 12:33 PM
  317. Well, I still think that code, regardless of its dependencies, is 100% owned by the creator. If selling extension plugins is forbidden, that should be made very clear in the terms of use. RMMV plugins still contain properties like parameters and other data that can only be exclusively read by the RPG Maker MV editor, so I do feel my point still stands.
  318. But, I do feel we are getting off track here.
  319.  
  320. ArcheiaToday at 12:34 PM
  321. Yes but i feel that if u r piggybacking on fellow indies work ppl tend to be harsher
  322. Honor amongst thieves idiom
  323.  
  324. SRDudeToday at 12:35 PM
  325. Absolutely. If anything, I would say its worse to sell an extension to a free plugin. At least in this case, every customer of Ava's is forced to also purchase a copy of Olivia's.
  326.  
  327. ArcheiaToday at 12:35 PM
  328. Yes but think of i this way
  329. What of a pedophile made an extension to ur paid plugin, are ok with that?
  330. Not saying ava was but thats a situation
  331. Even corporations discuss collabs with one another
  332.  
  333. SRDudeToday at 12:37 PM
  334. I see what you're saying.
  335.  
  336. ArcheiaToday at 12:38 PM
  337. In short, its why i support communication with og dev first
  338. Before u do anything.
  339.  
  340. SRDudeToday at 12:38 PM
  341. But once again, that goes back to my point about general RPG Maker plugins. There has never been a process or a movement to create a process to receive explicit permission from Kadokawa for every plugin dev.
  342.  
  343. ArcheiaToday at 12:39 PM
  344. Rpgmaker has an exclusive state clause to not reverse the editor
  345. But game scripts are mit license
  346.  
  347. SRDudeToday at 12:40 PM
  348. Ok
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement