ID:160967
 
Ok so ive had a few instances of people hacking my game and being able to use their own verbs and summon npcs, boot people, spam, announce and what not, but i have not put those in for the most part. Is there any way to stop people from hacking the game and messing with it.
That's not hacking.

Most likely then not, they either (1) copied your savefile and placed their name or (2) if you're one of those people who check people in power through a variable (ex: GM = 1), they could have modified their savefile to have the same variable.

Solutions:

(1) Encrypt/validate your savefile
(2) Remove all instances of 'special' verbs and re-add them for the appropriate people
In response to GhostAnime
how would they copy my save files they are kept on my computer and not their computer. Also my special codes cant do wht they are doing. I made it so even gms cant summon npcs and can only summon players. Yet they are summoning npcs
In response to NightJumper88
I am assuming that "they" are not the host and you are? Or are "they" (or at least one of them) the host?
In response to GhostAnime
Yes im the host
In response to NightJumper88
Then it's 90% simply all bugs in your game. How to prevent this? Fix the bugs. If someone is not meant to be able to do something, then don't let them do it via your code...
In response to Kaioken
no bugs show up in the debug. And i already made it so nobody can summon npcs.
In response to NightJumper88
Double check to see if you made these verbs available to only specific people and not everyone.

This can be done by running another instance of the game under a "non-GM" key.

If you do get the "GM" verbs, it means that you did not made the verbs private (ex: you defined it under /mob/verb where all /mob instance will obtain it).

Solution:
Make a datum for these special verbs and add appropriately.

Ex:
var/const/list/Admin = list("ghostanime","nightjumper88")   //  a list of admins ckey (look it up in DM Reference)

Admin // A datum, defining all "/Admin" verbs
verb
Create()
set category = "Power"
usr << link("?command=create;") // Don't worry about this, it's how my create verb works.


client/New() // When a player connects
..() // Calling the default behaviour
if(src.ckey in Admin) // If the player's ckey is in the admin list
src.verbs += typesof(/Admin/verb) // Adds all /Admin/verb to the client.
In response to GhostAnime
the verbs are private i already know they are. me and the coowner are the only ones who get verbs. I know my code is good thats not the problem. They are doing things that arenet even verbs like summoning npcs. There is no code in my game that allows someone (even me) to summon npcs yet they did.
In response to NightJumper88
NightJumper88 wrote:
no bugs show up in the debug. And i already made it so nobody can summon npcs.

"Debug" is not a place. Neither does any special notification show up about bugs, regardless of being in debug mode or not. BYOND only natively reports errors (compile-time and run-time ones), not all bugs (logical mistakes, unintended behavior and the like), unless you program that part yourself, and properly, that is.

the verbs are private i already know they are. me and the coowner are the only ones who get verbs.

Seemingly, this is wrong, which is the problem you're posting about.

I know my code is good thats not the problem.

I somewhat doubt that, considering I remember you not being all very proficient from past topics, and considering your game is quite clearly buggy from your topic here.

They are doing things that arenet even verbs like summoning npcs. There is no code in my game that allows someone (even me) to summon npcs yet they did.

It is completely impossible for a player to cause code to be executed that isn't already there (not even by hacking, reliably). Perhaps they are functions that were already in the ripped source you were using (if you were, of course), or unexpected behavior of code you think is unrelated. Another possibility is that perhaps the problematic code is in an unexpected location, such as a library or another included project file.
In response to NightJumper88
NightJumper88 wrote:
the verbs are private i already know they are. me and the coowner are the only ones who get verbs.

Ever heard of Murphy's Law? Anyways, even though you do know, it is always wise to double check. Err on the side of caution, kill all those uprising heroes before they get too powerful! >_>'

I know my code is good thats not the problem.

I would say a lot to this line... but I won't. Other then you may think you're 'code' is good but it may not actually be so, it's pretty much an opinion.

They are doing things that arenet even verbs like summoning npcs. There is no code in my game that allows someone (even me) to summon npcs yet they did.

Then it's what Kaioken mentioned earlier, it's most likely a bug in your game (assuming that this is happening in the game you are hosting and not anyone else).
In response to Kaioken
ok when i said i know my code is good i was talking about all of it cause obviously it cant be im still learning but the code dealing with giving the gm verbs to only me and the coowner. Ive tested it several times and im currently running my game. Also im not using a rip, or any libraries and im coding everything myself, so im pretty sure its not with that. So there is the possibility that its a bug from one of my codes.....However none of the codes i have programed in teleports or moves npcs...and one of the players that was on said that another player did it. I wasnt there so i couldnt know for sure.

The only thing i can think of is that the save files are messed up and linked to the npcs cause almost all of the npcs where on the login spot and its happened before with two players mob getting linked. i dont know how that happens either cause im manually saving the variables and none of them are linked to other mobs so there shouldnt be rollback. But i could be wrong and it could be my autosave.

Thanks for any help you can give
In response to NightJumper88
NightJumper88 wrote:
The only thing i can think of is that the save files are messed up and linked to the npcs cause almost all of the npcs where on the login spot and its happened before with two players mob getting linked. i dont know how that happens either cause im manually saving the variables and none of them are linked to other mobs so there shouldnt be rollback. But i could be wrong and it could be my autosave.

Looks like this might be the problem in your code. The fact you're saving the variables manually (which you shouldn't bother doing, BTW) wouldn't matter if you're still saving the ones containing references to other mobs such as NPCs. If you save a variable that references an object (eg a mob), then the whole object is saved into the savefile and when that savefile is loaded that whole object is recreated.
In response to Kaioken
Well thats why i switched to manually saving each variable cause i didnt learn about that until after i had made most of my current code and since i wasnt as organized when i first started wasnt sure if there was a non tmp var somewhere that wasnt with my vairable list like 99% of them are. Also ive made sure that non of the variable are linked to mobs that are saved. However I am saving my contents and skills and those have variables that link to mobs, would that effect it. I do need to fix this save thing though cause i cant figure out whats happening to it and the only possible link is with the skills.

But this gets away from teh original problem. Theres no way that there would be a link to the still npcs and everyone of the npcs in the game would be summoned to one spot. And I had a reliable player (one that is on 12 hours a day) say that a person did it. Ill keep an eye on it and look and see if it happens again cause this is the first time its happened so ill check.
In response to NightJumper88
You could simply log into your game under a non-gm key no-one knows about, ask the players who are summoning NPCs how they do it, then use the same technique to summon NPCs. If it works, then you know the problem and can figure out a solution.
In response to digitalmouse
if i new the people doing it i would try that but its only happened once and i wasnt there just came one with a bunch of npcs summoned so dont know
In response to NightJumper88
By the way, asking for money for a product that violates of a copyrighted material (such as a fangame, like yours) is against the law (well, many laws).

I highly suggest you take off the paypal link on your Naruto game's hub before it is suppressed.
In response to NightJumper88
Logic errors are something that a computer could never detect. A logic error stems from what you tell the computer to do; therefore, the computer is doing the exact right thing in it's frame of reference.
As stated earlier, chances are you're storing information about who is an administrator in a boolean variable (a variable that you check as being true or false, or 1 or 0). Get rid of this system, and do it in a different way. Instead, store all the players who are administrators in a list, with their ckey getting stored. Something like this will do:
//The list of administrators, with ckey stored. Look this
//up in the ref (F1 in Dream Maker) for more info.
var/list/administrators = list("bob", "bill", "joe")

client/New()
if(ckey in administrators)
//If the player is in the administrators list, then
//give them the administrative verbs. These verbs
//should be /client verbs, not /mob verbs. This way,
//if a player switches mobs, they don't suddenly
//lose their ability to moderate the game.
verbs += typesof(client/admin/verb)

//Run the default actions.
..()

It also sounds like you have multiple bugs in your game, as well. The bug abusers are doing actions that shouldn't be possible, meaning it's a flaw in your code. I'd go over the administrative commands and rewrite them, to make them safer.

Something else I would also do it use some method of encryption, whether it be a simple hash or a full-blown encryption of the savefile, since you seem to be saving the data on the player's computer.
In response to Popisfizzy
thats how i have it in a list
var/list/GM2 = list("NightJumper88","Isenggard")

mob
Login()
src.loc = locate(8,94,16)
if(src.key in GM2)
src.verbs+=typesof(/mob/GM1/verb)
src.verbs+=typesof(/mob/GM2/verb)
if(src.key in GM1)
src.verbs+=typesof(/mob/GM1/verb)
Page: 1 2